Я использую целлюлозу (https://pythonhosted.org/PuLP/) для оптимизации и получаю проблему. Мне нужно использовать ограничение типа abs(x) > MIN
, и я нашел здесь решение http://lpsolve.sourceforge.net/5.5/absolute.htm, я просто создаю два ограничения:
x + M * B >= MIN
-x + M * (1 - B) >= MIN
Где B равно 0 или 1, а M достаточно большое значение. Проблема в том, что когда я использую M ~ 10000, все работает отлично, но когда я использую INT_MAX_VALUE или ~ 10000000000, это не работает. Есть ли у кого-нибудь такие проблемы?
B
- это логическая переменная, зачем использовать такое значение, как10000
или100000000000
? - person Holt   schedule 23.05.2016M
следует выбирать как можно меньше (иначе, как вы заметили, вы столкнетесь с серьезными численными проблемами). В вашем случае вы можете рассматриватьM
как привязку кx
, т.е. | x | ‹= M. На практике мы часто знаем хорошую оценку | x |. - person Erwin Kalvelagen   schedule 23.05.2016