为乘客计算最佳的教练组合?
我在Microsoft Excel中有一个表格,我想用它来计算教练的最佳组合以容纳提供的乘客数量。 这是表格的简化版本:
我需要在教练计数列中input三个公式来计算可以承载所有乘客的教练的最佳性价比组合。 例如,如果有40名乘客,结果应该是一个49个座位的教练,而不是两个20个座位的教练,因为这是最便宜的组合。 我不知道我将如何努力实施这些公式,并会欣赏一些指针。 到目前为止,我所有的C4都是=IF(MOD(B1, A4) = 0, B1 / A4, 0)
,它只能用20的倍数工作,并没有考虑教练组合或成本效率。
也许这是太复杂的任务来执行公式? 使用VBmacros,还是仅仅把它留给用户来计算最佳组合?
有两种方法可以解决这个问题。 我将概述这两个解决scheme:
选项1:在工作表公式中
我不得不花费更多的时间在这个上面,为了find一个真正优雅的解决scheme,但是这里有一个function性的方法,应该工作得很好。 这里有一些快速的亮点:
- 首先,您需要在桌上添加一列,列出教练席位的最小数量。 这有助于方便查找。
- 其次,请确保您的查询表按照最小的座位数升序排列。
- 我假设最有效的定价模式是让大多数人成为最大的教练(或许多最大的教练),然后用最小的教练来容纳剩下的人。 如果这不是一个合理的假设,那么这个解决scheme可能就不合适了。
以下是最终结果的截图:
以及需要的公式:(和一个链接,如果你需要炸毁它: http : //i.stack.imgur.com/hKjQK.jpg )
注意:你会注意到前面的答案是不正确的,因为它表明74人需要花费180美元,而不是140美元。 我还没有声望,所以我想打电话给大家。
选项2:使用Excel的解算器加载项
- 启用求解器加载项(文件 – >选项 – >加载项 – > Excel加载项(pipe理) – >求解器加载项)
- 如下所示configuration工作表:
用户界面:
公式:
- 在function区上,转到数据选项卡,分析组和单击求解器。
- configuration求解器如下:
- 点击“解决”,然后点击“确定”
- 最终结果:
这似乎是一个经典的线性规划问题。 您需要最小化总成本=(教练数量1次50)+(教练数量2次60)+(教练数量3次80),受限于(教练数量1次20)+教练2次29)+(教练次数3次49次)大于或等于(参加人数),所有教练人数大于或等于零。 我认为Excel的Solver是解决这个问题的工具。 您不需要自己实现任何解决scheme,只需设置它,Solver就可以处理algorithm。
尝试这个:
计算示例
随着公式显示
这个想法是首先检查最大的教练,使用除法Count / Seats的整数值。 对于剩下的人来说,第二大教练也是这样做的。 等等