2016-02-12 56 views
0

我需要大量不同尺寸(100米以下)的电缆,电缆只能以100米长度出售。优化电缆总数

因此,为了优化我的购买,我想要一个代码,我可以输入我需要的所有电缆的长度。该代码将在约束条件下将我的输入结合到100以下,同时尽量减少我需要购买的100米长电缆的总数。

如果任何人都可以帮助VBA,Matlab或Python中的代码,我将非常感激。

+0

谢谢马修。我首先想到的一样。但是这种方法不起作用,因为电缆只能被切断,不能连接。因此,通过将所有小电缆段的总和除以100,将不遵守“件数之和<100”的限制。 – Gabriella

+0

这绝对是一个覆盖包装问题,应该可以通过inlinprog或linprog在MATLAB中解决 –

回答

1

这就是所谓的bin-packing problem,实际上很难(计算上)找到最佳解决方案。

然而,这是一个实际解决问题的问题(正如你自己看到的那样),所以有几种方法试图找到一个近似的解决方案 - 一个“足够好”而不保证它是最好的解决方案。我做了一个快速搜索,发现this course website,它有一些可能会帮助你的例子。

如果你正在寻找一个确切的解决方案,你可以问相关的问题“我能够适应我需要的电缆到100米电缆?”。这个可行性问题可以表示为一个“二进制程序”,这是一个“混合整数线性程序”的特例,MATLAB有一个名为intlinprog(需要优化工具箱)的解算器。

对不起,我没有任何代码来解决你的问题,但我希望这至少给你一些关键字来帮助你找到更多的资源!

1

我相信这就像cutting stock problem。有一些很好的方法可以解决这个问题。 Here是一个实现和一些背景。为此编写Excel前端并不难(请参阅here)。

enter image description here enter image description here

如果谷歌为“割问题”你会发现很多参考资料。