《matlab、lingo程序代码3背包问题遗传算法》由会员分享,可在线阅读,更多相关《matlab、lingo程序代码3背包问题遗传算法(3页珍藏版)》请在人人文库网上搜索。
1、背包问题-遗传算法解决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,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=。
2、1:nif(test=F(j)&(test=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)%使用惩罚法计算适应度值 %x为染色体%p为背包问题中每个被选物体的价值%w0为背包问题中背包总容积%w为背包问题中每个被选物品的容积l=length(x);for。
3、 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为染色体长度,即所供选择的物品总数%P为初始种群大小for i=1:Pfor j=1:ntemp=rands(1,1);if temp0Population(i,j)=1;else Population(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。