我想使用Excel Solver制定一个旅行计划,以决定按顺序访问哪个城市以及停留多长时间。我打算从A市出发,然后回到A市。
下表显示了从一个城市到另一个城市的机票,以及在每个城市停留的每天住宿费用。
enter image description here
目标(蓝色单元格):为了最小化总费用(N17),需要更换的电池(绿色电池):在一个城市停留的天数($D$17:$F$19)
例如,F17细胞中的9意味着从A移动到C,并在C停留9天。'From count'(H列)检查每个城市的出发次数=COUNTIF(D18:G18,">0”)
'To count'(第22行)检查您到达每个城市的次数=COUNTIF(D18:D21,">0”)
'necessary?'(K列)检查你是否曾经到达过这个城市(因为如果你已经到达,你也必须离开)=HLOOKUP(C19,$D$17:$G$22,6,FALSE)
“总公平”(M列)计算总公平=IFERROR(SUMPRODUCT(D5:G5,D18:G18)/SUM(D18:G18),0)
总住宿费成本'(N列)计算总住宿成本=SUMPRODUCT($D$13:$G$13,D18:G18)
约束包括以下内容
- 我们不会搬到同一个城市
D18 = 0 E19 = 0 F20 = 0 G21 = 0
- 停留次数应为整数D18:G21 =整数
- 行程从城市A开始H18 = 1
- 返回城市A D22 = 1
- 我们不会在一个城市停留超过一次
H19:H21 <= 1 E22:G22 <= 1
- 如果你到了一个城市,你也必须离开
H19:H21 >= K19:K21
- 总停留天数(除了返回A并停留)应为10天
D26 =总和(E18:G21)= 10
- 访问城市总数(A除外)应为2
D27 =总和(E22:G22)= 2
- 返回A并在A停留的天数随机指定为1
D19:D21 <= 1
我想在五个城市的例子中使用这个逻辑,但Excel甚至在这个玩具例子中也找不到可行的解决方案。
原因是什么,我如何才能使它工作?
- 我刚刚发现我无法附加Excel文件。可以在这里安装吗?如果你愿意,我可以发电子邮件给你。
我认为拍摄的图像上显示的数字将是最好的旅行计划。如果我输入这个数字并运行solver,我会找到一个解,但是如果我清除所有数字并运行它,我不会找到一个解。
- 我听说solver不能识别countif函数,所以我尝试使用iferror,例如,在单元格H18 =IFERROR(D18/D18,0)+IFERROR(E18/E18,0)+IFERROR(F18/F18,0)+IFERROR(G18/G18,0)代替countif,但我也找不到解决方案。
1条答案
按热度按时间rhfm7lfc1#
好了,想出了这个,但你需要考虑一下有什么要改进的:
我没有使用二进制,因为from count保持为1。
请注意,你可以在C市住7天,因为它是最便宜的。因此,添加持续时间单元D22:F22必须>=2…至少住两天。