APM Python

APM Python is designed for large-scale optimization and accesses solvers of constrained, unconstrained, continuous, and discrete problems. Problems in linear programming, quadratic programming, integer programming, nonlinear optimization, systems of dynamic nonlinear equations, and multiobjective optimization can be solved. The platform can find optimal solutions, perform tradeoff analyses, balance multiple design alternatives, and incorporate optimization methods into external modeling and analysis software. It is free for academic and commercial use.

Download APM Python Library and Example Problems

The latest APM Python libraries are attached below. Functionality has been tested with Python 2.7. Example applications that use the apm.py library are listed further down on this page.

Download APM Python (version 0.6.1) - Released 5 May 2014

The development roadmap for this and other libraries are detailed in the release notes. The zipped archive contains the APM Python library apm.py and a number of example problems in separate folders. Descriptions of the example problems are provided below.


Example_hs071: Nonlinear Programming with Python


Example_nlc: Nonlinear Control with Python


Example_tank_mhe/nlc: Nonlinear Estimation and Control with Python

In this case study, a gravity drained tank was operated to generate data. A dynamic model of the process was derived from a material balance. This material balance is displayed below, along with a diagram of the system.

The the unknown parameters c1 and c2 need to be determined. The parameter c1 is the flow into the tank when the valve is fully open. The parameter c2 is the relationship between the volume of water in the tank and the outlet flow. This model is nonlinear because the outlet flow depends on the square root of the liquid volume. Nonlinear estimation is a technique to determine parameters based on the measurements. The script in example_tank_mhe uses the process data and the nonlinear model to determine the optimal parameters c1 and c2.

After an accurate model of the process is obtained, the model can be used in a Nonlinear Control (NLC) application. A PID controller is compared to the NLC response in the folder example_tank_nlc.


Other Applications with Python