How to find the set elements that verify a condition

Problems with syntax of GAMS
Post Reply
Lenilein78
User
User
Posts: 9
Joined: 6 years ago
Location: Stuttgart, Germany

How to find the set elements that verify a condition

Post by Lenilein78 »

Dear All,

In my GAMS code, I have written two equations with which I am calculating the total costs of a energy system [variable TC on the domain j (fuel type) and i (technology)] and TCmin which allows me to determine the cheapest of the different configurations:

TotCost(i,j).. TC(i,j) =e=Eg(i)*C(i)+coi(i,'IC')+coj(j,'P')*V(i,j) ;
MinTotcost.. TCmin=e=smin((i,j),TC(i,j));

So far so good.

But to be totally happy with my code, I would like it to return not only the price of the cheapest configuration but also the details of that configuration: the corresponding set elements i and j .
As set elements are stored as string data type, I don't know how I possibly could get GAMS to give me a specific (i;j) subset as output data.

Any suggestion?

Thank you :)
cladelpino
User
User
Posts: 108
Joined: 7 years ago

Re: How to find the set elements that verify a condition

Post by cladelpino »

Hi Lenilein,

Is TC(i,j) a parameter (fixed in an instance of a solve) or a variable ? I get from your question that you intend to use it as a variable. Be aware that if it is a variable in your model, the smin() operator would require a DNLP solver (http://old.gams.com/latest/docs/usergui ... __smax.htm).

If you manage to do this either by defining the model to be DNLP or through a reformulation, you can use this code to store the (i,j) pair in a set (an option among many). This also assumes TC (and therefore TCmin are "variables").

set whichIsMin(*,*);

whichIsMin(i,j)=YES$(TC.l(i,j)=TCmin.l);

If they are in fact parameters, you don't need to use equations for their definition.

Good luck
Lenilein78
User
User
Posts: 9
Joined: 6 years ago
Location: Stuttgart, Germany

Re: How to find the set elements that verify a condition

Post by Lenilein78 »

Hi cladelpino,

Excellent, it worked!! :)
TC(i,j) and TCmin are indeed both variables in my model.

Thanks a lot for your help!
Post Reply