This book is about models, methods, techniques and algorithms for sequential decision making via dynamic programming. It aims to describe the tools offered by dynamic programming for the modelling, analysis and solution of sequential decision problems encountered in business, industry, science, engineering, finance, economics, and recreation. The book is also about the joy of dynamic programming!
A deliberate attempt is made to separate the simple, intuitive, non-technical foundation of dynamic programming from the conventional, technical - usually mathematical - format that is commonly employed to describe it.
Hence, the book provides a rigorous description of dynamic programming without burdening the reader with excessive technical details. Supplements are provided for the more mathematically inclined reader.
This book is written for readers interested in acquainting themselves with the ins and outs of solving real-world sequential decision problems with the aid of dynamic programming. The reader is assumed to be intelligent, to possess good analytic skills, but he/she is not required to have a substantial mathematical background. In more concrete terms, the book is written for MBA students, OR/MS practitioners, computer scientists, industrial engineers, and financial analysts, as well as for undergraduate and graduate students in science, engineering and commerce.
The book is also intended to serve as a companion for lecturers who teach dynamic programming and for those who consider incorporating dynamic programming topics in the courses they offer.
This book has no direct competitors in the market. Rather, it complements the already rich library of textbooks and research monographs on dynamic programming. It does this by focusing on the principles underlying dynamic programming, its logic, the aesthetics of its approach to problem solving, and the intuitive nature of its tactics and strategies. It also highlights the many pitfalls and hurdles encountered in the learning and teaching of dynamic programming and its application in real-world situations.
This book is intended to complement my first book on dynamic programming (Sniedovich, M., Dynamic Programming, Marcel Dekker, NY, 1991) where this topic is given a formal mathematical treatment. Although the two books are vastly different in style and content, they do have an important feature in common: they outline dynamic programming as conceived of and formulated by Bellman in his early publications. As the beneficiary of the extensive commentary on and the sometimes unjustified criticism of, Bellman's pioneering work, my exposition throws new light on Bellman's conception of dynamic programming.
The following tips refer only to the non-WWW aspects of the book. Tips regarding WWW issues can be found on the Help-Desk.
Teaching/learning DP can be a difficult task. If you are mathematically inclined you may find the Math Supplements at the end of the chapters instructive. But do read the plain text and consider reading my First Book which was written in the usual formal mathematical tradition.
If you are not mathematically inclined, please consult Appendix A for a review of the (very light) mathematical material used in this book.
Experience has shown that some persons find DP very intuitive, simple and natural, whereas others find it very difficult, complicated and non-intuitive. There are rumours, apparently based on secret lab experiments with mice, cats, dogs, dolphines and Operations Research students, that DP skills are genetic in nature.
In any case, this book is based on this conjecture and assumes that basic DP skills are indeed engraved down deep in the genetic structure of humans as well as some of their beloved pets, perhaps even some favourit plants. It endevours to further develop these skills so as to enable you, dear reader, to improve your basic approach to problem solving.
I strongly suggest that you read the book in a sequential manner, with one exception. You may wish to have a quick look at Appendix B before you begin the guided tour.