Tunel for Other Solvers
To start this tutorial, write the following command in the MATLAB console
open T044_TunelSolvers
Tunel Solver Neos Server AMPL - IPOPT
Definition of the time %% Discretization of the space
N = 10;
L = 1;
xi = 0; xf = L;
xline = linspace(0,L,N+2);
xline = xline(2:end-1);
dx = xline(2) - xline(1);
Y = SymsVector('y',N);
U = SymsVector('u',1);
Diffusion part: the discretization of the 1d Laplacian
A = FDLaplacian(xline);
B = (N^2/L^2)*[1 ; zeros(N-2,1) ;1];
Fsym = A*Y + B*U;
syms t
Fsym_fh = matlabFunction(Fsym,'Vars',{t,Y,U,sym.empty});
Setting of equation
odeEqn = pde(Fsym_fh,Y,U);
odeEqn.InitialCondition = 0.99+0*xline';
odeEqn.Nt=20;
odeEqn.FinalTime = 2;
odeEqn.mesh{1} = xline;
We create the object that collects the formulation of an optimal control problem by means of the object that describes the dynamics odeEqn, the functional to minimize Jfun and the time horizon T
YT = 0.2 + 0*xline';
symPsi = @(T,Y) (YT - Y).'*(YT - Y);
symL = @(t,Y,U) 0 ;
%% Create the pontryagin object
iCP1 = Pontryagin(odeEqn,symPsi,symL);
%% Define some constraints
iCP1.Constraints.MaxControl = 1;
iCP1.Constraints.MinControl = 0;
Create a AMPL File from ICP1 object
AMPLFile(iCP1,'Domenec.txt')
Send job of Neos Server
out = SendNeosServer('Domenec.txt');
Output in: /home/djoroya/Documentos/GitHub/DyCon-toolbox/tmp/AMPL-executions/27-Sep-2019-10-47-421076-054850-Domenec.txt/Domenec.txt.out
Load Data
data = NeosLoadData(out);
figure;
surf(data.State)