Как добавить целочисленное сокращение к ограничениям MILP, чтобы найти альтернативные оптимальные решения? - PullRequest
0 голосов
/ 02 июля 2018

Я решаю оптимизацию MILP с помощью двоичных переменных в MATLAB, в которой я хочу найти более одного оптимального решения, исключив предыдущие решения. Поэтому я знаю, что должен включить следующее целочисленное сокращение как ограничение в моей модели:

sum {y_j: y'_j = 1} + sum {(1-y_j): y'_j = 0} <= M - 1 </p>

Где y_j - мой вектор двоичных переменных. M - общее количество двоичных переменных (j циклов от 1 до M), а y'_j - значение моей двоичной переменной в предыдущем решении.

В структуре MILP ограничения включаются через матрицу A в форме: A * x <= b, где x - вектор двоичных переменных и b RHS известных коэффициентов. </p>

Тогда моя проблема в том, что я не могу "перевести" ограничение, подобное приведенному выше, в этот формат MILP.

Большое спасибо за помощь,

Jorge

1 Ответ

0 голосов
/ 02 июля 2018
  1. Создать строку со всеми нулями
  2. Если y * [j] = 1 (оптимальное значение y [j]), поместите 1,0 в столбец, соответствующий y [j]
  3. если y * [j] = 0, поставить -1,0 в соответствующем столбце
  4. Установите число прав на число y * [j] = 1 минус один.
...