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 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.