算法解析
其实和群体进化类算法还是非常像的,只不过把个体的概念换成了国家而已。我们一步步来看。
1. 初始化
ICA的个体是国家,相当于遗传算法中的染色体,对于一个N维的优化问题,国家可以表示成如下形式:
国家的势力大小通过代价函数来衡量:
国家的势力和代价函数值成反比,即代价函数值越小,国家势力越大。初始帝国的产生分为以下几个步骤:
STEP 1:首先,随机产生个国家,从中选出势力较大的前个国家作为帝国主义国家,剩下的个国家作为殖民地。
STEP 2:其次,根据帝国主义国家的势力大小划分殖民地。每个帝国的殖民地个数按照式(1)~(3)计算:
其中,是第个帝国主义国家的代价函数值。是它的标准化代价。是它的标准化势力大小。 是第个帝国的初始殖民地个数。最后,对于每个帝国主义国家,从个殖民地中随机选择相应的个数分配给它,最终形成初始的个帝国。[2]
不过这里解释一下,一个国家其实可以看成一个解的表示,与遗传中染色体类似。国家的势力通常由该国家所表示的解的好坏决定的。一般可以采用随机或者贪心的方式生成初始国家,然后计算目标函数,计算势力,再划分帝国主义国家和殖民地国即可。
2. 殖民地同化
帝国主义国家为了更好地控制其殖民地国家,将自己的思想模式及文化风俗推广到殖民地国家的过程,称为同化。ICA中通过所有殖民地向其所属帝国主义国家移动来模拟同化过程。[2] 当然这个移动可以看出解在解空间上的移动,与邻域搜索那个移动也有点类似,本质还是解的变换。
一个同化的例子如下,其实跟GA中的交叉很相似:
3. 殖民地革命
殖民地革命是对殖民地进行一定的移动,希望其能更靠近最优解的位置。但通常而言,对于一个社会来讲,不是说有的革命都是成功的有益的。革命也可能导致资源内耗,无法进行有效的社会变革从而降低殖民地的力量(参照苏联)。一个殖民地革命的例子如下(和GA中的变异很像对不对):