PSO
.1368
if(x<=0
计算机应用研究
0X>100)
第27卷
由图可看出程序总共包含九条路径:路径l为正(膏不满足条件);路径2为疋瓦(Y不满足条件);路径3为咒五瓦(=不满足条件);路径4为瓦瓦瓦乃(不构成三角形);路径5为疋L瓦瓦马五.(等腰直角三角形);路径6为疋L瓦瓦BL:(直角三角形);路径7为疋L咒瓦马正,%(等边三角形);路径8
else
System.out.pfinfln(”x不符合条件”);
if(Y<=O0Y>loo)System.out.pfintln(”Y不符合条件”);elseif(Z<=0|fZ>100)
else
System.OUt.pfinfln(”z不符合条件”);1
if(x+Y<z0x+z<Y0Y+z<x)
System.out.pfintln(”不构成三角形”);
else
为孔t乃孔巧瓦,瓦(等腰三角形);路径9为疋瓦L瓦‰T14
(一般三角形)。3.3构造适应度函数
{
if(x謇x+y事Y==z z8
x x)
x+x+z事z==Y
4
Y
0
Y。Y+z z==
适应度函数是GA,PSO算法与实际问题的惟一接口,是种群中个体优劣的一种量化反映,它的构造直接影响问题求解的效率。本文采用Korel【81提出的分支函数叠加法构造适应度函数。首先将程序中各个分支谓词用分支函数,来量化,分支函数是一个分支谓词到实际值的映射,在选定路径上各分支点前插入相应的分支函数表达式(假设有m个分支),F。=^(髫.,茗2,…,茗。),见=.疋(菇l,茗2,…,髫。),….,Fm=厶(茹l,名2,…,髫。)o由分支函数叠加得到的目标函数表达式为F=mfl.x一(‘+
{0
Y
4
if(x x+Y Y==g z&6Ⅸ==y0x}x+z奉z==Y木y&占Ⅸ==zY+z z==x x&&y2=z)
System.Out.pfinfln(”这是一个等腰直角三角形”);
else
System.out.pfinfln(”这是一个直角三角形”);}
else
if(x==y&&y==z)
System.out.pfintln(”这是一个等边三角形”);
elseif((x==y)&&(y!=z)0(x:=z)&&(x!=y)0(Y==z)&&(Y!=x))
System.out.pfintln(“这是一个等腰三角形”);
else
R+…+F。),Il瞰为一个较大整数。这样评价函数F归结为
被测单元的参变量茗。,茗:,石,,…,菇。的函数,其值便是评价测试数据优劣程度的尺度。3.4结果评价与分析
实验中选取其中四条路径(编号为6、7、8、9)作为测试目标。为了评价算法的优劣,分别使用简单遗传算法、粒子群算法以及GA.PSO算法对所测试的路径进行100次试验,记录下各种方法正确产生测试数据所需要的代数和所需CPU时间。实验结果如表1所示。
表I
三种不同算法执行性能对比表
System.out.pfinfln(”这是一个普通三角形”);}}
为了后续的表述方便,将三角形类别判别程序的流程采用如图3所示的二叉树表示。树中叶子节点表示程序运行到某一状态(即输出某一结果);父节点和分支节点表示程序的一个分支判断,t(i=1,2,…,16)表示对应分支的判断结果(TRUE或FALSE)。
l初始化产生种群P。,只(只为宅)I
●
r-o(豫示代敷)I
<囊多是。皴;|絮料
计算种群P.粒子适应度
●
7I
构孽黔;—GA—PSO
I古
爿骨种群(接适应度大小捧序,
l
加入种群只(适戍度人的币比倒粒子)
l
改进种群P1个体(根据自身和奄局量优粒子更新)
I
得到新一代粒子群种群p’
0
计算种群^粒于适应度
嚼{莉
t
l|十
霹谜申嘲{《刻{遄
实验中的参数选择如下:三条边的输入变量为0~200,种群大小为100,最大迭代次数为500。遗传算法采用22位二进制数对三个输入变量编码,交叉率为0.85,变异率为0.05。粒子群算法采用实值编码,粒子从遗传算法中迁移过来后,先换算成相应的整型,再利用粒子群算法进行更新。其中:c。=C2---2,∞。。=0.8,tO曲=0.0702。适应度函数中的max=
1000.妒=0.2。
《套芦
【随机产生咖比倒粒子ll
重构种群^
I
l选择.空叉、变异l
撙刊新一代遗传算挂种彝P
实验中电脑配置为Inter@Pentium∞4MB内存。
3.06GHzCPU,512
通过表1可以看出:当测试数据满足解的概率比较大时,三种算法产生测试数据所需代数差不多,但是当测试数据满足
图3三角形判别程序对应
二叉树图
l
T=-T+I
‘
解的概率比较小时,GA.PSO算法的寻优能力得到了很好的体现。就迭代次数而言,GA—PSO算法是遗传算法的约1120,是粒子群算法的约1/2;就平均运行时间而言,GA-PSO算法是遗传算法的约1113,是粒子群算法的约8倍。由此可见,GA-PSO算法的性能在迭代次数I-AS遗传算法和粒子群算法都要好,但
图1GA-PSO算法流程图
图3中各节点与程序中的输出和分支判断具有对应关系。
万方数据