2016-12-20 2 views
0

Как видно из названия упомянутоголи уравнение ниже означает в MIP моделях

sum((r,l), Mer.l(e,r) * Mel(e,l)) =e= 0;

Я использую модель ГАМСА мипа, чтобы решить проблему, и Меры (е, г) и Мел (е, л) являются и двоичными переменными, и если бы я не записывал суффикс .l, компилятор выдаст сообщение об ошибке Endogenous relational operations require model type "dnlp"", но я не уверен, что вышеприведенное уравнение остается прежним значением, которое является переменной Mer (e, r) по-прежнему переменной? и может ли он быть изменен с помощью процесса решения mip?

+0

Вы почти никогда не использовать .l в уравнении. Либо переменная является эндогенной, либо она должна быть исправлена ​​до решения. Можете ли вы показать минимальный рабочий пример для воспроизведения ошибки? –

ответ

1

Если вы используете Mer.l, модель не будет использовать Mer в качестве переменной, которая будет оптимизирована больше, но будет использовать (начальные) уровни переменных Mer как постоянные числа. Но вы можете реформировать свое уравнение, чтобы оно оставалось линейным. Насколько я понимаю, вы хотите убедиться, что для каждого e и каждой комбинации r и l вы никогда не получите Mer = 1 и Mel = 1 (один может быть 1 или оба должны быть 0). Таким образом, можно сформулировать как например .:

equation e(e,r,l); 
e(e,r,l).. Mer(e,r) + Mel(e,l) =l= 1; 

Я надеюсь, что помогает, Lutz

+0

это работает, но это быстро увеличивает число уравнений с ростом r и l, будет ли оно влиять на время решения модели? – Patrick

+0

Да, это может случиться. Но даже если он работает немного дольше, он делает хотя бы то, что вы хотите. – Lutz

+0

да, но у меня еще несколько уравнений нелинейны, и они кажутся не так легко переформулировать. есть ли какая-либо другая модель, которая не позволяет части линейных уравнений и других? – Patrick

Смежные вопросы