熱慣性聯(lián)合優(yōu)化調(diào)度:熱電聯(lián)產(chǎn)系統(tǒng)建模與求解)
前幾年做模擬項目X時我遇到一個很典型的調(diào)度困境系統(tǒng)里有一臺熱電聯(lián)產(chǎn)機組和一片集中供熱管網(wǎng)冬季夜間電負荷低、熱負荷卻很高機組被“以熱定電”的約束綁得死死的電力調(diào)峰完全騰不出手只能眼睜睜看著風電場被迫棄風。當時組里引入先進絕熱壓縮空氣儲能AA-CAES做擴容改造原以為把儲能當成“大號電池”接入電網(wǎng)就行結(jié)果一跑調(diào)度就發(fā)現(xiàn)真正讓收益卡脖子的根本不是電量平衡而是供熱網(wǎng)絡(luò)的熱慣性。熱量在管道里走得慢、會降溫、能短暫蓄存這些特性如果不放進優(yōu)化模型儲能和熱電機組永遠只能各干各的聯(lián)合調(diào)度就是一句空話。這篇文章我把完整設(shè)計和代碼實現(xiàn)拆開講包括熱網(wǎng)動態(tài)建模、AA-CAES和熱電聯(lián)產(chǎn)的數(shù)學(xué)約束、求解器落地、算例對比和調(diào)試經(jīng)驗給正在做綜合能源系統(tǒng)優(yōu)化調(diào)度的同學(xué)一份可以直接復(fù)現(xiàn)的參考。1. 為什么要把壓縮空氣儲能和熱網(wǎng)熱慣性放在同一個優(yōu)化模型里1.1 熱電聯(lián)產(chǎn)的“電熱耦合”是怎么卡住調(diào)峰的熱電聯(lián)產(chǎn)機組的核心特征是同時出力汽輪機在發(fā)電的同時抽汽或排汽給熱網(wǎng)提供熱量。抽凝式機組的熱電關(guān)系在一個可行域內(nèi)變化熱出力拉高時機組電出力下限也被一起抬高。冬季夜間恰恰是熱負荷高峰、電負荷低谷風電大發(fā)時CHP為了滿足供熱必須發(fā)出大量電電網(wǎng)消納不掉產(chǎn)生棄風。所有做過電力調(diào)度的人都熟悉這種“想降電卻降不下來”的憋屈感。大多數(shù)傳統(tǒng)做法是給CHP配蓄熱罐用蓄熱罐在熱負荷高峰“接一下”讓機組白天少供一點熱、晚高峰多供一點熱從而騰出電調(diào)峰空間。蓄熱罐本質(zhì)上是個熱量的時間搬運工。但蓄熱罐有容量限制而且它是“顯式”的儲能設(shè)備要花錢、占場地。真正容易被忽略的是區(qū)域供熱管網(wǎng)本身——管道里的熱水量巨大流速不高熱量從熱源到用戶要花幾十分鐘甚至幾個小時。這段延遲加上建筑物本身的蓄熱能力構(gòu)成了熱慣性它相當于一張分布在整個管網(wǎng)里的隱形容熱網(wǎng)比集中式蓄熱罐的容量大得多。一旦把熱慣性考慮進調(diào)度熱源側(cè)和用戶側(cè)之間就不是簡單的“瞬時供熱等于瞬時用熱”而是允許供熱功率在一段時間內(nèi)偏離用戶散熱功率用管網(wǎng)和建筑的蓄熱能力去填補這個缺口。這正是解除“以熱定電”鎖鏈的關(guān)鍵抓手。1.2 AA-CAES在系統(tǒng)里的雙重身份電儲能加隱藏熱源先進絕熱壓縮空氣儲能與傳統(tǒng)壓縮空氣儲能最大的區(qū)別在于它把壓縮過程中產(chǎn)生的壓縮熱存下來而不是丟棄掉。充電時壓縮機消耗電能壓縮空氣空氣進入儲氣室前先經(jīng)過蓄熱換熱器把熱量存在蓄熱介質(zhì)里放電時儲氣室的高壓空氣先被這個蓄熱介質(zhì)重新加熱再進入膨脹機做功發(fā)電。整個過程不需要補燃天然氣因此AA-CAES同時具備儲電和儲熱兩條能量鏈路循環(huán)效率一般在60%到70%之間。在熱電聯(lián)產(chǎn)系統(tǒng)里這個雙重性非常值錢。充電時壓縮機耗電是在幫助電網(wǎng)消納風電壓縮熱如果直接供給熱網(wǎng)或存入蓄熱罐又是在幫助熱網(wǎng)補熱。放電時膨脹機發(fā)的是電但從蓄熱介質(zhì)取走的熱量如果不補回來下一次放電功率就會受影響。這意味著AA-CAES的調(diào)度不能只看“什么時候充電、什么時候放電”還要看儲氣室壓力和蓄熱罐熱量兩個狀態(tài)變量如何聯(lián)動。很多人在建模時只寫儲氣室能量平衡漏了蓄熱罐的熱量平衡結(jié)果算出來的出力和實際物理過程完全對不上。1.3 熱網(wǎng)熱慣性放著沒用的“免費儲能”只在模型里挖得出來熱慣性的物理來源有兩個一是熱網(wǎng)管道的傳輸延遲和散熱二是建筑圍護結(jié)構(gòu)的蓄熱能力。熱水管道里的水是“貨車”熱量是“貨物”貨車從熱源跑到用戶需要時間而且跑的途中會向周圍土壤散熱。用戶側(cè)的房間本身是個大熱容短時間內(nèi)供熱量減少室溫不會立刻掉下來這就是建筑熱慣性。用生活類比來說把熱網(wǎng)想成整棟樓的“暖氣水庫存”。晚上鍋爐房多燒一點水送進管網(wǎng)第二天上午即使鍋爐少燒一小時室內(nèi)溫度依然能維持住。這種能力就是時間維度上的柔性。問題在于熱量在網(wǎng)絡(luò)里的流動是有損耗、有混合、有延遲的數(shù)學(xué)上很難寫進優(yōu)化模型所以很多研究的簡化做法是直接令“熱源供熱等于用戶熱負荷”把網(wǎng)絡(luò)當成一根無質(zhì)量、無延遲的理想管道。這樣就白白丟掉了最大的調(diào)節(jié)資源。把AA-CAES和熱網(wǎng)熱慣性放在同一個模型里本質(zhì)上是在做兩件事用儲能把電量在時間軸上搬移用熱慣性把熱量在時間軸上搬移而AA-CAES的充放電過程又天然把電和熱兩個時間軸耦合起來。這種多維度的耦合只有在統(tǒng)一的優(yōu)化模型里才能算出全局最優(yōu)解分開按“電系統(tǒng)”和“熱系統(tǒng)”各自調(diào)度永遠差一口氣。2. 熱慣性怎么變成一行行能求解的約束2.1 三種建模思路集總參數(shù)、延遲模型、節(jié)點法到底選誰供熱網(wǎng)絡(luò)動態(tài)建模常見的方案有三種。第一種是集總參數(shù)法把整個管網(wǎng)和用戶簡化為一個或幾個等效熱容室溫動態(tài)用一階慣性環(huán)節(jié)表達。優(yōu)點是變量少、求解快缺點是沒法反映管道延遲適合做全年長周期分析。第二種是傳輸延遲模型明確建立“管道入口溫度經(jīng)過一段時間后出現(xiàn)在出口”的關(guān)系保留延遲這個核心特征損失和混合則做大幅簡化。第三種是節(jié)點法按管段將供水和回水網(wǎng)絡(luò)做空間離散用有限差分把一維的對流換熱方程轉(zhuǎn)換成時序遞推式。節(jié)點法最接近物理過程但變量數(shù)量會隨網(wǎng)絡(luò)規(guī)模膨脹。我的建議很直接做日前優(yōu)化調(diào)度優(yōu)先采用傳輸延遲模型的思路在節(jié)點層面建立溫度等式但對溫度損失做線性近似。因為調(diào)度關(guān)心的核心是時間錯位延遲才是影響成本最大的因素。節(jié)點法雖然精確但動輒上萬變量的網(wǎng)絡(luò)模型塞進MILP求解器調(diào)試成本會迅速失控。如果只是做學(xué)術(shù)對比或者原型驗證先用小網(wǎng)絡(luò)把傳輸延遲跑通后面再逐步增補溫降方程。2.2 管道延遲和溫降的離散化處理管道入口溫度傳到出口物理上滿足一個帶延遲項的表達式。若保持熱網(wǎng)流量恒定那么水流經(jīng)過管段的傳播時間為τ L / v其中L是管長v是流速。離散化后延遲步長取k round(τ / Δt)Δt是調(diào)度時段長。第t個時段管段出口溫度可以表達為T_out(t) T_amb (T_in(t-k) - T_amb) × φφ是溫降系數(shù)近似取exp(-K·L / (m_dot·cp))K是綜合傳熱系數(shù)m_dot是質(zhì)量流量cp是比熱容。這個式子非常友好只要流量和管道參數(shù)給定φ就是常數(shù)k也是常數(shù)整條約束就是純線性的。很多人會問流量明明會隨負荷變化怎么能固定工程實踐中的處理辦法是把熱網(wǎng)調(diào)度分成兩步先按典型工況確定各管段流量分配比例溫度約束用固定流量下的延遲矩陣機組出力算出來之后再校驗這個流量假設(shè)是否合理差別大就迭代一輪。在二次網(wǎng)和一次網(wǎng)解耦的常規(guī)設(shè)計中一次網(wǎng)流量本來就經(jīng)常采用質(zhì)調(diào)節(jié)也就是供水溫度變化而流量基本不變固定流量假設(shè)的適用范圍比想象中大。2.3 節(jié)點混溫的雙線性難題與初版簡化熱網(wǎng)拓撲中必然存在供水管道的匯合節(jié)點比如兩條不同溫度的水在某個三通處匯合后進入同一段管道?;旌瞎?jié)點的能量守恒可以寫成T_mix (Σ m_dot_i · T_i) / (Σ m_dot_i)如果各支路流量m_dot_i固定這就是線性等式。如果流量也作為決策變量就會出現(xiàn)溫度乘以流量的雙線性項模型從線性優(yōu)化變成非凸非線性規(guī)劃求解難度和穩(wěn)定性都會斷崖式下跌。對做優(yōu)化調(diào)度的人來說這是最常見的“模型膨脹點”。初版方案不要硬碰雙線性項。先把各支路流量的分配比例固定下來等于只優(yōu)化溫度曲線上各節(jié)點的時序這樣整條網(wǎng)絡(luò)約束都是線性等式。等模型能穩(wěn)定收斂、調(diào)度邏輯驗證通過后再考慮流量可調(diào)用分段線性近似或者迭代求解。我在模擬項目X里正是這樣處理的第一階段固定流量比優(yōu)化結(jié)果成本已經(jīng)比忽略熱慣性的方案低不少第二階段再用迭代法微調(diào)流量收益增量很小但求解時間翻了數(shù)倍性價比很低。3. 優(yōu)化調(diào)度模型的完整數(shù)學(xué)骨架3.1 目標函數(shù)購電、售電、燃氣與棄風懲罰怎么打架日前優(yōu)化調(diào)度的目標函數(shù)是系統(tǒng)總運行成本最小化暫不考慮啟停成本和機組壽命損耗時可以寫成min Σ_t [ c_buy(t)·P_buy(t) - c_sell(t)·P_sell(t) c_gas·F_gas(t) c_curtail·P_curtail(t) ]其中P_buy是電網(wǎng)購電功率P_sell是售電功率。很多情況下同一聯(lián)絡(luò)線不可能同時購售電要加一條互斥約束。c_gas是單位燃氣價格F_gas是CHP燃氣消耗量。棄風懲罰c_curtail不一定是真實罰款更常見的是給它一個大值來體現(xiàn)“能不棄就不棄”的調(diào)度偏好。目標函數(shù)的取舍直接影響優(yōu)化結(jié)果如果棄風懲罰設(shè)得太低求解器會拿風電當可自由削減的變量掩蓋真實問題如果設(shè)得太高又可能讓儲能過度充放以致?lián)p耗成本超過棄風節(jié)省。我的經(jīng)驗是先把棄風率作為后處理統(tǒng)計指標目標函數(shù)里只寫現(xiàn)金成本和固定懲罰值然后用敏感性分析看棄風懲罰變化對總成本的影響再回頭定這個系數(shù)。3.2 決策變量清單哪些連續(xù)哪些必須上整數(shù)寫代碼之前先列變量清單是效率最高的做法。系統(tǒng)級模型需要以下幾類決策變量類型變量單位說明CHP電出力P_chp、熱出力H_chpMW受熱電可行域約束AA-CAES壓縮機功率P_c、膨脹機功率P_dMW充放電不能同時發(fā)生AA-CAES儲氣室能量E_air、蓄熱罐熱量E_heatMWh狀態(tài)變量需寫遞推式熱網(wǎng)節(jié)點供水溫度T_s(n,t)、回水溫度T_r(n,t)℃延遲與混溫約束電網(wǎng)購電功率P_buy、售電功率P_sellMW互斥風電棄風功率P_curtailMW等于預(yù)測功率減消納功率整數(shù)充放電狀態(tài)u_c、u_d0/1避免同時充放這里面最難處理的是溫度變量。溫度本身不是功率量級通常在幾十到一百之間而功率變量動輒幾百平衡等式里二者通過流量和比熱容相乘建立聯(lián)系數(shù)值尺度差很大求解器容易觸發(fā)數(shù)值警告。所以在建模時要提前把溫度坐標做平移比如統(tǒng)一減去基準環(huán)境溫度讓溫度變量落在0到50的相對范圍內(nèi)數(shù)值穩(wěn)定性會好很多。3.3 AA-CAES的儲氣與蓄熱狀態(tài)約束AA-CAES的兩個核心狀態(tài)方程是E_air(t1) E_air(t) η_c · P_c(t) · Δt - P_d(t) · Δt / η_d - E_loss(t)E_heat(t1) E_heat(t) α_rec · P_c(t) · Δt - P_d(t) · Δt / H_HR - H_ext(t) · ΔtE_loss是儲氣室泄漏和散熱損失一般按存儲量的一個小比例近似。α_rec是壓縮熱回收率通常在0.7到0.9之間。H_HR表示每兆瓦電出力需要從蓄熱介質(zhì)取走的熱功率反映空氣在膨脹前需要的加熱量H_ext是AA-CAES向外直供熱網(wǎng)的熱功率在熱電聯(lián)產(chǎn)場景里這是跟CHP強耦合的關(guān)鍵變量千萬不能漏。我見過很多代碼把蓄熱罐熱量寫成和E_air共用同一個SOC上限實際上是錯的。蓄熱介質(zhì)的熱容量由儲熱材料和罐體尺寸決定跟儲氣室壓力上限沒有直接關(guān)系。正確做法是把E_air和E_heat分別設(shè)上下限并在充放電功率約束里增加“當前蓄熱熱量能否支撐放電所需加熱”的邏輯約束防止優(yōu)化器把放電視為無代價的電能輸出。3.4 CHP可行域與熱網(wǎng)動態(tài)耦合約束的合并方式抽凝式CHP的電熱可行域是一個凸多邊形常見約束可以表達為P_chp_min - k1 · H_chp ≤ P_chp ≤ P_chp_max - k2 · H_chp其中k1、k2是抽汽系數(shù)取值決定熱出力對電出力上下限的影響程度。這個線性多邊形約束寫起來不難麻煩的是把它跟熱網(wǎng)動態(tài)約束放到一起時會出現(xiàn)“源供熱量不等于用戶耗熱量”的疑問。加入熱慣性后熱源供熱與用戶散熱之間要保持的是帶有蓄熱差分項的等式例如用供水管道的總熱容量C_net近似表達熱網(wǎng)蓄熱狀態(tài)變化Σ_h H_source(h,t) H_demand(t) C_net · [T_s_avg(t) - T_s_avg(t-1)] / Δt H_loss(t)這個式子左邊是CHP和AA-CAES供出的總熱量右邊是用戶負荷、管網(wǎng)蓄熱變化量和散熱損失。C_net是熱網(wǎng)等效熱容T_s_avg是所有節(jié)點供水溫度的加權(quán)平均值。它沒有試圖精確追蹤每個房間的室溫但把熱慣性最核心的“熱量可以暫存在管網(wǎng)里”這個能力表達出來了而且完全是線性約束。要把建筑物蓄熱也加進來只需在H_demand(t)前面加一個建筑等效熱容項形式一樣。4. 代碼落地從拓撲數(shù)據(jù)到求解器出結(jié)果的全流程4.1 數(shù)據(jù)結(jié)構(gòu)與參數(shù)準備先別急著寫優(yōu)化代碼把數(shù)據(jù)結(jié)構(gòu)和測試用例準備好能省一半調(diào)試時間。我習慣用以下目錄組織data/topology.json節(jié)點、管道、熱源、用戶的連接關(guān)系data/loads.csv用戶熱負荷、電負荷曲線data/electricity_price.csv日前分時電價data/params.jsonAA-CAES效率、容量、熱網(wǎng)管長管徑等參數(shù)src/model.py建模與求解腳本results/輸出出力曲線與成本統(tǒng)計拓撲文件是最容易被忽視的環(huán)節(jié)。我建議用節(jié)點編號列表加邊列表的方式存每個管道字段寫明長度、直徑、傳熱系數(shù)、起始節(jié)點和終止節(jié)點。提前寫一個函數(shù)計算每個管段的傳輸延遲步長和溫降系數(shù)因為這兩個值在建模時會被反復(fù)引用。用一個csv存延遲索引矩陣shape是[管段數(shù), 時段數(shù)]第(i,t)個元素表示第i段管道在t時刻接收到的入口溫度對應(yīng)的原始時段序號。模擬項目X的測試算例用了六節(jié)點五管段的簡化網(wǎng)絡(luò)節(jié)點1和2是熱源節(jié)點節(jié)點3到6是熱用戶管道長度從300米到1200米不等供水溫度設(shè)計值約90℃回水溫度約50℃。這個規(guī)模足夠驗證建模邏輯又不會在調(diào)試初期引入過多的求解負擔。4.2 建模核心代碼片段與延遲索引技巧在Python里用主流商業(yè)MILP求解器建模時核心代碼結(jié)構(gòu)類似下面這段。我只給出骨架具體參數(shù)根據(jù)場景填入。import numpy as np from some_milp_solver import Model # 基礎(chǔ)維度 T 24 # 日前調(diào)度24個時段 dt 1.0 # 時段長度小時 nodes [0, 1, 2, 3, 4, 5] pipes [...] # 每條管道: (起點, 終點, delay_steps, drop_coeff) # 決策變量 p_chp {} h_chp {} for t in range(T): p_chp[t] model.add_var(lb0, ubP_CHP_MAX, namefp_chp_{t}) h_chp[t] model.add_var(lb0, ubH_CHP_MAX, namefh_chp_{t}) p_ch model.add_vars(T, lb0, ubP_CH_MAX, namep_ch) p_dc model.add_vars(T, lb0, ubP_DC_MAX, namep_dc) e_air model.add_vars(T, lbE_AIR_MIN, ubE_AIR_MAX, namee_air) e_heat model.add_vars(T, lbE_HEAT_MIN, ubE_HEAT_MAX, namee_heat) # 熱源節(jié)點供水溫度 temp_s {} for n in nodes: for t in range(T): temp_s[n, t] model.add_var(lbT_AMB, ubT_SUP_MAX, namefTs_{n}_{t})延遲索引是這段代碼最容易出錯的地方。假設(shè)管道i的延遲步長為k則# 延遲: 出口溫度 入口溫度在t-k時刻的值按溫降系數(shù)衰減 for pipe in pipes: i, j, k, phi pipe for t in range(T): if t - k 0: src_t t - k model.add_constr( temp_s[j, t] - T_AMB phi * (temp_s[i, src_t] - T_AMB) ) else: # 調(diào)度周期開始前管道內(nèi)已有熱水取初始穩(wěn)態(tài)溫度 model.add_constr( temp_s[j, t] - T_AMB phi * (T_INIT - T_AMB) )這里的坑在于如果t-k小于0不能直接忽略約束因為優(yōu)化器會把出口溫度當成自由變量從而“免費”獲得熱量。正確做法是用調(diào)度開始時的初始溫度填充這一段。初始溫度從上一個調(diào)度周期的末端狀態(tài)讀取工程上叫“跨日銜接”我的建議是把模型滾動起來每周跑一次168小時的調(diào)度而不是每天孤立地跑24小時。4.3 模型不可行時的排查順序聯(lián)立約束越多越容易在某個角落出現(xiàn)不可行。求解器返回Infeasible時我的排查順序非常固定。先看能量平衡約束。用外掛腳本把所有節(jié)點的供給量求和、需求量求和檢查是否至少滿足“總供給大于總需求”的基本條件。很多時候不可行是因為測試數(shù)據(jù)里熱負荷總和高于所有熱源上限總和這時該調(diào)參數(shù)而不是調(diào)代碼。再看互斥和啟停約束。充放電狀態(tài)用二進制變量互斥時要注意狀態(tài)與功率的耦合u_c1時P_c可以取正但P_c的上限也要跟u_c相乘。如果忘了給功率上限乘狀態(tài)變量求解器可能讓u_c0但P_c0模型直接數(shù)理矛盾。接著看溫度約束。熱網(wǎng)節(jié)點溫度下限常常被忽略。供熱量減小到一定程度時為了保證用戶側(cè)供水溫度不低于設(shè)計值溫度約束會比功率約束更緊模型表現(xiàn)為“雖然電量平衡沒問題但整體不可行”。解決辦法是檢查每個熱源節(jié)點的最低出口溫度約束是否和供熱量的下限匹配。最后才查數(shù)值問題比如某個參數(shù)量綱寫錯導(dǎo)致約束系數(shù)差出1e6倍。量綱問題是新手最容易踩的坑我單獨專門說。4.4 量綱與數(shù)值尺度問題能源系統(tǒng)模型里功率、能量、溫度、流量的單位經(jīng)?;煊谩=y(tǒng)一的規(guī)范是功率用MW能量用MWh溫度用℃質(zhì)量流量用kg/s比熱容用kJ/(kg·K)。特別注意用MW乘以小時得到MWh而如果直接用kW就會讓約束系數(shù)差1000倍。溫降系數(shù)φ一般是個0.7到1.0之間的小數(shù)而購電電價可能只有幾百元/MWh。目標函數(shù)里的成本系數(shù)和約束系數(shù)之間差異很大在求解器里容易觸發(fā)“大數(shù)吃小數(shù)”的數(shù)值警告。解決方法是把目標函數(shù)統(tǒng)一改成萬元或者千元為單位并且把溫度變量做平移讓所有變量盡量都落在0.1到1000這個區(qū)間。求解器的參數(shù)設(shè)置也有講究。MIP gap設(shè)成1%到3%就夠了沒必要追求精確最優(yōu)。時間限制建議先設(shè)120秒跑通邏輯再放開到600秒做最終結(jié)果。數(shù)值容差保持默認不要為了通過可行性檢查而去調(diào)大容差否則最后得到的“最優(yōu)解”在物理上可能根本站不住腳。5. 算例驗證熱慣性到底省了多少成本5.1 三套對比方案的設(shè)計思路為了單獨把熱慣性的價值量化出來我設(shè)計了三個方案方案ACHP獨立運行熱網(wǎng)按瞬時平衡處理也就是供熱功率嚴格等于用戶熱負荷不加AA-CAES。方案B在方案A基礎(chǔ)上接入AA-CAES但熱網(wǎng)仍然按瞬時平衡熱慣性不建模。方案C完整模型AA-CAES加區(qū)域供熱網(wǎng)絡(luò)熱慣性全部進入約束。三個方案共用同一套六節(jié)點熱網(wǎng)、同一臺CHP、同一個AA-CAES參數(shù)、同一份風電預(yù)測和分時電價。熱負荷曲線取冬季典型日晚高峰熱負荷高風電出力在凌晨高、白天低峰谷電價差按3:1設(shè)置。AA-CAES參數(shù)設(shè)定為壓縮機額定功率100MW膨脹機額定功率80MW儲氣室容量400MWh蓄熱罐容量200MWh壓縮熱回收率0.8。5.2 結(jié)果解讀調(diào)度曲線與成本對比運行結(jié)果非常有代表性。方案A中CHP夜間為滿足單位數(shù)MW的尖峰熱負荷電出力下限被抬得很高再加上風電場出力夜間電網(wǎng)外送容量不夠棄風率超過25%。方案B加入AA-CAES后夜間多余風電被壓縮機吸收棄風率降到8%左右但CHP依然因為熱負荷剛性約束白天低電價時段電出力不能降到理想水平導(dǎo)致大量低價值電能被儲氣室或電網(wǎng)吞掉。方案C的結(jié)果最有趣由于熱網(wǎng)允許在夜間多蓄熱、白天少供熱CHP白天可以把熱出力降下來電出力下限隨之松動騰出的空間讓系統(tǒng)在午間低電價時段多向電網(wǎng)購電給AA-CAES充電在晚高峰放電。三個方案的日運行總成本對比如下方案運行成本萬元/日棄風率%說明A24.826.3無儲能電熱強耦合B19.68.4有儲能但熱網(wǎng)瞬態(tài)被忽略C16.22.1儲能與熱慣性聯(lián)合利用方案C比方案B成本再降17.3%這筆收益幾乎全部來自熱網(wǎng)熱慣性帶來的“熱負荷時間搬移”。換句話說不建模熱慣性儲能只發(fā)揮了電量搬移的作用建模之后儲能連熱量的搬移也一起做了系統(tǒng)調(diào)節(jié)資源的盤活程度完全不同。5.3 敏感性分析延遲時間和用戶熱容量對收益的影響熱慣性建模里有兩個參數(shù)最敏感管道傳輸延遲步長和建筑等效熱容。把管道長度統(tǒng)一乘以0.5到2倍運行成本變化如下延遲時間越接近調(diào)度時段長收益提升越明顯但當延遲超過3小時之后收益增速放緩因為管網(wǎng)散熱損失增大多蓄的熱量開始“漏”掉建筑熱容增大時可允許的供熱功率下降幅度變大收益同樣上升但超過某個閾值后受限于供水溫度下限繼續(xù)增加熱容不再產(chǎn)生收益。這個結(jié)果說明熱慣性資源有邊界不是越大越好。調(diào)度模型的價值正在于把這些資源的邊界暴露出來告訴運行人員到底能壓多少熱出力、能壓幾個小時而不是憑經(jīng)驗毛估。6. 調(diào)試中踩過的坑與可復(fù)用的經(jīng)驗6.1 混溫雙線性項優(yōu)先固定流量比第一次把熱網(wǎng)約束寫進模型時我試圖讓每個節(jié)點的流量作為決策變量結(jié)果模型規(guī)模爆炸求解時間從一個量級跳到另一個量級。后來老老實實先做固定流量比模型變成純線性規(guī)劃任何一臺標準的MILP求解器都能在幾秒內(nèi)解完。這個教訓(xùn)是初版模型絕對不要貪求物理完備先跑通一個可解釋、可驗證的簡化版本再考慮擴展。如果后續(xù)一定要考慮流量調(diào)節(jié)我的經(jīng)驗是用迭代式求解第一輪固定流量得到溫度分布第二輪根據(jù)溫度和負荷重新計算各支路流量分配更新延遲矩陣再求解一次。重復(fù)兩三輪后結(jié)果趨于穩(wěn)定。這個方法雖然沒有嚴格的收斂保證但在工程場景下比直接求解非凸問題實用得多。6.2 指數(shù)衰減項別讓它非線性管道溫降的指數(shù)表達在數(shù)學(xué)上是微妙的陷阱。如果直接把exp(-K·L/(m_dot·cp))放進約束而m_dot是變量模型就變成非線性。我踩過一次求解器跑了半小時結(jié)果還是崩潰的。后來把所有管道的溫降系數(shù)全部預(yù)計算成常數(shù)只在流量變化幅度超過20%的時候重新計算一次并更新參數(shù)問題立刻消失。溫降系數(shù)對成本的影響很鈍完全值得用常數(shù)近似。6.3 求解器數(shù)值問題大M、容差與MIP gap充放電互斥約束要引入大M常數(shù)很多初學(xué)者為了保險把M設(shè)成1e9結(jié)果模型出現(xiàn)嚴重的數(shù)值病態(tài)。原則是M越小越好只要比該變量的最大可能值大一點就行。比如充電功率上限100MWM取120就夠了不要養(yǎng)成寫1e6的習慣。設(shè)置MIP gap為1%之后最終成本比硬算到0.01%精度只高一點點但求解時間省掉一大半。6.4 少談精細、多談魯棒實際工程數(shù)據(jù)的處理辦法現(xiàn)實項目里未必有完整的管道保溫參數(shù)和建筑熱容數(shù)據(jù)。我的處理辦法是熱網(wǎng)等效熱容不用管道逐段累加而是用實際運行數(shù)據(jù)反推——取幾天供回水溫度和熱負荷的時序數(shù)據(jù)用差分方程擬合出C_net的值誤差完全可以接受。建筑蓄熱系數(shù)則按建筑類型取值辦公建筑熱容小、住宅熱容大這是合理的工程近似。做優(yōu)化調(diào)度的人要明白一件事模型的價值不在于絕對精確預(yù)測每一分鐘室溫而在于把“可轉(zhuǎn)移的熱量”量化出來給調(diào)度員一個安全邊界。邊界內(nèi)的操作是允許的邊界外的操作需要實時校驗。用這樣的思路去建模既能享受熱慣性帶來的收益又不會因為模型過度樂觀導(dǎo)致實際運行中出現(xiàn)室溫失守的問題。這也是我在模擬項目X里最終采用簡化熱慣性模型而不是上完整計算流體力學(xué)模型的原因。這類模型后續(xù)還能延伸很多方向比如把建筑用戶側(cè)需求響應(yīng)加進來、把AA-CAES的聯(lián)合循環(huán)運行特性細化、或者處理多熱源多儲能的聯(lián)合調(diào)度。核心思路是一致的先把物理過程簡化成能求解的線性或混合整數(shù)線性約束再逐步逼近真實系統(tǒng)。每次加一個約束都用對比算例去驗證它是否真的帶來了成本或靈活性收益而不是為了“模型顯得高級”而堆砌細節(jié)。工程上的好模型永遠是簡潔、可調(diào)試、經(jīng)得起對比驗證的模型。