我被要求帮助为朋友制作一个基本的材料计算器,但我不确定这是什么算法,因为我只是随便做一些编码而且我的数学技能可能远没有那么好这里的一些人:)这就是我面临的问题......
我有多个方框(A),每个方框都包含某个材料子集(B)。这些材料(B)用于制造物品(C)。一旦从盒子(A)中取出材料(B),就必须使用或扔掉它们。正在构建的项目(C)的要求有时会发生变化,因为该算法必须涵盖多个项目。
盒子(A)总是有相同的材料子集(B),这永远不会改变。
实施例: Boxtype 1包含(32 mat1,30 mat2,24 mat3,0 mat4) Boxtype 2包含(1 mat1,22 mat2,13 mat3,55 mat4) Boxtype 3包含(55 mat1,21 mat2,1 mat3,7 mat4)
我需要建立项目foo5 - 它需要4,311 mat1,700 mat2,443 mat3,321 mat4。使用最少的废物需要多少箱(A)才能做到这一点。
我已经尝试过搜索但不知道它是什么类型的算法我在搜索时没有太多运气。
编辑:回答一些问题,并附上我对这篇文章的回复。 是的,你可以选择每个盒子的倍数。订单完成后遗留下来的一切都将被丢弃。具有这些材料的盒子具有成本,因此如果可能的话,在该水平上的优化将是很好的,但是是次要目标。对不起,如果这个不清楚,因为我对这部分有点新鲜:)
答案 0 :(得分:0)
整数编程。编写代码来构造像
这样的整数程序Minimize
waste1 + waste2 + waste3 + waste4
Subject To
32 box1 + 1 box2 + 55 box3 - waste1 = 4311
30 box1 + 22 box2 + 21 box3 - waste2 = 700
24 box1 + 13 box2 + 1 box3 - waste3 = 443
0 box1 + 55 box2 + 7 box3 - waste4 = 321
Bounds
0 <= box1
0 <= box2
0 <= box3
0 <= waste1
0 <= waste2
0 <= waste3
0 <= waste4
Integer
box1 box2 box3
End
然后将其提供给您最喜爱的integer program solver。 (上面的程序采用CPLEX格式。)