This Jupyter notebook introduces the basic concepts of nonlinear programming.
With the help of interactive plots, the gradient descent algorithm for optimization, and the penalty method for the incorporation of constraints are explained.
Furthermore, it is shown, how nonlinear programming can be run with the Python-Package SciPy.
In the end, we give an outlook to automatic differentiation with the Python package autograd.
You can run the notebook on Binder with the following link: https://mybinder.org/v2/gh/ahudde/nonlinear_programming/HEAD?labpath=nonlinear_programming.ipynb
One way is to install the Python-Anaconda-Distribution (https://www.anaconda.com/products/individual).
On top of that, please install the packages plotly and autograd (by typing conda install plotly and conda install autograd in the anaconda prompt).
Download the files nonlinear_programming.ipynb and nonlinear_programming.py as well as the .svg-files in the same folder.
Now, start the jupyter notebook by typing jupyter notebook into the anaconda prompt and navigating to the nonlinear_programming folder.
Now you can run the cells of the notebook and thus learn about nonlinear programming. You can run many cells several times, where each time one iteration is shown. Just try it out.
Have fun learning!
Bug reports and contributions are very welcome. Also, if you need assistance, please open an issue on github.com/ahudde/nonlinear_programming/issues.
