为乘客计算最佳的教练组合?

我在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 ) 最后的Excel与公式

注意:你会注意到前面的答案是不正确的,因为它表明74人需要花费180美元,而不是140美元。 我还没有声望,所以我想打电话给大家。

选项2:使用Excel的解算器加载项

  1. 启用求解器加载项(文件 – >选项 – >加载项 – > Excel加载项(pipe理) – >求解器加载项)
  2. 如下所示configuration工作表:

用户界面: Excel求解器工作表

公式: 在这里输入图像说明

  1. 在function区上,转到数据选项卡,分析组和单击求解器。
  2. configuration求解器如下: 在这里输入图像说明
  3. 点击“解决”,然后点击“确定”
  4. 最终结果: Excel求解器工作表

这似乎是一个经典的线性规划问题。 您需要最小化总成本=(教练数量1次50)+(教练数量2次60)+(教练数量3次80),受限于(教练数量1次20)+教练2次29)+(教练次数3次49次)大于或等于(参加人数),所有教练人数大于或等于零。 我认为Excel的Solver是解决这个问题的工具。 您不需要自己实现任何解决scheme,只需设置它,Solver就可以处理algorithm。

尝试这个:

计算示例 1

随着公式显示 2

这个想法是首先检查最大的教练,使用除法Count / Seats的整数值。 对于剩下的人来说,第二大教练也是这样做的。 等等