Python PuLP: храните переменные относительно друг друга - PullRequest
1 голос
/ 27 апреля 2020

Я хочу минимизировать x1 + x2 + x3 с PuLP, который уже отлично работает. Однако результат часто состоит из одного из трех, равного нулю, и двух других, используемых алгоритмом. Есть ли способ сохранить их относительно друг друга? Все три имеют одинаковую стоимость.

Например, вместо PuLP, решающего уравнение с 4 + 0 + 5, оно должно быть примерно 3 + 3 + 3. Это возможно?

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Был в состоянии достичь того, что я хотел, с помощью цикла вычислений и увеличения порога для переменных:

x <= threshhold
y <= threshhold
z <= threshhold

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

0 голосов
/ 28 апреля 2020

Характер симплексного алгоритма всегда найдет крайние точечные решения, т.е.

max x+y+z

x+y+z <=1

x,y,z >= 0

Возвращенные решения всегда будут

x=1 y=0 z=0 

или

x=0, y=1, z=0 

или

x=0, y=0, z=1

При линейной формулировке на самом деле трудно навязать решение внутренней точки

x=1/3, y=1/3, z=1/3

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

...