Interfaces

Classes

Class name Description
OptimalControlProblem Formulate an OCP
NMPCSolver Configurate the NMPC solver
DynamicSystem Construct a dynamic system

OptimalControlProblem

Formulate an OCP.

Example

./NMPC_Problem_Formulation.m

Properties Description
dim structure.{lambda,mu,u,x,z,p}, dimensions of lambda, mu, u, x, z, p.
lambda symbolic vector [dim.x,1], multiplier vector.
mu symbolic vector [dim.mu,1], multiplier vector.
u symbolic vector [dim.u,1], input vector.
x symbolic vector [dim.x,1], state vector.
z symbolic vector [zDim,1], multiplier vector.
p symbolic vector [pDim,1], parameter vector.
f symbolic expression [dim.x,1], function f.
M symbolic expression [dim.x,dim.x], matrix M .
L symbolic expression [1,1], function L.
C symbolic expression [dim.mu,1], function C.
G symbolic expression [dim.z,1], function G.
N positive integer [1,1], number of discretization grids N.
T positive [1,1], prediction horizon T.
deltaTau positive [1,1], discretization size (T/N).
discretizationMethod string, discretization method.
isMEnabled bool, whether the M matrix is enabled.
Functions Description
OptimalControlProblem Constructor.
Input:
dim.u: positive integer [1,1], dimension of u.
dim.x: positive integer [1,1], dimension of x.
pDim: nonnegtive integer [1,1], dimension of p.
N: positive integer [1,1], number of discretization grids.
Output:
OptimalControlProblem
setf Set f.
Inherit from DynamicSystem
setM Set M.
Inherit from DynamicSystem
setStateName Give names to all or part of the states.
Inherit from DynamicSystem
setInputName Give names to all or part of the inputs.
Inherit from DynamicSystem
setParameterName Give names to all or part of the parameters.
Inherit from DynamicSystem
setL Set L.
Input:
L: symbolic expression [1,1], function L.
Output: none.
setC Set C.
Input:
C: symbolic expression [dim.mu,1], function C.
Output: none.
setT Set T.
Input:
T: symbolic variable/double [1,1], must be included in p if it is a symbolic variable.
Output: none.
setG Set G.
Input:
C: symbolic expression [dim.z,1], function G.
Output: none.
setDiscretizationMethod Set the discretization method.
Input:
method: string, 'Euler', 'RK2', or 'RK4', discretization method.
Output: none
codeGen Generate necessary files.
Input: none.
Output: none.

NMPCSolver

Configurate the NMPC solver.

Example

./NMPC_Problem_Formulation.m

Properties Description
OCP OptimalControlProblem, OptimalControlProblem object.
HessianApproximation string, Hessian approximation method.
Functions Description
NMPCSolver Constructor.
Input:
OCP: OptimalControlProblem, OptimalControlProblem object.
Output:
NMPCSolver
setHessianApproximation Set the Hessian approximation method.
Input:
method: string, 'Newton', 'GaussNewton', or 'GaussNewtonLC', Hessian approximation method.
Output: none
codeGen Generate necessary files.
Input: none.
Output: none.

DynamicSystem

Construct a dynamic system M(u(t),x(t),p(t))\dot{x}=f(u(t),x(t),p(t)).

Example

./NMPC_Problem_Formulation.m

Properties Description
dim structure.{u;x;p}, dimensions of u, x, p.
u symbolic vector [dim.u,1], input vector.
x symbolic vector [dim.x,1], state vector.
p symbolic vector [pDim,1], parameter vector.
f symbolic expression [dim.x,1], function f.
M symbolic expression [dim.x,dim.x], matrix M .
isMEnabled bool, whether the M matrix is enabled.
Functions Description
DynamicSystem Constructor.
Input:
dim.u: [1,1], dimension of u.
dim.x: [1,1], dimension of x.
pDim: [1,1], dimension of p.
Output:
DynamicSystem
setf Set f.
Input:
f: symbolic expression [dim.x,1], function f.
Output: none.
setM Set M.
Input:
M: symbolic expression [dim.x,dim.x], M matrix.
Output: none.
setStateName Give names to all or part of the states.
Example:
[X,Y,Z] =~.setStateName({'X','Y','Z'});
[X,Z] =~.setStateName({'X','Z'},[1 3]);
setInputName Give names to all or part of the inputs.
Example:
[F1,F2,F3] =~.setInputName({'F1','F2','F3'};
[F1,F3] =~.setInputName({'F1','F3'},[1 3]);
setParameterName Give names to all or part of the parameters.
Example:
[a,b,c] =~.setParameterName({'a','b','c'};
[a,c] =~.setParameterName({'a','c'},[1 3]);
codeGen Generate necessary files.
Input: none.
Output: none.

Functions

Function name Description
NMPC_Solve Solve the NMPC problem.
createOptions Create an option struct for NMPC_Solve.
NMPC_Solve_CodeGen Generate code for NMPC_Solve.
SIM_Plant_RK4 Simulate the dynamic system using the 4-th order Runge-Kutta method.
Timer Measure the current time.

NMPC_Solve

Example

./Simu_Matlab.m

Function name NMPC_Solve
Description Solve the NMPC problem.
Input x0: [dim.x,1], initial state.
p: [pDim,N], given parameters.
options: struct, options.
Output solution: struct, solution.
output: struct, output information.

createOptions

Example

./Simu_Matlab.m

Function name createOptions
Description Create an option struct for NMPC_Solve.
Input None
Output options: struct, options.

NMPC_Solve_CodeGen

Example

./Simu_Simulink_Setup.m

Function name NMPC_Solve_CodeGen
Description Generate code for function NMPC_Solve.
Input target: string, 'mex', 'dll', or 'mex', target.
targetLang: string, 'C' or 'C++', target language.
options: struct, options.
Output None

SIM_Plant_RK4

Example

./Simu_Matlab.m

Function name SIM_Plant_RK4
Description Simulate the dynamic system using the 4-th order Runge-Kutta method.
Input u: [dim.u,1], inputs applied to the plant.
x: [dim.x,1], current state of the plant.
p: [pDim,1], given parameters.
Ts: positive [1,1], sampling interval.
Output xNext: [dim.x,1], next state of the plant.

Timer

Example

./Timer.m

Function name Timer
Description Measure the current time.
Input None
Output t: [1,1], current time.
Statement Create Timer.m in the working directory to specify your own timer function.