В GAMS как бороться с подразделениями?

В моей модели GAMS у меня есть целевая функция, которая включает деление.

GAMS устанавливает начальные значения на ноль всякий раз, когда что-то решает ... блестящая идея, как это могло когда-нибудь пойти не так! .... подождите, теперь есть деление на ноль.

Как можно с этим справиться? Я попытался вручную установить нижние границы, чтобы избежать деления на ноль, но затем GAMS выплевывает «недопустимое» решение.

Это неверно, поскольку я знаю, что эта модель осуществима. Фактически, удаление члена разделения из моей модели и разрешение действительно дает решение. Это решение должно быть возможным и для исходной проблемы, поскольку мы просто добавляем термины к цели.


person merija    schedule 15.05.2018    source источник


Ответы (2)


Вот несколько распространенных подходов:

  • установить нижнюю границу. Например. Z =E= X/Y, добавить Y.LO = 0.0001;
  • аналогично напишите что-нибудь вроде: Z =E= X/(Y+0.0001)
  • установить начальное значение. Например. Y.L = 1
  • Умножьте обе стороны на Y: Z*Y =E= X

Для любой нелинейной переменной вам действительно следует тщательно подумать о границах и начальных значениях (независимо от деления).

person Erwin Kalvelagen    schedule 15.05.2018
comment
Да, я просто произвольно установил некоторые границы и начальные значения, и это сработало. Спасибо. Тем не менее, я считаю, что подход немного неуклюжий. - person merija; 15.05.2018

Попробуйте использовать знак $. Например: A (i, j) $ C (i, j) = B (i, j) / C (i, j)

person GFA    schedule 15.05.2018