Brachistochrone

Brachistochrone

This problem can be found here.

Packages that will be used

using NLOptControl

Differential Equations

de=[:(x3[j]*sin(u1[j])),:(x3[j]*cos(u1[j])),:(9.81*cos(u1[j]))]

Define and Configure the Problem:

n=define!(de;numStates=3,numControls=1,X0=[0.0,0.0,0.0],XF=[2.,2.,NaN],XL=[-NaN,-NaN,-NaN],XU=[NaN,NaN,NaN],CL=[-NaN],CU=[NaN]);
configure!(n;(:Nck=>[100]),(:finalTimeDV=>true));

Additional Information

names=[:x,:y,:v]; descriptions=["x(t)","y(t)","v(t)"];
stateNames!(n,names,descriptions);
names=[:u]; descriptions=["u(t)"];
controlNames!(n,names,descriptions);

Objective Function

obj=integrate!(n,n.r.u[:,1];C=0.5,(:variable=>:control),(:integrand=>:squared));
@NLobjective(n.mdl,Min,n.tf);

Optimize

optimize!(n);

Post Process

using PrettyPlots
allPlots(n)
0.00 0.25 0.50 0.75 0 1 2 time (s) x(t) mpc 0.00 0.25 0.50 0.75 0 1 2 time (s) y(t) mpc 0.00 0.25 0.50 0.75 0.0 2.5 5.0 time (s) v(t) mpc 0.00 0.25 0.50 0.75 0.0 0.5 1.0 time (s) u(t) mpc