天天看點

多目标粒子群求解含風光柴儲的微電網多目标優化問題(Matlab實作)

目錄

​​摘要:​​

​​1.微電網模型​​

​​2.微電網多目标優化排程的目标函數​​

​​2.1運作成本最小:​​

​​2.2風光消納率最高:​​

​​3.微電網多目标優化排程的限制條件​​

​​3.1最大最小功率限制:​​

​​3.2最大最小功率限制:​​

​​3.3儲能電池運作限制:​​

​​4.多目标粒子群算法(MOPSO)​​

​​5.程式運作結果​​

​​ 6.代碼展示​​

摘要:

本文使用一種經濟與環保相協調的微電網優化排程模型,針對光伏電池、風機、微型瓦斯輪機、柴油發電機以及蓄電池組成的微電網系統的優化問題進行研究,在滿足系統限制條件下,建立了包含運作成本、可中斷負荷補償成本以及污染物處理費用的微電網多目标優化排程模型,并利用多目标粒子群算法(MOPSO)求解微電網優化排程問題,代碼注釋詳細,結構簡潔,适合快速入門多目标粒子群和多目标微電網排程的同學。

1.微電網模型

本文讨論的微電網模型中包括:風力發電機、光伏太陽能闆、柴油發電機、儲能電池、電力負荷。使用MOPSO算法求解該微電網的多目标最優化排程問題。

2.微電網多目标優化排程的目标函數

由于是多目标優化排程,是以本文設定目标函數有兩個:運作成本最小和風光消納率最高。

2.1運作成本最小:

多目标粒子群求解含風光柴儲的微電網多目标優化問題(Matlab實作)

式中:T為微電網的排程周期的時段數;N為微電源類型數目;COi,t為微電源i在t時刻的發電費用;IRt為微電網在t時刻的可中斷費用;Pi,t為第i台微電源在t時刻的發電功率。

2.2風光消納率最高:

使用各個時刻預測的可再生能源最大可排程功率值與實際使用了的可再生能源功率值進行相減,再将全日的總可再生能源未消納的量相加,即可構成可再生能源消納目标函數。

多目标粒子群求解含風光柴儲的微電網多目标優化問題(Matlab實作)

式中:PWT,t和PPV,t表示t時刻的風電和光伏能發出的最大功率,PWT,t'和PPV,t'表示實際使用了的風電和光伏功率。

3.微電網多目标優化排程的限制條件

3.1最大最小功率限制:

多目标粒子群求解含風光柴儲的微電網多目标優化問題(Matlab實作)

3.2最大最小功率限制:

多目标粒子群求解含風光柴儲的微電網多目标優化問題(Matlab實作)

3.3儲能電池運作限制:

儲能電池的SOC需要在運作一天後回到初始的位置,并且在運作的過程中不能超過最大和最小的儲能元件容量限制。

多目标粒子群求解含風光柴儲的微電網多目标優化問題(Matlab實作)

4.多目标粒子群算法(MOPSO)

粒子群算法的原理在這裡就不再贅述了,感興趣的可以看我之前的文章,這裡主要說一下多目标粒子群的不同之處。由于優化問題中含有多個目标函數,是以需要在求解過程中引入Pareto分層排序原則對個體進行選擇,主要的步驟為:

(1)資料初始化。輸入微電網的系統組成和結構參數、模型參數、MOPSO算法參數等

(2)将将粒子個體作為系統變量輸入仿真模型,對違背限制的變量進行修正,并計算系統的運作成本、環境成本以及懲罰項作為個體适應度值。

(3)将個體适應度作為優化模型的輸入,得到子代種群确定個體極值pbest。将pbest作為粒子的初始個體極值,如果目前的粒子支配pbest,則将目前的粒子作為pbest個體極值;如果兩者不能比較,則計算兩者在群體中支配其他粒子的個數,支配較多則作為個體極值pbest。

(4)對種群進行分層排序,将最優的非支配解Pareto存入外部存檔集合,清除非Pareto解,并判斷外部存檔集合是否超過規定容量,若是,則按照擁擠距離選取m個粒子。

(5)全局最優值gbest。采用外部存檔集合儲存的Pareto最優解,本文引用輪盤賭方法根據最優解的擁擠距離從外部集合中選取gbest。

5.程式運作結果

 6.代碼展示

%% 程式初始化
clear;
clc;
close all;
%% 定義全局變量
global P_load; %電負荷
global WT;%風電
global PV;%光伏
global WT_price;%
global PV_price;
global BT_price;
%% 擷取資料
data=xlsread('mopso_data');
P_load=data(:,1);
PV=data(:,2);
WT=data(:,3);
PV_price=0.8;
BT_price=0.5;
WT_price=0.6;
%儲能最大放電功率
StorageMaxDischargingPower=250;
%儲能最大充電功率
StorageMaxChargingPower=-200;
%柴油發電機最大功率
DGMaxImportPower=600;
%柴油發電機最小功率
DGMinImportPower=200;
%% 調用mopso函數
mm=mopso; %調用mopso函數

nn=length(mm.swarm); %非支配解數目

%将非支配解中的經濟成本和消納比例分别指派給yyy,xxx
for i=1:nn
   yyy(i)= mm.swarm(1,i).cost(1);
   xxx(i)= mm.swarm(1,i).cost(2);
end
m1=max(yyy);
m2=max(xxx);      

繼續閱讀