装箱问题matlab代码mrphysics_code
下面的循环包装代码是为我从事的一个辅助项目开发的。
它使用Matlab的形态运算imdilate对均匀或不均匀大小的一组圆执行随机密堆积。
要运行代码,用户输入两个项目:要打包的一组圆的半径[n
1]和所需的分辨率。
分辨率决定了包装的精度以及运行时间。
结果输出以下内容:(1)对应于圆心的位置的列表(2)相应半径的列表(3)填充物的图像(4)填充物密度随函数变化的图开窗尺寸
关于项目#4的一些细节。
盘根自然地呈圆形。
通过选择填料内的空间区域来测量密度。
我首先画出围绕整个包装的圆形边界,然后慢慢缩小该圆形边界。
密度与选择区域大小的函数关系图表明,它很快达到最大值(最大堆积密度)。
此版本的代码使用操作imdilate
,该操作使算法在计算上更加快速。
它是对原始脚本的改编,它依赖于迭代过程。
可以说以前的版本提供了更高的精度。
但是,大量的装填会不方便地增加运行时间。
我还在这里将此代码的版本列为circ_pk_original.m
我不认为此方法为随机密堆积提供了数学上可靠的证明方法。
一般步骤如下。
生成半径列表。
对于