三九宝宝网备孕知识月子

MATLAB遗传算法

01月06日 编辑 39baobao.com

[三对相对性状的遗传因子怎么组合]三对分开算,例如AaBbCc*AABbcc,先算Aa和AA,知下一代为1/2Aa,1/2AA再算Bb和Bb,知下一代为1/4BB,1/2Bb,1/4BB最后Cc和cc,知下一代为1/2Cc,1/2cc所以下一代基因型有2*3*2=12种,分别为...+阅读

function ret=Code(lenchrom,bound)%本函数将变量编码成染色体,用于随机初始化一个种群% lenchrom input : 染色体长度% bound input : 变量的取值范围% ret output: 染色体的编码值flag=0;while flag==0 pick=rand(1,length(lenchrom)); ret=bound(:,1)'+(bound(:,2)-bound(:,1))'.*pick; %线性插值 flag=test(lenchrom,bound,ret); %检验染色体的可行性endfunction ret=Cross(pcross,lenchrom,chrom,sizepop,bound)%本函数完成交叉操作% pcorss input : 交叉概率% lenchrom input : 染色体的长度% chrom input : 染色体群% sizepop input : 种群规模% ret output : 交叉后的染色体for i=1:sizepop % 随机选择两个染色体进行交叉 pick=rand(1,2); while prod(pick)==0 pick=rand(1,2); end index=ceil(pick.*sizepop); % 交叉概率决定是否进行交叉 pick=rand; while pick==0 pick=rand; end if pick>pcross continue; end flag=0; while flag==0 % 随机选择交叉位置 pick=rand; while pick==0 pick=rand; end pos=ceil(pick.*sum(lenchrom)); %随机选择进行交叉的位置,即选择第几个变量进行交叉,注意:两个染色体交叉的位置相同 pick=rand; %交叉开始 v1=chrom(index

(1),pos); v2=chrom(index

(2),pos); chrom(index

(1),pos)=pick*v2+(1-pick)*v1; chrom(index

(2),pos)=pick*v1+(1-pick)*v2; %交叉结束 flag1=test(lenchrom,bound,chrom(index

(1),:)); %检验染色体1的可行性 flag2=test(lenchrom,bound,chrom(index

(2),:)); %检验染色体2的可行性 if flag1*flag2==0 flag=0; else flag=1; end %如果两个染色体不是都可行,则重新交叉 endendret=chrom; clc clear all% warning off%% 遗传算法参数maxgen=50; %进化代数sizepop=100; %种群规模pcross=[0.6]; %交叉概率pmutation=[0.1]; %变异概率lenchrom=[1 1]; %变量字串长度bound=[-5 5;-5 5]; %变量范围%% 个体初始化individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %种群结构体avgfitness=[]; %种群平均适应度bestfitness=[]; %种群最佳适应度bestchrom=[]; %适应度最好染色体% 初始化种群for i=1:sizepop individuals.chrom(i,:)=Code(lenchrom,bound); %随机产生个体 x=individuals.chrom(i,:); individuals.fitness(i)= (x

(1)*exp(-(x

(1)^2 + x

(2)^2))); %-20*exp(-0.2*sqrt((x

(1)^2+x

(2)^2)/2))-exp((cos(2*pi*x

(1))+cos(2*pi*x

(2)))/2)+20+2.71289 % 这个是我的测试函数 % 如果有这个函数的话,可以得到最优值end%找最好的染色体[bestfitness bestindex]=min(individuals.fitness);bestchrom=individuals.chrom(bestindex,:); %最好的染色体avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度% 记录每一代进化中最好的适应度和平均适应度trace=[]; %% 进化开始for i=1:maxgen % 选择操作 individuals=Select(individuals,sizepop); avgfitness=sum(individuals.fitness)/sizepop; % 交叉操作 individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound); % 变异操作 individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[i maxgen],bound); % 计算适应度 for j=1:sizepop x=individuals.chrom(j,:); individuals.fitness(j)=(x

(1)*exp(-(x

(1)^2 + x

(2)^2))); %-20*exp(-0.2*sqrt((x

(1)^2+x

(2)^2)/2))-exp((cos(2*pi*x

(1))+cos(2*pi*x

(2)))/2)+20+2.71289 % -20*exp(-0.2*sqrt((x

(1)^2+x

(2)^2)/2))-exp((cos(2*pi*x

(1))+cos(2*pi*x

(2)))/2)+20+2.71289; end %找到最小和最大适应度的染色体及它们在种群中的位置 [newbestfitness,newbestindex]=min(individuals.fitness); [worestfitness,worestindex]=max(individuals.fitness); % 代替上一次进化中最好的染色体 if bestfitness>newbestfitness bestfitness=newbestfitness; bestchrom=individuals.chrom(newbestindex,:); end individuals.chrom(worestindex,:)=bestchrom; individuals.fitness(worestindex)=bestfitness; avgfitness=sum(individuals.fitness)/sizepop; trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度end%进化结束%% 结果显示[r c]=size(trace);figureplot([1:r]',trace(:,1),'r-',[1:r]',trace(:,2),'b--');title(['函数值曲线 ' '终止代数=' num2str(maxgen)],'fontsize',12);xlabel('进化代数','fontsize',12);ylabel('函数值','fontsize',12);legend('各代平均值','各代最佳值','fontsize',12);ylim([-0.5 5])disp('函数值 变量');% 窗口显示disp([bestfitness x]);

