Найдите разницу между верхней и нижней границами

У меня есть модель MIP с именем «MyModel», я тоже использовал эти команды (перед оператором решения).

 file opts cplex option file/ cplex.opt /;

 MyModel.Optfile =1;
 putclose opts /'epgap=0' /'epagap=0';

после решения с помощью CPLEX модель состояния была 8 (ЦЕЛОЕ РЕШЕНИЕ: найдено возможное решение проблемы с дискретными переменными).

Как я могу получить разницу между верхней и нижней границами для этого возможного решения? Другими словами, я хочу получить разрыв.

Спасибо


person Richard    schedule 25.10.2018    source источник


Ответы (1)


Вы можете увидеть это в вашем lst файле и в журнале. В обоих случаях вы должны найти что-то вроде этого:

Solution satisfies tolerances.

MIP Solution:           21.000000    (4720 iterations, 100 nodes)
Final Solve:            21.000000    (0 iterations)

Best possible:          23.000000
Absolute gap:            2.000000
Relative gap:            0.086957

В файле lst это должно быть сразу после «S O L V E S U M M A R Y», а в журнале вы можете увидеть его в конце вывода Cplex.

Изменить: вы также можете рассчитать его внутри своей модели следующим образом:

Scalar gap;
gap = abs(MyModel.objEst - MyModel.objVal);
Display gap;
person Lutz    schedule 25.10.2018
comment
Привет, @lutz, спасибо! Я видел эту страницу support.gams.com/solver:what_is_optca_optcr несколько минут назад. Вы знаете, когда мы используем optcr_cp? Что означает формулировка optcr_cp? - person Richard; 25.10.2018
comment
Я только что посмотрел на эту страницу: в этом примере она используется, чтобы показать, что GAMS и Cplex используют разные формулы для вычисления относительного разрыва: optcr_cp вычисляется таким же образом, Cplex делает это, а optcr вычисляется таким образом, GAMS делает Это. Это также описано здесь: gams.com/latest/docs/S_CPLEX.html# CPLEX_GAMS_OPTIONS (прокрутите немного вниз и найдите ModelName.OptCR) - person Lutz; 25.10.2018
comment
Да! Большое спасибо! - person Richard; 25.10.2018