www.pudn.com > TWVRP.rar > yfitness2.m, change:2016-04-20,size:1728b


function [fit,fitx,chrom1]=yfitness2(D,Q,chrom,TT,ET,ELL,CT,CL,dmax,qmax,fitmax,c0,c1,k,v,n,nind) 
  
% chrom  变更后的初始种群 
% D  节点距离矩阵 
% Q  节点的需求量矩阵 
% ET,EL   
% ELL   
% CT,CL   
% dmax  单车最大行驶距离 
% qmax  车辆最大载货量  
% fitmax  一个很大的值替代适应值 
% c0  发车成本 
% c1  单位运输成本 
% k   初始设定车辆数 
% n 客户点数 
% nind  种群个数 
% fitx  适应值 
% fit  适应值倒数 
  
% 染色体解码 
N=n+k-2; 
chrom1=zeros(nind,N); 
for i=1:nind 
    a=chrom(i,:); 
    b=sort(randperm(N)); 
    aa=sort(a); 
    bb=zeros(1,N); 
    for i1=1:N 
        for i2=1:N 
            if a(i1)==aa(i2) 
               bb(i1)=b(i2); 
               aa(i2)=0; 
                break; 
            end 
        end 
    end 
    chrom1(i,:)=bb; 
end 
% 虚拟节点转换 
for j=1:nind 
    for j1=1:size(chrom1,2)    
        if chrom1(j,j1)>n  
           chrom1(j,j1)=1; 
        end 
    end 
end 
A=ones(nind,1); 
chrom1=[A,chrom1,A]; 
  
% 适应值计算 
[nx,ny]=size(chrom1); 
for i=1:nx 
% 初始化各个变量 
   d=0; 
   q=0;  
   t=0; 
   cfe=0; 
   cost=0; 
   B=chrom1(i,:); 
    for j=1:ny-1 
        d=d+D(B(j),B(j+1)); 
        q=q+Q(B(j+1)); 
        [t,cfe0]=ytimepunish2(TT,ET,ELL,CT,CL,B,d,j,dmax,t,v);%时间惩罚 
        cfe=cfe+cfe0; 
        if B(j+1)==1 
            if d>dmax|q>qmax 
                cost=fitmax; 
                break; 
            else 
                cost0=d*c1+cfe; 
                cost=cost+cost0; 
            end 
            d=0; 
            q=0; 
            t=0; 
            cfe=0; 
        end 
    end 
    k0=k; 
    for jj=1:size(B,2)-1     
      if B(jj+1)-B(jj)==0 
      k0=k0-1; 
      end 
    end 
   fit(i)=cost+k0*c0; 
   fitx(i)=1/(cost+k0*c0)+eps; 
end