线性规划 Excel 求解器
Linear Programming Excel Solver
我正在尝试最小化 B19 中的 objective 函数。为什么求解器找不到任何可行的解决方案?我不明白。基本上模型是:
变量:
-xi
约束:
- xi 是布尔值
- sum(li * xi') < F
- li * xi > F'
, foreach i
Objective 功能:
- sum(xi * di)
是的,您当前拥有的一组约束合并后 是不可行的。
如果稍微放松一下,Excel 就会找到最优解。
先来看pi * xi > 0.6 for all i
这有两件事。由于所有的pi都大于0,所以所有的xi变量都被强制为1。(0是不可能的)
此外,请查看最后一列 xi。因为 pi 是 0.2,所以即使 x=1,xi * pi
也不能 >0.6。 (为了找到可行的解决方案,您必须将 P' 降低到 0.2
- 现在看看你的其他约束:
sum of pi * xi < 5
你所有圆周率加起来是 5.4。并且由于之前的一组限制,所有的X都被强制取值为1。所以你必须让B10至少为5.4。
综上所述,我怀疑您不希望 xi 是二进制的。也许,您希望它们是 0 <= xi <= 1,
,也就是说,它们也可以取小数值。
放宽B10和B16的值后,Excel找到了解决办法。见下图。
根据 OP 的说明更新
您的 Xi 变量没问题。 0表示出租车运行,1表示会去维修
Objective函数:最小化修复成本(Sumproduct of Ci Xi)也可以。
您必须更改个人出租车限制条件。正如问题定义的那样,pi = 0 是好的,1 的 pi 是坏的。公司不希望任何出租车的 pi 超过阈值 P'。
约束:pi * (1-Xi) <= 0.6
(比方说)
想一想:一旦任何出租车的pi超过阈值,它就会被强制修理,因为Xi必须变为1。
全球可用性:为此,您可以简单地总结 'available taxis' 并确保超过所需的最小值(比如 5)
sum(1-xi) >=5
如果您以这种方式设置您的 Excel 模型,您将得到一个可行的解决方案。
见下图:
更新 2:包括全球退化指数上限
如果不是上面的约束 4,您想要一个将所有 pi 的总和保持在某个限制以下的约束,您将执行以下操作:
(1-xi)
是在用出租车的指标。
所以这个约束变成:
Sum of pi * (1-xi) <= P'
为方便起见,您可以在 Excel 中创建一行 (1-xi),然后使用该行和 pi 行的 Sumproduct。
希望对您有所帮助。
我正在尝试最小化 B19 中的 objective 函数。为什么求解器找不到任何可行的解决方案?我不明白。基本上模型是:
变量:
-xi
约束:
- xi 是布尔值
- sum(li * xi') < F
- li * xi > F'
, foreach i
Objective 功能:
- sum(xi * di)
是的,您当前拥有的一组约束合并后 是不可行的。 如果稍微放松一下,Excel 就会找到最优解。
先来看pi * xi > 0.6 for all i
这有两件事。由于所有的pi都大于0,所以所有的xi变量都被强制为1。(0是不可能的)
此外,请查看最后一列 xi。因为 pi 是 0.2,所以即使 x=1,xi * pi
也不能 >0.6。 (为了找到可行的解决方案,您必须将 P' 降低到 0.2
- 现在看看你的其他约束:
sum of pi * xi < 5
你所有圆周率加起来是 5.4。并且由于之前的一组限制,所有的X都被强制取值为1。所以你必须让B10至少为5.4。
综上所述,我怀疑您不希望 xi 是二进制的。也许,您希望它们是 0 <= xi <= 1,
,也就是说,它们也可以取小数值。
放宽B10和B16的值后,Excel找到了解决办法。见下图。
根据 OP 的说明更新
您的 Xi 变量没问题。 0表示出租车运行,1表示会去维修
Objective函数:最小化修复成本(Sumproduct of Ci Xi)也可以。
您必须更改个人出租车限制条件。正如问题定义的那样,pi = 0 是好的,1 的 pi 是坏的。公司不希望任何出租车的 pi 超过阈值 P'。
约束:
pi * (1-Xi) <= 0.6
(比方说)想一想:一旦任何出租车的pi超过阈值,它就会被强制修理,因为Xi必须变为1。
全球可用性:为此,您可以简单地总结 'available taxis' 并确保超过所需的最小值(比如 5)
sum(1-xi) >=5
如果您以这种方式设置您的 Excel 模型,您将得到一个可行的解决方案。
见下图:
更新 2:包括全球退化指数上限
如果不是上面的约束 4,您想要一个将所有 pi 的总和保持在某个限制以下的约束,您将执行以下操作:
(1-xi)
是在用出租车的指标。
所以这个约束变成:
Sum of pi * (1-xi) <= P'
为方便起见,您可以在 Excel 中创建一行 (1-xi),然后使用该行和 pi 行的 Sumproduct。
希望对您有所帮助。