今天用刚出炉的GA,做了个小测试,呵呵,还不错,把结果总结了一下:
被测函数:(《演化程序-遗传算法和数据编码的结合》 科学出版社,2000, P26)
F(x1,x2)=21.5+x1*sin(4*pi*x1)+x2*sin(20*pi*x2) 的最大值
其中 -3.0<=x1<=12.1以及4.1<=x2<=5.8,函数的图形在【相册-资源】中(等俺会贴图了,再贴回来,呵呵)
现在我有5个选择算子,其中1和5是同样的,但是实现方法不同(可以同等看待,这里只不过多测试了一次而已,呵呵)
这5(4)个算子都包含了最优保存,它们分别是
1, 转盘式选择算子(最常见的,也就是比例算子):selection1, selection5
2, 具有排名的转盘式选择算子:selection2
3, 随机一致算子:selection3
4, 锦标赛选择算子: selection4
现在我有两个算法性能评估指标(《演化计算》 潘正君等,清华大学出版社,1998,P66)
一个是平均性能值(在线性能),具体什么情况我就不说了:AVE
一个是最优性能值(离线性能),同上,呵呵:MAX
下面这个表格就是测试结果,敲数字可真不是个好活:)
| selection1 | selection2 | selection3 | selection4 | selection5 |
AVE | 38.8503 | 38.3226 | 38.4503 | 38.1489 | 38.8503 |
33.5902 | 22.7836 | 33.6016 | 36.5246 | 34.1255 | |
11.6255 | 11.6333 | 11.6255 | 11.1268 | 11.6256 | |
5.725 | 5.6309 | 5.325 | 5.5251 | 5.725 | |
MAX | 38.8474 | 36.3799 | 38.8502 | 38.8503 | 38.8493 |
38.1199 | 36.259 | 38.1921 | 38.5717 | 38.6797 | |
11.6257 | 11.1469 | 11.6254 | 11.6255 | 11.6255 | |
5.7256 | 4.6323 | 5.7251 | 5.725 | 5.7253 |
注:以上结果所用参数:
popsize=80,群中个体的数量
gen=300,代数
minvar=[-3.0 4.1],由于这是一个双变量函数,所以minvar是二个,分别代表x1,x2的最小值,这个程序可以处理多变量的情况
maxvar=[12.1 5.8],同上,只不过代表的是最大值,这样,每个变量就有了一个范围
scalevar=0.0001,求解精度,表格中凡是小数点后面是三位的表示第四位是0
pc=0.25,交叉概率
pm=0.01,变异概率
解释一下:从上到下的四个数字分别代表:最上面的一个是代表到第300代所找到的最优结果,第二个就是本次计算的AVE(或者MAX),第三个和第四个分别是取得最优结果时所对应的自变量值,这里有两个。
还有,AVE的大小说明算法的收敛性,而MAX则代表算法的趋向(on-going)性能
附录:各个结果所得到的图:
ave1:
max1
ave2
max2
ave3
max3
ave4
max4
ave5
max5
算了,我也不会贴图,大家到 相册-资源 中去看吧,嘿嘿