Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.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
Python 用更小的碎片填充3D口袋_Python_Numpy_Optimization - Fatal编程技术网

Python 用更小的碎片填充3D口袋

Python 用更小的碎片填充3D口袋,python,numpy,optimization,Python,Numpy,Optimization,我有一个三维numpy数组,其中包含表示体素化空间的二进制(0和1)值。值为1表示体素已被占用,0表示体素为空。为了简单起见,我将描述2D数据的问题。此类口袋的示例如下所示: 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 我还有一个比口袋小的碎片数据集。如果你愿意的话,可以把它们想象成俄罗斯方块,只是3D的。与游戏类似,碎片可以旋转。一些例子: 0 1 1 1 1 1

我有一个三维numpy数组,其中包含表示体素化空间的二进制(0和1)值。值为1表示体素已被占用,0表示体素为空。为了简单起见,我将描述2D数据的问题。此类口袋的示例如下所示:

1 1 1 1 1 1 1
1 1 0 0 0 1 1
1 0 0 0 0 0 1
1 0 0 1 0 0 1
1 0 0 1 1 1 1
1 1 1 1 1 1 1
我还有一个比口袋小的碎片数据集。如果你愿意的话,可以把它们想象成俄罗斯方块,只是3D的。与游戏类似,碎片可以旋转。一些例子:

0 1 1   1 1 1   0 1 1 0
1 1 0   0 0 1   0 1 1 0
我想用碎片填满口袋,这样剩余的空间(0)就越小越好

到目前为止,我想我可以把口袋分解成更小的矩形口袋,计算这些矩形区域和碎片的尺寸,然后根据这些尺寸匹配它们。或者我可以旋转碎片,使1的值更接近“墙”,并将焦点放在靠近边界的框上。接下来,我可以再次查找矩形区域,并努力填充口袋的核心/内部。为了优化结果,我可以围绕蒙特卡罗树搜索算法来完成这些步骤


显然,我不希望得到一个完整的答案,但如果你对如何处理这个问题有更好的想法,我很乐意听到。如果您能参考类似的空间搜索算法/论文,我们将不胜感激。

能否详细说明您的搜索空间的大小以及您希望达到的性能水平?请特别重复介绍教程。堆栈溢出不是设计或研究资源。包装问题有许多算法和现有的在线程序。询问一般线索超出范围;请求非现场资源超出了范围。我可以通过设置体素大小和过滤片段数量在一定程度上控制搜索空间的大小。尽管如此,我仍然有大量的片段(数千到数百万),因此详尽的方法并不是最好的。至于性能,我正在寻找一个平衡点,但我倾向于牺牲一些精度来提高速度。@Prune,参考文献更多的是旁注。我的意思是,这个问题相当大,不希望有人为它实现完整的代码。我试图尽可能具体地说明这个问题,我不只是在寻找一个普通的潜在客户,尽管我也很欣赏潜在客户。尝试在2D中实现你的方法,并尝试概括。你能详细说明你的搜索空间的大小和你希望达到的性能水平吗?请特别重复介绍之旅。堆栈溢出不是设计或研究资源。包装问题有许多算法和现有的在线程序。询问一般线索超出范围;请求非现场资源超出了范围。我可以通过设置体素大小和过滤片段数量在一定程度上控制搜索空间的大小。尽管如此,我仍然有大量的片段(数千到数百万),因此详尽的方法并不是最好的。至于性能,我正在寻找一个平衡点,但我倾向于牺牲一些精度来提高速度。@Prune,参考文献更多的是旁注。我的意思是,这个问题相当大,不希望有人为它实现完整的代码。我试着对这个问题尽可能具体,我不只是在寻找一个一般的潜在客户,尽管我也很欣赏潜在客户。试着在2D中实现你的方法,并尝试推广它。