習(xí)重構(gòu)混動能量管理:從原理到工程落地)
混動能量管理這塊我見過太多文章把“分層式強化學(xué)習(xí)HRL”掛在嘴上卻始終沒把一件事講透為什么普通強化學(xué)習(xí)不夠用分層之后高層和低層到底各自在優(yōu)化什么我自己在模擬項目X里用分層式強化學(xué)習(xí)做過一整套混合動力汽車能量管理策略從原理到訓(xùn)練再到落地踩了不少坑這篇文章就把整個思路拆開講清楚。適合兩類人看一是剛接觸強化學(xué)習(xí)、想搞懂HRL到底怎么用的學(xué)生二是做整車控制策略的工程師想評估這條路能不能替代傳統(tǒng)規(guī)則策略。讀完至少你能回答三個問題分層分的是什么層、兩層分別學(xué)什么、以及訓(xùn)練時最容易在哪兒翻車。1. 為什么混合動力能量管理需要“分層”而不是“堆料”1.1 單一強化學(xué)習(xí)在車速變化場景下的三個痛點混合動力汽車的能量管理本質(zhì)上是在每一個控制時刻決定發(fā)動機、電機、電池之間怎么分配功率。這個問題的標(biāo)準(zhǔn)建模是馬爾可夫決策過程MDP理論上有現(xiàn)成的強化學(xué)習(xí)算法可以求解。但真的把一個完整工況跑下來你會發(fā)現(xiàn)直接用單一策略網(wǎng)絡(luò)處理會碰到三道坎。第一道坎是時間尺度不一致。模式切換比如純電還是混動屬于慢決策通常以秒到幾十秒為單位而扭矩分配屬于快決策需要在100毫秒級別完成。把兩種尺度塞進一個固定步長的策略網(wǎng)絡(luò)里高層的“戰(zhàn)略意圖”會被低層的瞬時噪聲淹沒。我實際測試過用一個統(tǒng)一步長的DDPG網(wǎng)絡(luò)直接學(xué)訓(xùn)練曲線震蕩得像心電圖模式切換頻率高到?jīng)]法用。第二道坎是維度災(zāi)難與稀疏獎勵。狀態(tài)里往往有車速、加速度、SOC、電池溫度、坡度、擋位等十多個變量動作空間又混合了連續(xù)扭矩和離散模式。動作空間維度一高探索效率斷崖式下降。更麻煩的是一個回合動輒幾百上千步只有跑到最后才能看到累計油耗結(jié)果中間沒有天然的短時獎勵信號策略很難知道哪一步做對了。第三道坎是可解釋性與穩(wěn)定性。單一大網(wǎng)絡(luò)把所有決策邏輯混在一起出了問題很難定位是“模式選錯了”還是“扭矩給錯了”。訓(xùn)練時超參數(shù)稍微動一點結(jié)果就差很遠復(fù)現(xiàn)成本極高。我在調(diào)一個單層SAC算法時同一個代碼換個隨機種子有時候油耗能差8%這種不確定性在工程上根本沒法上線。1.2 分層式強化學(xué)習(xí)的核心思想Options與子目標(biāo)分層式強化學(xué)習(xí)的核心思路很簡單把一個大任務(wù)拆成多個層級高層負(fù)責(zé)制定宏觀計劃低層負(fù)責(zé)執(zhí)行微觀動作。最常見的數(shù)學(xué)框架叫Options也叫半馬爾可夫決策過程SMDP。打個比方你要從市區(qū)去機場。高層決策是選“開車”還是“坐地鐵”這個決策不會每秒鐘都變一旦選定“開車”接下來的每一秒鐘低層才需要管油門踩多重、方向怎么修。高層動作在一段時間內(nèi)保持有效低層在這段時間內(nèi)持續(xù)執(zhí)行子策略直到高層再次決策。這就是Options框架里“選項”的概念。落到能量管理上天然的Option就是“工作模式”。高層策略決定接下來一段時間是純電驅(qū)動、混合驅(qū)動還是強制充電低層策略在給定模式下決定發(fā)動機和電機的具體轉(zhuǎn)矩。這樣高層不再關(guān)心每一毫秒的扭矩細節(jié)低層也不需要考慮“要不要換模式”這種宏觀問題兩層各司其職探索效率大幅提升。還有一個容易被忽視的好處子目標(biāo)sub-goal的引入讓獎勵不再稀疏。低層只管“把當(dāng)前模式下發(fā)動機工作點逼近最優(yōu)效率區(qū)”這個目標(biāo)在每個控制步都是可判定的高層只需要在模式切換點獲得反饋。這樣一來低層收到的是稠密獎勵高層收到的是稀疏但結(jié)構(gòu)清晰的獎勵強化學(xué)習(xí)的兩難問題被自然化解。1.3 分層架構(gòu)到底怎么切才能讓“高層的眼光”和“低層的手速”各司其職很多初學(xué)者一聽說分層就興奮恨不得把問題切成五層六層。我的經(jīng)驗是分層不是越多越好而是要看問題本身是否存在“天然的層級結(jié)構(gòu)”。盲目的分層只會讓訓(xùn)練難度指數(shù)級上升因為每一層都引入了額外的狀態(tài)和決策變量。在混動能量管理里我采用的切法是“慢變量與快變量分離”。模式切換、擋位選擇是典型的離散慢變量決策頻率低影響時間長扭矩分配、SOC微調(diào)是連續(xù)快變量決策頻率高影響時間短。這兩類變量天然適合分到不同層級。具體實現(xiàn)上我給兩層設(shè)定了不同的控制周期。高層每5秒做一次模式?jīng)Q策低層每200毫秒做一次扭矩分配。這個時間比例不是拍腦袋定的而是根據(jù)工況特征來的——低速城市工況中SOC變化率大約每分鐘2%~3%模式切換不需要很頻繁而瞬態(tài)扭矩需求變化卻很快低層必須高速響應(yīng)。我這里再強調(diào)一句后來才想明白的道理高層決策的“獎勵”不應(yīng)該只看當(dāng)前時刻的油耗而要看“這個模式在接下來一段時間內(nèi)帶來的累計價值”。這正是SMDP里的價值函數(shù)定義。如果你把高層也寫成普通MDP的每步獎勵兩層的時間尺度差異就被磨平了分層也就失去意義。2. 混合動力汽車能量管理問題的建模視角2.1 動力總成架構(gòu)與可調(diào)自由度在做能量管理建模之前得先搞清楚你面對的動力總成是什么構(gòu)型。不同構(gòu)型的可調(diào)自由度差異極大。串聯(lián)混動的發(fā)動機只帶發(fā)電機車輪完全由電機驅(qū)動自由度主要在“發(fā)電機發(fā)多少電”并聯(lián)混動的發(fā)動機和電機都能直接驅(qū)動車輪自由度多了“扭矩分配比”混聯(lián)功率分流則還多一個“行星排速比分配”。我在模擬項目X里用的是一種典型的并聯(lián)ISG電機構(gòu)型發(fā)動機通過離合器與ISG電機相連ISG通過減速齒輪連接到變速箱輸入端。這套構(gòu)型的核心自由度有兩個發(fā)動機輸出扭矩、ISG輸出扭矩。由于兩者在變速箱輸入端耦合實際需要決策的是“在滿足駕駛員需求功率的前提下發(fā)動機和電機各自承擔(dān)多少百分比”。如果你用的是插電式混動自由度還會多一個“電量消耗模式與電量維持模式的切換點”但基本建模思路一致。重要的是不要把底層機械模型寫得太復(fù)雜——能量管理策略關(guān)心的是功率流分配不是發(fā)動機內(nèi)部燃燒過程。用效率Map表和動態(tài)約束來抽象就夠了。2.2 能量管理問題的MDP表達狀態(tài)、動作、獎勵把能量管理問題寫成MDP是后面一切訓(xùn)練的基礎(chǔ)。狀態(tài)設(shè)計的準(zhǔn)則是既要讓策略能區(qū)分不同的駕駛場景又不能信息冗余到讓網(wǎng)絡(luò)學(xué)不動。我常用的狀態(tài)向量是車速當(dāng)前值前2秒滑動均值加速度當(dāng)前值平滑濾波值電池SOC及其偏差駕駛員需求功率由車速和踏板開度換算發(fā)動機當(dāng)前工作狀態(tài)轉(zhuǎn)速、是否啟動電池溫度用于保護性約束行駛環(huán)境特征坡度、當(dāng)前工況片段ID可選動作空間分成兩層。高層動作是離散的純電模式EV、混合驅(qū)動模式HEV、強制充電模式CHARGE。低層動作是連續(xù)的發(fā)動機扭矩目標(biāo)值、ISG電機扭矩目標(biāo)值。擋位我把它放進低層里作為第三個動作維度但在早期版本里固定擋位、只優(yōu)化扭矩分配會讓問題簡單很多。獎勵函數(shù)設(shè)計是能量管理里最講究的部分后面第4章會展開細說這里先給一個框架公式它同時考慮了油耗、SOC維持和模式切換懲罰def compute_reward(fuel_rate, soc, battery_current, mode_changed): soc_ref 0.60 # 目標(biāo)SOC soc_penalty 3.0 * (soc - soc_ref) ** 2 fuel_cost 250.0 * fuel_rate # 燃油消耗單位/kg/s mode_penalty 1.5 if mode_changed else 0.0 battery_penalty 0.05 * abs(battery_current) ** 2 return -(fuel_cost soc_penalty mode_penalty battery_penalty)這里每個權(quán)重數(shù)字都要結(jié)合仿真環(huán)境的量綱來調(diào)不能照抄。一個可以借鑒的方法是先統(tǒng)計一個隨機策略下各獎勵項的量級再按“SOC偏差懲罰與油耗懲罰在典型偏差下量級可比”的原則來設(shè)定權(quán)重而不是憑感覺給個整數(shù)。2.3 為什么工況序列是時間相關(guān)的駕駛循環(huán)與馬爾可夫假設(shè)的邊界標(biāo)準(zhǔn)MDP要求狀態(tài)轉(zhuǎn)移滿足馬爾可夫性質(zhì)——下一時刻狀態(tài)只和當(dāng)前狀態(tài)和動作有關(guān)。但真實駕駛工況是強時間相關(guān)的一段擁堵之后大概率接的是低速蠕行高速巡航之后可能是急加速這些時序特征根本不在單步狀態(tài)里。我踩過的坑是直接用原始單幀狀態(tài)訓(xùn)練單層RL油耗結(jié)果在同一個工況上能收斂換一個工況立刻崩掉。原因就是策略學(xué)會了“針對當(dāng)前工況的過擬合”而沒有學(xué)到對工況演變的適應(yīng)性。這也是HRL的一個深層優(yōu)勢高層策略天然以更粗的時間粒度觀察環(huán)境相當(dāng)于在慢時間尺度上做了狀態(tài)聚合能捕捉到“接下來一段時間駕駛趨勢是擁堵還是暢通”這類時序語義。如果你覺得還不夠可以在狀態(tài)里額外拼接一個由歷史車速序列編碼的特征向量——我試過用短窗LSTM提取但發(fā)現(xiàn)一旦加上HRL這個LSTM帶來的增益并不明顯必要性不大。3. 分層式強化學(xué)習(xí)在能量管理中的整體設(shè)計3.1 方案選型Option框架還是兩層DDPG確定要分層之后下一個問題是用哪種HRL實現(xiàn)范式。目前常見的路徑有三條Option框架下的分層DQN、雙層獨立RL各自訓(xùn)練自己的策略、以及基于子技能庫的層次化策略。我實際比較后推薦工程上優(yōu)先考慮Option框架下的分層DQNSAC組合。原因在于能量管理模式切換天然是離散且數(shù)量有限的3~5個模式用DQN來學(xué)高層非常合適低層扭矩分配是連續(xù)控制問題用SAC或TD3這類連續(xù)動作算法更高效。兩層各自使用最擅長的算法效果和調(diào)試友好度都優(yōu)于“強行統(tǒng)一用一個算法”。相比之下雙層獨立RL的問題在于難以協(xié)調(diào)訓(xùn)練節(jié)奏兩個網(wǎng)絡(luò)都在變梯度信號互相干擾。子技能庫方式更適合機器人控制里的底層技能復(fù)用場景對混動能量管理來說有點大材小用且需要額外設(shè)計技能發(fā)現(xiàn)機制調(diào)試成本高。3.2 高層策略模式切換與SOC協(xié)調(diào)高層策略的輸入我并不是直接把原始傳感數(shù)據(jù)全塞給它而是先做了一層“信息摘要”車速滑動平均值、加速度方差、SOC、駕駛員功率需求的分位數(shù)。這個摘要相當(dāng)于給高層一雙“遠視眼”讓它忽略低層控制產(chǎn)生的瞬時抖動只關(guān)注宏觀狀態(tài)。輸出是一個離散模式。初始版本里我只有三個模式后面增加了第四個“滑行回收”模式——松開油門時優(yōu)先回收制動能量。這一個模式對城市工況的油耗改善非常明顯因為它把低頻的啟停場景單獨識別出來了。高層訓(xùn)練的獎勵是一個SMDP風(fēng)格的累計收益。具體做法是在模式切換發(fā)生時計算從上一個模式開始到現(xiàn)在的累計獎勵并把這條transition以“臨時衰減后的折扣累計”形式放進經(jīng)驗回放池。需要注意標(biāo)準(zhǔn)DQN的transition是四元組在HRL里要擴展成五元組狀態(tài)、高層動作、累計獎勵、新狀態(tài)、選項是否終止訓(xùn)練時對終止選項做特殊處理。3.3 低層策略轉(zhuǎn)矩分配的具體實現(xiàn)低層策略在高層給定的模式約束下工作。每個控制步低層讀取當(dāng)前車速、SOC、發(fā)動機轉(zhuǎn)速、駕駛員需求功率輸出發(fā)動機目標(biāo)扭矩和ISG電機目標(biāo)扭矩。一個工程上的關(guān)鍵細節(jié)是不能把扭矩輸出直接作為“最終指令”。真實車輛里還有大量安全約束——發(fā)動機最小穩(wěn)定扭矩、電機最大功率限制、電池峰值放電電流限制。我的做法是加一層“動作屏蔽層”先根據(jù)當(dāng)前狀態(tài)計算每個動作的可行區(qū)間再把策略網(wǎng)絡(luò)輸出的原始動作投影到可行區(qū)間內(nèi)。這個投影操作保證了探索階段也不會產(chǎn)生物理不可行的行為讓訓(xùn)練過程安全得多。低層的獎勵在高層的子目標(biāo)框架下也變得很簡單在EV模式下低層的目標(biāo)就是讓電機工作在高效區(qū)并把SOC消耗控制住在CHARGE模式下目標(biāo)則是讓發(fā)動機在最優(yōu)油耗點附近運行同時給電池充電。子目標(biāo)不同低層學(xué)到的行為自然不同這種“隨上下文變化的獎勵”是分層結(jié)構(gòu)帶來的最大紅利。3.4 訓(xùn)練流程與數(shù)據(jù)流設(shè)計兩層聯(lián)合訓(xùn)練如果同時開跑幾乎必炸。我摸索出來的可行流程是“三步走”。第一步先凍結(jié)高層策略用隨機策略或者規(guī)則策略只訓(xùn)練低層。讓低層在多個基礎(chǔ)工況下學(xué)會“在給定模式下如何分配扭矩”。第二步凍結(jié)低層訓(xùn)練高層。由于低層行為已經(jīng)穩(wěn)定高層看到的轉(zhuǎn)移規(guī)律是明確的學(xué)習(xí)模式切換就容易得多。第三步兩層聯(lián)合微調(diào)但注意把兩層的學(xué)習(xí)率都調(diào)低用小學(xué)習(xí)率慢慢優(yōu)化。偽代碼大致長這樣# 第一階段訓(xùn)練低層策略高層固定為隨機模式 for epoch in range(100): for each episode: state env.reset() mode random_mode() # 高層暫時隨機 while not done: action low_level_actor(state, mode) next_state, reward env.step(mode, action) update_low_level(reward) # 第二階段訓(xùn)練高層策略低層固定 for epoch in range(50): for each episode: mode high_level_actor(state) episode_buffer [] for step in range(high_level_interval): action low_level_actor(state, mode) next_state, reward env.step(mode, action) episode_buffer.append((state, mode, reward, next_state)) update_high_level_with_option_buffer(episode_buffer) # 第三階段聯(lián)合微調(diào) for epoch in range(30): # 兩個網(wǎng)絡(luò)交替更新低學(xué)習(xí)率 ...訓(xùn)練數(shù)據(jù)流還有一個容易被忽略的點經(jīng)驗回放池要分兩套。低層的transition以200毫秒為單位存儲高層的transition以5秒為單位存儲。不要混用否則高層的transition會被低層的海量數(shù)據(jù)淹沒采樣權(quán)重完全失衡。4. 關(guān)鍵實操細節(jié)與參數(shù)設(shè)計經(jīng)驗4.1 獎勵函數(shù)設(shè)計油耗、SOC維持與電池壽命的博弈獎勵函數(shù)是整個項目里最折磨人的部分。很多人以為多加幾項就行結(jié)果各項權(quán)重互相打架訓(xùn)練出來的策略行為詭異。先說SOC維持的經(jīng)典坑如果SOC偏差懲罰太弱策略會把電池當(dāng)成“免費能源”SOC一路消耗到下限油耗看似很低但實際是作弊。如果懲罰太強策略又縮手縮腳一點電量都不敢用等效油耗反而升高。我的解法是兩級SOC懲罰。第一級是圍繞目標(biāo)SOC的二次懲罰控制穩(wěn)態(tài)偏差第二級是SOC邊界硬約束——當(dāng)SOC低于20%時低層被強制切換到CHARGE模式且獎勵中加一個較大的懲罰項。這樣策略可以在SOC偏高時自由用電又不敢跌破下限行為模式符合實際工程邏輯。模式切換懲罰也需要小心。初始我不加懲罰訓(xùn)練出來的策略每5秒就在EV和HEV之間跳來跳去仿真里沒問題但真實機械系統(tǒng)根本扛不住這種高頻沖擊。加懲罰之后模式切換次數(shù)從平均每百公里280次降到了70次油耗只增加不到1%這個交換比非常劃算。電池老化懲罰我放在最后一個版本才加入給電池電流加一個平方項懲罰。這樣做的好處是策略會主動避免極端大倍率充放電雖然對短期油耗有一點負(fù)面影響但對電池壽命的延長效應(yīng)明顯。工程上一定不要只盯著油耗單一指標(biāo)。4.2 狀態(tài)與動作的歸一化、離散化技巧狀態(tài)歸一化的一個重要原則是每個輸入特征都要被壓縮到大致相同的數(shù)值范圍但不能簡單地做0-1歸一化就完事。車速的范圍可以標(biāo)定到0~30 m/sSOC直接用實際值0~1加速度范圍是-3~3 m/s2。我的經(jīng)驗是用對稱歸一化到[-1,1]讓輸入均值接近0這樣網(wǎng)絡(luò)參數(shù)更新更穩(wěn)定。還有一個細節(jié)SOC的波動范圍很小一般在0.4~0.9之間如果直接把SOC作為輸入它的大幅變化其實主要集中在第二層小數(shù)位上。我用的是( SOC - SOC_ref ) / 0.1這類縮放讓網(wǎng)絡(luò)更容易感知到SOC微小的偏移訓(xùn)練收斂速度會快很多。離散化動作時我建議給高層模式列表里加一個“保持當(dāng)前模式”的選項。因為模式切換有懲罰如果動作空間里沒有“保持不變”選項策略就只能被迫每步切換既不合理也沒法收斂。我一開始漏了這個訓(xùn)練出來的高層每步都在切換和再切換之間掙扎后來加上了這個占位動作問題立刻消失。4.3 網(wǎng)絡(luò)結(jié)構(gòu)與超參數(shù)的常見配置網(wǎng)絡(luò)結(jié)構(gòu)在HRL里并不是越深越好。我的默認(rèn)配置是層級算法網(wǎng)絡(luò)結(jié)構(gòu)學(xué)習(xí)率目標(biāo)網(wǎng)絡(luò)更新系數(shù)高層DQNMLP(64,64)3e-40.005低層SACActor(256,256) Critic(256,256)3e-4Actor/ 1e-3Critic0.005低層用SAC而不是DDPG是因為SAC自帶熵正則化探索更穩(wěn)健對獎勵尺度的敏感度也低一些。我在DDPG上經(jīng)常遇到Q值過估計導(dǎo)致的崩潰換到SAC之后訓(xùn)練的穩(wěn)定性明顯改善。經(jīng)驗回放池的容量高層的設(shè)10萬條低層的設(shè)100萬條。因為低層的transition數(shù)量太多如果容量太小早期的經(jīng)驗很快被覆蓋策略會遺忘早期學(xué)到的穩(wěn)定行為。這個比例也要和兩層決策頻率的比例對應(yīng)上。另外低層網(wǎng)絡(luò)輸入我額外拼接了一個“當(dāng)前模式”的one-hot向量讓同一個低層網(wǎng)絡(luò)可以服務(wù)所有模式而不是每種模式訓(xùn)練一個獨立網(wǎng)絡(luò)。參數(shù)共享顯著提高了樣本效率在聯(lián)合微調(diào)階段效果尤其明顯。5. 工程落地與常見問題排查5.1 仿真環(huán)境搭建與虛實差距做HRL訓(xùn)練沒有仿真環(huán)境寸步難行。但仿真環(huán)境的“保真度”選擇直接影響訓(xùn)練效率。我強烈建議先用低保真準(zhǔn)靜態(tài)模型訓(xùn)練策略跑通后再往高保真環(huán)境遷移。低保真模型里發(fā)動機Map表是靜態(tài)的沒有熱管理、沒有動態(tài)響應(yīng)延遲訓(xùn)練速度極快高保真模型加入瞬態(tài)響應(yīng)、熱效應(yīng)、電池內(nèi)阻變化用來做最終驗證。千萬別一上來就用高保真模型否則一個回合仿真幾十秒訓(xùn)練幾千回合你得等幾個星期。我一開始犯過這個錯誤后來改成低保真主線訓(xùn)練、高保真定期驗證的模式時間成本一下子降了一個數(shù)量級。工況數(shù)據(jù)方面我建立了四類基礎(chǔ)工況庫市區(qū)緩行、城郊混合、高速巡航、連續(xù)爬坡。訓(xùn)練時隨機抽取工況組合驗證時用完全獨立的冷門工況。建議至少留出一個訓(xùn)練期間從未見過的工況用來評估泛化能力。5.2 訓(xùn)練不收斂怎么辦獎勵尺度與梯度問題HRL訓(xùn)練不收斂八成以上是獎勵尺度和梯度的問題。這里我整理了幾個高頻現(xiàn)象和排查思路現(xiàn)象可能原因排查動作損失持續(xù)振蕩油耗下不來獎勵項量級差異過大統(tǒng)計各獎勵項數(shù)值范圍重新縮放權(quán)重高層模式切換頻繁Q值亂跳SOC懲罰太弱或切換懲罰缺失加入切換懲罰提高SOC懲罰低層動作始終貼著邊界動作空間投影邏輯有誤檢查可行區(qū)間計算輸出正?;?lián)合微調(diào)階段開始崩兩層學(xué)習(xí)率疊加過大學(xué)習(xí)率降到原來的1/5交替凍結(jié)訓(xùn)練不同種子結(jié)果差異巨大探索噪聲過大、網(wǎng)絡(luò)結(jié)構(gòu)太窄增大網(wǎng)絡(luò)寬度調(diào)整SAC熵系數(shù)還有一個我自己摸索出來的診斷技巧把訓(xùn)練過程中高層選模式的行為可視化出來按時間軸和SOC畫在一起。如果高層行為完全無規(guī)律說明狀態(tài)特征沒有提供足夠信息優(yōu)先檢查高層狀態(tài)摘要是否包含了關(guān)鍵信息。如果高層行為符合直覺SOC低時傾向充電速度高時傾向混動說明訓(xùn)練方向?qū)α耸O轮皇钦{(diào)參問題。5.3 泛化能力評估與遷移用例設(shè)計評估HRL策略不能只看訓(xùn)練工況上的油耗。我自定義了一套評估維度等效百公里油耗、SOC維持誤差、模式切換次數(shù)、發(fā)動機啟停次數(shù)、電池峰值放電倍率。每個指標(biāo)都要和基于規(guī)則的基線對比用多個隨機種子取平均值避免單次運行噪聲。泛化評估的關(guān)鍵是設(shè)計“遷移用例”。比如訓(xùn)練時用的是市區(qū)加高速測試時就專門用連續(xù)爬坡加擁堵的工況。我實際跑下來策略在訓(xùn)練工況上的油耗比規(guī)則策略低12%左右但在完全未見過的高負(fù)載工況下這個優(yōu)勢會縮水到6%左右說明策略仍在泛化但優(yōu)勢會衰減。如果衰減超過一半說明過擬合嚴(yán)重需要增加訓(xùn)練工況覆蓋面。對應(yīng)還有一個經(jīng)驗如果在測試工況上SOC維持誤差過大超出±3%不要急著調(diào)獎勵先檢查是不是高層的“強制充電”觸發(fā)邏輯被低頻工況誤導(dǎo)了。往往高層的狀態(tài)摘要沒有包含足夠長時間尺度的信息導(dǎo)致它無法提前預(yù)判大功率需求。最后提一個非常實用的小技巧訓(xùn)練完成的模型可以再做一層“規(guī)則兜底”。HRL策略在99%的時間里都很好但在極端邊界條件下比如電池超溫、電機過流必須套一層傳統(tǒng)邏輯保證絕對安全。我是用了一個優(yōu)先級邏輯傳統(tǒng)安全約束 高層的模式約束 低層的扭矩優(yōu)化。這套架構(gòu)在實車驗證前的仿真測試?yán)锉憩F(xiàn)出色也讓團隊成員對黑盒模型放心了很多。說回我自己的體會分層式強化學(xué)習(xí)用在混動能量管理上真正麻煩的地方從來不是原理而是訓(xùn)練節(jié)奏的設(shè)計。先固定一方訓(xùn)練另一方、再聯(lián)合微調(diào)這個看似樸素的三步流程是解決兩層互相干擾的唯一實用辦法。另外高層模式的語義一定要跟物理部件對齊寧可模式少而精不要為了炫技拆一堆語義模糊的選項——模式和扭矩分配之間沒有清晰的對應(yīng)關(guān)系時低層學(xué)到的行為會和物理常識相沖突。這套框架做完之后我再去看那些單純堆網(wǎng)絡(luò)結(jié)構(gòu)的方案心態(tài)完全不一樣了分層不是把網(wǎng)絡(luò)變復(fù)雜而是把問題變簡單。