gpt4 book ai didi

c# - 求解器基础优化 - 一维装箱

转载 作者:太空狗 更新时间:2023-10-29 21:40:50 26 4
gpt4 key购买 nike

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

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

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

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

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

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

M1+ M2 + M3 + .... Mn <=24这是一次卡车运输。

假设有 200 种不同的 Marble 重量并且 Marble 重量是 float 的。

谢谢

最佳答案

您可以使用 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)

关于c# - 求解器基础优化 - 一维装箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10157336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com