## Model Predictive Control

## Main.Control History

Hide minor edits - Show changes to output

Added lines 50-51:

Model Predictive Control (MPC) is also available in the newer Gekko interface with the control option ''m.options.IMODE=6''. A plot of the results can be generated with a plotting package such as Matplotlib. Every time the ''m.solve()'' command is called, the solution is time-shifted by one cycle and the MPC calculation repeats with the updated measurements or set points.

Added lines 105-108:

The ''GUI=True'' option generates a web-interface where ''FV'', ''MV'', ''SV'', and ''CV'' types are included with configurable options.

%width=550px%Attach:gekko_gui.png

Changed line 48 from:

!!!! MPC~~ Example~~ with Python GEKKO

to:

!!!! MPC with Python GEKKO

Deleted lines 32-43:

Continuous and discrete state space models are used in a Python script for Model Predictive Control.

[[Attach:mpc_python.zip | Download Python MPC Examples]]

%width=550px%Attach:mpc_python.png

The model1.apm contains a linear first-order differential equation. Other versions are model2.apm (continuous state space) and model3.apm (discrete state space). Each is applied in a model predictive controller to follow a reference trajectory and reach a target value of 7.0.

----

Added lines 103-114:

----

!!! Python Model Predictive Control

Continuous and discrete state space models are used in a Python script for Model Predictive Control. A newer version of the APM Python library is [[Main/GekkoPythonOptimization|Python Gekko]].

[[Attach:mpc_python.zip | Download Python MPC Examples]]

%width=550px%Attach:mpc_python.png

The model1.apm contains a linear first-order differential equation. Other versions are model2.apm (continuous state space) and model3.apm (discrete state space). Each is applied in a model predictive controller to follow a reference trajectory and reach a target value of 7.0.

Changed lines 58-112 from:

to:

The objective is formulated from ''Controlled Variables (CVs)''. The CVs may be controlled to a range, a trajectory, maximized, or minimized. The CVs are an expression of the desired outcome for the controller action.

!!!! MPC Example with Python GEKKO

(:source lang=python:)

from gekko import GEKKO

import numpy as np

import matplotlib.pyplot as plt

m = GEKKO()

m.time = np.linspace(0,20,41)

# Parameters

mass = 500

b = m.Param(value=50)

K = m.Param(value=0.8)

# Manipulated variable

p = m.MV(value=0, lb=0, ub=100)

p.STATUS = 1 # allow optimizer to change

p.DCOST = 0.1 # smooth out gas pedal movement

p.DMAX = 20 # slow down change of gas pedal

# Controlled Variable

v = m.CV(value=0)

v.STATUS = 1 # add the SP to the objective

m.options.CV_TYPE = 2 # squared error

v.SP = 40 # set point

v.TR_INIT = 1 # set point trajectory

v.TAU = 5 # time constant of trajectory

# Process model

m.Equation(mass*v.dt() == -v*b + K*b*p)

m.options.IMODE = 6 # control

m.solve(disp=False,GUI=True)

# get additional solution information

import json

with open(m.path+'//results.json') as f:

results = json.load(f)

plt.figure()

plt.subplot(2,1,1)

plt.plot(m.time,p.value,'b-',label='MV Optimized')

plt.legend()

plt.ylabel('Input')

plt.subplot(2,1,2)

plt.plot(m.time,results['v1.tr'],'k-',label='Reference Trajectory')

plt.plot(m.time,v.value,'r--',label='CV Response')

plt.ylabel('Output')

plt.xlabel('Time')

plt.legend(loc='best')

plt.show()

(:sourceend:)

!!!! MPC Example with Python GEKKO

(:source lang=python:)

from gekko import GEKKO

import numpy as np

import matplotlib.pyplot as plt

m = GEKKO()

m.time = np.linspace(0,20,41)

# Parameters

mass = 500

b = m.Param(value=50)

K = m.Param(value=0.8)

# Manipulated variable

p = m.MV(value=0, lb=0, ub=100)

p.STATUS = 1 # allow optimizer to change

p.DCOST = 0.1 # smooth out gas pedal movement

p.DMAX = 20 # slow down change of gas pedal

# Controlled Variable

v = m.CV(value=0)

v.STATUS = 1 # add the SP to the objective

m.options.CV_TYPE = 2 # squared error

v.SP = 40 # set point

v.TR_INIT = 1 # set point trajectory

v.TAU = 5 # time constant of trajectory

# Process model

m.Equation(mass*v.dt() == -v*b + K*b*p)

m.options.IMODE = 6 # control

m.solve(disp=False,GUI=True)

# get additional solution information

import json

with open(m.path+'//results.json') as f:

results = json.load(f)

plt.figure()

plt.subplot(2,1,1)

plt.plot(m.time,p.value,'b-',label='MV Optimized')

plt.legend()

plt.ylabel('Input')

plt.subplot(2,1,2)

