Matlab: целочисленная линейная программа с ненулевым ограничением - PullRequest
0 голосов
/ 01 ноября 2019

Итак, мне нужно решить следующую проблему:

problem

Я хочу знать, как решить эту проблему с помощью Matlab's intlinprog. Если бы у меня было "меньше или равно" вместо "не равно" , это было бы тривиально решить.

Есть предложения?

1 Ответ

1 голос
/ 02 ноября 2019

Ограничение

Ax <= 0

тривиально. Однако ограничение

Ax <> 0

не так просто. Мы можем переписать это как

y = Ax
y(i) >= 0.0001
or
y(i) <= -0.0001

. Эта формулировка сразу показывает, что эта проблема стала невыпуклой. Нам могут понадобиться бинарные переменные, чтобы помочь нам. Например:

y = Ax
y(i) >= 0.0001 - 1000*b(i)
y(i) <= -0.0001 + 1000*(1-b(i))
b(i) in {0,1}

Здесь я предполагаю, что -1000 <= Ax <= 1000.

...