遗传算法matlb实现源程序.docVIP

  • 19
  • 0
  • 约2.42万字
  • 约 11页
  • 2016-10-09 发布于贵州
  • 举报
遗传算法matlb实现源程序,matlab遗传算法源程序,遗传算法源程序,python实现遗传算法,matlab实现遗传算法,遗传算法java实现,遗传算法实现,遗传算法c实现,遗传算法实现排课系统,遗传算法的matlab实现

clc; clear; %各份订单基本数据 phen=[1 2 3 4 5 6 7 8 9 10 11 12 13 14??????????????????? 41,52,-23,-46,-143,-74,-56,101,73,74,95,86,-35,32?????????? 65,23,-76,104,34,38,4,-23,55,-49,39,89,-86,52????????????? 7716,9887,12188,8819,4002,6119,3284,4607,5600,4587,9821,13024,6547,2684?? 500,400,1000,120,0,235,654,241,0,361,120,254,300,150?? 1,4,2,2,4,4,3,3,3,1,4,5,1,3????????????????????????????? 2.7,1.8,4,2.5,1.6,1,3.6,5,4.2,1.9,6.4,2.8,1.4,8];????????? hromlength=14;?????????????????????????? popsize=30;?????????????????????????????? maxgen=500;???????????????????????????? pc=0.8;?????????????????????????????????? pm=0.04;????????????????????????????????????????????????? for kem=1:popsize population(kem,:)=randperm(hromlength);?????????????? end 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 (ran1||ran0) ??????? ran=rand; ??? end ??? ran; ??? if ran=fitness(1) ??????? newpopulation(ranseti,:)=population(1,:); ??? else ??????? for fet=2:popsize ??????????? if (ranfitness(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,:);?????????????????

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档