APMonitor Release Notes

Future Roadmap

Additional functionality is continually added to the APMonitor software. Below is a roadmap on product development. Requests for additional features can be discussed on the user's group forum and is regularly solicited from customers.

Development Priorities

  • Parallel support for larger scale optimization problems
  • Collaborative project features that allow multiple simultaneous developers
  • Improved Python and MATLAB interface support
  • Incorporation of additional solvers, including those with mixed-integer capabilities

Version Release Notes

Version 1.0.0 - 22 May 2021

Version 0.9.2 - 15 May 2020

  • Bug fix for AXB object for non-symmetric matrices

Version 0.8.9 - 15 Apr 2019

  • QOBJ and AXB objects with improved error reporting. QOBJ object implements a quadratic objective as 0.5 x^T A x + b^T x. AXB implements a linear system as Ax=b, Ax>b, or Ax<b. The matrix A and vector b can either be in dense or sparse form.

Version 0.8.8 - 20 Mar 2019

  • IMODE=7 ignore CSV values for calculated values past 1st node. This is important when there is data that is used for initialization but shouldn't be re-initialized on subsequent cycles. Simulation results between IMODE=4 (simultaneous) and IMODE=7 (sequential) now agree but use different methods for solution.

Version 0.8.7 - 3 Mar 2019

  • Initialization improvement, support for new GEKKO features, system identification, ARX modeling, B-spline.

Version 0.8.1 - 13 Feb 2018

Version 0.8.0 - 15 Dec 2017

  • Added JSON support for the new GEKKO Python package interface to APMonitor.

Version 0.7.8 - 16 Aug 2017

  • Include Intermediate variables in the solution report. The solution is saved as results.csv on the server or as solution.csv when retrieved with the MATLAB or Python client. Because Intermediates are not read from prior solutions, a change is made to not stop the run if a variable is not a valid Parameter or Variable. Now there is only a warning message if the header string is not located.
  • The CSV_READ option 2 is added to allow calculated values to be initialized from the CSV (data) file. The other options remain the same including CSV_READ=0 (skip read), and CSV_READ=1 (read only fixed values, default).

Version 0.7.7 - 12 Jun 2017

  • Changed options from "NLC." to "APM." for global options. Added documentation for all global and local options. A discussion of common error messages are reviewed with an approach to troubleshooting. There is improved memory management during the compilation stage and the speed is improved. Increased maximum equation size on each line of the model to 15,000 characters.

Version 0.7.6 - 31 Jan 2017

  • Added real-time solver status to server and Python script. Each line of the solver output is returned as it produced on the server. Previously, it only displayed the solver output when the problem finished solving. A new apm.py version is available to support the feature.

Version 0.7.5 - 13 Aug 2016

  • Updated the Python client to allow Python 2.7 or Python 3+.

Version 0.7.3 - 29 Apr 2016

  • Added FSTATUS and MEAS for State Variables (SVs). With FSTATUS on, the measurement updates the initial condition at p(1).n(1). This same functionality is applied to Controlled Variables (CVs) as well when the STATUS is off (1).
  • Improvements to the APOPT solver with an AMPL / Pyomo / JuliaOpt interface that reads NL files.

Version 0.7.2 - 19 Feb 2016

  • Added Python 3.5 support to the existing Python 2.7 support
  • New course material on dynamic optimization at https://apmonitor.com/do
  • Correct a bug with sequential estimation or control (imode=8 or 9) that prevented MVs from being declared

Version 0.7.1 - 16 Jul 2015

  • Added support for Julia programming language
  • See APM Julia information

Version 0.7.0 - 11 Nov 2014

  • Added sequential dynamic estimation and control modes as imode = 8 and 9, respectively. See additional information on modes of operation.
  • Added sequential modes for steady state parameter estimation and optimization modes as well. Set option nlc.sequential = 1 for a solution strategy that successively solves the equations independently of the objective function evaluation. Once the equations are evaluated, exact 1st and 2nd derivatives of the objective with respect to the degrees of freedom are used to find a search direction for new parameter estimates.
  • Corrected a bug with the APOPT solver interface where Jacobian values were sometimes from the prior iteration instead of the current iteration.
  • A new article in Computers and Chemical Engineering provides additional details on the APMonitor algorithms.

Version 0.6.2 - 28 May 2014

  • Added periodic boundary conditions as an option for individual variables. See additional details at this documentation page with some example problems.
  • Added apm_solve to the Python interface and added an additional optional argument imode to the MATLAB interface to allow something other than the default of imode=7 (sequential simulation). The ''apm_solve" function is intended to be a simplified method to quickly solve dynamic simulation problems with minimal coding effort.

Version 0.6.1a - 5 May 2014

  • Added apm_solve function for Python and simplified the use of the function in MATLAB for improved usability
  • Modified imode=4 to eliminate some variables that were formerly associated with unused MV classified values, creating larger than necessary problems
  • Corrected a bug in the implementation of sensitivities of FVs
  • Published the paper to give additional details on the APMonitor implementation of Moving Horizon Estimation and Nonlinear Model Predictive Control:
    • Hedengren, J. D. and Asgharzadeh Shishavan, R., Powell, K.M., and Edgar, T.F., Nonlinear Modeling, Estimation and Predictive Control in APMonitor, Computers and Chemical Engineering, accepted for publication, 2014, DOI: 10.1016/j.compchemeng.2014.04.013. Download Preprint

