遗传算法程序_第1页
遗传算法程序_第2页
遗传算法程序_第3页
遗传算法程序_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、function ret=Mutation(pmutation,lenchrom,chrom,sizepop,pop,bound)% 本函数完成变异操作% pcorss input : 变异概率% lenchrom input : 染色体长度% chrom input : 染色体群% sizepop input : 种群规模% pop input : 当前种群的进化代数和最大的进化代数信息% ret output : 变异后的染色体for i=1:sizepop % 随机选择一个染色体进行变异 pick=rand; while pick=0 pick=rand; end index=ceil(

2、pick*sizepop); % 变异概率决定该轮循环是否进行变异 pick=rand; if pickpmutation continue; end flag=0; while flag=0 % 变异位置 pick=rand; while pick=0 pick=rand; end pos=ceil(pick*sum(lenchrom); %随机选择了染色体变异的位置,即选择了第pos个变量进行变异 v=chrom(i,pos); v1=v-bound(pos,1); v2=bound(pos,2)-v; pick=rand; %变异开始 if pick0.5 delta=v2*(1-pic

3、k(1-pop(1)/pop(2)2); chrom(i,pos)=v+delta; else delta=v1*(1-pick(1-pop(1)/pop(2)2); chrom(i,pos)=v-delta; end %变异结束 flag=test(lenchrom,bound,chrom(i,:); %检验染色体的可行性 endendret=chrom;Ga优化pso% GA 优化 PSO% 清空环境clc;clearclose all% 参数初始化lenchrom=7; %字符串长度(个体长度),染色体编码长度pc=0.7; %设置交叉概率,本例中交叉概率是定值,若想设置变化的交叉概率可

4、用表达式表示,或从写一个交叉概率函数,例如用神经网络训练得到的值作为交叉概率pm=0.3; %设置变异概率,同理也可设置为变化的%粒子群算法中的两个参数c1 = 1.49445;c2 = 1.49445;maxgen=20; % 进化次数 popsize=30; %种群规模%粒子更新速度Vmax=1;Vmin=-1;%种群popmax=50;popmin=-50;% 变量取值范围bound=popmin popmax;popmin popmax;popmin popmax;popmin popmax;popmin popmax;popmin popmax;popmin popmax; %变量范

5、围% 优化粒子数目par_num=7;% 产生初始粒子和速度for i=1:popsize %随机产生一个种群 pop(i,:)=popmax*rands(1,par_num); %初始种群 V(i,:)=rands(1,par_num); %初始化速度 %计算适应度 fitness(i)=fun(pop(i,:); %染色体的适应度end%找最好的染色体bestfitness bestindex=min(fitness);zbest=pop(bestindex,:); %全局最佳gbest=pop; %个体最佳fitnessgbest=fitness; %个体最佳适应度值fitnesszbe

6、st=bestfitness; %全局最佳适应度值% 迭代寻优for i=1:maxgen i for j=1:popsize %速度更新 PSO选择更新 V(j,:) = V(j,:) + c1*rand*(gbest(j,:) - pop(j,:) + c2*rand*(zbest - pop(j,:); V(j,find(V(j,:)Vmax)=Vmax; V(j,find(V(j,:)popmax)=popmax; pop(j,find(pop(j,:) PSO pop % 适应度值 - 约束条件 if 0.072*pop(j,1)+0.063*pop(j,2)+0.057*pop(j

7、,3)+0.05*pop(j,4)+0.032*pop(j,5)+0.0442*pop(j,6)+0.0675*pop(j,7)=264.4 if 128*pop(j,1)+78.1*pop(j,2)+64.1*pop(j,3)+43*pop(j,4)+58.1*pop(j,5)+36.9*pop(j,6)+50.5*pop(j,7)=69719 fitness(j)=fun(pop(j,:); end end %个体最优更新 if fitness(j) fitnessgbest(j) gbest(j,:) = pop(j,:); fitnessgbest(j) = fitness(j); end %群体最优更新 if fitness(j) fitnesszbest zbest = pop(j,:); fitnesszbest = fitness(j); end end yy(i)=fitnesszbest; end% 结果dis

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论