遗传算法优化程序.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
遗传算法优化程序

function [Y,X]=Objfunction(x,lenchrom) %% 目标函数 % 输入 x:二进制编码 % lenchrom:各变量的二进制位数 % 输出 Y:目标值 % X:十进制数 bound=[-3.0 12.1;4.1 5.8]; % 函数自变量的范围 %% 将binary数组转化成十进制数组 X=bin2decFun(x,lenchrom,bound); %% 计算适应度-函数值 Y=sin(4*pi*X(1))*X(1)+sin(20*pi*X(2))*X(2); function X=bin2decFun(x,lenchrom,bound) %% 二进制转化成十进制 % 输入 x:二进制编码 % lenchrom:各变量的二进制位数 % bound:各变量的范围 % 输出 X:十进制数 M=length(lenchrom); n=1; X=zeros(1,M); for i=1:M for j=lenchrom(i)-1:-1:0 X(i)=X(i)+x(n).*2.^j; n=n+1; end end X=bound(:,1)+X./(2.^lenchrom-1).*(bound(:,2)-bound(:,1)); clc; clear all; close all; %----------------参数设置----------------------- MAXGEN=200; % 最大遗传代数 sizepop=40; % 种群大小 lenchrom=[20 20]; % 每个变量的二进制长度 trace=zeros(1,MAXGEN); %-------------------------------------------------------------------------- best=struct(fitness,0,X,[],binary,[],chrom,[]); % 最佳个体 记录其适应度值、十进制值、二进制编码、量子比特编码 %% 初始化种群 chrom=InitPop(sizepop*2,sum(lenchrom)); %% 对种群实施一次测量 得到二进制编码 binary=collapse(chrom); %% 求种群个体的适应度值,和对应的十进制值 [fitness,X]=FitnessFunction(binary,lenchrom); % 使用目标函数计算适应度 %% 记录最佳个体到best [best.fitness bestindex]=max(fitness); % 找出最大值 best.binary=binary(bestindex,:); best.chrom=chrom([2*bestindex-1:2*bestindex],:); best.X=X(bestindex,:); trace(1)=best.fitness; fprintf(%d\n,1) %% 进化 for gen=2:MAXGEN fprintf(%d\n,gen) %提示进化代数 %% 对种群实施一次测量 binary=collapse(chrom); %% 计算适应度 [fitness,X]=FitnessFunction(binary,lenchrom); %% 量子旋转门 chrom=Qgate(chrom,fitness,best,binary); [newbestfitness,newbestindex]=max(fitness); % 找到最佳值 % 记录最佳个体到best if newbestfitnessbest.fitness best.fitness=newbestfitness; best.binary=binary(newbestindex,:); best.chrom=chrom([2*newbestindex-1:2*newbestindex],:); best.X=X(newbestindex,:); end trace(gen)=best.fitness; end %% 画进

文档评论(0)

tiangou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档