PROPT

{{Infobox Software

| name = PROPT

| developer = [http://tomopt.com/ Tomlab Optimization Inc.]

| latest_release_version = 7.8

| latest_release_date = {{release date|2011|12|16}}

| operating_system = [http://tomopt.com/tomlab/about/ TOMLAB - OS Support]

| genre = Technical computing

| license = Proprietary

| website = [http://tomdyn.com/ PROPT product page]

}}

The PROPT{{cite book | title = PROPT - Matlab Optimal Control Software | first = Per | last = Rutquist |author2=M. M. Edvall | date = June 2008 | url = http://tomopt.com/docs/TOMLAB_PROPT.pdf | location = Pullman, WA| publisher = Tomlab Optimization Inc.}} 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, [http://se.mathworks.com/matlabcentral/contest/contests/26/winners Per Rutquist] in 2008. The most recent version has support for binary and integer variables as well as an automated scaling module.

Description

PROPT is a combined modeling, compilation and solver engine, built upon the TomSym modeling class, for generation of highly complex optimal control problems. PROPT uses a pseudospectral Collocation method (with Gauss or Chebyshev points) 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 the following 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.
  • Source transformation 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. The source transformation package TomSym automatically generates first and second order derivatives.
  • Functionality for plotting and computing a variety of information for the solution to the problem.
  • Automatic detection of the following:
  • Linear and quadratic objective.
  • Simple bounds, linear and nonlinear constraints.
  • Non-optimized expressions.
  • Integrated support for non-smooth{{cite journal | title = Dynamic optimization of bioprocesses: efficient and robust numerical strategies | first = J. R. | last = Banga |author2=Balsa-Canto, E. |author3=Moles, C. G. |author4=Alonso, A. A. | date = 2003 | publisher = Journal of Biotechnology}} (hybrid) optimal control problems.
  • Module for automatic scaling of difficult space related problem.
  • Support for binary and integer variables, controls or states.

Modeling

The PROPT system uses the TomSym symbolic source transformation engine to model optimal control problems. It is possible to define independent variables, dependent functions, scalars and constant parameters:

toms tf

toms t

p = tomPhase('p', t, 0, tf, 30);

x0 = {tf == 20};

cbox = {10 <= tf <= 40};

toms z1

cbox = {cbox; 0 <= z1 <= 500};

x0 = {x0; z1 == 0};

ki0 = [1e3; 1e7; 10; 1e-3];

= States and controls =

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

tomStates x1

x0 = {icollocate({x1 == 0})};

tomControls u1

cbox = {-2 <= collocate(u1) <= 1};

x0 = {x0; collocate(u1 == -0.01)};

= Boundary, path, event and integral constraints =

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

cbnd = initial(x1 == 1); % Starting point for x1

cbnd = final(x1 == 1); % End point for x1

cbnd = final(x2 == 2); % End point for x2

pathc = collocate(x3 >= 0.5); % Path constraint for x3

intc = {integrate(x2) == 1}; % Integral constraint for x2

cbnd = final(x3 >= 0.5); % Final event constraint for x3

cbnd = initial(x1 <= 2.0); % Initial event constraint x1

Single-phase optimal control example

Van der Pol Oscillator [http://tomdyn.com/examples/vanDerPol.html "Van Der Pol Oscillator - Matlab Solution", PROPT Home Page] June, 2008.

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):

toms t

p = tomPhase('p', t, 0, 5, 60);

setPhase(p);

tomStates x1 x2 x3

tomControls u

% Initial guess

x0 = {icollocate({x1 == 0; x2 == 1; x3 == 0})

collocate(u == -0.01)};

% Box constraints

cbox = {-10 <= icollocate(x1) <= 10

-10 <= icollocate(x2) <= 10

-10 <= icollocate(x3) <= 10

-0.3 <= collocate(u) <= 1};

% Boundary constraints

cbnd = initial({x1 == 0; x2 == 1; x3 == 0});

% ODEs and path constraints

ceq = collocate({dot(x1) == (1-x2.^2).*x1-x2+u

dot(x2) == x1; dot(x3) == x1.^2+x2.^2+u.^2});

% Objective

objective = final(x3);

% Solve the problem

options = struct;

options.name = 'Van Der Pol';

solution = ezsolve(objective, {cbox, cbnd, ceq}, x0, options);

Multi-phase optimal control example

One-dimensional rocket [http://tomdyn.com/examples/onedimRocket.html "One Dimensional Rocket Launch (2 Free Time)", PROPT Home Page] June, 2008. 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:

toms t

toms tCut tp2

p1 = tomPhase('p1', t, 0, tCut, 20);

p2 = tomPhase('p2', t, tCut, tp2, 20);

tf = tCut+tp2;

x1p1 = tomState(p1,'x1p1');

x2p1 = tomState(p1,'x2p1');

x1p2 = tomState(p2,'x1p2');

x2p2 = tomState(p2,'x2p2');

% Initial guess

x0 = {tCut==10

tf==15

icollocate(p1,{x1p1 == 50*tCut/10;x2p1 == 0;})

icollocate(p2,{x1p2 == 50+50*t/100;x2p2 == 0;})};

% Box constraints

cbox = {

1 <= tCut <= tf-0.00001

tf <= 100

0 <= icollocate(p1,x1p1)

0 <= icollocate(p1,x2p1)

0 <= icollocate(p2,x1p2)

0 <= icollocate(p2,x2p2)};

% Boundary constraints

cbnd = {initial(p1,{x1p1 == 0;x2p1 == 0;})

final(p2,x1p2 == 100)};

% ODEs and path constraints

a = 2; g = 1;

ceq = {collocate(p1,{

dot(p1,x1p1) == x2p1

dot(p1,x2p1) == a-g})

collocate(p2,{

dot(p2,x1p2) == x2p2

dot(p2,x2p2) == -g})};

% Objective

objective = tCut;

% Link phase

link = {final(p1,x1p1) == initial(p2,x1p2)

final(p1,x2p1) == initial(p2,x2p2)};

%% Solve the problem

options = struct;

options.name = 'One Dim Rocket';

constr = {cbox, cbnd, ceq, link};

solution = ezsolve(objective, constr, x0, options);

Parameter estimation example

Parameter estimation problem [http://tomdyn.com/examples/parameterEstimation.html "Matlab Dynamic Parameter Estimation with PROPT", PROPT Home Page] June, 2008.

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:

toms t p1 p2

x1meas = [0.264;0.594;0.801;0.959];

tmeas = [1;2;3;5];

% Box constraints

cbox = {-1.5 <= p1 <= 1.5

-1.5 <= p2 <= 1.5};

%% Solve the problem, using a successively larger number collocation points

for n=[10 40]

p = tomPhase('p', t, 0, 6, n);

setPhase(p);

tomStates x1 x2

% Initial guess

if n == 10

x0 = {p1 == 0; p2 == 0};

else

x0 = {p1 == p1opt; p2 == p2opt

icollocate({x1 == x1opt; x2 == x2opt})};

end

% Boundary constraints

cbnd = initial({x1 == p1; x2 == p2});

% ODEs and path constraints

x1err = sum((atPoints(tmeas,x1) - x1meas).^2);

ceq = collocate({dot(x1) == x2; dot(x2) == 1-2*x2-x1});

% Objective

objective = x1err;

%% Solve the problem

options = struct;

options.name = 'Parameter Estimation';

options.solver = 'snopt';

solution = ezsolve(objective, {cbox, cbnd, ceq}, x0, options);

% Optimal x, p for starting point

x1opt = subs(x1, solution);

x2opt = subs(x2, solution);

p1opt = subs(p1, solution);

p2opt = subs(p2, solution);

end

Optimal control problems supported

  • Aerodynamic trajectory control{{cite journal | title = SOCS Release 6.5.0 | first = J. | last = Betts | date = 2007 | publisher = THE BOEING COMPANY}}
  • Bang-bang control{{cite journal | title = Solving Tough Optimal Control Problems by Network Enabled Optimization Server (NEOS) | first = J. | last = Liang |author2=Meng, M. |author3=Chen, Y. |author4=Fullmer, R. | date = 2003 | publisher = School of Engineering, Utah State University USA, Chinene University of Hong Kong China}}
  • Chemical engineering{{cite journal | title = A HYBRID METHOD FOR THE OPTIMAL CONTROL OF CHEMICAL PROCESSES | first = E. F. | last = Carrasco |author2=Banga, J. R. | date = September 1998 | location = University of Wales, Swansea, UK | publisher = UKACC International Conference on CONTROL 98}}
  • Dynamic systems{{cite journal | title = Second-order sensitivities of general dynamic systems with application to optimal control problems | first = V. S. | last = Vassiliadis |author2=Banga, J. R. |author3=Balsa-Canto, E. | date = 1999 | journal = Chemical Engineering Science | volume = 54 | issue = 17 | pages = 3851–3860| doi = 10.1016/S0009-2509(98)00432-1 | bibcode = 1999ChEnS..54.3851V }}
  • General optimal control
  • Large-scale linear control{{cite book | title = Iterative dynamic programming | first = R. | last = Luus | date = 2002 | publisher = Chapman and Hall/CRC}}
  • Multi-phase system control{{cite journal | title = A Java Application for the Solution of Optimal Control Problems | first = B. C. | last = Fabien | date = 1998 | location = Stevens Way, Box 352600 Seattle, WA 98195, USA | publisher = Mechanical Engineering, University of Washington}}
  • Mechanical engineering design{{cite journal | title = MISER3: Optimal Control Toolbox User Manual, Matlab Beta Version 2.0 | first = L. S. | last = Jennings |author2=Fisher, M. E. | date = 2002 | location = Nedlands, WA 6907, Australia | publisher = Department of Mathematics, The University of Western Australia}}
  • Nondifferentiable control{{Cite book | title = Global Optimization of Chemical Processes using Stochastic Algorithms - State of the Art in Global Optimization: Computational Methods and Applications | first = J. R. | last = Banga |author2=Seider, W. D. | editor-last = Floudas | editor-first = C. A. | editor2-last = Pardalos | editor2-first = P. M.

| date = 1996 | location = Dordrecht, The Netherlands | publisher = Kluwer Academic Publishers | isbn = 0-7923-3838-3 | pages = 563–583 }}

  • Parameters estimation for dynamic systems{{cite journal | title = Benchmarking Optimization Software with COPS | first = E. D. | last = Dolan |author2=More, J. J. | date = January 2001 | location = 9700 South Cass Avenue, Argonne, Illinois 60439 | publisher = ARGONNE NATIONAL LABORATORY}}
  • Singular control

References

{{reflist}}