メインコンテンツへ

太陽光の発電量予測

背景​

太陽光発電予測により、Tensor Cloudは発電所を自動で運用できます。予測に基づいて電力市場で取引し、発電・販売・調達計画を一般送配電事業者に提出します。併設型蓄電池では、経済的に最適化された充放電スケジュールのインプットにもなります。

Tensor Cloudは、全ての対象プロジェクトについて太陽光発電量を予測します。予測サービスは1日のうち決まった時刻に実行され、各実行でどこまで先を予測するかは実行時刻によって異なります(予測期間の決定を参照)。

対象となるプロジェクト​

以下の条件を全て満たすプロジェクトが、トレーニングと予測の対象となります。

  1. 有料のワークスペースに属している
  2. 太陽光アレイが1つ以上ある
  3. 需給管理機能が有効である、または14日以内(トレーニング)もしくは5日以内(予測)に開始するようスケジュールされている
  4. 系統連系日が14日より先の日付ではない

予測をトレーニングより遅れて開始するのは、取引開始前に予測の品質を確認する時間を確保するためです。

構成要素とアーキテクチャ​

市場価格予測と同様に、太陽光発電予測サービスは2つの構成要素からなります。

  1. 各プロジェクトのために個別の予測モデルをトレーニングするトレーニングサービス
  2. トレーニングされたモデルを使用して、各プロジェクトの太陽光発電量を予測する予測サービス

トレーニングサービス​

トレーニングサービスは、毎日日本時間の23:00に実行されます。前回のトレーニング以降にクリーニング済みの発電データが7日分以上追加された場合、または発電所の構成が変更された場合に、そのプロジェクトの新しいモデルをトレーニングします。前回のモデルが検証で不採用となったプロジェクトでは、過去の発電データが修正された場合にも再トレーニングします。

モデルアーキテクチャ​

モデルは、ユーザーから提供された過去の発電データと過去の気象予報でトレーニングされます。各モデルは多出力のLasso線形回帰で、正則化の強さはトレーニングデータ上の交差検証で決定されます。モデルは、04:00から20:00までの30分コマ全て(32コマ、16時間分)の太陽光発電量を一度に予測します。この期間外の発電量はゼロとみなされます。

過去の気象予報は、複数の国の気象機関から入手しています。全てのプロジェクトで同じ4つの気象ソースを使用し、モデルはこれらから1時間解像度の20個の気象入力を読み込み、季節変化を表す年間通日の項と組み合わせます。ソースと変数は気象データに記載しています。

トレーニングデータ​

プロジェクトのクリーンな過去の発電データが50日分以上そろった時点で、そのプロジェクトのモデルが作成されます。トレーニングの前に、Tensor Cloudは次のようにデータをクリーニングします。

  • 負の値と、発電所の系統側AC容量の110%を超える値は欠損として扱います。
  • 発電所の所在地で太陽が出ている間に欠損値がある日は除外します。日中の時間帯は太陽の位置から計算されるため、季節と緯度によって変わります。夜間の欠損値はゼロとして扱います。
  • 10:00から14:59までのいずれかの時間帯で発電量がゼロの日は、出力抑制の可能性が高いため除外します。
  • プロジェクトの属するエリアでOCCTOが出力抑制を記録した日は、そのプロジェクト自体が抑制されていなくても除外します。この除外によって残りが50日未満になる場合は、この除外を行いません。

蓄電池または需要家を含むプロジェクトでは、メーターは蓄電池や需要家の電力も計量するため、太陽光の発電データのみを使用します。

トレーニング前に、発電データは発電所の想定モジュール劣化で正規化されます。予測値は、予測日に想定される劣化に合わせて戻されます。

モデル検証​

各プロジェクトについて、固定の気象ソースの組み合わせ(US GFS、JMA MSM、ECMWF IFS、UKMO Global)で候補モデルを1つトレーニングします。このモデルは、トレーニングに使用していない直近10%のデータからなるテスト期間で評価されます。同じ期間について、太陽光発電シミュレーションエンジンに基づくシミュレーションモデルも実行します。シミュレーションには、ECMWF IFSとその地点に対するOpen-Meteoのベストマッチ予報の時間帯ごとの平均を使用し、どちらも利用できない時間帯にはGFSを使用します。

機械学習モデルがシミュレーションを上回らない場合、そのモデルは不採用となって破棄され、予測にはシミュレーションが使用されます。上回った場合はモデルが採用され、テスト期間のRMSEが記録されます。RMSEは全ての時間帯について計算します。

