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

📄 frist.m

📁 基于灰色系统方法的离散多目标优化设计程序
💻 M
字号:
function  [fristx,fcmax,objopt,xpop]=frist(xpop,tpop,res_flg,pop,gk,hk,cmax,n,tmax)
%  确定群体xpop(pop,n)中的最优染色体fristx。
%  求最优染色体的目标函数值或罚函数值fitopt(tpop)。
%  求最差染色体的目标函数值或罚函数值fcmax。
        %++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%
if res_flg>0
      %---------------------------------%
                fenFx=zeros(1,pop);
                chxyy=zeros(1,n);
               for i=1:pop  % 计算xpop的罚函数值。
                   fenFx(1,i)=fenelize(xpop(i,:),gk,hk,tpop+1,tmax);
               end
               for i=1:pop-1  % 冒泡法把染色体按罚函数值排升序。
                        nm=pop-i;
                     for  j=1:nm
                             if  fenFx(1,j)>fenFx(1,j+1)
                                 chxyy(1,:)=xpop(j,:);
                                  xpop(j,:)=xpop(j+1,:);
                                  xpop(j+1,:)=chxyy(1,:);
                                  changefen=fenFx(1,j);
                                  fenFx(1,j)=fenFx(1,j+1);
                                  fenFx(1,j+1)=changefen;
                            end
                      end
               end       
      %---------------------------------%
          for i=pop:-1:1
              if  fenFx(1,i)~=inf  
                  %fenFx(1,i)=inf时说明该染色体超过目标函数定义域 
              fcmax=fenFx(1,i);
              break
              end
          end
              fristx=xpop(1,:);
             objopt=fenFx(1,1); % 输出最优染色体的惩罚函数值
            % objopt=objfunction(fristx);  % 用于程序调试,输出最优染色体的目标函数值
 else
      %---------------------------------%
               chxyy=zeros(1,n);
               for i=1:pop  % 计算xpop的目标函数。
                   objFx(1,i)=objfunction(xpop(i,:));
               end
               for i=1:pop-1  % 冒泡法把染色体按目标函数排升序。
                        nm=pop-i;
                     for  j=1:nm
                             if  objFx(1,j)>objFx(1,j+1)
                                 chxyy(1,:)=xpop(j,:);
                                  xpop(j,:)=xpop(j+1,:);
                                  xpop(j+1,:)=chxyy(1,:);
                                  changeobj=objFx(1,j);
                                  objFx(1,j)=objFx(1,j+1);
                                  objFx(1,j+1)=changeobj;
                            end
                      end
               end  
      %---------------------------------%
               fcmax=objFx(1,pop);
               objopt=objFx(1,1);
               fristx(1,:)=xpop(1,:);
end
%   fitfunction为求染色体适应值的函数
%   objfuncction为求目标函数值的函数。
       


⌨️ 快捷键说明

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