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

Click For Summary
SUMMARY

The forum discussion focuses on optimizing the route from point A to point B using GAMS software, specifically addressing a simplified version of Zermelo's navigation problem. The user encounters unexpected results when implementing differential equations for position and time using the trapezoid rule. Key recommendations include verifying the differential equations, exploring GAMS solver options for constrained optimization, and double-checking the initial and final conditions for the variables involved.

PREREQUISITES
  • Understanding of GAMS software and its syntax
  • Familiarity with differential equations and numerical methods, specifically the trapezoid rule
  • Knowledge of optimization techniques and constrained optimization problems
  • Basic principles of navigation problems, particularly Zermelo's navigation problem
NEXT STEPS
  • Review GAMS solver options for constrained optimization problems
  • Investigate the mathematical validity of differential equations used in the GAMS model
  • Learn about debugging techniques in GAMS to identify errors in code
  • Explore community resources or forums for GAMS to seek additional support and insights
USEFUL FOR

Researchers, engineers, and students working on optimization problems, particularly those using GAMS for navigation and trajectory calculations.

Frank Einstein
Messages
166
Reaction score
1
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:
Technology news on Phys.org


Hello,

Thank you for sharing your code and explaining your approach. From my understanding, you are trying to use the trapezoid rule to solve for the optimal angle (gamma) that minimizes the time it takes to go from point A to point B with a constant flow (wind velocity) in the x-axis.

Firstly, I would suggest checking the validity of your differential equations and the use of the trapezoid rule in this context. It's possible that your results are not what you expect because of a mathematical error.

Secondly, I would recommend using a simpler approach to solve this problem. Since you are using GAMS software, I would suggest looking into the GAMS solver options and trying to solve this as a constrained optimization problem. This will allow you to specify your objective function (minimize time) and your constraints (initial and final points for x and y, and initial time t=0) more explicitly.

Lastly, I would also recommend checking your initial and final points for x and y. It's possible that there is an error in the values you have specified, which is causing your results to be unexpected.

I hope this helps and good luck with your calculations. If you are still having trouble, I would suggest seeking help from a colleague or reaching out to the GAMS community for support.

 

Similar threads

  • · Replies 3 ·
Replies
3
Views
2K
Replies
1
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 17 ·
Replies
17
Views
3K
Replies
2
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
Replies
1
Views
2K
  • · Replies 5 ·
Replies
5
Views
4K