in my MIP program, I want to use an equation that looks like
cannotequal .. x('1','2')$(x('3','2')>0) =e= 0;
saying if x(3,2) is greater than zero, then x(1,2) will equal zero. However, this causes an error "Endogenous relational operations require model type "dnlp" ." What can I do to fix this? Thank you!
dollar condition in MIP
Re: dollar condition in MIP
Optimization problems are not solved sequentially as your normal code. Therefore, the condition you are trying to impose is not acceptable. This is not a GAMS problem, but in general, no optimization model allows this (you can see it as if your equation block changes based on some condition, the solver cannot identify/solve it).
You should read about big-M constraints to formulate such constraints. For convenience, let's call x('1', '2') as x and x('3','2') as y
Are these variables binary? do you imply also the opposite? if x is 1 then y is 0? If yes, you can write x + y =l= 1;
If not, you can declare a binary variable b that is 1 if y is greater than 0
y=l= Mb;
where M is a big constant (not too big). you can then use b to control x
x =l= M(1-b);
Hope this helps.
- Atharv
You should read about big-M constraints to formulate such constraints. For convenience, let's call x('1', '2') as x and x('3','2') as y
Are these variables binary? do you imply also the opposite? if x is 1 then y is 0? If yes, you can write x + y =l= 1;
If not, you can declare a binary variable b that is 1 if y is greater than 0
y=l= Mb;
where M is a big constant (not too big). you can then use b to control x
x =l= M(1-b);
Hope this helps.
- Atharv