《matlab、lingo程序代码3-背包问题(遗传算法).pdf》由会员分享,可在线阅读,更多相关《matlab、lingo程序代码3-背包问题(遗传算法).pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流matlabmatlab、 lingolingo 程序代码程序代码问题问题( (遗传算法遗传算法) )【精品文档】第 1 页背包背包3-3-如有侵权,请联系网站删除,仅供学习与交流背包问题背包问题-遗传算法解决遗传算法解决function Population1=GA_copy(Population,p,w0,w)%复制算子%Population为种群n=length(Population(:,1);fvalue=zeros(1,n);for i=1:nfvalue(i)=GA_beibao_fitnessvalue(Population(i,:),p,
2、w0,w);endfval=fvalue/sum(fvalue);F(1)=0;for j=1:nF(j+1)=0;for k=1:jF(j+1)=F(j+1)+fval(k);endendfor i=1:ntest=rand;for j=1:nif(test=F(j)&(testF(j+1)Population1(i,:)=Population(j,:);endendendfunction Population1=GA_exchange(Population,pc)%遗传算法交换算子%pc 为交换概率Population1=Population;POP=;n=length(Populatio
3、n(:,1);%k=floor(n*pc);%用于交换的染色体数目%采用单点交换算子j=1;l=length(Population(1,:);for i=1:ntest(i)=rand;if test(i)=1for m=1:kfor t=p(2*m-1)+1:ls=POP(2*m-1,t);POP(2*m-1,t)=POP(2*m,t);POP(2*m,t)=s;endendfor m=1:k0for i=1:lPopulation1(POP(m,l+1),i)=POP(m,i);endendendfunction fitnessvalue=GA_fitnessvalue(x,p,w0,w)
4、%使用惩罚法计算适应度值%x 为染色体%p 为背包问题中每个被选物体的价值%w0 为背包问题中背包总容积%w 为背包问题中每个被选物品的容积l=length(x);for i=1:la(i)=p(i).*x(i);endf=sum(a);b=min(w0,abs(sum(w)-w0);for i=1:lwx(i)=w(i).*x(i);endif abs(sum(wx)-w0)b*0.99p=0.99;elsep=abs(sum(wx)-w0)/b;endfitnessvalue=f*(1-p)*(1-p)*(1-p);function Population=GA_Initial(n,P)%n
5、 为染色体长度,即所供选择的物品总数%P 为初始种群大小for i=1:P【精品文档】第 3 页如有侵权,请联系网站删除,仅供学习与交流for j=1:ntemp=rands(1,1);if temp0Population(i,j)=1;elsePopulation(i,j)=0;endendendfunction Population1=GA_tubian(Population,pe_tubian)%遗传算法突变算子%pe 为突变概率Population1=Population;n=length(Population(:,1);m=length(Population(1,:);for i=1:nfor j=1:mtest=rand;if testpe_tubianPopulation1(i,j)=1-Population1(i,j);endendend【精品文档】第 4 页