[実施の形態1]
本実施の形態では、オフィスなどのコミュニティー単位の電力需要予測を元に、ノートPC(Personal Computer)のバッテリーをオフィスの余剰電力として利用することを提案する。ノートPCのバッテリーは、蓄電池のように利用される。これにより、ピーク電力の削減と使用電力の平準化を目指す。
例えば、一定時間の使用電力量が閾値を越える場合には放電し、閾値を超えない場合には充電するような制御方法が考えられる。
ノートPCのバッテリーには、最低限の充電量を残しておく。停電時や出張時などの電源が使えない時にも、ノートPCは動作しなければならないからである。また、充放電の繰り返しによる無駄なバッテリーの劣化は、避けるようにする。
最初に、本実施の形態に係る制御システムの概要を説明する。図1は、制御システムの概略図である。制御システムは、ネットワークに接続されている。例えば、制御システムは、クラウド上にあり、インターネットを介してオフィスLAN(Local Area Network)と接続している。あるいは、制御システムは、オフィスLANに直接接続されている。
オフィスLANには、ノートPCが接続されている。制御システムは、ノートPCから電源モード、バッテリーの充電率や残量他の情報を収集し、更に、ノートPCの電力にまつわる制御を行う。
制御システム、あるいは制御システムと同様にネットワークを介してノートPCと接続された予測システムが、電力需要予測を行う。ここでは、一日分の予測を想定する。制御システム又は予測システムは、ノートPCと他の電気機器による使用電力量の現在の実測値と、過去の実測値などに基づいて、予測を行う。
制御システムは、この電力需要予測と現在の電力使用状況に基づいて、一日の充放電計画を立案する。充放電計画は、一日を通して繰り返し最適化される。
次に、ノートPCについて説明する。起動中のノートPCは、バッテリーの充電率と電源モードの状態を保持する。制御システム及び予測システムは、ネットワークを介して、この情報を取得する。
電源モードについて説明する。図2に、電源モードの例を示す。電源モードは、交流電源モード(以下、AC電源モードと記す。)と、バッテリーモードと、チャージモードのいずれかである。
AC電源モードでは、ノートPCは交流電源(以下、AC電源と記す。)から供給された電力を使用する。但し、AC電源モードでは、ノートPCのバッテリーの充電を行わない。従って、バッテリーの充電率は変化しない。尚、AC電源は、電力会社や自家発電システムなど、制御対象の外から供給される。
バッテリーモードでは、ノートPCはバッテリーから供給された電力を使用する。従って、AC電源から供給される電力は使用せず、バッテリーの充電率は、単調に減少する。
チャージモードでは、ノートPCはAC電源から供給された電力を使用し、更にノートPCのバッテリーの充電を行う。従って、バッテリーの充電率は、増加する。
図3は、ノートPC使用時の電力の変化を表している。横軸は時間を示し、縦軸は使用電力(W)を示す。図中、AcはAC電源モードを示し、Baはバッテリーモードを示し、Chはチャージモードを示す。チャージモードの使用電力は、AC電源モードの使用電力に比べて高い。
ノートPCは、電源モードを変更できるようになっている。例えば、電源モードはソフトウェアで制御してもよい。図4は、電源モードを制御するソフトウェアが提供する画面の例である。この画面は、充電しない時間帯とバッテリーで動作する時間帯の指定を受け付ける。ノートPCは、自動的に指定された電源モードで動作する。電源モードの切り替えのために、電源ケーブルを抜き差しせずともよい。
但し、各ノートPCのチャージモードが重複する場合、全体の使用電力は増大する。従って、制御システムにより、電源モードの全体的な制御を行うことにする。制御システムは、ユーザに代わって、各ノートPCの電源モードを切り替える。制御システムは、例えば前述のソフトウェアを介してノートPCを遠隔制御する。
次に、ノートPCのバッテリーについて説明する。バッテリーには、例えばリチウムイオン電池が使用される。過度の劣化は、避けなければならないので、電源モードを制御する際は、リチウムイオン電池の劣化にも配慮する。
リチウムイオン電池は以下の性質を持つ。
1.100%付近での充電(過充電という。)と0%付近での放電(過放電という。)により、劣化は進行する。
2.放電しきらない状態で再充電を繰り返すことにより、劣化は加速しない。(メモリー効果はない)
3.充放電を繰り返すことによって、充電可能な容量が減少する。(サイクル劣化)
バッテリーの劣化を抑えるために、注意を払い、無駄な充放電は、避けるようにする。また、100%付近での充電と0%付近での放電も避けるようにする。一方、充放電の切り替え回数については、上記の性質から配慮しないものとする。
ノートPCは持ち運びにより、ネットワークから切断され、後に再接続される。再接続までの時間や再接続された時点での充電率の予測は、困難である。そのため、短い間隔で充放電計画を見直すことが望ましい。電力需要予測と充放電計画の最適化は、例えば30分間隔で繰り返される。
また、最適化の計算の間にも、状態は変化する。従って、最適化の計算時間は、短い方が望ましい。例えば、本実施の形態では、制御システムは、1分程度で最適化の計算を終えるものとする。
夜間電力による充電ができない場合には、夜間であっても所定の終了時刻に制御を終了する。時間が経過する毎に、最適化計算の対象となる区間数が小さくなるようにしてもいい。また、翌日のピーク電力削減のために、終了時刻での充電量最大化を目的としてもよい。
充放電計画は、複数の目的関数を持つ最適化問題により導かれる。例えば、
1.オフィス全体の一日のピーク電力を指標として算出し、その指標の最小化を目標とする。
2.終了時刻でのバッテリー充電量を指標として算出し、その最大化を目標とする。
3.オフィスの総使用電力を指標として算出し、その指標の最小化を目標とする。
以下の各目的関数について説明する。
ピーク電力削減を最大目標とすると、ピーク電力P、充電量の総和C、総使用電力量Gの順に優先される。これらは、例えば辞書式順序で単目的化した目的関数を用いることにより、総合的に評価することができる。
辞書式順序とは、以下のように定義される。
x=(x
1,...x
n),y=(y
1,...y
n)∈Rに対して、ベクトルに対する辞書式順序≦
lexは以下のように定義される。
x≦
lexy <=>x=y または x≠y かつ
x
j<y
j (j=min(j|x
j≠y
j)
図5は、各変数の時刻毎の関係を表している。一般に指令値ui[ks-1]と実測値vi,ksは一致しない。充電率に最大値および最小値が存在するのは、充電率が飽和するからである。例えば充電率は、100%以上にはならないので、時刻ks-1で電源モードChで動作していても、100%になった時点で電源モードAcに推移し、実測値vi,ksは電源モードAcになる。
また、Ac以外の電源モードでは、充電率の実測値xi,ksは、充電率の変数xi[ks]と一致しないが、同じ値として扱うものとする。
最適化開始時刻での問題は、指令値ui[k]を決定変数とする数理計画問題として定式化される。
上記目的関数(1a)は、辞書式順序により単目的化した目的関数である。
制約式(1b)と(1c)は、ピーク電力が、オフィス全体の使用電力の過去の実測値と、ノートPCのバッテリー制御後におけるオフィス全体の使用電力量とのうちの最大値であることを表している。
電力需要予測Dks[k]は、使用電力量の実測値s[k](k∈Kp)に基づき予測されるので、ノートPCの使用電力量を含んでいる。このため、ノートPCに対する指令値である電源モードによる使用電力量とノートPCが電源モードAcで動作している場合を仮定した使用電力量との差の総和にてDks[k]を調整している。
なお、電源モードBaでは、AC電源からの電力を使用しないため、使用電力量は0である。また、電源モードCh時には電源モードAc時よりも電力を多く使用するので、電源モードChによる使用電力量は、電源モードAcによる使用電力量よりも大きい。
制約式(1d)は、充電量Cが最適化終了時刻keにおけるすべてのノートPCの充電量の和であることを表している。
制約式(1e)は、総使用電力量Gが時刻ksからkeまでに全てのノートPCのAC電源から使用した電力量の和であることを表している。
充電及び放電に伴いエネルギーの損失が発生するため、充電率50%の状態から電源モードBaで動作して10%になった後に電源モードChで充電し、元の充電率50%に戻った場合の使用電力量は、その間50%のまま電源モードAcで動作した場合の使用電力量よりも多くなる。したがって、AC電源からの総使用電力量Gの最小化は、電源モードChでの動作の最小化につながり、バッテリーのサイクル劣化の防止にも貢献する。
制約式(1f)は、電源モードの実測値が時刻ks-1における電源モードとして設定されることを表している。
制約式(1g)は、最適化期間の各時刻では、指定した電源モードで動作することを意味する。
制約式(1h)は、充電率の実測値が最適化開始時刻の充電率に設定されることを表している。
制約式(1i)は、充電率に関する状態方程式である。
なお、バッテリーから供給された電力で動作する場合には充電率は減少するためfi(xi[k],Ba)<xi[k]であり、充電時には充電率が増加するためfi(xi[k],Ch)>xi[k]である。ここでは自然放電はないものと仮定する。したがって、fi(xi[k],Ac)=xi[k]である。
制約式(1j)は、充電率の範囲を表している。そして(A)は、充電率がxl i以下の場合には放電しないことを表し、(B)は、充電率がxu i以上の場合には充電しないことを表す。
上限値及び下限値は、ユーザが設定できる値である。これらの値は、バッテリーの劣化の原因となる過放電及び過充電をさけるために使用される。例えば最小充電率は10%に、最大充電率は80%に設定される。また、ユーザは、例えば充電量を減らさないようにするために任意にこれらの値を設定できる。
制約式(1k)は、過充電を避けるための制約を表す。この式は、充電率が、設定されている最大充電率xu iより10%以上下がっていない場合には充電を開始しない、ということを表している。
図6は、ノートPCの充電時及び放電時の充電率の推移を示している。図6からわかるように、放電に費やされる時間よりも充電にかかる時間のほうが短い。このように、バッテリーを短時間で充電させるので、図2で示すように充電時(Ch)での電力使用量は大きい。
このデータを元に、充電率fiの関数を設定する。各電源モードでの使用電力量は、CPU(Central Processing Unit)使用率などに依存するが、たとえば図2のように一定値をとると仮定して、関数giも、線形関数で近似する。
このように、与えられた問題は、最適値を与える変数ui[k]を探索する組み合わせ最適化問題である。決定変数ui[k]は電源モードAc、Ba、及びChの3つの状態をとるため、多数の組み合わせがあり、総当たりで厳密な解を得ることは困難である。そのため、局所探索法による近似解法が現実的に有効な手段の一つである。
単純な局所探索法として、以下に示すような探索近傍が考えられる。探索空間を以下のように定義する。
また、置換は、u∈Xに含まれる任意の変数(k∈Ko,i∈Mであるui[k])を、Uの任意の要素で置き換える操作である。Xは、置換操作について閉じている。
単純な局所探索法では、u∈Xの探索近傍Nm(u)は、以下の通り定義される。
Nm(u)={v∈X|vはuをm回置換したもの}
しかし、このような単純な局所探索法は、実行可能領域において効率的に探索できないことがある。その場合に、異なる探索空間を用意し、その中で効率的に局所探索を行う方法が考えられる。以下の例では、単純な局所探索法ではなく、架空の探索空間に基づく局所探索アルゴリズムを採用する。架空の探索空間は、間接的な指令(この例では、架空の電源モード。例えば、後述する継続指令Du)を含む。間接的な指令は、直接実行することはできないが、架空の探索空間は、実行可能な領域に変換されるので、最終的に実行可能となる。
架空の探索空間のため、新たな変数u'i[k](k∈Ko,i∈M)を導入する。この変数を、未確定の指令値という。
この変数u'i[k]は、電源モードの指令値を表す変数であり、指令値として実行可能な電源モードAc、Ba、及びChの他に架空の電源モードDu(Dummy)をもつ。電源モードDuは、前回の時刻での電源モードを継続することを示し、継続指令ともいう。
Duを加えた電源モード集合U'={Ac、Ba、Ch、Du}による探索空間を以下のように定義する。
以下、図1に示した制御システム(より具体的には充放電制御を実行する1又は複数のコンピュータ)内のシミュレーション部(より具体的には図15に示すシミュレーション部19)によるシミュレーション処理について説明する。シミュレーション部19は、空間X'から空間Xへの写像も行う。シミュレーション部19は、未確定の指令値u'i[k]に基づいて、元の問題の決定変数である実行可能な指令値ui[k]および目的関数値を求める。また、シミュレーション部19は、後述するサブルーチン処理も行う。シミュレーション部19は、サブルーチン処理で、各ノートPCであるi∈Mについて、最適化期間の各時刻における使用電力量と、各時刻における実行可能な指令値ui[k]と、各時刻において想定される充電率xi[k]を求める。
サブルーチン処理において、シミュレーション部19は、制約に違反した未確定の指令値u'i[k]を受け取った場合に、実行可能な指令値に電源モードAcを設定する。電源モードAcは常に実行できるので、この設定により、シミュレーション部19は、任意の未確定の指令値u'i[k]に対して常に実行可能な解が得られるようにする。
制約に違反した未確定の指令値を受けて電源モードAcを設定することは、制御システムから受けた指令値による電源モードが制約に違反している場合に、ノートPC自身が自動的に電源モードをAcに変更する動作に相当する。実際に100%以上に充電することはできないので、図5のように電源モードChが100%に達した時点で、電源モードをAcに変更することは、理にかなう動作である。
図7は、未確定の指令値及び実行可能な指令値と充電率との関係の例を示す図である。横軸は時間軸を示し、縦軸はノートPCのバッテリーの充電率を示している。この例で、最小充電率は10%である。つまり、シミュレーション部19は、充電率が10%以下にならないように制御する。電源モードDuは、前の電源モードの継続を意味するので、シミュレーション部19は、u'i[2]=Duについて、ui[1]=Acを反復し、ui[2]=Acと設定する。また、シミュレーション部19は、u'i[4]=Duについて、ui[3]=Baを反復し、ui[4]=Baと設定する。一方、時刻5に充電率は10%に達するので、シミュレーション部19は、u'i[6]=Duについて、ui[5]=Baを反復せず、ui[6]=Acと設定する。それ以降の時刻7でも、シミュレーション部19は、u'i[7]=Baの指令に従わず、ui[7]=Acと設定する。このように、シミュレーション部19は、任意のu'∈X'から実行可能解u∈Xを生成する。
次に、具体的なシミュレーション処理について説明する。図8Aと図8Bは、シミュレーション処理のメインルーチンのフローを示す図である。シミュレーション部19は、このシミュレーション処理で、全ノートPCiについての未確定の指令値u'i[k]と電源モードの実測値vi,ksと充電率の実測値xi,ksと、更に全体の電力需要予測Dks[k] と使用電力量の実測値s[k]とを入力し、全ノートPCiについての実行可能な指令値ui[k]と目的関数値とを出力する。まず、シミュレーション部19は、総使用電力量変数Gと充電量総和変数Cとピーク電力変数P[k]を初期化する(S101〜S105)。図9は、目標の指標を記憶する領域の構成の例を示す図である。シミュレーション部19は、総使用電力量変数Gに0を設定し、充電量総和変数Cに0を設定し、各時刻のピーク電力変数P[k]に、対応する時刻の電力需要予測Dks[k] を設定する。図10は、電力需要予測を記憶する領域の構成の例を示す図である。
シミュレーション部19は、各ノートPCについて、S109〜S121のループ処理を繰り返す。シミュレーション部19は、S111の第一行で、実行可能な指令値を初期化する。具体的には、シミュレーション部19は、電源モードの実測値を、最適化開始時刻の一単位時間前の指令値変数に設定する。図11は、実行可能な指令値を記憶する領域の構成の例を示す図である。次に、シミュレーション部19は、S111の第二行で、充電率を初期化する。具体的には、シミュレーション部19は、最適化開始時刻の充電率の実測値を、最適化開始時刻の充電率の変数に設定する。図12は、充電率の記憶領域の構成の例を示す図である。シミュレーション部19は、S111の第三行で、ノートPC単位のシミュレーション(サブルーチン処理)を行う。この処理については、後述する。
シミュレーション部19は、S111の第四行で、前述のノートPC単位のシミュレーションにより算出された最適化期間のノートPCiの使用電力Gi(simulatePC( )の結果に含まれる)を、総使用電力量変数Gに加算する。S109〜S121のループをすべてのノートPCについて実行すると、すべてのノートPC使用電力を合算することになり、シミュレーション部19は、総使用電力量Gを算出したことになる。
シミュレーション部19は、S111の第五行で、充電量総和変数Cに最適化終了時刻のノートPCの充電量cixi[ke]を加算する。シミュレーション部19は、ノートPCiの容量に最適化終了時刻におけるそのノートPCiの充電率(simulatePC( )の結果に含まれる)を乗ずることにより、最適化終了時刻におけるそのノートPCiの充電量を求める。シミュレーション部19は、PC情報テーブルから各ノートPCの容量の情報を取得する。PC情報テーブルは、各ノートPCについてそれぞれのバッテリーの容量の情報を記憶している。
また、シミュレーション部19は、前述のノートPC単位のシミュレーション(サブルーチン処理)で、最適化終了時刻のノートPCiの充電率をすでに算出しているので、これらを用いる。シミュレーション部19は、S109〜S121のループを繰り返すことで、すべてのノートPCの最適化終了時刻の充電量を合算することになり、充電量総和Cを算出したことになる。
更に、シミュレーション部19は、最適化期間の各時刻におけるピーク電力変数Pを算出する(S113〜S119)。シミュレーション部19は、各ノートPCについて、AC電源モードで制御したと想定した場合の使用電力量から、実行可能な指令値の電源モードに従って制御したと想定した場合の使用電力量を引いた差(削減分の電力量に相当する。)を減ずることによりピーク電力を求める。このとき、シミュレーション部19は、AC電源からの使用電力量のみを算出の対象としている。また、シミュレーション部19は、充電率と電源モードに基づいて使用電力量を算出している。シミュレーション部19は、すべてのノートPCについて削減分の電力量を既に初期値として設定されているDks[k]から調整することにより、各時刻におけるピーク電力変数を求める。シミュレーション部19が求めたピーク電力変数は、各時間帯の全体の消費電力量を示している。
最後に、図8bの処理に移行して、シミュレーション部19は、各時刻における使用電力量の実測値s[k]とピーク電力変数P[k]から最大値を探索する。具体的には、シミュレーション部19は、各使用電力量の実測値s[k]同士を比較して、kがks以下の場合には、それらのうちの最大値を求め(S123〜S131)、kがksより大きい場合には、その最大値に対して各ピーク電力変数も比較して、全体のうちの最大値を求める(S133〜S141)。
続いて、図13を用いてサブルーチン処理によるノートPC単位のシミュレーションについて説明する。シミュレーション部19は、このサブルーチン処理で、一つのノートPCiについての未確定の指令値u'i[k]を入力し、未確定の指令値u'i[k]に従って動作した場合の最適化の対象となる時刻における実行可能な指令値ui[k]と最適化期間の最終時刻における充電率xi[ke]と最適化期間における使用電力量Giとを出力する。シミュレーション部19は、最適化期間の使用電力変数Giを0に初期化する(S201)。
シミュレーション部19は、更に、最適化期間の各時刻について、S205〜S227のループ処理を行う。S207では、最適化期間内の時刻における当該ノートPCiの未確定の指令値が継続指令Duであるかを判断する。各時刻における当該ノートPCiの未確定の指令値が継続指令Duである場合には(S207:Yesルート)、シミュレーション部19は、前回の指令値を反復して当該未確定の指令値に設定する(S209)。当該未確定の指令値が継続指令Duではない場合(S207:Noルート)、つまり実行可能な電源モードの指令(Ac、Ba、Ch)である場合には、シミュレーション部19は指令値を変更しない。図14は、未確定の指令値を記憶する領域の構成の例を示す図である。
S211では、(1k)の制約条件及び(A)及び(B)式を満たすか否かを判断する。(1k)の制限に該当する場合には、シミュレーション部19は、未確定の指令値をAcに変更する(S213)。つまり、充電率が最大値より10%以上下がっていない場合には、シミュレーション部19は、充電が行われないようにする。
そして、シミュレーション部19は、当該時刻の充電率xi[k]と未確定の指令値u'i[k](電源モード)に基づいて、次回の時刻の充電率を求める(S215)。
S217では、(1j)の制約条件を満たすか否かを判断する。(1j)の制約に該当する場合には、シミュレーション部19は、実行可能な指令値をAcに変更する(S217、S219)。つまり、充電率が上限あるいは下限を越えている場合には、シミュレーション部19は、過放電及び過充電が生じないようにする。更に、シミュレーション部19は、当該時刻の充電率と実行可能な指令値に基づいて、次回の時刻の充電率を求める(S221)。
いずれの制限にも該当しない場合には、シミュレーション部19は、未確定の指令値を実行可能な指令値に設定する(S223)。
シミュレーション部19は、処理に係る時刻の充電率xi[k]と実行可能な指令値ui[k](電源モード)に従って、その単位時間における当該ノートPCの使用電力を求め、求めた使用電力量をそのノートPCのこれまでの使用電力量の変数Giに加算する(S225)。
このようにして、シミュレーション部19は、実行可能な指令値を特定するとともに、変数Gの値を総使用電力量として、変数Cの値を充電量総和として、変数Pの値をピーク電力(1単位時間における電力量)として得る。
続いて、図1に示した制御システム(より具体的には充放電制御を行う1又は複数のコンピュータ)の置換部(具体的には図15における置換部13)による局所探索処理について説明する。置換部13は、u'∈X'に含まれる任意の指令値(k∈Ko,i∈Mであるu'i[k])をUの任意の要素に置き換える。つまり、置換部13は、一部の指令値をDu以外の実行可能な電源モードの指令(Ac、Ba、あるいはCh)のいずれかに置き換える。
u'∈X'の探索近傍N'm(u')は、以下の通り定義される。
N'm(u')={v'∈X'|v'はu'をm回置換したもの}
図15は、図1に示した制御システム(より具体的には充放電制御を行う1又は複数のコンピュータ)において局所探索を行う生成部の構成例を示す図である。生成部39は、 初期化部11と、設定データ格納部12と、置換部13と、第一制御計画記憶部15と、第二制御計画記憶部17と、シミュレーション部19と、第三制御計画記憶部21と、結果記憶部23と、判定部25と、更新部27と、出力部29とを有する。
第一制御計画記憶部15と第二制御計画記憶部17は、探索空間に相当する制御計画を格納するための記憶部である。従って、第一制御計画記憶部15に格納されている第一制御計画と第二制御計画記憶部17に格納されている第二制御計画には、指令値Duが含まれる。
第三制御計画記憶部21は、実行可能な領域に相当する制御計画を格納するための記憶部である。従って、第三制御計画記憶部21に格納されている第三制御計画には、指令値Duが含まれない。
次に、図16に示した局所探索による制御計画の生成処理について説明する。初期化部11は、S301の初期化を行う。最初の指令値を制御計画に設定する。この構成例の場合には、初期化部11は、第一制御計画記憶部15と第二制御計画記憶部17に同じ制御計画を設定する。
初期化部11は、すべての最初の指令値u'i[k]に継続指令Duを設定する。初期化部11がすべての最初の指令値u'i[k]に継続指令Duを設定することは、当初何も制御しない状態を想定していることを意味する。このように、初期化部11は、局所探索の初期解にランダム解ではなく一定の解を設定する。図中のuは、探索空間の解である。
シミュレーション部19は、S303で、初回のシミュレーション処理を行う。シミュレーション部19は、第二制御計画記憶部17から未確定の指令値u'i[k]を読み込み、前述の通りシミュレーション処理を行う。シミュレーション部19は、元となった制御計画を特定できる状態でシミュレーション結果を結果記憶部23に格納する。シミュレーション部19は、更に、生成した実行可能な指令値からなる第三制御計画を、第三制御計画記憶部21に格納する。図中のuaは、シミュレーションの結果として得られる目的関数値である。なお、シミュレーション部19は、設定データ格納部12に格納されている各種設定データを用いてシミュレーション処理を実施する。設定データには、上で述べた関数fi及びgiのデータをも含む。さらに、シミュレーション部19は、各ノートPCからの実測値(電源モードの実測値vi,ks及び充電率の実測値xi,ks)と、予測システムから得られる電力需要予測Dks[k]をも用いる。
以下で述べる終了条件を満たさなければ(S305)、置換部13は、探索近傍の選択に相当する置換処理を行う(S307)。これにより、置換部13は、第一制御計画記憶部15の第一制御計画の一部を置き換えた第二制御計画を生成し、生成した第二制御計画を第二制御計画記憶部17に格納する。図中のvは、近傍から選択された解であり、第二制御計画に相当する。矢印は、近傍からの解の選択を意味している。
続いて、シミュレーション部19は、第二制御計画に基づいてシミュレーション処理を行う(S309)。シミュレーション部19は、前述と同様に、シミュレーション結果を結果記憶部23に格納する。更に、シミュレーション部19は、前述と同様に、生成した実行可能な指令値ui[k]からなる第三制御計画を、第三制御計画記憶部21に格納する。図中のvaは、近傍から選択された解についてのシミュレーションの結果として得られる目的関数値である。
続いて、判定部25は判定処理を行う(S311)。判定部25は、置換後のシミュレーション結果が置換前のシミュレーション結果に比べて目標により近い場合には、改善したと判断する。この例で、判定部25は、複数の目的を単目的化した関数値により得られた指標に基づいて、その大小比較により優劣を判断する。判定部25は、指標の最大化を目標としている場合には、置換後の指標が置換前の指標より大きい場合に改善したと判定し、指標の最小化を目標としている場合には、置換後の指標が置換前の指標より小さい場合に改善したと判定する。元の解によるシミュレーション結果の目的関数値uaと近傍の解によるシミュレーション結果の目的関数値vaを比較し、その指標が減少している場合に、改善したと判断することを意味している。
判定部25が改善したと判断した場合に、更新部27は更新処理を行なう(S313)。更新部27は、第二制御計画記憶部17の第二制御計画を、新たな第一制御計画として第一制御計画記憶部15に書き込む。また、更新部27は、第二制御計画のシミュレーション結果を、新たな第一制御計画のシミュレーション結果とするように、結果記憶部23の情報を更新する。
生成部39は、終了条件を満たすまで、S305からS313の処理を繰り返す。生成部39は、最適化のための実行制限時間が経過したときに、終了と判断する。生成部39は、更に、探索近傍内のすべての要素に対して解が改善されない場合にも、局所最適解に陥ったものと解して終了と判断する。
処理の終了により、出力部29は、実行可能な指令値である第三制御計画を、実際に各ノートPCを制御する遠隔制御部に出力する。なお、シミュレーション結果を出力するようにしても良い。なお、シミュレーション結果には、目的関数の値だけではなく、ピーク電力P、バッテリー充電量C、総使用電力量Gのデータを含むようにしても良い。
図17は、ノートPCの制御に係る構成を示す図である。図18は、全体処理フローを示す図である。図17と図18は、それぞれ電力需要予測と実測値の測定に係る構成及び処理についても示している。制御システム(より具体的には充放電制御を行う1又は複数のコンピュータ)は、生成部39の他に、外部の予測システムあるいは予測システムに相当する内部の予測処理部から、電力需要予測の情報を取得する取得部31と、取得した電力需要予測の情報を格納する領域である電力需要予測記憶部33と、各ノートPCにおける現在の充電率や現在の電源モードを実測値として測定する測定部35と、測定した実測値を格納する領域である実測値記憶部37とを有している。
所定のタイミングによる生成処理時間に至ると(S401)、取得部31は、電力需要予測を取得し、電力需要予測記憶部33に格納する(S403)。測定部35は、ネットワークを介してノートPCが保持する情報の測定を行い、取得した実測値を実測値記憶部37に格納する(S405)。実測値には、電源モードの実測値vi,ks及び充電率の実測値xi,ksが含まれる。そして、生成部39は、前述の制御計画の生成処理を行う(S407)。
所定のタイミングによる遠隔制御処理時間に至ると(S409)、遠隔制御部41は、生成部39から得た制御計画(実行可能な指令値からなる第三制御計画)に従って、各ノートPCを遠隔制御する(S411)。つまり、遠隔制御部41は、最適化期間の各時刻において各ノートPCが実行可能な指令値に従って、そのノートPCに対して電源モードの選択を指示する。所定の最適化期間を経過すると、処理を終了する(S413)。
上述の一連の動作により、ノートPCを制御する計画の生成とその計画に基づくノートPCの制御が行われる。但し、上述の処理だけでは、対処不能の状況が考えられる。
一つには、測定部35が、ノートPCからの実測値を得られない状況が想定される。ノートPCがLANに接続されていない場合には、測定部35はそのノートPCが保持する情報を測定できないからである。例えば、ユーザがノートPCをオフィス外に持ち出しているときには、測定部35はそのノートPCが保持する情報を測定できない。このような状況では、消費電力は増えないが、充電率は低下している恐れがある。他に、ユーザがノートPCをオフィス内でLANに接続せずに使用している場合にも、測定部35はそのノートPCが保持する情報を測定できない。このような状況では、AC電力が使用されている可能性もある。
シミュレーションによる想定よりも現状が悪いという事態は、回避することが望ましい。従って、シミュレーション部19は、実測値が得られない場合には、目標に対して好ましくない状態であると仮定する。ノートPCからの実測値を得られない場合には、シミュレーション部19は、以下のように処理する。
シミュレーション部19は、電力消費の観点から電源モードはChであると仮定し、仮定した電源モードChを用いて図8AのS117と図13のS225などの消費電力の算出を行う。電源モードChは、このような状況で想定される電源モードのうち、最も消費する電力が大きいからである。
また、シミュレーション部19は、充電の観点から電源モードはBaであると仮定し、仮定した電源モードBaを用いて図13のS215などの充電率の算出を行う。このような状況で電源モードBaによりノートPCが動作している場合には、充電率が低下し、充電量が低下するからである。
また、ノートPCの使用電源を遠隔制御できない場合も想定される。例えば、ノートPCが、AC電源に接続されていない場合が考えられる。この場合に、シミュレーション部19は、電力消費の観点から電源モードはAcであると仮定する。ノートPCが現在AC電源に接続されていなくとも、すぐにAC電源に再接続される可能性があるので、シミュレーション部19はその状態を見越してAC電源により動作するときの消費電力量を用いてシミュレーションを行う。具体的には、シミュレーション部19は、仮定した電源モードAcを用いて図8AのS117と図13のS225などの消費電力の算出を行う。
また、シミュレーション部19は、充電の観点から電源モードはBaであると仮定して、仮定した電源モードBaを用いて図13のS215などの充電率の算出を行う。このような状況のもと、ノートPCがバッテリー電源を使用している可能性があるからである。
最後に、単純な局所探索法による制御の例と、本実施の形態による制御、つまり異なる架空の探索空間に基づく局所探索による制御の例を比較する。
まず、単純な局所探索法による制御の例を示す。図19と図20と図21は、実行可能な領域を探索空間とする場合の指令値の例と、電力使用状態の例と、制御結果の例を示す。
初期値は、すべて電源モードAcである。この例では、15:00の電源モードがBaに変更されないと、電力需要の予測値におけるピーク電力量は減少しない。しかし、単純な局所探索法では、直接この時刻の指令値を置換できる確率は低く、高い改善効率は望めない。
次に、異なる架空の探索空間による制御の例を示す。図22と図23と図24と図25は、探索空間の写像を行なう場合の未確定の指令値の例と、実行可能な指令値の例と、電力使用状態の例と、制御結果の例を示す図である。
充電率が最大値から最小値まで降下するのに2時間程度かかると仮定すると、13:30〜15:00の時刻のいずれかの指令値がBaに置き換われば、15:00に生じると予想されるピーク電力量の削減が期待できる。異なる架空の探索空間による制御では、前の例に比べて有効な置換が行われる確率が高く、改善の期待は大きい。
この例では、すべての指令値が継続指令Duである初期状態に対して、置換部13が14:00の一部の指令値をBaに置き換えたために、ピーク電力の削減が図られている。
[実施の形態2]
第1の実施の形態において、充電率については関数fiを予め用意して当該関数fiに基づきシミュレーション処理を行う。この関数fiを変化させずに初期的な設定のみを使い続けると、バッテリーの状態によっては実際とのずれが生ずる。例えば、消費電力の時間変化の一例を図26に示す。図26の例では、第1の実施の形態のような制御を行わない場合には曲線aのようにピーク電力が高くなっているが、第1の実施の形態のような制御を行えば、シミュレーション上では曲線bのようにピーク電力を抑えることができる。ここで関数fiには、チャージモードChでは約1時間40分でバッテリー充電率0%から100%に充電でき、バッテリーモードBaでは約3時間でバッテリー充電率100%から0%に下がるというモデルを使用している。しかしながら、実際にはバッテリー充電率0%から100%に充電にするためには約2時間かかり、バッテリー充電率100%から0%になるまでの時間が約2時間10分かかるとすると、図26の例では、曲線cのように、1日の後半にシミュレーションのつじつまが合わなくなってピーク電力が増加してしまうという現象が生じ、第1の実施の形態の効果が減じられてしまう。
また、図27に模式的に示すように、制御終了時刻(例えば20時)までに、これまでに下がっていたバッテリー充電率を80%等所定値にまで上げておくような制御を行う場合には、シミュレーション上では所定値まで充電できていても、実際には所定値まで充電できていないということもあり得る。
そこで、以下のような処理を行って、適切な関数fiを設定することで、実際の充電率とシミュレーション上での充電率との乖離を小さくすることで、ピーク電力が上昇してしまうなどの問題を発生しにくくする。
このため、本実施の形態では、図28に示すような構成を制御システム(具体的には充放電制御を行うコンピュータ)に設けるものとする。なお、第1の実施の形態と同様の機能を有する構成要素については同一の参照符号がされている。本実施の形態では、設定データ更新部43と、中間データ格納部44とを追加している。設定データ更新部43は、実測値記憶部37に実測値が新たに格納されると(例えば30分おき)、当該実測値を用いて以下で述べる処理を行い、中間データ格納部44に以下で述べるようなデータを格納しておく。そして、例えば1週間毎など所定の周期で、中間データ格納部44に格納されているデータに基づき設定データの更新を行い、生成部39内の設定データ格納部12に格納されている設定データの更新を行う。
本実施の形態では、制御時刻毎(例えば30分などの単位時間毎)に、例えば図29に示すような実測値が得られ、実測値記憶部37に格納されるものとする。すなわち、ノートPC毎に、ノートPCの識別子と、充電率(%)(=xi,ks)と、駆動状態(=vi,ks)とが格納されるようになっている。なお、実測値記憶部37には、制御時刻毎のデータが累積的に蓄積されているものとする。なお、あまりに古いデータについては破棄しても良い。
また、本実施の形態では、設定データ格納部12には、図30に示すような関数fiのデータが格納されるものとする。本実施の形態では、図6に示したカーブを線形近似することで、充電時変化率(チャージモードChの場合における充電率の増加率)と、放電時変化率(バッテリーモードBaの場合における充電率の減少率)とで、関数fiを表すものとする。すなわち、図30の例では、各ノートPCについて、ノートPCの識別子と、充電時変化率と、放電時変化率とが登録されている。
次に、図31を用いて、新たな実測値が実測値記憶部37に格納される毎に行われる処理について説明する。図31の処理フローでは、制御時刻の間隔で、どのように充電率が変化するのかの実態を表すデータを生成する。
設定データ更新部43は、ノートPCについてのカウンタiを1に初期化する(S501)。そして、設定データ更新部43は、実測値記憶部37に格納されている今回の実測値に含まれるノートPCiの駆動状態がバッテリーモードBa又はチャージモードChであるか判断する(S503)。
ノートPCiの駆動状態がAC電源モードAcである場合には、何もせずに処理はS509に移行する。一方、ノートPCiの駆動状態がバッテリーモードBa又はチャージモードChである場合には、設定データ更新部43は、今回の実測値に含まれるそのノートPCiの充電率xi,ksと1単位時間前の実測値に含まれるそのノートPCiの充電率xi,ks-1との差(xi,ks−xi,ks-1)を算出する(S505)。そして、設定データ更新部43は、今回の実測値に含まれる駆動状態及びバッテリー充電率の変化量を、ノートPCiの識別子に対応付けて、中間データ格納部44に格納する(S507)。例えば、図32に示すようなデータが、中間データ格納部44に格納される。図32の例では、ノートPC毎に、ノートPCの識別子と、駆動状態と、バッテリー充電率変化量とを格納するようになっている。AC電源モードAcであればエントリが登録されないので、ノートPCによって登録されるエントリの数にはばらつきがある。
そして、設定データ更新部43は、未処理のノートPCが存在するか判断する(S509)。例えば設定データ格納部12に載っているノートPCを順番に処理して、最後のノートPCを処理したか判断する。未処理のノートPCが存在する場合には、設定データ更新部43は、カウンタiを1インクリメントし(S511)、処理はS503に移行する。一方、未処理のノートPCが存在しない場合には、今回の実測値についての処理は終了する。
次に、1週間など所定期間経過後に、図33に示すような処理を実施することで関数fiのデータ(図30)を補正する。すなわち、設定データ更新部43は、ノートPCのカウンタiを1に初期化する(S521)。そして、設定データ更新部43は、中間データ格納部44において、ノートPCiについて駆動状態Chのデータを読み出す(S523)。図32の例では、ノートPC1であれば5番目のエントリが読み出される。そして、設定データ更新部43は、読み出したデータに含まれる充電率変化量の平均値である充電率上昇平均値tiを算出する(S525)。
その後、設定データ更新部43は、充電率上昇平均値tiにより、設定データ格納部12におけるノートPCiの充電時変化率siを補正する(S527)。
例えば、重みws,iとwt,iとを用いて、補正後の充電時変化率si newを算出する。
si new=1/(ws,i+wt,i)*(ws,i*si+wt,i*ti)
重みws,i及びwt,iには固定の値を設定しても良い。例えば、ws,i=9、wt,i=1を固定で用いても良い。
また、平均値を算出する際に読み出されたエントリの数niが多いほど信頼性が高いと判断できるので、wt,i=niとして用いることも可能である。この際、ws,iには何らかの固定の値を設定する。すなわち、以下のように表される。
si new=1/(ws,i+ni)*(ws,i*si+ni*ti)
また、設定データ更新部43は、中間データ格納部44において、ノートPCiについて駆動状態Baのデータを読み出す(S529)。図32の例では、ノートPC2であれば2番目のエントリが読み出される。そして、設定データ更新部43は、読み出したデータに含まれる放電率変化量の平均値である充電率下降平均値ciを算出する(S531)。
その後、設定データ更新部43は、充電率下降平均値ciにより、設定データ格納部12におけるノートPCiの放電時変化率diを補正する(S533)。
例えば、重みwc,iとwd,iとを用いて、補正後の放電時変化率di newを算出する。
di new=1/(wd,i+wc,i)*(wd,i*di+wc,i*ci)
充電時変化率と同様に、重みwc,i及びwd,iには固定の値を設定しても良い。例えば、wd,i=9、wc,i=1を固定で用いても良い。
また、充電時変化率と同様に、平均値を算出する際に読み出されたエントリの数niが多いほど信頼性が高いと判断できるので、wc,i=niとして用いることも可能である。この際、wd,iには何らかの固定の値を設定する。すなわち、以下のように表される。
di new=1/(wd,i+ni)*(wd,i*di+ni*ci)
その後、設定データ更新部43は、未処理のノートPCが存在するか判断する(S535)。例えば設定データ格納部12に載っているノートPCを順番に処理して、最後のノートPCを処理したか判断する。未処理のノートPCが存在する場合には、設定データ更新部43は、カウンタiを1インクリメントし(S537)、処理はS523に移行する。一方、未処理のノートPCが存在しない場合には、設定データ更新部43は、中間データ格納部44に格納されているデータ(図32)をクリアする(S539)。但し、クリアするのではなく、他の記憶領域に格納して保存したり、次回の処理対象から除外するようにフラグをセットするなどの処理を行う。
このようにすれば、各ノートPCのバッテリーの状態に併せて、充電時変化率及び放電時変化率を補正することができる。
なお、補正の方法は上で述べた方法以外にも考えられる。特に、ノートPCで使われるリチウムイオンバッテリーは充放電回数がある値(例えば500回から600回程度)に達すると、それ以降の容量低下が加速する。すなわち、バッテリー特性がモデルから大きくずれるようになる、と考えられる。そこで、充電時変化率及び放電時変化率の重みwsについて、充放電総回数mに応じて変化させる方法も考えられる。
例えば、m<M(閾値)であれば、ws1,iを用い、m≧Mであれば、ws2,i(<ws1,i)を用いるものとする。なお、j=1又は2である。
di new=1/(wsj,i+ni)*(wsj,i*di+ni*ci)
同様に、m<M(閾値)であれば、wd1,iを用い、m≧Mであれば、wd2,i(<wd1,i)を用いるものとする。
di new=1/(wdj,i+ni)*(wdj,i*di+ni*ci)
充放電総回数mについては、図34に示すような処理にて、中間データ格納部44に格納しておく。なお、本実施の形態では、充電方向を、チャージモードChが出現すれば充電方向「+」と設定し、バッテリーモードBaが出現すれば充電方向「−」と設定する。その間にAC電源モードAcが出現しても充電方向を変化させない。例えば、Ac,Ba,Ac,Ac,Ch,Acというモード遷移が発生した場合、バッテリーモードBaが出現した時点で−が設定され、チャージモードChが出現した時点で+が設定される。
まず、設定データ更新部43は、ノートPCのカウンタiを1に初期化する(S541)。そして、設定データ更新部43は、実測値記憶部37に格納されている今回の実測値に含まれるノートPCiの駆動状態がバッテリーモードBaであるか判断する(S543)。ノートPCiの駆動状態がバッテリーモードBaである場合には、設定データ更新部43は、中間データ格納部44に用意されている充放電回数テーブルにおけるノートPCiの充電方向が+であるか判断する(S545)。充放電回数テーブルは、例えば図35に示すようなテーブルである。図35の例では、ノートPC毎に、ノートPCの識別子と、充電方向と、充放電総回数とが登録されるようになっている。新規導入ノートPCについての初期値としては、充電方向は「+」に設定され、充放電総回数は「0」に設定されるものとする。
そして、設定データ更新部43は、充電方向が+であれば、充放電回数テーブルにおいてノートPCiについての充電方向を「−」に変更し、充放電総回数を1インクリメントする(S547)。そして処理はS555に移行する。一方、充電方向が「−」の場合も処理はS555に移行する。
一方、ノートPCiの駆動状態がバッテリーモードBaではない場合、設定データ更新部43は、駆動状態がチャージモードChであるか判断する(S549)。駆動状態がチャージモードChではない場合には処理はS555に移行する。一方、駆動状態がチャージモードChである場合には、設定データ更新部43は、充放電回数テーブルにおいてノートPCiについての充電方向が「−」であるか判断する(S551)。充電方向が「+」であれば処理はS555に移行する。
一方、充電方向が「−」であれば、設定データ更新部43は、充放電回数テーブルにおいてノートPCiについて充電方向を「+」に変更し、充放電総回数を1インクリメントする(S553)。そして処理はS555に移行する。
S555では、設定データ更新部43は、未処理のノートPCが存在するか判断する(S555)。未処理のノートPCが存在する場合には、設定データ更新部43は、iを1インクリメントして(S557)、処理はS543に移行する。一方、未処理のノートPCが存在しない場合には、処理を終了する。
以上のような処理を実施することで、制御時刻毎に充放電総回数を充放電回数テーブルに蓄積することができるようになる。
以上のようにモデルを適宜変更するようにすれば、例えば図36のようなピーク電力の時間変化が得られるようになる。図36の例では、曲線aは制御無しの場合を表し、曲線bはシミュレーションで想定した曲線を表し、曲線dは第2の実施の形態のようにモデルを適宜変更する場合の曲線を表す。このように、バッテリーの劣化の分だけピーク電力は高くなるが、図26に示したような曲線cよりもピーク電力は抑えられている。具体的には、曲線cは、制御無しよりも−4.5%のピーク電力となってしまっているが、曲線dは、制御無しよりも−6.7%のピーク電力となっている。
なお、新規にシステムに導入するノートPCについての関数fiのデータについては、カタログ値(例えばバッテリーが空の状態から充電完了までの時間、満充電から使用可能な時間)を用いて設定する。
また、新規ノートPCをシステムに導入する時には、制御対象にはせず、充電と放電を繰り返すことで(例えば、20%以下−>充電−>80%以上−>放電−>20%以下−> ... のようなサイクルを実施し)、変化実績データを貯めておき、次回の関数fiの補正時期が来たら、変化実績データから変化率の初期値を決定してもよい。
なお、充放電総回数、充電時変化率、放電時変化率に閾値を設け、その数値を超えたときに、バッテリー寿命が近づいたことを制御対象のノートPCの画面上に表示させてユーザの注意を促すようにしても良い。
なお、放電時変化率と充電時変化率とを両方共に補正する例を示したが、片方のみ補正する場合もある。
[実施の形態3]
第1の実施の形態では、目的関数の値にのみ着目しているので、あるノートPCのバッテリーを酷使するような制御指令ばかりを出力する可能性がある。例えば、同じノートPCの充放電総回数ばかりを増加させるような制御を行う可能性がある。これは短期的には問題は無いが、中長期的には制御対象全体の消費電力量を増加させたり、ピーク電力を高めたりする。さらに、バッテリーの交換を早めることで物品購入費を増加させることにもなる。
そこで、例えば生成部39の構成を図37に示すような生成部39bに変更して、図38に示すような処理を実施することで、上記のような特定のノートPCのバッテリーを酷使するような制御指令の出力を抑制する。
生成部39bは、基本的な部分は生成部39と同様であるから、同様の機能を有する構成要素については同じ参照符号を付している。
具体的には、生成部39bは、選定部101と、候補データ格納部102と、出力部103と、疲労度データ格納部104とを、生成部39における判定部25及び出力部29の代わりに有する。
選定部101は、結果記憶部23及び第三制御計画記憶部21に格納されているシミュレーション結果及び第三制御計画から、最終的に出力部103を介して出力すべき制御計画を選定する。この際、選定部101は、疲労度データ格納部104に格納されているデータを用いて判断する。また、選定部101は、処理の終了条件をも判断する。候補データ格納部102は、出力部103から出力すべきシミュレーション結果及び第三制御計画の候補のデータを格納する。出力部103は、選定部101で選定されたシミュレーション結果及び第三制御計画を遠隔制御部41に出力する。
次に、図37に示した生成部39bの処理内容について図38を用いて説明する。この処理は図16の処理フローの代わりに行われる。
初期化部11は、初期化処理を実施する(S601)。初期化処理は、最初の指令値を制御計画に設定する処理を含む。本実施の形態においても、初期化部11は、第一制御計画記憶部15と第二制御計画記憶部17に同じ制御計画を設定する。
例えば、初期化部11は、すべての最初の指令値u'i[k]に継続指令Duを設定する。初期化部11がすべての最初の指令値u'i[k]に継続指令Duを設定することは、当初何も制御しない状態を想定していることを意味する。このように、初期化部11は、局所探索の初期解にランダム解ではなく一定の解を設定する。図中のuは、探索空間の解を表す。
次に、シミュレーション部19は、初回のシミュレーション処理を行う(S603)。具体的には、シミュレーション部19は、第二制御計画記憶部17から未確定の指令値u'i[k]を読み込み、図8A及び図8Bに示したシミュレーション処理を行う。そして、シミュレーション部19は、対応する制御計画を特定できる状態でシミュレーション結果を結果記憶部23に格納する。さらに、シミュレーション部19は、生成した実行可能な指令値を含む第三制御計画を、第三制御計画記憶部21に格納する。図中のuaは、シミュレーション結果として得られる目的関数値を表す。
なお、シミュレーション部19は、設定データ格納部12に格納されている各種設定データを用いてシミュレーション処理を実施する。設定データには、上で述べた関数fi及びgiのデータをも含む。さらに、シミュレーション部19は、各ノートPCからの実測値(電源モードの実測値vi,ks及び充電率の実測値xi,ks)と、予測システムから得られる電力需要予測Dks[k]をも用いる。
さらに、本実施の形態では、選定部101は、集合Sに、uについての実行可能な制御計画(すなわち第三制御計画)を登録する。具体的には、選定部101は、uについての実行可能な制御計画のデータを第三制御計画記憶部21から読み出して候補データ格納部102に格納すると共に、結果記憶部23に格納されているシミュレーション結果をも制御計画に対応付けて候補データ格納部102に格納する。
そして、以下で述べる終了条件を満たすと判断されるまで(S605:Noルート)、置換部13は、探索近傍の選択に相当する置換処理を行う(S607)。具体的には、置換部13は、第一制御計画記憶部15の第一制御計画の一部を置き換えた第二制御計画を生成し、生成した第二制御計画を第二制御計画記憶部17に格納する。図中のvは、近傍から選択された解を表し、第二制御計画に相当する。矢印は、近傍からの解の選択を表している。
その後、シミュレーション部19は、第二制御計画格納部17に格納されている第二制御計画に基づいてシミュレーション処理を行う(S609)。シミュレーション部19は、S603と同様に、シミュレーション結果を結果記憶部23に格納する。更に、シミュレーション部19は、S603と同様に、生成した実行可能な指令値ui[k]を有する第三制御計画を、第三制御計画記憶部21に格納する。図中のvaは、近傍から選択された解についてのシミュレーションの結果として得られる目的関数値を表す。
そして、選定部101は、判定処理を実施する(S611)。具体的には、選定部101は、置換処理後のシミュレーション結果が置換処理前のシミュレーション結果に比べて目標により近い場合には、改善したと判定する。より具体的には、選定部101は、複数の目的を単目的化した目的関数の値に基づく大小比較により、制御計画の優劣を判定する。例えば、選定部101は、目的関数値の最大化を目標としている場合には、置換処理後の制御計画についての目的関数値が置換処理前の制御計画の目的関数値の最大値より大きい場合に改善したと判定する。一方、目的関数値の最小化を目標としている場合には、置換処理後の制御計画の目的関数値が置換処理前の制御計画の目的関数値より小さい場合に改善したと判定する。元の解によるシミュレーション結果の目的関数値uaと、近傍の解vによるシミュレーション結果の目的関数値vaを比較し、ua>vaが成立している場合に改善したと判定する。図中では、後者の場合を示している。
今回の制御計画の目的関数値が改善したと判断した場合に、選定部101は、va−wa≧e(所定の閾値)となる実行可能な制御計画wを集合Sから除外し、集合Sにvについての実行可能な制御計画を追加登録する(S613)。具体的には、集合Sに既に登録されている各制御計画wについて、その目的関数値weがva−wa≧eという関係を満たすか否かを判断する。このような関係を満たす制御計画wについてのデータを、候補データ格納部102から削除する。また、vについての実行可能な制御計画及びシミュレーション結果を、候補データ格納部102に格納する。
さらに、更新部27は、更新処理を行う(S615)。具体的には、更新部27は、第二制御計画記憶部17の第二制御計画を、新たな第一制御計画として第一制御計画記憶部15に書き込む。また、更新部27は、第二制御計画のシミュレーション結果を、新たな第一制御計画のシミュレーション結果とするように、結果記憶部23の情報を更新する。そして処理はS605に戻る。
一方、本実施の形態では、今回の制御計画の目的関数値が改善していないと判断した場合でも、選定部101は、今回のシミュレーション結果が、これまでの最善のシミュレーション結果の近傍にあるか判断する(S617)。具体的には、目的関数値va=uaであるか又はva>ua且つva≦ua+eであるか判断する。これは、目的関数値を最小化する場合の関係式であり、最大化する場合には、不等号を反転させる。このような条件を満たす場合には、選定部101は、集合Sにvについての実行可能な制御計画を追加登録する(S619)。より具体的には、vについての実行可能な制御計画及びシミュレーション結果を、候補データ格納部102に格納する。そして、処理はS605に戻る。S617の条件を満たさない場合にも処理はS605に戻る。
生成部39bは、終了条件を満たすまでS605からS619の処理を繰り返す。例えば、生成部39bは、最適化のための実行制限時間が経過したときに、終了条件を満たしたと判断する。さらに、探索近傍内のすべての要素に対して解が改善されない場合にも、局所最適解に陥ったものとみなして終了条件が満たされたと判断する。
終了条件が満たされた場合には、選定部101は、候補データ格納部102に格納されている集合Sのデータから、バッテリー疲労度のばらつき指標に基づき制御計画を特定して、制御計画及びシミュレーション結果を出力部103に出力する(S621)。 S621の処理では、集合Sに1つの制御計画しか含まれていない場合には、その制御計画が選択される。一方、集合Sに複数の制御計画が含まれている場合には、例えば以下のようなバッテリー疲労度のばらつき指標df(u)を算出する。
q(i,u)は、制御計画uを実行した場合におけるノートPCiのバッテリー疲労度を表す。q(j,u)は、制御計画uを実行した場合におけるノートPCjのバッテリー疲労度を表す。バッテリー疲労度は大きな値ほどバッテリーが消耗しているものとする。すなわち、バッテリー疲労度の差の絶対値が最も大きい値をばらつき指標df(u)としている。
このようなばらつき指標df(u)を集合Sに含まれる各制御計画について算出し、最も小さいばらつき指標df(u)が算出された制御計画を選定する。すなわち、可能な限り、バッテリー疲労度のばらつきが小さくなるような制御計画を採用することで、一部のノートPCのバッテリーが酷使されるのを抑制する。
バッテリー疲労度のデータは、例えば疲労度データ格納部104に格納しておく。図39の例では、ノートPC毎に、ノートPCの識別子と、バッテリー疲労度とが格納されるようになっている。
バッテリー疲労度には、例えば、第2の実施の形態でも述べた充放電総回数を用いることができる。充放電総回数が多いほど、バッテリーが消耗するためである。例えば、中間データ格納部44に、これまでの充放電総回数が格納されている場合には、充放電回数テーブル(図35)を読み出し、各制御計画が実際に実行されたと仮定した場合に、図34の処理にて充放電回数テーブルを仮に更新することで仮の充放電総回数が得られる。この仮の充放電総回数を、上で述べた式に当て嵌めれば、ばらつき指標df(u)が得られる。この場合には、充放電総回数の最小値と最大値との差が小さくなるように制御計画が選定される。
その他にバッテリー疲労度qとして、充電残量が高い数値(例えば90%以上)での長時間の使用を劣化しやすい条件と考えたり、充電残量が中程度(例えば20%から80%の間)で推移する使い方を劣化が起きにくい条件と考えたりして、それぞれのためのバッテリー疲労度q(i,u)を定義してもよい。
さらに、ばらつき指標df(u)についても差の絶対値ではなく、以下のような式に変更することも可能である。
このような処理の終了により、出力部29は、実行可能な指令値である第三制御計画を、実際に各ノートPCを制御する遠隔制御部41に出力する。なお、シミュレーション結果を出力するようにしても良い。なお、シミュレーション結果には、目的関数の値だけではなく、ピーク電力P、バッテリー充電量C、総使用電力量Gのデータを含むようにしても良い。
以上のような処理を実施することで、一部のノートPCのバッテリーが他と比較して急激に劣化するような事態を抑制することができる。これにより、シミュレーション結果と実際の乖離を少なくして、ピーク電力の抑制や総消費電力量の抑制なども可能となる。
以上本技術の一実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、上述の機能ブロック構成は必ずしも実際のプログラムモジュール構成に対応するものではない。
また、上で説明した各記憶領域の構成は一例であって、必ずしも上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
また、制御システム(より具体的には充放電制御を行う1又は複数のコンピュータ。制御装置とも考えられる。)の機能は、1台のコンピュータではなく複数台のコンピュータで実現するようにしてもよい。
なお、上で述べた制御システム(より具体的には充放電制御を行う1又は複数のコンピュータ)は、コンピュータ装置であって、図40に示すように、メモリ501とCPU(Central Processing Unit)503とハードディスク・ドライブ(HDD:Hard Disk Drive)505と表示装置509に接続される表示制御部507とリムーバブル・ディスク511用のドライブ装置513と入力装置515とネットワークに接続するための通信制御部517とがバス519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD505に格納されており、CPU503により実行される際にはHDD505からメモリ501に読み出される。CPU503は、アプリケーション・プログラムの処理内容に応じて表示制御部507、通信制御部517、ドライブ装置513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ501に格納されるが、HDD505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク511に格納されて頒布され、ドライブ装置513からHDD505にインストールされる。インターネットなどのネットワーク及び通信制御部517を経由して、HDD505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU503、メモリ501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本技術の実施の形態をまとめると、以下のようになる。
本実施の形態に係る制御計画生成方法は、(A)複数機器に対して間隔をおいて繰り返される複数回の制御指令を定めた第一制御計画に含まれる第一指令の一部を他の指令に置き換えることにより、複数回の第二指令からなる第二制御計画を生成し、(B)第二制御計画における複数回の第二指令に従って複数機器を制御した場合の状態遷移をシミュレーションし、(C)シミュレーション結果に基づき、第二制御計画による状態遷移が第一制御計画による状態遷移よりも、所定の目標により近いかを判定し、(D)所定の目標により近い場合に第二制御計画で第一制御計画を更新する処理を繰り返しコンピュータが実行し、(b1)シミュレーションにおいて、第二制御計画に第二指令の継続を意味する継続指令が含まれている場合には、当該継続指令より一回前の第二指令による制御と同じ制御を行うことによる状態遷移を求める。
このようにすれば、指令値の置き換えによる効果が長い期間に及びやすくなるので、状態の遷移に変化を与え易くなる。その結果、最適化が促進されることが期待できる。
また、機器は、蓄電装置を備え、外部から供給される電源又は蓄電装置から、使用する電源を選択し、指令は、機器が使用する電源の種類の選択肢及び蓄電装置に対する充電の要否を含むようにしてもよい。また、所定の目標は、機器の消費電力に関する目標であってもよい。このようにすれば、機器が備えた蓄電装置を活用して、消費電力を抑制する計画を、効率よく生成できるようになる。
また、消費電力に関する目標は、消費電力のピークの最小化であってもよい。消費電力の推移に基づいて制御計画を生成するので、一時的な過剰な電力使用を未然に抑制することができる。
また、機器は、蓄電装置を備え、外部から供給される電源又は蓄電装置から、使用する電源を選択し、指令は、機器が使用する電源の種類の選択肢及び蓄電装置に対する充電の要否を含むようにしてもよい。また、所定の目標は、蓄電装置の充電に関する目標であってもよい。このようにすれば、蓄電装置の劣化を抑制し、更に蓄電装置に対する本来の使用要求についても支障が生じないようにすることができる。
また、機器が現在使用している電源の種類が不明の場合には、(b2)シミュレーションにおいて、当該機器は外部から供給される電源を現在使用していると仮定し、更に機器は蓄電装置を現在充電していると仮定して、当該機器の消費電力を算出するようにしてもよい。このように機器が現在使用している電源の種類が不明のときでも、AC電源を最大限に利用していると想定すれば、消費電力に関して最悪の状況を前提とした制御計画の生成を行うことができる。
また、機器が現在使用している電源の種類が不明の場合には、(b3)シミュレーションにおいて、当該機器は蓄電装置を電源として現在使用していると仮定して、当該蓄電装置の充電率を算出するようにしてもよい。このように機器が現在使用している電源の種類が不明のときでも、放電により充電率が低下していることを想定すれば、蓄電に関して最悪の状況を前提とした制御計画生成を行うことができる。
また、機器が使用する電源を現在選択できない場合には、(b4)シミュレーションにおいて、当該機器は外部から供給される電源を現在使用していると仮定して、当該機器の消費電力を算出するようにしてもよい。このように機器が使用する電源を現在選択できないときでも、すぐに外部電源の使用が再開されることを想定することにより、消費電力に関して最悪の状況を前提とした制御計画生成を行うことができる。
また、蓄電装置の充電状態が所定の制限を満たさないと想定される場合に、(b5)シミュレーションは、当該蓄電装置を備える機器に対する当該充電状態における第二指令を、外部から供給される電源の選択肢に変更して行われるようにしてもよい。このようにすれば、蓄電装置の過剰使用に至る不適切な指令や実現不可能な指令を回避し、保全や実用性の観点から有効な制御計画を生成することができる。
なお、本実施の形態に係る制御計画生成方法は、上で述べたシミュレーションの前に、蓄電装置の充電と放電とのうち少なくともいずれかの実際の特性値に基づき、蓄電装置の充電と放電とのうち少なくともいずれかのモデルを補正する処理をさらに含むようにしてもよい。このようにすれば、シミュレーションと実際との誤差を少なくすることで、ピーク電力などについても見積もりから大幅に乖離した結果となることを回避できるようになる。
また、本実施の形態に係る制御計画生成方法は、所定の目標により近い場合及び所定の目標により近くはないが当該所定の目標に最も近い第二制御計画の近傍にある場合には、所定の目標により近い第二制御計画及び所定の目標に最も近い第二制御計画の近傍の第二制御計画を保持しておき、シミュレーションが終了した後に、保持されている第二制御計画のうち、蓄電装置の性能劣化を表す指標のばらつきが最も小さくなるような第二制御計画を選択する処理をさらに含むようにしても良い。このようにすれば、一部の蓄電装置が飛び抜けて劣化することを防止することができるようになる。
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数機器に対して間隔をおいて繰り返される複数回の制御指令を定めた第一制御計画に含まれる第一指令の一部を他の指令に置き換えることにより、複数回の第二指令からなる第二制御計画を生成し、
前記第二制御計画における前記複数回の第二指令に従って前記複数機器を制御した場合の状態遷移をシミュレーションし、
シミュレーション結果に基づき、前記第二制御計画による状態遷移が前記第一制御計画による状態遷移よりも、所定の目標により近いかを判定し、
前記所定の目標により近い場合に前記第二制御計画で前記第一制御計画を更新する
処理を繰り返しコンピュータが実行し、
前記シミュレーションにおいて、前記第二制御計画に第二指令の継続を意味する継続指令が含まれている場合には、当該継続指令より一回前の第二指令による制御と同じ制御を行うことによる状態遷移を求める
制御計画生成方法。
(付記2)
前記機器は、蓄電装置を備え、外部から供給される電源又は前記蓄電装置から、使用する電源を選択することができ、
前記指令は、前記機器が使用する電源の種類の選択肢及び前記蓄電装置に対する充電の要否を含み、
前記所定の目標は、前記機器の消費電力に関する目標である
付記1記載の制御計画生成方法。
(付記3)
前記機器の消費電力に関する目標は、当該消費電力のピークの最小化である
付記2記載の制御計画生成方法。
(付記4)
前記機器は、蓄電装置を備え、外部から供給される電源又は前記蓄電装置から、使用する電源を選択することができ、
前記指令は、前記機器が使用する電源の種類の選択肢及び前記蓄電装置に対する充電の要否を含み、
前記所定の目標は、前記蓄電装置の充電に関する目標である
付記1記載の制御計画生成方法。
(付記5)
前記機器が現在使用している電源の種類が不明の場合には、前記シミュレーションにおいて、当該機器は前記外部から供給される電源を現在使用していると仮定し、更に当該機器は前記蓄電装置を現在充電していると仮定して、当該機器の消費電力を算出する
付記2記載の制御計画生成方法。
(付記6)
前記機器が現在使用している電源の種類が不明の場合には、前記シミュレーションにおいて、当該機器は前記蓄電装置を電源として現在使用していると仮定して、当該蓄電装置の充電率又は充電量を算出する
付記4記載の制御計画生成方法。
(付記7)
前記機器が使用する電源を現在選択できない場合には、前記シミュレーションにおいて、当該機器は前記外部から供給される電源を現在使用していると仮定して、当該機器の消費電力を算出する
付記2記載の制御計画生成方法。
(付記8)
前記蓄電装置の充電状態が所定の制限を満たさないと想定される場合に、前記シミュレーションは、当該蓄電装置を備える機器に対する当該充電状態における前記第二指令を、前記外部から供給される電源の選択肢に変更して行われる
付記2記載の制御計画生成方法。
(付記9)
複数機器に対して間隔をおいて繰り返される複数回の制御指令を定めた第一制御計画に含まれる第一指令の一部を他の指令に置き換えることにより、複数回の第二指令からなる第二制御計画を生成する置換部と、
前記第二制御計画における前記複数回の第二指令に従って前記複数機器を制御した場合の状態遷移をシミュレーションするシミュレーション部と、
シミュレーション結果に基づき、前記第二制御計画による状態遷移が前記第一制御計画による状態遷移よりも、所定の目標により近いかを判定する判定部と、
前記所定の目標により近い場合に前記第二制御計画で前記第一制御計画を更新する更新部と、
を有し、
前記シミュレーション部は、前記第二制御計画に第二指令の継続を意味する継続指令が含まれている場合には、当該継続指令より一回前の第二指令による制御と同じ制御を行うことによる状態遷移を求める
制御計画生成装置。
(付記10)
複数機器に対して間隔をおいて繰り返される複数回の制御指令を定めた第一制御計画に含まれる第一指令の一部を他の指令に置き換えることにより、複数回の第二指令からなる第二制御計画を生成し、
前記第二制御計画における前記複数回の第二指令に従って前記複数機器を制御した場合の状態遷移をシミュレーションし、
シミュレーション結果に基づき、前記第二制御計画による状態遷移が前記第一制御計画による状態遷移よりも、所定の目標により近いかを判定し、
前記所定の目標により近い場合に前記第二制御計画で前記第一制御計画を更新する
処理を、繰り返しコンピュータに実行させ
前記シミュレーションにおいて、前記第二制御計画に第二指令の継続を意味する継続指令が含まれている場合には、当該継続指令より一回前の第二指令による制御と同じ制御を行うことによる状態遷移を求める
処理を、前記コンピュータに実行させるためのプログラム。
(付記11)
前記シミュレーションの前に、
前記蓄電装置の充電と放電とのうち少なくともいずれかの実際の特性値に基づき、前記蓄電装置の充電と放電とのうち少なくともいずれかのモデルを補正する処理
をさらに含む付記2記載の制御計画生成方法。
(付記12)
前記所定の目標により近い場合及び前記所定の目標により近くはないが当該所定の目標に最も近い第二制御計画の近傍にある場合には、前記所定の目標により近い第二制御計画及び前記所定の目標に最も近い第二制御計画の近傍の第二制御計画を保持しておき、
前記シミュレーションが終了した後に、保持されている前記第二制御計画のうち、前記蓄電装置の性能劣化を表す指標のばらつきが最も小さくなるような第二制御計画を選択する
処理をさらに含む付記2記載の制御計画生成方法。