我想优化将大理石块装入卡车。我不知道,如果我可以为此目的使用Solver Foundation课程。之前,我开始编写代码,我想在这里问一下。
目标 - 目标是在最小的卡车装运中装载大理石块。
如果不编写很多if条件和for循环,我怎么能这样做呢?
我可以为此目的使用Microsoft Solver Foundation吗?
我阅读了Microsoft提供的文档,但是找不到与我类似的场景。
M1+ M2 + M3 + .... Mn <=24
这是一次卡车运输。
假设有200种不同的大理石重量,大理石重量是Float。
由于
答案 0 :(得分:5)
您可以使用Microsoft Solver Foundation来解决此问题。 可以找到这样一个解决方案的示例here,其中包装箱问题的OML如下:
Model[
Parameters[Sets,Items,Bins],
Parameters[Integers,OrderWidth[Items],BinWidth[Bins]],
Decisions[Integers[0,1],x[Items,Bins]],
Decisions[Integers[0,1],y[Bins]],
Constraints[
Foreach[{i,Items},Sum[{j,Bins}, x[i,j]]==1 ],
Foreach[{j,Bins}, Sum[{i,Items}, OrderWidth[i]*x[i,j]] <= BinWidth[j]],
Foreach[{i,Items},{j,Bins}, y[j] >= x[i,j]]
],
Goals[Minimize[UsedBins->Sum[{j,Bins},y[j]]]]
]
将OrderWidth更改为MarbleWeight并将BinWidth更改为TruckCapacity(或者在您的情况下仅为24)将很容易