1. 程式人生 > 其它 >【多目標優化求解】基於matlab粒子群求解微電網多目標優化問題【含Matlab原始碼 444期】

【多目標優化求解】基於matlab粒子群求解微電網多目標優化問題【含Matlab原始碼 444期】

一、簡介

1 智慧電網的定義
智慧電網是以物理電網為基礎將現代先進的感測測量技術、通訊技術、資訊科技、計算機技術和控制技術與物理電網高度整合而形成的新型電網
1.1 硬體基礎:電網和建立在整合的、高速雙向通訊網路。
1.2 軟體基礎:智慧的控制技術,是指診斷電網狀態,防止供電中斷,改善電能質量擾動的裝置和演算法。

2 智慧電網的組成
智慧電網由很多部分組成,可分為:智慧變電站,智慧配電網,智慧電能表,智慧互動終端,智慧排程,智慧家電,智慧用電樓宇,智慧城市用電網,智慧發電系統,新型儲能系統。
它是建立在整合的、高速雙向通訊網路的基礎上,通過先進的感測和測量技術、先進的裝置技術、先進的控制方法以及先進的決策支援系統技術的應用,實現電網的可靠、安全、經濟、高效、環境友好和使用安全的目標,其主要特徵包括自愈、激勵和包括使用者、抵禦攻擊、提供滿足21世紀使用者需求的電能質量、容許各種不同發電形式的接入、啟動電力市場以及資產的優化高效執行。

3 微電網的定義
微電網(Micro-Grid)也稱為微網,是一種新型網路結構,是一組微電源、負荷、儲能系統和控制裝置構成的系統單元。微電網是一種由分散式電源組成的獨立系統,一般通過聯絡線與大系統相連,由於供電與需求的不平衡關係,微電網可選擇與主網之間互供或者獨立執行。
微電網是一個能夠實現自我控制、保護和管理的自治系統,既可以與外部電網併網執行,也可以孤立執行。微電網是相對傳統大電網的一個概念,是指多個分散式電源及其相關負載按照一定的拓撲結構組成的網路,並通過靜態開關關聯至常規電網。開發和延伸微電網能夠充分促進分散式電源與可再生能源的大規模接入,實現對負荷多種能源形式的高可靠供給,是實現主動式配電網的一種有效方式,是傳統電網向智慧電網過渡。

4 微電網的組成
微電網是一種由分散式電源組成的獨立系統,由分散式電源、儲能裝置、能量轉換裝置、相關負荷和監控、保護等裝置組成的小型發配電系統。它一般通過聯絡線與大系統相連,由於供電與需求的不平衡關係,微電網可選擇與主網之間互供或者獨立執行。
微電網中的電源多為容量較小的分散式電源,即含有電力電子介面的小型機組,包括微型燃氣輪機、燃料電池、光伏電池、小型風力發電機組以及超級電容、飛輪及蓄電池等儲能裝置。它們接在使用者側,具有成本低、電壓低以及汙染小等特點。

5 智慧微電網
智慧微電網能實現從分散式微電網、發電裝置群、到終端使用者整個輸配電過程中所有節點之間的資訊和電能的雙向流動,從而實現控制過程的數字化、智慧化、快速化。

二、原始碼

clear all;
clc;
format short;     
tic

XDCRL=10;  %蓄電池容量
pgridmax=7;%互動功率
m=100;     %種群規模數
dd=500;    %迭代次數
c1=1;
c2=1;
vmax=1; 
vmin=-1;
wmax=0.9; 
wmin=0.4; 
d=25;%24時刻蓄電池SOC0
CFX =[];%懲罰項
cfx = 0;%懲罰項

PV=load('Ppv2.txt');%光伏發電量
% Pev=zeros(1,24);
Pev=load('PEV.txt');%電動汽車
LOAD= load('Load2.txt');%負荷
sub=load('C_sub2.txt');
buy=load('C_buy2.txt');
sell=load('C_sell2.txt');
xdccl=zeros(m,24);%蓄電池出力
v=zeros(m,d);%初始化速度
SOC=rand(m,d);%蓄電池的SOC
grid=zeros(m,24);%微網
GRID=zeros(1,24);
fx=zeros(1,m);

%%初始化粒子更新
for n=1:m; %每一次更新粒子群(100個粒子)都有判斷是否滿足條件
for i=2:d  %保證蓄電池的SOC大於0.3,小於0.95    
    if SOC(n,i)<0.3
        SOC(n,i)=0.3;
    end
    if SOC(n,i)>0.95
        SOC(n,i)=0.95;
    end
    SOC(n,1)=0.4;%蓄電池的SOC不變,都為0.4
    SOC(n,25)=0.4;%蓄電池的SOC不變,都為0.4
