尽量减少购买所有商品时使用的购物者数量

Minimize number of shoppers used while buying all items

我们有 N 位购物者,每人有 100 美元,还有一份包含 M 件商品的清单,每件商品的价格为 [0-50 美元](仅限整数)。

我们需要购买符合以下要求的所有物品 -

  1. 尽量减少使用的购物者数量
  2. 如果我们需要使用超过 1 个购物者,请尽量减少购物者花费的美元差异

例子

伪代码:

For n_shoppers in range(1,N) :

受限制

一旦问题可以用总购物者的 n_shoppers 个子集解决,就打破循环(这样我们就有了所需的最少购物者数量和最佳分配)

这真的很慢而且效率低下 - 关于如何更好地解决这个问题有什么建议吗?我目前正在使用 CVXPY 解决它。

一种方式如下

  1. 首先求解 min 购物者模型。现在你知道模型的尺寸了。
  2. 接下来求解最小方差模型。由于购物者的数量现在是恒定的,因此更好地定义了均值(线性)。如果不知道购物者的数量,则很难求平均值。 (另一种方法是最小化范围:min UP-LO, UP>= shopper[i], LO <= shopper[i])。