- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
遗传算法 最值
遗传算法 最值
遗传算法(Genetic Algorithm)是模拟生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它最初由美国Michigan大学J.Holland教授于1975年首先提出来的,并出版了颇有影响的专著《Adaptation in Natural and Artificial Systems》,GA这个名称才逐渐为人所知,J.Holland教授所提出的GA通常为简单遗传算法(SGA)。
图 1. 遗传算法的流程图
所求函数为y=x+10*sin(5*x)+7*cos(4*x)
%主函数
function main()
global chrom lchrom oldpop newpop varible fitness popsize sumfitness %定义全局变量
global pcross pmutation temp bestfit maxfit gen bestgen
global maxgen po pp mp np
%
lchrom=12; %染色体长度
popsize=30; %种群大小
pcross=0.6; %交叉概率
pmutation=0.1; %变异概率,取到了最大,可以适当的减小点设定为0.05
maxgen=100; %最大代数
po=0.1; %淘汰概率
pp=0.1; %保护概率
%
mp=floor(pp*popsize); %保护的个数
np=floor(po*popsize); %淘汰的个数
%
initpop; % 初始种群
%
for gen=1:maxgen
generation;
end
%
best;
bestfit % 最佳个体适应度值输出
bestgen % 最佳个体所在代数输出
gen=1:maxgen;
plot(gen,maxfit(1,gen)); % 进化曲线
%
%*******************产生初始种群 ************************************
%
function initpop()
global lchrom oldpop popsize chrom
for i=1:popsize
chrom=rand(1,lchrom); % lchrom=12 染色体长度
for j=1:lchrom
if chrom(1,j)0.5
chrom(1,j)=0;
else
chrom(1,j)=1;
end
end
oldpop(i,1:lchrom)=chrom;
end
%
%***产生新一代个体**********************************
%
function generation()
objfun; %计算适应度值
pp_po; %保护淘汰操作
select; %选择操作
crossover;
mutation;
%
%********************计算适应度值********************************
%
function objfun()
global lchrom oldpop fitness popsize chrom maxfit gen varible
a=0;
b=30;
for i=1:popsize
chrom=oldpop(i,:);
c=decimal(chrom);
varible(1,i)=a+c*(b-a)/(2.^lchrom-1); %对应变量值
fitness(1,i)=varible(1,i)*varible(1,i);
% fitness(1,i)=20*cos(0.25*varible(1,i))-12*sin(0.33*varible(1,i))+40; %个体适应度函数值
end
%
lsort; % 个体排序
%
maxfit(1,gen)=max(fitness); %求最大适应度值
%
%********************二进制转十进制********************
文档评论(0)