PROPT Goddard Rocket, Maximum Ascent

From TomWiki
Jump to navigationJump to search

Notice.png

This page is part of the PROPT Manual. See PROPT Manual.

Benchmarking Optimization Software with COPS Elizabeth D. Dolan and Jorge J. More ARGONNE NATIONAL LABORATORY

Problem Formulation

Find u(t) over t in [0; T ] to minimize


subject to:



% Copyright (c) 2007-2008 by Tomlab Optimization Inc.

Problem setup

toms t
toms t_f

Solve the problem, using a successively larger number collocation points

for n=[20 50 100]


    p = tomPhase('p', t, 0, t_f, n);
    setPhase(p);
    tomStates v h m
    tomControls T

    % Initial guess
    if n==20
        x0 = {t_f == 1
            icollocate({v == 620; h == 1
            m == 1-0.4*t/t_f})
            collocate(T == 0)};
    else
        x0 = {t_f == tfopt
            icollocate({v == vopt; h == hopt
            m == mopt})
            collocate(T == Topt)};
    end

    % Box constraints
    cbox = {0.1 <= t_f <= 1
        icollocate({
        0 <= v; 1 <= h
        0.6 <= m <= 1
        0   <= T <= 3.5})};

    % Boundary constraints
    cbnd = {initial({v == 0; h == 1; m == 1})
        final({m == 0.6})};

    b    = 500;
    D    = 0.5*620*v.^2.*exp(-b*h);
    g    = 1./h.^2;
    c    = 0.5;

    % ODEs and path constraints
    ceq = collocate({dot(v) == (T-D)./m-g
        dot(h) == v; dot(m) == -T/c});

    % Objective
    objective = -final(h);

Solve the problem

    options = struct;
    options.name = 'Goddard Rocket';
    solution = ezsolve(objective, {cbox, cbnd, ceq}, x0, options);

    % Optimal v and more to use as starting guess
    vopt = subs(v, solution);
    hopt = subs(h, solution);
    mopt = subs(m, solution);
    Topt = subs(T, solution);
    tfopt = subs(t_f, solution);
Problem type appears to be: lpcon
Time for symbolic processing: 0.17526 seconds
Starting numeric solver
===== * * * =================================================================== * * *
TOMLAB - TOMLAB Development license  999007. Valid to 2011-12-31
=====================================================================================
Problem: ---  1: Goddard Rocket                 f_k      -1.025133422819133800
                                       sum(|constr|)      0.000006395961328869
                              f(x_k) + sum(|constr|)     -1.025127026857805000
                                              f(x_0)     -0.999999999999998220

Solver: snopt.  EXIT=0.  INFORM=1.
SNOPT 7.2-5 NLP code
Optimality conditions satisfied

FuncEv    1 ConstrEv   58 ConJacEv   58 Iter   30 MinorIter 1241
CPU time: 0.109201 sec. Elapsed time: 0.075000 sec. 

Problem type appears to be: lpcon
Time for symbolic processing: 0.17374 seconds
Starting numeric solver
===== * * * =================================================================== * * *
TOMLAB - TOMLAB Development license  999007. Valid to 2011-12-31
=====================================================================================
Problem: ---  1: Goddard Rocket                 f_k      -1.025311927405713400
                                       sum(|constr|)      0.000015914331448424
                              f(x_k) + sum(|constr|)     -1.025296013074265000
                                              f(x_0)     -1.025133233935944700

Solver: snopt.  EXIT=0.  INFORM=1.
SNOPT 7.2-5 NLP code
Optimality conditions satisfied

FuncEv    1 ConstrEv   23 ConJacEv   23 Iter   14 MinorIter  536
CPU time: 0.093601 sec. Elapsed time: 0.103000 sec. 

Problem type appears to be: lpcon
Time for symbolic processing: 0.17233 seconds
Starting numeric solver
===== * * * =================================================================== * * *
TOMLAB - TOMLAB Development license  999007. Valid to 2011-12-31
=====================================================================================
Problem: ---  1: Goddard Rocket                 f_k      -1.025328777109888200
                                       sum(|constr|)      0.000000000007557030
                              f(x_k) + sum(|constr|)     -1.025328777102331200
                                              f(x_0)     -1.025311927405706300

Solver: snopt.  EXIT=0.  INFORM=1.
SNOPT 7.2-5 NLP code
Optimality conditions satisfied

FuncEv    1 ConstrEv   12 ConJacEv   12 Iter    7 MinorIter  554
CPU time: 1.045207 sec. Elapsed time: 0.280000 sec. 


end

t = subs(collocate(t),solution);
v = subs(collocate(vopt),solution);
h = subs(collocate(hopt),solution);
m = subs(collocate(mopt),solution);
T = subs(collocate(Topt),solution);

Plot result

subplot(2,1,1)
plot(t,v,'*-',t,h,'*-',t,m,'*-');
legend('v','h','m');
title('Goddard Rocket state variables');

subplot(2,1,2)
plot(t,T,'+-');
legend('T');
title('Goddard Rocket control');

GoddardRocket 01.png