Circle Packing 学习记录——(一)Circle Packing in Circle

Circle Packing in Circle

这篇文章学习总结了两篇关于圆形容器内的圆填充问题的经典论文。

1.问题描述

CirclePacking in Circle问题可表示为能否以及如何将n个具有各自大小的圆形无覆盖五越界的包装在一个大的圆形容器中。

这是一个NP-Hard问题,前人的一些工作可以找到和最优解精度非常相似的一个解,不过非常耗时,计算上不可行。

所以需要使用一些替代算法。

先给出一些符号定义


1)

d_{ij}表示的是i,j两个圆(不包括容器圆)的嵌入深度,如果两圆交叉,则dij为正数,否则,d_{ij} =0.

2)

d_{0i}表示圆i超出容器圆的深度,如果超出,则为正数,否则记为零。

3)

上面三个式子,U_{j}可理解为圆j受到的其它所有圆的挤压所蕴含的弹性势能,U\left (_{X} \right )则是所有内部圆的弹性势能之和。

2.算法一 半物理半手工方法的结合

参考论文:

H Wang, W Huang, Q Zhang, D Xu. An improved algorithm for the packing of unequal circles within a larger containing circle. European Journal of Operational Researchin 2002.

2.1 物理方法

将上图完全考虑为一个物理问题,圆i受到 j_{1}j_{2}和容器圆的挤压,合力方向为其加速度方向,将沿合力方向产生位移。

根据胡克定律,弹力可看做近似与挤压强度即圆之间的嵌入深度成正比。

每次迭代都可以让每个圆沿合力方向进行一小段位移。终究会达到一个比较稳定的状态。

其公式如下:


2.2物理方法的缺陷

使用单纯的物理方法容易达到下图所示的困境:

左图局部最优而非全局最优,此时每个圆很难在移动。

2.3人工方法

所谓人工方法就是模拟人的思路解决上述问题。

上图中每个圆可以算出其弹性势能,弹性势能最大的,它最想接着动,这就需要外力帮他一把,帮他跳出陷阱,于是我们定义相对的弹性势能:

当算法局部最优的时候,我们选相对弹性势能最大的那个,强行地随机改变其坐标,进而使算法继续进行。这种方法作者称为(pain relief)

实践表明这么做也会有一个问题,那就是连续的多次局部最优解对应的相对弹性势能最大的那个圆经常是同一个圆。

因此,作者提出了一种优化,当当前选出的圆和上一次是同一个时,则换一种思路,选择RDP最小的那个圆,也就是最不想动的那个圆,强行改变它的位置,让算法继续。这种思路作者称为(resource surrender)

2.4算法详细步骤

注:U_{old}表示上一次的势能,

t是一个flag,表示局部最优时选择相对弹性势能最大的还是最小的

l_{0}为上一次选择的点

h表示系统收敛的程度或者说是学习速率。

3.算法二 Simulated annealing(模拟退火)与Tabu search(禁忌搜索)的结合

参考论文:

De-fu Zhang , An-sheng Deng. An effective hybrid algorithm for the problem of packing circles into a larger containing circle. Computers & Operations Research 32. In 2005.

3.1 定义N\left (X \right )

假设X是n个圆Circle Packing的一个配置,那么N\left (X \right )表示为,将X中的某一个圆的圆心沿着他受到的合力方向位移一段距离,其他圆位置不变的所有配置的集合。因为X中共有n个圆,所以N\left (X \right )中有n个元素。

3.2 SA方法

这个算法比较简单,直接上图:

其中,T_{0}表示算法接受变差的解的能力,在我理解就是算法收敛程度,

\alpha表示学习速率

这种方法同样会出现局部最优的情况。在陷入僵局时也需要选择一个圆来改变其位置,强行使算法继续。本算法采用的是选取相对弹性势能最大的那个圆

3.3 TS(禁忌搜索)

禁忌搜索就是在算法过程中维持一个列表,记录之前的系统信息。

具体到这个问题,算法中维护了一个列表,记录了每个点上一次被选为强行改变位置点的时间。如果当前选择的圆在前几次迭代中被选择过,则转而选取其他的圆。

这样做的目的是为了不使连续的局部最优解选取同一个相对弹性势能最大的圆圈。

3.4 算法步骤

4.小结

学习完上述两个算法之后,我发现二者的思路是非常相似的,只是在细节上有所不同

大体思路都是按照弹性势能以及合力来更新每个圆的位置,在遇到局部最优解时选取一个圆,改变其位置,使算法继续,直到收敛到全局解。

区别在于

算法二每次更新一个圆圈,算法一每次更新所有圆圈。

在连续的局部最优解选择了同一个圆时,算法一选择用相对弹性势能最小的来替代最大的;算法二选择用相对弹性势能次大的来代替最大的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341