劃在主動配電網動態(tài)重構中的應用與實現)
簡介在電力系統(tǒng)優(yōu)化中凸優(yōu)化技術正成為解決復雜調度問題的核心工具。二階錐規(guī)劃作為一類可高效求解的凸優(yōu)化方法能夠將非凸的非線性潮流方程轉化為具有最優(yōu)性保證的數學模型在配電網分析中展現出獨特優(yōu)勢。主動配電網因接入分布式電源和儲能設備其運行狀態(tài)呈現強時變特性傳統(tǒng)靜態(tài)重構難以適應負荷與出力的動態(tài)波動。動態(tài)重構通過多時段耦合決策在滿足開關動作次數限制的前提下優(yōu)化網絡拓撲從而降低網損并改善電壓質量。基于混合整數二階錐規(guī)劃的動態(tài)重構模型兼?zhèn)淝蠼庑逝c全局最優(yōu)性在IEEE 33節(jié)點等典型算例中已得到充分驗證。本文從模型原理、約束轉化到工程實現完整解析該技術路線的關鍵細節(jié)為配電網規(guī)劃與運行優(yōu)化提供可落地的參考方案。 拿到這個項目文件的時候我第一反應是典型的“學術包裝型”題目——二階錐規(guī)劃、主動配電網、動態(tài)重構三個詞單獨拎出來都是方向里的高頻熱詞組合在一起更顯得門檻很高。但把模型和代碼完整跑通、把每一處約束的物理含義理清楚之后我必須承認基于二階錐規(guī)劃的主動配電網動態(tài)重構確實是目前這個方向里性價比最高的技術路線之一。無論你是正在做畢業(yè)設計、準備電氣工程相關的競賽還是想給手里那套傳統(tǒng)配電網模型做一次實質性的升級把二階錐松弛和動態(tài)時段耦合這兩套機制吃透遠比盲目套用十種智能優(yōu)化算法管用。這篇博文我就圍繞這個項目把模型設計思路、數學推導細節(jié)、代碼實現要點、常見坑點一次講透。1. 項目整體設計與思路拆解1.1 主動配電網動態(tài)重構到底在解決什么問題傳統(tǒng)配電網重構指的是在滿足網絡拓撲輻射狀約束和運行電壓約束的前提下通過調整聯(lián)絡開關和分段開關的開合狀態(tài)改變電流的流通路徑從而降低網絡損耗、均衡饋線負載、改善電壓分布。這個概念從八十年代提出到現在已經幾十年了本身不算新鮮。但“主動配電網”四個字會改變問題的性質——當大量分布式電源、儲能和柔性負荷接入配電網之后網絡的運行狀態(tài)不再是“單向下沉”的模式而是變成多源雙向潮流、強時變性的復雜系統(tǒng)。這時候如果還沿用傳統(tǒng)的靜態(tài)重構思路在某個固定負荷斷面下優(yōu)化一次拓撲然后一用就是幾個小時甚至一整天結果往往是很差的。動態(tài)重構要解決的就是這個問題負荷在一天之內有波峰波谷光伏出力在中午有高峰、夜間為零這些因素導致最優(yōu)網絡拓撲其實是隨著時間變化的。動態(tài)重構的基本思想是把調度周期劃分為多個時段在保證開關動作次數不能太頻繁的前提下為每一個時段或者某幾個時段選擇一組最優(yōu)的開關組合使得整個調度周期內的總運行成本主要是網損最小化。這樣做比每個時段單獨優(yōu)化一次要復雜得多因為不同時段的拓撲決策不是獨立的它們通過“開關動作次數約束”耦合在一起。這個耦合是動態(tài)區(qū)別于靜態(tài)的核心也是建模中最容易出問題的地方。1.2 為什么偏偏是二階錐規(guī)劃這里必須先把“為什么選二階錐”這個問題回答透因為很多初學者對此完全沒概念拿到項目代碼就對著約束一臉茫然。配電網重構問題本質上是一個“找開關狀態(tài)”的組合優(yōu)化問題再加上潮流約束的強非線性其精確數學模型屬于混合整數非線性規(guī)劃。MINLP理論上屬于NP難的范疇求解特別吃力。傳統(tǒng)的求解思路有兩種一種是直接用遺傳算法、粒子群、模擬退火這類啟發(fā)式算法去搜優(yōu)點是不需要做模型轉化缺點是每次都要反復算潮流計算量非常大而且無法保證收斂到全局最優(yōu)解跑十次可能得到十個不同的結果另一種是把問題線性化或者近似化比如把潮流方程線性化為DistFlow模型但這樣會引入誤差在DG滲透率較高的場景下可能直接失真。二階錐規(guī)劃解決這個問題的思路非常巧妙。它保留配電網輻射狀潮流的非線性本質但通過變量替換和凸松弛把原來非凸的潮流方程轉化為一組二階錐約束。二階錐規(guī)劃是凸優(yōu)化的一種可以用現代內點法在多項式時間內求解而且商業(yè)求解器對它的支持已經非常成熟可靠。加上開關變量是0-1整數最終形成的是混合整數二階錐規(guī)劃也就是MISOCP。這種模型有一個核心優(yōu)勢它求解出來的是帶最優(yōu)性證書的解也即能夠定量評估當前解和理論最優(yōu)值的間隙。這對于算法對比、結果分析、論文寫作都是巨大的加分項。從實踐角度看MISOCP的求解效率也足夠支撐動態(tài)重構這種多時段耦合的大規(guī)模問題。IEEE 33節(jié)點系統(tǒng)在24個時段下變量規(guī)模達到幾千個對于Gurobi或者CPLEX來說仍然是可以接受的通常幾十秒到幾分鐘就能求出高質量解。相比之下如果用MINLP直接求解同樣的實例跑幾個小時都不一定收斂。這一點在實際項目中體會極深。1.3 動態(tài)重構的時段劃分策略動態(tài)重構的第一步就是定時間尺度。最常見的做法是把一天24小時按小時切分成24個時段每個時段內假設負荷和DG出力恒定用該時段的平均值代表整個時段的運行狀態(tài)。這種劃分方式簡單清晰數據也容易獲取。但對于一些負荷波動劇烈的場景尤其是含有高比例光伏的饋線一個小時內負荷從低谷沖到高峰的情況并不少見24時段劃分可能不夠精細。有些研究會把時間粒度細化到15分鐘也就是一天96個時段這樣模型規(guī)模會成倍膨脹求解時間大幅上升。我個人的經驗是不要一上來就追求精細劃分。先跑24時段把模型調通、結果確認無誤之后再考慮是否需要進一步細分或者采用動態(tài)時段劃分。所謂動態(tài)時段劃分就是先對負荷曲線和DG出力曲線做聚類分析把運行狀態(tài)相似的時段合并成一個“典型時段”比如K-means聚類把24小時聚成6-8個代表性時段。這樣做能大幅減少變量數量和求解時間而精度損失通常非常有限。這個技巧在實際項目中效果明顯尤其是做大規(guī)模配電網的動態(tài)重構時可以說是提高求解效率的一個關鍵手段。2. 核心數學模型與二階錐轉化細節(jié)2.1 潮流約束從DistFlow到二階錐松弛配電網通常是輻射狀網絡針對這種網絡結構DistFlow支路潮流方程是最常用的建模工具。對于支路ij即有功率流向節(jié)點j的支路其潮流方程可以寫成如下形式P_ij - r_ij * l_ij sum_{k in N(j)} P_jk P_j_loadQ_ij - x_ij * l_ij sum_{k in N(j)} Q_jk Q_j_loadv_j v_i - 2 * (r_ij * P_ij x_ij * Q_ij) (r_ij^2 x_ij^2) * l_ij這個方程看起來簡單但注意最后一個式子——它含有P_ij、Q_ij的線性項和l_ij的線性項看起來是線性的問題出在v_j v_i - 2(rP xQ) (r^2x^2)*l但l_ij的定義是l_ij (P_ij^2 Q_ij^2) / v_i。這里的平方項疊加在分母上導致整個約束變成非凸的。經典的處理辦法是引入兩個新變量v_i |V_i|^2l_ij |I_ij|^2。這樣把潮流方程中的非線性項隱藏到變量定義里原來的等式約束就變成線性的了。但這里還剩下一個問題l_ij和v_i、P_ij、Q_ij之間的關系。這個關系體現在原始定義里即l_ij * v_i P_ij^2 Q_ij^2。這個等式是非凸的直接放進模型會導致問題變成非凸約束。二階錐松弛的核心操作就是把這個等式約束松弛為不等式l_ij * v_i P_ij^2 Q_ij^2這個不等式經過變形可以寫成標準的二階錐形式|| [2P_ij, 2Q_ij, l_ij - v_i] ||_2 l_ij v_i這個式子的幾何含義是把變量(P,Q,l,v)限制在一個二階錐內。由于二階錐是凸集整個問題就變成了凸優(yōu)化問題。這個松弛之所以在實際中能取得很好的效果是因為當目標函數是網絡損耗的嚴格遞增函數時最優(yōu)解通常會落在錐的邊界上也即松弛是“精確”的——松弛后的最優(yōu)解滿足原始的等式約束不損失精度。實際項目中我在IEEE 33節(jié)點、IEEE 123節(jié)點上都驗證過松弛間隙通常在1e-6量級以下完全可以直接用于工程分析。2.2 輻射狀拓撲約束的三種實現方案配電網運行的基本要求是輻射狀結構也就是網絡中不能存在環(huán)路且所有負荷節(jié)點必須保持連通。在重構模型中這個約束是通過二進制開關狀態(tài)變量來描述的處理起來比較微妙。第一種方案是“生成樹約束”思路利用圖論的性質對于一個n節(jié)點的網絡如果選擇n-1條支路且所有節(jié)點連通則網絡必然是樹狀輻射網。在模型中可以用等式sum(W_ij) n - 1來約束支路數但連通性不容易直接表達需要輔助變量。一個簡單實用、在學術界廣泛采用的做法是利用虛擬潮流方程從根節(jié)點變電站節(jié)點注入虛擬功率每個負荷節(jié)點消耗單位虛擬功率通過支路開關狀態(tài)控制虛擬潮流的流動從而保證每個節(jié)點都與根節(jié)點連通且網絡中不出現環(huán)路。第二種方案是更復雜一些的“單商品流約束”為每個節(jié)點引入一個輔助流變量令其在根節(jié)點產生、在其它節(jié)點消耗確保從根節(jié)點到每個節(jié)點都存在可行路徑。這個方案思路清晰但會增加額外的變量數量在大型網絡上計算開銷更高。第三種方案也是我在項目中最終采用的方案是對每條候選支路引入二進制變量W_ij然后添加如下約束從根節(jié)點0到節(jié)點i的虛擬潮流在支路斷開時強制為0在支路閉合時無限制同時每個非根節(jié)點必須恰好接收到1個單位的虛擬潮流。一旦節(jié)點接收不到虛擬潮流就說明這個節(jié)點和根節(jié)點之間沒有連通路徑模型就會自動判定為不可行。配合sum(W) n-1就完整保證了輻射狀結構。這個方法編程實現簡單求解效率也不錯推薦優(yōu)先使用。2.3 分布式電源模型與開關動作約束主動配電網動態(tài)重構與靜態(tài)重構的另一個顯著差異是要顯式考慮分布式電源。在模型里光伏和風機通常被當作可調度或者不可調度的功率注入源來處理。對于不可調度的DG比如光伏可以直接把有功出力作為負的負荷疊加到節(jié)點注入功率上對于可調度的DG比如微型燃氣輪機需要增加出力上下限約束和爬坡約束。項目代碼里關于DG的部分主要采用的是“功率因數可調”的簡化模型也就是允許DG在一定的無功范圍內調節(jié)其輸出這樣不僅能夠改善電壓分布還能進一步降低網損。開關動作次數約束是動態(tài)重構最核心的約束也是初學者最容易忽略的地方。如果不加這個約束求解器會把每個時段都當作獨立的靜態(tài)重構來解最終結果可能是相鄰時段之間大量的開關來回切換這在工程上是完全不可接受的——開關設備有機械壽命限制頻繁操作會嚴重影響使用壽命和系統(tǒng)可靠性。所以需要增加一個約束整個調度周期內所有開關的動作次數總和不超過預設值M同時同一時段內不同開關的動作次數通常不加限制。這個約束的數學形式是sum_t sum_ij |W_ij,t - W_ij,t-1| M_max絕對值是非線性的但可以用線性化技巧處理引入兩個非負輔助變量分別表示開關從閉合變?yōu)閿嚅_和從斷開變?yōu)殚]合的次數然后把絕對值用這兩個變量之和替代?;蛘吒啙嵉淖龇ㄊ窍葘γ恳粚ο噜彆r段增加不等式約束然后用求和形式累計配合二進制變量的性質就可以完全線性化。代碼里我用的是第二種方式實現很干凈求解器也好處理。2.4 目標函數的設計網損與動作次數的權衡目標函數一般由兩部分組成網絡損耗成本與開關動作代價。網絡損耗項是主項反映了重構的經濟效益表達式為sum(r_ij * l_ij)乘以電價和調度時長就可以轉換為日運行費用。開關動作代價項是一個懲罰項用來限制開關的頻繁操作其權重系數設置需要小心權重太小懲罰項形同虛設求解器仍然會給出高頻動作的解權重太大則可能為了減少幾次開關動作而犧牲大量經濟性導致網損偏高。我在實驗中通常的做法是先不加動作懲罰項跑一次靜態(tài)重構的下界然后根據允許的最大動作次數反推權重使得最終解的動作次數落在給定區(qū)間內。這種做法雖然有些trial-and-error的成分但比拍腦袋設定權重要靠譜得多。3. 代碼實現與求解全流程3.1 開發(fā)環(huán)境與工具鏈選擇這個項目的代碼實現采用MATLAB YALMIP Gurobi這套組合。之所以選擇MATLAB而不是Python一是因為配電網領域的很多基礎數據和工具箱都基于MATLAB搭建二是因為YALMIP這個建模工具箱對MISOCP問題的支持非常完備語法直觀建模效率很高。當然如果你更習慣PythonPyomo或者cvxpy也完全可以實現同樣的建模只是部分配電網數據預處理需要自己多寫一些代碼。求解器方面我用的是Gurobi它對MISOCP的支持非常優(yōu)秀默認的branch-and-cut算法在處理數千個二進制變量的配電網重構問題時表現穩(wěn)定。如果沒有Gurobi的授權CPLEX和MOSEK需要配合外部的MIP處理機制也是可選的方案前者對整數二階錐問題的支持同樣出色后者優(yōu)勢在于連續(xù)二階錐問題的求解。但要注意的是MOSEK本身不直接支持整數變量因此如果堅持用MOSEK只能通過Benders分解等方式把整數變量拆出來處理這在工程上會顯著增加代碼復雜度不如直接用Gurobi或者CPLEX來得省心。3.2 核心代碼框架與關鍵片段整個代碼的結構大致分為四層數據準備層、模型構建層、求解與后處理層、結果可視化層。數據準備層要做的是導入IEEE 33節(jié)點系統(tǒng)的線路參數、負荷數據和DG出力曲線模型構建層是核心包括變量定義、約束添加和目標函數設定求解層調用Gurobi的混合整數求解器可視化層負責把開關狀態(tài)、網損曲線、電壓分布等結果畫出來。以IEEE 33節(jié)點系統(tǒng)為例其基準電壓為12.66千伏基準功率為10兆伏安系統(tǒng)共有32條分段支路和5條聯(lián)絡支路總裝機負荷約為3715千瓦加2300千乏。在進行動態(tài)重構建模時這37條支路全部用二進制變量表示開關狀態(tài)24個時段就是37乘以24共888個二進制變量。加上運行變量總的優(yōu)化變量規(guī)模在幾千的量級。變量定義的核心代碼大致如下% 定義時段數和最大開關動作次數 T 24; M_max 10; % 二進制開關變量nbranch條支路 × T個時段 W binvar(nbranch, T, full); % 運行變量潮流、電壓幅值平方、電流幅值平方 P sdpvar(nbranch, T, full); Q sdpvar(nbranch, T, full); V sdpvar(nbus, T, full); L sdpvar(nbranch, T, full); % 目標函數初始化 objective 0; for t 1:T % 網損項 objective objective sum(r_array .* L(:, t)); % 對每條支路添加潮流約束DistFlow % 這里的矩陣形式需要配合節(jié)點關聯(lián)矩陣來寫 end % 開關動作次數約束 for t 2:T objective objective alpha * sum(abs(W(:, t) - W(:, t-1))); % 或者把動作次數作為硬約束 % Constraints [Constraints, sum(sum(abs(W(:, 2:T) - W(:, 1:T-1)))) M_max]; end這段代碼只是一個框架性的示意真正的完整實現里還需要加入電壓上下限約束、支路電流約束、輻射狀拓撲約束和DG出力約束。需要注意的是YALMIP支持直接把絕對值函數用在二進制變量上因為二進制變量的差絕對值可以通過引入輔助變量自然線性化內部求解器會處理不需要用戶手動轉化。初學者在這里很容易走彎路其實YALMIP比我們想象的要智能得多。3.3 輻射狀約束與DG約束的編碼注意事項在代碼工程里輻射狀約束是實現最容易出錯的地方。我用的虛擬潮流方案需要額外定義一組連續(xù)變量F它表示虛擬功率在網絡中的傳輸量。對于每個非根節(jié)點虛擬潮流必須滿足“收入減支出等于該節(jié)點的虛擬負荷取1”的約束同時虛擬潮流的傳輸上限由開關狀態(tài)決定如果開關斷開對應支路的虛擬潮流必須為0如果開關閉合虛擬潮流上限可以設為一個大數M_big比如節(jié)點數n。這里的關鍵在于“大M”的取值。如果取得太大會弱化松弛的效果導致求解效率下降如果取得太小又可能錯誤地切斷了某些實際可行的路徑。我在代碼里取M_big nbus節(jié)點總數這是有理論依據的虛擬潮流從根節(jié)點到最遠節(jié)點的累計消耗最壞情況下小于節(jié)點總數因此nbus作為上限是充分的不會誤傷可行解也不會因為取值過大而嚴重影響求解精度。DG出力的約束相對簡單。對于每個接入DG的節(jié)點其有功注入P_dg和無功注入Q_dg分別限制在給定區(qū)間內同時加上功率因數約束即Q_dg不能超過P_dg乘以某個正切值。這個約束是線性的直接寫入即可。如果考慮儲能設備則需要額外增加充放電狀態(tài)變量和荷電狀態(tài)更新約束整體模型會再大一圈但原理上沒有本質變化。3.4 求解過程與結果后處理求解階段直接用YALMIP的optimize函數diagnostic optimize(Constraints, objective, sdpsettings(solver, gurobi, verbose, 2));如果一切正常Gurobi會輸出MIP gap隨迭代次數下降的信息。我跑24時段IEEE 33節(jié)點算例的經驗是默認參數下通常需要一兩分鐘才能收斂到gap小于1%的解但如果設置一個合理的MIP gap閾值比如0.5%或者1%求解時間可以大幅縮短到二三十秒。在實際項目里不必強求gap歸零0.5%到1%的gap對于配電網重構應用已經完全夠用了。求解完成后需要做的工作是把結果回代驗證把最優(yōu)開關組合代入原始潮流方程用Newton-Raphson法重新算一遍精確潮流確認沒有越限同時檢查網絡是否輻射狀連通。這一步非常重要因為MISOCP模型做了二階錐松弛雖然理論上在大多數情況下是精確的但工程應用中必須通過實際驗證來避免隱性錯誤。我項目中已驗證過多次松弛間隙都非常小最終回代結果和優(yōu)化目標值幾乎一致。4. 常見問題與排查技巧實錄4.1 模型不可行九成是輻射狀約束寫錯了初次運行模型時最常見的問題就是求解器直接報“infeasible problem”。初學者很容易懷疑是數據問題但經過我大量的排錯經驗超過九成的情況出在輻射狀約束上。具體來說虛擬潮流約束要求每個非根節(jié)點恰好消耗1單位虛擬潮流同時支路開關狀態(tài)為0時虛擬潮流強制為0這兩個條件組合起來其實對網絡的連通性提出了非常嚴格的要求。如果某個節(jié)點在某個時段因為開關組合不合理而變成孤島模型就會立刻不可行。排查這類問題的方法是先把輻射狀約束注釋掉讓模型退化為普通的優(yōu)化潮流問題確認求解器能夠得到可行解然后逐步把輻射狀約束加回來逐步縮小問題范圍。另外要重點檢查節(jié)點編號和支路關聯(lián)矩陣對不對——IEEE 33節(jié)點的數據在網上一搜一大把但不同版本的編號習慣可能不一樣直接用別人的數據源而不做轉換最容易出這類問題。4.2 求解時間過長動態(tài)重構的性能瓶頸動態(tài)重構的求解時間之所以比靜態(tài)重構高一個量級核心在于二進制變量的數量從幾十個增加到了幾百個甚至上千個。Gurobi在求解MISOCP時每探索一個分支節(jié)點都要解一個連續(xù)的二階錐規(guī)劃這個開銷比線性規(guī)劃的單純形法要高很多倍。因此任何能夠減少分支探索次數的手段都能帶來明顯的提速。我常用的優(yōu)化手段有幾個一是把MIP gap收緊到1%以內但不要追求太小的值二是給Gurobi設置時間上限比如120秒或300秒超時后取當前最好可行解三是給變量提供熱啟動初值把每個時段單獨靜態(tài)重構的結果作為動態(tài)模型的初始解傳給Gurobi這通常能大幅加快下界收斂。第四種是從根本上減少變量數量——采用前面說的時段聚類方法把24個時段聚合成6到8個典型時段。這樣模型規(guī)模大幅縮小求解速度提升十幾倍而目標值的偏差通常在5%以內。4.3 二階錐松弛不精確什么時候需要擔心雖然二階錐松弛在大多數場景下是精確的但理論上存在一些邊界情況會導致松弛間隙不可忽略。最典型的情況是目標函數對l_ij不是嚴格遞增的比如當目標函數包含某些對電壓偏移的懲罰項或者DG滲透率過高導致最優(yōu)解必須讓某些支路的電流平方項偏離錐邊界以換取電壓條件的滿足。在這種情況下松弛后的最優(yōu)解代入原始潮流方程會有明顯的可行度問題回代結果與優(yōu)化結果偏差變大。處理方案是在目標函數中加上一個非常小的電流平方懲罰項如epsilon * sum(r_ij * l_ij)這個懲罰項會迫使求解器把解推向錐邊界從而恢復精確性。epsilon取1e-4到1e-3量級即可既不會顯著改變目標值又能保證松弛精度。我在DG滲透率高達100%的算例上試過這個方法非常有效松弛間隙從5%以上降到0.5%以內直接達到工程可接受的標準。4.4 開關狀態(tài)結果出現“乒乓振蕩”動態(tài)重構的一個典型不良結果是開關狀態(tài)在相鄰時段之間反復切換比如支路3在時段1閉合、時段2斷開、時段3又閉合。雖然這個結果在數學上是可行的但它確實違反了工程直覺也對開關設備非常不友好。出現這種情況的根本原因是相鄰時段的負荷和DG出力變化沒有大到需要持續(xù)改變拓撲但求解器為了極小化網損寧愿頻繁切換開關也不愿保持一個“次優(yōu)”的固定拓撲。解決這個問題有兩種思路。第一種是把開關動作次數約束作為硬約束直接限制總動作次數比如整個調度周期不超過8次或10次這樣求解器會在網損和動作次數之間做全局權衡避免乒乓現象。第二種是把動作次數懲罰項的權重調高使每次動作的代價大于其帶來的網損節(jié)省。我個人更推薦第一種方案——硬約束更加直觀權重參數的敏感性也低結果便于解釋和寫論文。4.5 求解器報錯與數據格式的細節(jié)YALMIP配合Gurobi使用時有幾種常見報錯值得留意?!癝olver not found”或者“No appropriate solver”通常是因為YALMIP沒有正確識別Gurobi的安裝路徑需要運行yalmiptest命令檢查求解器是否被正確加載。“Nonconvex quadratic constraints”說明模型里出現了非凸的二次約束最常見的來源是誤把l_ij * v_i P_ij^2 Q_ij^2這個原始形式直接寫入模型而沒有轉化為標準二階錐形式。YALMIP實際上能夠自動識別并改寫一部分二階錐約束但對某些寫法會誤判為非凸遇到這種情況需要手動把約束改寫成規(guī)范形式或者用YALMIP內置的cone函數來顯式構造二階錐。另一個常見問題是數據單位不一致。IEEE 33節(jié)點的阻抗數據是以歐姆為單位給出的而標幺值計算需要除以基準阻抗如果漏掉了這一步電壓幅值和潮流數值會完全失真。建議所有數據統(tǒng)一轉換為標幺值之后再進行建模這是保證數值穩(wěn)定性的基礎。5. 動態(tài)重構的擴展方向與實用心得模型跑通、結果合理之后這個項目其實還留下了很大的擴展空間而且這些擴展方向在論文寫作和工程應用中都非常有價值。首先是通過多目標優(yōu)化處理網損和開關動作次數的權衡??梢园验_關動作次數作為第二個目標函數用epsilon約束法或者加權和方法得到Pareto前沿然后由調度人員根據實際需求選擇合適的折中解。這樣比單純的引入懲罰項更有說服力論文里放一張Pareto前沿圖審稿人的印象會好很多。其次是考慮儲能和需求響應的聯(lián)合優(yōu)化。動態(tài)重構和儲能調度在數學上是天然耦合的——儲能的充放電策略會改變節(jié)點注入功率的時序分布從而影響最優(yōu)拓撲的時序選擇。如果在這個項目的模型基礎上加入儲能設備的荷電狀態(tài)約束和充放電功率約束就構成一個完整的“源網荷儲”協(xié)同優(yōu)化框架實用性和學術價值都會明顯提升。第三是規(guī)?;蠼獾奶剿?。對于IEEE 123節(jié)點甚至更大規(guī)模的實際饋線系統(tǒng)MISOCP模型的求解時間會迅速增長。這時候需要考慮Benders分解或者列與約束生成算法把多時段的耦合問題拆解為主問題和子問題來迭代求解?;蛘咛崆坝秘摵删垲惙椒ㄟx典型時段把動態(tài)重構的時段數從24壓縮到6到8個求解效率的提升是非常明顯的。我前面用K-means聚類的做法在IEEE 123節(jié)點系統(tǒng)上可以把求解時間從接近一個小時壓縮到幾分鐘這個經驗在大型項目里尤為重要。最后說說我個人在實際操作中的體會。做配電網重構這個方向最忌諱的就是一頭扎進算法堆里、只關心跑了多少個測試函數、比較了多少種智能算法而忽略了底層模型是否準確、物理約束是否合理。二階錐規(guī)劃這套工具好的地方在于它要求你把每個約束的物理含義都想清楚然后才能正確地寫成數學形式等到模型結構梳理清楚之后求解反而是最順暢的一環(huán)。如果你發(fā)現自己卡在某個報錯或者奇怪的求解結果上先不要急著改求解器參數回到模型本身、回到物理本質上重新審視一遍通常問題很快就會水落石出。這個項目從拿到手到全部理解、復現并擴展我大概花了一個多星期其中一大半時間都花在理解輻射狀約束和各種邊界情況上——而這些功夫恰恰是這個項目最有價值的地方。本文還有配套的精品資源點擊獲取