Algorithms for Optimization [Bookshelf]

Optimization is showcased as an accessible and powerful tool in this attractive and instructive text. Optimization techniques are presented with mathematical motivation, without extensive proofs, and with illustrative Julia code. This text is appropriate for an undergraduate or other introductory course on optimization. It is also suitable for a practicing engineer who wants a broad first taste of the field, along with access to working code. Compared with similar texts, this book generally includes a broader set of topics, including uncertainty propagation, multiobjective optimization, multidisciplinary optimization, Gaussian process surrogate models, and expression optimization. The authors provide the building blocks of optimization algorithms rather than presenting a deep treatment of optimization theory. This extensive use of Julia is the most noticeable innovation of the book. Functions and code are used to illustrate techniques as diverse as automatic differentiation, particle swarm optimization, and Bayesian Monte Carlo methods. The code is presented entirely in the text of the book and duplicated online in Jupyter notebooks. This extensive use of Julia is the most noticeable innovation of the book. Functions and code are used to illustrate techniques as diverse as automatic differentiation, particle swarm optimization, and Bayesian Monte Carlo methods.