Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 将矩形框放置在较大的矩形框中_Algorithm_Math_Optimization - Fatal编程技术网

Algorithm 将矩形框放置在较大的矩形框中

Algorithm 将矩形框放置在较大的矩形框中,algorithm,math,optimization,Algorithm,Math,Optimization,我有一些不同尺寸的长方形盒子和一个更大的长方形盒子。我需要在更大的盒子里容纳尽可能多的不同类别的盒子。在任何情况下,每个类别都需要容纳一定数量的箱子。基本上,我需要解决约束优化问题。我该如何处理这个问题?不幸的是,这个问题没有多项式时间算法,也就是说,它是NP难的 所以试试搜索吧。将框从大到小排序可能会有所帮助。(按区域或一侧,不能说哪个更好,取决于搜索方式) 如果速度远远不能接受,试着用partial greedy得到一个相当好的解。实际上我在寻找一个近似解,因为我知道这个问题是NP难的。我似

我有一些不同尺寸的长方形盒子和一个更大的长方形盒子。我需要在更大的盒子里容纳尽可能多的不同类别的盒子。在任何情况下,每个类别都需要容纳一定数量的箱子。基本上,我需要解决约束优化问题。我该如何处理这个问题?

不幸的是,这个问题没有多项式时间算法,也就是说,它是NP难的

所以试试搜索吧。将框从大到小排序可能会有所帮助。(按区域或一侧,不能说哪个更好,取决于搜索方式)


如果速度远远不能接受,试着用partial greedy得到一个相当好的解。

实际上我在寻找一个近似解,因为我知道这个问题是NP难的。我似乎想不出一个办法来解决这个问题哦……我当时不知道。如果这是一个现实世界的问题,我想贪婪是好的。否则,您可能会看到一个星形(a*),尝试找到一些好的评估函数,使同一类别中的所有框大小相同?如果您决定使用蛮力递归方法,尝试在每个可用位置放置下一个框,然后,缩小解决方案空间而不丢失任何最佳解决方案的一种方法是约束新的长方体放置,以便它们必须始终接触左侧和底部的现有长方体(或包含长方体的墙)。这是因为任何解决方案都可以转换为一个解决方案,其中每个框都遵守此约束,反复向左和向下移动框,直到不再可能进行此类移动。矩形框是二维或三维的?@j_random_hacker,在5x5框中的{2x2,2x2,1x6}情况下,左下方法失败。还考虑{5x4,1x4,4x1,4x1}在不允许旋转的5x5框中。对于{2x2,2x2,1x6}情况,三个矩形的相对拐角位置可以是(0,0),(2,2);(3,3),(5,5); 和(0,4.243),(5,0.757)。对于{1x4,1x4,4x1,4x1}情况,左上角的位置是(0,5);(4,4); (0,1); (1,5)