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

In summary: Moderator: name removed]In summary, the conversation discusses the use of GAMS software to calculate the optimal route from point A to point B with a constant flow using the trapezoid rule. The individual is facing issues with the results they are obtaining and seeks help in identifying their mistake. Suggestions are given to check the validity of their approach, use simpler methods, and review the initial and final points.
  • #1
Frank Einstein
170
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
  • #2


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.

 

What is GAMS?

GAMS (General Algebraic Modeling System) is a high-level programming language used in operations research to model and solve complex optimization problems.

How can I move a particle from point A to B in GAMS?

To move a particle from point A to B in GAMS, you will need to define the objective function and constraints that represent the movement of the particle. This can be done by using the GAMS modeling language and the appropriate mathematical expressions.

What is the objective function in GAMS?

The objective function in GAMS represents the goal of the optimization problem. It is typically a mathematical expression that needs to be maximized or minimized in order to achieve the desired result, such as minimizing the distance between point A and B in the particle movement problem.

What are constraints in GAMS?

Constraints in GAMS are conditions or limitations that need to be satisfied in order for the solution to be valid. In the particle movement problem, constraints could include limitations on the particle's speed, direction, or any other physical or mathematical restrictions.

How can I ensure an efficient solution in GAMS?

To ensure an efficient solution in GAMS, it is important to properly define the objective function and constraints, as well as choose appropriate solution methods and algorithms. It may also be helpful to use sensitivity analysis to identify any potential areas for improvement in the solution.

Similar threads

  • Programming and Computer Science
Replies
3
Views
1K
Replies
1
Views
1K
  • Programming and Computer Science
Replies
2
Views
1K
  • Programming and Computer Science
Replies
6
Views
1K
  • Programming and Computer Science
Replies
2
Views
2K
  • Programming and Computer Science
Replies
1
Views
945
  • Programming and Computer Science
Replies
17
Views
2K
  • Programming and Computer Science
Replies
4
Views
1K
  • Introductory Physics Homework Help
Replies
2
Views
265
  • Programming and Computer Science
Replies
1
Views
1K
Back
Top