天天看點

基于COE和LPSP粒子群優化(PSO)的獨立光伏-電池-柴油發電機選型(Matlab代碼實作)

💥💥💞💞歡迎來到本部落格❤️❤️💥💥

🏆部落客優勢:🌞🌞🌞部落格内容盡量做到思維缜密,邏輯清晰,為了友善讀者。

⛳️座右銘:行百裡者,半于九十。

目錄

​​💥1 概述​​

​​📚2 運作結果​​

​​🎉3 參考文獻​​

​​🌈4 Matlab代碼實作​​

💥1 概述

本文基于能源成本(COE)和供電機率損失(LPSP)的粒子群優化(PSO)對獨立光伏-電池-柴油發電機進行選型,并用Matlab代碼實作。

📚2 運作結果

%% Main PSO
 for n_ite=1:set.Niteration
     for n_par=1:set.Nparticle
         [LPSP,COE]=EMS(particle(n_par).position(1),...
             particle(n_par).position(2),...
             particle(n_par).position(3));
         %% Calculate Mark
         Mark=set.weight_LPSP*abs(LPSP-set.desired_LPSP)+...
             set.weight_COE*COE/set.Normal_COE;
         %% Best Particle
         if isempty(particle(n_par).best_Mark) || particle(n_par).best_Mark>Mark
             particle(n_par).best_position=particle(n_par).position;
             particle(n_par).best_LPSP=LPSP;
             particle(n_par).best_COE=COE;
             particle(n_par).best_Mark=Mark;
         end
         %% Best Global
         if (n_ite==1 && n_par==1) || best_global.Mark>Mark
             best_global.position=particle(n_par).position;
             best_global.LPSP=LPSP;
             best_global.COE=COE;
             best_global.Mark=Mark;
         end
         log_global(n_ite)=best_global;
         
         %% Velocity and New Position
         particle(n_par).velocity=set.w*particle(n_par).velocity...
             +set.c1*(particle(n_par).best_position-particle(n_par).position)...
             +set.c2*(best_global.position-particle(n_par).position);
         particle(n_par).position=particle(n_par).position...
             +particle(n_par).velocity;
         
         %% Round Position
         particle(n_par).position(1)=round(particle(n_par).position(1));
         particle(n_par).position(2)=round(particle(n_par).position(2));
         particle(n_par).position(3)=round(particle(n_par).position(3));
         
         %% Limit Position
         if particle(n_par).position(1)<set.Npv_min
             particle(n_par).position(1)=set.Npv_min;
         end
         if particle(n_par).position(2)<set.Nbat_min
             particle(n_par).position(2)=set.Nbat_min;
         end
         if particle(n_par).position(3)<set.Ndg_min
             particle(n_par).position(3)=set.Ndg_min;
         end
         if particle(n_par).position(1)>set.Npv_max
             particle(n_par).position(1)=set.Npv_max;
         end
         if particle(n_par).position(2)>set.Nbat_max
             particle(n_par).position(2)=set.Nbat_max;
         end      

🎉3 參考文獻

​​🌈​​4 Matlab代碼實作

繼續閱讀