如何解决机器学习挑战?

时间:2010-08-11 09:49:35

标签: algorithm math programming-languages machine-learning

有一个容器,例如可以说它的体积为“V”。容器需要填充各种类型的盒子,每种类型都有独特的尺寸(体积),例如,假设

Box Type A - 体积为K. 盒型B - 体积为L

现在的问题是,需要找出两种类型的最大盒子数量,这些盒子可以容纳在容器中(两个盒子的组合)

为了简化,假设“W”和“R”是数量,那么我们得到 (K * W)+(L * R)= V

以及如何将纸箱(盒子)堆放在容器中。

例如,第一行(按行我的意思是当框架是x坐标时),容器中的盒子应该包含4个“盒子类型A”的堆栈(从容器的底板开始)和“箱子类型B”最上面的两个堆栈(靠近集装箱的顶部天花板)(堆栈我的意思是当箱子放在彼此的顶部时[z坐标明智])。此后,在前一个完成,直到整个容器装满。

问题是在容器中布置这些盒子的最佳方法是利用容器中的所有(或大部分)空间,并装入最大可能数量的盒子,这些盒子可以是1或者1的组合更多(一个容器中最多约5种类型的盒子)。

程序应该简单地输入框的类型和细节,容器和voilà,你会得到一个完整的详细分析。

问题在于我没有涉及机器学习领域或解决这类问题。如果我得到了关于使用什么算法的建议,在哪里开始学习解决这个问题等等,我会很感激,这是解决这个问题的最佳方法,任何有用的机器学习库等等。

4 个答案:

答案 0 :(得分:2)

此问题是线性优化的变体,称为整数线性优化link at wikipedia。众所周知,这个问题通常是NP难的,所以大多数解决方案都是迭代的。有关进一步的讨论,请参阅文章中的参考资料

编辑:我建议您查看已提供lgpl解算器库的LPSOLVE

答案 1 :(得分:0)

您可能想看一下这个问题的答案:

Box stacking problem

答案 2 :(得分:0)

如果你真的是指机器学习,而不是预先编程算法,那么我觉得这很难。当盒子数量变大时,简单的试错法将会非常糟糕。

我想知道是否值得研究编程计算机玩Go的方法。在最终游戏中应用蒙特卡罗方法已经取得了很多进展,这对于你的包装问题来说是一种类似的组合问题。见This reference.

答案 3 :(得分:0)

纯粹用机器学习解决这个问题是一个坏主意。这是一个确定性问题的原因,其他形式的AI更适合这一点。但是,如果您唯一的选择是机器学习,我会使用最小平方误差梯度优化来加强学习。它是理解机器学习的简单方法之一,适用于您的问题,因为它是确定性的。如果可能的话,使用其他算法来补充机器学习。