PROPT Flow in a Channel: Difference between revisions

From TomWiki
Jump to navigationJump to search
(Created page with "{{Part Of Manual|title=the PROPT Manual|link=PROPT Manual}} Benchmarking Optimization Software with COPS Elizabeth D. Dolan and Jorge J. More ARGONNE NATIONAL LABOR...")
 
No edit summary
Line 1: Line 1:
{{Part Of Manual|title=the PROPT Manual|link=[[PROPT |PROPT Manual]]}}
{{Part Of Manual|title=the PROPT Manual|link=[[PROPT|PROPT Manual]]}}


Benchmarking Optimization Software with COPS Elizabeth D. Dolan and Jorge J. More ARGONNE NATIONAL LABORATORY
Benchmarking Optimization Software with COPS Elizabeth D. Dolan and Jorge J. More ARGONNE NATIONAL LABORATORY
Line 108: Line 108:
title('Flow in a Channel state variables');
title('Flow in a Channel state variables');
</source>
</source>
[[File:channelFlow_01.png]]

Revision as of 14:22, 2 November 2011

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; 1 ] to minimize

subject to:

After some transformation we get this problem:

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

Problem setup

toms t
p = tomPhase('p', t, 0, 1, 30);
setPhase(p);

tomStates x1 x2 x3 x4

x0 = icollocate({x1 == 3*t.^2 - 2*t.^3
    x2 == 2*t - 6*t.^2
    x3 == t - 12*t
    x4 == -12});

% Boundary constraints
cbnd = {initial({x1 == 0; x2 == 0})
    final({x1 == 1; x2 == 0})};

% Various constants and expressions
R = 10;

% ODEs and path constraints
ceq = collocate({dot(x1) == x2
    dot(x2) == x3; dot(x3) == x4
    dot(x4) == R*(x2.*x3-x1.*x4)});

% Objective
objective = 1; %(feasibility problem)

Solve the problem

options = struct;
options.name = 'Flow in a Channel Steering';
solution = ezsolve(objective, {cbnd, ceq}, x0, options);

% Extract optimal states and controls from solution
t  = subs(collocate(t),solution);
x1 = subs(collocate(x1),solution);
x2 = subs(collocate(x2),solution);
x3 = subs(collocate(x3),solution);
x4 = subs(collocate(x4),solution);
Problem type appears to be: lpcon
Time for symbolic processing: 0.103 seconds
Starting numeric solver
===== * * * =================================================================== * * *
TOMLAB - TOMLAB Development license  999007. Valid to 2011-12-31
=====================================================================================
Problem: ---  1: Flow in a Channel Steering     f_k       1.000000000000000000
                                       sum(|constr|)      0.000000000018584877
                              f(x_k) + sum(|constr|)      1.000000000018584900
                                              f(x_0)      0.000000000000000000

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

FuncEv    1 ConstrEv   11 ConJacEv   11 Iter    9 MinorIter   91
CPU time: 0.031200 sec. Elapsed time: 0.031000 sec. 

Plot result

figure(1)
plot(t,x2,'*-');
legend('x2');
title('Flow in a Channel state variables');

ChannelFlow 01.png