Большинство оптимизаторов допускают нарушение ваших ограничений вплоть до некоторого допуска. Это на самом деле сводится к тому, сколько нарушений ограничения вы готовы принять. В вашем случае это звучит так, как будто вы хотели бы, чтобы уровень нарушения был очень низким. Таким образом, вы можете изменить
result = prob.solve()
, что дает
-2.2491441767693296e-10
('x_1', array(-2.24914418e-10))
('x_2', array(1.5537159)
до
result = prob.solve(feastol=1e-24)
, что дает
1.139898310650857e-14
('x_1', array(1.13989831e-14))
('x_2', array(1.5537766))
По сравнению с результатом со значением по умолчанию feastol=1e-7
, более низкое значение feastol
вызывает удовлетворительные нарушения ограничений.