Изначально я думал, что вы пытаетесь решить какую-то проблему minmax()
, потому что вы заявили, что хотите решить
minimize(max(sum(var01,Var11,Var21),sum(var02,Var12,Var22), etc...))
в комментариях,Однако дальнейшее выявление требований дало понять, что это не может быть экземпляром minmax()
, поэтому я отказался от этой идеи и больше не думал об этом.
Теперь, вы самирешение является скрытым примером maxmin()
.Я не уверен, действительно ли это решает вашу первоначальную проблему.Однако, если это так, то я бы посоветовал вам использовать следующую кодировку вместо ite
решения [ссылки: tacas15 , tacas15_extended ].
![enter image description here](https://i.stack.imgur.com/46eEJ.png)
(примечание: cost
должна быть новой переменной того же типа, что и cost_i
, которая объявлена дляцель достижения цели maxmin()
. Все остальные cost_i
понижены от цели к простому термину)
Я считаю, что у этого подхода есть некоторые шансы на успех лучше, чем у другого.
РЕДАКТИРОВАТЬ: пример исходного кода с a = 0
:
goal = Real("cost")
for y in zip(*time):
s.add(sum(y) <= goal)
result = s.minimize(goal)
Если вы хотите повторить случай, в котором a = 50
:
goal = Real("cost")
for y in zip(*time):
s.add(sum(y) <= goal)
s.add(50 <= goal)
result = s.minimize(goal)