6

我想优化将大理石块装载到卡车上。我不知道是否可以为此目的使用 Solver Foundation 类。之前,我开始写代码,我想在这里问一下。

  • 大理石的重量可以在 1 到 24 吨之间。
  • 一辆卡车最多可容纳 24 吨。
  • 它可以加载尽可能多的大理石立方体,因为它最多可以占用 24 音调,这意味着没有音量限制。
  • 根据时间的不同,可以有 200 到 500 个不同的大理石块。

目标 - 目标是以最少的卡车装运量装载大理石块。

在不编写大量 if 条件和 for 循环的情况下如何做到这一点?

我可以为此目的使用 Microsoft Solver Foundation 吗?

我阅读了 Microsoft 提供的文档,但是我找不到与我类似的场景。

M1+ M2 + M3 + .... Mn <=24 这是一辆卡车装运的。

假设有 200 种不同的大理石重量,而大理石重量是浮动的。

谢谢

4

1 回答 1

5

您可以使用 Microsoft Solver Foundation 来解决此问题。可以在此处找到此类解决方案的示例,其中装箱问题的 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)很容易

于 2012-04-17T12:01:20.123 回答