Definitions

aerodynamic trajectory

PROPT

The PROPT MATLAB Optimal Control Software is a new generation platform for solving applied optimal control (with ODE or DAE formulation) and parameters estimation problems.

The platform was developed by MATLAB Programming Contest Winner, Per Rutquist in 2008.

Description

PROPT is a combined modeling, compilation and solver engine for generation of highly complex optimal control problems. PROPT uses a pseudospectral collocation method for solving optimal control problems. This means that the solution takes the form of a polynomial, and this polynomial satisfies the DAE and the path constraints at the collocation points.

In general PROPT has five main functions:

  • Computation of the constant matrices used for the differentiation and integration of the polynomials used to approximate the solution to the trajectory optimization problem.
  • Text manipulation to turn user-supplied expressions into MATLAB code for the cost function f and constraint function c that are passed to a nonlinear programming solver in TOMLAB, ensuring that the code is compatible with MAD (TOMLAB package for automatic differentiation to achieve floating point precision for derivatives).
  • Functionality for plotting and computing a variety of information for the solution to the problem.
  • Partial automatic linearization for the following scenarios:
    • Minimal (or maximal) time problem
    • Problems with a linear objective (pure feasibility problems are also handled)
    • Linear systems with a fixed end time
  • Integrated support for non-smooth (hybrid) optimal control problems.

Modeling

The PROPT system uses equations and expressions to model optimal control problems. It is possible to define independent variables, dependent functions, scalars and constant parameters:

t = proptIndependent('t', [0 0 0], [10 20 40]); problem.variables.z1 = proptScalar(0, 500 , 10); problem.parameters.ki0 = [1e3; 1e7; 10; 1e-3];

States and Controls

States and controls only differ in the sense that controls need be continuous between phases.

x.x1 = proptState(-inf , inf , [0; 1]); x.u1 = proptControl(-2 , 1 , 0);

Boundary, path, event and integral constraints

A variety of boundary, path, event and integral constraints are shown below:

expr.x1_i = '1'; % Starting point for x1 expr.x1_f = '1'; % End point for x1 expr.x2_f = '2'; % End point for x2 eq.x3min = proptEquation('x3 > 0.5'); % Path constraint for x3 eq.integral = proptEquation('quad_t *x2 - 1 = 0'); % Integral constraint for x2 eq.final3 = proptEquation('x3_f > 0.5'); % Final event constraint for x3 eq.init1 = proptEquation('x1_i < 2.0'); % Initial event constraint x1

Single Phase Optimal Control Example

Van der Pol Oscillator

Minimize:

begin{matrix} J_{x,t} & = & x_3(t_f) end{matrix}

Subject to:

begin{cases} frac{dx_1}{dt} = (1-x_2^2)*x_1-x_2+u frac{dx_2}{dt} = x_1 frac{dx_3}{dt} = x_1^2+x_2^2+u^2

 x(t_0) = [0  1  0] 
 t_f = 5 
 -0.3 le u le 1.0 
end{cases}

To solve the problem with PROPT the following code can be used (with 60 collocation points):

tF = 5; t = proptIndependent('t', 0, tF);

clear x eq expr x.x1 = proptState(-10, 10, 0); x.x2 = proptState(-10, 10, 1); x.x3 = proptState(-10, 10, 0); x.u = proptControl(-0.3, 1, -0.01);

expr.x1_i = '0'; expr.x2_i = '1'; expr.x3_i = '0';

eq.eq1 = proptEquation('x1_t = (1-x2.^2).*x1-x2+u'); eq.eq2 = proptEquation('x2_t = x1'); eq.eq3 = proptEquation('x3_t = x1.^2+x2.^2+u.^2');

problem = proptPhase(t, x, [], eq, expr, 60); problem.cost = 'x3_f'; problem.name = 'Van Der Pol'; problem.language = 'Matlab, vectorized';

solution = proptSolve(problem);

Multi Phase Optimal Control Example

One-dimensional rocket with free end time and undetermined phase shift

