以下、図面を参照しながら、本発明の実施形態について説明する。また、図面において同一の構成要素は、同じ番号を付し、説明は、適宜省略する。
(第1の実施形態)
図1は、第1の実施形態に係る運転計画システムの構成例を示す図である。図1の運転計画システムは、計画ユニット1a、1b、1c、1dと、運転ユニット2a、2b、2c、2dと、管理サーバ3とを備えている。計画ユニット1a、1b、1c、1dと管理サーバ3は、ネットワーク4を介して互いに有線または無線で接続されている。
各運転ユニットは少なくとも1台の計画ユニットと組み合わされている。図1の例では、計画ユニット1aと運転ユニット2aがペアになっている。同様に、計画ユニット1bは運転ユニット2bと、計画ユニット1cは運転ユニット2cと、計画ユニット1dは運転ユニット2dと、それぞれペアになっている。図1のシステムでは、各運転ユニットは1台の計画ユニットとペアになっているが、冗長性を持たせるために2台以上の計画ユニットを1つの運転ユニットと組み合わせてもよい。また、図1のシステムでは、計画ユニットと運転ユニットのペアが4組示されているが、これは一例にしか過ぎない。運転計画システムが有する計画ユニットと運転ユニットのペアの数は、これとは異なっていてもよい。
計画ユニット1a〜1dは、他の計画ユニットとともに各運転ユニットの運転計画を作成する(以降、運転計画生成処理とよぶ)、運転計画装置である。運転計画は、対象となる期間(計画期間という)において稼働する運転ユニットの組み合わせと、各運転ユニットの出力設定値に関する情報を含む。例えば、計画ユニット1aは、運転計画の生成後、ペアとなっている運転ユニット2aを運転計画に基づいて稼働させる。計画ユニット1a〜1dによる運転計画生成処理はペアとなっている運転ユニットの停止時に行われてもよいし、ペアとなっている運転ユニットが稼働しているときに行われてもよい。すなわち、運転計画生成処理が実行されるタイミングについては特に問わない。
計画ユニット1a〜1dは、1以上のCPU(中央処理装置)、記憶装置、通信部を備え、OS(オペレーティングシステム)とアプリケーションが動作する計算機などの情報処理装置である。計画ユニット1a〜1dの詳細な機能と構成については後述する。
上述のように、本実施形態の運転計画システムでは、複数の計画ユニットの間で運転計画生成処理が分散して実行されるため、負荷が特定の構成要素に偏らなくなり、計算資源を有効に活用することができる。また、複数の計画ユニットは他の計画ユニットが生成した運転ユニット組み合わせの情報を取得し、他の計画ユニットによって生成された運転ユニットの組み合わせの情報に基づいて異なる運転計画を生成する。各計画ユニットは他の計画ユニットの実行した運転計画生成処理の結果を活用し、一層低コストで好ましい特性(例えば、経済性、環境性、出力の安定性など)を有する運転計画を探索することができる。
ネットワーク4は、各計画ユニット間ならびに各計画ユニットと管理サーバ3の間で、データの送受信をする手段を提供する。ネットワーク4は、通信媒体としては例えば、光ファイバ、LANケーブル、電話回線、同軸ケーブル、無線などを用いることができる。通信規格としては、イーサネットなどを用いることができるが、どの方式を使ってもよい。
管理サーバ3は、各計画ユニットで共有される情報を管理し、1以上のCPU(中央処理装置)、記憶装置、通信部を備え、OS(オペレーティングシステム)とアプリケーションが動作する計算機などの情報処理システムである。各計画ユニットは、管理サーバ3が保持している情報をもとに運転計画を作成する。管理サーバ3の構成や配置については特に問わない。管理サーバ3は計画ユニットから物理的に独立していてもよいし、いずれかの計画ユニットと共通のハードウェアに実装されるものであってもよい。
管理サーバ3は物理的な計算機であってもよいし、仮想計算機(Virtual Machine:VM)、コンテナ(container)またはこれらの組み合わせにより実現されるものであってもよい。1つ以上の物理計算機、仮想計算機、コンテナに管理サーバ3の機能を分担させてもよい。可用性の向上と負荷分散のために管理サーバ3の台数を増やした構成を用いることも排除されない。管理サーバの詳細な機能および構成についても後述する。
運転ユニット2a〜2dは、ペアとなった計画ユニットによって制御され、運転計画に基づいて稼働される装置または装置が組み合わされたシステムである。運転ユニット2a〜2dの例としては、電力系統に含まれる発電機が挙げられる。発電機の方式の例としては、火力、原子力、水力、揚水、太陽光、風力、地熱などがあるが、その他の方式のものであってもよい。火力発電や原子力発電の場合、使われる燃料の種類については特に問わない。また、運転ユニット2a〜2dは同じ方式の発電機ではなく、複数の方式の発電機の組み合わせであってもよい。また、異なる規模、特性、経過年数に係る発電機が混在してもよい。
なお、以降では運転計画システムを使って、電力系統の発電計画を生成する場合を例に説明するため、運転ユニット2a〜2dは電力系統に含まれる発電機であるものとする。しかし、運転計画システムが計画の作成対象とするシステムは電力系統に限られない。したがって、運転ユニット2a〜2dはその他の装置または装置が組み合わされたシステムであってもよい。例えば、運転計画システムを使って、生産設備を使った生産計画を生成する場合、運転ユニット2a〜2dは生産ライン、製造装置、プラント、工場などであってもよい。運転計画システムによって群ロボットの運転計画を生成する場合、運転ユニット2a〜2dはロボットとなる。運転計画システムによって空調設備の運転計画を生成する場合、運転ユニット2a〜2dは空調機器となる。
図2は、第1の実施形態に係る運転計画システムの構成要素を示すブロック図である。以下では図2を参照しながら、本実施形態に係る運転計画システムの構成要素を説明する。
図2において、計画ユニット1a(計画ユニット#1)と運転ユニット2a(運転ユニット#1)はペアになっている。さらに計画ユニット1b(計画ユニット#2)と運転ユニット2b(運転ユニット#2)もペアになっている。図2に示されていないが、運転計画システムは計画ユニット#3と運転ユニット#3のペアなど、さらに多くの計画ユニットと運転ユニットのペアを含んでいてもよい。
最初に、管理サーバ3の構成要素について述べる。管理サーバ3は、通信部18と、記憶部19と、処理部23とを備えている。記憶部19には、要求データベース(要求DB)20と、ユニットデータベース(ユニットDB)21と、運転計画データベース(運転計画DB)22が保存されている。また、処理部23は、内部の構成要素として要求変更部24と、ユニット情報収集部25とを備えている。
通信部18は、ネットワーク4を介して、各計画ユニットとの間でデータを送受信する機能を提供する。通信部18の例としては、NIC(Network Interface Card)、無線通信モジュールなどの通信デバイスが挙げられるが、通信デバイスの種類については特に問わない。
記憶部19は、運転計画に関連するデータや管理サーバ3で動作するプログラムのデータを保存する記憶領域を提供する。記憶部19は、例えばSRAM、DRAMなどの揮発性メモリであってもよいし、NAND、MRAM、FRAMなどの不揮発性メモリでもよい。またハードディスク、SSDなどのストレージ装置や、外部の記憶装置であってもよく、デバイスの種類については特に限定しない。また、記憶部19は複数の種類のメモリデバイスやストレージデバイスの組み合わせであってもよい。
また、記憶部19の少なくとも一部の記憶領域は、複数の計画ユニットからアクセス可能に設定されている。例えば、運転計画データベース(運転計画DB)22は複数の計画ユニットからアクセス可能に設定された記憶領域に保存されている。複数の計画ユニットからアクセス可能に設定された記憶領域へのアクセス(データの読み込みまたはデータの書き込み)はAPIを介して行われてもよいし、その他の他の方法によって行われてもよい。
処理部23は、各種の演算および制御を含む情報処理を実行し、管理サーバの機能を実現する。処理部23は、例えばCPUなどのプロセッサ、ASIC、CPLDなどのハードウェア回路、OS(Operating System)やアプリケーションなどのプログラムまたはこれらの組み合わせによって実装される。
要求データベース20は、運転計画システムが計画の作成対象とするシステムにおいて、時系列で求められている合計出力の値を格納する。図3は、要求データベース20に保存されたデータの例を示している。図3の例では、複数の計画期間#1〜#24において要求される合計出力の値が示されている。計画期間とは、システムがある要求出力を供給すべき期間のことをいう。運転計画システムは少なくともひとつの計画期間について運転計画を生成するものとする。運転計画に含まれる計画期間の数については特に問わない。また、各計画期間は一定の長さに設定されていてもよいし、異なる長さに設定されていてもよい。
運転計画システムが電力系統に適用される場合、各時刻における電力需要の値に基づき、各計画期間で要求される電力量(合計出力の値)を設定することができる。運転計画の生成において供給予備力を考慮する場合、要求データベース20へ電力需要に例えば1.03、1.05、1.08など1より大きい係数を乗じた値を格納してもよい。図3の例の場合、計画期間#1で901MWの合計出力が要求されている。同様に、計画期間#2、計画期間#3、計画期間#4でそれぞれ963MW、1063MW、1209MWの合計出力が要求されている。
図3の例の場合、運転計画システムは、要求データベース20の各計画期間において要求された合計出力が満たされるように、複数の計画期間を含む運転計画を作成する。なお、要求データベース20に運転計画の生成が必要な計画期間を識別するフラグや、運転計画の生成方法を指定する情報などを保存してもよい。
ユニットデータベース21は、運転計画システムが計画の作成対象とするシステムに含まれる運転ユニットと計画ユニットに係る情報を格納する。運転ユニットと計画ユニットに係る情報の例としては、各運転ユニットの登録状態、各計画ユニットの登録状態、各運転ユニットの最小定格出力や最大定格出力などの仕様、各運転ユニットの故障状態、各計画ユニットの故障状態、各運転ユニットの制約条件、各運転ユニットの運転コスト関数、各運転ユニットの優先度、各計画ユニットの優先度、優先度関数などが挙げられる。また、ユニットデータベース21に、各計画ユニットが運転ユニットの組み合わせの生成処理で適用する手法に関する情報を保存してもよい。
図4は、ユニットデータベース21に保存されるデータの例を示している。図4のテーブルには運転ユニットに係る情報が保存されている。図4のテーブルの第1列は、運転ユニットの識別子であるUNIT_IDを格納している。図4の例ではUNIT_ID=A〜Jとなっており、テーブルのそれぞれの行が1台の運転ユニットに対応している。図4のテーブルには、各運転ユニットの最小定格出力Pminおよび最大定格出力Pmax、コスト関数の係数a〜c、コールドスタートアップコストBS、ホットスタートアップコストTS、ランプアップレートRU、ランプダウンレートRD、最小稼働時間Ton、最小停止時間Toffのフィールドが含まれている。他に、ユニットデータベース21には使用するコスト関数に関する情報が格納されていてもよい。
コスト関数C(Pi)は、運転ユニットiの出力Piをパラメータとする関数であり、以下の式(1)のように表される。
ここで、ai、bi、ciは運転ユニットiにおけるコスト関数の係数である。式(1)はコスト関数の一例にしか過ぎず、これとは異なる関数を使ってコストを算出してもよい。
ユニットデータベース21には、運転ユニットの制約条件を規定する情報が格納されている。例えば、最小定格出力Pi,minと最大定格出力Pi,maxは運転ユニットiの出力設定の下限値と上限値を規定する。すなわち、運転計画において運転ユニットiの出力設定の値は[Pi,min,Pi,max]の範囲内の値に設定される必要がある。
ランプアップレートRUiとランプダウンレートRDiは一回の操作で許容される運転ユニットiの出力の変化量の上限を規定する。ランプアップレートRUiは一回の操作による運転ユニットiの出力の増加量の最大値を示している。ランプダウンレートRDiは一回の操作による運転ユニットiの出力の減少量の最大値を示している。システムが電力系統である場合、ランプアップレートRUiとランプダウンレートRDiは発電力変化率に相当する。
最小稼働時間Ton,iと最小停止時間Toff,iは運転ユニットが稼働できるタイミングと停止できるタイミングを規定する。運転ユニットiを停止させる場合、停止前の連続稼働時間は最小稼働時間Ton,i以上でなくてはならない。運転ユニットiを稼働させる場合、稼働前の連続停止時間は最小停止時間Toff,i以上でなくてはならない。上述のように、最小定格出力、最大定格出力、ランプアップレート、ランプダウンレート、最小稼働時間、最小停止時間は運転計画に対する制約条件となる。
コールドスタートアップコストBSiとホットスタートアップコストTSiは運転ユニットiを立ち上げるのに必要なコストである。コストの計算においていずれのスタートアップコストが使われるかは、条件による。すなわち、運転ユニットiの連続停止時間がしきい値より短い場合、ホットスタートアップコストTSを使う。運転ユニットの連続停止時間がしきい値以上である場合、コールドスタートアップコストBSを使う。一般にホットスタートアップコストTSよりコールドスタートアップコストBSの方が大きな値をとる。なお、図4の例には示されていないが、運転ユニットを停止させるのに要するコストであるシャットダウンコストを使ってコストの計算を行ってもよい。
図4のテーブルは一例にしか過ぎない。したがって、ユニットデータベース21に上述のすべてのフィールドを有していなくてもよいし、ユニットデータベース21に異なるフィールドが含まれていてもよい。また、図4のテーブルにはUNIT_ID=A〜Jの10台の運転ユニットに係る情報が示されているが、システム(例えば、電力系統)に含まれる運転ユニットの台数はこれとは異なっていてもよい。例えば、運転計画システムが大規模な電力系統に適用された場合、運転ユニットの台数は数百台〜数千台またはそれ以上に達する場合がある。
運転計画データベース22には、対象となるシステム(例えば、電力系統)の運転計画情報が格納される。運転計画データベース22には、生成中の運転計画に係る運転計画情報と、生成が完了した運転計画に係る運転計画情報の双方が保存されるものとする。ここで、運転計画に関連する各種のデータをまとめて運転計画情報とよぶことにする。運転計画情報の例としては、運転計画で稼働対象とする運転ユニットの組み合わせ、それぞれの計画期間において稼働する運転ユニットの組み合わせ、各運転ユニットの出力設定値、生成中の運転計画のコスト、生成中の運転計画の適用可否、生成中の運転計画のスコアなどが挙げられる。
運転計画データベース22に格納される運転計画情報は各計画ユニットによって更新されるものとする。計画ユニットは運転計画データベース22に保存されている運転計画情報の一部またはすべての読み出しと書き換えを行うことができる。複数の計画ユニットから運転計画データベース22へのアクセスが行われる場合があるため、セマフォやロックなどによる排他制御を行ってもよい。
次に、図を参照しながら運転計画情報に含まれるデータの例を示す。図5は、運転計画生成処理の概要を示している。最初に運転計画システムは、運転計画で稼働対象となる運転ユニットの組み合わせを生成する(図5上段)。図5のテーブル35は運転計画で稼働対象となる運転ユニットの組み合わせの例を示している。テーブル35の第1行目には、運転ユニットのUNIT_IDが示されている。テーブル35の第2行目には、各運転ユニットが稼働対象として選択されているか否かが示されている。テーブル35では“0”となっている運転ユニットは稼働対象ではない運転ユニットであり、“1”となっている運転ユニットは稼働対象となる運転ユニットである。
テーブル35を参照すると、UNIT_ID=B、C、D、E、G、H、Iの運転ユニットが運転計画で稼働対象となる運転ユニットとして選択されていることがわかる。図5の例では、図4に示されたUNIT_ID=A〜Jの10台の運転ユニットのうち、7台の運転ユニットが稼働する運転ユニットとして選択されていることがわかる。
次に、運転計画システムはそれぞれの計画期間において稼働する運転ユニットを決める(図5中段)。図5のテーブル45は、各計画期間で稼働する運転ユニットの例を示している。テーブル45の第1列目は各運転ユニットのUNIT_ID(B、C、D、E、G、H、I)を示している。また、テーブル45の第1行目は運転計画の計画期間(#1、#2、#3、・・・、#24)を示している。テーブル45の第1行目および第1列目を除く各フィールドは、各運転ユニットが各計画期間で稼働対象として選択されているか否かを示している。テーブル45では、“1”となっている運転ユニットが該当する計画期間で稼働する運転ユニットであり、“0”となっている運転ユニットが該当する計画期間で稼働しない運転ユニットである。
テーブル45を参照すると、計画期間#1〜#3では、UNIT_ID=B、E、Dの運転ユニットが稼働する運転ユニットとして選択されていることがわかる。また、計画期間#1〜#24で稼働する運転ユニットは、テーブル35に示されたUNIT_ID=B、C、D、E、G、H、Iの運転ユニットの組み合わせの一部またはすべての運転ユニットとなっていることがわかる。運転計画システムが電力系統に適用されている場合、テーブル45は発電機の起動停止パターン(起動停止計画から負荷配分を除いた情報)に相当する。
そして、運転計画システムは各計画期間で稼働する運転ユニットの出力設定値を決める(図5下段)。図5のテーブル50は、各計画期間で稼働する運転ユニットの出力設定値の例を示している。テーブル45と同様、テーブル50の第1列目は各運転ユニットのUNIT_ID(B、C、D、E、G、H、I)を示している。また、テーブル50の第1行目は運転計画の計画期間(#1、#2、#3、・・・、#24)を示している。テーブル50の第1行目および第1列目を除く各フィールドには、各運転ユニットの該当する計画期間における出力設定値が格納されている。
テーブル50を参照すると、計画期間#1ではUNIT_ID=Bの運転ユニットの出力設定値が212MW、UNIT_ID=Eの運転ユニットの出力設定値が220MW、UNIT_ID=Dの運転ユニットの出力設定値が469MWとなっていることがわかる。計画期間#1における運転ユニットの出力設定値の和は901MWとなっており、図3に示した計画期間#1に要求される合計出力の値と等しくなっている。計画期間#2における運転ユニットの出力設定値の和は963MWとなっており、図3に示した計画期間#2に要求される合計出力の値と等しくなっている。
図3を参照すると、計画期間#4において要求されている合計出力は1209MWである。ところが、図4に示されたUNIT_ID=B、E、Dの運転ユニットの最大定格出力を確認すると、合計が1120MWであり、要求に対して不足してしまう。このため、テーブル50の計画期間#4ではさらにUNIT_ID=Cの運転ユニットが立ち上げられる。UNIT_ID=B、E、D、Cの運転ユニットの出力設定値は、263MW、276MW、520MW、150MWとなっており、和が計画期間#4において要求されている合計出力1209MWに等しくなっている。
図3を参照すると、計画期間#9、#10において要求されている合計出力は1532MWとなっており、全計画期間を通して最大値となっている。このため、図5のテーブル50をみると、計画期間#9、#10ではUNIT_ID=B、C、D、E、G、H、Iのすべての運転ユニットが稼働対象となっている。計画期間#9、#10では運転ユニットの出力設定値の和が1532MWとなっており、計画期間#9、#10で要求されている合計出力に等しくなっている。運転計画システムが電力系統に適用されている場合、テーブル50は電力系統の発電計画(負荷配分計画)に相当する。
図5に示した内容は運転計画生成処理の一部にしか過ぎない。運転計画システムの実際の処理では、計画期間における運転ユニットの起動停止パターンを複数生成し、各起動停止パターンについて運転ユニットの出力設定値を決定する。そして、要求された合計出力(例えば、需要)と制約条件を満たし、コストが最も低い計画を実際の運転計画として採用する。したがって、運転計画生成処理の実行中に保存される運転ユニットの組み合わせ、運転ユニットの起動停止パターンや運転ユニットの出力設定に関するデータは運転計画の候補であるといえる。運転計画生成処理は複数の計画ユニットの間で分散して実行されるため、負荷の分散し、各計画ユニットが有する計算資源を有効に活用することができる。運転計画生成処理の詳細については後述する。
以降では再び図2を参照しながら、運転計画システムの構成要素を説明する。次に説明する要求変更部24とユニット情報収集部25はいずれも管理サーバ3にある処理部23の内部の構成要素である。
要求変更部24は、システム(例えば、電力系統)に要求される合計出力が変化した場合、要求データベース20を更新する。また、要求される合計出力が変化した旨を計画ユニットに通知する。この通知によって計画ユニットは要求される合計出力の変更がある計画期間について、運転計画を修正することができる。通知は全計画ユニットへのブロードキャストであってもよいし、一部の計画ユニットへの通知であってもよい。運転計画の修正は、既存の運転計画で稼働する運転ユニットの出力設定値の調整であってもよいし、計画期間で稼働する運転ユニットの変更であってもよいし、これらの組み合わせであってもよい。また、必要に応じて運転計画を再生成してもよい。
電力系統の場合、例えば気温の急激な変化に伴って冷暖房の使用率が上昇し、電力需要が大きくなった場合や、実際の電力使用量が予測値と乖離し始めたときに、システムに要求する合計出力の値を変更する。
ユニット情報収集部25は、システムの構成変更や状態変化を検出し、ユニットデータベース21を更新する。システムの構成変更の例としては、運転ユニットの追加、運転ユニットの変更、運転ユニットの削除、計画ユニットの追加、計画ユニットの変更、計画ユニットの削除などが挙げられる。システムの状態変化の例としては、運転ユニットの故障、計画ユニットの故障、運転ユニットの保守停止、計画ユニットの保守停止、運転ユニットの構成変更、運転ユニットの整備状況や摩耗に応じた最大定格出力の変更などが挙げられる。
また、ユニット情報収集部25は、システムの構成変更または状態変化を検出したら、その旨を各計画ユニットに通知する。変更後のシステム構成および状態において、要求される合計出力が満たされなくなる場合、この通知を受信した計画ユニットは、要求変更部24によって通知が行われた場合と同様、運転計画の修正処理を開始する。通知先の計画ユニットはすべての計画ユニットであってもよいし、一部の計画ユニットのみであってもよい。
次に、計画ユニット1a、1bの構成要素について説明する。以下で説明する計画ユニットの構成要素は、各計画ユニットが共通して備えるものである。
計画ユニット1a、1bは、処理部11と、通信部15と、記憶部16と、運転制御部17とを備えている。このうち、処理部11は内部の構成要素として計画部12と、制御部13と、検証部14とを備えている。
処理部11は、演算、制御など各種の情報処理を実行し、計画ユニットの機能を実現する。処理部11は、例えばCPUなどのプロセッサ、ASIC、CPLDなどのハードウェア回路、OS(Operating System)やアプリケーションなどのプログラムまたはこれらの組み合わせによって実装される。
通信部15は、ネットワーク4を介して、他の計画ユニットや管理サーバ3との間でデータを送受信する機能を提供する。通信部15の例としては、NIC(Network Interface Card)、無線通信モジュールなどの通信デバイスが挙げられるが、通信デバイスの種類については特に問わない。
記憶部16は、運転計画生成処理に関連するデータ、運転計画のデータや計画ユニットで動作するプログラムのデータなどを保存する記憶領域を提供する。記憶部16は、例えばSRAM、DRAMなどの揮発性メモリであってもよいし、NAND、MRAM、FRAMなどの不揮発性メモリでもよい。またハードディスク、SSDなどのストレージ装置でもよく、デバイスの種類については特に限定しない。
運転制御部17は、記憶部16に保存された運転計画に基づき、当該計画ユニットとペアになっている運転ユニットを制御する。運転制御部17が運転ユニットの制御に用いるインタフェースと通信規格の種類については特に問わない。運転制御部17は、例えば、PCI Express、USB、UART、SPI、SDIO、シリアルポート、イーサネットなどの電気的な信号を送受信して運転ユニットを制御してもよいし、無線通信によって運転ユニットを制御してもよい。
なお、運転ユニットの制御は、必ず計画ユニット(例えば、上述の運転制御部17)が運転ユニットに制御指令を送信する形で実現されていなくてもよい。例えば、計画ユニットは、記憶部16に運転計画のデータを保持し、運転ユニット側が運転計画のデータを定期的にアクセスし、運転ユニットが取得した運転計画のデータに従って稼働してもよい。運転ユニット側から、計画ユニットに運転計画のデータの提供をリクエストし、計画ユニットが当該リクエストに応えて、運転ユニットに運転計画のデータを送信してもよい。運転ユニットがリクエストを計画ユニットへ送信するタイミングについては特に問わない。
ユーザが計画ユニットで生成された運転計画の内容をディスプレイなどで参照し、手動操作で運転ユニットを運転計画に沿って稼働させてもよい。また、取り外し可能な記憶媒体を用いて運転計画のデータを計画ユニットから運転ユニットに移して、運転ユニットの制御プログラムを動かしてもよい。すなわち、運転ユニットを計画ユニットで生成された運転計画にしたがって稼働させることができるのであれば、運転ユニットの制御を実現する方法や、運転ユニットと計画ユニットの間のインタフェースの種類については特に問わない。
次に、処理部11の内部の構成要素について説明する。
計画部12は、運転ユニットの組み合わせの生成処理、当該組み合わせの中から各計画期間において稼働する運転ユニットの選択し、運転ユニットの起動停止パターンを生成する処理、各計画期間における運転ユニットの出力設定値を決定する処理、運転計画の修正処理などを実行する。計画部12による処理によって、運転計画情報のうち、図5に示したデータが生成される。計画部12は生成したデータを記憶部16または管理サーバの運転計画データベース22に保存する。運転計画データベース22に保存された運転ユニットの組み合わせなどのデータは、他の計画ユニットに共有される。計画部12は必要に応じて管理サーバの運転計画データベース22に保存された、共有の運転計画情報を読み出すことができる。
例えば、計画部12は、既に生成された運転ユニットの組み合わせに基づき、運転ユニットの組み合わせを新たに選択する場合、運転計画データベース22に格納された他の計画ユニットによって生成された運転ユニットの組み合わせを利用することができる。例えば、計画部12は遺伝的アルゴリズム(GA:Genetic Algoritm)、強化学習(Reinforcement Learning)、粒子群最適化(PSO:Particle Swarm Optimization)を使うことによって、既存の運転ユニットの組み合わせに基づき新たな運転ユニットの組み合わせを生成することができる。これらの手法は一例であり、計画部12はその他の手法を使って運転ユニットの組み合わせを生成してもよい。
制御部13は、運転計画生成処理における各ステップの処理がどの計画ユニットによって実行されるのかを指定する。また、制御部13は運転計画生成処理の必要可否を判定し、必要があると判定された場合には運転計画生成処理の開始指令を各計画ユニットへ送信する。さらに制御部13は運転計画の修正が必要であるか否かを判定し、必要がある場合には運転計画の修正処理の開始指令を送信する。制御部13は、運転ユニットの組み合わせを生成する計画ユニット(権限のある計画ユニット)を指定したり、運転ユニットの出力設定値の決定処理、コストやスコアの計算処理を実行する計画ユニットを指定したりする。制御部13は、ユニットデータベース21に格納された運転ユニットまたは計画ユニットの優先度に基づき、運転ユニットの組み合わせを生成する計画ユニットや特定の処理を実行する計画ユニットを決定してもよい。
検証部14は、生成されている運転計画の候補が制約条件を満たしているか否かをチェックする。生成されている運転計画の候補が制約条件を満たしている場合、検証部14は当該運転計画の候補の適用可否フラグを“1”に設定する。生成されている運転計画の候補が制約条件を満たしていない場合、検証部14は当該運転計画の候補の適用可否フラグを“0”に設定する。なお、検証部14は生成されている運転計画の候補が制約条件を満たしていない場合、計画部12に運転計画の修正を要求してもよい。運転計画の修正処理では、運転ユニットの出力設定値の調整を行ってもよいし、計画期間で稼働する運転ユニットの変更を行ってもよいし、これらの組み合わせを行ってもよい。
また、検証部14は、生成された運転計画の候補のコストやスコアの計算を行う。検証部14は運転計画の候補に係る適用可否フラグの値、コスト、スコアなどを記憶部16または管理サーバの運転計画データベース22に保存する。検証部14は、ペナルティとして、制約条件を満たしていない運転計画の候補のコストに任意の値を加算してもよい。これによって、運転計画の候補を選択対象から外したり、運転計画の候補が選択される順位を下げることができる。
次に、運転計画生成処理の詳細について説明する。図6は運転ユニットの組み合わせを生成する方法の例を示している。以下では、図6を参照しながら運転ユニットの組み合わせの生成処理について述べる。
運転ユニットの組み合わせは各計画期間において要求されている合計出力(例えば、図3の要求データベース)とユニットデータベースの情報(例えば、図4)に基づいて生成される。当該組み合わせに含める運転ユニットの決定にあたっては、運転にかかるコストが低い運転ユニットを優先して選択することができる。
運転ユニットの選択の基準として、下記の式(2)のような平均運転コスト関数avg(Pi)を用いることができる。
ここで、C(・・・)は式(1)のコスト関数である。Pmax,iは運転ユニットiの最大定格出力である。
式(2)を使うことによって、各運転ユニットの平均運転コストを計算することができる。UNIT_ID=A、B、C、D、E、F、G、H、I、Jに係る運転ユニットの平均発電コストはそれぞれ1.92、2.34、2.20、2.26、2.34、2.05、2.13、2.15、2.13、1.96である。運転にかかるコストが低い運転ユニットを優先して選択する場合、選択の優先順位はA、J、F、G、I、H、C、D、E、Bとなる。
そして、運転ユニットの選択を行う。図3を参照すると、計画期間において要求されている合計出力の最小値Pload,minは878MWであり、計画期間において要求されている合計出力の最大値Pload,maxは1532MWである。各計画期間において要求されている合計出力が満たされるよう、下記の式(3)および(4)の制約のもとで運転ユニットの選択を行う。
ここで、Pi,minは運転ユニットiの最小定格出力であり、Pi,maxは運転ユニットiの最大定格出力である。iにはUNIT_IDなどの各運転ユニットの識別子が入る。
図6のテーブル30には、複数の運転ユニットの組み合わせが示されている。式(2)に基づいて計算した平均運転コストをそのまま適用して運転ユニットを選択すると、行31に示されているように、10台の運転ユニットをすべて選択しないと式(4)の条件を満たせない。そこで、UNIT_ID=Aに係る運転ユニットをスキップして、次の優先順位にあるUNIT_ID=Jに係る運転ユニットから選択すると、行31aに示されているように、9台の運転ユニットを選択すると式(3)および式(4)の条件が満たされる。
さらにUNIT_ID=Jに係る運転ユニットをスキップして、次の優先順位にあるUNIT_ID=Fに係る運転ユニットから選択すると、行31bに示されているように、UNIT_ID=F、G、I、H、C、D、E、Bの8台の運転ユニットのみで式(3)および式(4)の条件を満たすことができる。運転ユニットの台数を減らすと、運転計画を単純化できるため、行31bで選択された組み合わせのもとに使用可能な運転ユニットの組み合わせを探索することにする。
次に、UNIT_ID=F、G、I、H、C、D、E、Bの8台の運転ユニットを使って複数の部分集合を生成する。図6のテーブル32では、優先順位を用いて複数の部分集合を生成している。まず、8台の運転ユニットのうち、最も優先順位が高いUNIT_ID=Fの運転ユニット(第1行目の部分集合)に、次の優先順位のUNIT_ID=Gの運転ユニットを追加している(第2行目の部分集合)。そして、第2行目の部分集合に、次の優先順位のUNIT_ID=Iの運転ユニットを追加している(第3行目の部分集合)。同様の処理を繰り返すことにより、8個の部分集合を生成する。
8台の運転ユニットのすべてを使わないと式(4)の条件が満たされないため、UNIT_ID=F、G、I、H、C、D、E、Bの運転ユニットをすべて含む組み合わせを使用対象として選択する(行33:第8行目の部分集合)。なお、テーブル32の処理で式(3)および式(4)の条件を満たしている部分集合が複数個存在する場合、複数個の組み合わせを使用対象として選択してもよい。
図6下段のテーブル34は、上述の処理の結果、使用対象とされたUNIT_ID=F、G、I、H、C、D、E、Bに係る運転ユニットの組み合わせをビット形式で表現している。対応するビットの値が“1”となっている運転ユニットは使用対象とされた運転ユニットであり、ビットの値が“0”となっている運転ユニットは使用対象とされなかった運転ユニットである。また、テーブル34の下に示された“COMBINATION:510”はテーブル34のビット列を2進数表記から10進数表記に変換したものである。以降の説明では、必要に応じ、選択された運転ユニットの組み合わせを10進数表記で表すものとする。
上述の運転ユニットの組み合わせの生成処理は一例にしか過ぎず、これとは異なる方法を使って運転ユニットの組み合わせを生成してもよい。例えば、ランダムに運転ユニットを選択して運転ユニットの組み合わせを複数個生成し、これらの組み合わせの中で式(3)および式(4)の条件を満たす運転ユニットの組み合わせを抽出してもよい。
次に、図7A、図7Bを参照しながら、各計画期間で稼働する運転ユニットを決定する処理の例について説明する。図7Bの処理は、一定の運転ユニットの組み合わせを使って、運転ユニットの起動停止パターンを決める処理にあたる。
図7Bの例では、図6で生成されたCOMBINATION:510(UNIT_ID=F、G、I、H、C、D、E、B)に係る運転ユニットの組み合わせを使って、各計画期間で稼働する運転ユニットを決定している。
図7Bの処理の最初では、UNIT_ID=F、G、I、H、C、D、E、Bのすべての運転ユニットが計画期間j=1〜24で稼働する設定となっている(図7Aのテーブル46)。図7Bの処理では、それぞれの運転ユニットの制約条件および各計画期間における合計出力の値に基づき、各運転ユニットが停止可能な期間を探索する。
運転ユニットの制約条件の例としては、最小稼働時間Ton,iと最小停止時間Toff,iが挙げられる。それぞれの計画期間jの長さTLjと運転ユニットiの最小稼働時間Ton,iと最小停止時間Toff,iを比較することによって、運転ユニットiが停止可能な計画期間を特定することができる。図7Bの例では、UNIT_ID=Fの運転ユニットが計画期間j=1〜24で停止可能であるため、計画期間j=1〜24のすべての計画期間で停止する設定にする(テーブル41、42)。すべての計画期間で停止する設定となった運転ユニットを、生成した運転ユニットの組み合わせから削除してもよい。
また、UNIT_ID=Gの運転ユニットについては、最小稼働時間、最小停止時間、各計画期間jの長さTLjの関係から計画期間j=1〜6および14〜24で停止可能であるものとする(テーブル43、44)。同様にして、UNIT_ID=I、H、Cの運転ユニットの停止可能な計画期間を特定する(テーブル45)。なお、生成された運転ユニットの組み合わせの中で、最大定格出力が大きいUNIT_ID=D、E、Bの運転ユニットについては、停止可能な計画期間を特定する処理が行われていない(図4参照)。電力系統の場合、UNIT_ID=D、E、Bの運転ユニットはベースロード電源を供給する(長期にわたって継続的に稼働する)発電機に相当するからである。
図7Bの例のように、一部の運転ユニットについては停止可能な計画期間を特定する処理をスキップしてもよいし、すべての運転ユニットについて停止可能な計画期間を特定する処理を実行してもよい。当該処理をスキップする運転ユニットを選択する基準の例としては、スタートアップコストがしきい値より大きい場合、シャットダウンコストがしきい値より大きい場合、平均運転コスト関数の値がしきい値より小さい場合、最大定格出力がしきい値より大きい場合、最大定格出力と最小定格出力の差がしきい値より大きい場合などが挙げられるが、どのような基準を用いてもよい。
運転ユニットの組み合わせに含まれる運転ユニットについて、停止可能な計画期間を特定したら、それぞれの計画期間jについて下記の式(5)が満たされているか否かをチェックする。
ここで、Σi(j)とは、計画期間jにおいて稼働する運転ユニットiについて、最小定格出力または最大定格出力の和をとることを意味している。
式(5)は、計画期間jにおいて稼働する運転ユニットの最小定格出力の和が、計画期間jにおいて要求されている合計出力の値以下であり、なおかつ計画期間jにおいて稼働する運転ユニットの最大定格出力の和が計画期間jにおいて要求されている合計出力の値以上であるという条件を示している。式(5)によって、計画期間jにおいて稼働する設定となった運転ユニットで、要求されている合計出力の値が満たされるのか確認することができる。
いずれかの計画期間が式(5)の条件を満たしていない場合、該当する計画期間において稼働する(停止する)運転ユニットの設定(選択)を変更する。設定に変更を行った運転ユニットについては、最小稼働時間や最小停止時間などの制約条件が満たされているのかを確認する。制約条件が満たされている場合、当該変更を運転ユニットの起動停止パターンへ正式に反映する。制約条件が満たされていない場合、該当する計画期間において、異なる運転ユニットの稼働(停止)設定の変更を行う。
上述のような処理を実行することによって、運転ユニットの組み合わせを使った運転ユニットの起動停止パターンを生成することができる(例えば、テーブル45)。運転計画システムは複数の運転ユニットの組み合わせを生成した場合、それぞれの運転ユニットの組み合わせを使って、運転ユニットの起動停止パターンを生成することができる。
図6に示した運転ユニットの組み合わせを生成する処理と、図7Bに示した運転ユニットの起動停止パターンを生成する処理は、1台の計画ユニットによって実行されてもよいし、複数台の計画ユニットによって実行されてもよい。
次に、運転計画生成処理の全体のフローについて説明する。図8は、第1の実施形態に係る運転計画生成処理の例を示している。図8に示された処理のフローでは、複数の計画ユニットが並列的に動作し、運転計画を生成する。
まず、いずれかの計画ユニットの制御部13は運転計画の生成が必要である場合、運転計画生成処理の開始指令を各計画ユニットへ送信する。当該指令を受信した各計画ユニットは、図8のステップS10の処理を実行する。ステップS10において、各計画ユニットは、コストベースの優先順位に基づき、運転ユニットの組み合わせをN個生成する。さらに、ランダムに運転ユニットを選択することによって、運転ユニットの組み合わせをM個生成する。これにより、各計画ユニットは、運転ユニットの組み合わせをM+N個生成する。ここで、NおよびMの値については特に限定しない。
図8のテーブル60はステップS10で生成された運転ユニットの組み合わせの例を示している。10進数表記のCOMBINATION:859を2進数表記に変換すると、“1101011011”のビット列が得られる。このビット列はUNIT_ID=A、B、D、F、G、I、Jの運転ユニットの組み合わせを示している。また、10進数表記のCOMBINATION:95を2進数表記に変換すると、“0001011111”のビット列が得られる。このビット列はUNIT_ID=D、F、G、H、I、Jの運転ユニットの組み合わせを示している。
次に、各計画ユニットの計画部12は、各組み合わせを使って、起動停止パターンを生成する。生成した起動停止パターンについて出力設定値を決め、当該条件でシステムが運転された場合におけるコストを計算する(ステップS11)。ここで検証部14は併せて計画が制約条件を満たしているか否かを確認し、適用可否フラグの値を設定する。そして、各計画ユニットは生成した運転ユニットの組み合わせ、起動停止パターン、運転ユニットの出力設定値、コスト、適用可否フラグの値を管理サーバ3の運転計画データベース22に保存する(ステップS12)。これによって、各計画ユニットは他の計画ユニットが生成した運転ユニットの組み合わせ、起動停止パターン、運転ユニットの出力設定値、コスト、制約条件の充足(適用可否)に関する情報を取得することができるようになる。なお、運転ユニットの出力設定値を決める方法の詳細について後述する。
図8のテーブル61は、ステップS11で生成された運転計画の候補の例を示している。COMBINATION:859の場合、コストの値が89となり、制約条件を満たす運転計画の候補が生成されている。COMBINATION:95の場合、コストの値が234となり、制約条件を満たす運転計画の候補が生成されている。COMBINATION:34の場合、制約条件を満たす運転計画の候補を生成できなかったため、ペナルティが課され、コストが9171という大きな値に設定されている。
そして、各計画ユニットは運転計画生成処理を終了できるか否かを判定する(ステップS13)。運転計画生成処理を終了する条件として、制約条件を満たしている運転計画の候補の有無、制約条件を満たしている運転計画の候補の数が一定値に達したか否か、処理の繰り返し回数などを使うことができるが、どのような条件を適用してもよい。ステップS13で運転計画生成処理が終了した場合、運転計画データベース22に保存された制約条件を満たしている(すなわち、適用可否フラグの値が“1”である)運転計画の候補を正式な運転計画に設定して、対象のシステムを運転することができる。
ステップS13で、運転計画生成処理を終了できないと判定した場合、各計画ユニットは運転計画データベース22に保存されている既存の運転ユニットの組み合わせを使い、新しい運転ユニットの組み合わせを生成する(ステップS14)。ステップS14では例えば、100組の運転ユニットの組み合わせをさらに生成することができるが、生成される運転計画の組み合わせの数については特に限定しない。また、ステップS14において各計画ユニットは異なる手法を使って運転計画の組み合わせを生成してもよい。
図8の例において、計画ユニット#1はステップS14で遺伝的アルゴリズム(GA)を使って運転ユニットの異なる組み合わせを生成している。一方、計画ユニット#2はステップS14で強化学習を使って運転ユニットの異なる組み合わせを生成している。また、計画ユニット#3はステップS14で粒子群最適化(PSO)を使って運転ユニットの異なる組み合わせを生成している。これらの手法は例であり、その他の手法を使って運転ユニットの組み合わせをさらに生成してもよい。
各計画ユニットはステップS14で運転ユニットの組み合わせをさらに生成したら、ステップS11の処理に戻り、生成した組み合わせについて出力設定値を決める。そして、当該設定でシステムが運転された場合におけるコストを計算し、生成された運転計画の候補が制約条件を満たしているかを確認する。
なお、ステップS10の処理において、異なる計画ユニットが同一の運転ユニットの組み合わせを生成しないようにしてもよい。例えば、計画ユニットの番号、識別子、ユニットデータベース21に保存された計画ユニットの優先度などの値に基づき、それぞれの計画ユニットが異なる運転ユニットを除外するように設定を行ってもよい。
次に、運転ユニットの出力設定値を決定する方法について述べる。図9は、各運転ユニットの出力設定値を決定する処理の例を示している。図9のフローチャートは図8のステップS11で実行される処理の一部をより詳細に示したものとなっている。以下では図9を参照しながら、処理を説明する。
最初に、各計画ユニットは要求データベース20を参照し、対象の計画期間tについて要求されている出力の合計値R(t)を取得する(ステップS101)。
なお、既に計画期間t−1または計画期間t+1の少なくともいずれかについて運転ユニットの出力設定値が決められている場合には、計画期間t−1または計画期間t+1に係る運転計画情報を運転計画データベース22から取得してもよい。このとき、計画ユニットはユニットデータベース21から各運転ユニットの最大定格出力、各運転ユニットの最小定格出力、各運転ユニットのランプアップレート、各運転ユニットのランプダウンレートなども取得する。これらの情報と、計画期間t−1または計画期間t+1における各運転ユニットの出力設定値および稼働対象となる運転ユニットの組み合わせに基づき、対象の計画期間tで設定可能な出力設定値の合計の上限値Ot,maxと下限値Ot,minを特定することができる。
したがって、既に計画期間t−1または計画期間t+1の少なくともいずれかについて運転ユニットの出力設定値が決められている場合には、対象の計画期間tにおける各運転ユニットの出力設定値の合計は、計画期間tについて要求されている出力の合計値R(t)以上であり、なおかつ[Ot,min、Ot,max]の範囲内の値となるように調整される。
次に、計画期間tで稼働する各運転ユニットの値Pi(t)を初期化する(ステップS102)。ここで、各運転ユニットの出力設定値は[Pi,min、Pi,max]の範囲内の値に初期化される。また、ステップS102では稼働対象となる運転ユニットの出力設定値の合計ΣPi(t)が計画期間tについて要求されている出力の合計値R(t)以上になるようにする。ステップS102で、各運転ユニットの出力設定値を各運転ユニットの最大定格出力Pi,maxに設定してもよいし、ΣPi(t)が上述のOt,maxに等しくなるように各運転ユニットの出力設定値を決めてもよい。
そして、各運転ユニットの出力設定値の合計ΣPi(t)からR(t)を減算し、余剰出力Epを計算する(ステップS103)。以降の処理では、余剰出力Epの値が0になるまで、いずれかの運転ユニットの出力設定値Pi(t)を減らす処理が繰り返し実行される。
次のステップS104では余剰出力Epが0であるか否かを確認する。Ep=0である場合、各運転ユニットの出力設定値を決定する処理は終了する(ステップS104のYES)。Ep>0である場合、運転ユニットのコストCを計算する(ステップS105)。コストCは各運転ユニットの現時点における出力設定値Pi(t)を式(1)のコスト関数に代入することによって求められる。なお、この計算方法は例であり、これとは異なる方法でコストCを計算してもよい。なお、最終的にΣPi(t)をR(t)より大きい値に調整するのであれば、ステップS104における終了条件をEp=r(r>0)に設定してもよい。
そして、出力設定値Pi(t)が最小定格出力Pi,minより大きい運転ユニットのうち、コストCの値が最大の運転ユニットを選択する(ステップS106)。そして、選択した運転ユニットの出力設定値Pi(t)をΔqだけ減らす(ステップS107)。調整量Δqは正の値をとる。調整量Δqの値としては、例えば0.1、0.2、0.5、1.0などの値を用いることができるが、異なる値を使ってもよい。調整量Δqは定数であってもよいし、調整可能なパラメータであってもよい。また、さらに余剰出力EpをΔq減らし、余剰出力Epの値を更新する(ステップS608)。
余剰出力Epの値を更新したら、再びステップS104の判定を実行し、余剰出力Epが0になっているか確認する。余剰出力Epが0より大きい場合、ステップS105以降の処理を再び実行する。
システム(例えば、電力系統)の規模が大きくなると、運転計画の生成や修正の処理において探索対象となる運転ユニットの組み合わせの数や、負荷配分(出力設定)のパターン数が膨大なものになる。例えば、運転ユニットがn台あるシステムの場合、選択可能な運転ユニットの組み合わせの数は合計2のn乗パターンになる。したがって、管理サーバなど特定の計算機で集中的に運転計画の生成や変更の処理を実行させると、運転計画の生成や変更に要する時間が長くなってしまう。また、計算資源の制約から、充分な数の運転ユニットの組み合わせや、負荷配分のパターンを検証することができず、期限内に経済的な運転計画を生成できないおそれすらある。
そこで、本実施形態の運転計画システムでは、運転計画生成処理を複数の計画ユニットの間で分散して実行する。これによって、複数の計画ユニットが有する計算資源を使い、検証可能な運転ユニットの組み合わせの数や、負荷配分(出力設定)のパターン数を増やし、短時間で制約条件を満たした経済的な運転計画を用意することが可能となる。
本実施形態の運転計画システムでは、運転ユニットと計画ユニットのペアを追加すると、システムの出力面だけでなく、計算資源のスケールアウトをはかることもできる。したがって、対象となるシステム(例えば、電力系統)の規模が拡大しても、運転計画の生成や修正処理のために充分な計算資源を確保することができる。
(第2の実施形態)
第1の実施形態に係る運転計画システムでは、複数の計画ユニットが並列的に運転計画生成処理を実行していた。ただし、第1の実施形態とは異なる方法によっても運転計画生成処理に係る負荷を複数の計画ユニットの間で分散させることができる。第2の実施形態においては、特定の計画ユニットが運転ユニットの組み合わせを複数個生成する。その後、各計画ユニットは割り当てられた運転ユニットの組み合わせを使って、起動停止パターンを生成し、出力設定値の決定、コストの計算、制約条件のチェックなどの処理を実行する。
図10は、第2の実施形態に係る運転計画生成処理の例を示したフローチャートである。以下では、図10のフローチャートを参照しながら、処理を説明する。
なお、以下では運転ユニットの組み合わせを生成する権限がある計画ユニットをリーダーの計画ユニットとよぶものとする。いずれかの計画ユニットがリーダーの計画ユニットに設定されるものとする。処理の途中でリーダーの計画ユニットが変更されてもよい。
まず、リーダーに設定された計画ユニットは上述の式(3)および式(4)の条件を満たす運転ユニットの組み合わせを複数個生成する(ステップS111)。リーダーの計画ユニットは、例えばユニットデータベース21に格納された計画ユニットの優先度に基づいて、決められてもよいし、ランダムに選択されてもよく、決め方については特に問わない。
次に、リーダーの計画ユニットは、各計画ユニットがどの運転ユニットの組み合わせについて運転計画の候補を生成するのか、処理の割り当てを決定する(ステップS112)。ここで、運転計画の候補の生成処理とは、ある運転ユニットの組み合わせについて出力設定値を設定し、該当する条件のもとでのコストの計算と制約条件の確認を行う処理のことをいう。ステップS112において、リーダーの計画ユニットに一部の運転ユニットの組み合わせについて運転計画の候補を生成する処理を割り当ててもよいし、処理の割り当て先からリーダーの計画ユニットを除外してもよい。当該割り当てに関する情報はそれぞれの計画ユニットに通知される。メッセージを各計画ユニットに送信することによって通知を行ってもよいし、運転計画データベース22に割り当てに関する情報を書き込むことによって、各計画ユニットへの通知を行ってもよい。
そして、各計画ユニットは割り当てられた運転ユニットの組み合わせについて、起動停止パターンを生成する。そして、生成した起動停止パターンについて出力設定値を決定し、コストの計算、制約条件の確認を行う。また、各計画ユニットは生成した運転計画情報を共有された記憶領域(運転計画データベース22)に保存する(ステップS113)。各計画ユニットによって運転計画の候補が生成されたら、リーダーの計画ユニットは処理の終了条件が満たされているか否かを確認する(ステップS114)。処理を終了する条件として、制約条件を満たしている運転計画の候補の有無、制約条件を満たしている運転計画の候補の数が一定値に達したか否か、処理の繰り返し回数などを使うことができるが、どのような条件を適用してもよい。
処理の終了条件が満たされている場合、図10の処理を終了する(ステップS114のYES)。処理の終了条件が満たされていない場合(ステップS114のNO)、次にリーダーとなる計画ユニットを決める(ステップS115)。次にリーダーとなる計画ユニットは前回とは異なる計画ユニットであってもよいし、前回と同じ計画ユニットであってもよい。ステップS111と同様、リーダーとなる計画ユニットの決め方については特に問わない。
そして、リーダーに選定された計画ユニットは、共有された記憶領域(運転計画データベース22)に保存された運転計画情報に対して遺伝的アルゴリズムを適用し、運転ユニットの異なる組み合わせを生成する(ステップS116)。追加で運転ユニットの組み合わせが生成されたら、リーダーの計画ユニットは、各計画ユニットがどの運転ユニットの組み合わせについて運転計画の候補を生成するのか、処理の割り当てを決定する(ステップS112)。すなわち、追加で生成された運転ユニットの組み合わせについて、再びステップS112以降の処理が実行される。
以下では、図10のフローチャートで説明した処理を実際のデータに適用した例について説明する。図11と図12は、第2の実施形態に係る運転計画生成処理で生成されるデータの例を示している。以下では、図11を参照しながら、説明をする。
図11の例では、最初に計画ユニット#1がリーダーとなっている。計画ユニット#1の計画部12は運転ユニットの組み合わせを複数個生成する。そして、計画ユニット#1の制御部13は生成した運転ユニットの組み合わせのそれぞれについて、運転計画の候補の生成を担当する計画ユニットを決定している。そして、計画ユニット#1の制御部13は、処理を割り当てたそれぞれの計画ユニットに対して、対象となる運転ユニットの組み合わせに関する情報を通知し、出力設定値の決定処理、コストの計算処理、制約条件の充足性を確認する処理の実行を求める指令を送信する。
なお、計画ユニット#1は生成した運転ユニットの組み合わせに関する情報を運転計画データベース22(共有された記憶領域)に保存し、各計画ユニットに対して、運転計画データベース22を参照して、割り当てられた運転ユニットの組み合わせに関する情報を取得するように指示してもよい。
図11の例では、計画ユニット#1にCOMBINATION:898とCOMBINATION:91が割り当てられている。計画ユニット#2にはCOMBINATION:400とCOMBINATION:144が割り当てられている。計画ユニット#3にはCOMBINATION:808とCOMBINATION:18が割り当てられている。計画ユニット#4にはCOMBINATION:575とCOMBINATION:344が割り当てられている。それぞれの計画ユニットは割り当てられた運転ユニットの組み合わせを使って起動停止パターンを生成する。そして、各起動停止パターンについて出力設定値を決定し、コストの計算、制約条件の充足性を確認する処理(検証)を実行する。
そして、各計画ユニットは運転ユニットの組み合わせに係る起動停止パターン、出力設定値、コスト、適用可否フラグの値を運転計画データベース22(共有された記憶領域)に保存する。生成された運転計画の候補が制約条件を満たしている場合、適用可否フラグの値は“1”となる。生成された運転計画の候補が制約条件を満たしていない場合、適用可否フラグの値は“0”となる。各計画ユニットは、適用可否フラグの値が“1”となった運転計画の候補に係る運転計画情報を運転計画データベース22に保存してもよいし、すべての運転計画の候補に係る運転計画情報を運転計画データベース22に保存してもよい。
各計画ユニットによって運転計画情報が保存されたら、計画ユニット#1は処理の終了条件が満たされているか否かを確認する。図11の例では、適用可否フラグの値が“1”で制約条件を満たしている運転計画の候補が生成されているものの、処理の終了条件が満たされていないと判定されたため、計画ユニット#1は処理を続行する。そして、リーダーである計画ユニット#1は、次にリーダーとなる計画ユニットを決める。図11の例では、次にリーダーとなる計画ユニットとして計画ユニット#3が選択されている。ユニットデータベース21に格納された優先度に基づいてリーダーの計画ユニットが決定されている場合、ユニットデータベース21における優先度の値を更新してもよい。
以下では、図12を参照しながら、説明をする。
新たにリーダーとなった計画ユニット#3の計画部12は運転ユニットの組み合わせを複数個生成する。そして、計画ユニット#3の制御部13は生成した運転ユニットの組み合わせのそれぞれについて、運転計画の候補の生成を担当する計画ユニットを決定する。そして、計画ユニット#3の制御部13は、処理を割り当てたそれぞれの計画ユニットに対して、対象となる運転ユニットの組み合わせに関する情報を通知し、起動停止パターンの生成処理、出力設定値の決定処理、コストの計算処理、制約条件の確認処理の実行を求める指令を送信する。計画ユニット#3は生成した運転ユニットの組み合わせに関する情報を運転計画データベース22(共有された記憶領域)に保存し、各計画ユニットに対して、運転計画データベース22を参照して、割り当てられた運転ユニットの組み合わせに関する情報を取得するように指示してもよい。
図12の例では、計画ユニット#1にCOMBINATION:859とCOMBINATION:95が割り当てられている。計画ユニット#2にはCOMBINATION:34とCOMBINATION:844が割り当てられている。計画ユニット#3にはCOMBINATION:256とCOMBINATION:514が割り当てられている。計画ユニット#4にはCOMBINATION:206とCOMBINATION:413が割り当てられている。それぞれの計画ユニットは割り当てられた運転ユニットの組み合わせについて起動停止パターンを生成する。そして、各起動停止パターンについて出力設定値を決定し、コストの計算、制約条件の充足性を確認する処理(検証)を実行する。
そして、各計画ユニットは運転ユニットの組み合わせに係る起動停止パターン、出力設定値、コスト、適用可否フラグの値を運転計画データベース22(共有された記憶領域)に保存する。各計画ユニットは、適用可否フラグが“1”となった運転計画の候補に係る運転計画情報を運転計画データベース22に保存してもよいし、すべての運転計画の候補に係る運転計画情報を運転計画データベース22に保存してもよい。図12の処理を実行することによって、運転計画データベース22に格納された運転計画の候補の数が増えていることがわかる。
ここで、計画ユニット#3は処理の終了条件が満たされているか否かを確認する。図12の例では、適用可否フラグの値が“1”で制約条件を満たしている運転計画の候補が複数生成されているものの、処理の終了条件が満たされていないと判定されたため、計画ユニット#3は処理を続行する。そして、リーダーである計画ユニット#3は、次にリーダーとなる計画ユニットとして計画ユニット#2を選定している。
第2の実施形態では、リーダーとなった計画ユニットが運転ユニットの組み合わせを生成している。そして、リーダーの計画ユニットは各計画ユニットが運転計画の候補の生成処理に用いる運転ユニットの組み合わせの割り当てを決定している。この割り当て処理により、複数の計画ユニットが同じ運転ユニットの組み合わせを使って運転計画の候補を生成し、処理内容が重複する状態となることを避けることができる。運転ユニットの台数が多いと、探索空間のサイズも大きくなる(2のn乗個の組み合わせ)ため、第2の実施形態によって、効率的に低コストで良好な特性を備える運転計画が生成される確率を高めることができる。
(第3の実施形態)
第1の実施形態に係る処理と、第2の実施形態に係る処理を選択できるように、運転計画システムを構成してもよい。第3の実施形態では、運転計画生成処理の実行方法を選択できるようにした場合について説明する。
図13は、運転計画を生成する方法を切り替えられるように構成したシステムにおける処理の例を示したフローチャートである。以下では、図13を参照しながら、処理について説明する。
まず、最初に複数の計画ユニットを起動する(ステップS151)。そして、起動した計画ユニットのうち、最も優先度の高い計画ユニットの制御部13は、運転計画の生成が必要であるか否かを判定する(ステップS152)。運転計画を生成する必要がある場合(ステップS152のYES)、それぞれの計画ユニットが運転ユニットの組み合わせを生成するか否かを判定する(ステップS153)。運転計画を生成する必要がない場合、図13の処理は終了する(ステップS152のNO)。
それぞれの計画ユニットが運転ユニットの組み合わせを生成する場合(ステップS153のYES)、最も優先度の高い計画ユニットの制御部13は、各計画ユニットに運転計画の生成処理を開始させる指令を送信する(ステップS154)。当該指令を受信した各計画ユニットは、図8(第1の実施形態)の方法によって運転計画を生成する(ステップS155)。
それぞれの計画ユニットが運転ユニットの組み合わせを生成しない場合(ステップS153のNO)、最も優先度の高い計画ユニットは、リーダーの計画ユニットとなり、図10(第2の実施形態)の方法によって運転計画を生成する(ステップS156)。
運転計画データベース22に運転計画の生成方法を指定する情報を保存し、当該情報に基づき、ステップS153で図8(第1の実施形態)の処理によって運転計画を生成するのか、図10(第2の実施形態)の処理によって運転計画を生成するかを決定してもよい。また、保守員がいずれの方法によって運転計画の生成を行うのかを指定してもよい。
(第4の実施形態)
運転計画生成処理の負荷を複数の計画ユニットに分散させるために、第1の実施形態や第2の実施形態の方法とは異なる方法を適用してもよい。第4の実施形態では、運転計画の候補を複数の計画ユニットの間で巡回させ、調整処理を実行する。
図14は、第4の実施形態に係る運転計画生成処理の例を示している。以下では、図14を参照しながら、処理を説明する。図14では、計画ユニット#1〜#3の3台の計画ユニットが運転計画の生成処理を行っている。図14に示されている処理は一例にしか過ぎず、実際に運転計画の生成処理を実行する計画ユニットの台数はこれとは異なっていてもよい。例えば、数十台、数百台、数千台またはそれ以上の計画ユニットが図14の処理を実行してもよい。
最初に、計画ユニット#1〜#3は、運転ユニットの組み合わせ、対応する起動停止パターン、出力設定値、コストを含む運転計画の候補を生成する。計画ユニット#1は、運転計画の候補SL11、SL12、SL13を生成する。一方、計画ユニット#2は、運転計画の候補SL21、SL22、SL23を生成する。計画ユニット#3は、運転計画の候補SL31、SL32、SL33を生成する。各計画ユニットは、生成した運転計画の候補に係る運転計画情報を運転計画データベース22に保存してもよい。また、運転計画情報を他の計画ユニットに送信してもよい。
そして、各計画ユニットは、運転計画の候補を調整する(巡回回数:0)。検証部14が運転計画の候補を検証した結果、制約条件が満たされていない場合、制約条件が満たされるように各計画期間で稼働する運転ユニット(起動停止パターン)や、出力設定値の調整を行ってもよい。また、各計画ユニットがペアとなっている運転ユニットの構成変更や状態変化などがあれば、これらの変化を運転計画の候補に反映してもよい。例えば、ペアとなっている運転ユニットが故障した場合や、保守点検状態となった場合には、当該運転ユニットを運転計画の候補から除外することができる。また、ペアとなっている運転ユニットの改良、拡張、機能追加などがあれば、当該運転ユニットの出力設定値を大きくすることができる。
調整処理によって、計画ユニット#1が生成した運転計画の候補SL11、SL12、SL13はそれぞれ運転計画の候補SL11a、SL12a、SL13aに変化したものとする。また、計画ユニット#2が生成した運転計画の候補SL21、SL22、SL23は調整処理によって、それぞれ運転計画の候補SL21b、SL22b、SL23bに変化したものとする。計画ユニット#3が生成した運転計画の候補SL31、SL32、SL33はそれぞれ運転計画の候補SL31c、SL32c、SL33cに変化したものとする。ここでも、調整された運転計画の候補に係る運転計画情報を運転計画データベース22に保存してもよい。また、運転計画情報を他の計画ユニットに送信してもよい。
次に、それぞれの計画ユニットが調整対象とする運転計画の候補が巡回される(巡回回数:1)。巡回前に計画ユニット#1が調整していた運転計画の候補SL11a、SL12a、SL13aは、巡回後に計画ユニット#3の調整対象となる。巡回前に計画ユニット#2が調整していた運転計画の候補SL21b、SL22b、SL23bは、巡回後に計画ユニット#1の調整対象となる。巡回前に計画ユニット#3が調整していた運転計画の候補SL31c、SL32c、SL33cは計画ユニット#2の調整対象となる。
計画ユニット#1が実行する調整処理により、運転計画の候補SL21b、SL22b、SL23bはそれぞれ運転計画の候補SL21ab、SL22ab、SL23abに変化する。計画ユニット#2が実行する調整処理により、運転計画の候補SL31c、SL32c、SL33cはそれぞれ運転計画の候補SL31bc、SL32bc、SL33bcに変化する。計画ユニット#3が実行する調整処理により、運転計画の候補SL11ac、SL12ac、SL13acに変化する。各計画ユニットは、運転計画の候補のコストを計算する。また、運転計画の候補が制約条件を満たしているかを確認する。ここでも、調整された運転計画の候補に係る運転計画情報を運転計画データベース22に保存してもよい。また、運転計画情報を他の計画ユニットに送信してもよい。
再びそれぞれの計画ユニットが調整対象とする運転計画の候補が巡回される(巡回回数:2)。巡回前に計画ユニット#1が調整していた運転計画の候補SL21ab、SL22ab、SL23abは、巡回後に計画ユニット#3の調整対象となる。巡回前に計画ユニット#2が調整していた運転計画の候補SL31bc、SL32bc、SL33bcは、巡回後に計画ユニット#1の調整対象となる。巡回前に計画ユニット#3が調整していた運転計画の候補SL11ac、SL12ac、SL13acは、巡回後に計画ユニット#2の調整対象となる。
計画ユニット#1が実行する調整処理により、運転計画の候補SL31bc、SL32bc、SL33bcはそれぞれ運転計画の候補SL31abc、SL32abc、SL33abcに変化する。計画ユニット#2が実行する調整処理により、運転計画の候補SL11ac、SL12ac、SL13acはそれぞれ運転計画の候補SL11abc、SL12abc、SL13abcに変化する。計画ユニット#3が実行する調整処理により、運転計画の候補SL21ab、SL22ab、SL23abはそれぞれ運転計画の候補SL21abc、SL22abc、SL23abcに変化する。各計画ユニットは、運転計画の候補のコストを計算する。また、運転計画の候補が制約条件を満たしているかを確認する。ここでも、調整された運転計画の候補に係る運転計画情報を運転計画データベース22に保存してもよい。また、運転計画情報を他の計画ユニットに送信してもよい。
計画ユニットは各回で運転計画の候補を調整した後、制約条件を満たした運転計画の候補が存在するか否かの確認を行う。制約条件を満たした運転計画の候補がある場合、各計画ユニットは運転計画の生成処理を終了することができる。ただし、制約条件を満たした運転計画の候補が一定数を超えることなど、その他の終了条件を設定してもよいのは、第1の実施形態と同様である。
ここでは、運転計画の生成処理が実行された場合を例に説明をしたが、本実施形態の方法は、既に生成された運転計画の修正処理を行う場合にも適用することができる。また、図14で説明した巡回パターンは一例にしか過ぎない。したがって、図14とは異なる方向で運転計画の候補を巡回させてもよいし、巡回パターンにおける順序が図14とは異なっていてもよい。
本実施形態の方法を適用することによって、処理の分散をはかると同時に、各計画ユニットとペアとなっている運転ユニットの構成変更や状態変化を迅速に運転計画に反映させることができる。管理サーバ3におけるユニットデータベース21の情報をただちにアップデートできない場合でも、各計画ユニットが有する、ローカルな運転ユニットの情報を使って、運転計画の生成や修正を行うことができる。
(第5の実施形態)
上述の各実施形態の運転計画システムは、運転ユニットの組み合わせの生成、運転ユニットの組み合わせを使った起動停止パターンの生成、起動停止パターンにおける出力設定値の決定、コストの計算および制約条件のチェックの順で処理が実行されていた。ただし、運転計画の生成処理を必ず上述の処理の順序および処理の組み合わせで実行しなくてもよい。
例えば、起動停止パターンの生成処理をスキップし、運転ユニットの組み合わせを生成した後、当該組み合わせを使って出力設定値の決定処理を実行してもよい。この場合、同じ運転ユニットの組み合わせがすべての計画期間で継続して稼働する運転計画が生成される。運転ユニットの稼働操作や停止操作などを行うとコストが発生する場合があるため、運転ユニットの起動停止を行わない方が経済的な運転計画が用意できるケースがある。
そこで、第5の実施形態では、起動停止パターンの生成処理をスキップして運転計画を生成する場合を例に説明する。
図15、図16は、第5の実施形態に係る運転計画生成処理の例を示したフローチャートである。以下では、図15、図16を参照しながら、処理を説明する。図15、図16の処理が実行される前に、運転ユニットの組み合わせを生成する処理(例えば、図6の処理)が実行されているものとする。
なお、図15、図16の処理を複数の計画ユニットに実行させることによって、並列的に複数の運転計画を生成することができる。制約条件を満たす複数の運転計画が生成された場合、その中で最もコストが低い運転計画を正式な運転計画として選択することができる。一般に、処理を実行する計画ユニットの台数を増やすほど、短時間でコストが低い運転計画を生成できる確率が高まる。
最初に、計画ユニットは、運転計画データベース22(共有された記憶領域)に保存されている、運転ユニットの組み合わせより、運転ユニットの組み合わせの少なくともいずれかを選択する(ステップS201)。計画ユニットは、運転計画データベース22の選択した運転ユニットの組み合わせに係るデータ(第1データ)に、当該運転ユニットの組み合わせを選択済みである旨を記録(マーキング)してもよい。この場合、各計画ユニットは、第1データにおける当該記録(マーキング)の有無を確認し、他の計画ユニットによって選択されていない、運転ユニットの組み合わせを選択する。これによって、他の計画ユニットが同一の運転ユニットの組み合わせを選択することを避けることができる。
各計画ユニットが運転ユニットの異なる組み合わせを使って、運転計画の候補を生成することにより、計画ユニット間で処理対象の探索空間の重複を解消し、低コストで好ましい特性の運転計画が探索しやすくなる。
次に、計画ユニットは、運転ユニットの組み合わせに含まれる各運転ユニットの最小定格出力と最大定格出力を取得する(ステップS202)。そして、各計画期間で要求されている合計出力の値と各運転ユニットの最小定格出力と最大定格出力の値を参照し、上述の式(3)および式(4)の関係が成立するか否かを確認する(ステップS203)。式(3)および式(4)の関係が満たされていない場合(ステップS203のNO)、ステップS201に戻り、他の運転ユニットの組み合わせを選択する。
式(3)および式(4)の関係が満たされている場合(ステップS203のYES)、選択した運転ユニットの組み合わせに含まれるすべての運転ユニットが全計画期間で継続して稼働するものとして、計画出力値を決定する処理を実行する(ステップS204)。計画出力値を決定する処理の詳細は、図9の説明で述べた通りである。ステップS204で生成される計画を第1計画とよぶものとする。第1計画は起動停止パターンの生成処理をスキップして生成される運転計画の一例である。生成された第1計画に係る運転計画情報は、運転計画データベース22(共有された記憶領域)に保存される。
図15、図16の処理では、運転ユニットの起動操作と停止操作を含む運転計画も生成される。以降のステップは、運転ユニットの起動操作と停止操作を含む運転計画の生成処理に相当する。
第1計画の生成に使われたのと、同一の運転ユニットの組み合わせについて、各運転ユニットが停止可能な計画期間を探索する(ステップS205)。そして、一部の計画期間で停止可能な運転ユニットがある場合には、作成中の運転計画の候補において、当該運転ユニットを停止させる設定にする(ステップS206)。すなわち、ステップS205、S206では、運転ユニットの起動停止パターンが決定される。ステップS205、ステップS206で実行される処理の詳細は、図7Bの説明で述べた通りである。
以降では、図16を参照しながら、処理を説明する。
次に、運転ユニットの起動停止パターンについて、計画出力値を決定する(ステップS207)。計画出力値を決定する処理の詳細は、図9の説明で述べた通りである。そして、生成中の運転計画の候補が制約条件を満たしているか否かを確認する(ステップS208)。生成中の運転計画の候補が制約条件を満たしている場合(ステップS208のYES)、当該運転計画の候補を正式な運転計画として適用する(ステップS209)。
生成中の運転計画の候補が制約条件を満たしていない場合(ステップS208のNO)、運転計画の候補を調整した回数がしきい値以上となっているか否かを確認する(ステップS210)。運転計画の候補を調整した回数がしきい値以上である場合(ステップS210のYES)、第1計画を正式な運転計画として適用する(ステップS212)。運転計画の候補を調整した回数がしきい値以上ではない場合(ステップS210のNO)、制約条件が満たされていない計画期間について、稼働対象とする運転ユニットの選択を変更する(ステップS211)。すなわち、ステップS211では運転ユニットの起動停止パターンの修正が行われる。そして、修正後の起動停止パターンについて、計画出力値を決定する(ステップS207)。
このように、制約条件の満たされている運転計画の候補が用意できるか、運転計画の候補を調整した回数が一定値以上となるまで、起動停止パターンの修正処理と、計画出力値を決定する処理が繰り返される。所定の回数内に制約条件を満たす運転計画の候補が用意できたら、当該運転計画の候補を正式な運転計画として適用する。所定の回数内に制約条件を満たす運転計画の候補が用意できない場合には、すべての計画期間で同じ運転ユニットの組み合わせが稼働する第1計画を正式な運転計画として適用する。
なお、図15、図16の処理は一例にしか過ぎない。例えば、第1計画と、起動停止パターンを含む運転計画に要するコストを比較し、コストが低い方の計画を正式な運転計画として適用してもよい。また、運転計画システムは第1計画と、起動停止パターンを含む運転計画の双方を生成せず、第1計画のみを生成してもよい。
図17は、第5の実施形態に係る運転計画生成処理で生成されるデータの例を示している。図17には、図5〜図7Bの例と同じCOMBINATION:510(UNIT_ID=F、G、I、H、C、D、E、B)に係る運転ユニットの組み合わせを使って、第1計画が生成された例が示されている。
図17のテーブル35は、COMBINATION:510に係る運転ユニットの組み合わせを示している。テーブル46を参照すると、計画期間j=1〜24でUNIT_ID=F、G、I、H、C、D、E、Bのすべての運転ユニットが稼働する設定となっていることがわかる。そして、テーブル51はテーブル46の設定を使って、各計画期間における運転ユニットの出力設定値を決めた、第1計画の一例である。
(第6の実施形態)
第6の実施形態では、複数の計画ユニットが遺伝的アルゴリズムを使って運転計画を生成する方法の例について説明する。上述のように、処理を実行する計画ユニットの台数を増やすほど、短時間でコストが低い運転計画を生成できる確率が高まる。第6の実施形態でも、各計画ユニットが運転ユニットの異なる組み合わせを使って、運転計画の候補を生成することため、計画ユニット間で処理内容に重複が発生するのを避けることができる。
図18は、第6の実施形態に係る運転計画生成処理の例を示したフローチャートである。以下では、図18を参照しながら、処理を説明する。
なお、以下では運転ユニットの組み合わせを生成する権限のある計画ユニットをリーダーの計画ユニットとよぶものとする。
最初に、リーダーの計画ユニットはすべての計画期間において要求されている合計出力の最大値Pload,maxと、すべての計画期間において要求されている合計出力の最小値Pload,minを取得する(ステップS301)。そして、リーダーの計画ユニットは最大定格出力の和がPload,max以上となる運転ユニットの組み合わせを複数個生成し、運転計画データベース22(共有された記憶領域)に保存する(ステップS302)。リーダーの計画ユニットは、例えばユニットデータベース21に格納された計画ユニットの優先度に基づいて決定される。その他の方法によってリーダーとなる計画ユニットを決めてもよい。
ステップS303〜S306の処理は、複数の計画ユニットによって実行されるものとする。ここで、複数の計画ユニットにはリーダーの計画ユニットが含まれていてもよいし、リーダーの計画ユニットが含まれていなくてもよい。次に、各計画ユニットは生成された運転ユニットの組み合わせのうち、上述の式(4)の条件を満たす運転ユニットの組み合わせを選択する(ステップS303)。各計画ユニットは、運転計画データベース22の選択した運転ユニットの組み合わせに係るデータに、選択した旨を示した情報を記録(マーキング)してもよい。これによって、他の計画ユニットは既に他の計画ユニットによって選択された運転ユニットの組み合わせを選択することを避けることができる。
そして、各計画ユニットは抽出した運転ユニットの組み合わせを使って運転ユニットの起動停止パターンを生成する。さらに起動停止パターンにおける出力設定値を決定する(ステップS304)。各計画ユニットがステップS303、S304で生成した運転ユニットの組み合わせ、起動停止パターン、出力設定値のデータは、運転計画の候補に相当する。
次に、各計画ユニットは運転計画の候補が制約条件を満たしているか確認し、制約条件が満たされていない場合には、運転計画の候補を修正する(ステップS305)。運転計画の候補の修正処理では、起動停止パターンの変更を行ってもよいし、出力設定値の変更を行ってもよいし、これらの処理を組み合わせて実行してもよい。そして、それぞれの運転計画の候補におけるコストと、コストに基づくスコアの計算を行う(ステップS306)。
スコアは、運転計画の候補を評価する数値であり、運転計画の候補が好ましい特性(例えば、経済性、環境性、出力の安定性など)を備えるものであるほど、高い値に設定することができる。コストの逆数に係数を乗じた値をスコアとしてもよいし、適応度関数(Fitness function)の値をスコアとしてもよく、スコアの計算方法については特に問わない。汚染物質の生成量、温暖化ガスの排出量など、環境負荷を含めたスコアの計算を行ってもよい。
そして、各計画ユニットは制約条件を満たす運転ユニットの組み合わせ、起動停止パターン、出力設定値対応するスコア(運転計画情報)を運転計画データベース22(共有された記憶領域)に保存する(ステップS307)。次に、リーダーの計画ユニットは運転計画データベース22を参照し、しきい値以上のスコアの運転計画の候補の有無を確認する(ステップS308)。
スコアがしきい値以上の運転計画の候補がある場合(ステップS308のYES)、リーダーの計画ユニットは保存されている運転計画情報のスコアに基づき、正式に適用する運転計画を選択する(ステップS311)。ステップS311では、例えばスコアが最大の運転計画の候補を正式な運転計画とする。
スコアがしきい値以上の運転計画の候補がない場合(ステップS308のNO)、リーダーの計画ユニットは運転計画情報のスコアに基づき、運転ユニットの組み合わせを複数個選択する(ステップS309)。ステップS309では、スコアの値が上位となった運転計画の候補における運転ユニットの組み合わせを抽出する。例えば、スコアの値が上位50個の運転計画の候補から運転ユニットの組み合わせを抽出してもよいし、スコアの値が上位10%の運転計画の候補から運転ユニットの組み合わせを抽出してもよい。その他の基準値を使って、運転ユニットの組み合わせを抽出してもよい。
そして、リーダーの計画ユニットは遺伝的アルゴリズムを用いて、前ステップで選択した運転ユニットの組み合わせから新しい運転ユニットの組み合わせを複数個生成する(ステップS310)。リーダーの計画ユニットは、遺伝的アルゴリズムによって新たに生成した運転ユニットの組み合わせを運転計画データベース22(共有された記憶領域)に保存する。ステップS310の後、ステップS303以降の処理が再び実行される。
図20、図21は図18の処理を概略的に示している。図20では、リーダーの計画ユニットによって生成された運転ユニットの組み合わせが6組示されている(テーブル62)。上述の式(3)および式(4)の条件への適合性をチェックした結果、4組の運転ユニットの組み合わせが選択されている(テーブル63)。
図21の上段に示されているように、遺伝的アルゴリズムの操作には、選択、交叉、突然変異がある。運転ユニットの異なる組み合わせを生成する際に、これらの操作のいずれかを用いてもよいし、複数の種類の操作を組み合わせて適用してもよい。遺伝的アルゴリズムを適用した結果、5組の新しい運転ユニットの組み合わせが生成されている(テーブル64)。
そして、テーブル64に示された運転ユニットの組み合わせに対し、上述の式(3)および式(4)の条件への適合性をチェックしたところ、テーブル65に示された3組の運転ユニットの組み合わせが条件に適合していると判定され、選択されている。
(第7の実施形態)
第1の実施形態に係る運転計画システムでは、各種のデータベース(例えば、要求データベース20、ユニットデータベース21、運転計画データベース22)が管理サーバの記憶部に配置されていた。ただし、第1の実施形態におけるデータベースの配置は一例にしか過ぎず、データベースはその他の構成要素(装置)が提供する記憶領域に配置されていてもよい。第7の実施形態に係る運転計画システムでは、データベースが計画ユニット(運転計画装置)の記憶部に配置されている。
図22は、第7の実施形態に係る運転計画装置の構成例を示している。図22の例では、計画ユニット1a(計画ユニット#1)の記憶部16に要求データベース20と、ユニットデータベース21と、運転計画データベース22が配置されている。計画ユニットの記憶部は、第1の実施形態に係る管理サーバの記憶部のように、複数の計画ユニットからアクセス可能に設定された記憶領域を有するものであってもよいし、複数の計画ユニットからアクセス可能に設定された記憶領域を有しないものであってもよい。複数の計画ユニットからアクセス可能に設定された記憶領域には、運転計画データベース22を配置することができる。
計画ユニットの記憶部の少なくとも一部の記憶領域を複数の計画ユニットからアクセス可能に設定せず、各計画ユニットの記憶部に要求データベース20、ユニットデータベース21、運転計画データベース22などのデータベースを配置してもよい。また、要求データベース20と、ユニットデータベース21と、運転計画データベース22は一部の計画ユニットに配置されていてもよいし、すべての計画ユニットに配置されていてもよい。
複数の計画ユニットに要求データベース20、ユニットデータベース21、運転計画データベース22が配置された場合、複数のデータベースへの更新指令を同時に送信することによって、データを共有することができる。例えば、ある計画ユニットが運転ユニットの組み合わせを生成したり、運転計画の候補を生成したりする場合、当該計画ユニットは複数の計画ユニットに対して、運転計画情報の更新を求める指令をブロードキャスト(送信)する。当該指令を受信したそれぞれの計画ユニットは、ローカルの記憶部に配置された運転計画データベース22の運転計画情報を更新する。
計画ユニットまたは運転ユニットの構成変更や状態変化が検出された場合や、要求される合計出力が変化した場合にも、いずれかの計画ユニットまたは管理サーバがデータベースの更新を求める指令を複数の計画ユニットにブロードキャストする。このように、データベースへの更新を求める指令をブロードキャスト(送信)し、略同時刻に各計画ユニットに配置されたデータベースを更新することによって、運転計画の生成に必要なデータが複数の計画ユニット間で共有される。
要求データベース20、ユニットデータベース21、運転計画データベース22が複数の計画ユニットに配置されている場合、いずれかの計画ユニットに保存されているデータベースをマスターのデータベースに設定してもよい。この場合、要求される合計出力の値が変更された場合、マスターの要求データベース20を更新後、その他の計画ユニットの要求データベース20を更新する。計画ユニットまたは運転ユニットの構成変更や状態変化が検出された場合、マスターのユニットデータベース21を更新後、その他の計画ユニットのユニットデータベース21を更新する。
いずれかの計画ユニットの記憶部が故障やファイルのエラーが発生し、データベースを復元する必要がある場合、マスターのデータベースのデータに基づき、他の計画ユニットのデータベースを復元する。また、必要に応じてトランザクションログを使って、データベースの復元を行ってもよい。
図22の構成例のように、それぞれの計画ユニットに運転計画の生成に必要なデータを保持させることで、それぞれの計画ユニットが処理の各ステップで管理サーバをアクセスする必要がなくなる。これにより、管理サーバにかかる負荷を一層軽減することができる。また、管理サーバがダウンした場合や、管理サーバへの通信経路にあるネットワークの一部が不通となった場合にも、運転計画の生成処理を継続することができる。
運転計画システムのデータベースの配置は図2、図22の例とは異なっていてもよい。例えば、外部ストレージ、クラウド上のストレージサービスなどに要求データベース20、ユニットデータベース21、運転計画データベース22の一部またはすべてを配置してもよい。各計画ユニット間で運転計画データベース22のデータが共有されるのであれば、各種データベースの配置や運転計画システムの実装形態については特に問わない。
すなわち、各計画ユニットは通信部15を介して生成した運転計画(運転計画の候補)に係る運転計画情報を送信する。送信された運転計画情報は、少なくとも複数の計画ユニットからアクセス可能に設定された記憶領域(共有された記憶領域)または各計画ユニットの記憶部が提供する記憶領域のいずれかに保存される。いずれの場合においても、各計画ユニットが生成した運転計画に係る運転計画情報は他の計画ユニットがアクセス可能な記憶領域に保存されている。複数の計画ユニットは他の計画ユニットが生成した運転計画の情報(運転計画情報)を取得し、新しい運転計画を生成することができる。
(第8の実施形態)
第8の実施形態では、運転計画システムの各構成要素のハードウェア構成について説明する。上述の各実施形態における計画ユニット、管理サーバ、運転ユニットの一部はコンピュータ100によって構成される。コンピュータ100には、サーバ、クライアント端末、組み込み機器のマイコン、タブレット、スマートフォン、フィーチャーフォン、パソコンなどの各種の情報処理装置が含まれる。コンピュータ100は、仮想計算機(VM:Virtual Machine)やコンテナなどによって実現されていてもよい。
図23は、コンピュータ100の一例を示す図である。図23のコンピュータ100は、プロセッサ101と、入力装置102と、表示装置103と、通信装置104と、記憶装置105とを備える。プロセッサ101、入力装置102、表示装置103、通信装置104、記憶装置105は、バス106によって相互に接続されている。
プロセッサ101は、コンピュータ100の制御装置と演算装置を含む電子回路である。プロセッサ101として、例えば、汎用目的プロセッサ、中央処理装置(CPU)、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、コントローラ、マイクロコントローラ、状態マシン、特定用途向け集積回路、フィールドプログラマブルゲートアレイ(FPGA)、プログラム可能論理回路(PLD)またはこれらの組合せを用いることができる。
プロセッサ101は、バス106を介して接続された各装置(例えば、入力装置102、通信装置104、記憶装置105)から入力されたデータやプログラムに基づいて演算処理を行い、演算結果や制御信号を、バス106を介して接続された各装置(例えば、表示装置103、通信装置104、記憶装置105)に出力する。具体的には、プロセッサ101は、コンピュータ100のOS(オペレーティングシステム)や、運転計画プログラムなどを実行し、コンピュータ100に含まれるそれぞれの装置を制御する。
運転計画プログラムとは、コンピュータ100に、運転計画装置の各構成要素に係る処理を実行させるプログラムである。運転計画プログラムは、一時的でない有形のコンピュータ読み取り可能な記憶媒体に記憶される。上記の記憶媒体は、例えば、光ディスク、光磁気ディスク、磁気ディスク、磁気テープ、フラッシュメモリ、半導体メモリであるが、これに限られない。プロセッサ101が運転計画プログラムを実行することによって、コンピュータ100は計画ユニットまたは運転ユニットまたは管理サーバとして機能することができる。
入力装置102は、コンピュータ100に情報を入力するための装置である。入力装置102は、例えば、キーボード、マウス、タッチパネルなどであるが、これに限られない。ユーザは、入力装置102を用いることにより、利用者は運転計画生成処理の種類を選択する操作、運転ユニットの組み合わせを生成する方法を選択する操作、要求される合計出力の値を変更する操作、運転計画生成処理の開始指令、運転計画修正処理の開始指令、各種データベースの内容を参照する操作、各種データベースの内容を変更する操作などを入力することができる。
表示装置103は、画像や映像を表示するための装置である。表示装置103は、例えば、LCD(液晶ディスプレイ)、CRT(ブラウン管)、有機EL(有機エレクトロルミネッセンス)ディスプレイ、プロジェクタ、LEDディスプレイなどであるが、これに限られない。表示装置103には、現在適用されている運転計画に関する情報、生成中の運転計画の候補に関する情報、運転計画情報の詳細、各計画ユニットの構成や状態、各運転ユニットの構成や状態などが表示される。
通信装置104は、コンピュータ100が外部装置と無線または有線で通信するために使用する装置である。通信装置104は、例えば、NIC(Network Interface Card)、通信モジュール、モデム、ハブ、ルータなどであるが、これに限られない。コンピュータ100は、通信装置104を介して、他の計画ユニット、管理サーバ、運転ユニットとデータの通信をすることができる。また、コンピュータ100がデータセンターやマシン室に設置されたサーバなどである場合、コンピュータ100は通信装置104を介して、リモートの端末からの操作指令を受け付けたり、画面表示の内容をリモートの端末に表示させたりしてもよい。
記憶装置105は、コンピュータ100のOSや、運転計画プログラム、運転計画プログラムの実行に必要なデータ、運転計画プログラムの実行により生成されたデータなどを記憶する記憶媒体である。記憶装置105には、主記憶装置と外部記憶装置が含まれる。主記憶装置は、例えば、RAM、DRAM、SRAMであるが、これに限られない。また、外部記憶装置は、例えば、ハードディスク、光ディスク、フラッシュメモリ、磁気テープなどであるが、これに限られない。上述の要求データベース20、ユニットデータベース21と、運転計画データベース22は、記憶装置105上に構築されてもよいし、外部のサーバやストレージ上に構築されてもよい。
なお、コンピュータ100は、プロセッサ101、入力装置102、表示装置103、通信装置104、記憶装置105を、それぞれ1つずつまたは複数備えてもよい。また、コンピュータ100にプリンタやスキャナなどの周辺機器が接続されていてもよい。
また、計画ユニット、運転ユニット、管理サーバは、単一のコンピュータ100により構成されてもよいし、複数のコンピュータ100が相互に接続された情報システムによって構成されていてもよい。
さらに、運転計画プログラムは、コンピュータ100の記憶装置105に予め記憶されていてもよいし、コンピュータ100の外部の記憶媒体に記憶されていてもよいし、インターネット上にアップロードされていてもよい。いずれの場合にも、運転計画プログラムをコンピュータ100にインストールして実行することにより、計画ユニット、運転ユニット、管理サーバの機能を実現することができる。
なお、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素を適宜組み合わせることによって種々の発明を形成できる。また例えば、各実施形態に示される全構成要素からいくつかの構成要素を削除した構成も考えられる。さらに、異なる実施形態に記載した構成要素を適宜組み合わせてもよい。