EMinTimeController

Purpose

Explicit minimum-time MPC controller

Syntax

ctrl = EMinTimeController(model)

Description

Constructs the explicit form of a minimum-time MPC controller by solving the following optimization problem parametrically:

../../../../../fig/mpt/modules/ui/@EMinTimeController/emintimecontroller9.png

where ../../../../../fig/mpt/modules/ui/@EMinTimeController/emintimecontroller1.png represents the prediction model's state-update equation, ../../../../../fig/mpt/modules/ui/@EMinTimeController/emintimecontroller2.png is a given terminal set, and ../../../../../fig/mpt/modules/ui/@EMinTimeController/emintimecontroller3.png and ../../../../../fig/mpt/modules/ui/@EMinTimeController/emintimecontroller4.png denote, respectively, the state and input constraints.

LTI, PWA, and MLD models are accepted for predictions. State and input constraint sets ../../../../../fig/mpt/modules/ui/@EMinTimeController/emintimecontroller5.png, ../../../../../fig/mpt/modules/ui/@EMinTimeController/emintimecontroller6.png are automatically created using the model's state and input constraints (model.x.min, model.x.max, model.u.min, model.u.max). The terminal set ../../../../../fig/mpt/modules/ui/@EMinTimeController/emintimecontroller7.png is either taken from model.x.terminalSet or, if the field is empty, by calling model.stabizilingController() (for LTI systems only).

Once computed, explicit minimum-time controllers inherit the behavior of the EMPCController class in terms of internal structure, evaluation and post-processing. See "help EMPCController" for more details.

Input Arguments

model

Prediction model

Class: AbstractSystem

Output Arguments

ctrl

Explicit minimum-time controller.

Class: EMinTimeController

Example(s)

Example 1

Create a 1D LTI system
sys = LTISystem('A', 1, 'B', 1, 'C', 1, 'D', 0)
LTISystem with 1 state, 1 input, 1 output
Define constraints and quadratic cost function with unity weights
		sys.x.min = -1; sys.x.max = 1;
		sys.u.min = -1; sys.u.max = 1;
		sys.x.penalty = QuadFunction(1);
		sys.u.penalty = QuadFunction(1);
	
Define a terminal set ../../../../../fig/mpt/modules/ui/@EMinTimeController/emintimecontroller8.png and construct the explicit minimum-time controller
		sys.x.with('terminalSet');
		sys.x.terminalSet = Polyhedron('lb', -0.1, 'ub', 0.1);
		ctrl = EMinTimeController(sys)
	
Using provided terminal state set...
Iterating...
New horizon: 1
mpt_plcp: 3 regions
New horizon: 2
mpt_plcp: 1 regions
Explicit minimum-time controller (horizon: 1, regions: 4, partitions: 2)

See Also

mintimecontrollerr, empccontroller


© 2003-2013 Michal Kvasnica: STU Bratislava, michal.kvasnica@stuba.sk