Excel解算器不遵守二进制约束

Excel解算器不遵守二进制约束,excel,solver,Excel,Solver,我在Excel中创建了一个模型,与解算器一起使用。它主要起作用。唯一的问题是,解算器没有真正正确地将受约束的单元作为二进制处理。找到解决方案后,其中一些数字实际上是0.999996、1.0000000003、0.0000017,依此类推 我正在Mac OS X上使用Excel 2004。有什么想法吗?由于计算机的有限精度和优化算法的性质,解算器内置了公差。我会尝试选择“解算器参数”对话框上的“选项”按钮,然后提高精度(从默认值0.000001增加到0.00000001)。我不确定这是否有效,但值

我在Excel中创建了一个模型,与解算器一起使用。它主要起作用。唯一的问题是,解算器没有真正正确地将受约束的单元作为二进制处理。找到解决方案后,其中一些数字实际上是0.999996、1.0000000003、0.0000017,依此类推


我正在Mac OS X上使用Excel 2004。有什么想法吗?

由于计算机的有限精度和优化算法的性质,解算器内置了公差。我会尝试选择“解算器参数”对话框上的“选项”按钮,然后提高精度(从默认值0.000001增加到0.00000001)。我不确定这是否有效,但值得一试


我的公司制作了一个商业级的解算器,名为What'sBest。如果上述不起作用,你可以考虑。您可以在www.lindo.com上找到更多信息。如果二进制值远离0或1,您可能需要转到“解算器”窗口中的“选项”并检查“忽略整数约束”框是否选中。

可能不是您的问题,但请注意,在Excel Solver中默认选中的选项中有一个“忽略整数约束”复选框。至少在我的Excel 2011 for Mac副本中是这样的。

如果解算器无法在允许的时间范围或迭代次数内找到解决方案(或者如果没有正确的答案),它将不会返回二进制答案

一种可能的解决方法是,根据您试图解决的问题的类型以及您需要的答案的精确程度,使用contstraint
=0而不是二进制设置一些单元格(可能是您计算的单元格中具有最小值的单元格)。你提供的图片没有出现,所以我不确定你到底在找什么

(对于未设置为二进制的单元格,使用sumproduct设置单元格可能会有所帮助;请参见下文。)

例如,如果您试图解决总共22个问题(没有解决方案),请从以下开始:

9   1
9   1
9   1
6   1
3   1
如果将第二列中的所有值设置为二进制,则最终将得到:

9   0.5625
9   0.5625
9   0.5625
6   0.708333333
3   0.854166667
9   0
9   1
9   1
6   0.333333333
3   0.666666667
如果将前3个设置为二进制,将最后两个设置为
=0
,则会得到:

9   0.5625
9   0.5625
9   0.5625
6   0.708333333
3   0.854166667
9   0
9   1
9   1
6   0.333333333
3   0.666666667

最后两行的sumproduct=4,您可以使用它手动将最后两行中的一行设置为1,另一行设置为0,具体取决于您想要的答案是否略低于或高于目标值。

我也有类似的问题,可以通过转到解算器选项,然后选中“使用自动缩放”来解决。我不确定这是否能解决您的问题,但值得一试

我遇到了同样的问题,取消选中“忽略整数约束”(Ignore Integer Constraints)框为我解决了这个问题。

实际上,默认精度为5。我将其更改为0,它似乎已经工作了。奇怪的是,如果变量应该是二进制的,那么我就不得不摆弄精度了谢谢!