01二维光子晶体禁带的遗传优化算法MATLAB源代码.docxVIP

01二维光子晶体禁带的遗传优化算法MATLAB源代码.docx

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

二维光子晶体禁带的遗传优化算法MATLAB源代码光子晶体中因周期性结构而存在的频率禁带称为光子禁带,光子禁带的存在是光子晶体具有广泛应用前景的重要原因。 禁带越大,可控光的频带也越宽,因此如何设计合适的晶体结构以获得大的光子禁带一直是研究和应用的重点与热点。function [Zp,Yp,Xp,LC1,LC2]=PBGGA(M,N,Pm)%--------------------------------------------------------------------------% PBGGA.m% Photonic Band Gap Genetic Algorithm% 二维光子晶体禁带的遗传优化算法% GreenSim团队——专业级算法设计代写程序% 欢迎访问GreenSim团队主页→/greensim%--------------------------------------------------------------------------% 函数功能% 在平面波展开法的基础上,使用遗传算法寻找具有最大光子禁带的二维光子晶体结构%--------------------------------------------------------------------------% 主要参考文献% 龚春娟,胡雄伟.快速遗传算法优化计算二维光子晶体[J].% 半导体学报.2006,27(6):1098-1102%--------------------------------------------------------------------------% 输入参数列表% M遗传进化迭代次数% N种群规模(取偶数)% Pm变异概率%--------------------------------------------------------------------------% Zp最大禁带% Yp最大禁带的区间上下限% Xp光子晶体结构决策变量(10×10的01矩阵)% LC1收敛曲线1,各代最优个体适应值的记录% LC2收敛曲线2,各代群体平均适应值的记录%--------------------------------------------------------------------------%第一步:变量初始化epsa=11.56;%介质介电常数epsb=1;%空气介电常数Xp=zeros(10,10);%最优结构Yp=zeros(1,2);%禁带上下限Zp=0;%禁带宽度LC1=zeros(1,M);%收敛曲线1LC2=LC1;%收敛曲线2%第二步:随机产生初始钟群farm=cell(1,N);%采用细胞结构存储种群for i=1:N A=unidrnd(2,5,10)-ones(5,10);%由于基本单元结构是中心对称的,所以只需要对矩阵的上半部分进行初始化 B=flipud(fliplr(A));%剩余部分先做上下倒置,再做左右旋转 C=[A;B];%把两步分合并 farm{i}=reshape(C,100,1);%个体被存储在细胞结构farm中endcounter=0;%设置迭代计数器while counterM%停止条件为达到最大迭代次数 %第三步:交叉 newfarm=cell(1,N);%交叉产生的新种群存在这里面 Ser=randperm(N);%用这个函数保证随机配对 for i=1:2:(N-1) AA=reshape(farm{Ser(i)},10,10);% 待交叉的两个父代个体 BB=reshape(farm{Ser(i+1)},10,10); A=AA(1:5,:);%为保证对称性,需先提取其中一半的基因 B=BB(1:5,:); Manner=unidrnd(2);%随机选择交叉方式 if Manner==1%横交叉 cp=unidrnd(4);%随机选择交叉点 a=[A(1:cp,:);B((cp+1):5,:)];%双亲双子单点交叉 b=[B(1:cp,:);A((cp+1):5,:)]; else%列交叉 cp=unidrnd(9);%随机选择交叉点 a=[A(:,1:cp),B(:,(cp+1):10)];%双亲双子单点交叉 b=[B(:,1:cp),A(:,(cp+1):10)]; end a=[a;flipud(fliplr(a))];%反演对称 b=[b;flipud(fliplr(b))]; newfarm{i}=reshape(a,100,1);%交叉后的子代存入newfarm newfarm{i+1}=reshape(b,100,1); end %新旧种群合并 FARM=[farm,newfarm];

文档评论(0)

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

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

1亿VIP精品文档

相关文档