Version 0.6.0 - 20 Jan 2014

  • Improved detection of uninitialized values
  • Improved speed of function residuals by evaluating once and storing initial values and constraints
  • Reduced memory allocation requirements (was running out of memory for large models)
  • Support for multi-dimensional matrix operations up to 10 indices
  • Improved execution time through compiler optimization and memory access management
  • Sequential simulation (imode=7) only produces all intermediate points with nlc.web=2. Otherwise with nlc.web=1 it produces only the first and last points. Full results are still available from apm_sol(server,app).
  • Updates to APM MATLAB and APM Python interfaces to allow mixed case application names

Version 0.5.9 - 25 June 2013

  • Implemented acceleration for pre-solve algorithm (Coldstart >=2)
  • When values are read from the CSV file, FSTATUS is automatically set to 1 (ON)
  • Improvements to MINLP algorithm for dynamic problems
  • Report detailed problem information with diaglevel >=2 including:
    • apm_hes.txt - Hessian (Exact 2nd Derivatives)
    • apm_hes_obj.txt - Hessian of Only Objective Terms (Exact 2nd Derivatives)
    • apm_jac.txt - Jacobian (Exact 1st Derivatives) with respect to all variables
    • apm_jac_fv.txt - Jacobian (1st Derivatives) with respect to FVs
    • apm_lam.txt - Lagrange multipliers
    • apm_lbt.txt - Lower block triangularization for problem decomposition
    • apm_obj_grad.txt - Objective gradient
    • apm_res.txt - Equation residuals
    • apm_sens_fv.txt - State sensitivity with respect to FVs
    • apm_sens_mv.txt - State sensitivity with respect to MVs
    • apm_sens_obj.txt - Objective sensitivity with respect to FVs and MVs
    • apm_var.txt - Variable values
    • Note 1: Jacobian and Hessian information reported as sparse matrices

Version 0.5.8 - 16 June 2012

  • Custom variable scaling based on default value declarations
  • Performance improvements by not calculating residuals for inactive equations
  • New sequential initialization capabilities with NLC.Coldstart >= 2.
  • Corrected problem with one equation in estimation model for the Latex model generator
  • Ability to solve mixed-integer nonlinear programming problems
    • Declare parameters or variables starting with "int" (e.g. int[1] is an integer variable)
    • Use APOPT solver (nlc.solver=1)

Version 0.5.7 - 21 May 2012

  • New imode option (imode=7) for sequential simulation. This implements something similar to MATLAB’s ode15s or DASPK with forward time stepping.
  • Initial conditions and guess values can come from the CSV data file. APM will use them when NLC.COLDSTART=1 (on). Coldstart also turns off the MVs for one cycle to make the problem easier to solve.
  • Testing some new Mixed-Integer code. A prototype version is available at the Mathworks File Exchange web-site.
  • Fixed bugs:
    • with steady state optimization where in certain situations, new set points were not being read
    • sequential simulation was not initializing from prior solutions properly
  • Export of sparsity, Hessian, and Jacobian now possible

Version 0.5.6 - 15 Feb 2012

  • More improvements to the APM Python and APM MATLAB interfaces
    • Access solution results directly into python scripts
    • Added trending capability with Python's Numpy and Matplotlib
  • Tested parallel processing with APM MATLAB
  • Access database variables into the APM MATLAB or APM Python script such as objective function values
  • Retrieve server results without dependency of NumPy (Python version)

Version 0.5.5 - 9 Dec 2012

  • Improvements to the Python and MATLAB interfaces
    • Python and MATLAB interfaces now support multiple simultaneous applications
    • Separate simultaneous applications are maintained with separate names, such as MHE and NLC, that exchange information between estimation and control
    • Model files and CSV data files are now sent to the server with one command instead of line-by-line as in v0.5.4, greatly improving the load speed
  • Fixed problem with a controller trajectory formulation
    • Controller did not implement dead-band control correctly, leading to slower than expected controller response
  • Added new reference trajectory formulation for derivative-based control
  • More operating system support
    • Executable Tested on 32 and 64 bit Windows XP, Windows 7
    • Web interface tested for MacOS
  • Time shift now allows any number of time horizon steps instead of only 1 or 0 (off).

Version 0.5.4 - 15 Nov 2011

  • New MATLAB and Python interfaces
  • Added new CONSTANTS classification
    • Can now specify constants in a vector index
    • Added multidimensional array support
  • Second derivative information fixed for MHE L2-norm mode for data reconciliation
    • Error was causing incorrect sparsity and Hessian information that was accessed by the IPOPT solver

Version 0.5.3 - 15 Sept 2011

  • Added support for APOPT and BPOPT solvers
  • Updated IPOPT solver to v.3.9.1
  • Updated web-interface trends to Flash v10 from v6.