## APMonitor Release Notes

## Main.ProductRoadmap History

Show minor edits - Show changes to markup

Changed lines 23-24 from:

- QOBJ and AXB objects with improved error reporting

to:

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

Changed line 27 from:

- IMODE=7 ignore CSV values for calculated values past 1st node

to:

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

Added lines 20-23:

#### Version 0.8.9 - 15 Apr 2019

- QOBJ and AXB objects with improved error reporting

Added lines 20-23:

#### Version 0.8.8 - 20 Mar 2019

- IMODE=7 ignore CSV values for calculated values past 1st node

Added lines 20-23:

#### Version 0.8.7 - 3 Mar 2019

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

Added lines 20-27:

#### Version 0.8.1 - 13 Feb 2018

- Added Cubic spline interpolation object.

#### Version 0.8.0 - 15 Dec 2017

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

Changed line 24 from:

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

to:

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

Added lines 20-24:

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

Changed line 23 from:

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

to:

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

Changed line 23 from:

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

to:

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

Added lines 20-23:

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

Added lines 20-27:

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

Changed lines 24-26 from:

- Improvements to the APOPT solver:
- New AMPL interface
- Fixed a memory leak issue

to:

- Improvements to the APOPT solver with an AMPL / Pyomo / JuliaOpt interface that reads NL files.

Added lines 20-26:

#### 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:
- New AMPL interface
- Fixed a memory leak issue

Added lines 26-30:

#### Version 0.7.1 - 16 Jul 2015

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

Added lines 20-25:

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

Changed line 23 from:

- Added sequential dynamic estimation and control modes as imode = 8 and 9, respectively.

to:

- Added sequential dynamic estimation and control modes as imode = 8 and 9, respectively. See additional information on modes of operation.

Changed lines 25-26 from:

- A new article in Computers and Chemical Engineering provides additional details on the APMonitor algorithms.

to:

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

Added lines 20-25:

#### Version 0.7.0 - 11 Nov 2014

- Added sequential dynamic estimation and control modes as imode = 8 and 9, respectively.
- 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.
- A new article in Computers and Chemical Engineering provides additional details on the APMonitor algorithms.

Changed lines 21-26 from:

#### Version 0.6.1 - 5 May 2014

to:

#### 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 lines 20-27:

#### Version 0.6.1 - 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

Changed lines 21-22 from:

#### Version 0.6.1 - 8 Aug 2012

to:

#### Version 0.6.0 - 20 Jan 2014

Changed lines 29-30 from:

#### Version 0.5.9 - 25 June 2012

to:

- Updates to APM MATLAB and APM Python interfaces to allow mixed case application names

#### Version 0.5.9 - 25 June 2013

Added line 28:

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

Changed lines 21-22 from:

#### Version 0.6.0 - TBD

to:

#### Version 0.6.1 - 8 Aug 2012

Added line 27:

- Improved execution time through compiler optimization and memory access management

Added lines 21-27:

#### Version 0.6.0 - TBD

- 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

Deleted line 46:

- Support for multi-dimensional matrix operations up to 10 indices

Added line 40:

- Support for multi-dimensional matrix operations up to 10 indices

Added line 25:

- Improvements to MINLP algorithm for dynamic problems

Changed lines 29-32 from:

- apm_jac.txt - Jacobian (Exact 1st Derivatives)

to:

- 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

Added line 37:

- apm_sens_obj.txt - Objective sensitivity with respect to FVs and MVs

Changed lines 39-40 from:

to:

- Note 1: Jacobian and Hessian information reported as sparse matrices

Changed lines 48-50 from:

to:

- Declare parameters or variables starting with "int" (e.g. int[1] is an integer variable)
- Use APOPT solver (nlc.solver=1)

Changed line 99 from:

to:

Added lines 20-33:

#### Version 0.5.9 - 25 June 2012

- Implemented acceleration for pre-solve algorithm (Coldstart >=2)
- When values are read from the CSV file, FSTATUS is automatically set to 1 (ON)
- 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)
- 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_var.txt - Variable values

