Closed HashiReo closed 3 weeks ago
(PV, energyprice, imbalanceprice)predict(bid, realtime) = all 0としたときのグラフが以下。
PV発電量、電力価格、インバランス料金のbid時点での予測値がすべて0なので
まず、totalprofit_bidが0にならないといけないが、現時点では0になっていないためどこかがおかしい。
self.df["totalprofit_bid[Yen]"] = self.df["energyprofit_bid[Yen]"]
self.df["energyprofit_bid[Yen]"] = self.df["energyprice_actual[Yen/kWh]"] * self.df["energytransfer_actual_bid[kWh]"]
現時点で上のようになっているが、予測計画段階のenergyprofitなので
self.df["energyprofit_bid[Yen]"] = self.df["energyprice_predict_bid[Yen/kWh]"] * self.df["energytransfer_bid[kWh]"]
だと考える。
変更後のグラフが以下。
totalprofit_bidの合計値が0(各時間についても0)となった。
self.df["energyprofit_bid[Yen]"] = self.df["energyprice_predict_bid[Yen/kWh]"] * self.df["energytransfer_bid[kWh]"]
self.df["energytransfer_bid[kWh]"] = self.df["PV_predict_bid[kW]"] * 0.5 + self.df["charge/discharge_bid[kWh]"]
しかし、self.df["charge/discharge_bid[kWh]"]
は0になっていない。本来であればこれも0になってほしい(発電量も電力価格も0のため)
self.df["charge/discharge_bid[kWh]"]
は"RL_test.py"にて強化学習の行動がそのまま格納されている。
そのため、この項目は強化学習の学習が上手くいっていないと考えられる。
同様に
self.df["totalprofit_realtime[Yen]"] = self.df["energyprofit_realtime[Yen]"] + self.df["imbalancepenalty_realtime[Yen]"]
self.df["energyprofit_realtime[Yen]"] = self.df["energyprice_actual[Yen/kWh]"] * self.df["energytransfer_actual_realtime[kWh]"]
予測計画段階のenergypriceとenergytransferのため
self.df["energyprofit_realtime[Yen]"] = self.df["energyprice_predict_realtime[Yen/kWh]"] * self.df["energytransfer_realtime[kWh]"]
だと考える。
変更した後のグラフを以下に示す。
totalprofit_realtimeも0となった。
しかし、self.df["charge/discharge_realtime[kWh]"]
が0になっていない。
これもbidの場合と同じようにRL_test.pyでの強化学習の行動が格納されたデータであるため学習が上手くいっていないのだと考える。
@HashiReo めちゃくちゃわかりやすい。ありがとう。強化学習の報酬関数とかの部分は大曽根さんが #111 で修正している部分があるので、それを反映すると良くなる可能性がある。一回お互いがプルリクしてコードをあわせるべき。来週の火曜日(10/22)のMTで対面で集まってそれをやりましょう。slackでも声かけます。
@daisukekodaira わかりました。totalprofit_bid, realtimeについて更新しましたが、同様にtotalprofit_actual_bid, realtimeについても更新しないといけなさそうなので、そこも含めて他も検討してみます。また対面MTGの時にすり合わせたいです。
現時点でプルリク送ります
次に、①self.df["totalprofit_actual_bid[Yen]"]
と②self.df["totalprofit_actual_realtime[Yen]"]
について検討する。
①self.df["totalprofit_actual_bid[Yen]"] = self.df["energyprofit_actual[Yen]"] + self.df["imbalancepenalty_actual_bid[Yen]"]
"actual_bid"なのでself.df["energyprofit_actual[Yen]"]
ではなくself.df["energyprofit_actual_bid[Yen]"]
に変更した。
self.df["energyprofit_actual_bid[Yen]"]
は元々無かったため"result_dataframe.csv"に追加した。
self.df["energyprofit_actual_bid[Yen]"] = self.df["energyprice_actual[Yen/kWh]"] * self.df["energytransfer_actual_bid[kWh]"]
②self.df["totalprofit_actual_realtime[Yen]"] = self.df["energyprofit_actual[Yen]"] + self.df["imbalancepenalty_actual_realtime[Yen]"]
"actual_realtime"なのでself.df["energyprofit_actual[Yen]"]
ではなくself.df["energyprofit_actual_realtime[Yen]"]
に変更した。
self.df["energyprofit_actual_realtime[Yen]"]
は元々無かったため"result_dataframe.csv"に追加した。
self.df["energyprofit_actual_realtime[Yen]"] = self.df["energyprice_actual[Yen/kWh]"] * self.df["energytransfer_actual_realtime[kWh]"]
上で変更した後のグラフを以下に示す。
0にならず。。
今までと同様にself.df["charge/discharge_actual_bid[kWh]"]
とself.df["charge/discharge_actual_realtime[kWh]"]
が0にならないためである。
以降はモデルの学習段階 or 予測段階でのテストを行うためissueを変える。
このissueはcloseしておいてください!
最終的なゴール
シナリオ
結果