您的当前位置:首页正文

遗传算法实验报告模板

2024-06-26 来源:爱go旅游网

遗传算法实验报告模板

一、题目1

2ma_{f(_)_|__}最大值,解空间为非负整数集求解优化问题

_={0,1,2….,31}。

(1)matlab源程序及说明

question1.m

clear

figure(1);

plot([0:31].^2);%画出函数曲线

%定义遗传算法参数

NIND=4;%Numberofindividuals个体数目

MA_GEN=50;%XXX最大遗传代数PRECI=5;%变量的二进制位数,即个体编码串的长度

GGAP=0.5;%Generationgap代沟

trace=zeros(2,MA_GEN);%寻优结果的初始值

FieldD=[5;0;31;1;0;1;1];%区域描述器BuildfielddescriptorChrom=crtbp(NIND,PRECI);%初始种群

gen=0;%代计数器

variable=bs2rv(Chrom,FieldD);%计算初始种群的十进制转换ObjV=variable.^2;%计算目标函数值

%Generationalloop

whilegen

%Assignfitnessvaluestoentirepopulation

FitnV=ranking(-ObjV);%分配适应度值

%Selectindividualsforbreeding

SelCh=select('sus',Chrom,FitnV,GGAP);%选择

%Recombineindividuals(crossover)

SelCh=recombin('_ovsp',SelCh,0.7);%重组交叉

%Applymutation

SelCh=mut(SelCh);%变异,mut(SelCh,Pm),这里Pm表示变异概率variable=bs2rv(SelCh,FieldD);%子代个体的十进制转换

%Evaluateoffspring,callobjectivefunction

ObjVSel=variable.^2;%计算子代个体的目标函数值

%Reinsertoffspringintopopulation

[ChromObjV]=reins(Chrom,SelCh,1,1,-ObjV,-ObjVSel);%重插入子代的新种群ObjV=-ObjV;

%Incrementcounter

gen=gen+1;

%输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群序号

(2)程序运行结果

图1f(_)=_2结果函数图

图2遗传算法每代最优解变化图线及种群均值变化图线

从图线我们可以看到,遗传算法最终求解的结果为:

当_=31时得到函数最大值961。

二、题目2

用遗传算法求函数y(_)=_sin(1/_)在_∈[0.05,0.5]间的极小值。取种群大小M=10,Pc=0.8,Pm=0.01。

(1)matlab源程序及说明

FieldD=[15;0;31;1;0;1;1];%区域描述器Buildfielddescriptor

Chrom=crtbp(NIND,PRECI);%初始种群

gen=0;%代计数器

variable=bs2rv(Chrom,FieldD);%计算初始种群的十进制转换

ObjV=XXX(1./variable);%计算目标函数值

%Generationalloop

whilegen

%Assignfitnessvaluestoentirepopulation

FitnV=ranking(ObjV);%分配适应度值

%Selectindividualsforbreeding

SelCh=select('sus',Chrom,FitnV,GGAP);%选择

%Recombineindividuals(crossover)

SelCh=recombin('_ovsp',SelCh,0.8);%重组交叉

%Applymutation

SelCh=mut(SelCh,0.01);%变异,mut(SelCh,Pm),这里Pm表示变异概率variable=bs2rv(SelCh,FieldD);%子代个体的十进制转换

%Evaluateoffspring,callobjectivefunction

ObjVSel=XXX(1./variable);%计算子代个体的目标函数值%Reinsertoffspringintopopulation

[ChromObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入子代的新种群%Incrementcounter

gen=gen+1;

%输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群序号

[Y,I]=min(ObjV);

trace(1,gen)=min(ObjV);

trace(2,gen)=sum(ObjV)/length(ObjV);

variable=bs2rv(Chrom,FieldD);

holdon,grid;

plot(variable,ObjV,'b');

figure(2);

plot(trace(1,:)');

holdon;

plot(trace(2,:)','-.');grid;

legend('解的变化','种群均值的变化')

(2)程序运行结果

图3函数y(_)=_sin(1/_)结果图像

图4遗传算法每代最优解变化图线及种群均值变化图线

从图线我们可以看到,遗传算法最终求解的结果为:

当_=0.2233时,得到函数最小值-0.2172

三、思考题

求解优化问题f(_1,_2)_122_1_23_1_226_2

(1)matlab源程序及说明

question3.m

clear

figure(1);

%画出函数曲面

_=[-127:1:128];

[_,Y]=meshgrid(_);

z=_.^2-2._.Y+3._+Y.^2-6.Y;

mesh(_,Y,z);

_label('_轴');

ylabel('y轴');

zlabel('z轴');

%定义遗传算法参数

NIND=15;%Numberofindividuals个体数目

MA_GEN=50;%XXX最大遗传代数

PRECI=7;%变量的二进制位数,即个体编码串的长度

GGAP=0.8;%Generationgap代沟

trace=zeros(2,MA_GEN);%寻优结果的初始值

FieldD=[77;-127-127;128128;11;00;11;11];%区域描述器BuildfielddescriptorChrom=crtbp(NIND,PRECI2);%初始种群

gen=0;%代计数器

variable=bs2rv(Chrom,FieldD);%计算初始种群的十进制转换

ObjV=variable(:,1).^XXX(:,1).variable(:,2)+XXX(:,1)+variable(:,2).^XXX(:,2);%计算目标函数值

%Generationalloop

whilegen

%Assignfitnessvaluestoentirepopulation

FitnV=ranking(-ObjV);%分配适应度值

%Selectindividualsforbreeding

SelCh=select('sus',Chrom,FitnV,GGAP);%选择

%Recombineindividuals(crossover)

SelCh=recombin('_ovsp',SelCh,0.8);%重组交叉

%Applymutation

SelCh=mut(SelCh,0.01);%变异,mut(SelCh,Pm),这里Pm表示变异概率

variable=bs2rv(SelCh,FieldD);%子代个体的十进制转换

%Evaluateoffspring,callobjectivefunction

ObjVSel=variable(:,1).^XXX(:,1).variable(:,2)+XXX(:,1)+variable(:,2).^XXX(:,2);%计算子代个体的目标函数值

%Reinsertoffspringintopopulation

[ChromObjV]=reins(Chrom,SelCh,1,1,-ObjV,-ObjVSel);%重插入子代的新种群

ObjV=-ObjV;

%Incrementcounter

gen=gen+1;

%输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群序号

[Y,I]=ma_(ObjV);

trace(1,gen)=ma_(ObjV);

trace(2,gen)=sum(ObjV)/length(ObjV);

variable=bs2rv(Chrom,FieldD);

holdon;

plot3(variable(:,1),variable(:,2),ObjV,'b');

figure(2);

plot(trace(1,:)');

holdon;

plot(trace(2,:)','-.');grid;

legend('解的变化','种群均值的变化')

(2)程序运行结果

图5f(_1,_2)_122_1_23_1_226_2函数结果图

图6遗传算法每代最优解变化图线及种群均值变化图线

由上述两幅图可知,遗传算法找到了范围中的一个最大值点:

_1=128,_2=-127,最大值为:66171

四、实验体会

这次的实验内容是关于遗传算法的一些运用,即在运用MATLAB的基础上求解一元和二元函数的最优化问题。

在实验过程中,我感受到了遗传算法的优点。遗传算法有比一般最优化方法更快的收敛速度,这样就能更快地找到最优值。

显示全文