基于遗传算法的函数优化文档格式.docx
- 文档编号:22497401
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:25
- 大小:130.27KB
基于遗传算法的函数优化文档格式.docx
《基于遗传算法的函数优化文档格式.docx》由会员分享,可在线阅读,更多相关《基于遗传算法的函数优化文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
变异操作同样也是随机进行的。
一般而言,变异概率
都取得较小。
变异操作是十分微妙的遗传操作,它需要和交叉操作配合使用,目的是挖掘群体中个体的多样性,克服有可能限于局部解的弊病。
这6个要素构成了遗传算法的核心内容,其流程如图6.1所示。
图6.1遗传算法的基本流程
2.二进制编码及解码方法
二进制编码是遗传算法中最主要的一种编码方法,它使用的编码符号集是由二进制符号0和1所组成的二进制符号集{0,1},它所构成的个体基因型是一个二进制编码符号串。
二进制编码符号串的长度与问题所要求的求解精度有关。
假设某一参数的取值范围是[Umin,Umax],我们用长度为L的二进制编码符号串来表示该参数,则它总共能够产生
种不同的编码,若使参数编码时的对应关系如下:
00000000…00000000=0→Umin
00000000…00000001=1→Umin+δ
………
111111111…11111111=2L﹣1→Umax
则二进制编码的编码精度为:
(6-1)
假设某一个个体的编码是:
X
bLbL﹣1bL,则对应的解码公式为:
(6-2)
例如,对于
,若用十位长的二进制编码来表示该参数的话,则下述符号串:
X:
0010101111
就可表示一个个体,它所对应的参数值是
此时的编码精度为
其中:
f个体适应度
[Umin,Umax]某变量的取值范围
δ编码精度
三、算法步骤及流程图
Step1:
参数设置及种群初始化;
Step2:
适应度评价;
Step3:
轮盘赌选择;
Step4:
交叉;
Step5:
变异;
Step6:
Step7:
终止条件判断,若未达到终止条件,则转到Step3;
Step8:
输出结果。
四、实验程序
主程序
clc;
clear;
closeall;
v=2*rand(50,22)-1;
v=hardlim(v);
[N,L]=size(v);
ger=200;
pc=0.5;
pm=0.01;
updatef=0;
c=0;
disp(sprintf('
Numberofgenerations:
%d'
ger));
Populationsize:
N));
Crossoverprobability:
%.3f'
pc));
Mutationprobability:
pm));
f='
-1*(x.^2+y.^2)'
;
%Generalparameters&
Initialoperations
sol1=1;
vmfit=[];
it=1;
vx=[];
C=[];
updatef=-10;
x=decod(v(:
1:
11),11);
y=decod(v(:
12:
end),11);
fit=eval(f);
%Generations
t0=clock;
whileit<
=ger
%Selection轮盘赌
fori=1:
N
sp(i)=(fit(i)+3)/sum(fit+3);
%
end
fori=2:
sp(i)=sp(i-1)+sp(i);
p=rand
(1);
sindex=1;
whilep>
sp(sindex)
sindex=sindex+1;
%寻找要选择个体的位置
end
newv(i,:
)=v(sindex,:
);
v(i,:
)=newv(i,:
%用选择出的个体构成的种群替代旧的种群
%Crossver
cindex(i)=i;
N%产生要配对的父代的序号;
经过N次顺序调换,将原有顺序打乱,使相邻两个个体作为交叉的父代
point=unidrnd(N-i+1);
temp=cindex(i);
cindex(i)=cindex(i+point-1);
cindex(i+point-1)=temp;
2:
if(p<
pc)
point=unidrnd(L-1)+1;
%1<
point<
L产生交叉点
forj=point:
(L-1)%交叉
ch=v(cindex(i),j);
v(cindex(i),j)=v(cindex(i+1),j);
%cindex中相邻的两个为两个父代的序号
v(cindex(i+1),j)=ch;
%Mutation
M=rand(N,L)<
=pm;
%产生(N,L)维的01矩阵,为1的位置进行变异
v=v-2.*(v.*M)+M;
%Evaluatefitness&
Evolution
[sol1,indb1]=max(fit);
ifupdatef>
=sol1
sol1=updatef;
v(indb1,:
)=updatec;
updatef=sol1;
updatec=v(indb1,:
[sol2,indb2]=min(fit);
v(indb2,:
)=v(indb1,:
media=mean(fit);
vx=[vxsol1];
vmfit=[vmfitmedia];
ifrem(it,1)==0|it==10,
ifc~=1
disp(sprintf('
Gen.:
%dx:
%2.5fy:
%2.5fAv:
%2.2ff(x,y):
%2.40f'
it,x(indb1),y(indb1),media,sol1));
else
%dAv:
%2.5f'
it,media,sol1));
end;
it=it+1;
end;
T=etime(clock,t0);
%F=flops-f0;
X=x;
Y=y;
x=x(indb1);
y=y(indb1);
fx=sol1;
P=v;
thetotaltimeis%2.4f'
T));
Maximumfound[f(x,y)]:
[%.2f]'
fx));
%xx=vx;
yy=vmfit;
figure
(2);
plot(vx,'
k'
title('
f(x,y)xMean'
xlabel('
Generations'
ylabel('
f(x,y)'
holdon;
plot(vmfit,'
k:
'
legend('
best'
'
mean'
0);
holdoff;
decod.m子程序
functioncode=decod(w_code,len)
w_size=size(w_code);
code=ones(w_size
(1),1);
%N*1的矩阵
%编写解码表
code_arry=ones(1,len);
fori=0:
len-1
code_arry(i+1)=2.^i;
%针对每一个样本进行解码
fori=1:
w_size
(1)
w=w_code(i,:
m=w.*code_arry;
code(i)=sum(m);
%转换到给定区间
rate=2./(2.^len-1);
code=-1+rate.*code;
return;
程序流程图:
五、实验结果
200
50
0.500
0.010
1x:
0.05227y:
0.17440Av:
-0.55f(x,y):
-0.0331482272125327780000000000000000000000
2x:
0.04934y:
-0.53f(x,y):
-0.0328503900402103420000000000000000000000
3x:
-0.09331y:
-0.12066Av:
-0.48f(x,y):
.023*********
4x:
0.10992Av:
-0.42f(x,y):
-0.0148140582009155010000000000000000000000
5x:
-0.37f(x,y):
6x:
-0.34f(x,y):
7x:
0.07865Av:
-0.31f(x,y):
-0.0089184095590458482000000000000000000000
8x:
0.01612Av:
-0.33f(x,y):
-0.0029922135148867180000000000000000000000
9x:
-0.38f(x,y):
10x:
-0.32f(x,y):
11x:
-0.24f(x,y):
12x:
0.04836y:
-0.25f(x,y):
-0.0025989157104096623000000000000000000000
13x:
14x:
-0.22f(x,y):
15x:
16x:
0.00049Av:
-0.0023392627909490826000000000000000000000
17x:
-0.30f(x,y):
18x:
19x:
20x:
21x:
0.03273y:
0.03175Av:
-0.41f(x,y):
-0.0020796098714885034000000000000000000000
22x:
23x:
24x:
-0.28f(x,y):
25x:
-0.26f(x,y):
26x:
-0.21f(x,y):
27x:
-0.13f(x,y):
28x:
29x:
-0.11f(x,y):
30x:
-0.10f(x,y):
31x:
32x:
33x:
-0.19f(x,y):
34x:
0.02101y:
-0.23f(x,y):
-0.0014495696992679788000000000000000000000
35x:
36x:
37x:
38x:
-0.17f(x,y):
39x:
0.02003y:
-0.0014094762337630387000000000000000000000
40x:
-0.18f(x,y):
41x:
0.01710y:
0.00440Av:
-0.15f(x,y):
-0.0003116789639848482400000000000000000000
42x:
43x:
44x:
45x:
-0.20f(x,y):
46x:
47x:
48x:
0.00537y:
-0.0000482076192380845980000000000000000000
49x:
50x:
51x:
0.00244Av:
-0.0000348431307364366280000000000000000000
52x:
-0.0000291154928071597700000000000000000000
53x:
54x:
0.00147y:
-0.0000214786422347901870000000000000000000
55x:
-0.09f(x,y):
56x:
-0.07f(x,y):
57x:
-0.04f(x,y):
58x:
0.00049y:
-0.03f(x,y):
-0.0000195694295916979000000000000000000000
59x:
60x:
0.0044
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 遗传 算法 函数 优化