当前位置:首页 > 遗传算法matlab实现源程序
附页:
一.遗传算法源程序:
clc; clear; population; %评价目标函数值 for uim=1:popsize
vector=population(uim,:);
obj(uim)=hanshu(hromlength,vector,phen); end %obj %min(obj)
clear uim; objmin=min(obj); for sequ=1:popsize
if obj(sequ)==objmin
opti=population(sequ,:); end end clear sequ; fmax=22000; %==
for gen=1:maxgen %选择操作
%将求最小值的函数转化为适应度函数 for indivi=1:popsize
obj1(indivi)=1/obj(indivi); end
clear indivi; %适应度函数累加总合 total=0;
for indivi=1:popsize
total=total+obj1(indivi); end
clear indivi;
%每条染色体被选中的几率
for indivi=1:popsize
fitness1(indivi)=obj1(indivi)/total; end
clear indivi;
%各条染色体被选中的范围 for indivi=1:popsize fitness(indivi)=0; for j=1:indivi
fitness(indivi)=fitness(indivi)+fitness1(j); end end clear j; fitness;
%选择适应度高的个体 for ranseti=1:popsize ran=rand;
while (ran>1||ran<0) ran=rand; end ran;
if ran<=fitness(1)
newpopulation(ranseti,:)=population(1,:); else
for fet=2:popsize
if (ran>fitness(fet-1))&&(ran<=fitness(fet))
newpopulation(ranseti,:)=population(fet,:); end end end end clear ran; newpopulation; %交叉
for int=1:2:popsize-1
popmoth=newpopulation(int,:); popfath=newpopulation(int+1,:); popcross(int,:)=popmoth; popcross(int+1,:)=popfath; randnum=rand; if(randnum< P>
cpoint1=round(rand*hromlength); cpoint2=round(rand*hromlength); while (cpoint2==cpoint1) cpoint2=round(rand*hromlength); end
if cpoint1>cpoint2 tem=cpoint1; cpoint1=cpoint2; cpoint2=tem;
共分享92篇相关文档