⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emigrant.m

📁 基于灰色系统方法的离散多目标优化设计程序
💻 M
字号:
function  [emigx,fxk]=emigrant(us,ux,xk,emig_pop,emig_ratio,n,pop,res_flg,gk,hk,cmax,tpop,tmax,flag_x,dis_date,float_date)
%馄饨移民算子,emig_pop为移民规模,emig_ratio为移民率,xk(1,n)为馄饨变量初始值。
%us,ux分别为设计变量上下限数组,采用Logistic馄饨模型。
       %+++++++++++++++++++++++++++++++++++++++++
 if xk==zeros(1,n)
     ht=zeros(1,n);
     for i=1:n
         ht(1,i)=unifrnd(0,1);  %随机生成初始馄饨变量行向量。
     end
 else
     ht(1,:)=xk;
 end
       %+++++++++++++++++++++++++++++++++++++++++
       for j=1:n    %生成馄饨变量矩阵femigx的第一行。
           femigx(1,j)=4*ht(1,j)*(1-ht(1,j));
       end
 for  i=2:emig_pop  %完成混沌变量矩阵。
     for  k=1:n
        femigx(i,k)=4*femigx(i-1,k)*(1-femigx(i-1,k));
     end
 end
 femigx=2/pi*asin(femigx.^0.5);%均匀概率转换
 fxk(1,:)=femigx(emig_pop,:);  %初始混沌变量数组更新。
        %+++++++++++++++++++++++++++++++++++++++++
 for  i=1:emig_pop    %把混沌变量矩阵变成设计变量矩阵semigx。
     for k=1:n
         semigx(i,k)=ux(k)+(us(k)-ux(1,k))*femigx(i,k);
     end
     semigx(i,:)=discrete(semigx(i,:),n,flag_x,dis_date,float_date); %离散化处理
 end
        %++++++++++++++++++++++++++++++++++++++++++
   for  j=1:emig_pop
   fitFx(j)=fitfunction(semigx(j,:),res_flg,gk,hk,cmax,tpop,tmax);
   % 计算混沌设计变量的适应值,fitfunction为求染色体适应值的m函数。
   end
kemig=floor(pop*emig_ratio);  %计算从移民规模中向GA输出的移民数kemig。
changex=zeros(1,n);
for i=1:kemig+1   %冒泡法按升序对移民群体排序。
    nnk=emig_pop-i;
    for  j=1:nnk
        if fitFx(j)>fitFx(j+1)
            changex(1,:)=semigx(j,:);
            semigx(j,:)=semigx(j+1,:);
            semigx(j+1,:)=changex(1,:);
        end
    end
end
          %+++++++++++++++++++++++++++++++++++++++++++
 kky=emig_pop-kemig+1;
 for i=emig_pop:-1:kky 
 % 从移民群体中选择kemig个适应值较大的染色体,输送给GA进入下一轮进化。
     emigx((emig_pop-i+1),:)=semigx(i,:);
 end
 
 
          


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -