C# 项目、项目数量的智能分组

C# 项目、项目数量的智能分组,c#,list,parsing,grouping,mathematical-optimization,C#,List,Parsing,Grouping,Mathematical Optimization,我有一种情况,我收到的订单是多种不同数量的产品,需要用多辆卡车运输。目标是最大限度地减少每次装运的产品数量,以提高产品拣选效率 理想情况下,我不希望每辆卡车有6种不同的物品。我可以很容易地做到,也不需要帮助,只需按数量降序订购商品,并将它们分成24组(卡车限制)。我正在努力寻找一种算法,以智能地将数量分成“智能组”。我的第一个想法是,我真的在考虑开发某种人工智能来实现这一点,但不确定从哪里开始。有人对如何实现这一目标有想法或建议吗 获得每辆卡车不同物品最小数量的一种方法是最小化不同物品的最大数

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

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


获得每辆卡车不同物品最小数量的一种方法是最小化不同物品的最大数量。我认为这不适合标准的背包或包装问题,但我们可以很容易地将其表述为一个混合整数规划问题。为了建立数学模型,我们可以定义以下决策变量:

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
是一个非负变量,
y
是一个二进制变量。利用这一点,我们可以将我们的模型表述为:

结果可能如下所示:

----     56 PARAMETER results  solution

                truck1      truck2      truck3      truck4

A                                                   20.000
B                                       20.000
C                           20.000
D               14.000
E                            4.000
F                4.000
G                6.000
H                                        1.000       2.000
I                                        3.000
J                                                    2.000
total           24.000      24.000      24.000      24.000
diff.items       3.000       2.000       3.000       3.000
该模型可输入任何MIP解算器


实际上,您可能希望使目标更复杂一些:首先最小化最大值,然后最小化y的和。这是为了确保解决方案适用于未达到最大y值的卡车。在许多实际模型中,我们需要添加这样的“正则化”术语。这仍然是一个线性MIP模型。

现有的方法很多。用神奇的谷歌答疑机10秒钟后,我发现:现在还不清楚你到底在问什么。您只是想将一组数字分成等于或小于最大数字的组吗?或者你需要考虑包裹的大小和不同卡车所能容纳的容量吗?我使用谷歌,一直在寻找我的问题的答案。在我多年的编程生涯中,这是我问过的第四个问题。很抱歉,我的搜索没有得到我需要的结果,我不知道如何正确地问这个问题。你提供的链接确实有帮助,因为它提供了一些更好的搜索条件。非常感谢。是的,我试着把一组数字分成相等或小于一个最大数的组,同时最小化每组的项目。我不需要担心这个数字是否等于或大于极限。谢谢,不需要考虑包装、重量或体积的大小。这是一个纯粹的24组问题。这个问题被称为“包装问题”。罗马人在2000年前试图解决这一问题,但未能解决,至今仍未解决。罗马人试图弄清楚如何将战车打包开战。他们想尽量减少他们需要的战车数量,如果他们把战车塞得太满,他们就会放慢速度,翻倒。有一些算法,但没有一个是完美的。搜索“打包算法”。谢谢。这基本上就是我要找的。完整的帖子-