Ошибка GAMS: аргументы эндогенной функции не разрешены в линейных моделях

Я пытаюсь решить в GAMS двоичные переменные с помощью MIP, но постоянно получаю сообщение об ошибке. Я не могу понять причину. У кого-нибудь есть решение?

Set i cities /1*7/;
Binary variables z1,z2,z3,z4,z5,z6,z7     1 if selected and 0 otherwise ;
variable y ;
Equations con1,con2,con3,con4,con5,con6,con7,obj ;
obj..  y =E= z1*10+z2*6+z3*7+z4*8+z5*13+z6*9+z7*8;
con1.. min(z2*6.1,z3*15.2,z4*17,z5*16.8,z6*8.4,z7*16.6) =L= 10 ;
con2.. min(z1*6.1,z3*7.6,z4*16.0,z5*11.3,z6*2.2,z7*11.9) =L= 10 ;
con3.. min(z1*15.2,z2*7.6,z4*22.0,z5*17.3,z6*10.2,z7*16.7) =L= 10 ;
con4.. min(z1*17.0,z2*16.0,z3*22.0,z5*12.1,z6*14.8,z7*7.2) =L= 10 ;
con5.. min(z1*16.8,z2*11.3,z3*17.3,z4*12.1,z6*9.4,z7*2.9) =L= 10 ;
con6.. min(z1*8.4,z2*2.2,z3*10.2,z4*14.8,z5*9.4,z7*9.2) =L= 10 ;
con7.. min(z1*16.6,z2*11.9,z3*16.7,z4*7.2,z5*2.9,z6*9.2) =L= 10 ;

Model planmall /all/ ;

Solve planmall using MIP minimizing y;

display z1.L,z2.L,z3.L,z4.L,z5.L,z6.L,z7.L,y.L;

person Shraddha Avasthy    schedule 06.09.2018    source источник
comment
В чем ошибка?   -  person David Hempy    schedule 06.09.2018


Ответы (1)


Если я запустил вашу модель, я увижу это в файле lst:

****  51  Endogenous function argument(s) not allowed in linear models
**** 256  Error(s) in analyzing solve statement. More detail appears
****      Below the solve statement above
**** The following MIP errors were detected in model planmall:
****  51 equation con1.. the function MIN is called with non-constant arguments
...

Итак, проблема в том, что вы пытаетесь решить (линейную) MIP, но вы используете функцию MIN с переменными, что недопустимо для этого типа модели. Итак, один из способов решить эту проблему - изменить тип вашей модели на MINLP следующим образом:

Solve planmall using MINLP minimizing y;

Или вы переформулируете свою модель, чтобы больше не использовать функцию MIN.

person Lutz    schedule 06.09.2018
comment
Это работает для MINLP, но я неправильно формулирую уравнения? - Мне нужно использовать MIP здесь - person Shraddha Avasthy; 06.09.2018
comment
Уравнение не является неправильным, но функция min не является линейной. Но обычно такие уравнения можно сформулировать иначе, чтобы они были линейными. Посмотрите, например, на этот пост: stackoverflow.com/questions/10792139/ - person Lutz; 07.09.2018