我正在尝试使用 PuLP 解决优化问题,但在编写目标函数时遇到问题。
我已将现实生活中的示例简化为使用谷物的更简单的示例。假设我有一个产品列表和一些可以将它们放入的过道(对于本示例 2)。每种产品都有一个我们通常每周销售的数量(例如:我们每周销售 20 盒水果圈和 6 盒麦片)。每个物品还需要一定数量的架子(例如:磨砂片需要 1 个架子,但玉米片需要 2 个)。
| 产品 | 销售量 | 货架 | 指定通道 |
|---|---|---|---|
| 水果圈 | 20 | 2 | |
| 磨砂片 | 15 | 1 | |
| 可可卵石 | 8 | 1 | |
| 果味鹅卵石 | 9 | 1 | |
| 玉米片 | 12 | 2 | |
| 麦片 | 6 | 1 |
每个过道只有4个货架。因此,理论上我可以将水果圈和玉米片放在一个过道上(2 个架子 + 2 个架子)。如果我将这些商品放在一个过道中,则该过道的每周销售额将为 20 + 12 = 32。如果我将其他 4 件商品(1 个货架 + 1 + 1 + 1)放入一个过道中,则该过道的销售额将为 15 + 8 + 9 + 6 = 38。过道的平均销售额应为 35。我的优化问题的目标是让每个过道尽可能接近该平均数字。我想最小化每个过道每周总销售额和平均数量之间的总绝对差异。在此示例中,我的偏差为 ABS(38-35) + ABS(32-35) = 6。这就是我想要最小化的数字。
我不知道如何写,所以 PuLP 接受了我的目标。我无法在网上找到具有这种复杂程度的示例,它将每个值与平均值进行比较并获取累积绝对偏差。当我写出技术上可以计算的代码时,PuLP 似乎不接受它。
这是一些示例代码:
products = ['Fruit Loops', 'Frosted Flakes', …Run Code Online (Sandbox Code Playgroud)