文章目录
一、算法概述
遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。
二、算法思想及过程
遗传算法的基本思想是从初始种群出发,采用优胜劣汰、适者生存的自然法则选择个体,通过复制、交叉、变异将问题解编码表示的”染色体“群一代代不断进化,最终收敛到最适应的群体,从而求得问题的最优解或满意解。
1、算法流程图:
2、算法术语解释
- 种群:种群是指用遗传算法求解问题时,初始给定的多个解的集合。遗传算法的求解过程是从这个子集开始的。
- 个体:个体是指种群中的单个元素,通常由一个用于描述其基本遗传结构的数据结构来表示。
- 染色体:染色体是指对个体进行编码后所得到的编码串。
- 适应度函数:适应度函数是一种用来对种群中各个个体的环境适应性进行度量的函数。
- 遗传操作:遗传操作是指作用于种群而产生新的种群的操作。包括如下三种:
选择:不同的选择策略将导致不同的选择压力,即下一代中父代个体的复制数目的不同分配关系。转盘式选择是基于适应值比例的选择中比较重要的选择策略。
杂交:杂交运算是指对两个相互配对的染色体按某种方式相互交换其部分基因,从而形成两个新的个体。包括单点杂交、双点杂交与多点杂交、均匀杂交等杂交方法。
变异:变异运算是指将个体染色体编码串中的某些基因座上的基因值用该基因座的其它等位基因来替换,从而形成一个新的个体。包括基本位变异、均匀变异等。
三、matlab实现
1、初始化迭代次数、群体规模、交叉概率(pc)、变异概率(pm)及染色体长度(L);初始化规模为N的种群,其中染色体每个基因的值随机生成;初始化最优适应度(bestv),选择待优化函数,调用Drawfunc函数画出待优化的函数。
%初始化参数
T=500;%仿真代数
N=80;% 群体规模
pm=0.05;pc=0.8;%交叉变异概率
umax=30;umin=-30;%参数取值范围
L=10;%单个参数字串长度,总编码长度Dim*L
Dim=5;%Dim维空间搜索
bval=round(rand(N,Dim*L));%初始种群,round函数为四舍五入
bestv=-inf;%最优适应度初值
funlabel=1; %选择待优化的函数,1为Rastrigin,2为Schaffer,3为Griewank
Drawfunc(funlabel);%画出待优化的函数,只画出二维情况作为可视化输出
Drawfunc函数:
function Drawfunc(label)
x=-5:0.05:5;%41列的向量
if label==1
y = x;
[X,Y] = meshgrid(x,y);
[row,col] = size(X);
for l = 1 :col
for h = 1 :row
z(h,l) = Rastrigin([X(h,l),Y(h,l)]);
end
end
surf(X,Y,z);
shading interp
xlabel('x1-axis'),ylabel('x2-axis'),zlabel('f-axis');
title('mesh');
end
if label==2
y = x;
[X,Y] = meshgrid(x,y);
[row