【发布时间】:2016-05-23 09:11:38
【问题描述】:
我正在使用纸浆 (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之类的值? -
M应该选择尽可能小(否则你会遇到严重的数字问题,正如你所注意到的)。在您的情况下,您可以将M视为x的界限,即|x|
标签: python mathematical-optimization linear-programming integer-programming pulp