以下为关联文档:

你们唇裂有没有遗传很多小时候是兔唇患者的父母都非常担心这个问题。兔唇会严重影响外貌,也会影响到孩子的身心健康,不利于孩子健康成长,这是所有父母不想看到的。但是造成幼儿兔唇的原因有很多,那...

遗传病主要有哪些?哪些能够在小孩出生前预防遗传性疾病是由于遗传物质改变而造成的疾病。 遗传病具有先天性、家族性、终身性、遗传性的特点。 遗传病的种类大致可分为三类: 一、单基因病。 单基因常常表现出功能性的改...

影响孩子的遗传性疾病有哪些1。哮喘病。如果父母双方有一人患有 哮喘病,则孩子得哮喘病的概率有25%;如 果两人都患有哮喘,则孩子得病的概率便会 上升到50%。 2。糖展病。如果父母双方有一人患有1 型(胰岛素...

遗传和环境的问题遗传与环境在心理发展中的作用(一)单因素论 1、遗传决定论:心理发展是由遗传因素决定的;心理发展的过程是遗传素质的自然显现过程;环境的作用只能促进和延缓遗传素质的自我显现...

遗传与环境的关系是怎样的人类的物质、生理、智力等许许多多方面都离不开遗传因素,虽然是由 父母的基因遗传而来,但也不能忽视后天环境因素所起的作用,这也是人们 在防止遗传病发生时应重视的。 在曰常...

遗传与环境哪个对孩子的影响较大你好, 遗传是变异的对应词。一般指亲代的性状又在下代表现的现象,即亲代与子代、子代个体间性状的相似。遗传是重要的生命特征之一, 其传统的意义是指生物在通过生殖所进行的种...

小孩血型一般遗传谁的孩子的血型是父母双方共同决定的,因为每个人有两个基因,所以从父母中各随机出来一个,组成的就是孩子的血型。绝大部分的人都是ABO血型系统,即A、B、AB、O四种,其次是Rh血型系统,较...

我需要一个基于免疫遗传算法的matlab程序关于函数寻优的最好在% 主程序 %遗传算法主程序 %Name:genmain.m %author:杨幂 clear clf %%初始化 popsize=50; %群体大小 chromlength=30; %字符串长度(个体长度) pc=0.6; %交叉概率 pm=0.1; %变异概...

遗传算法的matlab程序function my_ga() options=gaoptimset; %设置变量范围 options=gaoptimset(options,'PopInitRange',[0;9]); %设置种群大小 options=gaoptimset(options,'PopulationSize',100...

推荐阅读
图文推荐