plt.plot(m.time,results['v1.tr'],'k-',label='Reference Trajectory')

plt.plot(m.time,v.value,'r--',label='CV Response')

plt.ylabel('Output')

plt.xlabel('Time')

plt.legend(loc='best')

plt.show()

(:sourceend:)

Changed lines 45-49 from:

APMonitor enables the use of empirical, hybrid, and fundamental models directly in control applications. The DBS file parameter ~~''imode''~~ is used to control the simulation mode. This option is set to ''6'' or ''9'' for nonlinear control.

~~nlc~~.imode = 6 (simultaneous dynamic control)

~~nlc~~.imode = 9 (sequential dynamic control)

to:

APMonitor enables the use of empirical, hybrid, and fundamental models directly in control applications. The DBS file parameter [[Main/OptionApmImode|IMODE]] is used to control the simulation mode. This option is set to ''6'' or ''9'' for nonlinear control.

apm.imode = 6 (simultaneous dynamic control)

apm.imode = 9 (sequential dynamic control)

apm.imode = 6 (simultaneous dynamic control)

apm.imode = 9 (sequential dynamic control)

Changed lines 51-52 from:

apm_option(server,app,'~~nlc~~.imode',6);

to:

apm_option(server,app,'apm.imode',6);

Changed line 54 from:

apm_option(server,app,'~~nlc~~.imode',9)

to:

apm_option(server,app,'apm.imode',9)

Added lines 38-41:

%width=550px%Attach:mpc_python.png

The model1.apm contains a linear first-order differential equation. Other versions are model2.apm (continuous state space) and model3.apm (discrete state space). Each is applied in a model predictive controller to follow a reference trajectory and reach a target value of 7.0.

Added lines 30-37:

----

!!! Python Model Predictive Control

Continuous and discrete state space models are used in a Python script for Model Predictive Control.

[[Attach:mpc_python.zip | Download Python MPC Examples]]

Changed line 42 from:

apm_option(server,app,'nlc.imode',9)~~;~~

to:

apm_option(server,app,'nlc.imode',9)

Changed lines 35-37 from:

* ''NLC

to:

nlc.imode = 6 (simultaneous dynamic control)

nlc.imode = 9 (sequential dynamic control)

% MATLAB example

apm_option(server,app,'nlc.imode',6);

# Python example

apm_option(server,app,'nlc.imode',9);

nlc.imode = 9 (sequential dynamic control)

% MATLAB example

apm_option(server,app,'nlc.imode',6);

# Python example

apm_option(server,app,'nlc.imode',9);

Deleted lines 46-47:

----

Deleted lines 4-7:

One of the benefits derived from a modeling effort is the direct application of the model for optimization. When solution robustness or speed are concerns, linearizations of the model may be practical. Other compromises of the model include excessive dependence on empirical formulations.

Deleted lines 7-8:

----

Changed lines 41-42 from:

''NLC.imode = 6 (simultaneous approach)''

''NLC.imode = 9 (sequential approach)''

''NLC.imode = 9 (sequential approach)''

to:

* ''NLC.imode = 6 (simultaneous approach)''

* ''NLC.imode = 9 (sequential approach)''

* ''NLC.imode = 9 (sequential approach)''

Changed lines 39-41 from:

APMonitor enables the use of empirical, hybrid, and fundamental models directly in control applications. The DBS file parameter ''imode'' is used to control the simulation mode. This option is set to ''6'' ~~for nonlinear control.~~

''~~NLC.imode = 6~~''

to:

APMonitor enables the use of empirical, hybrid, and fundamental models directly in control applications. The DBS file parameter ''imode'' is used to control the simulation mode. This option is set to ''6'' or ''9'' for nonlinear control.

''NLC.imode = 6 (simultaneous approach)''

''NLC.imode = 9 (sequential approach)''

''NLC.imode = 6 (simultaneous approach)''

''NLC.imode = 9 (sequential approach)''

Changed line 39 from:

The DBS file parameter ''imode'' is used to control the simulation mode. This option is set to ''6'' for nonlinear control.

to:

APMonitor enables the use of empirical, hybrid, and fundamental models directly in control applications. The DBS file parameter ''imode'' is used to control the simulation mode. This option is set to ''6'' for nonlinear control.

Changed lines 5-7 from:

!! ~~Nonlinear Control~~

One of the benefits derived from a modeling effort is the direct application of the model for optimization. When solution robustness or speed are concerns, linearizations of the model may be practical. Other compromises of the model include ~~eccessive~~ dependence on empirical formulations~~. APMonitor enables the use of empirical, hybrid, and fundamental models directly in control applications~~.

One of the benefits derived from a modeling effort is the direct application of the model for

to:

!! Modeling for Dynamic Optimization

One of the benefits derived from a modeling effort is the direct application of the model for optimization. When solution robustness or speed are concerns, linearizations of the model may be practical. Other compromises of the model include excessive dependence on empirical formulations.

