目錄
主要內容???
??程序要點???
2.1 微能源網系統組成
2.2 強化學習及Q學習算法
??部分代碼???
?運行結果??
下載鏈接
主要內容???
該程序借助深度 Q 網絡(DQN),學習預測負荷、風 / 光可再生能源功率輸出及分時電價等環境信息,運用所學策略集對微能源網能量進行管理,該方法屬于模型無關的價值型智能算法。
程序以能量總線模型為基礎,搭建微能源網研究框架和設備模型。借助于強化學習框架、Q 學習及 DQN 算法的基礎理論,分析經驗回放與凍結參數機制對 DQN 性能的提升作用,最終以經濟性為導向,實現微能源網的能量管理與優化。程序采用python代碼編寫,注釋清楚,復現效果好!
為了方便大家更好的對照文獻學習,整理了一版程序代碼復現和文獻的具體對應關系圖。
??程序要點???
2.1 微能源網系統組成
該系統為微型綜合能源系統,能將多類能源以能量轉換和儲存等方式與不同類型負荷進行關聯。
2.2 強化學習及Q學習算法
強化學習是指從環境狀態到動作策略集的學習,以使得動作從環境中獲得的累計獎勵最大,學習的過程,如下圖所示。本質上,智能體與環境的互動是一種馬爾科夫決策過程(markov decision process,MDP)。MDP?一般由一個四元組(S,?A,?R, pi)定義。
Q 學習(Q-learning)是一種不基于環境模型、基于價值的強化學習算法。Q 學習的主要思路是定義狀態動作價值函數,即 Q 函數,將觀測數據代入到以下更新公式中對 Q 函數進行迭代學習。
深度 Q 網絡創新性地把 Q 函數通過價值函數近似方法進行轉換。具體而言,這種方法利用深度神經網絡強大的函數擬合能力,將 Q 函數映射為一個深度神經網絡。該神經網絡以狀態作為輸入,經過多層神經元的計算和特征提取,輸出對應每個動作的 Q 值估計。經過轉換,深度神經網絡能夠以一種緊湊且高效的方式表示 Q 函數,使得智能體可以在大規模的狀態和動作空間中快速學習和決策,極大地拓展了強化學習在復雜現實場景中的應用范圍。
??部分代碼???
plt.figure()plt.plot(reward_history, color='#2ca02c', lw=1.5)plt.title('訓練獎勵曲線')plt.xlabel('訓練周期')plt.ylabel('平均獎勵')plt.grid(True, alpha=0.3)# 2. 發電單元功率plt.figure()plt.plot(operation_data['MT'], color='#ff7f0e', marker='o', markersize=4)plt.title('聯供機組出力')plt.xlabel('時間 (h)')plt.ylabel('功率 (kW)')plt.xticks(range(0, 24, 4))plt.grid(True, alpha=0.3)# 3. 電網交互功率plt.figure()plt.bar(range(23), operation_data['Grid'], color='#1f77b4')plt.title('電網購電功率')plt.xlabel('時間 (h)')plt.ylabel('功率 (kW)')plt.xticks(range(0, 24, 4))plt.grid(True, alpha=0.3)# 4. 蓄電池調度plt.figure()batt_power = np.array(operation_data['Batt'])charge = np.where(batt_power < 0, -batt_power, 0)discharge = np.where(batt_power > 0, batt_power, 0)plt.bar(range(23), charge, color='#9467bd', label='充電')plt.bar(range(23), -discharge, color='#d62728', label='放電')plt.title('蓄電池調度')plt.xlabel('時間 (h)')plt.ylabel('功率 (kW)')plt.xticks(range(0, 24, 4))plt.legend()plt.grid(True, alpha=0.3)