适应度越高的个体的选择概率越大,越容易被选择参与交叉变异运算。
1.3.4交叉算子
在遗传算法中,最常用的交叉策略就是单点交叉和双切点交叉。
在这个算法中,先从种群中随机选择两个要进行交叉的个体,然后随机生成一个数据点,对两个父串中对应位的数值进行交换,得到两个字串。
1.3.5变异算子
变异是在种群中按照变异概率Pm任选若干基因位改变其位值,对于0-1编码来说,就是反转位值。
在这个算法中,先在父串中随机生成一个数,如果这个数对应的位值为0,则将它变为1;如果这个数上的位值为1,则将它变为0.
1.4遗传算法求解函数优化问题流程
Step1:
初始化选择、交叉、变异概率,设置初始代数和最大迭代次数,随机生成若干个初始个体构成初始种群;
Step2:
利用解码函数将初始种群的二进制编码转化为解空间中便于计算的数据,然后用测试函数以及适应度函数求得每个个体的适应度。
Step3:
采用轮盘赌选择种群中的个体进行遗传运算;
Step4:
对种群中的个体进行交叉,变异运算,产生下一代新的种群。
Step5:
如果当前的迭代次数达到设置的最大迭代次数,则算法停止,进行Step6;若未达到最大迭代次数,则转入Step2.
Step6:
保存种群中每一代的选择函数值最小个体作为最优个体,并保存其对应的函数值。
1.5测试函数运行结果及算法参数对结果影响分析
1.5.1各种函数测试结果
(1)Quadric函数状种群动态变化图(-100,100)
第1代种群动态变化图第50代种群动态变化图
第100代种群动态变化图第200代种群动态变化图
(2)Tablet函数测试种群变化图(-100,100)
第1代种群动态变化图第50代种群动态变化图
第100代种群动态变化图第200代种群动态变化图
(3)Rosenbrock测试函数的种群动态变化图
第1代种群动态变化图第50代种群动态变化图
第100代种群动态变化图第200代种群动态变化图
(4)Griewank函数种群动态变化图
第1代种群动态变化图第50代种群动态变化图
第100代种群动态变化图第200代种群动态变化图
名称
最优值
最差值
目标平均值
Tablet
2.2737e-009
0.2951
0.0015
Quadric
3.7719e-005
29.7138
1.7039
Rosenbrock
1.7771e-007
3.8917
0.4625
Griewank
0.0235
1.6926
0.0281
Rastrigin
3.0273e-006
2.1965
0.0487
Schaffer’s
2.0231e-010
1.0e-003*0.9379
0.1470
从上面的实验结果中,我们可以发现遗传算法在求解函数优化问题时,对于大部分测试函数,搜索速度都比较快,能很快收敛到最优解上,获得的最优解也比较好,因此是一种比较有效的优化算法。
2.粒子群算法求解函数优化问题
2.1粒子群算法介绍
粒子群算法是一种基于迭代的优化方法。
进行优化时,粒子在一个n维空间中搜索,每个粒子的位置对应于问题的一个解,粒子通过不断调整自己的位置来搜索新解。
每个粒子根据自己的飞行经验和其他粒子的飞行经验来调整自己的飞行。
每个粒子在飞行过程所经历的最好位置,就是粒子本身找到的最优解,称为个体极值(Pbest);整个种群所经历过的最好位置,就是整个群体目前找到的最优解,称为全局极值(gbest)。
每个粒子都通过上述两个极值不断更新自己,从而产生新一代群体。
设粒子的群体规模为N,粒子当前的位置表示为
,
和Un分别表示第n维空间的上下边界;当前速度表示为
被钳位在最大值
和最小值
之间,粒子的速度和位置更新方程如式
(1)和式
(2)所示:
(1)
(2)
其中,
分别表示粒子第k次迭代的个体极值点位置和全局极值点位置。
c1,c2为常数,称为学习因子,用来调节向Pi和Pg方向飞行的最大步长;r1,r2是(0,1)上均匀分布的随机数;式
(1)中第一部分是粒子上一步的速度,表明粒子目前的状态;第二部分是粒子对本身的思考,是认知部分,粒子通过对本身位置的思考来调整自己下一步的速度和位置,这样可以是粒子有足够强的全局搜索能力,避免陷入局部最小;第三部分表示粒子通过与其他粒子之间进行信息交流来更新自己的下一步。
2.2基本粒子群算法流程
(1)在初始化范围内,对粒子群进行随机初始化,包括随机位置和速度。
(2)计算每个粒子的适应值。
(3)对于每个粒子,将其适应值与所经历过的最好位置的适应值进行比较,如果更好则将其作为粒子的个体历史最优值,用当前位置更新个体历史最好位置
(4)对每个粒子,将其历史最优适应值与群体内或邻域内所经历的最好位置的适应值进行比较,若更好,则将其作为当前的全局最好位置。
(5)根据上面公式
(1)和
(2)更新粒子的速度和位置。
(6)若未达到终止条件,则进行步骤
(2)。
一般将终止条件设定为一个足够好的适应值或达到一个预设的最大迭代次数。
2.3粒子群算法求解函数优化问题的参数分析
2.3.1编码方法
在用粒子群求解函数优化问题时,采用实数编码来表示解空间内的粒子的位置,开始时随机初始化n个二维解空间内的数据点,这些数据点对应了每个粒子的位置。
粒子的速度也是随机产生的,与粒子的位置的维数相同。
2.3.2适应度函数
这里用测试函数作为目标函数来对算法进行评价,把每个粒子的位置带入测试函数,得到每个粒子的适应值,然后分别与粒子的个体极值以及种群中所有粒子的全局极值进行比较,如果比当前的个体极值好,就更新这个个体的个体极值的位置pbestpop以及对应的个体极值pbestfit,如果比上一代得到的全局极值好,则更新当代的全局极值的位置gbestpop以及对应的全局极值gbestfit。
2.4标准粒子群算法的几种改进方法
惯性权重法:
惯性权重w是与前一次速度有关的一个比例因子,其速度更新方程为:
用惯性权重来控制前面的速度对当前速度的影响,较大的w可以加强PSO的全局搜索能力,而较小的w能加强局部搜索能力。
基本的PSO可以看作w=1,因此在迭代后期缺少局部搜索能力。
通常取w为[0.8,1.2]之间的数。
2.5粒子群算法测试函数结果
2.5.1利用标准PSO算法对测试函数结果
根据粒子群求解函数优化算法的流程,编写程序pso.m文件,然后用函数来测试算法的好坏优劣。
下表中列出了常用的几个测试函数:
对上表中几个测试函数用标准粒子群算法求最优值,设定群体规模为50,最大速度Vmax=0.5,迭代次数N=200,学习因子c1=c2=2,画出种群的动态变化图。
(1)Quadric函数状态变化图(-100,100)
第1代种群变化图第50代种群变化图
第100代种群变化图第200代种群变化图
(2)Rastrigin的测试函数(-5.12,5.12)
第49代种群动态变化图第99代种群动态变化图
第200代种群动态变化图
(3)Tablet函数(-100,100)
第49代种群动态变化图第99代种群动态变化图
第200代种群动态变化图
从以上三个函数的种群动态变化图可以看出,粒子在200代的时候已经将近收敛于一个点了。
(4)标准PSO算法测试函数得到的结果
名称
最优值
最差值
目标平均值
Tablet
6.9977e-010
0.0935
5.8828e-004
Quadric
9.7719e-010
0.5134
0.0090
Rosenbrock
1.1286e-008
2.0589e-007
0.0024
Griewank
9.0223e-008
3.8537e-007
0.0051
Rastrigin
2.0283e-008
0.0874
0.0026
Schaffer’s
5.6037e-009
8.4428e-006
8.8449e-007
2.4.2用改进的粒子群算法测试函数运行结果
(1)用带惯性权重的粒子群来求解函数的最小值,
的值是随机生成的(0,1)之间的数。
下表就是测试结果:
名称
最优值
最差值
目标平均值
Tablet
2.9455e-010
0.0266
6.6766e-004
Quadric
1.5761e-009
1.2119
0.0117
Rosenbrock
1.4386-012
0.02568
0.02641
Griewank
1.9839e-009
4.2095e-004
3.4790e-004
Rastrigin
3.0255e-006
0.5047
0.0044
Schaffer’s
2.3281e-007
1.1189e-006
4.1312e-005
(2)用带收缩因子的改进粒子群算法测试函数,收缩因子
取(0,1)之间的随机数。
测试结果如下:
名称
最优值
最差值
目标平均值
Tablet
1.0901e-005
2.3877
0.0192
Quadric
1.2824e-006
1.7284e-005
9.2941e-004
Rosenbrock
0.04891-004
0.0532-002
0.06364
Griewank
1.5922e-004
0.2197
0.0079
Rastrigin
8.2416e-006
2.5299e-004
0.0106
Schaffer’s
1.1029e-006
1.0096e-005
1.4717e-004
4.模拟退火算法求解函数优化问题
4.1模拟退火算法的基本原理和算法描述
1982年,Kirkpatrick等将退火思想引入组合优化的领域,提出了一种求解大规模组合优化问题,特别是NP完全组合优化问题的有效近似解的算法——模拟退火算法(simulatedannealingalgorithm),简称为SA。
模拟退火算法是在某一初温下,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,在局部优解处能概率性地跳出并最终趋于全局最优。
基于Metropolis接受准则的优化过程,可避免搜索过程陷于局部极小,并最终趋于问题的全局最优解。
模拟退火算法包括四个要素:
(1)系统状态(Configuration):
即在某一个温度下,系统产生的初始解,并当作目前的现行解。
(2)搜寻法则(Searchrule):
在退火的过程中,由目前系统状态经由随机扰动而产生变化跳至另一种状态。
一般而言,SA较常用的有梯度搜寻法(GradientType)和迭代改善法。
(3)成本函数(CostFunction):
用来衡量某一系统状态下之能量函数。
(4)退火程序(AnnealingProcess):
退火程序中包含的参数有初始温度、降温机制、冷却率和终止温度。
在退火的过程中,在温度高的時候,虽然是较差的目标值,但有可能被接受当成目前的目标值,但随着温度慢慢的降低,接受较差目标值的几率逐渐降低。
4.2模拟退火算法求解函数优化问题算法分析
4.2.1解空间
模拟退火算法的解空间是随机生成若干个固定上下界的二维数据点,这里采用实数编码,这些数据点在迭代的过程中会不断移动来寻找最优值。
4.2.2目标函数
这里用测试函数作为目标函数来对算法进行评价,把每个粒子的位置带入测试函数,得到每个粒子的适应值,在退火的过程中不断寻优,粒子不断更新自己的位置,通过适应值大小的比较来寻找最优值。
4.2.3算法流程
第1步:
初始化:
初始温度T,设定终止温度T0和马尔科夫链长度L,初始化每个粒子的位置。
第2步:
用测试函数计算每个粒子的适应值。
第3步:
对k=1,……,L做第4步至第7步;
第4步:
对于初始的粒子位置和适应值进行随机扰动,产生新解S’。
第5步:
计算增量
’=C(S’)-C(S),其中C(S)为适应度函数。
第6步:
若
’<0则接受S’作为新的当前解,否则以概率exp(-
’/T)接受S’作为当前粒子新的位置。
第7步:
如果满足终止条件则输出当前解作为最优解,结束程序。
终止条件通常取为连续若干个新解都没有被接受时终止算法。
第8步:
T逐渐减少,且T>T0,然后转第3步。
4.3模拟退火算法测试结果
在模拟退火算法中,设置初始温度是100,退火因子
是0.99,终止温度是1,马尔科夫链长度为1000,种群更新时的步长因子是0.2,下面是测试函数的种群变化图。
(1)Rosenbrock的测试函数(-5.12,5.12)
第1代种群动态变化图第44代种群动态变化图
第195次迭代种群变化图
(2)Quadric函数种群动态变化图(-100,100)
第1代种群变化图第37代种群变化图
第88代种群变化图
(3)Tablet函数种群动态变化图(-100,100)
第1代种群变化图第20代种群变化图
第36代种群变化图第65代种群变化图
(4)Griewank函数动态变化图(-300,300)
第1代种群变化图第34代种群变化图
第77代种群变化图
(5)Rastrigin函数种群动态变化图(-5.12,5.12)
第1代种群变化图第29代种群变化图
第72代种群变化图第82代种群变化图
名称
最优值
最差值
目标平均值
Tablet
0.057537
0.63967
0.32546
Quadric
4.1754e-006
2.847
0.04216
Rosenbrock
0.057793
1.6494
0.3646
Griewank
0.0012201
0.27286
0.05634
Rastrigin
1.6952
4.9035
2.8456
Schaffer’s
7.1588e-005
0.0062438
0.052537
从以上的实验结果可以看出,模拟退火算法在求解函数优化问题上没有遗传算法和粒子群算法得到的结果好。