物料,物料数量的智能分组

时间:2018-12-31 18:16:20

标签: c# list parsing grouping mathematical-optimization

我遇到一种情况,我收到的数量不同的多种产品的订单需要用多辆卡车装运。目标是使每次装运的产品数量最少,以提高产品拣选的效率。

Source Item/Quantity Table

理想情况下,我不希望每辆卡车有6种不同的物品。我可以轻松地做并且不需要帮助的是,只需按数量递减的顺序订购商品并将它们分成24组(卡车限额)。我正在努力寻找一种算法来智能地将数量分成“智能组”。我的第一个想法是,我真的在考虑开发某种AI来做到这一点,但不确定从哪里开始。是否有人对如何实现这一目标有想法或建议?

Grouping Examples

1 个答案:

答案 0 :(得分:0)

获取每辆卡车最少数量不同物品的一种方法是最小化最多不同物品的数量。我认为这不适合标准背包或装箱问题,但是我们可以轻松地将其表达为混合整数编程问题。要开发数学模型,我们可以定义以下决策变量:

5*3+1*2+4*1=21

x(i,j) >= 0 : quantity of item i placed in truck j y(i,j) in {0,1} : 1 if any item i is placed in truck j 0 otherwise 是一个非负变量,而x是一个二进制变量。这样,我们可以将模型表示为:

enter image description here

结果看起来像:

y

此模型可以输入到任何MIP求解器中。

在实践中,您可能需要使目标复杂一些:首先最小化最大值,然后最小化y的总和。这是为了确保解决方案对于未达到最大y的卡车表现良好。在许多实际模型中,我们需要添加此类“正则化”术语。这仍然是线性MIP模型。