Changed line 21 from:

#### Version 0.5.8 - Released soon

to:

#### Version 0.5.8 - 16 June 2012

Deleted line 12:

- Linux server development in addition to the Windows server operating support

Added lines 26-27:

- Corrected problem with one equation in estimation model for the Latex model generator
- Ability to solve mixed-integer nonlinear programming problems

Added lines 21-26:

#### Version 0.5.8 - Released soon

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

Changed lines 22-23 from:

#### Version 0.5.7 - 9 Apr 2012

to:

#### Version 0.5.7 - 21 May 2012

Changed lines 27-30 from:

to:

- 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

Changed lines 26-27 from:

- Testing some new Mixed-Integer code. A prototype version is available at the [https://www.mathworks.com/matlabcentral/fileexchange/35720-minlp-mixed-integer-nonlinear-programming | Mathworks File Exchange] web-site.

to:

- Testing some new Mixed-Integer code. A prototype version is available at the Mathworks File Exchange web-site.

Changed lines 24-26 from:

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

to:

- 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 [https://www.mathworks.com/matlabcentral/fileexchange/35720-minlp-mixed-integer-nonlinear-programming | Mathworks File Exchange] web-site.

Deleted line 66:

Added lines 21-25:

#### Version 0.5.7 - 9 Apr 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.

Added line 29:

- Retrieve server results without dependency of NumPy (Python version)

Changed lines 22-23 from:

#### Version 0.5.6

to:

#### Version 0.5.6 - 15 Feb 2012

Changed lines 30-31 from:

#### Version 0.5.5

to:

#### Version 0.5.5 - 9 Dec 2012

Changed lines 46-47 from:

#### Version 0.5.4

to:

#### Version 0.5.4 - 15 Nov 2011

Changed line 57 from:

#### Version 0.5.3

to:

#### Version 0.5.3 - 15 Sept 2011

Changed line 24 from:

- More improvements to the Python and MATLAB interfaces

to:

- More improvements to the APM Python and APM MATLAB interfaces

Changed lines 27-28 from:

- Tested parallel processing with MATLAB

to:

- Tested parallel processing with APM MATLAB
- Access database variables into the APM MATLAB or APM Python script such as objective function values

Added lines 21-27:

#### Version 0.5.6

- More improvements to the Python and MATLAB interfaces
- Access solution results directly into python scripts
- Added trending capability with Python's Numpy and Matplotlib

- Tested parallel processing with MATLAB

Added line 34:

- Time shift now allows any number of time horizon steps instead of only 1 or 0 (off).

Changed line 27 from:

- 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

to:

- 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

Changed lines 26-27 from:

- Separate simultaneous applications are maintained with separate names, such as MHE and NLC that feed information back and forth 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.

to:

- 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

Added line 26:

- Separate simultaneous applications are maintained with separate names, such as MHE and NLC that feed information back and forth between estimation and control.

Added lines 24-26:

- Improvements to the Python and MATLAB interfaces
- Python and MATLAB interfaces now support multiple simultaneous applications
- 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.

Deleted lines 4-7:

### Development Priorities and Roadmap

Additional functionality is continually

Changed lines 6-8 from:

### Version Release Notes

to:

### Future Roadmap

Changed lines 8-21 from:

to:

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
- Linux server development in addition to the Windows server operating support
- 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

Deleted line 28:

- New version of a Linux server migrated from the Windows application server

Added lines 1-45:

(:title APMonitor Release Notes:) (:keywords release notes, version, APMonitor, roadmap, development, differential, algebraic, modeling language:) (:description Version Information and Release Roadmap of APMonitor Modeling Language:)

### Development Priorities and Roadmap

Additional functionality is continually

### Version Release Notes

#### Version 0.5.5

- 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
- New version of a Linux server migrated from the Windows application server
- Web interface tested for MacOS

#### Version 0.5.4

- 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

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