SmartGridLab / battery-control-by-reinforcement-learning

5 stars 3 forks source link

[10/15~] 結果のグラフがすべて0になることを確認する #114

Closed HashiReo closed 3 weeks ago

HashiReo commented 1 month ago

最終的なゴール

シナリオ

結果

HashiReo commented 4 weeks ago

(PV, energyprice, imbalanceprice)predict(bid, realtime) = all 0としたときのグラフが以下。 total_daily_profit 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]"] だと考える。 変更後のグラフが以下。 total_daily_profit 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"にて強化学習の行動がそのまま格納されている。 そのため、この項目は強化学習の学習が上手くいっていないと考えられる。

HashiReo commented 4 weeks ago

同様に 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]"] だと考える。 変更した後のグラフを以下に示す。 total_daily_profit totalprofit_realtimeも0となった。 しかし、self.df["charge/discharge_realtime[kWh]"]が0になっていない。 これもbidの場合と同じようにRL_test.pyでの強化学習の行動が格納されたデータであるため学習が上手くいっていないのだと考える。

daisukekodaira commented 4 weeks ago

@HashiReo めちゃくちゃわかりやすい。ありがとう。強化学習の報酬関数とかの部分は大曽根さんが #111 で修正している部分があるので、それを反映すると良くなる可能性がある。一回お互いがプルリクしてコードをあわせるべき。来週の火曜日(10/22)のMTで対面で集まってそれをやりましょう。slackでも声かけます。

HashiReo commented 4 weeks ago

@daisukekodaira わかりました。totalprofit_bid, realtimeについて更新しましたが、同様にtotalprofit_actual_bid, realtimeについても更新しないといけなさそうなので、そこも含めて他も検討してみます。また対面MTGの時にすり合わせたいです。

現時点でプルリク送ります

HashiReo commented 3 weeks ago

次に、①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]"]

上で変更した後のグラフを以下に示す。 total_daily_profit 0にならず。。 今までと同様にself.df["charge/discharge_actual_bid[kWh]"]self.df["charge/discharge_actual_realtime[kWh]"]が0にならないためである。

HashiReo commented 3 weeks ago

以降はモデルの学習段階 or 予測段階でのテストを行うためissueを変える。

daisukekodaira commented 3 weeks ago

このissueはcloseしておいてください!