1. 程式人生 > 其它 >CoudSimPyEnergy程式碼解讀

CoudSimPyEnergy程式碼解讀

技術標籤:科研

PG = E_{\tau} [\sum_{t=0}^T \nabla log \pi(a_t|s_t) * (Q_t - b_t )]

Q_t=Q^{\pi}(s_t, a_t)

_sum_of_rewards(self, rewards_n)

計算q_n

1. reward_to_go = False

  • 直接利用折扣累積獎勵回報值替代Q^{\pi}(s_t, a_t)
  • 梯度計算公式為

E_{\tau} [\sum_{t=0}^T \nabla log \pi(a_t|s_t) * Ret(\tau )]\\ Ret(\tau) = \sum_{t'=0}^T \gamma^t' r_{t'}.

2.reward_to_go = True

Q_t = \sum_{t'=t}^T \gamma^(t^\prime -t)* r_{t'}

_compute_advantage(self, q_n)

  • 根據q_n計算優勢函式
  • adv_n: 二維資料,需要減去跨行的平均值axis=0, 對應多條軌跡的平均值

estimate_return(self, rewards_n)

  • 返回q_n ,以及歸一化後的adv_n

update_parameters(self, all_observations, all_actions, all_advantages, old_agent)

實驗對比實做

  • reward_to_go分別設定為True(實驗一)和False(實驗二
  • 當為true時,修改優勢函式的計算方式(實驗三),再對比
  • 再在優勢函式的基礎上, 實現PPO演算法(實驗四)(線上和離線對比)

驗證求loss時候,傳入的引數的維度,等待實驗結果

ValueError: Parent directory of D:\CloudSimPyEnergy\playground\DAG\launch_scripts\agents\ppo.ckpt-1 doesn't exist, can't save.

agent = Agent(name, brain, 1, reward_to_go=True, nn_baseline=True, normalize_advantages=True,
              model_save_path='%s/energy-multiple-process-machine5.ckpt' % model_dir)