RMSE=∑t=1T(gt−gt^)2T\text{RMSE} = \sqrt{ \frac{\sum_{t=1}^T (g_t-\hat{g_t})^2}{T}}

ここで、TTは検証期間の総時間ステップ数、gtg_tは時間ttでの実際の発電量、gt^\hat{g_t}は予測値です。

性能の低いモデルはシミュレーションに置き換えられるため、誤ったトレーニングデータによって予測の品質が下がる可能性は低くなります。

予測サービス​

予測サービスは1日10回、日本時間01:00、04:00、05:00、06:00、07:00、10:00、13:00、16:00、19:00、22:00に実行されます。各実行は、実行時刻で決まる予測期間について各プロジェクトの発電量を予測します(予測期間の決定を参照)。

予測サービスは、各プロジェクトについてトレーニングサービスが作成したモデルを読み込みます。次の場合は、代わりに物理シミュレーションを使用します。

  • トレーニング済みのモデルがない場合(例えば、そのプロジェクトの過去の発電データがない場合、またはプロジェクトがプラットフォームに追加されたばかりである場合)
  • トレーニング済みのモデルが検証に合格しなかった場合
  • モデルのトレーニング後に発電所の構成が変更された場合(次のトレーニングまで)
  • モデルが予測を出力できなかった場合
  • ある日の気象データが不完全な場合(その日のみ)

予測した全ての時間帯の値は、ゼロから発電所の容量までの範囲に制限されます。発電に運転影響のあるイベントの期間に含まれる時間帯はゼロに設定されます。

DC連系の蓄電池が稼働中のプロジェクトでは、インバーターのDC側で予測を行い、太陽光のDC容量を上限とします。そのため、インバーターで出力制限され蓄電池が充電に使える電力量も予測に含まれます。それ以外のプロジェクトはAC側で予測し、太陽光のAC容量を上限とします。

前日予測には、日本時間07:30までに作成された最新の予測(通常は07:00の実行による予測)が使用されます。

予測期間の決定​

予測は最大14日先までですが、各実行でどこまで先を予測するかは実行時刻によって異なります。長期の予測は更新頻度を下げています。後の実行で置き換えられること、気象入力の更新頻度が低く信頼性も低いこと、毎回更新すると過剰なデータが生成されることが理由です。

各実行は、実行時刻から、到達する最後の日の終わりまでを予測します。

実行時刻(日本時間)予測の終わり
07:0014日後
01:00、13:00、19:007日後
05:002日後
04:00、06:00、10:00、16:00、22:001日後(翌日)

14日先までの全期間を予測するのは07:00の実行のみです。その結果、予測は以下の間隔で更新されます。

  • 当日と翌日:全ての実行で更新(間隔は最大3時間)
  • 2日後:最大6時間間隔
  • 3〜7日後:6時間ごと
  • 8〜14日後:1日1回(07:00)

気象データ​

ソース​

複数の国の気象プロバイダーの気象予報を、Open-Meteo APIを通じて取得します。Open-Meteo APIを利用できない場合は、Tensorが運用するOpen-Meteoのインスタンスを使用します。トレーニングには、Open-Meteoが保存している過去の予報を使用します。全てのプロジェクトで以下のソースを使用します。

国の気象プロバイダー気象モデル空間解像度時間解像度更新頻度
気象庁(JMA)MSM0.05°(約5 km)1時間3時間毎
NOAA NCEPGFS0.11°(約13 km)1時間6時間毎
ECMWFIFS 0.25°0.25°(約25 km)3時間(1時間に補間)6時間毎
英国気象庁(UK Met Office)UKMO Global0.09°(約10 km)1時間6時間毎

ソースごとに予報の対象期間は異なります。ソースに値がない時間帯(MSMの短い予報期間を超える時間帯など)には、同じ時間帯のGFSの値を使用します。

今後、ソースを追加する予定です。

変数​

モデルは、トレーニングでも予測でも、以下の気象変数を1時間解像度で読み込みます。

変数単位GFSMSMECMWF IFSUKMO Global
全天日射量(GHI)W/m2○○○-
散乱日射量(DHI)W/m2○○○-
傾斜面全天日射量(GTI)W/m2○○○-
法線面直達日射量(DNI)W/m2○○○○
直達日射量W/m2○○○○
雲量%○---
地上2 mの相対湿度%○---
風速m/s○---

気温などその他の気象変数は、モデルの入力には使用しません。物理シミュレーションは、モデル検証に記載した独自の気象入力を使用します。