楼主 chrisfang |
取料问题是规划求解中的常见问题,问题的形式可能会多种多样,但大致模型都是在原胚材料上进行目标规格的截取,求最优化的截取方法(总料最少或余料最少)。 假定有8m长的钢管原料,需要截成1m钢管1300根,2.5m700根,3m800根,4.3m570根,不考虑损耗,求满足目标钢管数目的前提下使用最少余料的截取方法。 使用规划求解解决这个问题,可以参考以下步骤: 1,首先罗列8m长的钢管原料截取成4种规格钢管的最少余料的截取方法: ![]() 这些截取方法的得出,其本身也可以使用规划求解来寻找答案,方法比较简单,此处不再赘述。 2,根据上述截取方法,设计规划求解所需的数据表,如下图所示: ![]() 其中绿色单元格所在的“选取次数”列是规划求解的可变单元格,4种规格钢管的实际数目和余料产生数目都是根据可变单元格的取值与前一步骤中的计算结果相乘而得。 最后一行求和项是规划求解的约束条件和目标值。 3,打开规划求解对话框,设定选项,如下图所示: ![]() 目标值设定为余料的求和项所在单元格,目标为最小值 可变单元格为前述绿色单元格区域 约束条件包括两项:可变单元格为整数,实际截取后的4种钢管数量大于等于目标数目。 4,单击“求解”按钮得到结果: ![]() 这个求解结果是余料最少,总共使用原料1013根,观察结果可以发现,实际所得钢管数目大于目标数目。所以,如果这个案例环境是重点考察“余料”是否最少,有部分原料已经转换为剩余的规格钢管(假定这些钢管仍保有经济价值)。如果考察“原料”是否使用最经济,则需要把目标单元格改为“选取次数”的求和单元格,求解结果如下: ![]() 这样总共使用原料1010根,没有多余的钢管,完全吻合目标数量,但余料相对上面结果要多一些。 在实际情况中,究竟选用哪种方案或是如何综合考虑需要根据生产厂家的实际需求情况,究竟是倾向于成品最大化还是原料最优化。 ![]() |
2楼 aob |
谢谢分享,收藏学习 |
3楼 619115581 |
![]() 谢谢 |
4楼 鞠鞠 |
请问版主,你的第一步截取原料的方法是怎样做出来的![]() |
5楼 冰心8549 |
谢谢分享,学习学习 |
6楼 南瓜少爷 |
可以用VBA 多重循环,这个很简单 |
7楼 南瓜少爷 |
这个帖子好久了,不知道版主还上不上这个社区了。 我现在也有个下料的问题的,要求余料最少的同时要求选取的次数最少。 也就是是选取次数这个列 中大约0的单元格尽量少,减少切割设备的切换。 这个设置了 MIN Countif 作为约束 也试过作为 目标 ,好像不起作用 |
8楼 芐雨 |
谢谢分享,学习学习 |
9楼 海洋之星 |
学习了,哈哈 |