Vba 将项目分批排序

Vba 将项目分批排序,vba,excel,Vba,Excel,我正在使用一个基于Excel VBA的计算器来帮助计划钢板的运输,我被要求做的部分工作是根据一定的公差和最大堆叠高度,将钢板组织成最小数量的大小类似的堆叠 问题是,我不知道该怎么做,或者这是否可能。我认为首先必须按照宽度和长度对板材进行分类(尚未告知优先顺序),然后评估哪些板材可以组合成尽可能少的堆垛(同时将宽度差异保持在15%以下,堆垛高度保持在2.5m以下)。我只是不知道如何才能真正做到 有什么建议吗 编辑以避免来回的冗长评论: 我们得到金属板的货物清单,每一行都有数量、长度、宽度、高度和

我正在使用一个基于Excel VBA的计算器来帮助计划钢板的运输,我被要求做的部分工作是根据一定的公差和最大堆叠高度,将钢板组织成最小数量的大小类似的堆叠

问题是,我不知道该怎么做,或者这是否可能。我认为首先必须按照宽度和长度对板材进行分类(尚未告知优先顺序),然后评估哪些板材可以组合成尽可能少的堆垛(同时将宽度差异保持在15%以下,堆垛高度保持在2.5m以下)。我只是不知道如何才能真正做到

有什么建议吗


编辑以避免来回的冗长评论:

我们得到金属板的货物清单,每一行都有数量、长度、宽度、高度和重量。我们也有固定尺寸的拖车(RT),最大容量(允许悬垂)由每种尺寸拖车的宽度、长度和重量确定。他们将要装载的船舶,连同钢包装程序,将所有烟囱的最大高度限制在2.5米


根据堆叠中最长板材的长度选择拖车的尺寸。堆栈中的板的顺序并不重要-这是可操作的,所以我正在构建的计算器不需要做什么。在每个堆叠中,最窄的板材不得小于最宽板材宽度的85%。混合堆,只要每个堆内的宽度变化在15%的窗口内,只要总高度和重量在上述限制范围内,就可以相互堆叠


当前草案中的工作流程如下:-确定最长的板-->选择RT-如果项目1的总高度小于2.5m,则堆叠下一个适合的项目-直到总高度或总重量=>最大高度/重量-计算剩余行项目-返回开始,直到所有行项目都堆叠完毕,然后进行谷歌搜索

不幸的是,这些金属板的密度并不一致——有时是低碳钢,有时是碳钢,有时是其他金属-(

@约翰·科尔曼:

不同大小的RTs是否有上限?还有——从某种意义上讲,较长的RTs是否比较短的RTs成本更高,因此RTs较多但较短的解决方案可能比RTs较少但较长的解决方案更可取

最大的RT长度为24.4米,可装载最大长度为26.0米的货物。定价计算基于占地面积和最小的RT类别(6.1米)每平方米的成本略低于其他类别。但是,一般情况下,由于钢材数量多且装载简单,通常的做法是尽可能使用12.2 m RTs


尺寸限制 不同的拖车有不同的外伸限制;叉车式靠垫的两端可以有两米的外伸,但两侧只有0.25米。相比之下,较长的拖车的外伸长度更有限,但两侧最多有半米。我想在查找表中输入最大尺寸,以避免不得不想得太多了

样品货物 随机挑选的货物

Ln Itm  Cargo Description   Type    Qty L (m)   W (m)   H (m)   Weight (kg)
3       Steel Plate         Plates  1    6.000  3.000   0.025    3,533.000
4       Steel Plate         Plates  1    4.000  2.580   0.150   12,152.000
16      Steel plates        Plates  60   2.000  1.000   0.080    1,256.000

如果您的目标是最小化堆栈数量,那么这听起来像是装箱问题的一种变体。您应该能够将其表述为一个整数规划问题,在这种情况下,只要整数变量的数量不太大,Excel的解算器就可以处理它。或者,您可以采用一些已知的启发式方法如果你能更准确地说明问题的要求,我可能会想出一个数学公式。(我现在会说明问题,然后离开,用谷歌搜索垃圾箱包装…):-D我们有金属板的货物清单,其中每一行都有数量、长度、宽度、高度和重量。我们还有固定尺寸的滚动拖车(RT),最大容量(允许悬垂)根据每种尺寸的拖车的宽度、长度和重量进行定义。装载这些拖车的船舶以及钢包装程序将所有堆垛的最大高度限制为2.5m。拖车的尺寸是根据堆垛中最长板材的长度来选择的。堆垛中板材的顺序并不重要-这就是操作操作,所以这不是我正在构建的计算器需要做的事情。在每个堆栈中,最窄的板必须不小于最宽板宽度的85%。混合堆栈,只要每个堆栈中的宽度差异在15%的窗口内,只要总高度和重量在li范围内,就可以相互堆叠上述MIT。当前草案中的工作流程如下:-确定最长板-->选择RT-如果项目1的总高度小于2.5m,则堆叠下一个适合的项目-直到总高度或总重量=>最大高度/重量-计算剩余行项目-返回开始,直到所有行项目堆叠现在开始做一些Google。谢谢!对不起,我现在正处于最后一周的中间。你刚才描述的你现在的练习看起来像是一个第一个适合装箱的启发式算法。一些进化算法可能是合适的。如果你张贴一些模拟的样本数据并给出一个可能的列表,可能会有帮助。le RT尺寸。我是否正确地假设板材可以相互悬垂(在15%的限制范围内)但是不能超出RTs吗?如果你的目标是最小化堆栈数量,那么这听起来像是装箱问题的一个变体。你应该能够将其表述为一个整数规划问题,在这种情况下,Excel的解算器可以处理它——只要整数变量的数量不太大。或者