我在Excel中创建了一个与Solver结合使用的模型。它主要起作用。唯一的问题是Solver并没有真正将被约束为二进制的单元格正确地处理掉。当找到解决方案时,其中一些数字实际上是0.9999996,10000000003,0.0000017,等等。
我在Mac OS X上使用Excel 2004.有什么想法吗?
答案 0 :(得分:11)
如果二进制值远离0或1,则可能必须转到“求解器”窗口中的选项,并检查是否选中“忽略整数约束”框。
答案 1 :(得分:2)
由于计算机的有限精度和优化算法的性质,求解器内置了公差。我会尝试选择“求解器参数”对话框中的“选项”按钮,然后增加精度(例如,默认值为0.000001)至0.00000001)。我不确定这是否有效,但值得一试。
我的公司将商业级解算器连接到Excel,称为What'sBest。如果上述方法不起作用,您可以考虑一下。您可以在www.lindo.com找到更多信息
答案 2 :(得分:2)
如果求解器无法在时间范围内找到解决方案或允许的迭代次数(或者如果没有正确答案),则不会返回二进制答案。
一种可能的解决方法,取决于您要解决的问题类型 以及您需要的答案,是设置几个单元格(可能)在您计算的单元格中具有最小值的那些)与约束<=1
和>=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
如果您将前3个设置为二进制,将后两个设置为<=1
&amp; >=0
,您最终得到:
9 0
9 1
9 1
6 0.333333333
3 0.666666667
最后两行的sumproduct = 4,然后您可以使用它手动将最后两行中的一个设置为1而另一个为0,具体取决于您是否希望答案略低于或高于目标。
答案 3 :(得分:2)
我有类似的问题,可以通过转到求解器选项然后检查&#34;使用自动缩放&#34;来解决它。我不确定这会解决您的问题,但值得一试。
答案 4 :(得分:1)
可能不是您的问题,但请注意,在Excel Solver中默认选中了选项中的Ignore Integer Constraints
复选框。至少在我的Excel 2011 for Mac副本中就是这种情况。
答案 5 :(得分:0)
我遇到了同样的事情,并且取消选中忽略整数约束框为我解决了此问题。