One of the benefits derived from a modeling effort is the direct application of the model for optimization. When solution robustness or speed are concerns, linearizations of the model may be practical. Other compromises of the model include excessive dependence on empirical formulations.

Added lines 8-11:

(:html:)

<iframe width="560" height="315" src="//www.youtube.com/embed/YHAA-uXhI0E?list=PLLBUgWXdTBDgOlvGgbBDvHXdleSgEi9aj" frameborder="0" allowfullscreen></iframe>

(:htmlend:)

Added lines 18-31:

----

!!! MATLAB Toolbox for Model Predictive Control

Model Predictive Control (MPC) predicts and optimizes time-varying processes over a future time horizon. This control package accepts linear or nonlinear models. Using large-scale nonlinear programming solvers such as APOPT and IPOPT, it solves data reconciliation, moving horizon estimation, real-time optimization, dynamic simulation, and nonlinear MPC problems.

[[https://www.mathworks.com/matlabcentral/fileexchange/35825-model-predictive-control | Download MATLAB Toolbox for Model Predictive Control]]

Three example files are contained in this directory that implement a controller for Linear Time Invariant (LTI) systems:

# apm1_lti - translate any LTI model into APM format

# apm2_step - perform step tests to ensure model accuracy

# apm3_control - MPC setpoint change to new target values

Added lines 1-4:

(:title Model Predictive Control:)

(:keywords nonlinear, model, predictive control, moving horizon, differential, algebraic, modeling language:)

(:description Tutorial in Excel / Simulink / MATLAB for implementing Model Predictive Control for linear or nonlinear systems.:)

(:keywords nonlinear, model, predictive control, moving horizon, differential, algebraic, modeling language:)

(:description Tutorial in Excel / Simulink / MATLAB for implementing Model Predictive Control for linear or nonlinear systems.:)

Changed lines 7-8 from:

One of the ~~largest ~~benefits derived from ~~the~~ modeling effort is the direct application of the model for optimization. When solution robustness or speed are concerns, linearizations of the model may be practical. Other compromises of the model include eccessive dependence on empirical formulations. APMonitor enables the use of empirical, hybrid, and fundamental models directly in control applications.

to:

One of the benefits derived from a modeling effort is the direct application of the model for optimization. When solution robustness or speed are concerns, linearizations of the model may be practical. Other compromises of the model include eccessive dependence on empirical formulations. APMonitor enables the use of empirical, hybrid, and fundamental models directly in control applications.

Changed line 17 from:

[[Attach:mpc_excel.zip | Attach:model_predictive_~~control~~.png]]

to:

[[Attach:mpc_excel.zip | Attach:model_predictive_control2.png]]

Changed lines 3-4 from:

One of the largest benefits derived from the modeling effort is the direct application of the model for optimization. ~~Application of the full nonlinear model directly for control is an elegant but immature field~~. ~~When solution robustness or speed are concerns, linearizations of the model may be practical. Other compromises ~~of ~~the model include eccessive dependence on empirical fomulations. These empirical formulations are generally unreliable during abnormal situations~~. ~~ APMonitor enables the use of empirical, hybrid, and fundamental models directly in control applications~~.

to:

One of the largest benefits derived from the modeling effort is the direct application of the model for optimization. When solution robustness or speed are concerns, linearizations of the model may be practical. Other compromises of the model include eccessive dependence on empirical formulations. APMonitor enables the use of empirical, hybrid, and fundamental models directly in control applications.

----

!!! Model Predictive Control Tutorial

A basic Model Predictive Control (MPC) tutorial demonstrates the capability of a solver to determine a dynamic move plan. In this example, a linear dynamic model is used with the Excel solver to determine a sequence of manipulated variable (MV) adjustments that drive the controlled variable (CV) along a desired reference trajectory.

[[Attach:mpc_excel.zip | Download Excel Tutorial File]]

[[Attach:mpc_excel.zip | Attach:model_predictive_control.png]]

----

!!! Model Predictive Control Tutorial

A basic Model Predictive Control (MPC) tutorial demonstrates the capability of a solver to determine a dynamic move plan. In this example, a linear dynamic model is used with the Excel solver to determine a sequence of manipulated variable (MV) adjustments that drive the controlled variable (CV) along a desired reference trajectory.

[[Attach:mpc_excel.zip | Download Excel Tutorial File]]

[[Attach:mpc_excel.zip | Attach:model_predictive_control.png]]

Changed lines 3-5 from:

The largest benefit

to:

One of the largest benefits derived from the modeling effort is the direct application of the model for optimization. Application of the full nonlinear model directly for control is an elegant but immature field. When solution robustness or speed are concerns, linearizations of the model may be practical. Other compromises of the model include eccessive dependence on empirical fomulations. These empirical formulations are generally unreliable during abnormal situations. APMonitor enables the use of empirical, hybrid, and fundamental models directly in control applications.