PROPT Goddard Rocket, Maximum Ascent, Final time fixed, Singular solution: Difference between revisions
From TomWiki
Jump to navigationJump to search
No edit summary |
|||
(One intermediate revision by one other user not shown) | |||
Line 89: | Line 89: | ||
<pre> | <pre> | ||
Problem type appears to be: lpcon | Problem type appears to be: lpcon | ||
Time for symbolic processing: 0. | Time for symbolic processing: 0.12794 seconds | ||
Starting numeric solver | Starting numeric solver | ||
===== * * * =================================================================== * * * | ===== * * * =================================================================== * * * | ||
TOMLAB - TOMLAB Development license 999007. Valid to 2011-12-31 | TOMLAB - TOMLAB Development license 999007. Valid to 2011-12-31 | ||
===================================================================================== | ===================================================================================== | ||
Problem: --- 1: Goddard Rocket - Trial | Problem: --- 1: Goddard Rocket - Trial 11 f_k -108076.040001956850000000 | ||
sum(|constr|) 0. | sum(|constr|) 0.000047359539114820 | ||
f(x_k) + sum(|constr|)-108076. | f(x_k) + sum(|constr|)-108076.039954597310000000 | ||
Solver: multiMin with local solver snopt. EXIT=0. INFORM=0. | Solver: multiMin with local solver snopt. EXIT=0. INFORM=0. | ||
Find local optima using multistart local search | Find local optima using multistart local search | ||
Did 20 local tries. Found 1 global, 1 minima. TotFuncEv 20. TotConstrEv | Did 20 local tries. Found 1 global, 1 minima. TotFuncEv 20. TotConstrEv 3120 | ||
FuncEv 20 ConstrEv | FuncEv 20 ConstrEv 3120 ConJacEv 35 Iter 1429 | ||
CPU time: 2. | CPU time: 2.199614 sec. Elapsed time: 2.181000 sec. | ||
</pre> | </pre> | ||
Line 109: | Line 109: | ||
<pre> | <pre> | ||
Problem type appears to be: lpcon | Problem type appears to be: lpcon | ||
Time for symbolic processing: 0. | Time for symbolic processing: 0.12647 seconds | ||
Starting numeric solver | Starting numeric solver | ||
===== * * * =================================================================== * * * | ===== * * * =================================================================== * * * | ||
TOMLAB - TOMLAB Development license 999007. Valid to 2011-12-31 | TOMLAB - TOMLAB Development license 999007. Valid to 2011-12-31 | ||
===================================================================================== | ===================================================================================== | ||
Problem: --- 1: Goddard Rocket f_k -108220. | Problem: --- 1: Goddard Rocket f_k -108220.931727365110000000 | ||
sum(|constr|) 0. | sum(|constr|) 0.000379507699263397 | ||
f(x_k) + sum(|constr|)-108220. | f(x_k) + sum(|constr|)-108220.931347857400000000 | ||
f(x_0)-108076. | f(x_0)-108076.040001956280000000 | ||
Solver: snopt. EXIT=0. INFORM=1. | Solver: snopt. EXIT=0. INFORM=1. | ||
Line 123: | Line 123: | ||
Optimality conditions satisfied | Optimality conditions satisfied | ||
FuncEv 1 ConstrEv 20 ConJacEv 20 Iter 19 MinorIter | FuncEv 1 ConstrEv 20 ConJacEv 20 Iter 19 MinorIter 536 | ||
CPU time: 0. | CPU time: 0.078001 sec. Elapsed time: 0.072000 sec. | ||
</pre> | </pre> | ||
Line 130: | Line 130: | ||
<pre> | <pre> | ||
Problem type appears to be: lpcon | Problem type appears to be: lpcon | ||
Time for symbolic processing: 0. | Time for symbolic processing: 0.12744 seconds | ||
Starting numeric solver | Starting numeric solver | ||
===== * * * =================================================================== * * * | ===== * * * =================================================================== * * * | ||
TOMLAB - TOMLAB Development license 999007. Valid to 2011-12-31 | TOMLAB - TOMLAB Development license 999007. Valid to 2011-12-31 | ||
===================================================================================== | ===================================================================================== | ||
Problem: --- 1: Goddard Rocket f_k -108245. | Problem: --- 1: Goddard Rocket f_k -108245.171657268930000000 | ||
sum(|constr|) 0. | sum(|constr|) 0.000109411007603940 | ||
f(x_k) + sum(|constr|)-108245. | f(x_k) + sum(|constr|)-108245.171547857930000000 | ||
f(x_0)-108220. | f(x_0)-108220.931727364890000000 | ||
Solver: snopt. EXIT=0. INFORM=1. | Solver: snopt. EXIT=0. INFORM=1. | ||
Line 144: | Line 144: | ||
Optimality conditions satisfied | Optimality conditions satisfied | ||
FuncEv 1 ConstrEv 31 ConJacEv 31 Iter | FuncEv 1 ConstrEv 31 ConJacEv 31 Iter 25 MinorIter 1128 | ||
CPU time: 0. | CPU time: 0.280802 sec. Elapsed time: 0.272000 sec. | ||
</pre> | </pre> | ||
Line 175: | Line 175: | ||
[[File:goddardSingular2_01.png]] | [[File:goddardSingular2_01.png]] | ||
[[Category:PROPT Examples]] |
Latest revision as of 05:04, 14 February 2012
This page is part of the PROPT Manual. See PROPT Manual. |
Example 7.2 (ii) from the paper: H. Maurer, "Numerical solution of singular control problems using multiple shooting techniques", Journal of Optimization Theory and Applications, Vol. 18, No. 2, 1976, pp. 235-257
Remark: You can vary the fixed final time t_f to obtain Fig. 8 in the paper
L.G. van Willigenburg, W.L. de Koning
Copyright (c) 2007-2009 by Tomlab Optimization Inc.
Problem setup
toms t
% Parameters
aalpha = 0.01227; bbeta = 0.145e-3; c = 2060; g0 = 9.81;
r0 = 6.371e6; r02=r0*r0; m0 = 214.839; mf = 67.9833; Fm = 9.525515;
t_f = 100; %Paper value 206.661;
Solve the problem, using a successively larger number of collocation points
nvec = [20 40 60];
for i=1:length(nvec);
n = nvec(i);
p = tomPhase('p', t, 0, t_f, n);
setPhase(p);
tomStates h v m
tomControls F
% Initial guess
if i==1
x0 = {icollocate({v == 10*t; h == 10*t^2
m == m0+(t/t_f)*(mf-m0)})
collocate(F == Fm)};
else
x0 = {icollocate({v == vopt; h == hopt
m == mopt})
collocate(F == Fopt)};
end
% Box constraints
cbox = {icollocate({0 <= v; 0 <= h
mf <= m <= m0
0 <= F <= Fm})};
% Boundary constraints
cbnd = {initial({v == 0; h == 0; m == m0})
final({m == mf})};
D = aalpha*v.^2.*exp(-bbeta*h);
g = g0; % or g0*r02./(r0+h).^2;
% ODEs and path constraints
ceq = collocate({dot(h) == v
m*dot(v) == F*c-D-g*m
dot(m) == -F});
% Objective
objective = -final(h);
Solve the problem
options = struct;
options.name = 'Goddard Rocket';
if i==1
options.solver = 'multiMin';
options.xInit = 20;
end
%options.scale = 'auto'
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);
Fopt = subs(F, solution);
Problem type appears to be: lpcon Time for symbolic processing: 0.12794 seconds Starting numeric solver ===== * * * =================================================================== * * * TOMLAB - TOMLAB Development license 999007. Valid to 2011-12-31 ===================================================================================== Problem: --- 1: Goddard Rocket - Trial 11 f_k -108076.040001956850000000 sum(|constr|) 0.000047359539114820 f(x_k) + sum(|constr|)-108076.039954597310000000 Solver: multiMin with local solver snopt. EXIT=0. INFORM=0. Find local optima using multistart local search Did 20 local tries. Found 1 global, 1 minima. TotFuncEv 20. TotConstrEv 3120 FuncEv 20 ConstrEv 3120 ConJacEv 35 Iter 1429 CPU time: 2.199614 sec. Elapsed time: 2.181000 sec.
Problem type appears to be: lpcon Time for symbolic processing: 0.12647 seconds Starting numeric solver ===== * * * =================================================================== * * * TOMLAB - TOMLAB Development license 999007. Valid to 2011-12-31 ===================================================================================== Problem: --- 1: Goddard Rocket f_k -108220.931727365110000000 sum(|constr|) 0.000379507699263397 f(x_k) + sum(|constr|)-108220.931347857400000000 f(x_0)-108076.040001956280000000 Solver: snopt. EXIT=0. INFORM=1. SNOPT 7.2-5 NLP code Optimality conditions satisfied FuncEv 1 ConstrEv 20 ConJacEv 20 Iter 19 MinorIter 536 CPU time: 0.078001 sec. Elapsed time: 0.072000 sec.
Problem type appears to be: lpcon Time for symbolic processing: 0.12744 seconds Starting numeric solver ===== * * * =================================================================== * * * TOMLAB - TOMLAB Development license 999007. Valid to 2011-12-31 ===================================================================================== Problem: --- 1: Goddard Rocket f_k -108245.171657268930000000 sum(|constr|) 0.000109411007603940 f(x_k) + sum(|constr|)-108245.171547857930000000 f(x_0)-108220.931727364890000000 Solver: snopt. EXIT=0. INFORM=1. SNOPT 7.2-5 NLP code Optimality conditions satisfied FuncEv 1 ConstrEv 31 ConJacEv 31 Iter 25 MinorIter 1128 CPU time: 0.280802 sec. Elapsed time: 0.272000 sec.
end
t = subs(collocate(t),solution);
v = subs(collocate(vopt),solution);
h = subs(collocate(hopt),solution);
m = subs(collocate(mopt),solution);
F = subs(collocate(Fopt),solution);
Plot result
subplot(2,1,1)
plot(t,v/1e3,'*-',t,h/1e5,'*-',t,m/1e2,'*-');
legend('v','h','m');
title('Goddard Rocket state variables');
subplot(2,1,2)
plot(t,F,'+-');
legend('F');
title('Goddard Rocket control');