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