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

📄 pso_opt_fun_2.m

📁 基于粒子群优化与灰色系统理论的多目标优化程序
💻 M
字号:
function y=Pso_Opt_fun_2(x,tpop,tmax)
 % 2007.08.25罗佑新开发,引用郭惠昕开发的相应程序修改成gi(x)<=0 。
 % 对有约束问题采用精确不可微罚函数,动态惩罚因子,适应数学模型:
 %         min f(x)
 %    s.t. gi(x)<=0  (i=1,2,……,gk);
 %         hj(x)==0  (j=1,2,……,hk).
     %+++++++++++++++++++++++++++++++++++++
 y0=Pso_Object(x);
 [res_gx,res_hx]=Pso_restrain(x);
 [gk,gk1]=size(res_gx);
 [hk,hk1]=size(res_hx);
  if gk>0
     sumgk=0.0; 
     for i=1:gk
         if  imag(res_gx(i,1))~=0  %出现虚数现象
              resf=10^8; %=inf时说明该染色体超过目标函数定义域 
         else
             if res_gx(i,1)<0
                  resf=0;
             else
                  resf=abs(res_gx(i,1))^2;
             end
             sumgk=sumgk+resf;
         end
     end
  else
        sumgk=0.0;
  end
       %+++++++++++++++++++++++++++++++++++
  if hk>0
      sumhk=0.0;
      for i=1:hk
         if  imag(res_hx(i,1))==0
             sumhk=sumhk+abs(res_hx(i,1))^2;
         else
            sumhk=inf;
         end
        end
  else
        sumhk=0.0;
  end
        %+++++++++++++++++++++++++++++++++++
 if   hk==0
     factor1=floor(tpop/100);
     factor2=10^factor1;
     factor=min(factor2,1e+6); %阶跃式动态惩罚因子
 else    
     if  tpop<=floor(0.5*tmax)
          factor1=floor(tpop/100);
          factor=10^factor1; %阶跃式动态惩罚因子
     else
          factor1=floor(0.5*tmax/100);
          factor2=10^factor1;
          factor=factor2+4e+6*((tpop-(0.5*tmax))/tmax)^2; %动态惩罚因子
     end
 end
 if  imag(y0)==0
     fen=y0+factor*(sumgk+sumhk); %惩罚函数值。
 else
     fen=inf;
 end
 y=fen;
%%%%%%%%%%%%%%2007.8.20%%%%%%%%%%%%%

⌨️ 快捷键说明

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