光互補制氫合成氨系統(tǒng)容量與調(diào)度雙層優(yōu)化Matlab實現(xiàn))
1. 項目整體思路與優(yōu)化框架拆解1.1 這個系統(tǒng)到底在優(yōu)化什么先把項目名字拆開看。風(fēng)光互補制氫合成氨這條鏈路上涉及三個核心環(huán)節(jié)發(fā)電側(cè)風(fēng)機光伏、制氫側(cè)電解槽、合成氨側(cè)氨合成塔除此之外還有儲能裝置蓄電池和儲氫罐這類緩沖環(huán)節(jié)。如果項目是并網(wǎng)模式還要加上電網(wǎng)交互這條線。所謂容量優(yōu)化解決的是“建多大”的問題——風(fēng)機裝多少容量、光伏鋪多少塊、電解槽配多少功率、儲氫罐建多大容積、蓄電池備多少度電。這一層的決策是長周期的一旦施工建成短期內(nèi)不會改動所以它對應(yīng)的是規(guī)劃層的投資決策問題。調(diào)度優(yōu)化則解決“怎么用”的問題——在容量配置確定的前提下全年8760個小時里或者典型日里的24個時刻每一時刻電解槽開幾臺、功率給多少、蓄電池充還是放、儲氫罐存還是取、多余的電賣給電網(wǎng)還是棄掉這一層的決策是短周期的運行策略問題。兩部分串在一起就形成了一個典型的雙層優(yōu)化結(jié)構(gòu)外層做容量規(guī)劃內(nèi)層做運行調(diào)度內(nèi)層調(diào)度結(jié)果以年運行成本的形式反饋到外層作為外層方案評價的依據(jù)。這里必須說明一個容易踩坑的概念風(fēng)光互補不等于“風(fēng)光加起來夠用就行”。由于風(fēng)速和輻照度天然具有隨機性和間歇性風(fēng)光出力存在明顯的出力曲線錯峰效應(yīng)——白天光照強時風(fēng)速往往偏弱夜間有風(fēng)但無光。如果只做單一電源規(guī)劃大概率要么造成大量棄電要么制氫設(shè)備利用率低得難看。風(fēng)光互補的意義就在于此通過兩類電源的出力特性互補減少系統(tǒng)對外部支撐的依賴讓電解槽和合成氨這類連續(xù)運行設(shè)備獲得更平穩(wěn)的供電保障。1.2 為什么采用“容量-調(diào)度”雙層架構(gòu)實際復(fù)現(xiàn)這個項目時我最深的感受是這個雙層架構(gòu)不是學(xué)術(shù)圈為了顯得高深硬湊出來的而是工程決策的真實還原。從時間尺度看容量配置是以年為單位的投資決策調(diào)度策略是以小時甚至分鐘為單位的運行決策。兩類決策的時間常數(shù)差了好幾個數(shù)量級如果強行放到一個模型里同時求解決策變量規(guī)模會爆炸而且求解難度會大到毫無實用價值。把模型拆成雙層外層搜容量方案內(nèi)層評價該方案下的最優(yōu)運行成本兩層各司其職邏輯上也說得通。從數(shù)據(jù)流看初始時刻外層先給出一組容量配置方案比如風(fēng)機50MW、光伏80MW、電解槽30MW、儲氫罐10000kg、蓄電池15MWh內(nèi)層拿到這組參數(shù)后代入全年或典型日的風(fēng)光出力和負荷數(shù)據(jù)求解該配置下最經(jīng)濟的調(diào)度策略并把全年運行成本返回給外層。外層根據(jù)這個成本評價方案用優(yōu)化算法生成下一組容量配置循環(huán)迭代直到外層目標(biāo)收斂。從算法實現(xiàn)看外層容量優(yōu)化通常采用群體智能算法我復(fù)現(xiàn)時用的是遺傳算法GA這部分后面詳細講。內(nèi)層調(diào)度優(yōu)化則是確定性優(yōu)化問題用線性規(guī)劃或混合整數(shù)線性規(guī)劃MILP求解Matlab平臺下搭配YALMIP工具箱調(diào)用求解器CPLEX或Gurobi是最主流的組合。兩層嵌套的代價是計算量成倍增長外層迭代100代、種群規(guī)模20意味著內(nèi)層調(diào)度優(yōu)化要跑2000次。如果內(nèi)層模型建得粗糙一點、求解器配置不合理整個程序的運行時間會從幾十分鐘飆升到幾十小時。這也是為什么很多論文摘要里會寫“采用典型日代替全年8760小時數(shù)據(jù)”或者“采用K-means聚類提取典型場景”——都是為了控制計算規(guī)模。我復(fù)現(xiàn)時用的典型日選取方法是K-means聚類把全年的風(fēng)光出力和負荷曲線聚成幾個代表性場景這個后面會展開講。1.3 并網(wǎng)與離網(wǎng)的核心差異并網(wǎng)模式和離網(wǎng)模式表面上只是“有沒有電網(wǎng)支撐”的區(qū)別實際上模型的約束條件、目標(biāo)函數(shù)、甚至優(yōu)化結(jié)果都會發(fā)生結(jié)構(gòu)性變化。離網(wǎng)模式下系統(tǒng)是完全孤立的。也就是說任何時刻必須保證風(fēng)光出力蓄電池放電 ≥ 電解槽負載合成氨負載其他負荷這是硬約束一旦不滿足就代表系統(tǒng)失負荷方案不可行。為了保證這個約束在全年所有時刻成立容量配置往往會顯得“過度冗余”——風(fēng)機和光伏得往大了建蓄電池容量也得留足裕量結(jié)果就是系統(tǒng)投資成本高但棄電率也高。并網(wǎng)模式增加了一條電網(wǎng)聯(lián)絡(luò)線。缺電時可以買電多余時可以賣電如果有上網(wǎng)電價機制。這條看似簡單的改動把容量優(yōu)化從“必須在任何時刻自給自足”變成“在全年經(jīng)濟性最優(yōu)的條件下權(quán)衡自發(fā)自用和外購?fù)馑汀?。在電價政策合理的區(qū)域并網(wǎng)模式下最優(yōu)容量往往比離網(wǎng)模式小因為不足的部分可以依賴電網(wǎng)兜底不需要把所有極端情況都覆蓋掉。從運行策略看并網(wǎng)模式還多了一個自由度電解槽的運行策略可以不嚴格跟隨風(fēng)光出力而是在電價低谷期加大功率制氫儲能相當(dāng)于用氫儲能套利在電價高峰時減少電解槽功率甚至賣電。這個操作在離網(wǎng)模式里完全不存在。我在復(fù)現(xiàn)時并網(wǎng)模式的目標(biāo)函數(shù)里比離網(wǎng)模式多了一項年購電費用正值或售電收益負值。同時調(diào)度約束里增加了電網(wǎng)交互功率的上下限約束。別小看這一項它對優(yōu)化結(jié)果的引導(dǎo)作用極其顯著很多時候甚至決定了容量配置的方向。2. 關(guān)鍵設(shè)備建模與參數(shù)整定2.1 風(fēng)光出力模型風(fēng)機出力模型通常采用分段線性化的功率曲線法。輸入是時刻的風(fēng)速數(shù)據(jù)輸出是風(fēng)機在該風(fēng)速下的出力。我采用的簡化模型是風(fēng)速低于切入風(fēng)速典型值3m/s或高于切出風(fēng)速典型值25m/s時出力為0風(fēng)速在切入風(fēng)速到額定風(fēng)速典型值12m/s之間時出力按三次方關(guān)系上升風(fēng)能密度與風(fēng)速三次方成正比風(fēng)速在額定風(fēng)速到切出風(fēng)速之間時出力恒定為額定功率。這套模型的核心參數(shù)是切入風(fēng)速、額定風(fēng)速、切出風(fēng)速和額定功率這些參數(shù)可以從任意一款主流風(fēng)機的技術(shù)手冊里查到我復(fù)現(xiàn)時選用的是某型2MW風(fēng)力發(fā)電機的參數(shù)。光伏出力模型相對簡單一些核心公式是Pn Pinv * (GHI / Gin) * [1 kp * (Tcell - Tin)]其中GHI是水平面總輻照度Gin是標(biāo)準測試條件下的輻照度1000W/m2kp是溫度系數(shù)通常為負值Tcell是電池板溫度。電池板溫度可以根據(jù)環(huán)境溫度估算Tcell Tamb (NOCT - 20) / 80 * GHINOCT是額定工作溫度。實際操作中需要注意上面這套模型計算出來的功率是單個風(fēng)機或單個光伏板的出力要得到總出力需要乘以裝機臺數(shù)或總裝機容量對應(yīng)的轉(zhuǎn)換系數(shù)。這里非常容易出錯尤其是光伏部分一不小心就少乘了一個數(shù)量級。我的建議是提前算好“單瓦發(fā)電量曲線”或“單機出力時間序列”后續(xù)無論怎么變化裝機容量只需要做一次線性縮放即可。2.2 制氫與合成氨環(huán)節(jié)的建模要點電解槽的建模核心是效率和耗電量的關(guān)系。堿性電解槽AWE目前是工程應(yīng)用最廣的方案其效率一般在55%到70%之間意味著每生產(chǎn)1kg氫氣需要消耗55到65kWh的電能包含輔助系統(tǒng)耗電。我用的簡化模型是H2_rate Pe / e_load * efficiency這里的Pe是電解槽有功功率或者反過來Pe H2_rate * e_load / efficiency。關(guān)鍵參數(shù)e_load取58kWh/kgH2這是堿性電解槽常見水平。電解槽還有一個重要特性——最小運行功率約束。受制于電解槽的物理特性和安全性要求它不能無限降低負載一般要求在額定功率的20%到40%以上運行低于這個值會自動停機。這個約束對調(diào)度優(yōu)化影響巨大因為它給優(yōu)化問題引入了整數(shù)變量每臺電解槽要么停機功率為0要么在最小技術(shù)出力以上運行。我從項目復(fù)現(xiàn)經(jīng)驗來看如果忽略這個約束容量優(yōu)化結(jié)果會嚴重偏樂觀——優(yōu)化器會頻繁把電解槽運行在10%甚至5%的負載率這在現(xiàn)實中根本做不到。合成氨環(huán)節(jié)的建模相對線性N2 3H2 → 2NH3從氫氣到氨的轉(zhuǎn)化效率通常在95%以上。實際建模時簡化成氨產(chǎn)量與氫氣消耗量之間的線性關(guān)系即可。需要注意的是合成氨工藝裝置是高度連續(xù)化的設(shè)備啟停成本高、啟停時間長所以調(diào)度中一般設(shè)定為“一旦開啟保持連續(xù)運行”或“全年滿負荷運行”。我在復(fù)現(xiàn)時采用的方案是設(shè)定合成氨系統(tǒng)的年運行小時數(shù)和年耗氫量然后把逐時耗氫量作為調(diào)度的基礎(chǔ)負荷這樣處理既簡化了模型又保持了實際工藝的連續(xù)性特征。2.3 儲能與儲氫的約束作用蓄電池和儲氫罐在本項目里扮演的角色完全不同但它們都是“時間搬移器”——把某時刻多出的電能搬到缺電時刻使用。蓄電池搬移的是電力儲氫罐搬移的是氫能。從系統(tǒng)角度看兩者的配合起到了至關(guān)重要的調(diào)峰作用。蓄電池建模采用經(jīng)典的荷電狀態(tài)SOC遞推方程SOC(t1) SOC(t) Pch * ηch - Pdis / ηdis。約束條件有三類充放電功率上下限、SOC上下限通常取10%到90%避免過度充放損傷壽命、以及同一時刻只能充電或只能放電的互斥約束。最后一個約束在求解時必須用整數(shù)變量實現(xiàn)這也是調(diào)度模型需要用到MILP而不是單純LP的原因之一。儲氫罐建模相對簡單SOH(t1) SOH(t) H2_prod(t) - H2_cons(t)罐容的遞推約束包括儲氫量上下限和產(chǎn)氫/用氫速率的限制。但要特別注意儲氫罐的“自用平衡”在離網(wǎng)模式下全年總產(chǎn)氫量必須大于等于全年總用氫量加上損耗否則系統(tǒng)在年末會出現(xiàn)儲氫量跌破下限的不可行解。我在復(fù)現(xiàn)中把這部分作為內(nèi)層調(diào)度的隱性約束檢查項每次內(nèi)層求解結(jié)束后會核算一遍全年氫量平衡。3. Matlab代碼實現(xiàn)與核心環(huán)節(jié)3.1 代碼整體結(jié)構(gòu)與數(shù)據(jù)準備拿到這個復(fù)現(xiàn)項目我建議先把代碼按模塊劃分清晰不要全堆在一個腳本里。我推薦的目錄結(jié)構(gòu)如下project/ │ main_capacity_scheduling.m # 主程序雙層優(yōu)化總控 │ load_data.m # 數(shù)據(jù)讀取與預(yù)處理 │ ga_outer_loop.m # 外層遺傳算法 │ milp_inner_schedule.m # 內(nèi)層調(diào)度優(yōu)化YALMIP建模 │ plot_results.m # 結(jié)果可視化 │ ├─ data/ │ ├─ wind_speed.csv # 風(fēng)速數(shù)據(jù)m/s │ ├─ ghi.csv # 水平面總輻照度W/m2 │ ├─ temperature.csv # 環(huán)境溫度℃ │ └─ electricity_price.csv # 分時電價元/kWh │ └─ results/數(shù)據(jù)準備這一步的重要性怎么強調(diào)都不為過。我用的氣象數(shù)據(jù)可以來自NASA MERRA-2再分析資料或當(dāng)?shù)貧庀笳緦崪y數(shù)據(jù)時間分辨率取1小時即可。如果打算做全年8760小時精確仿真風(fēng)速、輻照度、溫度三條序列必須時間對齊否則后面計算會出各種莫名其妙的問題。如果你手頭沒有現(xiàn)成數(shù)據(jù)可以用Matlab的File Exchange里一些開源的典型年氣象數(shù)據(jù)集也可以用簡單的隨機生成法造一套曲線但要注意生成的數(shù)據(jù)必須符合風(fēng)速的Weibull分布特性和輻照度的晝夜周期性不然優(yōu)化結(jié)果缺乏實際參考價值。對原始數(shù)據(jù)的預(yù)處理包含三步缺失值插補線性插值或相鄰值填充、異常值剔除比如風(fēng)速出現(xiàn)負值或輻照度超過太陽常數(shù)1367W/m2、時間對齊。第三步尤其重要三條序列缺一個時間標(biāo)簽后面windspeed(t)和GHI(t)的下標(biāo)就對不上了。3.2 外層遺傳算法的實現(xiàn)要點外層容量優(yōu)化我采用的是帶精英保留策略的遺傳算法GA決策變量通常是5個風(fēng)機裝機臺數(shù)、光伏裝機容量kW、電解槽額定功率kW、儲氫罐容量kg、蓄電池容量kWh。在并網(wǎng)模式下還可能增加電網(wǎng)聯(lián)絡(luò)線功率上限這一個變量。遺傳算法的個體編碼我推薦采用實數(shù)編碼。直接用向量 [N_wt, P_pv, P_ele, V_h2, E_bat] 代表一個個體種群規(guī)模設(shè)30到50遺傳代數(shù)設(shè)80到120代交叉概率0.85變異概率0.05。這是一個經(jīng)驗參數(shù)組合經(jīng)過多次測試在我的案例里收斂效果很穩(wěn)定。適應(yīng)度函數(shù)是整個外層算法最核心的部分。對于每個個體適應(yīng)度值算的是對應(yīng)容量方案下的年化總成本我采用的公式是C_total C_invest C_om C_buy - C_sell C_penalty各項含義如下C_invest是年化投資成本把設(shè)備初始投資按壽命年限風(fēng)機20年、光伏25年、電解槽15年、儲罐20年、蓄電池10年折算成年值再乘上資金回收系數(shù)。C_om是年運維成本通常按初始投資的固定比例估算我取的是每年2%到5%。C_buy是并網(wǎng)模式下的年購電費用來自內(nèi)層調(diào)度結(jié)果。C_sell是年售電收益同樣來自內(nèi)層調(diào)度。C_penalty是懲罰項重點來了——離網(wǎng)模式下如果出現(xiàn)失負荷或者儲氫量跌破下限要加一個數(shù)量級極大的懲罰值比如1e8目的就是讓GA果斷淘汰這些不可行方案。GA每次迭代一個個體就驅(qū)動內(nèi)層做一次調(diào)度優(yōu)化也就是說2000次迭代會調(diào)用2000次內(nèi)層求解。為了讓計算量可控我的做法是內(nèi)層只求典型日而不是全年8760時刻。這個放在下一節(jié)詳細說。另外要提醒的是GA搜索過程容易出現(xiàn)早熟收斂也就是還沒找到最優(yōu)區(qū)域就集中在某個局部極小值附近。緩解辦法有兩個一個是在變異算子中適當(dāng)調(diào)大變異概率增加解的多樣性另一個是在初始種群生成時加入一些人工經(jīng)驗解比如按“風(fēng)光配比經(jīng)驗公式”生成的初始個體讓算法從一個較好的起點出發(fā)搜索。3.3 內(nèi)層調(diào)度優(yōu)化建模與求解內(nèi)層調(diào)度的目標(biāo)函數(shù)在并網(wǎng)模式下是年運行成本最小化在離網(wǎng)模式下是年棄電懲罰和運行成本最小化本質(zhì)上還是一個線性目標(biāo)。約束包括電功率平衡、氫平衡、儲能SOC遞推、電解槽出力上下限、儲氫量上下限、電網(wǎng)交互功率上下限等。Matlab下用YALMIP建模的代碼如下以典型日24時刻為例% 決策變量 P_ele sdpvar(1, 24, full); % 電解槽逐時功率 SOC sdpvar(1, 25, full); % 蓄電池SOC24時刻初始時刻 SOH sdpvar(1, 25, full); % 儲氫量24時刻初始時刻 P_buy sdpvar(1, 24, full); % 購電功率 P_sell sdpvar(1, 24, full); % 售電功率 z_ele binvar(1, 24, full); % 電解槽啟停標(biāo)志0/1變量 % 目標(biāo)函數(shù) objective sum(P_buy .* price) - sum(P_sell .* sell_price) ... penalty_abandon * sum(P_abandon) ... penalty_curtail * sum(P_curtail); % 約束 Constraints []; for t 1:24 % 電功率平衡 Constraints [Constraints, P_wind(t) P_pv(t) P_dis(t) ... P_buy(t) P_ele(t) P_load(t) P_ch(t) P_sell(t)]; % 電解槽出力范圍含最小技術(shù)出力約束 Constraints [Constraints, P_ele_min * z_ele(t) P_ele(t) ... P_ele_max * z_ele(t)]; % 蓄電池SOC遞推 Constraints [Constraints, SOC(t1) SOC(t) ... P_ch(t) * eta_ch - P_dis(t) / eta_dis]; % 儲氫量遞推 Constraints [Constraints, SOH(t1) SOH(t) ... H2_prod(t) - H2_cons(t)]; end這段代碼里的z_ele變量就是前面強調(diào)的整數(shù)變量——它讓問題變成了MILP但這是正確建模的必要代價。如果沒有它電解槽就可以任意低負載運行結(jié)果會不切實際。求解時我直接用了YALMIP的默認接口ops sdpsettings(solver, gurobi, verbose, 0, ... gurobi.MIPGap, 0.01); optimize(Constraints, objective, ops);MIPGap設(shè)置為1%的意思是求解器找到了一個目標(biāo)值距離最優(yōu)值不超過1%的解就停止搜索。這個設(shè)置能顯著縮短求解時間。一般情況下典型日24時刻的MILP問題在幾秒到幾十秒內(nèi)就能解出來全年8760時刻如果直接扔給求解器等幾個小時都可能沒解完。典型日選取的方法我在這里多說一句。我用K-means聚類把全年8760個時刻的風(fēng)光出力和負荷數(shù)據(jù)聚成4到6類每一類的質(zhì)心就是一類典型日。然后統(tǒng)計每類包含的天數(shù)占比作為內(nèi)層調(diào)度結(jié)果折算成全年費用的權(quán)重系數(shù)。這樣全年優(yōu)化問題就被分解為N個典型日優(yōu)化問題的加權(quán)求和計算量下降了幾個數(shù)量級代價只是精度上的一點損失。如果你的導(dǎo)師或合作方要求必須用精確全年數(shù)據(jù)那只能接受長求解時間建議用并行計算來緩解。3.4 結(jié)果可視化和敏感性分析優(yōu)化完成后輸出結(jié)果的可視化能力決定了你這份代碼好不好用、論文里能不能放。我的經(jīng)驗是把結(jié)果畫成三類圖第一類是容量優(yōu)化結(jié)果的對比圖。把并網(wǎng)和離網(wǎng)兩套方案下的各項設(shè)備裝機容量畫成柱狀圖橫向?qū)Ρ?。這張圖一眼就能看出不同模式下容量配置的差異非常直觀。第二類是調(diào)度結(jié)果時序圖。選一個典型日畫出該日24時刻的風(fēng)光出力、電解槽功率、蓄電池SOC、電網(wǎng)交互功率曲線。這張圖是分析調(diào)度策略是否合理的核心依據(jù)也是審稿人最愛盯的地方。第三類是經(jīng)濟性指標(biāo)對比表。年化投資、運維費用、購電費用、售電收益、總成本各模式各方案放一張表里。我在復(fù)現(xiàn)時還把不同容量方案的成本敏感性分析做了出來——比如氫價變化對最優(yōu)容量的影響、上網(wǎng)電價變化對并網(wǎng)模式的影響——這部分圖表對論證系統(tǒng)經(jīng)濟性非常有說服力。4. 復(fù)現(xiàn)中的常見問題與排查技巧4.1 求解不收斂或結(jié)果異常這個問題在我們這個項目里幾乎必現(xiàn)尤其是外層GA嵌套內(nèi)層MILP的雙層結(jié)構(gòu)。我復(fù)現(xiàn)時遇到的最典型癥狀是GA的適應(yīng)度曲線前幾代下降很快后面陷入平臺期不再變化程序跑完100代花了十幾個小時結(jié)果看起來卻不像最優(yōu)解。排查思路有幾步先單獨測試內(nèi)層調(diào)度優(yōu)化固定一組容量參數(shù)檢查內(nèi)層目標(biāo)函數(shù)值是否合理、約束是否被違反、求解時間是否異常。如果內(nèi)層都解不對外層再優(yōu)化也沒意義。檢查約束是否過緊或過松。比如蓄電池SOC初始值設(shè)了50%但末端沒約束長期優(yōu)化下來SOC可能持續(xù)走低到下限最后結(jié)果偏悲觀。建議加上SOC(25) SOC(1)這樣的期末回位約束保證調(diào)度方案的可持續(xù)性。檢查GA的搜索空間設(shè)置。變量的上下界如果設(shè)得太寬搜索效率極低設(shè)得太窄又容易漏掉最優(yōu)解。我的做法是先用經(jīng)驗公式粗算一個合理范圍再放大30%作為GA搜索空間。4.2 計算時間過長的優(yōu)化技巧被計算時間折磨是復(fù)現(xiàn)這類雙層優(yōu)化項目的必然經(jīng)歷。我踩過的坑和解決辦法整理如下內(nèi)層典型日數(shù)量的選擇需要權(quán)衡。用2個典型日時計算極快但精度不夠用6個以上則計算量明顯增加。我實測下來4到5個典型日對結(jié)果的影響已經(jīng)很有限了是性價比最高的區(qū)間。求解器的MIPGap可以適當(dāng)放寬到2%甚至5%。先快速得到一個次優(yōu)解評估GA方向最后再對最優(yōu)個體用0.1%的MIPGap精算一次這是工程上常用的兩階段求解策略。Matlab的并行計算工具箱在GA的種群并行評價上非常有效。把parfor用到內(nèi)層調(diào)度的循環(huán)里4核機器就能獲得接近3倍的加速比這是我強烈推薦的做法。如果單個內(nèi)層MILP的求解時間超過30秒大概率是約束建得有問題比如出現(xiàn)了非線性的隱式約束YALMIP沒報錯但求解器內(nèi)部做了線性化處理。4.3 復(fù)現(xiàn)結(jié)果與原文獻偏差大論文復(fù)現(xiàn)最折磨人的問題之一就是無論怎么調(diào)整參數(shù)結(jié)果都和原文對不上。這個項目我復(fù)現(xiàn)時也遇到類似情況總結(jié)下來導(dǎo)致偏差最常見的原因有四個第一氣象數(shù)據(jù)源不同。不同年份、不同地區(qū)的風(fēng)速和輻照度數(shù)據(jù)差異巨大哪怕同一地點不同數(shù)據(jù)源的偏差也可能達到20%以上。優(yōu)化結(jié)果對數(shù)據(jù)極其敏感所以數(shù)據(jù)源差異會導(dǎo)致最終容量配置差出30%甚至更多這屬于正?,F(xiàn)象。第二經(jīng)濟參數(shù)取值不同。設(shè)備單位造價、運維費率、貼現(xiàn)率、電價曲線這些參數(shù)哪怕稍微調(diào)一點最優(yōu)容量的位置也會跟著移動。論文里往往不會把所有參數(shù)寫得特別細需要根據(jù)論文中的最終結(jié)果反推作者的參數(shù)取值。第三典型日選取方法不同。有的論文用聚類提取有的直接用春夏秋冬各取一個代表日兩種方法得到的調(diào)度結(jié)果自然不一樣容量優(yōu)化結(jié)果也會隨之偏移。第四約束條件的松緊程度。有些論文沒有考慮電解槽最小技術(shù)出力約束或者蓄電池SOC范圍設(shè)得很寬0%到100%優(yōu)化結(jié)果會比嚴格約束下的方案更激進。如果你復(fù)現(xiàn)時遇到對不上的情況我建議先不要慌把論文里的參數(shù)和約束逐條列出來跟你的模型做一遍交叉核對把差異一項一項清零。這個過程本身也是理解這個系統(tǒng)機理最好的方式。5. 參數(shù)參考與經(jīng)驗總結(jié)5.1 我復(fù)現(xiàn)時使用的一套基準參數(shù)為了讓第一次跑通代碼的朋友有個參照我把一套能夠正常出合理結(jié)果的基準參數(shù)列在下面你可以先按這些參數(shù)跑通流程再根據(jù)你自己的數(shù)據(jù)替換參數(shù)取值備注風(fēng)機單機容量2 MW切入風(fēng)速3m/s額定12m/s切出25m/s光伏組件溫度系數(shù)-0.0035 /℃標(biāo)準測試條件下電解槽制氫耗電58 kWh/kgH?堿性電解槽含輔助系統(tǒng)電解槽最小技術(shù)出力30%低于此功率視為停機儲氫罐容量5000 kg作為GA決策變量之一蓄電池容量10 MWhSOC限值10%~90%合成氨年耗氫量2000 t可根據(jù)合成氨年產(chǎn)量換算貼現(xiàn)率8%用于年化投資成本計算上網(wǎng)電價0.35 元/kWh并網(wǎng)模式參數(shù)購電電價0.55~0.95 元/kWh分時電價峰谷波動上面這套參數(shù)是我以“一個典型的風(fēng)光互補制氫合成氨工程”為依據(jù)調(diào)整出來的一組合理默認值你根據(jù)自己的研究區(qū)域和場景替換數(shù)據(jù)后優(yōu)化結(jié)果會更有針對性。關(guān)鍵在于參數(shù)的物理邏輯要自洽不要讓設(shè)備的單位造價或轉(zhuǎn)換效率偏離工程常識太遠。5.2 從復(fù)現(xiàn)到理解的幾個心得復(fù)現(xiàn)完這個項目我最大的體會是這種雙層優(yōu)化模型的真正難點不在算法本身而在對系統(tǒng)物理特性的理解深度。為什么要有電解槽最小技術(shù)出力約束為什么儲氫罐容量不能無限大為什么并網(wǎng)模式下最優(yōu)容量通常小于離網(wǎng)模式這些問題的答案都不是從公式里魔改出來的而是來自于對制氫工藝、電力系統(tǒng)調(diào)度規(guī)則和工程造價的真實理解。還有一個經(jīng)常被忽視的點是這個模型做出來的容量配置方案不能直接照搬當(dāng)成工程設(shè)計圖紙用。模型的目的是幫助決策者理解系統(tǒng)的關(guān)鍵敏感性因素而不是給出一個精確到小數(shù)點的終極答案。工程上做最終設(shè)計時還要考慮氣象數(shù)據(jù)的長期變化趨勢、設(shè)備退化特性、極端天氣事件等大量模型外因素。把優(yōu)化結(jié)果當(dāng)作“合理的搜索起點”而不是“唯一正確答案”是對這個項目最理性的定位。如果你打算在這個項目基礎(chǔ)上做擴展我推薦三個方向一是把時序生產(chǎn)模擬精度從典型日提升到全年8760小時并加入隨機場景做隨機規(guī)劃二是加入碳交易成本或綠氫認證機制讓經(jīng)濟性評價更貼近政策現(xiàn)實三是把電解槽的制氫動力學(xué)特性精細化建模加入冷熱啟動約束和效率隨負載率變化的非線性曲線這會顯著增加模型真實度也更接近實際廠房運行的決策邏輯。這些方向無論哪個做好了都是能獨立成篇的延伸工作。