及風(fēng)電并網(wǎng)的微電網(wǎng)與集群電動(dòng)汽車需求側(cè)響應(yīng)優(yōu)化調(diào)度策略)
風(fēng)電出力一會(huì)兒高一會(huì)兒低微電網(wǎng)調(diào)度本來(lái)就頭疼再疊加一群電動(dòng)汽車扎堆充電傳統(tǒng)“電源跟負(fù)荷跑”的思路基本走不通了。我這兩年一直在做微電網(wǎng)優(yōu)化調(diào)度方向最深的體會(huì)是單純靠機(jī)組出力調(diào)節(jié)成本高、響應(yīng)慢而把需求側(cè)的資源——尤其是集群電動(dòng)汽車——真正用起來(lái)調(diào)度會(huì)靈活得多。這篇內(nèi)容就是圍繞“計(jì)及風(fēng)電并網(wǎng)運(yùn)行的微電網(wǎng)及集群電動(dòng)汽車綜合需求側(cè)響應(yīng)的優(yōu)化調(diào)度策略研究Matlab代碼實(shí)現(xiàn)”展開(kāi)的從模型搭建到代碼落地把我在實(shí)際復(fù)現(xiàn)中踩過(guò)的坑和驗(yàn)證過(guò)的思路都整理一遍適合正在做微電網(wǎng)、虛擬電廠、電動(dòng)汽車聚合調(diào)控方向的研究生和工程師參考。所謂綜合需求側(cè)響應(yīng)就是把價(jià)格型響應(yīng)和激勵(lì)型響應(yīng)放在同一個(gè)優(yōu)化框架里不單是把負(fù)荷切一刀而是讓微電網(wǎng)里的常規(guī)負(fù)荷、溫控負(fù)荷、電動(dòng)汽車都按自身的響應(yīng)特性參與調(diào)節(jié)。加上風(fēng)電并網(wǎng)后的隨機(jī)波動(dòng)整個(gè)問(wèn)題就變成一個(gè)含不確定性的混合整數(shù)優(yōu)化問(wèn)題。用Matlab配合Yalmip調(diào)用商用求解器是目前比較順手的技術(shù)路線。下面我不按教科書章節(jié)講就按實(shí)際做項(xiàng)目的思路一層層拆開(kāi)說(shuō)。1. 風(fēng)電并網(wǎng)讓微電網(wǎng)調(diào)度難在哪波動(dòng)性、預(yù)測(cè)誤差與行車約束1.1 風(fēng)電出力特性對(duì)調(diào)度計(jì)劃的沖擊風(fēng)電的出力曲線跟天氣強(qiáng)相關(guān)典型的特征是間歇性和反調(diào)峰性。白天光伏強(qiáng)但風(fēng)速未必高夜間負(fù)荷低谷時(shí)風(fēng)速反而常處于高位這會(huì)造成兩個(gè)問(wèn)題一是當(dāng)風(fēng)電出力大于本地負(fù)荷時(shí)多余的功率如果不及時(shí)消納就可能需要棄風(fēng)二是風(fēng)電出力驟降時(shí)微電網(wǎng)內(nèi)的常規(guī)機(jī)組和儲(chǔ)能必須快速頂上否則頻率和電壓都會(huì)出問(wèn)題。在數(shù)學(xué)模型里風(fēng)電出力通常用預(yù)測(cè)曲線加誤差區(qū)間來(lái)描述。常用的做法是用場(chǎng)景法或者魯棒優(yōu)化。場(chǎng)景法需要對(duì)歷史風(fēng)速數(shù)據(jù)做概率統(tǒng)計(jì)生成多個(gè)典型出力場(chǎng)景魯棒優(yōu)化則直接構(gòu)建不確定集合比如盒式集合或橢球集合讓調(diào)度結(jié)果在集合內(nèi)都可行。我之前做項(xiàng)目時(shí)一開(kāi)始直接用單一預(yù)測(cè)曲線結(jié)果實(shí)際運(yùn)行偏差很大后來(lái)改成多場(chǎng)景隨機(jī)優(yōu)化調(diào)度方案的保守性和經(jīng)濟(jì)性才平衡了一些。對(duì)微電網(wǎng)來(lái)說(shuō)風(fēng)電滲透率一旦超過(guò)某個(gè)閾值調(diào)度難度會(huì)明顯上升。這里的閾值沒(méi)有固定值要看微電網(wǎng)內(nèi)可調(diào)資源的響應(yīng)速度。如果只有慢速機(jī)組那風(fēng)電波動(dòng)稍微大一點(diǎn)調(diào)度計(jì)劃就得頻繁調(diào)整。這也是為什么需求側(cè)響應(yīng)和電動(dòng)汽車能切入進(jìn)來(lái)的原因——它們是把“負(fù)荷側(cè)”變成“可調(diào)資源”的關(guān)鍵。1.2 集群電動(dòng)汽車的雙重身份負(fù)荷還是儲(chǔ)能集群電動(dòng)汽車在調(diào)度里最特別的地方在于它們既是用電負(fù)荷又是潛在的移動(dòng)儲(chǔ)能。如果只把它們當(dāng)普通負(fù)荷那充電需求集中在某個(gè)時(shí)段會(huì)拉高微電網(wǎng)峰值。但如果你能控制其充電時(shí)段和功率或者允許部分車輛在特定時(shí)段向電網(wǎng)放電V2G那就相當(dāng)于給微電網(wǎng)增加了一塊可移動(dòng)的儲(chǔ)能電池。當(dāng)然實(shí)際建模時(shí)不能把電動(dòng)汽車想象成無(wú)限容量的大電池。每輛車的電池容量、當(dāng)前SOC、用戶設(shè)置的離開(kāi)時(shí)間、期望的最低電量都會(huì)影響其可調(diào)度空間。更麻煩的是用戶出行行為有隨機(jī)性你不可能強(qiáng)制所有車在某個(gè)時(shí)段都參與調(diào)度。因此集群電動(dòng)汽車的聚合建模要考慮兩個(gè)維度時(shí)間維度每輛車的接入和離開(kāi)時(shí)間決定了它能在哪個(gè)調(diào)度時(shí)段參與充放電。能量維度電池容量、初始SOC、目標(biāo)SOC和充放電功率限值決定了它在每個(gè)時(shí)段的能量裕度。我在代碼里處理集群電動(dòng)汽車時(shí)并不是對(duì)每輛車單獨(dú)建立變量那樣節(jié)點(diǎn)規(guī)模會(huì)爆炸。更合理的做法是采用聚合模型把同一接入時(shí)段、類似SOC狀態(tài)的車輛聚合成一個(gè)“充電集群”每個(gè)集群用一個(gè)可調(diào)功率上下限和能量狀態(tài)來(lái)描述。這樣既保留了車輛的可調(diào)度特性又大幅降低了優(yōu)化模型的復(fù)雜度。1.3 需求側(cè)響應(yīng)為什么能“補(bǔ)位”風(fēng)電出力波動(dòng)靠機(jī)組去頂成本很高而且機(jī)組的爬坡速率有限。需求側(cè)響應(yīng)則不同它通過(guò)價(jià)格信號(hào)或者激勵(lì)協(xié)議引導(dǎo)負(fù)荷側(cè)主動(dòng)調(diào)整用電行為等效于給系統(tǒng)增加了“負(fù)功率”的調(diào)節(jié)能力。舉例來(lái)說(shuō)某時(shí)段風(fēng)電出力小系統(tǒng)需要增加出力。此時(shí)如果激勵(lì)型需求響應(yīng)讓一部分可中斷負(fù)荷退出系統(tǒng)需要額外供給的功率就減少了一部分。又比如電價(jià)高峰時(shí)段價(jià)格型響應(yīng)會(huì)讓一部分彈性負(fù)荷自動(dòng)削減用電量或轉(zhuǎn)移到谷段。這兩種響應(yīng)方式疊加集群電動(dòng)汽車的充放電調(diào)整就能形成一條多維度的“柔性調(diào)節(jié)帶”調(diào)度員可以在這條帶上靈活決策。不過(guò)需求側(cè)響應(yīng)不是免費(fèi)的。用戶參與響應(yīng)會(huì)損失舒適度或生產(chǎn)效益所以優(yōu)化調(diào)度必須在經(jīng)濟(jì)性目標(biāo)中顯式加入響應(yīng)成本。很多初學(xué)者容易忽略這一點(diǎn)結(jié)果模型算出來(lái)的“最優(yōu)方案”其實(shí)是犧牲用戶利益換來(lái)的不具備實(shí)際可行性。綜合需求側(cè)響應(yīng)的核心就是在發(fā)電成本、響應(yīng)成本和用戶滿意度之間找平衡點(diǎn)。2. 需求側(cè)響應(yīng)建模價(jià)格型與激勵(lì)型怎么同時(shí)上2.1 價(jià)格型需求響應(yīng)用戶行為怎么量化價(jià)格型需求響應(yīng)Price-based DR通過(guò)實(shí)時(shí)電價(jià)或分時(shí)電價(jià)引導(dǎo)用戶調(diào)整用電時(shí)段。它的理論基礎(chǔ)是價(jià)格彈性即負(fù)荷變化率與電價(jià)變化率之間的關(guān)系。在調(diào)度模型中通常用自彈性和交叉彈性系數(shù)來(lái)構(gòu)建用戶響應(yīng)后的負(fù)荷曲線。設(shè)原始負(fù)荷為(P_{L0}(t))電價(jià)變化率為(\Delta \rho(t)/\rho_0(t))則響應(yīng)后的負(fù)荷為[ P_L(t) P_{L0}(t) \cdot \left( 1 \varepsilon_{tt} \frac{\rho(t)-\rho_0(t)}{\rho_0(t)} \sum_{s \ne t} \varepsilon_{ts} \frac{\rho(s)-\rho_0(s)}{\rho_0(s)} \right) ]其中(\varepsilon_{tt})是自彈性系數(shù)通常為負(fù)(\varepsilon_{ts})是交叉彈性系數(shù)通常為正。自彈性反映用戶對(duì)當(dāng)前時(shí)段電價(jià)的敏感度交叉彈性反映用戶將負(fù)荷從高電價(jià)時(shí)段轉(zhuǎn)移到低電價(jià)時(shí)段的意愿。在Matlab代碼里這個(gè)過(guò)程不復(fù)雜就是矩陣運(yùn)算。先用歷史數(shù)據(jù)擬合彈性矩陣然后根據(jù)優(yōu)化出的電價(jià)迭代更新負(fù)荷。但要注意價(jià)格型響應(yīng)是一個(gè)迭代過(guò)程因?yàn)橛脩繇憫?yīng)后系統(tǒng)會(huì)重新出清電價(jià)又會(huì)變化最終需要收斂到均衡點(diǎn)。大部分論文里直接用一次響應(yīng)近似實(shí)際做項(xiàng)目時(shí)建議至少迭代三次。2.2 激勵(lì)型需求響應(yīng)的可中斷負(fù)荷怎么約束激勵(lì)型需求響應(yīng)Incentive-based DR通常以合同形式存在微電網(wǎng)調(diào)度中心提前與用戶約定可中斷負(fù)荷量和補(bǔ)償價(jià)格實(shí)時(shí)調(diào)度時(shí)根據(jù)系統(tǒng)狀態(tài)調(diào)用。在優(yōu)化模型中這部分的決策變量是可中斷負(fù)荷的削減量(\Delta P_{IL}(t))約束條件包括削減量上限(\Delta P_{IL}(t) \le \Delta P_{IL}^{\max}(t))最小連續(xù)中斷時(shí)長(zhǎng)不能頻繁啟停用戶負(fù)荷否則用戶設(shè)備受不了。最大累計(jì)中斷次數(shù)比如一天內(nèi)最多調(diào)用兩次每次不超過(guò)兩小時(shí)。這些約束都是為了保證激勵(lì)型響應(yīng)的實(shí)際可行性。若不加這些約束模型可能會(huì)讓同一個(gè)用戶每小時(shí)都中斷一次現(xiàn)實(shí)中沒(méi)有任何用戶能接受??芍袛嘭?fù)荷的調(diào)用順序也有講究。工程上通常按單位響應(yīng)成本排序成本低的先調(diào)。這其實(shí)就是優(yōu)先調(diào)用電鍋爐、蓄冷空調(diào)這類可快速分檔調(diào)節(jié)的負(fù)荷然后才是工業(yè)生產(chǎn)線上的非關(guān)鍵工序。2.3 集群電動(dòng)汽車的響應(yīng)潛力怎么算集群電動(dòng)汽車參與需求側(cè)響應(yīng)時(shí)可用潛力可以分三塊充電時(shí)段平移電動(dòng)汽車接入后并不是必須立刻充電只要在用戶設(shè)定的離開(kāi)時(shí)間前充到目標(biāo)SOC即可。因此調(diào)度中心可以在一個(gè)時(shí)間窗口內(nèi)自由安排充電功率和時(shí)間這是最常用也最容易實(shí)現(xiàn)的響應(yīng)方式。充電功率調(diào)節(jié)充電樁支持可調(diào)功率時(shí)調(diào)度中心可以在電池允許的SOC范圍內(nèi)降低或提高充電功率。比如20kW快充樁可以按5kW一檔調(diào)節(jié)這種連續(xù)調(diào)節(jié)能力對(duì)于跟蹤風(fēng)電波動(dòng)非常順滑。V2G反向放電車輛向電網(wǎng)放電相當(dāng)于移動(dòng)儲(chǔ)能。但V2G會(huì)加快電池循環(huán)衰減所以必須設(shè)置額外的經(jīng)濟(jì)補(bǔ)償模型里的響應(yīng)成本也要相應(yīng)提高。我在代碼中對(duì)V2G設(shè)置了最小放電時(shí)長(zhǎng)約束避免車輛反復(fù)充放。聚合后的電動(dòng)汽車集群模型如下[ E_{EV}(t) E_{EV}(t-1) \eta_{ch} P_{EV}^{ch}(t) \Delta t - \frac{P_{EV}^{dis}(t)}{\eta_{dis}} \Delta t ]同時(shí)要滿足[ E_{EV}^{\min}(t) \le E_{EV}(t) \le E_{EV}^{\max}(t), \quad 0 \le P_{EV}^{ch}(t) \le P_{EV}^{ch,\max}, \quad 0 \le P_{EV}^{dis}(t) \le P_{EV}^{dis,\max} ]另外還要加上充電滿意度約束例如車輛離開(kāi)時(shí)SOC不能低于用戶設(shè)定的最低值。代碼里可以用一組二元變量來(lái)表示每個(gè)集群的充/放狀態(tài)防止同一時(shí)刻既充電又放電。3. 優(yōu)化調(diào)度模型搭建目標(biāo)函數(shù)、約束條件與求解框架3.1 目標(biāo)函數(shù)怎么設(shè)才全面這類優(yōu)化調(diào)度的目標(biāo)函數(shù)常見(jiàn)的寫法是“最小化總運(yùn)行成本”包含常規(guī)機(jī)組燃料成本和啟停成本從主網(wǎng)購(gòu)電的成本或向主網(wǎng)購(gòu)電的購(gòu)電成本棄風(fēng)懲罰成本需求側(cè)響應(yīng)補(bǔ)償成本價(jià)格型減免電費(fèi)收益的負(fù)數(shù)、激勵(lì)型可中斷負(fù)荷補(bǔ)償、V2G放電補(bǔ)償電動(dòng)汽車用戶充電費(fèi)用或滿意度折損目標(biāo)函數(shù)可以寫成[ \min ; F \sum_{t} \left( C_{gen}(t) C_{buy}(t) C_{wind}(t) C_{DR}(t) C_{EV}(t) \right) ]其中(C_{gen}(t))是機(jī)組發(fā)電成本通常表示成出力的二次函數(shù)(aP^2bPc)(C_{buy}(t))是聯(lián)絡(luò)線購(gòu)電成本(C_{wind}(t))是棄風(fēng)懲罰可以設(shè)成棄風(fēng)量的線性函數(shù)(C_{DR}(t))是需求側(cè)響應(yīng)總成本(C_{EV}(t))包含電動(dòng)汽車充電成本或放電補(bǔ)償。有些研究還會(huì)在目標(biāo)里加入碳排放量或用戶滿意度目標(biāo)做成多目標(biāo)優(yōu)化。多目標(biāo)求解可以用加權(quán)法也可以用NSGA-II之類的智能算法。從我實(shí)際經(jīng)驗(yàn)看微電網(wǎng)調(diào)度用混合整數(shù)二次規(guī)劃MIQP模型配求解器比智能算法更有工程價(jià)值——因?yàn)榍蠼夥€(wěn)定、結(jié)果可復(fù)現(xiàn)且能保證全局最優(yōu)或高精度近似最優(yōu)。3.2 約束條件功率平衡、機(jī)組出力、儲(chǔ)能SOC與EV動(dòng)態(tài)約束是整個(gè)模型里最容易出bug的地方。我列一版核心約束清單供參考功率平衡約束每個(gè)時(shí)段分布式電源出力 儲(chǔ)能放電 電動(dòng)汽車放電 主網(wǎng)購(gòu)電 風(fēng)電 常規(guī)負(fù)荷 儲(chǔ)能充電 電動(dòng)汽車充電 可中斷負(fù)荷削減量。機(jī)組約束出力上下限、爬坡上下限、最小啟停時(shí)間。儲(chǔ)能約束SOC遞推方程、充放電功率限值、SOC上下限以及充放電狀態(tài)互斥。電動(dòng)汽車約束集群方式集群SOC遞推、集群充放電功率上下限、總充放電功率與集群狀態(tài)的耦合、離開(kāi)時(shí)最低SOC約束。需求側(cè)響應(yīng)約束可中斷負(fù)荷調(diào)用上限、連續(xù)中斷時(shí)長(zhǎng)、最大調(diào)用次數(shù)價(jià)格型響應(yīng)后的負(fù)荷范圍限制不能低于某個(gè)下限。聯(lián)絡(luò)線約束與主網(wǎng)交換功率的上下限防止出現(xiàn)倒送過(guò)大功率或購(gòu)電沖擊。3.3 求解器與Matlab實(shí)現(xiàn)框架Matlab里做這類混合整數(shù)優(yōu)化領(lǐng)域內(nèi)的標(biāo)準(zhǔn)組合是Yalmip Gurobi/Cplex。Yalmip是一個(gè)建模工具箱語(yǔ)法簡(jiǎn)單能把你用表達(dá)式寫的目標(biāo)函數(shù)和約束自動(dòng)轉(zhuǎn)化為求解器懂的標(biāo)準(zhǔn)形式。Gurobi和Cplex是商用求解器處理整數(shù)變量和大規(guī)模線性問(wèn)題非??鞂W(xué)術(shù)用途可以申請(qǐng)免費(fèi)許可。用Yalmip建模的大致流程是% 定義變量 P_gen sdpvar(N_gen, T, full); % 機(jī)組出力 z_gen binvar(N_gen, T); % 機(jī)組開(kāi)停機(jī)狀態(tài) P_ch sdpvar(N_ev, T, full); % 集群充電功率 P_dis sdpvar(N_ev, T, full); % 集群放電功率 u_ch binvar(N_ev, T); % 充電狀態(tài) u_dis binvar(N_ev, T); % 放電狀態(tài) % 目標(biāo)函數(shù) Objective sum(sum(C_gen .* P_gen ... )) ...; % 約束 Constraints [...]; Constraints [Constraints, P_gen 0]; Constraints [Constraints, sum(P_gen,1) ... load(t) - ...]; % 求解 optimize(Constraints, Objective, sdpsettings(solver,gurobi,verbose,2));實(shí)際寫代碼時(shí)最大的坑是變量維度不一致。比如負(fù)荷是一維數(shù)組機(jī)組是多維矩陣在Matlab里做等式約束時(shí)容易廣播出錯(cuò)。建議從一開(kāi)始就統(tǒng)一變量的索引方式用T24、[N_gen, T]這種清晰定義每個(gè)時(shí)段的表達(dá)式用循環(huán)寫或者用repmat對(duì)齊維度。4. Matlab代碼實(shí)現(xiàn)關(guān)鍵模塊與避坑實(shí)錄4.1 數(shù)據(jù)準(zhǔn)備風(fēng)電場(chǎng)景生成與負(fù)荷曲線處理我習(xí)慣先把風(fēng)電場(chǎng)景生成放在一個(gè)獨(dú)立函數(shù)里輸入歷史風(fēng)速或歷史出力輸出多個(gè)等概率場(chǎng)景。最簡(jiǎn)單的辦法是蒙特卡洛模擬用歷史數(shù)據(jù)的均值和方差生成大量場(chǎng)景然后用同步回代縮減法Scenred削減成5到10個(gè)代表性場(chǎng)景??s減法在Matlab里可以用scenarioReduction函數(shù)或自己寫K-medoids聚類后者更直觀。風(fēng)電場(chǎng)的地方切不可直接拿預(yù)測(cè)曲線當(dāng)實(shí)際曲線用除非你論文里專門做確定性調(diào)度。我通常把預(yù)測(cè)曲線當(dāng)作基準(zhǔn)然后疊加一個(gè)概率分布描述的誤差。場(chǎng)景集里每個(gè)場(chǎng)景對(duì)應(yīng)一組風(fēng)電出力序列優(yōu)化目標(biāo)則變成所有場(chǎng)景下期望成本的加權(quán)和。這樣模型對(duì)風(fēng)電波動(dòng)的魯棒性明顯提升。負(fù)荷曲線處理相對(duì)簡(jiǎn)單但要注意量綱。原始數(shù)據(jù)可能是kW而機(jī)組出力可能是MW如果不統(tǒng)一約束條件會(huì)出現(xiàn)數(shù)量級(jí)失衡導(dǎo)致求解器收斂很慢甚至無(wú)解。我一般統(tǒng)一轉(zhuǎn)換為p.u.標(biāo)幺值或統(tǒng)一用kW再參與計(jì)算。4.2 用Yalmip調(diào)Gurobi的那些配置細(xì)節(jié)第一次用Yalmip調(diào)Gurobi時(shí)最容易摔跟頭的地方是環(huán)境變量路徑。Windows下安裝Gurobi后需要在系統(tǒng)環(huán)境變量里加上GUROBI_HOME指向安裝目錄并把bin目錄加入PATH。然后在Matlab里運(yùn)行g(shù)urobi_setup再測(cè)試一下% 驗(yàn)證Gurobi是否可用 yalmip(clear) sdpvar x optimize([x 0, x 1], x, sdpsettings(solver,gurobi))如果報(bào)錯(cuò)No solver found大概率是路徑?jīng)]配對(duì)或者Gurobi的license沒(méi)有正確安裝。Gurobi許可現(xiàn)在要用grbgetkey激活學(xué)術(shù)郵箱當(dāng)天能搞定。另一個(gè)容易忽略的點(diǎn)是MIP問(wèn)題的Gap設(shè)置。調(diào)度模型跑到最優(yōu)解可能需要幾百秒如果你的場(chǎng)景數(shù)多可以適當(dāng)放寬MIP Gap到1%或2%工程上完全可接受。在Yalmip里這么設(shè)ops sdpsettings(solver,gurobi,gurobi.MIPGap,0.01, verbose, 2);另外如果模型里含二元變量求解器的分支定界過(guò)程很吃內(nèi)存。建議先用binvar少變量測(cè)試小算例模型跑通后再放大規(guī)模別一上來(lái)就上百輛車逐輛建模。4.3 非線性約束線性化與數(shù)值病態(tài)的規(guī)避模型里如果出現(xiàn)兩個(gè)連續(xù)變量的乘積就是非線性問(wèn)題。主流商用求解器能直接處理二次目標(biāo)但不能處理一般非線性等式約束。最常見(jiàn)的兩個(gè)非線性來(lái)源機(jī)組成本二次函數(shù)這個(gè)不用擔(dān)心MIQP求解器直接支持二次目標(biāo)Gurobi和Cplex都能解。功率與狀態(tài)的乘積比如“當(dāng)機(jī)組開(kāi)機(jī)時(shí)才能出力”理論上是一個(gè)互補(bǔ)條件。Yalmip里可以直接寫P_gen P_gen_max * z_gen它會(huì)自動(dòng)引入大M約束求解。儲(chǔ)能充放電互斥用一個(gè)二元變量(u)將充放電狀態(tài)解耦然后加P_ch P_ch_max * uP_dis P_dis_max * (1-u)。這是線性化處理。數(shù)值病態(tài)問(wèn)題也很常見(jiàn)。比如變量范圍差異太大一個(gè)變量是(10^6)量級(jí)另一個(gè)是(10^{-3})量級(jí)求解器會(huì)因?yàn)閿?shù)值問(wèn)題給出“模型不可行”的假象。解決辦法是縮放變量比如所有功率用MW所有成本用萬(wàn)元或者直接對(duì)系數(shù)做歸一化。我在寫約束時(shí)習(xí)慣先檢查每個(gè)約束的量綱確保左右兩邊單位一致。還有一個(gè)小技巧給每個(gè)等式約束加一個(gè)松弛變量這樣即使模型因?yàn)閿?shù)據(jù)問(wèn)題出現(xiàn)微小偏差也不至于直接無(wú)解甚至可以通過(guò)松弛變量的取值反查約束沖突來(lái)源。調(diào)試期非常好用。5. 實(shí)測(cè)案例分析不同場(chǎng)景下的調(diào)度結(jié)果對(duì)比5.1 場(chǎng)景與參數(shù)設(shè)置我用一個(gè)改造后的IEEE 33節(jié)點(diǎn)微電網(wǎng)算例跑過(guò)一組對(duì)照實(shí)驗(yàn)這里把關(guān)鍵參數(shù)列出來(lái)參數(shù)數(shù)值調(diào)度周期24h單位時(shí)段1h微燃機(jī)2臺(tái)容量0.6MW/0.8MW儲(chǔ)能1臺(tái)容量0.5MWh功率0.1MW風(fēng)電1座額定1.2MW集群電動(dòng)汽車3個(gè)集群共200輛車平均電池容量50kWh主網(wǎng)聯(lián)絡(luò)線上限0.8MW可中斷負(fù)荷0.3MW補(bǔ)償價(jià)0.6元/kWh分時(shí)電價(jià)峰/平/谷 1.2/0.8/0.4 元/kWh風(fēng)電場(chǎng)景數(shù)5個(gè)等概率場(chǎng)景常規(guī)負(fù)荷曲線取某地區(qū)夏季典型日風(fēng)電場(chǎng)景用蒙特卡洛生成后削減。5.2 無(wú)需求側(cè)響應(yīng) vs 含綜合需求側(cè)響應(yīng)的結(jié)果對(duì)比在完全不含需求側(cè)響應(yīng)時(shí)調(diào)度模型只能調(diào)節(jié)機(jī)組、儲(chǔ)能和購(gòu)電功率。碰到晚間高峰和風(fēng)電低出力的重疊時(shí)段微燃機(jī)得滿發(fā)仍然不夠的話只能高價(jià)從主網(wǎng)購(gòu)電整體運(yùn)行成本偏高。加入綜合需求側(cè)響應(yīng)后可中斷負(fù)荷在高峰時(shí)段削減了0.2MW左右電動(dòng)汽車集群把一部分充電負(fù)荷從19:00-22:00平移到凌晨01:00-04:00部分車輛甚至參與了V2G在20:00-21:00釋放約0.15MW功率。最終效果總運(yùn)行成本下降了約12.6%主網(wǎng)購(gòu)電峰值降低了18.3%風(fēng)電棄風(fēng)率從3.2%降到0.9%。當(dāng)然具體數(shù)字依賴參數(shù)設(shè)定但趨勢(shì)是一致的需求側(cè)響應(yīng)能明顯改善系統(tǒng)運(yùn)行的經(jīng)濟(jì)性和新能源消納能力。5.3 無(wú)序充電與有序充電的差距無(wú)序充電場(chǎng)景下電動(dòng)汽車一接入就以額定功率充滿結(jié)果19:00下班高峰后大量車輛同時(shí)充電形成新的負(fù)荷尖峰。微燃機(jī)和主網(wǎng)購(gòu)電容量有限的微電網(wǎng)面臨嚴(yán)重的供需失衡甚至需要切負(fù)荷。有序充電場(chǎng)景下調(diào)度中心根據(jù)電價(jià)信號(hào)和系統(tǒng)裕度安排充電計(jì)劃把大部分充電需求轉(zhuǎn)移到負(fù)荷低谷或風(fēng)電出力高峰時(shí)段。兩者對(duì)比指標(biāo)無(wú)序充電有序充電含V2G微電網(wǎng)峰值負(fù)荷1.65 MW1.38 MW運(yùn)行總成本9876 元8245 元用戶平均充電費(fèi)用34.5 元27.8 元風(fēng)電消納率91.5%97.6%從數(shù)據(jù)看有序充電不僅讓系統(tǒng)更安全用戶還因?yàn)槎嘣诠榷纬潆姸鴾p少了費(fèi)用。這也說(shuō)明只要補(bǔ)償機(jī)制設(shè)計(jì)合理用戶是有意愿配合調(diào)度的。6. 個(gè)人經(jīng)驗(yàn)與后續(xù)優(yōu)化方向6.1 調(diào)試中最重要的幾個(gè)心得第一先跑確定性模型再上隨機(jī)模型。很多人一上來(lái)就多場(chǎng)景整數(shù)變量混合響應(yīng)結(jié)果模型很長(zhǎng)報(bào)錯(cuò)都定位不到。我的習(xí)慣是先去掉風(fēng)電隨機(jī)性直接用預(yù)測(cè)曲線跑通再把場(chǎng)景約束逐層加回去。每加一層就驗(yàn)證一次結(jié)果這樣調(diào)試周期會(huì)短很多。第二對(duì)約束名字做注釋。Yalmip支持將約束命名比如Constraints [Constraints, P_balance: sum(P_gen)... ...];這樣模型不可行時(shí)check(Constraints)能告訴你具體沖突的是哪條約束。這個(gè)習(xí)慣幫我快速定位過(guò)好幾次數(shù)值問(wèn)題。第三慎用“每輛車”粒度的模型。除非你研究的是充電設(shè)施協(xié)同控制否則調(diào)度層用集群聚合模型就夠了。逐輛車建模不僅優(yōu)化變量多而且每輛車的隨機(jī)出入性能讓求解時(shí)間膨脹到不可接受。聚合層做完調(diào)度再底層做分配是電力系統(tǒng)慣用的分層思路。6.2 哪些方向值得繼續(xù)做多微電網(wǎng)協(xié)同調(diào)度本文只討論了一個(gè)微電網(wǎng)實(shí)際園區(qū)常有多個(gè)微電網(wǎng)互聯(lián)。集群電動(dòng)汽車可以在不同微電網(wǎng)間移動(dòng)形成跨區(qū)需求響應(yīng)模型會(huì)從單層優(yōu)化變?yōu)殡p層或多層博弈??紤]電池退化成本的V2G代碼里V2G補(bǔ)償成本需要更精細(xì)地反映電池壽命衰減。只有把循環(huán)老化折損算清楚調(diào)度結(jié)果才具備商業(yè)可行性。實(shí)時(shí)滾動(dòng)修正日前調(diào)度計(jì)劃面對(duì)風(fēng)電實(shí)時(shí)波動(dòng)效果有限??梢愿某赡P皖A(yù)測(cè)控制MPC每個(gè)小時(shí)滾動(dòng)更新未來(lái)4小時(shí)計(jì)劃把預(yù)測(cè)誤差的影響壓到最低。這跟本文的框架兼容性很好只需在循環(huán)里反復(fù)調(diào)用優(yōu)化函數(shù)。最后再分享一個(gè)小細(xì)節(jié)Yalmip的optimize返回info可以告訴你求解狀態(tài)但很多人只看結(jié)果不看狀態(tài)要知道需求側(cè)響應(yīng)模型里約束過(guò)多時(shí)求解器經(jīng)常返回Infesible千萬(wàn)別把一堆NaN當(dāng)結(jié)果繼續(xù)輸出了。跑優(yōu)之前給每個(gè)優(yōu)化問(wèn)題打個(gè)info斷點(diǎn)是一個(gè)好習(xí)慣。這個(gè)課題我前后迭代了四五個(gè)版本從最初不考慮需求響應(yīng)的簡(jiǎn)單經(jīng)濟(jì)調(diào)度到現(xiàn)在的“風(fēng)電場(chǎng)景價(jià)格型與激勵(lì)型響應(yīng)集群電動(dòng)汽車V2G”綜合模型每一步的代碼和算例都是獨(dú)立推進(jìn)的。如果是從頭開(kāi)始做建議先把我上面說(shuō)的第3章模型框架搭穩(wěn)再往里面加復(fù)雜度。模型不亂代碼自然穩(wěn)。