写在前面
最近需要用帝国竞争算法,百度出来基本千篇一律 Ctrl + C, Ctrl + V. 所以打算自己写一篇。
Reference:
- 1.帝国竞争算法的研究与改进
- 2.智能优化算法与涌现计算,在狗东可以免费试读
- 3.算法的可视化例子
帝国竞争算法
对于一个优化算法,cost function 是用来衡量优化效果的优劣。对于最小化问题,求一个函数的全局最优,cost funcition 越小越好。最大化问题反之。本文的优化目标函数Rastrigin的全局最小值。 Rastringin函数参考百度百科。
Step 1. 制定规则,初始化帝国
制定规则
假设有100个国家,每个国家有一个独特的编号,例如1号国家,2号国家…100号国家这样。每个国家有个cost function: c 1 , c 2 . . . . . c 100 c_1, c_2 .....c_{100} c1,c2.....c100。100个国家中,有10个帝国,90个殖民地。
初始化帝国
- 1.1 让cost function 最小的10个国家作为帝国,其余国家作为这些帝国的殖民地。
- 1.2 计算帝国之间的相对势力.
C n = c n − m a x { c i } C_n = c_n - max\{c_i\} Cn=cn−max{ ci}
其中, C n C_n Cn表示n号帝国的相对势力, c n c_n cn 是n号帝国的cost function, m a x { c i } max\{c_i\} max{ ci}是所有帝国的cost function 最大值。注意C是大写还是小写 - 1.3 计算帝国的标准势力:
P n = ∣ C n ∑ C i ∣