clear;
clear all;
close all;
clc;
tic;
jum_swarm = 10; % Jumlah calon solusi
ieee30bus; %sistem data
Ra=ctranspose(mwlimits(:,2)); %batas maksimum daya dibangkitkan
Rb=ctranspose(mwlimits(:,1)); %batas minimum daya dibangkitkan
iterasimaks = 2; % Iterasi
jum_partikel = 6 ; % Jumlah parameter yang akan dioptimasi
c2 = 0.5 ; % PSO parameter C1 (Social Constant)
c1 = 0.01 ; % PSO parameter C2 (Cognitive Constant)
%w = 0.01; % PSO momentum or inertia
m=24;
wmax=0.9;
wmin=0.4;
iterasimaks=iterasimaks-1;
% Load=[286.4];
multiplierPd24 = [1.04 1.02 1.03 1.03 1.06 1.06 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.14 1.12 1.10 1.08 1.06 1.04 1.02]; %Set nilai pengali load.
%=============================Parameter Sistem=============================
for time=1:24
loadflow;
gencost;
%==========================================================================
%Alokasi Memori------------------------------------------------------------
Pgggg=Pggg;
busdata2=busdata;
linedata2=linedata;
cost2=cost;
fitness_particle_awal=totalfm;
posisi_partikel=zeros(jum_partikel,jum_swarm);
kec_particle=zeros(jum_partikel,jum_swarm);
fitness=zeros(jum_swarm,iterasimaks);
fitness_particle=zeros(jum_swarm,1);
posisi_terbaik_global=zeros(jum_partikel,jum_swarm);
%--------------------------------------------------------------------------
%Inisialisasi Kecepatan----------------------------------------------------
v_min=zeros(1,jum_partikel);
v_max=(Ra-Rb)/iterasimaks ;
for ir=1:jum_swarm
for k=1:jum_partikel
kec_particle(k,ir)= v_min(1,k)+(v_max(1,k)-v_min(1,k))*rand;
end
end
%--------------------------------------------------------------------
%Inisialisasi posisi partikel ----> x_ij=x_min+(x_max-x_min)*rand(.)-----
for ir=1:jum_swarm
for k=1:jum_partikel
posisi_partikel(k,ir)= Rb(1,k)+(Ra(1,k)-Rb(1,k))*rand;
end
end
%------------------------------------------------------------------------
posisi_terbaik_lokal= posisi_partikel; % p_best=x_ij % Local Best Posisi (Pbest)
% Evaluasi Populasi--------------------------------------------------------
It=1;
for ir=1:jum_swarm
busdata=busdata2;
linedata=linedata2;
cost=cost2;
busdata(2,7) = posisi_partikel(2,ir); % x1 terletak pada kolom 2 sebanyak jumlah particle dalam kolom (Matriks 1x50)
busdata(5,7) = posisi_partikel(3,ir);
busdata(8,7) = posisi_partikel(4,ir);
busdata(11,7) = posisi_partikel(5,ir);
busdata(13,7) = posisi_partikel(6,ir);
% posisi_partikel(1,ir)= Pgg(1);
if posisi_partikel(1,ir)> mwlimits(1,2)
posisi_partikel(1,ir)= mwlimits(1,2);
end
busdata(1,7) = posisi_partikel(1,ir);
loadflow;
gencost;
% Evaluasi fitness populasi ke 2 sampai ke UkPop%
fitness_particle(ir)=totalfm;
fitness_particle2(ir)=999999999999999;
langgar=0;
M=length(batas1);
N=length(Vreal);
O=length(Pgg);
for iii=1:M
if(batas1(iii,1)>batas2(iii,1))
langgar=1;
end
end
for jjj=1:N
if((Vreal(jjj,1)>batasV)||(Vreal(jjj,1)<batasVmin))
langgar=1;
end
end
mwrealita=(Pgg');
for kkk=1:O
if(mwrealita(kkk,1)>mwlimits(kkk,2) || mwrealita(kkk,1)<mwlimits(kkk,1))
langgar=1;
end
end
if(langgar==1)
fprintf('Iterasi ke- 0')
fprintf(' Partikel ke- %1.0f', ir)
fprintf(' MELANGGAR')
fprintf('\n')
batasan(ir,1)=1;
batasan(1,1)=0;
else
fprintf('Iterasi ke- 0')
fprintf(' Partikel ke- %1.0f', ir)
fprintf(' TDK MELANGGAR')
fprintf('\n')
batasan(ir,1)=0;
end
end
%--------------------------------------------------------------------------
fitness_terbaik_lokal=fitness_particle2';
fitness_terbaik_global=999999999999999;
%Penentuan Posisi Terbaik Lokal-------------------------------------
for ir=1:jum_swarm
if fitness_particle(ir)< fitness_terbaik_lokal(ir)
batasan(1,1)=0;
if(batasan(ir,1)==0)
fitness_terbaik_lokal(ir)=fitness_particle(ir);
posisi_terbaik_lokal(:,ir)=posisi_partikel(:,ir);
posisi_terbaik_lokal(:,1)=Pgggg';
fitness_terbaik_lokal(1)=fitness_particle_awal;
end
end
end
%---------------------------------------------------------
% Penentuan Posisi Terbaik Global-----------------------------------
[fitness_terbaik_global_particle(It),indeks] = min(fitness_terbaik_lokal);
if fitness_terbaik_global_particle(It) < fitness_terbaik_global
fitness_terbaik_global = fitness_terbaik_global_particle(It);
for ir=1:jum_swarm
posisi_terbaik_global(:,ir) = posisi_terbaik_lokal(:,indeks);
end
end
%--------------------------------------------------------------------------
%>>>>>>>>>>>>>>>>>>Update Velocity Particle <<<<<<<<<<<<<<<<<<<<<<<<
w=wmax-((wmax-wmin)/iterasimaks)*ir ;
kec_particle=w*kec_particle+c1*(rand(jum_partikel,jum_swarm).*(posisi_terbaik_lokal-posisi_partikel))+c2*(rand(jum_partikel,jum_swarm).*(posisi_terbaik_global-posisi_partikel));
%>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>
%>>>>>>>>>Update Posisi Particle <<<<<<<<<<<<
posisi_partikel = posisi_partikel+kec_particle;
%>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<
% %>>>>>>>Pembatas Pergerakan Partikel<<<<<<<
for ir=1:jum_swarm
for k=1:jum_partikel
if posisi_partikel(k,ir)>Ra(1,k)
posisi_partikel(k,ir)=Rb(1,k)+(Ra(1,k)-Rb(1,k))*rand;
elseif posisi_partikel(k,ir)<Rb(1,k)
posisi_partikel(k,ir)=Rb(1,k)+(Ra(1,k)-Rb(1,k))*rand;
end
end
end
%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
% <<<<<<<<<<<<<<<<< Loop Utama Particle Swarm Optimization >>>>>>>>>>>>>>>>
hfig = figure;
hold on
title('Convergence of PSO Algorithm Graphic');
set(hfig, 'position', [50,40,600,300]);
set(hfig, 'DoubleBuffer', 'on');
hbestplot = plot(1:iterasimaks,zeros(1,iterasimaks),'-');
xlabel('Iteration');
ylabel('Fitness Function');
hold off
drawnow;
totaldispatchpergen(:,:,time)=Pgg;
It=1;
while It<=(iterasimaks)
% Evaluasi Populasi--------------------------------------------------------
for ir=1:jum_swarm
busdata=busdata2;
linedata=linedata2;
cost=cost2;
busdata(2,7) = posisi_partikel(2,ir); % x1 terletak pada kolom 2 sebanyak jumlah particle dalam kolom (Matriks 1x50)
busdata(5,7) = posisi_partikel(3,ir);
busdata(8,7) = posisi_partikel(4,ir);
busdata(11,7) = posisi_partikel(5,ir);
busdata(13,7) = posisi_partikel(6,ir);
% posisi_partikel(1,ir)= Pgg(1);
if posisi_partikel(1,ir)> mwlimits(1,2)
posisi_partikel(1,ir)= mwlimits(1,2);
end
busdata(1,7) = posisi_partikel(1,ir);
loadflow;
gencost;
%---------------------------------------------------------------------
for ii = 1:jum_partikel
fprintf('Pembangkit Unit %1.0f',ii)
fprintf(' = %10.2f',Pgg(ii))
fprintf(' MW')
fprintf(' Biaya Pembangkitan Unit %1.0f',ii)
fprintf(' = %10.2f',costv(ii))
fprintf(' Rp/jam\n')
end
fprintf('\n')
fprintf('Multiobjective = %10.2f',totalfm)
fprintf('$/hour\n')
fprintf('Total Pembangkitan = %10.2f',sum(Pgg))
fprintf(' MW')
fprintf('\n')
fprintf('Total Biaya Pembangkitan = %10.2f',totalcost)
fprintf(' $/hour\n')
fprintf('Total nonsmooth = %10.2f',totalns)
fprintf(' $/hour\n')
fprintf('Total Losses System = %10.2f',sum(Pgg)-Pdt)
fprintf(' MW\n')
fprintf('\n')
%----------------------------------
DC OPF NONSMOOTH GCF.rar_dc opf_nearestyv5_non smooth_opf_skinhl
版权申诉
50 浏览量
2022-07-14
19:38:20
上传
评论
收藏 12KB RAR 举报
周楷雯
- 粉丝: 80
- 资源: 1万+
最新资源
- keil2 + proteus + 8051.exe
- 1961ee27df03bd4595d28e24b00dde4e_744c805f7e4fb4d40fa3f695bfbab035_8(1).c
- mediapipe-0.9.0.1-cp37-cp37m-win-amd64.whl.zip
- windows注册表编辑工具
- mediapipe-0.9.0.1-cp37-cp37m-win-amd64.whl.zip
- 校园通行码预约管理系统20240522075502
- 车类型数据集6250张VOC+YOLO格式.zip
- The PyTorch implementation of STGCN.STGCN-main.zip
- 092300108.cpp
- 车类型数据集6000张VOC+YOLO格式.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