Dynamic Programming: Models and Applications