(57)【要約】【課題】システム稼働中の構成変更や再計画に対応し、スケーラビリティが高い運転計画を実現する。【解決手段】本発明の実施形態としての運転計画システムは、運転計画の計画期間について、複数の運転ユニットに要求される全体の出力値が設定されている需要情報を記憶する需要情報データベースと、前記複数の運転ユニットの出力設定を調整可能な複数の計画ユニットを備え、いずれかの前記計画ユニットは、前記計画期間について、前記全体の出力値が得られる運転ユニットの組を選択し、前記運転ユニットの組に属する、前記運転ユニットの出力に依存した前記運転ユニットの運転コストの値に基づき、前記運転ユニットの組の中から選択される、前記運転ユニットに対応する前記計画ユニットが、対応する前記運転ユニットの出力設定を調整する処理を繰り返すことにより、前記運転計画を作成する。【選択図】  図２
2019032659.tif 000002
【特許請求の範囲】
【請求項１】
運転計画の計画期間について、複数の運転ユニットに要求される全体の出力値が設定されている需要情報を記憶する需要情報データベースと、
前記複数の運転ユニットの出力設定を調整可能な複数の計画ユニットを備え、
いずれかの前記計画ユニットは、前記計画期間について、前記全体の出力値が得られる運転ユニットの組を選択し、
前記運転ユニットの組に属する、前記運転ユニットの出力に依存した前記運転ユニットの運転コストの値に基づき、前記運転ユニットの組の中から選択される、前記運転ユニットに対応する前記計画ユニットが、対応する前記運転ユニットの出力設定を調整する処理を繰り返すことにより、前記運転計画を作成する
運転計画システム。
【請求項２】
前記運転ユニットの組による全体の出力値と、前記需要情報で要求される前記全体の出力値との差に基づき、前記運転ユニットの出力設定を調整する処理の実行を停止する、
請求項１に記載の運転計画システム。
【請求項３】
前記運転計画は、複数の前記計画期間を含み、前記需要情報にはそれぞれの前記計画期間について、複数の前記運転ユニットに要求される前記全体の出力値が設定されている、
請求項１または２に記載の運転計画システム。
【請求項４】
いずれかの前記計画ユニットは、前記需要情報のそれぞれの前記計画期間について、要求される出力値を満たす全体の出力が得られる前記運転ユニットの組を複数作成し、
前記需要情報のそれぞれの前記計画期間について、稼働する前記運転ユニットの組を変更するのに要するコストが低い前記運転ユニットの組を、優先して稼働対象とする前記運転ユニットの組に選ぶ、
請求項３に記載の運転計画システム。
【請求項５】
いずれかの前記計画ユニットは、前記需要情報のそれぞれの前記計画期間で稼働対象とする前記運転ユニットの組を選択するとき、さらに前記運転ユニットが稼働可能な条件と、前記運転ユニットが停止可能な条件が満たされるようにする、
請求項４に記載の運転計画システム。
【請求項６】
前記運転計画に基づき、前記運転ユニットの組に属する運転ユニットが稼働しているときに、前記計画ユニットが、前記需要情報において、いずれかの前記計画期間で要求される出力値が変更されていることを検出したら、
該当する前記計画期間において稼働対象とされている前記運転ユニットの組に属する前記運転ユニットの出力に依存した前記運転ユニットの運転コストの値に基づき、前記運転ユニットの組から選択される前記運転ユニットに対応する前記計画ユニットが、対応する前記運転ユニットの出力設定の調整を繰り返し、前記運転計画を変更する、
請求項１ないし５のいずれか一項に記載の運転計画システム。
【請求項７】
前記運転計画に基づき、前記運転ユニットの組に属する運転ユニットが稼働しているときに、前記計画ユニットが、前記需要情報において、いずれかの前記計画期間で要求される出力値が変更されていることを検出したら、
該当する前記計画期間において稼働対象とされている前記運転ユニットの組に対して、前記運転ユニットの追加または前記運転ユニットの削除を行い、前記運転計画を変更する、
請求項１ないし６のいずれか一項に記載の運転計画システム。
【請求項８】
前記運転ユニットの登録状態と、前記運転ユニットの出力値と、前記運転ユニットの故障状態と、前記計画ユニットの故障状態とを含むユニット情報を記憶するユニット情報データベースを備える、
請求項１ないし７のいずれか一項に記載の運転計画システム。
【請求項９】
前記運転計画に基づき、前記運転ユニットの組に属する運転ユニットが稼働しているときに、いずれかの前記計画ユニットが、前記ユニット情報において、いずれかの前記計画期間で稼働対象とされている、前記運転ユニットの故障、前記運転ユニットの削除、前記運転ユニットに対応する計画ユニットの故障、前記運転ユニットの追加のうち、少なくとも１つを検出したら、
該当する前記計画期間において稼働対象とされている前記運転ユニットの組に属する前記運転ユニットの出力に依存した前記運転ユニットの運転コストの値に基づき、前記運転ユニットの組の中から選択される前記運転ユニットに対応する前記計画ユニットが、対応する前記運転ユニットの出力設定の調整を繰り返し、前記運転計画を変更する、
請求項８に記載の運転計画システム。
【請求項１０】
前記運転計画に基づき、前記運転ユニットの組に属する運転ユニットが稼働しているときに、いずれかの前記計画ユニットが、前記ユニット情報において、いずれかの前記計画期間で稼働対象とされている、前記運転ユニットの故障、前記運転ユニットの削除、前記運転ユニットに対応する計画ユニットの故障のうち、少なくとも１つを検出したら、
該当する前記計画期間において稼働対象とされている前記運転ユニットの組に属する運転ユニットに対応する前記計画ユニットは、
該当する前記計画期間において稼働対象とされている前記運転ユニットの組に前記運転ユニットの追加をし、前記運転計画を変更する、
請求項８または９に記載の運転計画システム。
【請求項１１】
前記運転計画に基づき、前記運転ユニットの組に属する運転ユニットが稼働しているときに、いずれかの前記計画ユニットが、前記ユニット情報において、前記運転ユニットの追加、前記運転ユニットに対応する計画ユニットの追加を検出したら、
前記計画期間において稼働対象とされている前記運転ユニットの組に属する運転ユニットに対応する前記計画ユニットは、
前記計画期間において稼働対象とされている前記組に前記運転ユニットの追加をし、前記運転計画を変更する、
請求項８ないし１０のいずれか一項に記載の運転計画システム。
【請求項１２】
前記運転ユニットは、発電機または発電所であり、前記需要情報で要求される前記全体の出力値は、供給電力である、
請求項１ないし１１のいずれか一項に記載の運転計画システム。
【請求項１３】
前記運転ユニットは、生産設備または工場であり、前記需要情報で要求される全体の出力値は、物の生産量である、
請求項１ないし１２のいずれか一項に記載の運転計画システム。
【請求項１４】
前記運転ユニットは、ロボットであり、前記需要情報で要求される全体の出力値は、前記ロボットが行う仕事の量である、
請求項１ないし１３のいずれか一項に記載の運転計画システム。
【請求項１５】
対応する運転ユニットの出力設定を調整する、運転制御部と、
運転計画の計画期間で、要求される全体の出力値を満たす運転ユニットの組を稼働対象とすることを決定する、ユニット群選択部と、
前記計画期間について、稼働対象とされた前記運転ユニットの組に属する、前記運転ユニットの出力に依存した運転コストの値に基づき、前記運転ユニットに対応する計画ユニットへ供給計画作成権限を付与する、ユニット選択部と、
供給計画作成権限が与えられたら、前記運転ユニットの組に属する、前記運転ユニットの運転コストの値に基づき、前記運転ユニットの組の中から選択される前記運転ユニットに対応する前記計画ユニットが、対応する前記運転ユニットの出力設定の調整を繰り返すことにより、前記運転計画を作成する、計画作成部と
を備える運転計画装置。
【請求項１６】
対応する運転ユニットの出力設定を調整する、運転制御部と、
運転計画の計画期間について、要求出力値を満たす運転ユニットの組を稼働対象とすることを決定する、ユニット群選択部と、
前記運転ユニットの出力に依存した運転コストに基づき、前記運転ユニットの組に属する、それぞれの前記運転ユニットの出力設定の調整を繰り返し行うことにより、前記運転計画を作成する、計画作成部と
を備える運転計画装置。
【請求項１７】
運転計画の計画期間について、要求される運転ユニットの全体の出力値が設定されている、需要情報を作成するステップと、
前記需要情報のそれぞれの前記計画期間について、前記全体の出力値を満たす前記運転ユニットの組を稼働対象とすることを決定するステップと、
前記運転ユニットの組に属する、前記運転ユニットの出力に依存した前記運転ユニットの運転コストの値に基づき、前記運転ユニットの組の中から選択される前記運転ユニットに対応する計画ユニットが、対応する前記運転ユニットの出力設定の調整を繰り返すことにより、前記運転計画を作成するステップと、
を備える運転計画方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、運転計画システム、運転計画装置および運転計画方法に関する。
【背景技術】
【０００２】
複数のユニットを協調的に運転させることにより、所望の出力を得る技術は複数の分野で用いられている。例えば電力システムでは、複数の発電所を組み合わせて発電させることにより、需要を満たす電力量が供給されている。物の生産では、複数の工場、生産設備、工程などを組み合わせることにより、必要な生産量が確保されている。群ロボットでは、複数のロボットを協調的に動作させることにより、目的の作業を行わせている。
【０００３】
複数のユニットが動作するシステムにおいては、中央の管理サーバなどが運転計画の作成処理を集中的に実行することが多い。管理サーバは各ユニットに関する情報をすべて収集してから、制約条件を満たす運転計画を作成するため、計画作成に時間がかかる。このような場合、システム稼働中に要求出力の変更、ユニットの追加や故障などがあると、変化に追従できないおそれがある。また、各ユニットの挙動がもとの運転計画による稼働時から変化してしまい、システムの稼働コストが大幅に上昇してしまう場合もある。さらに、計画作成時間が長くなるため、システムのユニット数を増やすのが難しい。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３５９１２４７号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施形態は、システム稼働中の構成変更や再計画に対応し、スケーラビリティが高い運転計画システム、運転計画装置および運転計画方法を提供する。
【課題を解決するための手段】
【０００６】
本発明の実施形態としての運転計画システムは、運転計画の計画期間について、複数の運転ユニットに要求される全体の出力値が設定されている需要情報を記憶する需要情報データベースと、前記複数の運転ユニットの出力設定を調整可能な複数の計画ユニットを備え、いずれかの前記計画ユニットは、前記計画期間について、前記全体の出力値が得られる運転ユニットの組を選択し、前記運転ユニットの組に属する、前記運転ユニットの出力に依存した前記運転ユニットの運転コストの値に基づき、前記運転ユニットの組の中から選択される、前記運転ユニットに対応する前記計画ユニットが、対応する前記運転ユニットの出力設定を調整する処理を繰り返すことにより、前記運転計画を作成する。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態に係る運転計画システム全体の構成例を示す図。
【図２】第１の実施形態に係る運転計画システムの構成要素を示すブロック図。
【図３】需要情報の一例を示す図。
【図４】第１の実施形態に係る運転計画システムの処理全体に係るフローチャート。
【図５】１日間の電力需要データの例を示す図。
【図６】運転計画作成時におけるユニット群の生成と選択例を示す図。
【図７】作成されたユニット群と要求出力との関係を示す図。
【図８】供給計画作成処理の例を示す図。
【図９】ユニット群候補作成処理を示したフローチャート。
【図１０】遺伝的アルゴリズムによりユニット群の選択を行った例を示す図。
【図１１】供給計画作成処理に係るフローチャート。
【図１２】供給計画作成処理に係るフローチャート。
【図１３】運転ユニットが発電所であるときの運転条件情報の例を示す図。
【図１４】ある発電所の稼働時間、停止時間、最大発電量の例を示す図。
【図１５】ユニット群の最大発電量の例を示す図。
【図１６】ある計画期間のユニット群に係る供給計画作成処理の例を示す図。
【図１７】供給計画調整処理を示したフローチャート。
【図１８Ａ】システム稼働中の変更検出処理を示したフローチャート。
【図１８Ｂ】第１の変形例に係る供給計画作成処理を示したフローチャート。
【図１９】強化学習によりユニット群の選択を行った例を示す図。
【図２０】貪欲法によるユニット群選択処理を示したフローチャート。
【図２１】貪欲法により選択されたユニット群の例を示す図。
【図２２】生産計画の作成への適用例を示す図。
【図２３】群ロボットによる物体輸送への適用例を示す図。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら、本発明の実施形態について説明する。また、図面において同一の構成要素は、同じ番号を付し、説明は、適宜省略する。
【０００９】
（第１実施形態）
図１は、本実施形態に係る全体のシステム構成例を示す図である。
【００１０】
図１の運転計画システムは、計画ユニット１０、１０ａ、１０ｂ、１０ｃと、運転ユニット１００、１００ａ、１００ｂ、１００ｃと、管理サーバ５０とを備えている。計画ユニット１０、１０ａ、１０ｂ、１０ｃと管理サーバ５０は、ネットワーク３０を介して互いに接続されている。
【００１１】
各運転ユニットには少なくとも１台の計画ユニットが組み合わされている。したがって、計画ユニット１０と運転ユニット１００はペアとなっているといえる。同様に、計画ユニット１０ａは運転ユニット１００ａと、計画ユニット１０ｂは運転ユニット１００ｂと、計画ユニット１０ｃは運転ユニット１００ｃと、それぞれペアになっている。図１のシステムでは、各運転ユニットは１台の計画ユニットとペアになっているが、冗長性を持たせるために２台以上の計画ユニットを１つの運転ユニットと組み合わせてもよい。また、図１のシステムでは、計画ユニットと運転ユニットのペアが４つあるが、ペアの数は、これより少なくても、多くてもよい。
【００１２】
計画ユニット１０は、他の計画ユニットと協調して、運転ユニットの運転計画を作成する、運転計画装置である。計画ユニットはさらに運転ユニットの稼働、停止、出力変更などの制御も行う。運転計画の作成後、ペアとなっている運転ユニット１００を運転計画に基づき、稼働させる。計画ユニット１０は、１以上のＣＰＵ（中央処理装置）、記憶装置、通信部を備え、ＯＳ（オペレーティングシステム）とアプリケーションが動作する計算機などの情報処理装置である。計画ユニット１０の詳細な機能と構成については後述する。他の計画ユニット１０ａ、１０ｂ、１０ｃの機能と構成は、計画ユニット１０と同様である。
【００１３】
以下では、１台の計画ユニットは１台の運転ユニットとペアになり、各々の計画ユニットは１台の運転ユニットの制御を行うものとして説明する。しかし、１台の計画ユニットが２台以上の運転ユニットを制御する構成を排除するものではない。さらに同一の運転ユニットを、複数の運転ユニットが制御可能な構成をとってもよい。複数台の運転ユニットを制御する機能を備えた計画ユニットを冗長化してもよい。このように、本発明の本実施形態は計画ユニットと運転ユニットの間に対応関係が存在すれば、適用が可能である。
【００１４】
ネットワーク３０は、各計画ユニット間ならびに各計画ユニットと管理サーバ５０の間で、データの送受信をする手段を提供する。ネットワーク３０は、通信媒体としては例えば、光ファイバ、ＬＡＮケーブル、電話回線、同軸ケーブル、無線などを用いることができる。通信規格としては、イーサネットなどを用いることができるが、どの方式であってもよい。
【００１５】
管理サーバ５０は、各計画ユニットで共有される情報を管理し、１以上のＣＰＵ（中央処理装置）、記憶装置、通信部を備え、ＯＳ（オペレーティングシステム）とアプリケーションが動作する計算機などの情報処理システムである。各計画ユニットは、管理サーバ５０が保持している情報をもとに運転計画を作成する。管理サーバ５０の構成や配置については特に問わない。管理サーバ５０は計画ユニットから物理的に独立していてもよいし、いずれかの計画ユニットと共通のハードウェアに実装されるものであってもよい。管理サーバの詳細な機能および構成についても後述する。
【００１６】
管理サーバ５０は物理的な計算機であってもよいが、仮想計算機（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：ＶＭ）、コンテナ（ｃｏｎｔａｉｎｅｒ）又はこれらの組み合わせにより実現されるものであってもよい。１つ以上の物理計算機、仮想計算機、コンテナに管理サーバ５０の機能を分担させてもよい。可用性の向上と負荷分散のために管理サーバ５０の台数を増やした構成を用いることも排除されない。
【００１７】
運転ユニット１００は、運転計画に基づき発電を行い、電力システムに電力を供給する発電所または発電機である。運転ユニット１００の発電方式は、火力発電、原子力発電、水力発電、揚水発電、太陽光発電、風力発電、地熱発電、またはその他の方式のいずれでもよい。火力発電の場合は、石炭、石油、ガス、バイオマス、廃棄物などを燃料にすることができるが、どの燃料を用いてもよい。
【００１８】
図１の運転計画システムは複数の種類の発電所を含んでいてもよい。したがって、運転ユニット１００、１００ａ、１００ｂ、１００ｃの中には異なる発電方式の発電所（発電機）があってもよいし、同じ発電方式による発電所（発電機）が複数あってもよい。異なる仕様、規模、設計、経過年数の発電所（発電機）が混在していてもよい。例えば、同じ方式の発電所であっても、特性、出力や運転コストが大きく異なる場合がある。
【００１９】
本実施形態では、計画ユニットとペアになる運転ユニットが発電所となっているが、運転ユニットは発電所以外のものであってもよい。例えば、工場、プラント、生産設備、工程、ロボット、空調機器などを計画ユニットと組み合わせて運転することができる。
【００２０】
図２は、本実施形態に係るシステムの構成要素を示すブロック図である。以下では図２を参照しながら、本実施形態に係るシステムの構成要素を説明する。
【００２１】
図２において、計画ユニット１０（計画ユニット＃１）と運転ユニット１００（運転ユニット＃１）はペアになっている。さらに計画ユニット１０ａ（計画ユニット＃２）と運転ユニット１００ａ（運転ユニット＃２）もペアになっている。図２に示されていないが、本実施形態に係るシステムには、計画ユニット＃３と運転ユニット＃３のペアなど、さらに多くの計画ユニットと運転ユニットのペアが存在していてもよい。
【００２２】
管理サーバ５０は、要求出力変更部５１と、ユニット追加削除部５２と、需要情報データベース５５と、ユニット情報データベース５６と、計画情報データベース５７とを備えている。
【００２３】
需要情報データベース５５は、システム全体に要求されている時系列の出力である需要情報を保持する。需要情報における時系列の出力は、１以上の運転ユニットに要求される全体の出力値である。以下では、この全体の出力値を要求出力と呼ぶ。要求出力は、運転計画システムの適用対象や条件により、異なる値を用いることができる。例えば、要求出力として、各運転ユニットの出力値の合計を使ってもよいし、各運転ユニットの出力の期待値、最大値や最小値を使ってもよいし、これらに計算処理を行った後の値を用いてもよい。要求出力はスカラー量であってもよく、ベクトル値であってもよい。このように、要求出力の値の形式、計算方法、値の条件については特に問わない。値の条件の例としては、全体の出力値に対する制約条件がある。例えば、火力発電計画の場合は石炭の合計出力値、ＬＮＧの合計出力値、石油の合計出力値など、各燃料ごとの合計出力値に上限、下限、比率などの条件が含まれている可能性がある。図３は需要情報データベース５５に保存される需要情報の例を示している。縦軸は要求出力であり、横軸は時刻である。要求出力は電力システムの場合、供給すべき電力値となる。時刻は複数の計画期間で区切られる。計画期間とは、システムがある要求出力を供給すべき期間のことをいう。システムは需要情報の各時刻における要求出力を満たすよう、複数の計画期間からなる運転計画を作成する。
【００２４】
ユニット情報データベース５６は、各運転ユニットの登録状態、各計画ユニットの登録状態、各運転ユニットの出力値などの仕様、各運転ユニットの故障状態、各計画ユニットの故障状態、各運転ユニットの制約条件、各運転ユニットの運転コストなどのユニット情報を保持する。電力システムの場合、ユニット情報には例えば各運転ユニットの発電量の上限値、発電量の下限値、発電量変化率（ランプアップレート、ランプダウンレート）、最小稼働時間、最小停止時間、発電コスト関数とそれらの関数のパラメータ値、コールドスタートアップコスト、ホットスタートアップコスト、シャットダウンコストなどが含まれる。
【００２５】
計画情報データベース５７は、各計画期間に係るユニット群の情報と、各計画期間におけるシステム全体の出力である供給計画の情報を保持する。
【００２６】
ユニット群とは、１つ以上の運転ユニットと計画ユニットのペアを含む集合である。例えば、運転ユニット＃１と運転ユニット＃２と運転ユニット＃３を含むユニット群は、計画ユニット＃１と計画ユニット＃２と計画ユニット＃３を含む。ここで、運転ユニット＃１は計画ユニット＃１とペアになっており、運転ユニット＃２は計画ユニット＃２とペアになっており、運転ユニット＃３は計画ユニット＃３とペアになっているものとする。
【００２７】
ユニット群に対する変更は、原則として運転ユニットと計画ユニットのペア単位で行う。すなわち、ユニット群に新たな運転ユニットを追加する場合、当該運転ユニットとペアになっている計画ユニットもユニット群に追加する。例えば、運転ユニット＃４をユニット群に追加するときには、計画ユニット＃４もユニット群に追加される。ユニット群から運転ユニットを削除する場合も同様である。例えば、運転ユニット＃２をユニット群から削除する場合、ペアとなっている計画ユニット＃２もユニット群から削除される。
【００２８】
図２では需要情報データベース５５、ユニット情報データベース５６、計画情報データベース５７のすべてが管理サーバ５０の内部に配置されている。しかし、データベースの配置方法については、特に問わない。例えば、一部のデータベースを、外部のサーバやストレージ装置などに配置させてもよい。データベースはリレーショナルデータベースマネジメントシステムや各種ＮｏＳＱＬシステムにより実装することができるが、その他の方式を用いることもできる。さらに、データベースは、図２の管理サーバ５０のように中央管理型でもよいし、分散型台帳技術（ブロックチェーン）を利用して、管理サーバ５０に計画情報データベース５７を置かずに複数の計画ユニット１０（の記憶部１７）どうしをＰ２Ｐネットワークで繋いで構築してもよい。データベースの保存フォーマットとしてはＸＭＬ、ＪＳＯＮ、ＣＳＶなどを用いてもよいし、バイナリ形式などその他の形式でもよい。すべてのデータベースが同一のデータベースシステム及び保存フォーマットで実現されている必要はなく、複数の方式によるものが混在していてもよい。
【００２９】
要求出力変更部５１は、システムに要求される出力が変化した場合、変更後の需要情報を需要情報データベース５５に書き込む。さらに変更後の需要情報を全計画ユニットに送信（ブロードキャスト）する。需要情報内の要求出力が変わった場合、各計画ユニットは変更対象となる計画期間について運転計画の変更を行う。電力システムの場合、冷暖房の使用率の上昇などで電力需要が大きくなったときや、電力使用量と予想値との乖離が大きくなったときに、需要情報の変更が必要になる。
【００３０】
ユニット追加削除部５２は、システムに新しいユニットが追加された場合や、ユニットの故障を検出した場合に、ユニット情報データベース５６のユニット情報を更新する。また、更新後のユニット情報を全ユニットに送信（ブロードキャスト）する。
【００３１】
計画ユニット１０（計画ユニット＃１）は、ユニット群生成部１１と、ユニット群選択部１２と、ユニット選択部１３と、計画作成部１４と、送受信部１５と、記憶部１６と、運転制御部１７とを備えている。このうち、ユニット群生成部１１、ユニット群選択部１２、ユニット選択部１３、計画作成部１４は運転計画の作成に関わる構成要素である。計画ユニット１０ａ（計画ユニット＃２）や図示されていない、他の計画ユニットの構成や機能は計画ユニット１０と同様である。
【００３２】
ユニット群生成部１１は、ユニット情報と需要情報を参照し、各計画期間における要求出力を満たす供給が可能な運転ユニットの組み合わせを含むユニット群を作成する。ユニット群生成部１１は、それぞれの計画期間について、複数のユニット群を作成する。実際の運転に用いられるユニット群は、この複数のユニット群の中から選択される。以下では、ユニット群生成部１１により作成された、選択前のユニット群をユニット群候補と呼ぶことにする。電力システムの場合、ユニット群（ユニット群候補）は各計画期間で稼働する発電所（発電機）の組み合わせとなる。
【００３３】
ユニット群選択部１２は、それぞれの計画期間について、複数のユニット群候補の中から、実際の運転に用いるユニット群をひとつ選択する。各計画期間においては、運転ユニットの稼働と停止にかかるコストや、運転ユニットの最小稼働時間や最小停止時間などの制約条件を満たすようにユニット群を選択する必要がある。したがって、ある計画期間におけるユニット群の選択は、その前後の計画期間におけるユニット群に依存することがある。
【００３４】
ユニット選択部１３は、運転計画の作成時に、リーダーユニットとなる計画ユニットを決定する。また、供給計画の作成時に、計画ユニットへ供給計画作成権限が与えられた場合、ユニット選択部１３は、計画作成部１４に、供給計画の作成（更新）を指示する。また、ユニット選択部１３は各計画期間におけるユニット群の中から、次に供給計画作成権限を付与する計画ユニットを決定する。供給計画とは、運転計画の一部分であり、特定の計画期間に係るユニット群の各々の運転ユニットの出力設定に関する情報である。供給計画の詳細については後述する。
【００３５】
計画作成部１４は、ユニット選択部１３からの指示を受け、初期状態の供給計画の作成と供給計画の更新を行う。計画作成部１４は更新した供給計画を記憶部１６に保存する。また、計画作成部１４は更新後の供給計画を、送受信部１５を通じて他の計画ユニットへ送信することができる。
【００３６】
送受信部１５は、ネットワーク３０に接続されており、データを送受信する機能を有する。送受信部１５の機能により、各計画ユニット間のデータの送受信ならびに各計画ユニットと管理サーバ５０間のデータの送受信が実現される。送受信部１５は、データの送信先計画ユニットからの応答の有無または応答内容に基づき、他の計画ユニットの故障などを検出することができる。送受信部１５で送信されるデータと受信されるデータの詳細については後述する。
【００３７】
記憶部１６は、ユニット群に含まれる運転ユニットの運転条件情報と、供給計画などのデータを保持する。記憶部１６には、運転計画作成処理の各段階における作業用データも保存される。作業用データは、ユニット群の作成処理、ユニット群の選択処理、供給計画の更新処理の実行中または実行後に保存されるデータを含む。記憶部１６は、ＳＲＡＭ、ＤＲＡＭなどの揮発性メモリでも、ＮＡＮＤ、ＭＲＡＭ、ＦＲＡＭなどの不揮発性メモリでもよい。またハードディスク、ＳＳＤなどのストレージ装置でもよい。
【００３８】
運転制御部１７は、記憶部１６に保存された供給計画に従って、ペアとなっている運転ユニットの運転を行う。運転制御部１７は、運転ユニットの稼働操作、停止操作、出力変更操作、設定変更操作などを行うことができる。さらに運転制御部１７は、運転ユニットの追加、削除、故障、状態の変化などを検出することができる。運転ユニットの追加、削除、故障、状態の変化などが検出された場合、運転制御部１７は、これらの変更内容を管理サーバ５０に通知する。管理サーバ５０は通知された変更内容をユニット情報データベース５６に反映する。運転制御部１７が運転ユニット１００の制御に用いるインタフェースと通信規格は特に問わない。運転制御部１７は、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓ、ＵＳＢ、ＵＡＲＴ、ＳＰＩ、ＳＤＩＯ、シリアルポート、イーサネットなどの電気的な信号を送受信して運転ユニット１００を制御してもよいし、各種の無線通信方式により運転ユニット１００を制御してもよい。
【００３９】
図２の計画ユニット１０および管理サーバ５０の各構成要素は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などのプロセッサで動作するソフトウェア（プログラム）によって構成されてもよいし、ＦＰＧＡやＡＳＩＣなどのハードウェアによって構成されてもよいし、これらの組み合わせによって構成されてもよい。
【００４０】
運転計画は、需要情報と、各計画期間において稼働するユニット群の情報と、各ユニット群に含まれる各々の運転ユニットの出力設定である供給計画の３つに分けられる。運転計画の作成処理も、大きく分けると需要情報の取得、ユニット群の作成と選択、供給計画の作成の３つに分類される。以下では、運転計画システムによる運転計画の作成処理を説明する。
【００４１】
図４は、運転計画システムの処理全体に係るフローチャートである。以下では図４のフローチャートに沿って、運転計画処理の概要を説明する。
【００４２】
運転計画システムは最初に各計画期間における要求出力を表した需要情報を用意する。（ステップＳ１０１）図３は需要情報の例を示している。運転計画システムは、需要情報をもとに運転計画の作成を行う。需要情報は運転計画システムで作成してもよいし、別のシステムで作成したものを取得してもよい。需要情報は管理サーバ５０の需要情報データベース５５に保存される。
【００４３】
電力システムの場合、電力需要データから需要情報を作成することができる。図５は１日間の電力需要データの例である。図５のグラフの縦軸はＭＷ単位の電力を示している。グラフの横軸は時刻を示している。電力需要データは、過去の実績値を用いてもよいし、予想値を用いてもよい。電力需要データを階段グラフに変換することにより、図３のような需要情報が得られる。需要情報の長さは２４時間または４８時間でもよいし、異なる長さであってもよい。
【００４４】
例えば、電力需要データを複数の時間帯に区切り、各時間帯における最大の電力需要を要求出力に設定すると、需要情報が得られる。時間帯は一定期間ごとに区切ってもよいし、異なる長さの期間で区切ってもよい。区切られた時間帯は、需要情報における計画期間となる。各時刻において電力需要に対する適度な供給予備力を確保できるよう、需要情報への変換を行う。供給予備力とは、予想される電力需要に対する余力であり、例えば予想最大電力に対し５％〜８％の値を設定する。
【００４５】
需要情報は、複数の計画期間に分けられる。また、各計画期間における要求出力は一定の値に設定されている。例えば、図３の例では、需要情報は要求出力Ｄ１の計画期間ｐ１、要求出力Ｄ２の計画期間ｐ２、要求出力Ｄ３の計画期間ｐ３、要求出力Ｄ４の計画期間ｐ４、要求出力Ｄ５の計画期間ｐ５に分けられる。時刻ｔ２、ｔ３、ｔ４、ｔ５は、計画期間の切り替えタイミングとなっている。
【００４６】
次に、運転計画システムはリーダーユニットとなる計画ユニットを決定する。（ステップＳ１０２）リーダーユニットとは、運転計画作成時にユニット群候補作成処理と実際の運転に用いるユニット群の選択処理を行う計画ユニットのことをいう。リーダーユニットの決め方にはいくつかの方法がある。
【００４７】
例えば、運転ユニットの出力値と運転コストの比を優先度とし、ユニット群の中で当該優先度が最大となる計画ユニットをリーダーユニットに選ぶことができる。ユニット情報データベース５６にあらかじめリーダーユニットとなる計画ユニットを設定してもよい。また、運転計画システムを起動したとき、最初に立ち上がった計画ユニットをリーダーユニットにしてもよい。ユニット情報データベース５６のユニット情報に対して、計算式を適用し、値が最大となった計画ユニットをリーダーユニットにすることもできる。リーダーユニットはその他の方法で決めてもよく、方法は特に問わない。
【００４８】
図６では運転計画作成時におけるユニット群の生成と選択例を示している。図６の例では、計画ユニット１０ｂ（計画ユニット＃３）がリーダーユニットとなっている。
【００４９】
次に、リーダーユニットは各計画期間について要求出力を満たす複数のユニット群の集合（ユニット群候補）を作成する。（ステップＳ１０３）
【００５０】
ユニット群候補の作成は、ユニット群生成部１１により実行される。ユニット群生成部１１は、管理サーバ５０のユニット情報データベース５６からユニット情報を、需要情報データベース５５から需要情報を取得する。ユニット群生成部１１はユニットの個数と出力を含むユニット情報と、各時刻において要求されている出力値を含む需要情報を用いて、複数のユニット群候補を作成する。作成されたユニット群候補に係るデータは記憶部１６に保存される。
【００５１】
図６の中段には、ユニット群候補を格納した複数のテーブルが示されている。ここでは、計画期間ｐ１に係るユニット群候補を格納したテーブル３０１と、計画期間ｐ２に係るユニット群候補を格納したテーブル３０２、計画期間ｐ３に係るユニット群候補を格納したテーブル３０３、計画期間ｐ４に係るユニット群候補を格納したテーブル３０４、計画期間ｐ５に係るユニット群候補を格納したテーブル３０５が作成されている。
【００５２】
テーブル３０１の右側の列には、ユニット群候補を表す識別子が格納されている。Ｘ１１〜Ｘ１９の識別子は、それぞれ別々のユニット群候補に対応している。テーブル３０１を参照すると、ユニット群候補Ｘ１１〜Ｘ１９の９つのユニット群候補が作成されていることがわかる。同様に、テーブル３０２にはユニット群候補Ｘ２１〜Ｘ２８の８つのユニット群候補が格納されている。テーブル３０３にはユニット群候補Ｘ３１〜Ｘ３６の６つのユニット群候補が格納されている。テーブル３０４にはユニット群候補Ｘ４１〜Ｘ４８の８つのユニット群候補が格納されている。テーブル３０５にはユニット群候補Ｘ５１〜Ｘ５９の９つのユニット群候補が格納されている。ユニット群候補の識別子は一例であり、その他の形式による識別子を用いてもよい。
【００５３】
テーブル３０１の左側の列には、運転ユニットと計画ユニットのペアを表す識別子が保存されている。例えば、ユニット群候補Ｘ１１の行には、識別子として「２」と「３」が格納されている。ここで、識別子「２」は運転ユニット＃２と計画ユニット＃２のペアを、識別子「３」は運転ユニット＃３と計画ユニット＃３のペアに対応している。これより、ユニット群候補Ｘ１１は、運転ユニット＃２と、運転ユニット＃３と、計画ユニット＃２と、計画ユニット＃３とを含むことがわかる。運転ユニットと計画ユニットのペアを表す識別子は一例であり、その他の形式による識別子を用いてもよい。
【００５４】
他のテーブルの見方も上述と同様である。例えば、テーブル３０３に格納されている、ユニット群候補Ｘ３１は、運転ユニット＃１と、運転ユニット＃２と、運転ユニット＃３と、運転ユニット＃９と、計画ユニット＃１と、計画ユニット＃２と、計画ユニット＃３と、計画ユニット＃９とを含むことがわかる。
【００５５】
図７は、作成されたユニット群と要求出力との関係を示している。図７より、各計画期間におけるユニット群候補は、需要情報の要求出力を満たせる出力が得られる複数のユニット群の組み合わせであることがわかる。要求出力が比較的小さい計画期間ｐ１、ｐ５においては、ユニット群候補は平均して約２．１個の運転ユニットを含んでいる。しかし、要求出力が最も大きい計画期間ｐ３においては、ユニット群候補は平均して約４．２個の運転ユニットを含んでいる。
【００５６】
次に、リーダーユニットは各計画期間において、実際に稼働する運転ユニットの組み合わせを含む、ユニット群をユニット群候補の中から選択する。（ステップＳ１０４）以下ではこの処理をユニット群の選択と呼ぶことにする。各計画期間におけるユニット群の選択は、制約条件を満たしている必要がある。制約条件の例としては、運転ユニットの最小稼働時間や最小停止時間などがある。運転ユニットの最小稼働時間や最小停止時間が定義されている場合、計画期間の切り替えタイミングにおいて停止が可能な運転ユニットと、停止できない運転ユニットと、起動が可能な運転ユニットと、起動できない運転ユニットがユニット群内に存在することになる。
【００５７】
運転ユニットにその他の制約条件があってもよい。例えば、太陽光発電所や風力発電所のように天候によって出力が左右される運転ユニットの場合には、天候条件によって運転の可否が決まってもよい。また、揚水式発電所のように、余剰電力を用いて水の汲み上げることが発電を行うための条件となっている発電所もある。このような場合、他の運転ユニットが一定期間稼働していることが、運転ユニットを起動する前提条件となる。
【００５８】
制約条件が存在するため、ユニット群の選択処理は組み合わせ最適化問題の一種であるといえる。後述するように、遺伝的アルゴリズム（ｇｅｎｅｔｉｃ  ａｌｇｏｒｉｔｈｍ）、強化学習（ｒｅｉｎｆｏｒｃｅｍｅｎｔ  ｌｅａｒｎｉｎｇ）や貪欲法（ｇｒｅｅｄｙ  ａｌｇｏｒｉｔｈｍ）などを用いて制約条件を満たすユニット群の組み合わせを探索することができる。これらのアルゴリズムを用いることにより、探索時間の高速化をはかることができる。
【００５９】
ユニット群の選択処理はユニット群選択部１２により実行される。ユニット選択部１３は、記憶部１６を参照し、ユニット群生成部１１が作成した、ユニット群候補のデータを取得する。ユニット選択部１３は、複数のユニット群候補の中から、各計画期間についてユニット群をひとつずつ選択する。ユニット選択部１３は、選択されたユニット群の情報を管理サーバ５０に送信する。管理サーバ５０は選択されたユニット群の情報を計画情報データベース５７に保存する。
【００６０】
図６の下段には、ユニット群の選択処理の結果、選択された各計画期間に係るユニット群が示されている。計画期間ｐ１については、計画ユニット＃２、＃３、＃９を含むユニット群３０１ａが示されている。したがって、計画期間ｐ１には、計画ユニット＃２、＃３、＃９を含むユニット群候補Ｘ１４がユニット群として選択されたことがわかる。
【００６１】
計画期間ｐ２については、計画ユニット＃２、＃３、＃５、＃９を含むユニット群３０２ａが示されている。したがって、計画期間ｐ２には、計画ユニット＃２、＃３、＃５、＃９を含むユニット群候補Ｘ２４がユニット群として選択されたことがわかる。
【００６２】
同様の対応関係から、計画期間ｐ３については、ユニット群Ｘ３５がユニット群として選択され、計画期間ｐ４にユニット群Ｘ４８、計画期間ｐ５にユニット群Ｘ５９がユニット群として選択されたことがわかる。
【００６３】
各計画期間について選択されたユニット群に含まれる計画ユニットが供給計画の作成を行い、各計画期間について選択されたユニット群に含まれる運転ユニットが供給計画に基づいて稼働する。
【００６４】
次に各計画期間についてユニット群に属する各計画ユニットは協調して供給計画を作成する。（ステップＳ１０５）
【００６５】
供給計画の作成および更新処理は、各計画ユニットの計画作成部１４により実行される。ユニット群に属する各計画ユニットは、管理サーバ５０より、当該ユニット群に属する全運転ユニットの運転条件情報を取得する。運転条件情報は、ユニット情報のうち、運転ユニットの制御時に用いる情報である。電力システムの場合、運転条件情報には、発電量の上限と下限、最大稼働時間、最小稼働時間、各種のコスト指標、発電力変化率などが含まれる。運転条件情報は、記憶部１６に保存される。
【００６６】
計画作成部１４は、ユニット群に属する全運転ユニットの運転条件情報に基づき、供給計画の作成と更新を行う。計画作成部１４は計画ユニットに供給計画作成権限がある場合にのみ、供給計画の作成と更新を行うことができる。ユニット選択部１３は、計画ユニットにおける供給計画作成権限の有無に関する情報を、計画作成部１４に提供する。
【００６７】
計画作成部１４により供給計画の作成と更新が実行されると、ユニット選択部１３は次に供給計画作成権限を与える計画ユニットを決定する。計画作成部１４は、供給計画作成権限が与えられた計画ユニットへ、更新後の供給計画を送信する。供給計画を受信した計画ユニットの計画作成部１４は、供給計画の更新を行う。ユニット選択部１３が他のユニットへの供給計画作成権限付与通知を行ってもよいし、供給計画の受信をもって、供給計画作成権限が付与されたと判断してもよい。供給計画が完成するまで、各計画ユニットの計画作成部１４は供給計画の更新を続ける。
【００６８】
図８は供給計画作成処理の例を示している。図８で示されている処理は、図６に示されている処理の続きである。以下では、図８に沿って供給計画作成処理について説明する。
【００６９】
図８の例では、最初にリーダーユニットである計画ユニット＃３が計画期間ｐ１に係る供給計画を作成する。ここで作成される供給計画は未完成なものである。当該供給計画の合計出力は、需要情報における計画期間ｐ１の要求出力と一致しているとは限らない。したがって、運転ユニットの合計出力が要求出力と同じ値になるまで、ユニット群Ｘ１４に属する各計画ユニットは、交替して供給計画の調整を続ける。
【００７０】
計画ユニット＃３は次に供給計画の調整を行う計画ユニットとして、計画ユニット＃２を指定したとする。計画ユニット＃３は調整後の供給計画を計画ユニット＃２に送信する。このとき、供給計画作成権限が計画ユニット＃３から計画ユニット＃２に移されている。計画ユニット＃２は供給計画の調整後、次に供給計画の調整を行う計画ユニットとして計画ユニット＃９を指定する。計画ユニット＃２は調整後の供給計画を計画ユニット＃９に送信する。このとき、供給計画作成権限は計画ユニット＃２から計画ユニット＃９に移されている。
【００７１】
上述のような交替的な供給計画の調整処理は、供給計画の出力値が需要情報における要求出力と同じ値になるまで続けられる。供給計画の出力値が要求出力と等しくなると、供給計画作成権限を有する計画ユニットは次に供給計画の作成が行われる計画期間に係るユニット群の中から、供給計画作成権限を付与する計画ユニットを選択する。
【００７２】
図８の例の場合、計画ユニット＃２が供給計画作成権限を有するときに供給計画の合計出力が要求出力に等しくなったとする。計画ユニット＃２は次に供給計画の作成が行われる計画期間ｐ２に係るユニット群Ｘ２４の中から計画ユニット＃５を選択する。したがって、ユニット＃５に供給計画作成権限が付与され、ユニット＃５は計画期間ｐ２に係る初期状態の供給計画を作成する。
【００７３】
計画期間ｐ２以降の供給計画作成処理は上述と同様である。図８の例では、供給計画ｐ１、ｐ２、ｐ３、ｐ４、ｐ５の順で供給計画の作成が行われているが、これとは異なる順序で供給計画の作成を行ってもよい。例えば、要求出力が大きい計画期間を優先して供給計画の作成を行ってもよい。この場合、図８の例では、供給計画ｐ３、ｐ２、ｐ４、ｐ１、ｐ５の順で供給計画の作成をすることになる。
【００７４】
供給計画の作成中にシステムの構成変更が検出された場合、供給計画を再調整することができる。システムの構成変更には、計画ユニットと運転ユニットのペアの追加ならびに計画ユニットまたは運転ユニットの故障がある。計画ユニットと運転ユニットの故障検出は、管理サーバ５０が行ってもよいし、計画ユニットが行ってもよい。故障検出の手段としては、ハートビート信号の送信などがあるが、特に方法は問わない。
【００７５】
計画ユニットと運転ユニットのペアの追加は動的に行うこともできる。図８の例では、運転ユニット＃１の起動に一定の時間を要するため、計画期間ｐ４に係るユニット群に計画ユニット＃１が追加されている。管理サーバ５０は、運転ユニット＃１と計画ユニット＃１のペアがシステムに追加されたことを全計画ユニットへ通知することができる。当該通知がなされると、供給計画の作成を行う各計画ユニットはユニット群に計画ユニット＃１と運転ユニット＃１を追加できるようになる。
【００７６】
図８の例では、計画期間ｐ２に係る供給計画の作成中に計画ユニット＃４の故障が検出されたとする。故障が検出されたときに、供給計画作成権限が計画ユニット＃２に与えられていたとする。このとき計画ユニット＃２は各計画期間に係るユニット群から故障した計画ユニット＃４を削除する。具体的には、計画期間ｐ３に係るユニット群Ｘ３５と、計画期間ｐ４に係るユニット群Ｘ４８と、計画期間ｐ５に係るユニット群Ｘ５９から運転ユニット＃４および計画ユニット＃４を削除する。なお、運転ユニット＃４の故障が検出された場合の処理も同様である。
【００７７】
故障した計画ユニット＃４が削除された場合、計画ユニット＃２は供給計画の調整処理を続行できるよう、最小限の運転計画の変更を行う。図８の例では、計画期間ｐ３に係るユニット群へ計画ユニット＃５と運転ユニット＃５が追加されている。計画期間ｐ４に係るユニット群には、計画ユニット＃６と運転ユニット＃６が追加されている。計画期間ｐ５に係るユニット群には、計画ユニット＃８と運転ユニット＃８が追加されている。計画期間ｐ３、ｐ４、ｐ５に係る供給計画の作成処理は、変更後のユニット群によって実行される。このように、供給計画の作成中においても、動的な計画ユニットの追加と削除を行うことができる。
【００７８】
各計画期間に係る供給計画の作成は制約条件を満たすように行われる。制約条件に加え、コストなどの指標を用いて供給計画の作成と調整を行ってもよい。
【００７９】
すべての計画期間について供給計画の作成が完了したら、システムは供給計画に基づきシステムの運転を開始する。（ステップＳ１０６）電力システムの場合、この段階で複数の発電所（発電機）を組み合わせた電力の供給が始まる。
【００８０】
需要情報に基づいて作成された供給計画に沿って各発電所の運転を行ったら、適度な供給予備力を保ちつつ、電力需要に対して過不足のない電力の供給が行われることが期待される。しかし、発電所の発電機や送電線の故障が発生し、供給計画で稼働させる予定の発電所から電力が得られなくなる場合がある。また、急激な気温変動により冷暖房の使用率などが上昇し、電力需要が大きくなった場合、電力供給量が不足するおそれもある。
【００８１】
本発明の実施形態では、システムの運転開始後に運転ユニットの故障や需要の大きな変動があった場合にも、システムを停止させることなく、運転計画の再作成を迅速に行うことができる。すなわち、システムは運転中に需要情報の要求出力およびユニット情報を確認する。システムは要求出力またはユニット情報の変更を検出したら、供給計画の再調整またはユニット群の再構成を行う。（ステップＳ１０７）ユニット群の再構成とは、もとのユニット群に運転ユニットと計画ユニットのペアの追加、運転ユニットと計画ユニットのペアの削除、またはこれらの組み合わせからなる操作を行うことをいう。
【００８２】
変更が供給計画の再調整で対応できるものであれば、供給計画の再調整を行い、ユニット群に含まれる各運転ユニットの出力を調整する。もし変更の影響が大きく供給計画の再調整だけで対応できない場合、ユニット群の再構成をしてから、供給計画の再調整を実行する。処理の詳細については後述する。
【００８３】
本発明の実施形態の方法で複数の運転ユニットを含むシステムの運転計画の作成を行うことにより、運転計画の作成中またはシステムの稼働中においても、構成変更や需要変動に対応することができる。また、中央の管理サーバなどで集中的に運転計画の作成を行う場合に比べ、計画作成にかかる時間を削減し、システムのスケーラビリティを高められる。
【００８４】
ここまで、運転計画処理の概要について説明したが、以下ではさらに詳細な説明を行う。まず、リーダーユニットが運転計画処理において、最初に実行するユニット群候補作成処理について説明する。
【００８５】
図９はユニット群候補作成処理を示したフローチャートである。ユニット群候補作成処理では、各計画期間について複数のユニット群候補が作成される。以下では図９のフローチャートに沿って説明をする。
【００８６】
まず、リーダーユニットは、各計画期間における需要情報を取得する。（ステップＳ２０１）需要情報は、各計画期間で要求されている出力（要求出力）に示すデータである。
【００８７】
次に、リーダーユニットは各計画期間における要求出力の範囲を設定する。（ステップＳ２０２）ある計画期間における需要情報の要求出力をＤとすると、要求出力の範囲は［α×Ｄ、β×Ｄ］となる。ここで、係数αは１以下の数、係数βは１より大きい数である。係数αとしては、例えば１．０、１．１などの値を設定できるが、異なる値であってもよい。係数βとしては、例えば１．２、１．３などの値を設定できるが、異なる値であってもよい。運転計画の作成中またはシステムの稼働中に需要変動が生じた場合、要求出力の範囲を、ユニット群の再構成を行うか否かの判断基準に使うことができる。
【００８８】
例えば、需要変動が要求出力の範囲内にある場合、ユニット群の再構成を行わず、現状のユニット群のままで供給計画の再調整をする。需要変動が要求出力の範囲外である場合に限り、ユニット群の再構成を行うことができる。これにより、需要変動の発生時における、再計画にかかる負担を減らすことができる。また、計画期間の切り替えタイミングで、運転ユニットの立ち上げと停止が行われる頻度を減らし、運転コストを抑制することができる。
【００８９】
次に、各計画期間に係るユニット群候補の作成順序を決定する。（ステップＳ２０３）計画期間の時系列順にユニット群候補を作成してもよい。また、要求出力が最大となる計画期間ですべての運転ユニットの稼働が求められる場合には、要求出力が大きい計画期間に係るユニット群候補を優先的に決定してもよい。逆に、要求出力が小さい計画期間に係るユニット群候補を優先的に決定してもよい。ユニット群の作成順序はその他の方法で決定してもよい。
【００９０】
次に最初に作成対象とする計画期間について、要求出力の範囲内の出力が得られるユニット群候補を複数作成する。（ステップＳ２０４）当該計画期間について、要求出力の範囲内の合計出力が得られる運転ユニットを含むユニット群候補を、複数作成する。
【００９１】
そして、次にユニット群候補を作成する計画期間を選ぶ。直前にユニット群候補の作成対象とされた計画期間に最も要求出力が近い計画期間を、次にユニット群候補を作成する計画期間にすることができるが、その他の方法で計画期間を選んでもよい。例えば、時系列で前または後にある計画期間を選択してもよい。直前に作成されたユニット群候補に部分的な変更を加え、当該計画期間に係るユニット群候補を複数作成する。（ステップＳ２０５）
【００９２】
作成対象とされる計画期間の要求出力が、直前に作成したユニット群候補に係る計画期間の要求出力に比べて大きい場合には、直前に作成したユニット群候補に運転ユニットと計画ユニットのペアを追加することにより、新しいユニット群候補を作成する。作成対象とされる計画期間の要求出力が、直前に作成したユニット群候補に係る計画期間の要求出力に比べて小さい場合には、直前に作成したユニット群候補からユニットを削除し、新たなユニット群候補を作成する。計画期間の要求出力の差が小さい場合には、直前に作成したユニット群候補をそのまま用いてもよい。
【００９３】
次のステップＳ２０６では、すべての計画期間について複数のユニット群候補が作成されたか、確認をする。すべての計画期間について、複数のユニット群候補の作成が完了した場合、複数のユニット群候補の情報と要求出力の範囲を計画情報データベース５７へ保存する。（ステップＳ２０７）すべての計画期間について、複数のユニット群候補の作成が完了していない場合は、再びステップＳ２０５を実行する。
【００９４】
ステップＳ２０７の実行後、ユニット群候補作成処理は完了する。次のユニット群選択処理を実行することにより、ユニット群候補の中から実際の運転に使われるユニットの組み合わせが選ばれる。
【００９５】
次に、ユニット群の選択処理の例について説明する。ユニット群の選択処理では制約条件を満たしたユニット群の選択を行う必要がある。このため、ユニット群の選択処理は組み合わせ最適化問題の一種であるといえる。
【００９６】
図１０は、遺伝的アルゴリズムによりユニット群の選択を行った例を示している。
【００９７】
最初に、各計画期間に係る複数のユニット群候補の中からユニット群をひとつずつランダムに選択する。これにより、それぞれの計画期間について、ユニット群がひとつずつ割り当てられた、ユニット群の組み合わせを作成する。この処理をＭ回繰り返すことにより、ユニット群の組み合わせをＭ個用意する。
【００９８】
次に、それぞれのユニット群の組み合わせが制約条件を満たしているかを確認する。運転ユニットが発電所（発電機）である場合、最小稼働時間と最小停止時間が制約条件となる。さらにユニット群の組み合わせの評価スコアを計算する。運転ユニットが発電所（発電機）である場合、評価スコアはスタートアップコスト（コールドスタートアップコストまたはホットスタートアップコスト）と、シャットダウンコストと、発電コストの和となる。この評価スコアは一例であり、その他の指標を用いて評価コストを算出することもできる。例えば、各種の環境負荷に関する指標を用いてもよい。
【００９９】
制約条件を満たしていないユニット群の組み合わせについては、評価スコアの計算対象から除外してもよいし、評価スコアの計算値に９９９９９９９などの数を乗じ、評価スコアの値を大きく設定してもよい。以上の処理により、図１０の例ではＭ個のユニット群の組み合わせと評価スコアからなるテーブル９１が得られている。
【０１００】
遺伝的アルゴリズムを用いたユニット群の選択処理では、比較的評価スコアが小さいユニット群の組み合わせを使って、さらに評価スコアが小さくなるユニット群の組み合わせを探し出す。まず、最初に作成したＭ個のユニット群の組み合わせの中から評価スコアが最も小さいユニット群の組み合わせを２つ抽出する。抽出した２つのユニット群の組み合わせに対して遺伝的アルゴリズムの交叉と突然変異操作を行い、新しいユニット群の組み合わせを２つ生成する。遺伝的アルゴリズムにより生成された、２つのユニット群の組み合わせについても、それぞれの評価スコアを求める。
【０１０１】
図１０の例では、テーブル９１から、評価スコアが９０である、組み合わせ＃２と、評価スコアが８０である、組み合わせ＃３が抽出される。抽出した２つのユニット群の組み合わせに遺伝的アルゴリズムの交叉と突然変異操作を適用し、さらに新しいユニット群の組み合わせを２つ生成する。これらのユニット群の組み合わせについても評価スコアを求める。
【０１０２】
上述の操作により、合計４つのユニット群の組み合わせが得られる。当該ユニット群の組み合わせの中から、評価スコアが最も小さいユニット群の組み合わせを２つ抽出する。この２つのユニット群の組み合わせに対して、遺伝的アルゴリズムの交叉と突然変異操作をさらに適用する。これにより、２つのユニット群の組み合わせが新たに生成される。これらのユニット群の組み合わせについても評価スコアを計算する。
【０１０３】
以上の操作で６つのユニット群の組み合わせと評価スコアが得られる。図１０のテーブル９２では、上述のような評価スコアが最小となる２つのユニット群の組み合わせの抽出、遺伝的アルゴリズムによる２つのユニット群の組み合わせの生成、評価スコアの算出に係る処理がＱ／２回繰り返され、Ｑ個のユニット群の組み合わせが作られている。
【０１０４】
上述の処理は終了条件が満たされるまで繰り返し実行される。評価スコアがしきい値以下のユニット群の組み合わせが得られたら処理を終了してもよい。また、処理の反復回数が上限に達したことを終了条件にしてもよい。
【０１０５】
図１０のテーブル９３は、最終的に得られるＭ個のユニット群の組み合わせである。テーブル９３のうち、組み合わせ＃１と組み合わせ＃２は、最初にテーブル９１から抽出したユニット群の組み合わせである。残りのＭ−２個のユニット群の組み合わせは、遺伝的アルゴリズムにより作り出されたユニット群の組み合わせである。
【０１０６】
ユニット群の選択処理においては、テーブル９３のうち、評価スコアが最小のユニット群の組み合わせを、各計画期間に用いるユニット群に選んでもよい。その他のユニット群の組み合わせは、ユニット群の再構成が行われるときに用いてもよい。例えば、計画ユニットまたは運転ユニットの故障が発生した場合には、テーブル９３のうち故障のある計画ユニットと運転ユニットのペアを含まないユニット群の組み合わせを、各計画期間に用いるユニット群に設定することができる。
【０１０７】
各計画期間において稼働するユニット群が選択された後、各計画期間に係るユニット群に含まれる計画ユニットは協調して供給計画の作成を行う。以下では供給計画の作成処理の詳細について説明する。供給計画の作成処理は、特定の計画ユニットが実行する初期状態の供給計画の作成処理と、ユニット群の各計画ユニットが行う供給計画の調整処理とを含む。
【０１０８】
運転計画のそれぞれの計画期間について、供給計画作成処理が実行される。例えば、運転計画に計画期間ｐ１、ｐ２、ｐ３、ｐ４、ｐ５がある場合、計画期間ｐ１に係る供給計画と、計画期間ｐ２に係る供給計画と、計画期間ｐ３に係る供給計画と、計画期間ｐ４に係る供給計画と、計画期間ｐ５に係る供給計画がそれぞれ作成される。各計画期間に係る供給計画の作成処理は、当該計画期間に係るユニット群に含まれる計画ユニットによって実行される。
【０１０９】
供給計画作成処理は、計画期間に係る供給計画が完成するまで、複数の計画ユニットによって、繰り返し実行される。供給計画作成権限を有する計画ユニットが、供給計画作成処理を実行することができる。各計画ユニットは、その回における処理が完了したら、供給計画作成権限を次の計画ユニットに与える。したがって供給計画作成権限は、ユニット群に属する各計画ユニットの中で巡回する。供給計画作成処理は、ユニット群内の各計画ユニットが交替して供給計画の調整を行う処理であるといえる。供給計画の作成処理では、さらに需要変動とユニット構成変更を検出したときに、供給計画の再調整を行う。
【０１１０】
図１１と図１２は、供給計画作成処理に係るフローチャートである。以下では図１１と図１２のフローチャートに沿って、処理を説明する。図１１と図１２のフローチャートに係る処理は、計画ユニットの計画作成部１４がユニット選択部１３から供給計画の作成（更新）の指示を受けたときに実行される。
【０１１１】
まず供給計画作成権限を有する計画ユニットは、需要変動の有無を確認する。（ステップＳ３０１）すなわち、計画作成部１４は管理サーバ５０の需要情報データベース５５を参照し、いずれかの計画期間における要求出力に変更があるかを確認する。要求出力に変更がない場合、ユニット構成変更の有無を確認する。（ステップＳ３０２）要求出力に変更がある場合には、運転計画変更の範囲を確認する。（ステップＳ３０４）
【０１１２】
ステップＳ３０２で供給計画作成権限を有する計画ユニットは、ユニット構成に変更があるか確認をする。計画作成部１４は、管理サーバ５０のユニット情報データベース５６を参照し、ユニット情報を確認する。計画ユニットまたは運転ユニットの故障があったり、計画ユニットまたは運転ユニットの削除があったり、計画ユニットと運転ユニットのペアが追加されている場合、ユニット構成に変更があると判定する。ユニット構成に変更がある場合、運転計画変更の範囲を確認する。（ステップＳ３０４）ユニット構成に変更がない場合、供給計画が作成済みか確認する。（ステップＳ３０３）
【０１１３】
ステップＳ３０３で供給計画作成権限を有する計画ユニットは、ユニット群に係る供給計画が作成済みであるかを確認する。当該ユニット群について供給計画作成処理が初めて実行された場合には、初期状態の供給計画を作成する。（ステップＳ３０６）すでに当該ユニット群の供給計画が作成済みである場合には、供給計画の調整を行う。（ステップＳ３０７）
【０１１４】
ステップＳ３０４で、供給計画作成権限を有する計画ユニットは、検出された変更（変動）が、現在のユニット群の出力の範囲内で対応可能であるかを確認する。需要情報の要求出力が大きくなったときや、ユニット群に属する計画ユニットまたは運転ユニットが故障したときには、現在のユニット群内で使用可能な運転ユニットの合計出力が要求出力を下回るおそれがあるため、必ず確認を行う。
【０１１５】
検出された変更（変動）が大きく、現在のユニット群の出力で対応できないと判断された場合、変更（変動）がある計画期間に係るユニット群の再構成を行う。（ステップＳ３０５）ユニット群の再作成が行われた後、作成対象の計画期間に係る初期状態の供給計画が作成される。（ステップＳ３０６）現在のユニット群の出力で、変更（変動）に対応できる場合には、ユニット群の再構成を行わず、初期状態の供給計画を作成する。（ステップＳ３０６）
【０１１６】
ステップＳ３０６で、供給計画作成権限を有する計画ユニットは、特定の計画期間に係る初期状態の供給計画を作成する。初期状態の供給計画の作成は、需要変動や運転ユニットの故障などが検出された場合にも実行される。計画作成部１４は、需要情報データベース５５から取得した需要情報と、ユニット情報データベース５６から取得した運転条件情報を用いて、初期状態の供給計画を作成する。作成された供給計画は記憶部１６に保存される。初期状態の供給計画が作成済みである場合、計画ユニットは当該供給計画の調整処理を実行する。（ステップＳ３０７）
【０１１７】
需要情報の要求出力が小さくなった場合には、運転コストを下げるためにユニット群の再構成を行ってもよいし、運転計画の再調整を行ってもよい。また、計画ユニットと運転ユニットのペアがシステムに追加された場合には、新しい計画ユニットと運転ユニットのペアをいずれかのユニット群に追加してもよい。例えば、新しい運転ユニットの運転コストが小さい場合には、ユニット群にある他の運転ユニットと新しい運転ユニットの入れ替えを行うことができる。この場合、実際には計画ユニットと運転ユニットのペアの入れ換え処理が行われる。計画ユニットと運転ユニットのペアが入れ換えられた場合には、初期状態の供給計画が作成された後に、当該供給計画の調整処理が実行される。
【０１１８】
ステップＳ３０７では、供給計画調整の処理が実行される。電力システムの発電所（発電機）が運転ユニットである場合、ユニット群の出力値が要求出力に等しくなるよう、発電量とコスト値の調整を行うことができる。このとき、計画作成部１４は調整後の供給計画を記憶部１６に保存する。電力システムにおける供給計画調整処理の具体例については後述する。
【０１１９】
次に、計画期間に係るユニット群についての供給計画調整処理が完了しているかを確認する。（ステップＳ３０８）ユニット群に属する各計画ユニットの出力値が調整された結果、ユニット群の合計出力と、要求出力が等しくなった場合、ユニット群についての供給計画調整処理が完了していると判断することができる。供給計画調整処理が完了している場合、計画作成部１４は供給計画を管理サーバ５０に送信する。管理サーバ５０は、受信した供給計画を計画情報データベース５７に保存する。（ステップＳ３１１）
【０１２０】
ユニット群の合計出力が要求出力と等しくない場合には、供給計画の調整処理を続行する必要があると判断する。この場合、次に供給計画作成権限を与える計画ユニットを特定する。計画作成部１４は、次に供給計画作成権限を得る計画ユニットへ、更新後の供給計画を送信する。（ステップＳ３０９）次に供給計画作成権限を得る計画ユニットはユニット選択部１３が決定する。この後、次の計画ユニットにおける供給計画処理に進む。（ステップＳ３１０）すなわち、次に供給計画作成権限を得た計画ユニットにより、図１１のステップＳ３０１以降の処理が実行され、供給計画の調整が行われる。
【０１２１】
供給計画の調整が完了すると、供給計画は管理サーバ５０の計画情報データベース５７に保存される。（ステップＳ３１１）その後、供給計画をユニット群の全計画ユニットに対して送信（ブロードキャスト）する。（ステップＳ３１２）計画作成部１４は記憶部１６に保存されている供給計画を読みだし、送受信部１５より供給計画を送信する。ユニット群に属する全計画ユニットは同じ供給計画に基づき運転できるようになる。
【０１２２】
次に、すべての計画期間について、供給計画の作成が完了しているか、確認を行う。（ステップＳ３１３）供給計画が作成されていない計画期間がある場合、次に供給計画作成処理を実行するユニット群を特定する。計画作成部１４は、管理サーバ５０の計画情報データベース５７を参照することにより、供給計画が作成されていない計画期間に係るユニット群を特定することができる。その後、当該ユニット群の中で最初に供給計画作成権限を付与する計画ユニットを選択する。（ステップＳ３１４）次に供給計画作成権限が与えられる計画ユニットはユニット選択部１３により決められる。そして、計画作成部１４は、供給計画を、次に供給計画作成権限を取得する計画ユニットに送信する。（ステップＳ３１５）以後、供給計画作成権限を取得した計画ユニットによって、別の計画期間に係る供給計画の作成処理が実行される。
【０１２３】
すべての計画期間について、供給計画の作成が完了した場合、システムに含まれる全計画ユニットに供給計画が共有される。（ステップＳ３１６）ステップＳ３１６では、管理サーバ５０が計画情報データベース５７に保存されている、すべての計画期間に係る供給計画を、システムに含まれる全計画ユニットへ送信（ブロードキャスト）する。なお、各計画ユニットに、管理サーバ５０の計画情報データベース５７を参照させることにより、自ユニットが属さないユニット群に係る供給計画を取得させる場合には、ステップＳ３１６を省略してもよい。
【０１２４】
ステップＳ３１５またはステップＳ３１６の処理が実行されると、供給計画作成処理が完了する。すべての計画期間に係る供給計画が用意されると、システムを運転計画に基づいて稼働させることができる。
【０１２５】
次に、複数の発電所を含む電力システムにおいて発電計画の作成を行う場合における、供給計画作成処理の具体例を説明する。図１３は、運転ユニットが発電所であるときの運転条件情報の一例を示している。
【０１２６】
運転条件情報とは、ユニット情報のうち、運転ユニットの制御に用いられる情報である。運転ユニットが発電所である場合、運転条件情報は、ユニットＩＤ、発電量の下限値Ｐｍｉｎ、発電量の上限値Ｐｍａｘ、発電量変化率ΔＰ、最小稼働時間、最小停止時間、コールドスタートアップコスト（ＣＳＣ）、ホットスタートアップコスト（ＨＳＣ）、シャットダウンコスト（ＳＤＣ）、コスト関数Ｃ（Ｐｉ）と、コスト関数の係数ａ、ｂ、ｃ、ｅ、ρを含む。コスト関数とは、例えば、下記の式（１）のような関数である。
【数１】
2019032659.tif 000003
ここで、ＰｉはユニットＩＤ＿ｉに係る運転ユニット（発電所）の発電量である。式（１）は一例であり、これとは異なるコスト関数を用いてもよい。例えば、コスト関数を微分した関数を使ってもよいし、コスト関数の平均値とコスト関数を微分した関数の積を使ってもよい。
【０１２７】
図１３のテーブルには、合計１０個の運転ユニットに係る運転条件情報が示されている。テーブルの左端にあるユニットＩＤ＿０００１〜００１０は、それぞれの運転ユニット固有の識別子である。したがって、テーブルの各行が、それぞれの運転ユニットに対応している。各運転ユニットの運転コストは、図１３のテーブルのデータをコスト関数Ｃ（Ｐｉ）に代入して求められる。コスト関数Ｃ（Ｐｉ）は、運転ユニットの出力に相当する、発電量をパラメータとする関数である。このため、各運転ユニットの運転コストは発電量によって変動する。
【０１２８】
運転ユニット（発電所）には各種の制約条件が存在する場合がある。図１３の例で発電量Ｐｉは［Ｐｍｉｎ，ｉ、Ｐｍａｘ，ｉ］の範囲内の値をとらなくてはならない。ここで、Ｐｍｉｎ，ｉはユニットＩＤ＿ｉに係る発電所の発電量の最小値であり、Ｐｍａｘ，ｉはユニットＩＤ＿ｉに係る発電所の発電量の最大値である。
【０１２９】
発電所の出力である、発電量の変更についても制約がある。発電所が一度の操作で、発電量変化率の範囲内で発電量の変更を行うことができる。下記の式（２）は一度の操作で許容される、発電量変化率の範囲を表している。
【数２】
2019032659.tif 000004
ここで、Ｐｉ（ｔ）は出力を変更した後の発電量であり、Ｐｉ（ｔ−１）は出力を変更する前の発電量である。ΔＰｉはユニットＩＤ＿ｉに係る発電所の発電量変化率である。
【０１３０】
発電所の稼働と停止タイミングにも一定の制約が存在する。発電所を停止させる場合、停止前の連続稼働時間は最小稼働時間以上でなくてはならない。発電所を稼働させる場合、稼働前の連続停止時間は最小停止時間以上でなくてはならない。最小稼働時間と最小停止時間は、ユニット群選択処理に係る説明で述べたように、ユニット群選択処理における制約条件となっている。
【０１３１】
図１３のコールドスタートアップコストとホットスタートアップコストは発電所を稼働させるのに必要なコストである。条件によっていずれかのスタートアップコストを用いて、コスト計算を行う。発電所の停止時間がしきい値より短い場合、ホットスタートアップコストを用いる。発電所の停止時間がしきい値以上である場合、コールドスタートアップコストを用いる。通常、ホットスタートアップコストよりコールドスタートアップコストの方が大きな値をとる。一方、シャットダウンコストは、発電所を停止させるのに要するコストである。
【０１３２】
スタートアップコストとシャットダウンコストについても、ユニット群選択処理に係る説明で述べたように、ユニット群選択処理における制約条件となっている。これらは運転ユニットの稼働と停止にかかるコストの一部であるため、ユニット群の切り替えコストを示す指標であるといえる。
【０１３３】
計画ユニットの計画作成部１４は、発電量の最大値、発電量の最小値、発電量変化率の上限などの各制約条件を満たした供給計画を作成する。なお、上述の運転条件情報における各指標は例であり、上述とは異なる指標を用いて制約条件を設定し、供給計画を作成することを妨げるものではない。
【０１３４】
図１４は、ある発電所の稼働時間、停止時間、最大発電量の例を示すグラフである。データ系列１４１は稼働時間であり、データ系列１４２は停止時間である。データ系列１４３は最大発電量である。図１４のグラフの横軸は時刻を示している。データ系列１４１、１４２について、縦軸は連続稼働時間または連続停止時間を示している。一方、データ系列１４３について、縦軸はＭＷ単位の供給電力を示している。図１４のように、運転ユニットの一定時間稼働させた後、一定期間運転ユニットを停止させる場合がある。このような運転方法は、運転ユニットに対して定期的な保守点検作業を行う必要がある場合や、特定の装置の摩耗や老朽化を抑制したい場合に行われることがある。
【０１３５】
図１５は、ユニット群の最大発電量の例を示すグラフである。データ系列１５１は電力需要を示しており、データ系列１５２はユニット群の最大発電量を示している。グラフの縦軸はＭＷ単位の電力を示している。グラフの横軸は計画期間である。図１５のグラフにおける計画期間は図５のグラフにおける時刻に対応している。すなわち、図１５の例では、１日間が４８個の計画期間に区切られている。また、データ系列１５１は図５のグラフに示されている電力需要と同一のデータである。
【０１３６】
図１５をみると、ほとんどの計画期間において、ユニット群の最大発電量を表すデータ系列１５２の電力値は、電力需要を表すデータ系列１５１の電力値よりも大きな値をとっている。これより、ほとんどの計画期間において供給予備力が確保されていることがわかる。データ系列１５２はユニット群選択部１２が選択したユニット群の最大出力である。計画作成部１４により供給計画の調整処理が行われ、電力需要に等しい発電量がユニット群から供給される。一方、１５番目の計画期間や２８番目の計画期間では、運転ユニットの故障などが発生していると考えられる。
【０１３７】
運転ユニットの故障や電力需要の増大のため、発電量が不足してしまうおそれがあるときには、優先度に基づいて、代わりの運転ユニットを選定する。代わりの運転ユニットは、すべての計画期間で発電量の最大値、発電量の最小値と、発電量変化率の上限の各制約条件を満たしているものが選ばれる。優先度としては、運転ユニットの出力値と運転コストの比を用いることができる。このような処理を行うことにより、１６番目の計画期間と２９番目の計画期間では最大発電力が大きくなり、再び供給予備力が確保されている。
【０１３８】
図１６は、ある計画期間のユニット群に係る供給計画作成処理の例を示している。図１６では、各運転ユニット（発電所）の計画出力（計画発電量）の調整を行う。
【０１３９】
図１６に示されているテーブル１６０〜１６９は処理の各段階における供給計画である。以下では、各テーブルにあるデータの見方を説明する。テーブル内の各数値は３行目のコストＣを除き、ＭＷ単位の電力となっている。
【０１４０】
テーブル１６０〜１６９の１行目に記載されている記号＃１、＃２、＃３、＃４、＃５はそれぞれの運転ユニットを示している。例えば、運転ユニット＃１に係るデータは２列目に、運転ユニット＃２に係るデータは３列目に保存されている。図１６の例に係る電力システムでは、５つの発電所（運転ユニット）があり、それぞれの発電所が計画ユニットとペアになっている。運転ユニット＃１〜＃５は、同じ記号の計画ユニットとペアになっている。例えば、運転ユニット＃４は計画ユニット＃４とペアになっており、運転ユニット＃５は計画ユニット＃５とペアになっている。
【０１４１】
テーブル１６０〜１６９の２行目に記載されている数値は現時点の計画出力（計画発電量）Ｐ（ｔ）である。例えば、テーブル１６０においては、運転ユニット＃５の現時点における計画出力は４７ＭＷとなっており、運転ユニット＃１の現時点における計画出力は８５ＭＷになっている。
【０１４２】
テーブル１６０〜１６９の３行目に記載されている数値はコストＣである。コストＣは各段階における計画出力Ｐ（ｔ）の値をコスト関数に代入することにより求められる。コスト関数としては、例えば上述の式（１）を用いることができる。例えば、テーブル１６９においては、運転ユニット＃１のコストは６、運転ユニット＃２のコストは７、運転ユニット＃３のコストは５となっている。
【０１４３】
テーブル１６０〜１６９の４行目に記載されている数値はランプアップレートＲＵである。ランプアップレートＲＵは発電力変化率の一種であり、一度の操作で増やせる発電量の最大値を示している。ランプアップレートＲＵは各発電ユニットの仕様によって決められる値であるため、図１６の例では固定値となっている。例えば、運転ユニット＃１のランプアップレートは１０ＭＷ、運転ユニット＃２のランプアップレートは９ＭＷ、運転ユニット＃３のランプアップレートは８ＭＷとなっている。
【０１４４】
テーブル１６０〜１６９の５行目に記載されている数値はランプダウンレートＲＤである。ランプダウンレートＲＤは発電力変化率の一種であり、一度の操作で減らせる発電量の最大値を示している。ランプダウンレートＲＤも各発電ユニットの仕様によって決められる値であるため、図１６の例では固定値となっている。例えば、例えば、運転ユニット＃４のランプアップレートは１０ＭＷ、運転ユニット＃５のランプアップレートは７ＭＷとなっている。
【０１４５】
テーブル１６０〜１６９の６行目に記載されている数値は直前の計画期間における各運転ユニットの計画出力Ｐ（ｔ−１）である。本実施形態に係る運転ユニットは発電所であるため、計画出力Ｐ（ｔ−１）は直前の計画期間における、計画発電量となる。ここで、直前の計画期間とは、時系列で直前にある計画期間を意味する。例えば、時系列で計画期間ｐ１、ｐ２、ｐ３、ｐ４、ｐ５がある場合、計画期間ｐ３の直前の計画期間は計画期間ｐ２となる。図１６の例では、直前の計画期間に係る供給計画作成処理は完了しており、出力値Ｐ（ｔ−１）は確定値であるものとする。
【０１４６】
ある計画期間において、計画出力Ｐ（ｔ）に設定可能な上限値はＰ（ｔ−１）＋ＲＵ、下限値はＰ（ｔ−１）−ＲＤとなる。例えば、運転ユニット＃１の計画出力Ｐ（ｔ−１）は７５ＭＷであり、ランプアップレートＲＵは１０ＭＷ、ランプダウンレートＲＤは１０ＭＷである。したがって、現在供給計画調整処理が行われている計画期間における運転ユニット＃１の最終的な計画出力Ｐ（ｔ）は６５ＭＷ以上、８５ＭＷ以下の値である必要がある。また、運転ユニット＃２の計画出力Ｐ（ｔ−１）は４５ＭＷであり、ランプアップレートＲＵは９ＭＷ、ランプダウンレートＲＤは９ＭＷである。したがって、当該計画期間における運転ユニット＃２の最終的な計画出力Ｐ（ｔ）は３６ＭＷ以上、５４ＭＷ以下の値である必要がある。
【０１４７】
図１６の例では、電力システムの出力値を３００ＭＷにすることが、供給計画調整処理の完了条件（図１２、ステップＳ３０８）である。初期状態の供給計画であるテーブル１６０では、計画出力Ｐ（ｔ）の合計値が３４４ＭＷとなっている。したがって、供給計画調整処理において、各運転ユニットの計画出力を低下させる必要がある。
【０１４８】
供給計画調整処理は、１つ以上の条件を付加して行うことができる。電力システムの分野では、発電コストの削減が求められているため、ここではコストの最小化を条件に設定する。したがって、図１６の例では、できる限り発電所の運転コストを低減させつつ、電力システムの出力値を目的値の３００ＭＷにすることを目標にする。
【０１４９】
一般に、発電所の発電方式によって、使われる燃料の価格や保守費に差がある。したがって同じ大きさの電力を生成する場合でも、発電所によって、発電コストに違いが出てしまう。このため、運転計画で発電コストを抑制する組み合わせの発電所を稼働させ、電力需要を満たす電力の供給を行うことが求められている。
【０１５０】
計画ユニットに供給計画作成権限が与えられたとき、一度で調整可能な計画出力の大きさを決めることができる。例えば、図１６では、いずれかの計画ユニットに供給計画作成権限が与えられたとき、計画出力の調整量がΔｐ＝−５に設定されている。計画出力の調整量は、このような一定値であってもよいし、一定値でなくてもよい。
【０１５１】
次に、各テーブルで行われている処理について説明する。図１６ではテーブル１６０、１６１、１６２、１６３、１６４、１６５、１６６、１６７、１６８、１６９の順で供給計画作成処理が実行されている。
【０１５２】
テーブル１６０は初期状態の供給計画である。初期状態の供給計画は、直前の計画期間における発電所の計画出力Ｐ（ｔ−１）に対して、発電力変化率を加算することにより、生成される。テーブル１６０の黒く塗りつぶされた部分が初期状態における計画値Ｐ（ｔ）である。次に、初期状態における計画値Ｐ（ｔ）を使って、コストを算出する。コストは式（１）のコスト関数にＰ（ｔ）を代入することにより求められる。コストを求めたところ、運転ユニット＃１のコストが１５となり、５つの運転ユニットの中で最大値となったため、供給計画作成権限を計画ユニット＃１に付与する。
【０１５３】
テーブル１６１は、計画ユニット＃１による供給計画の更新が行われた後の供給計画である。運転ユニット＃１のコストが最大であったため、運転ユニット＃１の計画出力の値をΔｐ調整する。調整の結果、運転ユニット＃１の計画出力値は８５から８０に低下する。調整後の計画出力値を用いて、運転ユニット＃１のコストを再計算する。再計算の結果、コストは１５から１１に低下する。供給計画を更新したところ、運転ユニット＃３のコストが最大となったため、供給計画作成権限を計画ユニット＃３に付与する。
【０１５４】
テーブル１６２は、計画ユニット＃３によって供給計画の更新が行われた後の供給計画である。運転ユニット＃３のコストが最大であったため、運転ユニット＃３の計画出力の値をΔｐ調整する。調整の結果、運転ユニット＃３の計画出力値は６８から６３に低下する。調整後の計画出力値を用いて、運転ユニット＃３のコストを再計算する。再計算の結果、コストは１３から８に低下する。供給計画を更新したところ、運転ユニット＃２のコストが最大となったため、供給計画作成権限を計画ユニット＃２に付与する。
【０１５５】
以降のテーブル１６３〜１６９で行われる処理は、上述のテーブル１６１、１６２で実行された処理と同様である。運転ユニット＃１〜＃５の計画出力の合計値が要求出力Ｄ（ｔ）と等しい３００ＭＷになるまで、供給計画の更新を繰り返す。テーブル１６９では、計画ユニット＃４によって供給計画の更新が行われた結果、計画出力Ｐ（ｔ）の合計値が３００ＭＷとなっている。したがって、テーブル１６９の状態に達した時点で、この計画期間に係る供給計画調整処理は終了する。計画ユニット＃４は、テーブル１６９を、ユニット群に含まれるすべての計画ユニットへ送信（ブロードキャスト）する。
【０１５６】
もし、ある計画ユニットで供給計画の更新を行ったところ、調整後の計画出力が、Ｐ（ｔ−１）から運転ユニットの発電力変化率（ランプダウンレート）を引いた値を下回った場合、当該運転ユニットの計画出力をＰ（ｔ）＝Ｐ（ｔ−１）−ＲＤに再調整する。また、供給計画作成権限を付与された計画ユニットとペアになっている運転ユニットの計画出力が上限値または下限値に達している場合には、さらに計画出力値の調整を行うことができない。このような場合には、計画出力の調整を行わず、２番目にコストが大きい計画ユニットへ供給計画作成権限を渡す。
【０１５７】
図１６の例では、各発電所の発電コストを最小化し、各発電所の発電力変化率（ランプアップレートおよびランプダウンレート）を一定の範囲内におさめるという条件を付して、供給計画作成処理が実行された。これらの条件は例であり、その他の条件を付して供給計画作成処理を実行してもよい。また、図１６の例では各運転ユニットの計画出力の値を低下させる場合を説明したが、各運転ユニットの計画出力の値を大きくしてもよい。計画出力の値を大きくする場合には、調整量Δｐを正の値に設定する。
【０１５８】
以下では、各計画ユニットへ供給計画作成権限を与えられた後に実行される、供給計画調整処理の詳細を説明する。
【０１５９】
図１７は供給計画調整処理を示したフローチャートである。以下では図１７のフローチャートに沿って処理を説明する。
【０１６０】
供給計画作成権限を与えられた計画ユニットは、直前に供給計画作成権限を保持していた計画ユニットから供給計画を受信する。（ステップＳ４０１）供給計画は例えば、要求出力Ｄ、出力値調整量Δｐ、直前の計画期間における計画出力Ｐ（ｔ−１）、計画出力Ｐ（ｔ）、コスト関数Ｃ（Ｐ）、発電量変化率ＲＵ／ＲＤなどの指標を含む。供給計画はこれらの指標のすべてを含んでいなくてもよいし、供給計画に異なる指標が含まれていてもよい。例えば、環境負荷に関する指標を供給計画に含めてもよい。例えば、二酸化炭素、窒素酸化物、硫黄酸化物の排出量、排水に含まれる化学物質の濃度、発生する廃棄物の量などを最小化する供給計画を作成してもよい。
【０１６１】
次に、計画ユニットは、供給計画の出力計画値Ｐ（ｔ）をΔｐ調整する。値を調整した後の出力計画値Ｐ´（ｔ）はＰ´（ｔ）＝Ｐ（ｔ）＋Δｐとなる。出力値調整量Δｐが正の値である場合には、調整後の出力計画値Ｐ´（ｔ）は大きくなる。出力値調整量Δｐが負の値である場合には、調整後の出力計画値Ｐ´（ｔ）は小さくなる。調整後の出力計画値Ｐ´（ｔ）を用いて、コストを再計算する。コストの再計算にはコスト関数Ｃ（Ｐ）を用いる。（ステップＳ４０２）
【０１６２】
計画ユニットは、供給計画におけるすべての運転ユニットのコストの値を探索する。計画ユニットは、コストの値が最大となっている運転ユニットとペアになっている計画ユニットへ供給計画を送信する。（ステップＳ４０３）
【０１６３】
次に、供給計画を送信した計画ユニットは、供給計画の送信先である計画ユニットから肯定応答（Ａｃｋｎｏｗｌｅｄｇｅ：ＡＣＫ）が返ってくるまで一定期間待機する。（ステップＳ４０４）ＡＣＫが返ってきた場合、次の計画ユニットに供給計画作成権限を譲渡する。（ステップＳ４０５）供給計画作成権限が次の計画ユニットに譲渡されたら、次の計画ユニットにおいて、ステップＳ４０１以降の処理が実行される。
【０１６４】
もし待機期間内にＡＣＫが返ってこない場合、供給計画の送信先である計画ユニットは故障したと判定される。供給計画を送信した計画ユニットは、ユニットの故障情報をユニット群に属するすべての計画ユニットに対して送信（ブロードキャスト）する。（ステップＳ４０６）
【０１６５】
次に計画ユニットは、故障した計画ユニットの代わりに、ユニット群内の他の計画ユニットを使うことができるか確認する。（ステップＳ４０７）他の計画ユニットとペアになっている運転ユニットの最大出力値、発電量変化率などを参照し、ユニット群内の他の計画ユニットで代用可能であるかを判断する。もし、代用可能な計画ユニットがない場合、ユニット群の再構成を行う。（ステップＳ４０８）ユニット群の再構成処理ではまず、既に作成したユニット群の中に利用可能なものを探し、利用可能なユニット群がない場合には新たなユニット群を作成する。
【０１６６】
代用可能な計画ユニットが見つかった場合には、代わりの計画ユニットの供給計画を初期化する。代用可能な計画ユニットが複数ある場合には、優先度が最も高い計画ユニットを代わりの計画ユニットとして選択する。具体的には、代わりの計画ユニットとペアになっている運転ユニットの直前の計画期間における出力値Ｐ（ｔ−１）に発電量変化率を加算し、出力計画値Ｐ（ｔ）に設定する。この出力計画値Ｐ（ｔ）をもとにコストを計算する。（ステップＳ４０９）新しい計画ユニットの供給計画の初期化が終わったら、供給計画をユニット群の全計画ユニットへ送信（ブロードキャスト）する。その後、ステップＳ４０３以降の処理に戻り、供給計画におけるコストが最大となっている計画ユニットを探索する。
【０１６７】
これまで、システム稼働開始前に行われる運転計画の作成処理を説明した。運転計画の作成が終わると、運転計画に基づいてシステムを稼働させることができる。しかし、システムの稼働開始後にも、システムを停止させることなく、迅速に運転計画の再作成を行うことが求められる場合がある。例えば、電力システムで電力供給中に一部の発電所が故障したり、電力需要が予想以上に大きくなった場合、電力不足や電力供給の停止を防止するために、迅速な運転計画の再作成を行う必要がある。そこで、本実施形態に係るシステムでは、システムの稼働中においても運転計画の変更を行うことができる。
【０１６８】
システムの稼働中における運転計画の変更に対応するため、本実施形態に係るシステムはシステムの稼働中に、需要変動やユニット構成の変更などの変更検出処理を実行する。以下では、システム稼働中の変更検出処理について説明する。
【０１６９】
図１８Ａは、システム稼働中の変更検出処理を示したフローチャートである。以下では図１８Ａのフローチャートに沿って処理を説明する。
【０１７０】
まず、ステップＳ５０１では、需要変動の有無を確認する。すなわち、計画作成部１４は管理サーバ５０の需要情報データベース５５を参照し、いずれかの計画期間における要求出力に増減があるかを確認する。要求出力に増減がない場合、ステップＳ５０３に進みユニット構成に変更があるか否かの確認を行う。要求出力に増減がある場合には、ステップＳ５０２に進み、運転計画の変更が必要な計画期間を特定する。電力供給不足となるおそれがある場合には、運転計画の変更を行う。電力需要が低下し電力供給量が余る場合には、運転計画の変更を行ってもよいし、運転計画の変更を行わなくてもよい。
【０１７１】
ステップＳ５０３では、ユニット構成の変更を検出する。計画作成部１４は、管理サーバ５０のユニット情報データベース５６を参照し、ユニット情報を確認する。計画ユニットや運転ユニットの故障があったり、計画ユニットや運転ユニットの削除があったり、計画ユニットと運転ユニットのペアが追加されている場合、ユニット構成に変更があると判定される。ユニット構成に変更がある場合、ユニット構成の変更が発生した以後の計画期間を供給計画の変更をする計画期間に設定する。（ステップＳ５０４）ユニット構成に変更がない場合、図１８Ａのフローチャートに係る処理は終了する。ユニット群に含まれる計画ユニットや運転ユニットが故障し、電力供給不足となるおそれがある場合には、運転計画の変更を行う。新しい計画ユニットと運転ユニットのペアが追加された場合には、運転計画の変更を行ってもよいし、運転計画の変更を行わなくてもよい。
【０１７２】
ステップＳ５０５では、検出された変更（変動）が、現在のユニット群の合計出力の範囲内で対応可能なものであるかを確認する。現在のユニット群内の使用可能な運転ユニットの最大出力で要求出力を満たせなくなるおそれがある場合には、現在のユニット群の供給計画の変更で対応できないと判定する。
【０１７３】
検出された変更（変動）が大きく、現在のユニット群の出力で対応できないと判断される場合には、該当する計画期間に係るユニット群の再構成を行う。（ステップＳ５０７）ユニット群の再構成が行われた後、該当する計画期間に係る供給計画の再調整が行われる。（ステップＳ５０６）現在のユニット群の合計出力で、変更（変動）に対応できる場合には、ユニット群に対して変更を行わず、該当する計画期間に係る供給計画を再調整する。（ステップＳ５０６）すなわち、現在のユニット群の合計出力を大きく調整すると、電力供給不足が発生するリスクが解消できる見込みがある場合、供給計画の再調整のみを行う。
【０１７４】
システム稼働中の変更検出処理から呼び出される供給計画の調整処理は、対象となる計画期間が限定される場合がある点を除けば、システム稼働前に実行される供給計画作成処理と同様である。したがって、図１１、図１２、図１７のフローチャートに沿って供給計画の調整が行われる。
【０１７５】
システム稼働中の変更検出処理から呼び出されるユニット群の再構成処理は、図９のフローチャートに沿って実行される。また、ユニット群候補の中に故障のある計画ユニットと運転ユニットのペアを含まないものがあれば、当該ユニット群候補を計画期間に係るユニット群に設定してもよい。
【０１７６】
システム稼働中の変更検出処理は、一定周期ごとに実行されるものであってもよいし、保守員の操作で開始されるものであってもよい。また、管理サーバ５０が、需要変動を検出したタイミングで変更検出処理を実行してもよいし、計画ユニットが運転ユニットの故障を検出したタイミングで、変更検出処理を実行してもよい。システム稼働中の変更検出処理の実行タイミングについては特に問わない。
【０１７７】
本発明の実施形態においては、運転計画作成処理が特定の管理サーバなどに集中せず、複数の計画ユニットで分散して実行されるため、処理負荷の軽減をはかることができる。したがって、運転ユニットの台数が多くなった場合でも、処理負荷が特定の装置に集中せず、運転計画の作成時や更新時における処理遅延が軽減される。本発明の実施形態を運転ユニットの数が多い、大規模なシステムに適用することもできるし、システムの稼働中にシステムのスケールを小規模から大規模に拡張することができる。このように、本発明の実施形態を適用することにより、スケーラビリティの高いシステムにおける運転計画の作成と更新が実現される。
【０１７８】
本実施形態に係るシステムでは、リーダーユニットの計画ユニットが、運転計画作成処理の前半部の処理において中心的な役割を担っている。例えば、ユニット群候補作成処理と、ユニット群選択処理と、供給計画作成処理の最初の部分はリーダーユニットにより実行される。もしリーダーユニットが運転計画作成処理を実行している途中に故障すると、運転計画作成処理が中断するおそれがある。処理が中断してしまうことを防止するため、システムにリーダーユニットの故障を検出する機能を実装してもよい。
【０１７９】
例えば、リーダーユニットは、他の計画ユニットや管理サーバ５０へハートビート信号を送信する。他の計画ユニットや管理サーバ５０はハートビート信号を受信できなくなったら、リーダーユニットが故障したと判定することができる。また、各処理においてタイムアウト時間を設け、リーダーユニットからの応答がタイムアウト時間内に返ってこないときに故障判定を行ってもよい。代わりのリーダーユニットは、計画ユニットの優先度をもとに決めてもよいし、その他の方法で決めてもよい。
【０１８０】
供給計画作成処理においても、同様の対策を行うことにより、システムの信頼性の強化をおこなうことができる。供給計画作成処理において、供給計画作成権限が与えられている計画ユニットが故障してしまうと、他の計画ユニットには供給計画作成権限がないため、処理が中断するおそれがある。このような処理の中断を防ぐため、供給計画作成権限を有する計画ユニットは、管理サーバ５０のユニット情報データベース５６に更新後のコストＣ（Ｐ）を保存してもよい。ユニット群に属する計画ユニットは、一定期間経過しても、供給計画作成権限を有する計画ユニットから何もデータを受信しない場合には、管理サーバ５０のユニット情報データベース５６を参照する。このとき、コストＣ（Ｐ）が２番目に大きい計画ユニットは故障した計画ユニットに代わり、供給計画作成権限を取得する。このような処理を行うことにより、耐障害性の高い運転計画システムが実現できる。
【０１８１】
電力システムなどの場合には、中長期的な電力需要の増加に伴い、運転ユニットである発電所を数年ごとに、既存の電力系統に追加する場合がある。工場においては、生産物の需要が増大したら、運転ユニットに相当する、製造装置やラインを増設することがある。このような場合には、運転計画システムに新しい運転ユニットと計画ユニットのペアを追加する。
【０１８２】
運転ユニットと計画ユニットのペアが追加されるとき、新しく追加される計画ユニットは管理サーバ５０にメッセージを送信し、ユニット追加削除部５２を立ち上げる。新しく追加される計画ユニットはユニット情報データベース５６に、計画ユニットとペアになっている運転ユニットに係る情報を書き込む。その後、管理サーバ５０は、システムの全計画ユニットに運転ユニットと計画ユニットのペアが追加されたことを通知する。こうして、各計画ユニットはリアルタイムで構成変更に関する情報を得ることができるので、システムを停止させずに、運転計画の再作成などを行うことができる。
【０１８３】
（第１の変形例）
これまで説明した第１の実施形態に係るシステムでは、ユニット群に属する複数の計画ユニットが協調して、供給計画の作成処理を行っていた。第１の実施形態に係るシステムと同一の構成のシステムを用いて、供給計画の作成処理をユニット群に属する一部の計画ユニットのみに実行させてもよいし、１台の計画ユニットのみに実行させてもよい。ここでは、１台の計画ユニットがユニット群に係る供給計画の作成を行った場合の処理を説明する。
【０１８４】
供給計画処理を実行する計画ユニットとして、例えば、ユニット群に属する計画ユニットの中で最も処理速度が速い計画ユニットを選択することができる。この選択は例えばベンチマークスコア、平均応答時間などをもとに行うことができる。選択された計画ユニットが故障したり、処理速度が低下した場合は、ユニット群に属する他の計画ユニットに、供給計画作成処理を行わせてもよい。こうして、供給計画処理の実行を高速化できる。上述の計画ユニットの選択方法は一例であり、その他の方法により計画ユニットを選択することを妨げるものではない。
【０１８５】
図１８Ｂは、第１の変形例に係る供給計画作成処理を示したフローチャートである。以下では図１８Ｂのフローチャートに沿って処理を説明する。
【０１８６】
まず、供給計画作成処理を実行する計画ユニットは、ユニット群に属する各運転ユニットに対して、出力下限値Ｐｉ，ｍｉｎを設定する。（ステップＳ６０１）出力下限値Ｐｉ，ｍｉｎは、運転ユニットの調整可能な出力値の下限である。出力下限値Ｐｉ，ｍｉｎには、例えば、各運転ユニットの仕様で定められた最小推奨出力に１以上の係数をかけた値を使うことができる。
【０１８７】
次に、ユニット群に属する各運転ユニットの計画出力Ｐｉ（ｔ）の値を初期化する。（ステップＳ６０２）ここで、各運転ユニットの計画出力値Ｐｉ（ｔ）の値がＰｉ，ｍｉｎより大きい値となり、各運転ユニットの計画出力の和ΣＰｉ（ｔ）が要求出力Ｄ（ｔ）より大きくなるようにする。初期化処理で、各運転ユニットの仕様で定められた最大推奨出力をＰｉ（ｔ）に設定してもよいし、前回の計画期間に係る計画出力値Ｐｉ（ｔ−１）に発電量変化率ΔＰｉを加算した値をＰｉ（ｔ）に設定してもよい。
【０１８８】
次に、各運転ユニットの計画出力の和ΣＰｉ（ｔ）から要求出力Ｄ（ｔ）を減算し、余剰出力Ｅｐを求める。（ステップＳ６０３）以降のステップでは、余剰出力Ｅｐが０になるまで、いずれかの運転ユニットに係る計画出力値Ｐｉ（ｔ）を低下させる処理が繰り返し実行される。
【０１８９】
ステップＳ６０４では、余剰出力Ｅｐが０になっているかを確認する。余剰出力Ｅｐが０となった場合、図１８Ｂのフローチャートに係る供給計画作成処理は終了する。余剰出力Ｅｐが０より大きい場合、各運転ユニットのコストを更新する。（ステップＳ６０５）コストＣは、各運転ユニットの計画出力値Ｐｉ（ｔ）をコスト関数に代入して求められる。コスト関数としては例えば、式（１）を用いる。このコスト計算方法は一例であり、異なる方法でコストを求めてもよい。例えば、コスト関数を微分した関数を使ってもよいし、コスト関数の平均値とコスト関数を微分した関数の積を使ってもよい。
【０１９０】
次に、計画出力値Ｐｉ（ｔ）がＰｉ，ｍｉｎより大きい運転ユニットの中で、コストＣが最大の運転ユニットを選択する。（ステップＳ６０６）そして、選択された運転ユニットの計画出力値Ｐｉ（ｔ）をΔｑ減らす。（ステップＳ６０７）ここで、Δｑは計画出力値の調整量である。調整量Δｑは正の値をとる。調整量Δｑの値としては、例えば０．１、０．２、０．５、１．０などの値を用いることができるが、異なる値を使ってもよい。調整量Δｑは一定値であってもよいし、調整可能なパラメータであってもよい。
【０１９１】
運転ユニットの計画出力値の調整を行ったら、余剰出力ＥｐをΔｑ減らし、余剰出力を更新する。（ステップＳ６０８）余剰出力の更新が終わると、再びステップＳ６０４に戻り、余剰出力Ｅｐが０になっているか確認する。余剰出力Ｅｐが０より大きい場合、ステップＳ６０５以降の処理が繰り返される。
【０１９２】
供給計画作成処理を行う計画ユニットの数を、運転計画システムの起動中に変更してもよい。ユニット群に属する２台以上の計画ユニットが供給計画作成処理を行う場合には、第１の実施形態に係る供給計画作成処理が実行されるが、供給計画作成処理を行う計画ユニットが１台になると、上述の第１の変形例に係る供給計画作成処理に切り替わる。システムの保守点検作業などが行われ、一部の計画ユニットが一時的に停止する場合、上述のように供給計画作成処理を実行する計画ユニットを限定すると、システム動作への影響が軽減できる。
【０１９３】
上述の第１の変形例を実行する計画ユニットは、各計画期間について、各計画期間に係るユニット群に属する計画ユニットの中から１台ずつ選ばれる。したがって、供給計画作成処理を実行する計画ユニットの台数は、選択に重複がない限り、運転計画に含まれる計画期間の数に等しくなり、処理の実行先は分散する。各計画期間に係る供給計画を作成する計画ユニットを１台に限定したとしても、各計画期間に係る供給計画の作成や、リーダーユニットの処理を実行する計画ユニットが特定のものに集中するのを避ければ、運転計画作成処理の分散的な実行を維持することができる。
【０１９４】
（第２の実施形態）
第１の実施形態においては、遺伝的アルゴリズムを用いてユニット群の選択処理を行った。しかし、組み合わせ最適化問題であるユニット群の選択処理は他の手法により行うこともできる。第２の実施形態では、遺伝的アルゴリズムの代わりに強化学習を用いてユニット群の選択処理を行う。ユニット群選択部１２の用いるアルゴリズムが変更される点を除けば、第２の実施形態に係る運転計画システムの機能および構成は第１の実施形態と同様である。
【０１９５】
図１９は、強化学習によりユニット群の選択を行った例を示している。図１９上段に示されたテーブル３０１〜３０５は、計画期間ｐ１〜ｐ５に係る複数のユニット群候補を格納している。これらのユニット群候補は、第１の実施形態に係る説明で用いたものと同じものである。
【０１９６】
次に、ある計画期間に係るユニット群候補から次の計画期間に係るユニット群候補に遷移するときに必要なコストを計算する。図１９中段には、ユニット群切り替えタイミングにおけるコストを格納したコストマトリックスが示されている。テーブル１９１は、計画期間ｐ１に係るユニット群候補から計画期間ｐ２に係るユニット群候補の間の遷移に要するコストを格納したコストマトリックスである。テーブル１９２は、計画期間ｐ２に係るユニット群候補から計画期間ｐ３に係るユニット群候補の間の遷移に要するコストを格納したコストマトリックスである。テーブル１９３は、計画期間ｐ３に係るユニット群候補から計画期間ｐ４に係るユニット群候補の間の遷移に要するコストを格納したコストマトリックスである。テーブル１９４は、計画期間ｐ４に係るユニット群候補から計画期間ｐ５に係るユニット群候補の間の遷移に要するコストを格納したコストマトリックスである。
【０１９７】
運転ユニットが発電所である場合、遷移に要するコストはスタートアップコストと、シャットダウンコストと、発電コストを用いて計算される。例えば、テーブル１９１では、ユニット群候補Ｘ１１からユニット群候補Ｘ２１への遷移に要するコストは、運転ユニット＃２の発電コストと、運転ユニット＃３の発電コストと、運転ユニット＃１のスタートアップコストの和である。テーブル１９４では、ユニット群候補Ｘ４１からユニット群候補Ｘ５１への遷移に要するコストは、運転ユニット＃１の発電コストと、運転ユニット＃２の発電コストと、運転ユニット＃３のシャットダウンコストの和である。
【０１９８】
次に、強化学習の一種であるＱ学習を用いて、遷移に要するコストの合計値が最小となるユニット群候補の組み合わせを探索する。各コストマトリックス（テーブル１９１〜１９４）が強化学習における報酬となる。図１９下段のテーブル１９５は、ユニット群候補の組み合わせに係るコストを示している。学習の結果、ユニット群候補の組み合わせＸ１２、Ｘ２２、Ｘ３２、Ｘ４２、Ｘ５２を選ぶと遷移に要するコストが最小となることがわかる。
【０１９９】
ユニット群選択部１２は、計画期間ｐ１に係るユニット群としてユニット群候補Ｘ１２を選択する。同様に、ユニット群選択部１２は、計画期間ｐ２に係るユニット群としてユニット群候補Ｘ２２を選択する。ユニット群選択部１２は、計画期間ｐ３に係るユニット群として、ユニット群候補Ｘ３２を選択する。ユニット群選択部１２は、計画期間ｐ４に係るユニット群として、ユニット群候補Ｘ４２を選択する。ユニット群選択部１２は、計画期間ｐ５に係るユニット群として、ユニット群候補Ｘ５２を選択する。
【０２００】
ここでは、ユニット群間の遷移に要するコストを最小化することを最優先に、ユニット群の選択を行ったが、他の指標を用いてユニット群の選択を行ってもよい。例えば、各運転ユニットの発電量を算出できるのであれば、最大発電量が最も大きいユニット群の組み合わせを選択したり、最小発電量が最も小さいユニット群の組み合わせを選択してもよい。各種の環境負荷に関する指標を報酬として強化学習と行い、ユニット群の選択を行うこともできる。
【０２０１】
（第３の実施形態）
第２の実施形態では、強化学習を用いてユニット群の選択処理を行った。第３の実施形態では、貪欲法によりユニット群の選択処理を行う。ユニット群選択部１２の用いるアルゴリズムが変更される点を除けば、第３の実施形態に係る運転計画システムの機能および構成は第１の実施形態と同様である。
【０２０２】
貪欲法では、最初にある計画期間について、ユニット群を決める。構成が確定済みのユニット群を基本ユニット群と呼ぶことにする。その後、基本ユニット群に対して、運転ユニットと計画ユニットのペアの追加または削除を行って、隣接する計画期間に係るユニット群を決める。追加または削除が可能な運転ユニットと計画ユニットのペアは、制約条件により定められる。隣接する計画期間に係るユニット群が決まったら、運転ユニットと計画ユニットのペアの追加または削除を行うことにより、隣接する計画期間のさらに前または後にある計画期間に係るユニット群も決定する。すべての計画期間に係るユニット群が決まるまで、このような操作を繰り返す。
【０２０３】
貪欲法には、いくつかの変形例が存在する。例えば、最初にユニット群を決める計画期間は実行時刻の最も早い計画期間であってもよいし、実行時刻の最も遅い計画期間であってもよい。また、要求出力が最小の計画期間であってもよいし、要求出力が最大の計画期間であってもよく、特に決め方は問わない。また、隣接する計画期間として、基本ユニット群の前の計画期間を用いる方法、基本ユニット群の後の計画期間を用いる方法、これらを組み合わせる方法も存在する。ここでは、最初にユニット群を決める計画期間は実行時刻の最も早い計画期間であり、基本ユニット群の後の計画期間に係るユニット群を順次決定していく方法をとった場合を例に説明する。
【０２０４】
図２０は貪欲法によるユニット群選択処理を示したフローチャートである。以下では図２０のフローチャートに沿って処理を説明する。
【０２０５】
まず、実行時刻が最も早い計画期間について、運転に用いるユニット群を決定する。（ステップＳ６０１）要求出力と、各運転ユニットの出力に基づき、ユニット群を決定する。ユニット群の構成が決まったら、当該ユニット群が基本ユニット群となる。
【０２０６】
次にユニット群に属する各運転ユニットの停止コストを計算する。（ステップＳ６０２）ステップＳ６０２の処理は、停止コスト（シャットダウンコスト）が未計算である運転ユニットについて行う。
【０２０７】
次に、基本ユニット群に係る計画期間の直後にある計画期間を選択する。（ステップＳ６０３）ここで、新たに選択された計画期間を隣接計画期間と呼ぶことにする。
【０２０８】
そして隣接計画期間の要求出力を、基本ユニット群に係る計画期間の要求出力と比較する。（ステップＳ６０４）隣接計画期間の要求出力の方が大きい場合には、現在の連続停止時間が最小停止時間より長くなっている運転ユニットの中から、立ち上げコスト（スタートアップコスト）の最も小さい運転ユニットを基本ユニット群へ追加したユニット群を、隣接計画期間に係るユニット群に設定する。当該運転ユニットとペアになっている計画ユニットも併せてユニット群に追加される。当該ユニット群の合計出力が隣接計画期間の要求出力の範囲内になるまで追加処理を、繰り返す。（ステップＳ６０５）
【０２０９】
隣接計画期間の要求出力の方が小さい場合には、連続稼働時間が最小稼働時間より長くなっている運転ユニットの中から、停止コスト（シャットダウンコスト）が最も小さい運転ユニットを基本ユニット群から削除したユニット群を、隣接計画期間に係るユニット群に設定する。当該運転ユニットとペアになっている計画ユニットも併せてユニット群から削除される。当該ユニット群の合計出力が隣接計画期間の要求出力の範囲内になるまで削除処理を、繰り返す。（ステップＳ６０６）
【０２１０】
なお、隣接期間の要求出力が基本ユニットに係る計画期間の要求出力と同一であるか、基本ユニット群の合計出力の範囲内にあるときは、基本ユニット群をそのまま隣接期間に係るユニット群に設定してもよい。
【０２１１】
次のステップＳ６０７では、隣接計画期間に係るユニット群を基本ユニット群に設定する。すべての計画期間に係るユニット群が決定されている場合、ユニット群選択処理は終了する。（ステップＳ６０８）まだユニット群が決まっていない計画期間がある場合には、ステップＳ６０２以降の処理を繰り返す。（ステップＳ６０８）
【０２１２】
図２１は、貪欲法により選択されたユニット群の例を示している。図中の数値０００１〜００１０は各運転ユニットのユニットＩＤである。このように、貪欲法を使っても、制約条件を満たしつつ、コストを最小化したユニット群の選択を行うことができる。
【０２１３】
（第４の実施形態）
第１の実施形態では、運転計画システムが電力システムに適用されていた。各々の運転ユニットは発電所であり、運転計画システムは電力需要を満たす供給計画を作成することを目的としていた。運転計画システムは、その他の分野において適用することもできる。第４の実施形態では、運転計画システムが工場の生産計画の作成に適用された場合を説明する。運転ユニットが工場になり、出力が製品の生産高になる点を除けば、上述の各実施形態と同様の構成により運転計画システムを構築することができる。工場で生産対象とされる製品の種類については特に問わないものとする。
【０２１４】
図２２は生産計画の作成への適用例を示している。物の生産を行う場合、管理サーバ５０のユニット情報データベース５６に保存されるユニット情報はテーブル２２１のような工場データとなる。工場データは、工場の生産能力、１単位の製品の生産に要するコストである生産コストＺＣ、１単位の製品の生産に要する時間である生産時間、連続稼働時間の上限値である最大稼働時間Ｏｍａｘ、連続稼働時間の下限値である最小稼働時間Ｏｍｉｎ、１単位の製品あたりの輸送コストＬＣ、停止中のコストＳＣ、メンテナンス時間、メンテナンスコストＭＣなどを含む。なお、メンテナンス時間は連続稼働時間が最大稼働時間に達したときに行う保守作業に必要な時間である。これらの指標は一例であり、異なる指標を用いることを妨げるものではない。１単位の製品は、製品ロット、製品のコンテナ、製品の個数、製品の重量、製品の体積、製品の記憶容量のいずれであってもよい。
【０２１５】
運転ユニットにあたる各工場には、いくつか稼働上の制約条件があるものとする。まず、連続稼働時間は、［Ｏｍｉｎ、Ｏｍａｘ］の範囲内でなくてはならない。また、直前の連続稼働時間が最大稼働時間に達した場合、再び稼働するまでメンテナンス時間の分だけ待機しなくてはならない。これらの制約条件は一例であり、異なる制約条件を用いてもよい。
【０２１６】
コスト関数は例えば、以下の式（３）のように定義することができる。
【数３】
2019032659.tif 000005
ここで、Ｙは生産高である。ここでは、生産高はトン単位の重量であると仮定するが、製品の個数であっても、製品の体積であっても、製品の記憶容量であっても、その他の重量単位であってもよい。
【０２１７】
本実施形態では、工場＃１、工場＃２、工場＃３、工場＃４、工場＃５の５か所の工場で製品の生産を行う。当該製品の需要を考慮し、計画期間Ｐ１の目標生産高を７５０トン、計画期間Ｐ２の目標生産高を６２０トン、計画期間Ｐ３の目標生産高を７００トン、計画期間Ｐ４の目標生産高を９００トン、計画期間Ｐ５の目標生産高を６５０トンに設定する。各計画期間における目標生産高は、需要情報の要求出力にあたる。
【０２１８】
本実施形態に係る生産計画システムの目的は、各計画期間において目標生産高に等しい重量の製品が生産され、稼働上の制約条件を満たし、コストを最小限に抑える生産計画を作成することである。以下では本実施形態に係るシステムが行う処理の概要を説明する。
【０２１９】
まず、各工場とペアになっている計画ユニットを起動し、リーダーユニットとなる計画ユニットが決定される。リーダーユニットは、各工場の生産能力を生産コストで割った値を指標に、決定することができる。指標の値は、工場＃１の場合は４００／９０＝４．４、工場＃２の場合は３００／８０＝３．７５、工場＃３の場合は２１０／７０＝３．０、工場＃４の場合は１２０／６０＝２．０、工場＃５の場合は５５０／１２０＝４．６となる。工場＃５に係る指標の値が最も大きいため、工場＃５とペアになっている計画ユニットがリーダーユニットとなる。このリーダーユニットの決定方法は一例であり、その他の方法によってリーダーユニットを決定してもよい。
【０２２０】
需要情報における要求出力の値をＤｍとすると、生産高の範囲を［Ｄｍ、１．５×Ｄｍ］にすることができる。この生産高の範囲は例であり、これとは異なる範囲を設定してもよい。次に各計画期間について、生産高の範囲内の生産高が得られる工場の組み合わせを複数作成する。この処理は第１の実施形態におけるユニット群生成処理にあたる。図２２の例では、計画期間Ｐ１についてＸ１１、Ｘ１２、Ｘ１３、Ｘ１４、Ｘ１５、Ｘ１６、Ｘ１７、Ｘ１８、Ｘ１９、Ｘ１１０の１０個のユニット群候補が作成されている。計画期間Ｐ２については９個のユニット群候補が作成されている。計画期間Ｐ３については１０個のユニット群候補が作成されている。計画期間Ｐ４については１０個のユニット群候補が作成されている。計画期間Ｐ５については１０個のユニット群候補が作られている。これらの処理は計画ユニットのユニット群生成部１１によって実行される。
【０２２１】
次に、各計画期間において稼働する、工場の組み合わせを決定する。ここでは、コストを最小化し、制約条件を満たす工場の組み合わせを選ぶ。工場の組み合わせを決定する処理は、第１の実施形態におけるユニット群選択処理に相当し、計画ユニットのユニット選択部１３によって実行される。工場の組み合わせ決定も組み合わせ最適化問題であるため、遺伝的アルゴリズム、強化学習、貪欲法などの手法を用いることができる。図２２の例では、計画期間Ｐ１で稼働するユニット群（工場の組み合わせ）として、Ｘ１１、計画期間Ｐ２で稼働するユニット群としてＸ２７、計画期間Ｐ３で稼働するユニット群としてＸ３１、計画期間Ｐ４で稼働するユニット群としてＸ４４、計画期間Ｐ５で稼働するユニット群としてＸ５１が選択されている。例えば、ユニット群Ｘ１１は工場＃３と工場＃５の組み合わせである。
【０２２２】
次に、各計画期間に係るユニット群に属するそれぞれの計画ユニットは、供給計画を作成する。生産コストを最小化させる条件のもとで、供給計画の作成を行う。この処理は第１の実施形態における供給計画作成処理にあたり、計画作成部１４により実行される。複数の計画ユニットは、工場の合計生産高が要求出力（目標生産高）と等しくなるまで供給計画の調整と、供給計画作成権限の譲渡を繰り返す。ここで行われる処理は第１の実施形態に係るシステムと同様である。
【０２２３】
図２２の例における供給計画では、計画期間Ｐ１において工場＃３は製品を２１０トン、工場＃５は製品を５４０トン生産する。次の計画期間Ｐ２において工場＃１は製品を３２０トン、工場＃２は製品を３００トン生産する。計画期間Ｐ３で、工場＃３は製品を２１０トン、工場＃５は製品を４９０トン生産する。計画期間Ｐ４で、工場＃１は製品を４００トン、工場＃５は製品を５００トン生産する。最後に計画期間Ｐ５で工場＃４は製品を１２０トン、工場＃５は製品を５３０トン生産する。
【０２２４】
供給計画の作成が終わると、各工場は製品の生産を開始することができる。計画の作成中や工場の稼働中に、製品需要が変化したり、工場が稼働できない状態になった場合には、計画の再作成を行うことができる。計画の再作成に係る処理は第１の実施形態に係るシステムと同様である。
【０２２５】
（第５の実施形態）
運転計画システムは、電力システムや物の生産活動だけでなく、他の分野においても適用することができる。第５の実施形態は群ロボット（Ｓｗａｒｍ  Ｒｏｂｏｔｓ）に運転計画システムを適用した例である。本実施形態では群ロボットの各々のロボットが運転ユニットとなり、物体を運搬するのに必要な仕事の量が需要情報における要求出力となる。計画ユニットはロボットに搭載されており、他の計画ユニットや管理サーバと無線通信を行う。これらの違いを除けば、その他の構成要素の機能は上述の各実施形態と同様である。
【０２２６】
以下では各ロボットが行う仕事の量を仕事量と呼ぶことにする。仕事量はワット単位の仕事であってもよいし、物体の運搬作業に要するジュール単位のエネルギーであってもよい。
【０２２７】
本実施形態のシステムでは、複数のロボットからなる群ロボットを用いて物体をスタート地点からゴール地点まで運搬する。スタート地点からゴール地点までの経路は複数の区間ｒ１、ｒ２、ｒ３、ｒ４、ｒ５に分けられる。それぞれの区間は同じ距離であってもよいし、異なる距離であってもよい。また、各区間には登り坂と下り坂などの傾斜や路面状態の違いがあり、物体を運搬するときに要する距離あたりの仕事量が異なるものとする。したがって、登り坂で未舗装である区間は、平坦で舗装済みの区間に比べ、物体運搬時の仕事量が大きくなる。例えば、区間ｒ１の距離当たりの仕事量はＮ１である。
【０２２８】
各ロボットは２次電池で駆動されているため、一度の充電で行うことができる仕事量には限りがある。電池の残容量が少なくなったら、ロボットサービスステーションで充電を行う必要がある。ロボットは充電が完了するまでロボットサービスステーションで一定時間待機しなくてはならない。ロボットが物体を運搬しているとき、運転ユニットは稼働状態にある。ロボットが充電中であるとき、運転ユニットの待機状態にある。
【０２２９】
このような群ロボットの運転計画を作成する場合、各区間において、どのロボットの組み合わせを用いて、物体を運搬するのかを決定しなくてはならない。運搬経路の各区間におけるロボットの組み合わせの決定処理は、各計画期間におけるユニット群の生成処理や選択処理に該当する。各区間におけるユニット群の選択は、ロボットの配置に依存する。例えば、スタート地点に配置したロボットの中から、計画期間Ｔ１で稼働するロボットを選択しなくてはならない。スタート地点に配置したロボットと、ロボットサービスステーション１に配置したロボットの中から、計画期間Ｔ２で稼働するロボットを選択する。ただし、ロボットサービスステーション１に停留させたロボットは除外される。このような制約を、ユニット群の選択処理における制約条件で反映させることができる。
【０２３０】
あるロボットを、特定のロボットサービスステーションで充電できない場合、この制限を制約条件に反映し、ロボットの配置を決めてもよい。ロボットの初期配置の決定処理を含むユニット群の選択処理では、遺伝的アルゴリズム、強化学習、貪欲法などの手法を使うことができる。
【０２３１】
各ロボットの出力は調整可能であるとする。したがって、登り坂や未舗装の区間ではロボットの出力を大きく設定し、下り坂や舗装された区間ではロボットの出力を下げることができる。ロボットの充電や稼働には、コストがかかり、コスト単価がロボットによって異なるとする。各ロボットの出力を調整し、コスト単価を計算しながら、供給計画作成処理を実行する。
【０２３２】
本実施形態に係るシステムでは、コストを最小化させる条件のもとで、供給計画の作成を行う。複数の計画ユニットは、ロボットの合計出力が、各区間で要求されている仕事量（要求出力）と等しくなるまで供給計画の調整と、供給計画作成権限の譲渡を繰り返す。ここで行われる処理は上述の各実施形態と同様である。供給計画の作成が終わると、群ロボットによる物体の運搬を開始することができる。
【０２３３】
ロボットの故障、新しいロボットの追加、各区間における路面状態の変化などがあった場合、物体の運搬作業を停止させることなく、計画の再作成を行うことができる。
【０２３４】
ここまで、複数の発電所による電力の供給、複数の工場による製品の生産活動、群ロボットによる物体の運搬作業を例に、運転計画システムによる計画作成を説明した。本発明の実施形態はこれらの例に限らず、複数の運転ユニットを組み合わせて何らかの仕事を行う、マルチユニットのシステムであれば、いかなるシステムにおいても適用することができる。例えば、複数の冷房機器を含む冷房システム、複数の暖房機器を含む暖房システム、複数の水源から給水される上水道システムに本発明の実施形態を適用できる。自然資源の採掘活動に本発明の実施形態を適用してもよい。例えば、複数の油井や油田を含む原油や天然ガスの採掘活動、複数の坑道や鉱山を含む鉱物の採掘活動などでは、それぞれの油井、油田、坑道、鉱山などを運転ユニット、資源の採掘が行われているときを運転ユニットの稼働状態、資源の採掘量を出力とみなすことができる。
【０２３５】
なお、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素を適宜組み合わせることによって種々の発明を形成できる。また例えば、各実施形態に示される全構成要素からいくつかの構成要素を削除した構成も考えられる。さらに、異なる実施形態に記載した構成要素を適宜組み合わせてもよい。
【符号の説明】
【０２３６】
１０、１０ａ、１０ｂ、１０ｃ  計画ユニット
１１  ユニット群生成部
１２  ユニット群選択部
１３  ユニット選択部
１４  計画作成部
１５  送受信部
１６  記憶部
１７  運転制御部
３０  ネットワーク
５０  管理サーバ
５１  要求出力変更部
５２  ユニット追加削除部
５５  需要情報データベース
５６  ユニット情報データベース
５７  計画情報データベース
９１、９２、９３、１６０、１６１、１６２、１６３、１６４、１６５、１６６、１６７、１６８、１６９、１９１、１９２、１９３、１９４、１９５、２２１、３０１、３０２、３０３、３０４、３０５  テーブル
１００、１００ａ、１００ｂ、１００ｃ  運転ユニット
１４１、１４２、１４３、１５１、１５２  データ系列
３０１ａ、３０２ａ  ユニット群
【図１】
2019032659.tif 000006
【図２】
2019032659.tif 000007
【図３】
2019032659.tif 000008
【図４】
2019032659.tif 000009
【図５】
2019032659.tif 000010
【図６】
2019032659.tif 000011
【図７】
2019032659.tif 000012
【図８】
2019032659.tif 000013
【図９】
2019032659.tif 000014
【図１０】
2019032659.tif 000015
【図１１】
2019032659.tif 000016
【図１２】
2019032659.tif 000017
【図１３】
2019032659.tif 000018
【図１４】
2019032659.tif 000019
【図１５】
2019032659.tif 000020
【図１６】
2019032659.tif 000021
【図１７】
2019032659.tif 000022
【図１８Ａ】
2019032659.tif 000023
【図１８Ｂ】
2019032659.tif 000024
【図１９】
2019032659.tif 000025
【図２０】
2019032659.tif 000026
【図２１】
2019032659.tif 000027
【図２２】
2019032659.tif 000028
【図２３】
2019032659.tif 000029