%采用变异方法为:x(t+1)=x(t)+r 其中,r为区间[xmin-x(t),xmax_x(t)]
%并用了精英保留策略选择和轮盘赌选择法
%交叉操作采用中间重组方式,a不等于a'
clear;
popsize=100;pcmax=0.8;pcmin=0.1;pmmax=0.4;pmmin=0.01; %总群大小100
varnum=2; %变量个数2
%=================================初始化======================================
for i=1:popsize*2
popini(i).x(1)=rand(1)*200-100; %初始种群为2倍的种群大小
popini(i).x(2)=rand(1)*200-100;
popini(i).fit=0.5-((sin((popini(i).x(1)^2+popini(i).x(2)^2)^(1/2)))^2-0.5)/(1+0.001*(popini(i).x(1)^2+popini(i).x(2)^2))^2;
end
for i=0:(popsize/4-1)
pt_ts=rand(1,30)*(popsize*2-1)+1; %锦标赛选择法每次从popini中选30个的指针
pt_ts=round(pt_ts);
for j=1:length(pt_ts)
initial_temp1(j)=popini(pt_ts(j)).fit;
end
[initial_temp2,initial_position]=sort(initial_temp1);%把随意找出的30个适应度升序排序
initial_temp2=fliplr(initial_temp2);
initial_position=fliplr(initial_position);
for j=1:4 %每次只从popini中挑出的30个中找出4个适应度最大的
pop(4*i+j).x=popini(initial_position(j)).x;
end
end
%==============================================================================
for k=1:150
%================================选择操作======================================
fitsum=0;
for i=1:popsize
pop(i).fit=0.5-((sin((pop(i).x(1)^2+pop(i).x(2)^2)^(1/2)))^2-0.5)/(1+0.001*(pop(i).x(1)^2+pop(i).x(2)^2))^2;
end
bestfit=pop(1).fit;
for i=1:popsize
fitsum=fitsum+pop(i).fit;
if pop(i).fit>bestfit %经营保留策略
best=pop(i).x;
bestfit=pop(i).fit;
end
end
for i=1:popsize %相对适应度
pop(i).rfit=pop(i).fit/fitsum;
end
%相对适应度jiang序排列
for j=1:popsize-1
for i=1:popsize-j
if pop(i).rfit<pop(i+1).rfit
lin=pop(i);pop(i)=pop(i+1);pop(i+1)=lin;
end
end
end
for i=2:popsize
pop(i).rfit=pop(i).rfit+pop(i-1).rfit;
end
for i=1:popsize
wp=rand(1);j=1;
while wp>pop(j).rfit
j=j+1;
end
slec_temp2(i)=pop(j);
end
for i=1:popsize
pop(i)=slec_temp2(i);
end
%==========================================================================
%================================交叉操作==================================
for i=1:popsize
cross_temp1(i)=pop(i).fit;
end
fitavg(k)=mean(cross_temp1');fitmax(k)=max(cross_temp1');
couple=randperm(popsize);
for i=1:2:popsize-1
wp=rand(1);
if pop(couple(i+1)).fit>pop(couple(i)).fit
f=pop(couple(i+1)).fit;
else
f=pop(couple(i)).fit;
end
if f>=fitavg(k)
pc=(pcmax-pcmin)/(1+exp((9.903438*2*(f-fitavg(k)))/(fitmax(k)-fitavg(k))))+pcmin;
else
pc=pcmax;
end
if wp<pc
b=rand(1,4);
cross_temp2(i).x(1)=pop(couple(i+1)).x(1)+b(1)*(pop(couple(i)).x(1)-pop(couple(i+1)).x(1));
cross_temp2(i).x(2)=pop(couple(i+1)).x(2)+b(2)*(pop(couple(i)).x(2)-pop(couple(i+1)).x(2));
cross_temp2(i+1).x(1)=pop(couple(i)).x(1)+b(3)*(pop(couple(i+1)).x(1)-pop(couple(i)).x(1));
cross_temp2(i+1).x(2)=pop(couple(i)).x(2)+b(4)*(pop(couple(i+1)).x(2)-pop(couple(i)).x(2));
else
cross_temp2(i).x=pop(couple(i)).x;
cross_temp2(i+1).x=pop(couple(i+1)).x;
end
end
for i=1:popsize
pop(i).x=cross_temp2(i).x;
end
%==========================================================================
%================================变异操作==================================
m=20;L=200;
for i=1:popsize
muta_temp1(i)=pop(i).fit;
end
fitavg(k)=mean(muta_temp1');fitmax(k)=max(muta_temp1');
for i=1:popsize
wp=rand(1);
if pop(i).fit>=fitavg(k)
pm=(pmmax-pmmin)/(1+exp((9.903438*2*(pop(i).fit-fitavg(k)))/(fitmax(k)-fitavg(k))))+pmmin;
else
pm=pmmax;
end
if wp<pm
for j=0:m
if rand(1)<(1/m)
a=1;
else
a=0;
end
muta_temp2(j+1)=a/(2^j);
end
delta=sum(muta_temp2);
if rand(1)<0.5
sign=-1;
else
sign=1;
end
muta_temp3(i).x(1)=pop(i).x(1)+sign*0.5*L*delta;
muta_temp3(i).x(2)=pop(i).x(2)+sign*0.5*L*delta;
while (muta_temp3(i).x(1)<=-100) | (muta_temp3(i).x(2)>=100)
for j=0:m
if rand(1)<(1/m)
a=1;
else
a=0;
end
muta_temp2(j+1)=a/(2^j);
end
delta=sum(muta_temp2);
if rand(1)<0.5
sign=-1;
else
sign=1;
end
muta_temp3(i).x(1)=pop(i).x(1)+sign*0.5*L*delta;
muta_temp3(i).x(2)=pop(i).x(2)+sign*0.5*L*delta;
end
else
muta_temp3(i).x(1)=pop(i).x(1);
muta_temp3(i).x(2)=pop(i).x(2);
end
end
for i=1:popsize
pop(i).x=muta_temp3(i).x;
end
for i=1:popsize
pop(i).fit=0.5-((sin((pop(i).x(1)^2+pop(i).x(2)^2)^(1/2)))^2-0.5)/(1+0.001*(pop(i).x(1)^2+pop(i).x(2)^2))^2;
muta_temp4(i)=pop(i).fit
end
[worst,num]=min(muta_temp4');pop(num).x=best;
%==========================================================================
end
plot(fitavg,'-');
grid on;
阿里matlab建模师
- 粉丝: 4383
- 资源: 2852
最新资源
- 14-【培训体系构建】-如何塑造一支高效的企业内训师队伍.doc.docx
- 15-【培训体系构建】-如何提高企业文化培训活动的实效性——5W2H.doc.docx
- 13-【培训体系构建】-如何进行企业文化培训评估.doc.docx
- 16-【激励体系构建】-员工满意度调查问卷.doc.docx
- 18-【激励体系构建】-如何有效实施企业文化考核?.doc.docx
- 20-【传播体系构建】-企业文化主题宣传计划表(不含活动).doc.docx
- 21-【传播体系构建】-企业文化传播载体分类清单.doc.docx
- 19-【激励体系构建】-企业文化激励方案设计表.doc.docx
- 22-【传播体系构建】-企业文化活动费用预算表.doc.docx
- 23-【传播体系构建】-联想的单向传播、双向传播与体验传播.doc.docx
- 24-【传播体系构建】-海尔企业文化的全方位传播.doc.docx
- 26-【融入体系构建】-以“八大体系”为核心的企业文化工作评估.doc.docx
- 25-【融入体系构建】-企业文化评估体系构建实践指导.doc.docx
- 27-【融入体系构建】-企业文化调查问卷.docx
- 28-【融入体系构建】-班组文化建设考核指标体系.doc.docx
- 30-【融入体系构建】-常用管理制度清单.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页