расстановка приоритетов переменных в целочисленной линейной программе - PullRequest
0 голосов
/ 31 мая 2018

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

Min x1+x2+x3+x4+5*x5+6*x6
subject to
x1+x2+x3+x4+x5+x6>=2
xi is {0,1}

Решение ясно, две произвольные переменные

xj (j in{1,2,3,4}) should be 1.

Теперь рассмотрим, что у меня есть функция приоритета, которая должна быть одновременно развернута, как эта:

1*x1+2*x2+3*x3+4*x4+5*x5+6*x6.

При этом решение является уникальным:

x3=x4=1

Как я могу навязать этот приоритет моему LP через ограничения (а не целевую функцию)?

1 Ответ

0 голосов
/ 31 мая 2018

Это, по сути, многоцелевая проблема.Стандартный метод:

Шаг 1: Решить

Min z = x1+x2+x3+x4+5*x5+6*x6
x1+x2+x3+x4+x5+x6>=2
x in {0,1}

Пусть z * будет оптимальной целью.

Шаг 2: Теперь решите

min 1*x1+2*x2+3*x3+4*x4+5*x5+6*x6
x1+x2+x3+x4+5*x5+6*x6 = z*
x1+x2+x3+x4+x5+x6>=2
x in {0,1}
...