end
 %儲能系統的功率約束
for i=1:24 
    %蓄電池
    j =SOC(n,i)-SOC(n,i+1);
    if j > 0.3
        j = 0.3;%放電
        SOC(n,i+1)= SOC(n,i) - j;
    elseif j <= -0.3;
        j = -0.3;%充電
         SOC(n,i+1)= SOC(n,i) - j;
    end
    xdccl(n,i) =j*XDCRL;%蓄電池出力 
  
end   
%確定大電網出力
  for i = 1:24
   
   grid(n,i)=LOAD(i)+Pev(i) - PV(i)- xdccl(n,i); 
   if grid(n,i)>pgridmax  %買電
       grid(n,i)=pgridmax;
          
   end
   if grid(n,i)<-pgridmax  %賣電
       grid(n,i)=-pgridmax;
%          grid(n,i)=LOAD(i)+Pev(i) - PV(i)- xdccl(n,i);
   end
  
  end
cfx = (SOC(n,1)-SOC(n,25))*1000000;
CFX=[CFX;cfx];
end %初始粒子群的更新結束

%需要帶入函式計算執行成本的單元:大電網出力,蓄電池出力
for i=1:m
  fx(i)=fitnessEcoVir(CFX(i,:),grid(i,:),xdccl(i,:),sub,PV,buy,sell);
end
[fgbest, best_x]=min(fx);%fitgbest全域性最佳適應度值
gbest=SOC(best_x,:);%全域性最優位置 
pbest=SOC;%個體最優位置的初始值,粒子的初始位置
fpbest=fx;%個體最佳適應度值 


for t=1:dd
    
  for f=1:m  %m=100
    %量子粒子更新
    alpha=(-0.8*(t-1))/(dd-1)+1.2;
    mbest=sum(pbest)/m;     
    fi1=rand(1,d);
    fi2=rand(1,d);
    p=(2*fi2.*pbest(f,:)+2.1*fi1.*gbest)./(2*fi2+2.1*fi1);
    u=rand(1,d);
    b=alpha*abs(mbest-SOC(f,:));
    v=-log(u);
    SOC(f,:)=p+((-1).^ceil(0.5+rand(1,d))).*b.*v;  
%     %普通粒子更新
%     v(f,:) =v(f,:)+c1*rand*(pbest(f,:)-SOC(f,:))+c2*rand*(gbest-SOC(f,:));%%SOC速度更新
%     SOC(f,:)=SOC(f,:)+v(f,:);%%SOC位置更新
%     if(v(f,:)>vmax)
%              v(f,:)=vmax;
%     elseif(v(f,:)<vmin)
%              v(f,:)=vmin; 
%     end
    for h=2:d
       if SOC(f,h)<0.3
        SOC(f,h)=0.3;
       end
       if SOC(f,h)>0.95
        SOC(f,h)=0.95;
       end
        SOC(f,1)=0.4;
    end
    for i=1:24
            j =SOC(f,i)-SOC(f,i+1);
            if j > 0.3
                j = 0.3;
                SOC(f,i+1)= SOC(f,i) - j;
            elseif j<-0.3
                j=-0.3;
                SOC(f,i+1)= SOC(f,i) - j;
            end
            xdccl(f,i) =j*XDCRL;  %蓄電池出力
    end
    for i=1:24
    
         grid(f,i)=LOAD(i)+Pev(i) - PV(i)- xdccl(f,i);  
      if grid(f,:)>pgridmax  %買電
         grid(f,:)=pgridmax;
          
      elseif grid(f,:)<-pgridmax  %賣電
         grid(f,:)=-pgridmax;
           
      end
   
    end
      CFX= (SOC(f,1)-SOC(f,25))*1000000;
%%%%%%%%%SOC約束
     fx(f)=fitnessEcoVir(CFX,grid(f,:),xdccl(f,:),sub,PV,buy,sell);%適應度更新
%個體最優
    if fx(f)<fpbest(f)
        pbest(f,:)=SOC(f,:);
        fpbest(f)=fx(f);
    end
    %群體最優
    if fx(f)<fgbest
        gbest=SOC(f,:);
        fgbest=fx(f);   
      GRID=grid(f,:);
    end
    
  end
     MINIMUM(t)=fgbest;  
end

三、執行結果


四、備註

版本:2014a
完整程式碼或代寫加QQ1564658423