Moving a particle from point A to B on a efficient way in GAMS

Frank Einstein

Hello everyone. I am triyng to calculate the route which takes less time to go from point A to point B in the presence of a constant flow (I. E. a simple version of Zermelo's navigation problem) using the GAMS software. However, if I put both points on a straight line and make the constant flow equal to zero, I don't get the results that I should.

Here it is my code: [Moderator: code tags added]
Code:
$set n 10 set j /0*%n%/; sets jlast(j) jnotlast(j); jlast(j)$(ord(j)=card(j))=yes;
jnotlast(j)=not jlast(j);
scalar

v aeroplane velocity /10/

u wind velocity in the x axis /0/

n number of intervals /%n%/

density density /1.225/
variable
gamma(j),
x(j),
y(j),
time,
objective;

positive variable
t(j)

step;

equation
diffx(j),
diffy(j),
obj;

* diffx[j]$(jnotlast(j)).. x[j+1]-x[j] =e=0.5*(t(j+1)-t(j))*(v*cos(gamma(j+1)) + v*cos(gamma(j)) ); * diffy[j]$(jnotlast(j)).. y[j+1]-y[j] =e=0.5*(t(j+1)-t(j))*(v*sin(gamma(j+1)) +  v*sin(gamma(j))   );

diffx[j]$(jnotlast(j)).. x[j+1]-x[j] =e=0.5*step*(v*cos(gamma(j+1))-u + v*cos(gamma(j))-u ); diffy[j]$(jnotlast(j)).. y[j+1]-y[j] =e=0.5*step*(v*sin(gamma(j+1)) +  v*sin(gamma(j))   );

obj.. time =e= n*step;

x.fx('0') = 1.0e-12;
x.fx('%n%') = 1.0e-12;
y.fx('0') = 1.0e-12;
y.fx('%n%') = 10;
t.fx('0')= 1.0e-12;

y.up(j) = 10;
y.lo(j) = 1.0e-12;
t.lo(j)=1.0e-12;
gamma.up(j)=pi;
gamma.lo(j)=0;

model brahstron1 /all/;

option
nlp=ipopt;
solve brahstron1 using nlp minimize time;
In this code I have defined two diferential equations, for x'=dx/dt and y'=dy/dt using the trapezoid rule. Here, gamma is our control variable and that's why it's free. Step is the difference between the times j and j+1, that is why time is n (number of intervals)*step(size of interval) and is what I seek to reduce.

Below this one can find the restrictions, these include the initial and final points for x and y, also the initial t=0.

I would spect as a result that the angle gamma became pi/2 and y going between 0 and 10, however, I find weird results, as Y being 5 on all the steps.

I have looked at this code for a while and I cannot find where my mistake is.

Can somebody please tell me what am I doing wrong?
Thank you very much for reading.

Last edited by a moderator:
Related Programming and Computer Science News on Phys.org

PF_Help_Bot

Thanks for the thread! This is an automated courtesy bump. Sorry you aren't generating responses at the moment. Do you have any further information, come to any new conclusions or is it possible to reword the post? The more details the better.

"Moving a particle from point A to B on a efficient way in GAMS"

Physics Forums Values

We Value Quality
• Topics based on mainstream science
• Proper English grammar and spelling
We Value Civility
• Positive and compassionate attitudes
• Patience while debating
We Value Productivity
• Disciplined to remain on-topic
• Recognition of own weaknesses
• Solo and co-op problem solving