蓄電池は、太陽光発電プロジェクトの収益性と取引に大きく影響します。当社のシミュレーターはヒューリスティックに基づく蓄電池のディスパッチを採用しており、発電所の運転期間全体にわたる蓄電池の運転をすばやくシミュレーションできます。
このスケジューリングアルゴリズムは、運用で使用する最適化(蓄電池制御を参照)とは異なります。数十年にわたる運転について分析的な最適化モデルを実行するのは現実的ではないためです。長期シミュレーションでは、ヒューリスティックに基づく簡略化した蓄電池スケジューラーを使用します。ほとんど常に成り立つ単純なルールのため、分析モデルが求める解をよく近似できます。たとえば、1日全体をまとめて計画するのではなく、12時間の先読みウィンドウの中で最も安いコマに充電し、最も高いコマに放電します。
以下のヒューリスティックモデルは、DiOrio et al., 2020(DOI:10.1016/j.apenergy.2019.114465)に基づいています。
系統用蓄電池(太陽光発電なし)の場合、すべての期間で太陽光発電量g(t)=0となり、系統充電は常に有効です。蓄電池は低価格期間中に卸電力市場から購入した電力のみで充電し、高価格期間中に放電して収益を最大化します。併設型蓄電池は、系統充電の設定で許可されている場合にのみ系統から充電します。
計算ロジック
このヒューリスティックは、蓄電池を1つのエネルギー貯蔵として30分のコマごとにシミュレーションします。各コマでホライズン内の価格と太陽光発電量を確認し、充電、放電、一次調整力市場への容量の提供、待機のいずれかを決定したうえで、充電状態と残りの容量を更新します。これにより、数十年にわたるプロジェクトのシミュレーションを高速に実行できます。
命名法
全ての量は、30分の1コマあたりの値です。
プロジェクト特性
Mnom : 系統との最大交換量(kWh*)。DC結合のプロジェクトでは、サイトパワコンとメーターの定格のうち小さい方をサイトパワコンのDC側で表した値
Bmax : 最大蓄電池交換(kWh)
Emax : 蓄電池の定格エネルギー容量(kWh)
D(n) : 劣化曲線。nサイクル後に残るEmaxの割合(単位なし)
Nmax : 最大サイクル数(単位なし)
Ccycle : 蓄電池サイクルコスト(円/kWh)
ηcharge,ηdischarge : 充電効率と放電効率(単位なし)
ηx : DC結合のプロジェクトではサイトパワコンの効率、AC結合のプロジェクトでは1(単位なし)
SoCmin,SoCmax : 最小、最大充電状態(単位なし)
SoCstart : 初期充電状態。(SoCmin+SoCmax)/2に設定されます(単位なし)
Tensor Cloudでは蓄電池の往復効率を1つだけ入力し、シミュレーションは往復の損失をすべて放電時に適用します。ηdischargeは往復効率に等しく、ηcharge=1です。
p(t) : 時刻tの価格(円/kWh)。下記を参照
πres(t) : 時刻tの一次調整力のΔkW価格(円/kW)
g(t) : 時刻tの太陽光発電量(kWh)。AC結合のプロジェクトではAC側、DC結合のプロジェクトではDC側の値
c(t) : 時刻tの出力抑制レベルの予測(∈[0,1])(単位なし)
mmax(t) : 時刻tの系統との最大交換量(kWh)
h : ホライズン。24コマ(12時間)(単位なし)
価格p(t)はシナリオのスポット市場価格です。FIP期間中は、スポット市場価格が0.01円/kWhを上回るコマでFIPのプレミアムが加算されます。オフサイトPPA(フィジカルPPA)の契約期間中は、スポット市場価格の代わりにPPAの行使価格を使用します。シミュレーションは、ホライズン全体の価格と太陽光発電量を事前に把握しているものとします(完全予見)。
蓄電池状態
E(t) : 時刻tのエネルギー容量(kWh)
SoC(t) : 時刻tの充電状態(単位なし)
n(t) : 時刻tまでの累積サイクル数(単位なし)
意思決定変数
efill(t) : 蓄電池にまだ充電できるエネルギー(kWh)
eclipped(t) : クリッピングのために予約されたエネルギー(kWh)
echarge(t) : クリッピングのためにスペースを予約したうえで充電できるエネルギー(kWh)
edischarge(t) : 蓄電池から放電できるエネルギー(kWh)
pclipped(t) : 蓄電池なしでクリッピングされる電力(kWh)
pdischarge(t) : 放電する電力(kWh)
pclipcharge(t) : クリップされた太陽光から充電する電力(kWh)
ppvcharge(t) : クリップされていない太陽光から充電する電力(kWh)
pgridcharge(t) : 系統から充電する電力(kWh)
バイナリ意思決定変数
bdischarge(t) : 放電決定
bhighvaluecharge(t) : 高価値充電時間
bhighvaluedischarge(t) : 高価値放電時間
bclipcharge(t) : クリップされた太陽光発電を充電する時間
bpvcharge(t) : 太陽光発電から充電する決定
bgridcharge(t) : 系統から充電する決定
設定点
ptarget(t) : 予備電力目標(kWh)
peffective(t) : 制約後の有効電力目標(kWh)
出力値
m(t) : 時刻tのメーター交換(kWh)
fs2g(t) : エネルギーフロー(太陽光から系統)(kWh)
fb2g(t) : エネルギーフロー(蓄電池から系統)(kWh)
fs2b(t) : エネルギーフロー(太陽光から蓄電池)(kWh)
fg2b(t) : エネルギーフロー(系統から蓄電池)(kWh)
cavoided(t) : 蓄電池によって回避された出力抑制(kWh)
初期設定
このページでは、角かっこでアイバーソンブラケット表記法**を表します。
蓄電池は、定格容量、サイクル数0、初期充電状態から開始します。
E(0)=Emax,n(0)=0,SoC(0)=SoCstart
各タイムステップで、実際の交換制限は現在の出力抑制によって異なります。
mmax(t)=(1−c(t))⋅Mnom
意思決定変数の決定
当社のスケジューリングシステムは、現在のコマと続くh−1コマからなるスケジューリングホライズンhに基づいた意思決定変数に依存しています。
ホライズン期間中、電力を系統に販売できる最大価格は次のように定義できます。
csellmax(t)=i=tmaxt+h−1p(i)
蓄電池の各使用法の相対的な(概算)収益ストリームを計算できます。
時刻tに、PVからの充電によって得られる収益は、このエネルギーを販売できる最大価格から、今すぐエネルギーを販売する機会損失を差し引いたものによって異なります。
rpvcharge(t)=csellmax(t)⋅ηx⋅ηdischarge−ηchargep(t)⋅ηx−Ccycle
系統から充電することによる収益は、変換損失を含め、現時点で電力に支払う価格によって異なります。
rgridcharge(t)=csellmax(t)⋅ηx⋅ηdischarge−ηx⋅ηchargep(t)−Ccycle
エネルギーがクリップされる場合に充電されるおおよその収益には、エネルギーはとにかく失われるため、機会費用はかかりません。
rclipcharge(t)=csellmax(t)⋅ηx⋅ηdischarge−Ccycle
今すぐ放電することからの収益は、市場の現在の価格に依存します。
rdischarge(t)=p(t)⋅ηx⋅ηdischarge−Ccycle
また、バイナリ意思決定変数も計算します。これらは全て0または1であり、bで示されます。
現在のタイムステップで価格が最小の場合(ホライズンと比較して)、これは蓄電池を充電するのに最適な瞬間です。
bhighvaluecharge(t)=[p(t)=i=tmint+h−1p(i)]
一方、現在のタイムステップで価格が最大で(ホライズンと比較して)、かつホライズン内に価格が正のコマが2つ以上ある場合、これは蓄電池を放電するのに最適な瞬間です。
bhighvaluedischarge(t)=[p(t)=i=tmaxt+h−1p(i)]⋅[i=t∑t+h−1[p(i)>0]>1]
蓄電池は、次の3つの条件が全て成り立つ場合にのみPVから充電します。価格が最も低く、PV充電の収益がプラスで、太陽光発電量がプラスであることです。
bpvcharge(t)=bhighvaluecharge(t)⋅[rpvcharge(t)>0]⋅[g(t)>0]
系統充電が無効で、ホライズン内に一次調整力を提供できるコマがある場合、この決定は一次調整力に基づく判定に置き換えられます(一次調整力を参照)。
系統からの充電も同じ考え方に従い、系統充電が有効であることが条件です(有効な場合G=1、それ以外はG=0)。
bgridcharge(t)=G⋅bhighvaluecharge(t)⋅[rgridcharge(t)>0]
クリップされた電力から充電するかどうかの決定は、収益がプラスであるかどうかにのみ依存します。
bclipcharge(t)=[rclipcharge(t)>0]
次に、時刻tに蓄電池を放電する必要があるかどうかを判断できます。
bdischarge(t)=bhighvaluedischarge(t)⋅[SoC(t)>SoCmin]⋅[mmax(t)>g(t)]⋅[rdischarge(t)>0]
これは、価格が良い瞬間であるかどうか、十分なSoCがあるかどうか、交換制限が太陽光発電量よりも高いかどうか、および放電からの収益がプラスであるかどうかに依存します。
ヒューリスティック最適化
蓄電池の設定点は、意思決定変数の値から決定します。
予約エネルギー
各タイムステップtについて、まず特定の用途のために確保する蓄電池のエネルギー量を計算します。これにより、蓄電池の使い方が制限されます。
まず、クリッピングされるエネルギーを吸収するために、蓄電池容量を予約します(例:出力抑制イベントによるクリップなど)。蓄電池なしでクリッピングされる電力量は、次のように計算できます。
pclipped(t)=max(0,g(t)−mmax(t))
理想的には、これら全てのクリップされたエネルギーを吸収したいと考えています。ホライズン内でクリップされたエネルギーを吸収するために蓄電池に保持する必要がある、各時点での予約エネルギーは、1コマあたり最大Bmaxとして次のように計算できます。
eclipped(t)=i=t∑t+h−1min(pclipped(i),Bmax)
蓄電池内で各瞬間に充電できるエネルギーは、次のように定義されます。
efill(t)=ηchargeE(t)⋅max(0,SoCmax−SoC(t))
したがって、後でクリップされたエネルギーの容量を予約しながら、時刻tに1コマの蓄電池交換の範囲内で充電できるエネルギーは次のようになります。
echarge(t)=min(max(0,efill(t)−eclipped(t)),Bmax)
同様に、蓄電池が放電できるエネルギーは次のとおりです。
edischarge(t)=E(t)⋅max(0,SoC(t)−SoCmin)⋅ηdischarge
予備電力設定点
次に、蓄電池の電力の設定点を決定します。これらは実行不可能な場合もある暫定値で、制約は後で解決されます。
放電電力はbdischargeがアクティブな場合にのみ有効になり、蓄電池電力容量と太陽光発電後の残りの交換容量によって制約されます(SoCに関連する制約は後で解決されます)。
pdischarge(t)=bdischarge(t)⋅min(Bmax,mmax(t)−g(t))
bdischargeがアクティブでない(=0)場合、クリップされた太陽光、太陽光、系統の優先順位で充電オプションを評価します。
クリップされた電力がある場合は、それを使用して充電します。
pclipcharge(t)=bclipcharge(t)⋅min(pclipped(t),Bmax,efill(t))
太陽光発電から充電するのが良い場合は、残りの太陽光発電量、蓄電池交換、蓄電池の空き容量を使用します。
ppvcharge(t)=bpvcharge(t)⋅min(g(t)−pclipcharge(t),Bmax−pclipcharge(t),efill(t)−pclipcharge(t),echarge(t))
系統から充電するのが良い場合は、系統連系点の受電容量の範囲内で残りを使用します。
pgridcharge(t)=bgridcharge(t)⋅min(Bmax−pclipcharge(t)−ppvcharge(t),echarge(t)−ppvcharge(t),ηx2⋅Mnom)
最後に、全ての寄与からの目標電力を計算できます。
ptarget(t)=pdischarge(t)−(pclipcharge(t)+ppvcharge(t)+pgridcharge(t))
目標電力に基づいて、蓄電池状態を更新できます。
目標電力はまず[−Bmax,Bmax]の範囲に制限されます。損失は蓄電池の内部で適用されます。放電時は送り出す量より多くのエネルギーが蓄電池から失われ、充電時は受け取る量より少ないエネルギーが蓄えられます。
Δe(t)={ptarget(t)/ηdischarge,ptarget(t)⋅ηcharge,ptarget(t)>0 の場合それ以外の場合
これから、蓄電池のSoC制限によって制約された、新しい蓄電量を計算できます。
e(t+1)=max(min(E(t)⋅SoC(t)−Δe(t),E(t)⋅SoCmax),E(t)⋅min(SoC(t),SoCmin))
SoC(t+1)=E(t)e(t+1)
下限により、すでにSoCminを下回っている蓄電池はそれ以上放電しません。
新しい蓄電量に基づいて、交換される有効な電力(時刻tの実際の蓄電池設定点)を計算できます。
peffective(t)={(E(t)⋅SoC(t)−e(t+1))⋅ηdischarge,(E(t)⋅SoC(t)−e(t+1))/ηcharge,放電する場合それ以外の場合
蓄電池の充電量が計画より少ない場合、実際の充電量は同じ優先順位(クリップされた太陽光、太陽光、系統)で割り当てられます。
電力フロー
最後に、蓄電池、太陽光発電、および系統間の様々なフローとして結果を計算できます。AC結合のプロジェクトでは次のとおりです。
fb2g(t)=max(0,peffective(t))
fs2b(t)=min(−min(0,peffective(t)),pclipcharge(t)+ppvcharge(t))
fg2b(t)=−min(0,peffective(t))−fs2b(t)
fs2g(t)=min(max(0,g(t)−fs2b(t)),mmax(t))
m(t)=fs2g(t)+fb2g(t)−fg2b(t)
DC結合のプロジェクトでは、同じフローをDCバス上で計算します。蓄電池の放電と系統充電がサイトパワコンの余裕を先に使い、残りの太陽光は上限までサイトパワコンを通過し、サイトパワコンを通るエネルギーにはηxが適用されます。蓄電池の結合方式を参照してください。
蓄電池が充電した後も売電できない太陽光は、原因別に分けられます。Mnomを超える部分は設備の制約による損失、mmax(t)とMnomの間の部分は一般送配電事業者(TSO)の指示による出力抑制です。
s(t)=max(0,g(t)−fs2b(t))
cequipment(t)=max(0,s(t)−Mnom)
ctso(t)=max(0,min(s(t),Mnom)−mmax(t))
次に、蓄電池によって回避された出力抑制のレベルを次のように決定できます。
cavoided(t)=cvirtual(t)−cequipment(t)−ctso(t)
cvirtual(t)=max(0,g(t)−mmax(t))
ここで、cvirtual(t)は蓄電池なしでプラントが発生するであろう「仮想」出力抑制です。
劣化と寿命
蓄電池は時間ではなく使用によって劣化します。1サイクルは、その時点のエネルギー容量に等しい放電量をAC側で計測したものです。
n(t+1)=n(t)+E(t)max(0,peffective(t))⋅ηx
エネルギー容量は劣化曲線に従います。劣化曲線はサイクル数0で100%から始まり、点の間は線形補間され、最後の点を超えると最後の値に固定されます。
E(t+1)=Emax⋅D(n(t+1))
n(t)が最大サイクル数Nmaxを超えると、蓄電池は寿命に達し、シミュレーションの残りの期間は待機します。
一次調整力
プロジェクトが一次調整力市場に参加する場合、シミュレーションは各コマで、スポット市場で取引する代わりに蓄電池の容量を一次調整力として提供するかどうかを判断します。
以下の条件をすべて満たすコマで、一次調整力を提供できます。
- コマが2024年4月1日以降である。
- プロジェクトがFIT期間外であり、フィジカルオフサイトPPAの契約期間外である。
- 蓄電池が運転中である。
- 交換制限mmax(t)が、一次調整力のために放電すると見込まれるエネルギーより大きい。
- コマに太陽光発電がない。DC結合のプロジェクトは、太陽光発電のあるコマでも一次調整力を提供できます(後述)。
提供する容量と、各一次調整力コマで蓄電池が放電すると見込まれるエネルギーは次のとおりです。
Pres=2⋅Bmax⋅ηx
F=min(ηx0.0525⋅Pres,Bmax)
Presの単位はkWで、パワコンやメーターの定格による制限は受けません。一次調整力の放電価格は0と仮定するため、一次調整力コマの収益は、ΔkW収入から見込み放電量のサイクルコストを差し引いたものです。
Rres(t)=Pres⋅πres(t)−F⋅Ccycle
対象となる各コマで、シミュレーションは4つの選択肢を比較し、収益が最も高いものを選びます。
- スポット市場への放電:bdischarge(t)がアクティブな場合、現在の価格で最大min(edischarge(t),Bmax,mmax(t))を放電します。
- マルチマーケット:同じコマで系統から充電しつつ一次調整力を提供します。系統充電により、提供する容量は2⋅(Bmax⋅ηx+pgridcharge(t)/ηx)に増えます。ホライズン内で2⋅πres(t)−p(t)が最も高いコマでは可能な限り(最大Bmax−Fまで)充電し、それ以外のコマでは一次調整力で放電する分だけを充電します。この選択肢には系統充電が有効であることが必要です。
- 一次調整力のみ:蓄電池にF以上の蓄電量があり、ホライズン内の上位の一次調整力コマの収益が、同じエネルギーをスポット市場の最も高いコマで放電する場合を上回るとき、充電せずにPresを提供します。
- 待機:どの選択肢の収益もプラスにならない場合。
一次調整力コマでは、蓄電池はFを放電し、スポット市場には放電しません。
系統充電が無効の場合、蓄電池は一次調整力のために太陽光から充電します。一次調整力を提供できるコマを含むホライズンの最低価格のコマで、ホライズン内の上位k個の一次調整力コマの収益が、それに必要なエネルギーを現在の価格で売電した場合を上回るとき、太陽光から充電します。
bpvcharge(t)=bhighvaluecharge(t)⋅[上位 k∑Rres(i)>k⋅F⋅ηx⋅p(t)],k=min(⌊FBmax⌋,h)
DC結合の蓄電池は、太陽光発電のあるコマでも3つの方法で一次調整力を提供できます。太陽光が見込み放電量を賄い不足分を蓄電池が賄う方法、蓄電池だけで賄う方法、系統から充電しながら蓄電池だけで賄う方法です。それぞれをそのコマの太陽光をスポット市場で売電する場合と比較し、いずれも上回らない場合は通常のロジックを適用します。このようなコマで蓄電も一次調整力への活用もできない太陽光は出力抑制されます。
* これはコマあたりのkWhを指します。つまり、30分のコマ中に交換できる実際の最大エネルギーです。これは、kW定格を2で割った値に相当します。たとえば、1 kWのプラントは30分間隔で0.5 kWhを生成できます。他の変数にも同じ規則を使用します。
** アイバーソンブラケット表記法は次のように定義されます。
[P]={1,0,Pが真の場合それ以外の場合
ヒューリスティックモデルを分析モデルと比較して検証し、簡略化した仮定による誤差を見積もります。
関連情報