Main

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