優(yōu)化調(diào)度實戰(zhàn):Cplex求解冷熱電聯(lián)供與碳交易模型)
做綜合能源系統(tǒng)優(yōu)化的朋友對這個方向肯定不陌生。冷、熱、電、氣四類能量在園區(qū)或建筑層面耦合起來燃氣輪機發(fā)電、余熱回收制冷制熱、不足的部分用電或燃氣補充再疊加上需求響應(yīng)和碳交易這兩個市場化機制——這基本就是當前綜合能源系統(tǒng)優(yōu)化研究的標準配置。題目標題里的“采用Cplex求解”則是這個領(lǐng)域最常見的落地方式把系統(tǒng)建模成一個混合整數(shù)線性規(guī)劃問題交給商業(yè)求解器去算最優(yōu)調(diào)度計劃。這篇文章我把自己做這類項目的完整思路、建模細節(jié)、求解技巧和踩坑記錄整理出來。準備做類似方向畢業(yè)設(shè)計、科研項目或者在實際園區(qū)里搞過能源調(diào)度、想系統(tǒng)了解模型寫法的朋友可以直接照這個框架去搭。整個研究的內(nèi)核可以概括成一句話在滿足冷、熱、電、氣負荷需求的前提下考慮用戶側(cè)可調(diào)節(jié)的響應(yīng)能力以及碳排放配額和碳價帶來的成本信號以總費用最小為目標求解未來24小時或更長時間尺度內(nèi)各設(shè)備的出力計劃。別看這句話簡單真把模型寫出來、讓Cplex穩(wěn)定求出結(jié)果、再讓結(jié)果能講出道理每一步都有不少細節(jié)。1. 先搞清楚這個研究到底在算什么1.1 四聯(lián)供系統(tǒng)到底長什么樣所謂四聯(lián)供是指系統(tǒng)同時供應(yīng)冷、熱、電、氣四種能量形式。注意這個“氣”有兩層含義一是天然氣作為燃料輸入驅(qū)動燃氣輪機和燃氣鍋爐二是某些場景下天然氣本身也會直接供給用戶比如餐飲用氣、工業(yè)用氣不過絕大多數(shù)優(yōu)化研究中氣主要作為燃料側(cè)出現(xiàn)實際優(yōu)化變量是“買多少氣”以及“氣如何分配給不同設(shè)備”。典型場景我習(xí)慣拿一個綜合園區(qū)舉例。園區(qū)里有辦公樓、實驗室、食堂可能還有小型數(shù)據(jù)中心。樓宇有電負荷、冬季有熱負荷、夏季有冷負荷。能源站里裝了一臺燃氣輪機燒天然氣發(fā)電發(fā)電的同時產(chǎn)生高溫?zé)煔馔ㄟ^余熱鍋爐回收變成蒸汽或熱水。這部分余熱一部分直接供熱一部分進入吸收式制冷機變成冷水供冷。如果余熱不夠就用燃氣鍋爐補熱或者用電制冷機補冷。電不夠就從電網(wǎng)買電電多了也能反售給電網(wǎng)。再加上電儲能、蓄熱罐、蓄冷罐整個系統(tǒng)的能量流動網(wǎng)絡(luò)就成型了。這個構(gòu)型為什么流行因為它抓住了聯(lián)供系統(tǒng)最核心的經(jīng)濟邏輯燃氣輪機發(fā)一度電大約產(chǎn)生1.5到2.5倍于發(fā)電量的余熱這些余熱如果不利用就直接排掉了利用起來制冷或供熱替代了原本要用天然氣或電去產(chǎn)生的冷熱量綜合能源利用效率可以大幅提升。優(yōu)化的本質(zhì)就是在不同時段、不同價格信號下決定每一度氣是“先發(fā)電再用熱”更劃算還是“直接燒鍋爐”更劃算。1.2 需求響應(yīng)和碳交易為什么會改變調(diào)度結(jié)果很多人一開始想不明白沒有需求響應(yīng)和碳交易系統(tǒng)已經(jīng)能優(yōu)化了加上這兩個機制到底改變了什么先看需求響應(yīng)。傳統(tǒng)優(yōu)化把負荷當成剛性數(shù)據(jù)空調(diào)該開多少就是多少電梯該跑就跑。但實際上樓宇負荷有相當大的柔性。夏天最熱的時候辦公室空調(diào)溫度從24度調(diào)到26度人的體感變化不大但冷負荷能降下去一塊工廠里某些可中斷工序被通知后在高峰時段停一小時補償一點費用給用戶電網(wǎng)削峰效果立竿見影。需求響應(yīng)引入后負荷從“不可動”變成了“可削、可移、可調(diào)”這等于給優(yōu)化問題增加了新的自由度。優(yōu)化的結(jié)果會傾向于在電價高的時段削減或轉(zhuǎn)移用電在碳價和電價疊加的尖峰時段更加明顯。再看碳交易。傳統(tǒng)優(yōu)化只算經(jīng)濟賬燒多少氣、買多少電乘以價格就行。碳交易加入后碳排放本身變成了一項有價格的“資源”。免費配額就像政府發(fā)的“碳排放額度信用卡”實際排放一旦超過額度就得去碳市場買配額低于額度富余的配額可以賣錢。于是燃氣輪機什么時候開、開多少不再只看氣價和電價還要看天然氣燃燒產(chǎn)生的碳排放成本以及從電網(wǎng)購電對應(yīng)的間接排放成本。當碳價升高時系統(tǒng)可能傾向于減少低效機組的出力或者調(diào)整天然氣和電網(wǎng)購電的比例。這正是碳交易機制發(fā)揮減排引導(dǎo)作用的具體體現(xiàn)。1.3 研究路線總覽按我自己的經(jīng)驗這類研究的標準路線分四步走。第一步搭系統(tǒng)架構(gòu)確定設(shè)備類型、容量、效率參數(shù)明確能量流動方向第二步數(shù)學(xué)建模寫目標函數(shù)和約束條件本質(zhì)是把物理規(guī)律和經(jīng)濟規(guī)則翻譯成數(shù)學(xué)表達式第三步求解分析用Cplex等求解器計算最優(yōu)調(diào)度方案第四步對比討論設(shè)置不同場景比如無需求響應(yīng)、有需求響應(yīng)、有碳交易、兩者都有做對照實驗觀察系統(tǒng)運行成本、碳排放量、設(shè)備出力結(jié)構(gòu)的變化規(guī)律。整條路線看起來簡單但每一步的細節(jié)決定成敗接下來逐項拆開講。2. 系統(tǒng)建模從設(shè)備到約束的完整拆解2.1 參考系統(tǒng)架構(gòu)與設(shè)備配置建模之前先定義物理系統(tǒng)。我常用的參考架構(gòu)包含一條燃氣輪機聯(lián)供主線一套補燃/補冷設(shè)備再加上儲能和電網(wǎng)交互。設(shè)備清單和關(guān)鍵參數(shù)如下表所示供你搭模型時參考。設(shè)備輸入能量輸出能量關(guān)鍵參數(shù)典型取值范圍燃氣輪機天然氣電 高溫?zé)煔獍l(fā)電效率、熱電比發(fā)電效率30%-40%熱電比1.2-2.0余熱鍋爐高溫?zé)煔鉄嵊酂峄厥招?0%-90%吸收式制冷機熱冷COP0.7-1.3電制冷機電冷COP3.0-5.5燃氣鍋爐天然氣熱熱效率85%-95%電儲能電電充放效率、SOC范圍效率90%-95%SOC限值20%-90%蓄熱罐/蓄冷罐熱/冷熱/冷儲放效率、容量效率90%左右電網(wǎng)交互電電購電價、售電價分時電價曲線建模時燃氣輪機我習(xí)慣簡化成一個“電出力變量 余熱出力變量”的耦合關(guān)系燃氣輪機燒氣產(chǎn)生電和熱熱電比通常近似看作常數(shù)余熱量等于發(fā)電功率乘以熱電比。這個簡化在項目初期完全夠用等學(xué)位論文需要精細化時再改成隨負載率變化的非線性效率曲線。2.2 能量平衡約束四個母線的寫法整個優(yōu)化模型的核心是四個能量平衡方程分別對應(yīng)電、熱、冷、氣四條“母線”。每條母線代表一個能量節(jié)點所有注入該節(jié)點的能量之和等于所有流出該節(jié)點的能量之和。以24小時調(diào)度周期為例每個時段t都要滿足電平衡燃氣輪機發(fā)電 光伏發(fā)電 電網(wǎng)購電 儲能放電 電負荷 - 需求響應(yīng)削減 電制冷機用電 電網(wǎng)售電 儲能充電熱平衡余熱回收 燃氣鍋爐產(chǎn)熱 蓄熱罐放熱 熱負荷 - 需求響應(yīng)削減 蓄熱罐充熱冷平衡吸收式制冷 電制冷 蓄冷罐放冷 冷負荷 - 需求響應(yīng)削減 蓄冷罐充冷氣平衡購入天然氣 燃氣輪機耗氣 燃氣鍋爐耗氣 可選直接供氣負荷寫這些方程時有三個容易踩的坑。第一個是單位統(tǒng)一熱負荷和冷負荷有的用kW有的用GJ/h混著用必出錯建模之前先統(tǒng)一成kW。第二個是方向約定儲能充電是負荷、放電是電源代入平衡方程時正負號要一致。第三個是“同時性”問題電網(wǎng)不能同一時刻既大量購電又大量售電熱網(wǎng)里蓄熱罐也不能同時充放這些需要用0-1變量加互斥約束來限制否則求解器會給出一看不合理但數(shù)學(xué)上“最優(yōu)”的出工結(jié)果。2.3 設(shè)備運行約束啟停、爬坡與儲能動態(tài)能量平衡只是物理定律的約束設(shè)備本身還有運行限制。燃氣輪機和燃氣鍋爐存在最小技術(shù)出力不能低于額定容量的某個比例比如不能低于30%機組啟停是0-1決策變量停機時段不耗氣不產(chǎn)能量相鄰時段出力變化受爬坡速率限制不能從零直接蹦到滿負荷。儲能設(shè)備要加狀態(tài)遞推約束當前時段的儲能量等于上一時段儲能量加上本時段充入量乘以充電效率減去本時段放出量除以放電效率。同時儲能容量有上下限充放電功率也有上限。這里要強調(diào)一個細節(jié)儲能SOC的初始值怎么設(shè)。我建議取調(diào)度周期首尾SOC相等也就是“日循環(huán)約束”這樣結(jié)果更具工程參考意義否則模型會把初始儲存的能量免費用光導(dǎo)致結(jié)果偏樂觀。具體寫法就是SOC(0)SOC(24)讓一個調(diào)度周期內(nèi)充進去的總能量和放出來的總能量在效率修正后相等。2.4 綜合需求響應(yīng)怎么建模題目里“綜合”兩個字意味著需求響應(yīng)不只管電力負荷冷、熱、電三種負荷都要納入響應(yīng)范圍。這也是很多初學(xué)朋友最容易漏掉的部分。電力需求響應(yīng)相對成熟兩種基本形式可削減負荷與可轉(zhuǎn)移負荷??上鳒p負荷就是高峰時段直接砍掉一部分用電用戶獲得補償可轉(zhuǎn)移負荷比如某些生產(chǎn)工序、洗衣房、充電樁可以把用電量平移到其他時段但一天內(nèi)總用電量守恒。建模時可削減量不能超過負荷的一定比例可轉(zhuǎn)移量要滿足“移出的量等于移入的量”這一守恒約束。熱力需求響應(yīng)和冷需求響應(yīng)很少被仔細講但恰恰是綜合能源系統(tǒng)里最有意思的部分。供熱系統(tǒng)本身有巨大的熱慣性房間溫度在一定范圍內(nèi)變化用戶感知不強所以熱負荷可以在允許范圍內(nèi)上調(diào)或下調(diào)只要保證時段總供熱量不低于最低舒適閾值即可。冷負荷同理但冷響應(yīng)更適合用“預(yù)冷策略”表達電價低谷時段提前多供冷把建筑物或蓄冷罐的冷量存起來電價高峰時段少供冷甚至不供冷實現(xiàn)“移峰填谷”。寫模型時熱/冷負荷響應(yīng)可以建模成負荷值在上下限區(qū)間內(nèi)連續(xù)可調(diào)而不是簡單的0-1削減。這樣處理更貼近實際也給求解器提供了連續(xù)調(diào)整空間優(yōu)化效果更平滑。2.5 碳交易機制怎么進模型碳交易建模分三塊配額怎么給、實際排放怎么算、交易成本怎么進目標函數(shù)。配額分配最常見的是基準線法即以歷史強度或區(qū)域基準值為準給系統(tǒng)一個免費排放額度。額度可以表示成與負荷水平掛鉤的線性函數(shù)也可以直接給一個固定常數(shù)。固定配額的好處是形式簡單便于做靈敏度分析。我實際做的時候更推薦固定配額先跑出無碳交易時的最優(yōu)排放量再反設(shè)一個比它低5%-10%的配額模擬“逐步收緊”的政策環(huán)境這樣故事線更完整。實際排放核算覆蓋兩個碳排放源一是天然氣燃燒的直接排放包括燃氣輪機和燃氣鍋爐二是從電網(wǎng)購電對應(yīng)的間接排放。直接排放等于耗氣量乘以天然氣碳排放因子間接排放等于購電量乘以電網(wǎng)平均碳排放因子。注意通過電網(wǎng)反售出去的電量對應(yīng)的排放是負的從總排放中扣除否則會高估系統(tǒng)碳責(zé)任。碳交易成本等于實際排放量 - 免費配額乘以碳價。實際排放小于配額時這項是負值相當于賣配額獲利大于配額時是正值變成額外的運行成本。碳價可以設(shè)固定值也可以設(shè)階梯價格模擬碳價上漲階梯會引入整數(shù)變量模型規(guī)模會增大前期建議先用固定碳價后期做價格靈敏度掃描時再考慮階梯。2.6 目標函數(shù)與線性化處理目標函數(shù)是所有決策者最關(guān)心的部分我通常寫成min ∑ [ 購氣費用 購電費用 - 售電收入 需求響應(yīng)補償費用 碳交易成本 ]其中購氣費用等于總耗氣量乘以天然氣價格購電費用是電網(wǎng)購電量乘以分時電價售電收入是反售電量乘以上網(wǎng)電價需求響應(yīng)補償是削減或轉(zhuǎn)移的負荷量乘以補償單價碳交易成本按上一節(jié)方式計算。光伏發(fā)電成本通常忽略或按度電成本計入儲能折舊成本可以在目標函數(shù)里加一個很小的單位損耗系數(shù)讓模型自動減少無效充放循環(huán)。寫模型時容易碰到非線性項最常見的三個燃氣輪機發(fā)電效率隨負載率變化導(dǎo)致產(chǎn)氣量與出力的非線性關(guān)系、階梯碳價導(dǎo)致的分段線性成本、需求響應(yīng)補償價格分檔。Cplex本身支持二次約束和二次目標但混合整數(shù)二次規(guī)劃求解速度明顯慢于線性規(guī)劃。我的經(jīng)驗是項目前期全部線性化把效率曲線用分段線性逼近把階梯價格用大M法轉(zhuǎn)成線性約束。這樣模型就是一個標準的MILPCplex求解穩(wěn)定、速度快、調(diào)試方便。等后續(xù)想提升精度再逐步把非線性項加回去對比效果。3. 用Cplex求解從建模到出結(jié)果的完整流程3.1 先確認問題類型寫代碼之前先判斷自己手里拿的是什么樣的優(yōu)化問題。上面的模型帶有0-1整數(shù)變量機組啟停、充放互斥目標函數(shù)和約束都是線性的所以這是典型的混合整數(shù)線性規(guī)劃MILP。Cplex最擅長的就是這類問題。如果去掉整數(shù)變量退化成LP求解會快一個數(shù)量級但會失去啟停邏輯的刻畫能力。實際寫模型時我會把變量分成三類連續(xù)變量各設(shè)備出力、儲能充放功率、購售電量、0-1整數(shù)變量設(shè)備啟停、儲能狀態(tài)、購售電狀態(tài)、輔助變量大M法產(chǎn)生的中間量。分類清楚之后再去寫約束和目標函數(shù)據(jù)思路會清晰很多也方便后續(xù)查錯。3.2 數(shù)據(jù)準備與表格規(guī)范求解之前先整理數(shù)據(jù)。時序數(shù)據(jù)包括24小時電負荷預(yù)測、熱負荷預(yù)測、冷負荷預(yù)測、分時購電價、上網(wǎng)電價、天然氣價格。價格型參數(shù)包括碳價、需求響應(yīng)補償單價、各設(shè)備效率、容量限值。我的習(xí)慣是用Excel或CSV統(tǒng)一存數(shù)據(jù)在建模腳本里一次性讀取并賦值給參數(shù)結(jié)構(gòu)體。注意校驗負荷數(shù)據(jù)的數(shù)量級比如某棟樓的電負荷峰值是幾百千瓦還是幾兆瓦直接決定了設(shè)備容量參數(shù)怎么設(shè)。數(shù)據(jù)錯誤是模型不可行最常見的原因沒有之一。調(diào)模型之前先把每條數(shù)據(jù)曲線畫出來看一眼比花幾個小時查約束高效得多。3.3 核心代碼框架我習(xí)慣用Matlab加Yalmip調(diào)Cplex開發(fā)效率高調(diào)試方便。核心代碼框架如下你可以直接參考。這里只展示關(guān)鍵片段完整模型按前面章節(jié)的約束逐個添加即可。% 參數(shù)定義示例 T 24; % 調(diào)度周期 P_gt_max 2000; % 燃氣輪機最大電出力kW P_gt_min 600; % 最小技術(shù)出力kW R_gt 800; % 爬坡速率上限kW/h eta_gt 0.33; % 發(fā)電效率 alpha_chp 1.5; % 熱電比 eta_gb 0.9; % 燃氣鍋爐效率 cop_ec 4.0; % 電制冷COP cop_ac 1.0; % 吸收式制冷COP % 決策變量 P_gt sdpvar(1, T); % 燃氣輪機發(fā)電功率 Q_gb sdpvar(1, T); % 燃氣鍋爐產(chǎn)熱 P_ec sdpvar(1, T); % 電制冷機耗電 Q_ac sdpvar(1, T); % 吸收式制冷耗熱 P_buy sdpvar(1, T); % 電網(wǎng)購電 P_sell sdpvar(1, T); % 電網(wǎng)售電 u_gt binvar(1, T); % 燃氣輪機啟停 u_buy binvar(1, T); % 購電狀態(tài) u_sell binvar(1, T); % 售電狀態(tài) % 儲能變量略類似SOC遞推和充放功率定義 % 約束條件 C []; C [C, P_gt_min * u_gt P_gt P_gt_max * u_gt]; C [C, abs(P_gt(2:T) - P_gt(1:T-1)) R_gt]; C [C, u_buy u_sell 1]; % 購售電互斥 % 電平衡約束 C [C, P_gt P_pv P_buy P_bat_dis P_load - P_dr P_ec P_sell P_bat_ch]; % 熱平衡約束 C [C, alpha_chp * P_gt Q_gb Q_hs_dis Q_load - Q_dr Q_hs_ch]; % 冷平衡約束 C [C, cop_ac * Q_ac cop_ec * P_ec Q_cs_dis C_load - C_dr Q_cs_ch]; % 目標函數(shù) F_gas_total P_gt / eta_gt * 1 / 10.55 Q_gb / eta_gb * 1 / 10.55; % 折算成kW天然氣耗量簡化式 Objective sum(F_gas_total * price_gas P_buy .* price_buy - P_sell .* price_sell ... P_dr * price_dr carbon_cost); % 求解 ops sdpsettings(solver, cplex, verbose, 2); ops.cplex.mip.tolerances.mipgap 0.001; ops.cplex.timelimit 600; ops.cplex.threads 8; optimize(C, Objective, ops);代碼里的天然氣折算公式是高度簡化的示意實際建模時通過“輸入燃料量 輸出電功率 / 發(fā)電效率”的關(guān)系還原耗氣量再乘天然氣低熱值統(tǒng)一到kW單位。3.4 Cplex參數(shù)調(diào)優(yōu)Cplex開箱即用能解大多數(shù)中小規(guī)模模型但遇到大規(guī)模場景比如8760小時全年調(diào)度、幾百個0-1變量就得調(diào)參數(shù)。我常用四個關(guān)鍵參數(shù)mipgap混合整數(shù)規(guī)劃的相對間隙容忍度。默認0.0001即要求解的目標值與下界差距小于0.01%。對大多數(shù)工程分析設(shè)到0.001-0.005就足夠可以明顯縮短求解時間。timelimit最長求解時間防止模型陷入長時間搜索。我一般設(shè)300到600秒到點取當前最優(yōu)可行解。threads并行線程數(shù)。新機器核心多設(shè)成8到16能有效加速分支定界過程。mip.strategy / nodefile問題太大會吃滿內(nèi)存需要開節(jié)點文件緩存把部分分支樹放到硬盤上。這時候求解變慢是正常的屬于拿時間換空間。參數(shù)調(diào)優(yōu)要遵循“先保證可行、再追求最優(yōu)”的原則。先把mipgap調(diào)松確認模型能在一個合理時間內(nèi)給出可行解再逐步收緊看最優(yōu)解的變化。如果收緊gap后目標幾乎不變說明當前精度已經(jīng)夠用再往下調(diào)只是浪費計算時間。3.5 結(jié)果輸出與對比分析求解完成后把關(guān)鍵結(jié)果全部導(dǎo)出并作圖各設(shè)備逐時出力柱狀圖、購售電曲線、儲能SOC曲線、需求響應(yīng)量曲線、碳配額與排放量對比圖。這些圖不僅是論文素材更是驗證模型正確性的工具。我習(xí)慣做三組對照實驗。第一組是基礎(chǔ)場景不加入需求響應(yīng)和碳交易得到傳統(tǒng)調(diào)度結(jié)果第二組只加需求響應(yīng)第三組同時加需求響應(yīng)和碳交易。對比三組的總運行成本、總碳排放量和設(shè)備出力結(jié)構(gòu)能夠清晰看出兩個機制各自的貢獻。再加一組碳價靈敏度分析把碳價從20元/噸掃到200元/噸觀察系統(tǒng)碳排放變化和設(shè)備出力調(diào)整這種結(jié)果非常出效果審稿人和答辯老師都愛看。4. 求解器選型與模型收斂性優(yōu)化4.1 Cplex、Gurobi、開源求解器怎么選綜合能源優(yōu)化領(lǐng)域用到的主流求解器各有特點我列一個實際對比求解器類型許可方式MILP性能建模友好度適用場景Cplex商業(yè)學(xué)術(shù)免費/商用收費極強高支持多種建模工具大規(guī)模MILP標準選擇Gurobi商業(yè)學(xué)術(shù)免費/商用收費極強部分場景略優(yōu)于Cplex高大規(guī)模MILP性能敏感場景SCIP開源免費較強中預(yù)算有限的學(xué)術(shù)項目CBC開源免費中等中中小規(guī)模教學(xué)示例OSQP開源免費只支持QP中純二次規(guī)劃場景Cplex的優(yōu)勢在于行業(yè)二十多年的積累求解器穩(wěn)定性好對MILP的分支定界和割平面算法非常成熟并且支持MATLAB、Python、C多種接口。我用Yalmip調(diào)Cplex時連求解器內(nèi)部參數(shù)都可以直接透傳修改非常方便。Gurobi在某些純整數(shù)問題上會更快一點但兩者在中小規(guī)模綜合能源模型上的差距不明顯。真到百萬級變量的大規(guī)模問題才需要認真對比選型。4.2 模型規(guī)模膨脹的根源與削減技巧綜合能源模型規(guī)模膨脹主要來自三方面時間步長細分15分鐘一個時段、設(shè)備數(shù)量增加、0-1變量激增。一個包含10臺設(shè)備、24小時、每臺設(shè)備平均2個0-1變量的模型整數(shù)變量也就幾百個Cplex秒解但如果做全年8760小時調(diào)度變量直接膨脹到百萬級別求解時間呈指數(shù)增長。控制規(guī)模的技巧有幾個。一是時間聚合用典型日代替全年逐時數(shù)據(jù)比如選夏季典型日、冬季典型日、過渡季典型日各跑24小時調(diào)度再按天數(shù)加權(quán)匯總能極大縮減模型規(guī)模。二是合并冗余約束購售電互斥本質(zhì)上只需要一個0-1變量如果系統(tǒng)不允許同時購售電完全可以去掉互斥0-1變量只用“購電量×售電量0”的非線性約束或者干脆強制二者之一為零減少整數(shù)變量個數(shù)。三是刪掉無效候選狀態(tài)夜間冷負荷接近于零時電制冷機和吸收式制冷機的最大出力直接限掉剪掉大量無意義的組合空間。5. 常見問題與排查實錄5.1 模型不可行怎么定位Cplex返回不可行時第一反應(yīng)不要懷疑求解器先懷疑自己的約束。我的排查順序是先檢查負荷數(shù)據(jù)各時段是否齊全再檢查能量平衡方向是否寫反最容易出錯的是儲能SOC遞推的正負號然后檢查容量限值是否小于負荷峰值比如蓄熱罐容量設(shè)小了熱平衡永遠湊不平最后檢查互斥約束是否過強比如某時段要求既滿足電平衡又要求購售電互斥結(jié)果沒有可行解說明約束矛盾。Yalmip里可以用求不可行約束集合的功能通過“%#ok”注釋對比約束逐個放松約束定位問題源。5.2 求解慢、長時間不收斂模型卡住最直觀的原因是0-1變量組合空間太大。先用上一節(jié)的規(guī)模削減技巧壓縮模型再把mipgap放寬到0.005看看能不能快速得到一個可行解。如果連可行解都找不到說明初始下界很差可以讓求解器先生成一個熱啟動解先固定機組啟停變量為經(jīng)驗值解一個純LP問題再把這個解作為MIP的熱啟動初始解通常能大幅提升搜索效率。5.3 結(jié)果出現(xiàn)同時購電和售電在分時電價有峰谷差時同時購電和售電表面上看很奇怪但因為存在儲能設(shè)備模型有時會給出“低谷買電充電、高峰放電同時售電”的套利策略這時同時購售電是合理的。真正不合理的是同一時段既大量購電又大量售電且沒有儲能參與這通常說明互斥約束寫漏了或者目標函數(shù)里售電價大于購電價導(dǎo)致無限套利。遇到這種結(jié)果先把時段和能量去向查一遍再檢查互斥約束是否完整。5.4 碳交易參數(shù)影響結(jié)果異常碳價升高后系統(tǒng)碳排放總量不一定單調(diào)下降。原因在于系統(tǒng)同時存在多個碳排來源燃氣輪機雖然排碳但余熱利用替代了燃氣鍋爐和電制冷機的耗能整體系統(tǒng)碳排放可能反而降低。所以碳價升高可能導(dǎo)致燃氣輪機多發(fā)電反而增加了一部分排放。這不是模型錯誤而是聯(lián)供系統(tǒng)的真實特征碳排放和電力市場化激勵存在耦合分析結(jié)果時必須結(jié)合設(shè)備出力結(jié)構(gòu)來解釋不能只看總量曲線。做碳價靈敏度時把燃氣輪機出力、電網(wǎng)購電量、燃氣鍋爐產(chǎn)熱量三條曲線一起畫出來碳價影響一目了然。5.5 常見問題速查表問題現(xiàn)象可能原因解決措施模型不可行負荷數(shù)據(jù)錯誤或約束方向?qū)懛粗饤l檢查能量平衡方程檢查數(shù)據(jù)單位求解極慢0-1變量過多、big-M取值過大壓縮整數(shù)變量、收緊M值、放寬mipgap同時購售電互斥約束缺失或儲能套利策略添加購售電互斥檢查儲能充放邏輯目標函數(shù)為負且離譜售電價高于購電價模型無限套利檢查價格參數(shù)添加電量買賣約束儲能首時段即放完缺少日循環(huán)約束加入SOC初始等于末尾的約束碳價升高但排放反升聯(lián)供系統(tǒng)結(jié)構(gòu)特性非模型錯誤結(jié)合設(shè)備出力曲線解釋補充對照場景最后再分享一點個人經(jīng)驗這類研究做到最后真正有價值的往往不是那一張最優(yōu)解表格而是對系統(tǒng)運行規(guī)律的理解。Cplex求解器只是工具它能在0.1秒內(nèi)給出一個數(shù)學(xué)上的最優(yōu)解但判斷這個解是否符合實際、是否滿足物理直覺、是否能在真實系統(tǒng)里落地還是得靠人。我做綜合能源模型踩過最深的坑就是過于相信求解結(jié)果直到把某一天的調(diào)度曲線逐條核對了幾個小時才發(fā)現(xiàn)是燃氣輪機的熱電比參數(shù)少了一個零。從此之后每跑完一組結(jié)果第一件事一定是畫圖、看圖、問三個問題設(shè)備出力是否在合理區(qū)間儲能是否有異常充放購售電行為是否與市場價格信號一致這三個問題過濾掉90%的模型錯誤。如果你正準備開這個方向的研究建議從一個小規(guī)模系統(tǒng)做起設(shè)備控制在3到5臺時間尺度先做24小時把模型跑通跑順再逐步擴展。建模本身沒有太多玄學(xué)關(guān)鍵是物理邏輯清楚、數(shù)學(xué)表達準確、求解結(jié)果可解釋。做到這三點這套框架無論是繼續(xù)深入做全年優(yōu)化、做不確定性魯棒優(yōu)化還是擴展到多園區(qū)協(xié)同都會很順手。