4

我在 Excel 中创建了一个模型以与 Solver 结合使用。它主要工作。唯一的问题是 Solver 并没有真正将受约束的单元格正确地处理为二进制。找到解决方案后,其中一些数字实际上是 0.9999996、1.0000000003、0.0000017 等等。

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

4

6 回答 6

12

如果二进制值远离 0 或 1,您可能必须转到 Solver 窗口中的选项并检查是否选中了“忽略整数约束”框。

于 2011-02-01T00:00:00.803 回答
2

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

我的公司制造了一个与 Excel 挂钩的商业级求解器,名为 What'sBest。如果上述方法不起作用,您可以考虑。您可以在 www.lindo.com 找到更多信息

于 2009-08-25T15:27:48.920 回答
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& >=0,您最终会得到:

9   0
9   1
9   1
6   0.333333333
3   0.666666667

最后两行的 sumproduct = 4,然后您可以使用它手动将最后两行之一设置为 1,另一个设置为 0,具体取决于您是否希望得到略低于或高于目标的答案。

于 2012-08-10T17:11:28.690 回答
2

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

于 2012-11-19T14:27:52.093 回答
1

可能不是您的问题,但请注意Ignore Integer Constraints选项中有一个复选框,在 Excel 求解器中默认选中该复选框。至少在我的 Excel 2011 for Mac 副本中是这种情况。

于 2012-02-10T18:08:35.297 回答
0

我遇到了同样的事情,取消选中Ignore Integer Constraints框为我解决了这个问题。

于 2020-08-17T15:17:48.017 回答