欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

[能源管理系统(EMS)] 基于粒子群算法的分布式能源发电机(如光伏和电池)规模优化调度研究(Matlab 代码实现

最编程 2024-04-05 11:10:12
...
%% 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 if particle(n_par).position(3)>set.Ndg_max particle(n_par).position(3)=set.Ndg_max; end end end clear LPSP COE Mark n_ite n_par %% Show Result for n_ite=1:set.Niteration LPSP(n_ite)=log_global(n_ite).LPSP; COE(n_ite)=log_global(n_ite).COE; end subplot(2,1,1); plot(LPSP); grid on; xlabel('n-th Iteration') ylabel('Loss of Load Probability, LPSP'); subplot(2,1,2); plot(COE); grid on; xlabel('n-th Iteration') ylabel('Cost of Energy, COE ($)'); tpro=toc; fprintf('The optimum system size is:\n Npv=%d\n Nbat=%d\n Ndg=%d\nwith the LPSP = %.3f%% and COE = $%.2f\nCompute in %.2f s\n',... best_global.position,best_global.LPSP*100,best_global.COE,tpro); beep;