Minimize:

begin{matrix} J_{x,t} & = & tCut end{matrix}

Subject to:

begin{cases} frac{dx_1}{dt} = x_2 frac{dx_2}{dt} = a-g (0 < t <= tCut) frac{dx_2}{dt} = -g (tCut < t < t_f)

 x(t_0) = [0  0] 
 g = 1 
 a = 2 
 x_1(t_f) = 100 
end{cases}

The problem is solved with PROPT by creating two phases and connecting them:

tF = 100; tCut = 10; t0 = 0; t1 = proptIndependent('t', 0.1, [tCut-9 tCut tCut+9]); t2 = proptIndependent('t', [tCut-9 tCut tCut+9], [tCut+9 tCut+9 tF]);

clear x1 x2 eq1 eq2 expr1 expr2 x1.x1 = proptState(0, inf, [0 50]); x1.x2 = proptState(0, inf, 0);

x2.x1 = proptState(0, inf, [50 100]); x2.x2 = proptState(0, inf, 0);

expr1.x1_i = '0'; expr1.x2_i = '0'; expr1.a = '2'; expr1.g = '1';

expr2.x1_f = '100'; expr2.a = '2'; expr2.g = '1';

eq1.eq1 = proptEquation('x1_t = x2'); eq2 = eq1; eq1.eq2 = proptEquation('x2_t = a-g'); eq2.eq2 = proptEquation('x2_t = -g');

problem = proptProblem; problem.name = 'One Dim Rocket'; problem.language = 'Matlab, vectorized';

problem.phases.p1 = proptPhase(t1, x1, [], eq1, expr1, 20); problem.phases.p2 = proptPhase(t2, x2, [], eq2, expr2, 20); problem.phases.p2.cost = 't_f_p1'; problem = proptAutoLink(problem, 'p1', 'p2');

solution = proptSolve(problem);

Parameter Estimation Example

Parameter Estimation Problem

Minimize:

begin{matrix} J_{p} & = & sum_{i=1,2,3,5}{(x_1(t_i) - x_1^m(t_i))^2} end{matrix}

Subject to:

begin{cases} frac{dx_1}{dt} = x_2 frac{dx_2}{dt} = 1-2*x_2-x_1

 x_0 = [p_1  p_2] 
 t_i = [1  2  3  5] 
 x_1^m(t_i) = [0.264  0.594  0.801  0.959] 
|p_{1:2}| <= 1.5 end{cases}

In the code below the problem is solved with a fine grid (10 collocation points). This solution is subsequently fine-tuned using 40 collocation points:

tF = 6; t = proptIndependent('t', 0, tF);

clear x eq expr vbl

x.x1 = proptState; x.x2 = proptState;

expr.x1meas = '[0.264;0.594;0.801;0.959]'; expr.tmeas = '[1;2;3;5]'; expr.x1err = 'sum((interp1(t,x1,tmeas) - x1meas).^2)';

eq.eq1 = proptEquation('x1_t = x2'); eq.eq2 = proptEquation('x2_t = 1-2*x2-x1');

expr.x1_i = 'p1'; expr.x2_i = 'p2';

vbl.p1 = proptScalar(-1.5,1.5,0); vbl.p2 = proptScalar(-1.5,1.5,0);

problem = proptPhase(t, x, vbl, eq, expr, 20); problem.cost = 'x1err'; problem.name = 'Parameter Estimation'; problem.language = 'Matlab, vectorized';

solution = proptSolveIter(problem,[10;40]);

Optimal Control Problems Supported

References

External links

  • TOMLAB - Developer and distributor of the software.
  • MAD - Automatic differentiation package used in software.
  • PROPT - Home page for PROPT.
  • SNOPT - Default solver used in PROPT.

Search another word or see aerodynamic trajectoryon Dictionary | Thesaurus |Spanish
Copyright © 2014 Dictionary.com, LLC. All rights reserved.
  • Please Login or Sign Up to use the Recent Searches feature