一、緒論
1.研究目的
(1).熟練掌握MATLAB及CPLEX的使用。
(2).初步了解優(yōu)化問(wèn)題的基本形式和求解方法。
(3).掌握對(duì)既定數(shù)學(xué)模型進(jìn)行編程求解的能力。
(4).掌握運(yùn)用Cplex解決電力系統(tǒng)機(jī)組組合(含經(jīng)濟(jì)調(diào)度)問(wèn)題的方法。
2.背景概述
MATLAB是是美國(guó)MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語(yǔ)言和交互式環(huán)境,是科研中不可缺少的建模工具。
IBM CPLEX ILOG是IBM公司開發(fā)的優(yōu)化引擎,可用于求解大規(guī)模數(shù)學(xué)規(guī)劃問(wèn)題。通過(guò)在MATLAB中調(diào)用CPLEX工具箱,就能方便地利用MATLAB平臺(tái)進(jìn)行模型的求解,并為模型文件提供了求解、分析、操作及寫入/讀出的方法。同時(shí)通過(guò)引入Yalmip工具箱,能夠大大簡(jiǎn)化程序格式,提高程序可讀性。
為了實(shí)現(xiàn)電力供需的平衡,并最合理地利用發(fā)電資源,預(yù)先對(duì)發(fā)電機(jī)組的啟停和出力進(jìn)行調(diào)度安排就是非常必要的,這就是機(jī)組組合問(wèn)題(Unit Commitment, UC)。機(jī)組組合問(wèn)題問(wèn)題是一類混合整數(shù)規(guī)劃問(wèn)題(Mixed Integer Programming, MIP),能過(guò)通過(guò)MATLAB/CPLEX得到求解。
評(píng)注:現(xiàn)在做電力系統(tǒng)優(yōu)化最主流的方法就是Matlabp+CPlex(含Yalmip)
二、機(jī)組組合優(yōu)化數(shù)學(xué)模型
2.1.問(wèn)題分析
機(jī)組組合問(wèn)題要求基于已知的系統(tǒng)數(shù)據(jù),求解計(jì)劃時(shí)間內(nèi)機(jī)組決策變量的最優(yōu)組合,使得系統(tǒng)總成本達(dá)到最小。該問(wèn)題的決策變量由兩類,一類是各時(shí)段機(jī)組的啟停狀態(tài),為整數(shù)變量,0表示關(guān)停,1表示啟動(dòng);另一類是各時(shí)段機(jī)組的出力,為連續(xù)變量。
機(jī)組組合問(wèn)題屬于規(guī)劃問(wèn)題,即要在決策變量的可行解空間里找到一組最優(yōu)解,使得目標(biāo)函數(shù)盡可能取得極值。對(duì)于混合整數(shù)規(guī)劃,常用的方法有分支定界法,benders分解等。CPLEX提供了快速的MIP求解方法,對(duì)于數(shù)學(xué)模型已知的問(wèn)題,只需要按照程序規(guī)范在MATLAB中編寫程序化模型,調(diào)用CPLEX求解器,即可進(jìn)行求解。
下文介紹機(jī)組組合優(yōu)化的數(shù)學(xué)模型。
2.2.符號(hào)說(shuō)明
2.3.模型建立
根據(jù)上述變量定義,建立含安全約束的機(jī)組最優(yōu)組合(SCUC)模型如下:
1)目標(biāo)函數(shù)
目標(biāo)函數(shù)即為最小化成本,包括發(fā)電帶來(lái)的煤耗成本和機(jī)組啟停產(chǎn)生的開停機(jī)成本。
其中,機(jī)組的煤耗函數(shù)可用出力的二次函數(shù)表述:
2)等式約束條件
此即為系統(tǒng)的功率平衡約束
3)不等式約束條件
a)熱備用約束
b)機(jī)組出力約束
c)機(jī)組爬坡約束
d)機(jī)組起停時(shí)間約束
e)起停費(fèi)用約束
f)潮流安全約束
當(dāng)機(jī)組啟動(dòng)最小出力大于爬坡速率,約束將使得所有關(guān)停的機(jī)組都無(wú)法啟動(dòng),因此改寫為
其中,為了簡(jiǎn)化,可以將啟動(dòng)最大升速率和停機(jī)最大降速率都取為
計(jì)算潮流的轉(zhuǎn)移分布因子矩陣,將改寫為
其中描述節(jié)點(diǎn)i的注入功率對(duì)于線路l產(chǎn)生的影響。則簡(jiǎn)化模型的變量為和,在滿足-,-的約束下,最小化目標(biāo)函數(shù)。(轉(zhuǎn)移分布因子矩陣計(jì)算較為繁瑣,開始時(shí)可先忽略此約束)
2.4.模型簡(jiǎn)化
由上小節(jié)構(gòu)建的機(jī)組組合優(yōu)化模型,煤耗成本采用二次函數(shù),當(dāng)系統(tǒng)規(guī)模較大時(shí)(如節(jié)點(diǎn)數(shù)超過(guò)1000),求解起來(lái)將消耗大量時(shí)間。因此我們可以對(duì)原模型進(jìn)行線性化處理。
將煤耗函數(shù)分段線性化,分為m段,將原模型的替換為
其中,代表分段線性化后煤耗函數(shù)各段斜率,表示機(jī)組開機(jī)并以最小出力運(yùn)行產(chǎn)生的煤耗,為機(jī)組分段的出力,滿足
三、算例介紹
校驗(yàn)程序的算例基于IEEE-30節(jié)點(diǎn)標(biāo)準(zhǔn)測(cè)試系統(tǒng),系統(tǒng)接線圖如圖1。系統(tǒng)包30個(gè)節(jié)點(diǎn),6臺(tái)發(fā)電機(jī)組。要求確定系統(tǒng)最優(yōu)機(jī)組組合,使得系統(tǒng)各機(jī)組總運(yùn)行成本(煤耗成本+啟停成本)最小化。
已知:給定系統(tǒng)數(shù)據(jù)包括如下:
1)線路網(wǎng)絡(luò)參數(shù)
2)機(jī)組參數(shù)
3)各節(jié)點(diǎn)各時(shí)段負(fù)荷曲線(24小時(shí))
注意:附件中的數(shù)據(jù)均基于標(biāo)幺化系統(tǒng)得到,因此電力電量參數(shù)、網(wǎng)絡(luò)參數(shù)等都為標(biāo)幺值,無(wú)量綱。還要注意附件中煤耗系數(shù)a,b,c的單位為噸,因此計(jì)算煤耗成本還需換算為價(jià)格,設(shè)燃煤價(jià)格為100$/噸。
求解:機(jī)組組合結(jié)果,即機(jī)組各時(shí)段啟停計(jì)劃、機(jī)組各時(shí)段最優(yōu)出力,以及內(nèi)含的各時(shí)段的直流潮流等。
系統(tǒng)參數(shù)部分代碼如下(示例):
%% 系統(tǒng)參數(shù)
%所有參數(shù)均用有名值表示
paragen=xlsread('~~~','機(jī)組參數(shù)');
loadcurve=xlsread('~~~','負(fù)荷曲線');
netpara=xlsread('~~~','網(wǎng)絡(luò)參數(shù)');
branch_num=size(netpara);%網(wǎng)絡(luò)中的支路
branch_num=branch_num(1,1);
PL_max=netpara(:,6);%線路最大負(fù)荷
PL_min=netpara(:,7);%線路最小負(fù)荷
limit=paragen(:,3:4);%機(jī)組出力上下限//limit(:,1)表示上限,limit(:,2)表示下限
para=paragen(:,5:7);%成本系數(shù)//para(:,1)表示系數(shù)a,para(:,2)表示系數(shù)b,para(:,3)表示系數(shù)c。
price=100;
para=price*para;%價(jià)格換算
lasttime=paragen(:,9);%持續(xù)時(shí)間
Rud=paragen(:,8);%上下爬坡速率//因題中簡(jiǎn)化上坡下坡速度相同
H=paragen(:,10);%啟動(dòng)成本
J=paragen(:,11);%關(guān)停成本
u0=[1 1 1 1 1 1];%初始狀態(tài)
%% 規(guī)模變量
%機(jī)組數(shù)
gennum=size(paragen);
gennum=gennum(1,1);
%節(jié)點(diǎn)數(shù)
numnodes=size(loadcurve);
numnodes=numnodes(1,1)-1;
%時(shí)間范圍
T=size(loadcurve);
T=T(1,2)-1;
%線性化分段數(shù)(按需要更改)
m=4;
%各時(shí)刻節(jié)點(diǎn)總負(fù)荷
PL=loadcurve(numnodes+1,2:T+1);
%%
%決策變量
u=binvar(gennum,T,'full');%狀態(tài)變量
p=sdpvar(gennum,T,'full');%即各機(jī)組實(shí)時(shí)功率p(i,t)
Ps=sdpvar(gennum,T,m,'full');%分段出力
costH=sdpvar(gennum,T,'full');%啟動(dòng)成本
costJ=sdpvar(gennum,T,'full');%關(guān)停成本
sum_PowerGSDF=sdpvar(T,branch_num,numnodes,'full');%發(fā)電機(jī)的輸出功率轉(zhuǎn)移總和
求解部分代碼如下(示例):文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-412199.html
%% 求解
ops=sdpsettings('solver', 'cplex');
result=solvesdp(st,totalcost);
總結(jié)
以上就是今天要講基于MATLAB/yalmip/cplex 的機(jī)組最優(yōu)組合的內(nèi)容,本文僅僅簡(jiǎn)單介紹了yalmip/cplex兩個(gè)求解器的使用,代碼在我的資源可找。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-412199.html
到了這里,關(guān)于基于MATLAB/yalmip/cplex 的機(jī)組最優(yōu)組合的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!