(57)【要約】【課題】システムの規模が大きくなっても、短時間で効率的に運転計画を生成する、運転計画システム、運転計画方法および運転計画装置を提供する。【解決手段】本発明の実施形態としての運転計画システムは、運転計画の計画期間について、要求される合計出力の値が満たされるよう、前記計画期間において稼働する運転ユニットの組み合わせを生成し、前記組み合わせに含まれる前記運転ユニットの出力設定値を決定することによって前記運転計画を生成し、互いに有線または無線で接続されている複数の計画ユニットを備え、複数の前記計画ユニットは他の前記計画ユニットが生成した前記組み合わせの情報を取得し、他の前記計画ユニットによって生成された前記組み合わせの情報に基づいて異なる前記運転計画を生成する。【選択図】図２
2019211989.tif 000002
【特許請求の範囲】
【請求項１】
運転計画の計画期間について、要求される合計出力の値が満たされるよう、前記計画期間において稼働する運転ユニットの組み合わせを生成し、前記組み合わせに含まれる前記運転ユニットの出力設定値を決定することによって前記運転計画を生成し、互いに有線または無線で接続されている複数の計画ユニットを備え、
複数の前記計画ユニットは他の前記計画ユニットが生成した前記組み合わせの情報を取得し、他の前記計画ユニットによって生成された前記組み合わせの情報に基づいて異なる前記運転計画を生成する、
運転計画システム。
【請求項２】
前記計画ユニットは、他の前記計画ユニットとは異なる前記組み合わせを用いて前記運転計画を生成する、
請求項１に記載の運転計画システム。
【請求項３】
前記計画ユニットは、他の前記計画ユニットによって生成された前記運転計画に含まれる前記運転ユニットの前記組み合わせを用いて、異なる前記組み合わせを生成する、
請求項１または２に記載の運転計画システム。
【請求項４】
前記計画ユニットは、他の前記計画ユニットによって生成された前記運転計画に含まれる前記運転ユニットの前記組み合わせに遺伝的アルゴリズム、強化学習、粒子群最適化の少なくともいずれかを適用して、異なる前記組み合わせを生成する、
請求項３に記載の運転計画システム。
【請求項５】
複数の前記計画ユニットのいずれかの前記計画ユニットが、前記運転ユニットの前記組み合わせを複数個生成し、複数の前記計画ユニットによる前記運転計画の生成に用いられる前記運転ユニットの前記組み合わせの割り当てを決定し、前記割り当てを複数の前記計画ユニットに通知する、
請求項１ないし４のいずれか一項に記載の運転計画システム。
【請求項６】
複数の前記計画ユニットのいずれかの前記計画ユニットが、前記運転ユニットの前記組み合わせを複数個生成し、生成した前記組む合わせを含む第１データを複数の前記計画ユニットからアクセス可能に設定された記憶領域に保存し、
複数の前記計画ユニットは、前記記憶領域の前記第１データを参照して前記運転計画の生成に用いる前記運転ユニットの前記組み合わせを選択し、選択された前記運転ユニットの前記組み合わせに対応する第１データをマーキングし、
前記計画ユニットは、前記記憶領域においてマーキングされた前記第１データに対応する前記運転ユニットの前記組み合わせを前記運転計画の生成に用いる前記運転ユニットの前記組み合わせの選択対象から除外する、
請求項１ないし５のいずれか一項に記載の運転計画システム。
【請求項７】
前記運転計画は、複数の計画期間を含み、
前記計画ユニットは、前記運転ユニットの前記組み合わせを用いて複数の前記計画期間における起動停止パターンを生成し、前記計画期間ごとに前記起動停止パターンで稼働対象となった前記運転ユニットの出力設定値を決定する、
請求項１ないし６のいずれか一項に記載の運転計画システム。
【請求項８】
前記計画ユニットは、複数の前記運転ユニットの平均運転コストを計算し、前記平均運転コストに基づく優先順位を使って前記運転ユニットの前記組み合わせを選択し、前記組み合わせに含まれる前記運転ユニットについて、前記運転ユニットの最小稼働時間と最小停止時間に基づき停止可能な計画期間を探索することによって前記起動停止パターンを生成する、
請求項７に記載の運転計画システム。
【請求項９】
前記起動停止パターンの生成時において、前記運転ユニットの最大定格出力、最大定格出力と最小定格出力の差、平均運転コスト、スタートアップコスト、シャットダウンコストの少なくともいずれかに基づいて、複数の前記計画期間において継続して稼働する前記運転ユニットを選択する、
請求項８に記載の運転計画システム。
【請求項１０】
前記計画ユニットは、制約条件の充足、コストの値、スコアの値の少なくともいずれかに基づいて、生成された複数の前記運転計画の中から、前記運転ユニットの運転に適用する前記運転計画を選択する、
請求項１ないし９のいずれか一項に記載の運転計画システム。
【請求項１１】
前記運転ユニットは、発電機であり、要求される前記合計出力の値は、複数の前記発電機に要求される電力量である、
請求項１ないし１０のいずれか一項に記載の運転計画システム。
【請求項１２】
複数の計画ユニットの少なくともいずれかの前記計画ユニットが運転計画の複数の計画期間について、要求される合計出力の値が満たされるよう、運転ユニットの組み合わせを生成するステップと、
前記計画ユニットが、他の前記計画ユニットとは異なる前記組み合わせを用いて複数の前記計画期間における起動停止パターンを生成し、前記計画期間ごとに前記起動停止パターンで稼働対象となった前記運転ユニットの出力設定値を決定するステップと、
複数の前記計画ユニットは他の前記計画ユニットが生成した前記組み合わせの情報を取得し、他の前記計画ユニットによって生成された前記組み合わせの情報に基づいて異なる前記運転計画を生成するステップと
を含む運転計画方法。
【請求項１３】
前記計画ユニットが、他の前記計画ユニットによって生成された前記運転計画に含まれる前記運転ユニットの前記組み合わせに遺伝的アルゴリズム、強化学習、粒子群最適化の少なくともいずれかを適用して、異なる前記組み合わせを生成するステップを含む、
請求項１２に記載の運転計画方法。
【請求項１４】
複数の前記計画ユニットのいずれかの前記計画ユニットが、前記運転ユニットの前記組み合わせを複数個生成し、複数の前記計画ユニットによる前記運転計画の生成に用いられる前記運転ユニットの前記組み合わせの割り当てを決定し、前記割り当てを複数の前記計画ユニットに通知するステップを含む、
請求項１３に記載の運転計画方法。
【請求項１５】
複数の前記計画ユニットのいずれかの前記計画ユニットが、前記運転ユニットの前記組み合わせを複数個生成し、生成した前記組む合わせを含む第１データを複数の前記計画ユニットからアクセス可能に設定された記憶領域に保存するステップと、
複数の前記計画ユニットが、前記記憶領域の前記第１データを参照して前記運転計画の生成に用いる前記運転ユニットの前記組み合わせを選択するステップと、
選択した前記運転ユニットの前記組み合わせに対応する第１データをマーキングするステップとを含み、
前記計画ユニットは、前記記憶領域においてマーキングされた前記第１データに対応する前記運転ユニットの前記組み合わせを前記運転計画の生成に用いる前記運転ユニットの前記組み合わせの選択対象から除外する、
請求項１２ないし１４のいずれか一項に記載の運転計画方法。
【請求項１６】
運転計画の複数の計画期間について、要求される合計出力の値が満たされるよう、運転ユニットの組み合わせを生成し、さらに他の運転計画装置とは異なる前記組み合わせを用いて複数の前記計画期間における起動停止パターンを生成し、前記計画期間ごとに前記起動停止パターンで稼働対象となった前記運転ユニットの出力設定値を決定する処理部と、
他の前記運転計画装置の前記処理部によって生成された前記組み合わせの情報を受信する通信部とを備え、
前記処理部は他の前記運転計画装置によって生成された前記組み合わせの情報に基づいて異なる前記運転計画を生成する、
運転計画装置。
【請求項１７】
前記処理部は、他の前記運転計画装置によって生成された前記運転計画に含まれる前記運転ユニットの前記組み合わせに遺伝的アルゴリズム、強化学習、粒子群最適化の少なくともいずれかを適用して、前記運転ユニットの異なる前記組み合わせを生成する、
請求項１６に記載の運転計画装置。
【請求項１８】
前記通信部は、複数の前記運転計画装置に前記処理部が生成した前記運転ユニットの前記組み合わせの情報を送信する、
請求項１６または１７に記載の運転計画装置。
【請求項１９】
前記処理部は、権限がある場合には、前記運転ユニットの前記組み合わせを複数個生成し、複数の前記運転計画装置による前記運転計画の生成に用いられる前記運転ユニットの前記組み合わせの割り当てを決定し、前記割り当てを複数の前記運転計画装置に通知する、
請求項１６ないし１８のいずれか一項に記載の運転計画装置。
【請求項２０】
前記処理部は、権限がある場合には、前記運転ユニットの前記組み合わせを複数個生成し、生成した前記組む合わせを含む第１データを、前記通信部を介して複数の前記運転計画装置からアクセス可能に設定された記憶領域に保存し、
権限がない場合には、前記通信部を介し前記記憶領域の前記第１データを参照して前記運転計画の生成に用いる前記運転ユニットの前記組み合わせを選択し、選択された前記運転ユニットの前記組み合わせに対応する第１データをマーキングし、
さらに前記処理部は前記記憶領域においてマーキングされた前記第１データに対応する前記運転ユニットの前記組み合わせを前記運転計画の生成に用いる前記運転ユニットの前記組み合わせの選択対象から除外する、
請求項１７ないし１９のいずれか一項に記載の運転計画装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、運転計画システム、運転計画方法および運転計画装置に関する。
【背景技術】
【０００２】
複数の運転ユニットを備えたシステムの運転計画は、対象となる期間において稼働する運転ユニットの組み合わせと、各運転ユニットの出力設定値を含む。当該運転計画は、制約条件のもとで要求を満たす合計出力が得られ、最も経済的なものであることが望まれる。システムの規模が大きい場合、候補となる組み合わせ数や、負荷配分のパターン数は膨大なものとなるため、運転計画を生成するのに必要な計算量も大きくなってしまう。
【０００３】
電力系統においては、運転計画の生成や修正に係る処理が中央給電指令所に設置されたサーバに集中することが多い。このような場合、運転計画の生成に要する時間が長くなってしまう上に、運転計画を各運転ユニットの状態変化や構成変更に迅速に追従させることが難しくなってしまう。システムの規模が大きくなっても、短時間で効率的に運転計画を生成する技術が求められている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−６３６０９号公報
【特許文献２】特開２０１７−８４３４６号公報
【特許文献３】特許第４８９６０８４号公報
【非特許文献】
【０００５】
【非特許文献１】Ａ．  Ａｄｅｍｏｖｉｃ，  Ｓ．  Ｂｉｓａｎｏｖｉｃ  ａｎｄ  Ｍ．  Ｈａｊｒｏ，  “Ａ  Ｇｅｎｅｔｉｃ  Ａｌｇｏｒｉｔｈｍ  ｓｏｌｕｔｉｏｎ  ｔｏ  ｔｈｅ  Ｕｎｉｔ  Ｃｏｍｍｉｔｍｅｎｔ  ｐｒｏｂｌｅｍ  ｂａｓｅｄ  ｏｎ  ｒｅａｌ−ｃｏｄｅｄ  ｃｈｒｏｍｏｓｏｍｅｓ  ａｎｄ  Ｆｕｚｚｙ  Ｏｐｔｉｍｉｚａｔｉｏｎ，”  Ｍｅｌｅｃｏｎ  ２０１０−２０１０ １５ｔｈ  ＩＥＥＥ  Ｍｅｄｉｔｅｒｒａｎｅａｎ  Ｅｌｅｃｔｒｏｔｅｃｈｎｉｃａｌ  Ｃｏｎｆｅｒｅｎｃｅ，  Ｖａｌｌｅｔｔａ，２０１０，ｐｐ１４７６−１４８１.ｄｏｉ: １０．１１０９／ＭＥＬＣＯＮ．２０１０．５４７６２３８． ＵＲＬ: ｈｔｔｐ:／／ｉｅｅｅｘｐｌｏｒｅ.ｉｅｅｅ.ｏｒｇ／ｓｔａｍｐ／ｓｔａｍｐ.ｊｓｐ？ｔｐ=＆ａｒｎｕｍｂｅｒ＝５４７６２３８＆ｉｓｎｕｍｂｅｒ＝５４７５８９５．
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の実施形態は、システムの規模が大きくなっても、短時間で効率的に運転計画を生成する、運転計画システム、運転計画方法および運転計画装置を提供する。
【課題を解決するための手段】
【０００７】
本発明の実施形態としての運転計画システムは、運転計画の計画期間について、要求される合計出力の値が満たされるよう、前記計画期間において稼働する運転ユニットの組み合わせを生成し、前記組み合わせに含まれる前記運転ユニットの出力設定値を決定することによって前記運転計画を生成し、互いに有線または無線で接続されている複数の計画ユニットを備え、複数の前記計画ユニットは他の前記計画ユニットが生成した前記組み合わせの情報を取得し、他の前記計画ユニットによって生成された前記組み合わせの情報に基づいて異なる前記運転計画を生成する。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態に係る運転計画システム全体の構成例を示す図。
【図２】第１の実施形態に係る運転計画システムの構成要素を示すブロック図。
【図３】各計画期間に要求される出力の例を示した図。
【図４】ユニットデータベースに保存されるデータの例を示した図。
【図５】運転計画生成処理の概要を示した図。
【図６】運転ユニットの組み合わせを生成する方法の例を示した図。
【図７Ａ】初期状態の起動停止パターンの例を示した図。
【図７Ｂ】各計画期間に稼働する運転ユニットを決定する処理の例を示す図。
【図８】第１の実施形態に係る運転計画生成処理の例を示したフローチャート。
【図９】各運転ユニットの出力設定値を決定する処理の例を示したフローチャート。
【図１０】第２の実施形態に係る運転計画生成処理の例を示したフローチャート。
【図１１】第２の実施形態に係る運転計画生成処理で生成されるデータの例を示す図。
【図１２】第２の実施形態に係る運転計画生成処理で生成されるデータの例を示す図。
【図１３】運転計画を生成する方法を切り替えられるように構成したシステムにおける処理の例を示したフローチャート。
【図１４】第４の実施形態に係る運転計画生成処理の例を示した図。
【図１５】第５の実施形態に係る運転計画生成処理の例を示したフローチャート。
【図１６】第５の実施形態に係る運転計画生成処理の例を示したフローチャート。
【図１７】第５の実施形態に係る運転計画生成処理で生成されるデータの例を示す図。
【図１８】第６の実施形態に係る運転計画生成処理の例を示したフローチャート。
【図１９】第６の実施形態に係る運転計画生成処理の例を示したフローチャート。
【図２０】第６の実施形態に係る運転計画生成処理で生成されるデータの例を示す図。
【図２１】第６の実施形態に係る運転計画生成処理で生成されるデータの例を示す図。
【図２２】第７の実施形態に係る運転計画装置の構成例を示す図。
【図２３】第８の実施形態に係る運転計画装置の構成例を示す図。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら、本発明の実施形態について説明する。また、図面において同一の構成要素は、同じ番号を付し、説明は、適宜省略する。
【００１０】
（第１の実施形態）
図１は、第１の実施形態に係る運転計画システムの構成例を示す図である。図１の運転計画システムは、計画ユニット１ａ、１ｂ、１ｃ、１ｄと、運転ユニット２ａ、２ｂ、２ｃ、２ｄと、管理サーバ３とを備えている。計画ユニット１ａ、１ｂ、１ｃ、１ｄと管理サーバ３は、ネットワーク４を介して互いに有線または無線で接続されている。
【００１１】
各運転ユニットは少なくとも１台の計画ユニットと組み合わされている。図１の例では、計画ユニット１ａと運転ユニット２ａがペアになっている。同様に、計画ユニット１ｂは運転ユニット２ｂと、計画ユニット１ｃは運転ユニット２ｃと、計画ユニット１ｄは運転ユニット２ｄと、それぞれペアになっている。図１のシステムでは、各運転ユニットは１台の計画ユニットとペアになっているが、冗長性を持たせるために２台以上の計画ユニットを１つの運転ユニットと組み合わせてもよい。また、図１のシステムでは、計画ユニットと運転ユニットのペアが４組示されているが、これは一例にしか過ぎない。運転計画システムが有する計画ユニットと運転ユニットのペアの数は、これとは異なっていてもよい。
【００１２】
計画ユニット１ａ〜１ｄは、他の計画ユニットとともに各運転ユニットの運転計画を作成する（以降、運転計画生成処理とよぶ）、運転計画装置である。運転計画は、対象となる期間（計画期間という）において稼働する運転ユニットの組み合わせと、各運転ユニットの出力設定値に関する情報を含む。例えば、計画ユニット１ａは、運転計画の生成後、ペアとなっている運転ユニット２ａを運転計画に基づいて稼働させる。計画ユニット１ａ〜１ｄによる運転計画生成処理はペアとなっている運転ユニットの停止時に行われてもよいし、ペアとなっている運転ユニットが稼働しているときに行われてもよい。すなわち、運転計画生成処理が実行されるタイミングについては特に問わない。
【００１３】
計画ユニット１ａ〜１ｄは、１以上のＣＰＵ（中央処理装置）、記憶装置、通信部を備え、ＯＳ（オペレーティングシステム）とアプリケーションが動作する計算機などの情報処理装置である。計画ユニット１ａ〜１ｄの詳細な機能と構成については後述する。
【００１４】
上述のように、本実施形態の運転計画システムでは、複数の計画ユニットの間で運転計画生成処理が分散して実行されるため、負荷が特定の構成要素に偏らなくなり、計算資源を有効に活用することができる。また、複数の計画ユニットは他の計画ユニットが生成した運転ユニット組み合わせの情報を取得し、他の計画ユニットによって生成された運転ユニットの組み合わせの情報に基づいて異なる運転計画を生成する。各計画ユニットは他の計画ユニットの実行した運転計画生成処理の結果を活用し、一層低コストで好ましい特性（例えば、経済性、環境性、出力の安定性など）を有する運転計画を探索することができる。
【００１５】
ネットワーク４は、各計画ユニット間ならびに各計画ユニットと管理サーバ３の間で、データの送受信をする手段を提供する。ネットワーク４は、通信媒体としては例えば、光ファイバ、ＬＡＮケーブル、電話回線、同軸ケーブル、無線などを用いることができる。通信規格としては、イーサネットなどを用いることができるが、どの方式を使ってもよい。
【００１６】
管理サーバ３は、各計画ユニットで共有される情報を管理し、１以上のＣＰＵ（中央処理装置）、記憶装置、通信部を備え、ＯＳ（オペレーティングシステム）とアプリケーションが動作する計算機などの情報処理システムである。各計画ユニットは、管理サーバ３が保持している情報をもとに運転計画を作成する。管理サーバ３の構成や配置については特に問わない。管理サーバ３は計画ユニットから物理的に独立していてもよいし、いずれかの計画ユニットと共通のハードウェアに実装されるものであってもよい。
【００１７】
管理サーバ３は物理的な計算機であってもよいし、仮想計算機（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：ＶＭ）、コンテナ（ｃｏｎｔａｉｎｅｒ）またはこれらの組み合わせにより実現されるものであってもよい。１つ以上の物理計算機、仮想計算機、コンテナに管理サーバ３の機能を分担させてもよい。可用性の向上と負荷分散のために管理サーバ３の台数を増やした構成を用いることも排除されない。管理サーバの詳細な機能および構成についても後述する。
【００１８】
運転ユニット２ａ〜２ｄは、ペアとなった計画ユニットによって制御され、運転計画に基づいて稼働される装置または装置が組み合わされたシステムである。運転ユニット２ａ〜２ｄの例としては、電力系統に含まれる発電機が挙げられる。発電機の方式の例としては、火力、原子力、水力、揚水、太陽光、風力、地熱などがあるが、その他の方式のものであってもよい。火力発電や原子力発電の場合、使われる燃料の種類については特に問わない。また、運転ユニット２ａ〜２ｄは同じ方式の発電機ではなく、複数の方式の発電機の組み合わせであってもよい。また、異なる規模、特性、経過年数に係る発電機が混在してもよい。
【００１９】
なお、以降では運転計画システムを使って、電力系統の発電計画を生成する場合を例に説明するため、運転ユニット２ａ〜２ｄは電力系統に含まれる発電機であるものとする。しかし、運転計画システムが計画の作成対象とするシステムは電力系統に限られない。したがって、運転ユニット２ａ〜２ｄはその他の装置または装置が組み合わされたシステムであってもよい。例えば、運転計画システムを使って、生産設備を使った生産計画を生成する場合、運転ユニット２ａ〜２ｄは生産ライン、製造装置、プラント、工場などであってもよい。運転計画システムによって群ロボットの運転計画を生成する場合、運転ユニット２ａ〜２ｄはロボットとなる。運転計画システムによって空調設備の運転計画を生成する場合、運転ユニット２ａ〜２ｄは空調機器となる。
【００２０】
図２は、第１の実施形態に係る運転計画システムの構成要素を示すブロック図である。以下では図２を参照しながら、本実施形態に係る運転計画システムの構成要素を説明する。
【００２１】
図２において、計画ユニット１ａ（計画ユニット＃１）と運転ユニット２ａ（運転ユニット＃１）はペアになっている。さらに計画ユニット１ｂ（計画ユニット＃２）と運転ユニット２ｂ（運転ユニット＃２）もペアになっている。図２に示されていないが、運転計画システムは計画ユニット＃３と運転ユニット＃３のペアなど、さらに多くの計画ユニットと運転ユニットのペアを含んでいてもよい。
【００２２】
最初に、管理サーバ３の構成要素について述べる。管理サーバ３は、通信部１８と、記憶部１９と、処理部２３とを備えている。記憶部１９には、要求データベース（要求ＤＢ）２０と、ユニットデータベース（ユニットＤＢ）２１と、運転計画データベース（運転計画ＤＢ）２２が保存されている。また、処理部２３は、内部の構成要素として要求変更部２４と、ユニット情報収集部２５とを備えている。
【００２３】
通信部１８は、ネットワーク４を介して、各計画ユニットとの間でデータを送受信する機能を提供する。通信部１８の例としては、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）、無線通信モジュールなどの通信デバイスが挙げられるが、通信デバイスの種類については特に問わない。
【００２４】
記憶部１９は、運転計画に関連するデータや管理サーバ３で動作するプログラムのデータを保存する記憶領域を提供する。記憶部１９は、例えばＳＲＡＭ、ＤＲＡＭなどの揮発性メモリであってもよいし、ＮＡＮＤ、ＭＲＡＭ、ＦＲＡＭなどの不揮発性メモリでもよい。またハードディスク、ＳＳＤなどのストレージ装置や、外部の記憶装置であってもよく、デバイスの種類については特に限定しない。また、記憶部１９は複数の種類のメモリデバイスやストレージデバイスの組み合わせであってもよい。
【００２５】
また、記憶部１９の少なくとも一部の記憶領域は、複数の計画ユニットからアクセス可能に設定されている。例えば、運転計画データベース（運転計画ＤＢ）２２は複数の計画ユニットからアクセス可能に設定された記憶領域に保存されている。複数の計画ユニットからアクセス可能に設定された記憶領域へのアクセス（データの読み込みまたはデータの書き込み）はＡＰＩを介して行われてもよいし、その他の他の方法によって行われてもよい。
【００２６】
処理部２３は、各種の演算および制御を含む情報処理を実行し、管理サーバの機能を実現する。処理部２３は、例えばＣＰＵなどのプロセッサ、ＡＳＩＣ、ＣＰＬＤなどのハードウェア回路、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）やアプリケーションなどのプログラムまたはこれらの組み合わせによって実装される。
【００２７】
要求データベース２０は、運転計画システムが計画の作成対象とするシステムにおいて、時系列で求められている合計出力の値を格納する。図３は、要求データベース２０に保存されたデータの例を示している。図３の例では、複数の計画期間＃１〜＃２４において要求される合計出力の値が示されている。計画期間とは、システムがある要求出力を供給すべき期間のことをいう。運転計画システムは少なくともひとつの計画期間について運転計画を生成するものとする。運転計画に含まれる計画期間の数については特に問わない。また、各計画期間は一定の長さに設定されていてもよいし、異なる長さに設定されていてもよい。
【００２８】
運転計画システムが電力系統に適用される場合、各時刻における電力需要の値に基づき、各計画期間で要求される電力量（合計出力の値）を設定することができる。運転計画の生成において供給予備力を考慮する場合、要求データベース２０へ電力需要に例えば１．０３、１．０５、１．０８など１より大きい係数を乗じた値を格納してもよい。図３の例の場合、計画期間＃１で９０１ＭＷの合計出力が要求されている。同様に、計画期間＃２、計画期間＃３、計画期間＃４でそれぞれ９６３ＭＷ、１０６３ＭＷ、１２０９ＭＷの合計出力が要求されている。
【００２９】
図３の例の場合、運転計画システムは、要求データベース２０の各計画期間において要求された合計出力が満たされるように、複数の計画期間を含む運転計画を作成する。なお、要求データベース２０に運転計画の生成が必要な計画期間を識別するフラグや、運転計画の生成方法を指定する情報などを保存してもよい。
【００３０】
ユニットデータベース２１は、運転計画システムが計画の作成対象とするシステムに含まれる運転ユニットと計画ユニットに係る情報を格納する。運転ユニットと計画ユニットに係る情報の例としては、各運転ユニットの登録状態、各計画ユニットの登録状態、各運転ユニットの最小定格出力や最大定格出力などの仕様、各運転ユニットの故障状態、各計画ユニットの故障状態、各運転ユニットの制約条件、各運転ユニットの運転コスト関数、各運転ユニットの優先度、各計画ユニットの優先度、優先度関数などが挙げられる。また、ユニットデータベース２１に、各計画ユニットが運転ユニットの組み合わせの生成処理で適用する手法に関する情報を保存してもよい。
【００３１】
図４は、ユニットデータベース２１に保存されるデータの例を示している。図４のテーブルには運転ユニットに係る情報が保存されている。図４のテーブルの第１列は、運転ユニットの識別子であるＵＮＩＴ＿ＩＤを格納している。図４の例ではＵＮＩＴ＿ＩＤ＝Ａ〜Ｊとなっており、テーブルのそれぞれの行が１台の運転ユニットに対応している。図４のテーブルには、各運転ユニットの最小定格出力Ｐｍｉｎおよび最大定格出力Ｐｍａｘ、コスト関数の係数ａ〜ｃ、コールドスタートアップコストＢＳ、ホットスタートアップコストＴＳ、ランプアップレートＲＵ、ランプダウンレートＲＤ、最小稼働時間Ｔｏｎ、最小停止時間Ｔｏｆｆのフィールドが含まれている。他に、ユニットデータベース２１には使用するコスト関数に関する情報が格納されていてもよい。
【００３２】
コスト関数Ｃ（Ｐｉ）は、運転ユニットｉの出力Ｐｉをパラメータとする関数であり、以下の式（１）のように表される。
【数１】
2019211989.tif 000003
ここで、ａｉ、ｂｉ、ｃｉは運転ユニットｉにおけるコスト関数の係数である。式（１）はコスト関数の一例にしか過ぎず、これとは異なる関数を使ってコストを算出してもよい。
【００３３】
ユニットデータベース２１には、運転ユニットの制約条件を規定する情報が格納されている。例えば、最小定格出力Ｐｉ，ｍｉｎと最大定格出力Ｐｉ，ｍａｘは運転ユニットｉの出力設定の下限値と上限値を規定する。すなわち、運転計画において運転ユニットｉの出力設定の値は［Ｐｉ，ｍｉｎ，Ｐｉ，ｍａｘ］の範囲内の値に設定される必要がある。
【００３４】
ランプアップレートＲＵｉとランプダウンレートＲＤｉは一回の操作で許容される運転ユニットｉの出力の変化量の上限を規定する。ランプアップレートＲＵｉは一回の操作による運転ユニットｉの出力の増加量の最大値を示している。ランプダウンレートＲＤｉは一回の操作による運転ユニットｉの出力の減少量の最大値を示している。システムが電力系統である場合、ランプアップレートＲＵｉとランプダウンレートＲＤｉは発電力変化率に相当する。
【００３５】
最小稼働時間Ｔｏｎ，ｉと最小停止時間Ｔｏｆｆ，ｉは運転ユニットが稼働できるタイミングと停止できるタイミングを規定する。運転ユニットｉを停止させる場合、停止前の連続稼働時間は最小稼働時間Ｔｏｎ，ｉ以上でなくてはならない。運転ユニットｉを稼働させる場合、稼働前の連続停止時間は最小停止時間Ｔｏｆｆ，ｉ以上でなくてはならない。上述のように、最小定格出力、最大定格出力、ランプアップレート、ランプダウンレート、最小稼働時間、最小停止時間は運転計画に対する制約条件となる。
【００３６】
コールドスタートアップコストＢＳｉとホットスタートアップコストＴＳｉは運転ユニットｉを立ち上げるのに必要なコストである。コストの計算においていずれのスタートアップコストが使われるかは、条件による。すなわち、運転ユニットｉの連続停止時間がしきい値より短い場合、ホットスタートアップコストＴＳを使う。運転ユニットの連続停止時間がしきい値以上である場合、コールドスタートアップコストＢＳを使う。一般にホットスタートアップコストＴＳよりコールドスタートアップコストＢＳの方が大きな値をとる。なお、図４の例には示されていないが、運転ユニットを停止させるのに要するコストであるシャットダウンコストを使ってコストの計算を行ってもよい。
【００３７】
図４のテーブルは一例にしか過ぎない。したがって、ユニットデータベース２１に上述のすべてのフィールドを有していなくてもよいし、ユニットデータベース２１に異なるフィールドが含まれていてもよい。また、図４のテーブルにはＵＮＩＴ＿ＩＤ＝Ａ〜Ｊの１０台の運転ユニットに係る情報が示されているが、システム（例えば、電力系統）に含まれる運転ユニットの台数はこれとは異なっていてもよい。例えば、運転計画システムが大規模な電力系統に適用された場合、運転ユニットの台数は数百台〜数千台またはそれ以上に達する場合がある。
【００３８】
運転計画データベース２２には、対象となるシステム（例えば、電力系統）の運転計画情報が格納される。運転計画データベース２２には、生成中の運転計画に係る運転計画情報と、生成が完了した運転計画に係る運転計画情報の双方が保存されるものとする。ここで、運転計画に関連する各種のデータをまとめて運転計画情報とよぶことにする。運転計画情報の例としては、運転計画で稼働対象とする運転ユニットの組み合わせ、それぞれの計画期間において稼働する運転ユニットの組み合わせ、各運転ユニットの出力設定値、生成中の運転計画のコスト、生成中の運転計画の適用可否、生成中の運転計画のスコアなどが挙げられる。
【００３９】
運転計画データベース２２に格納される運転計画情報は各計画ユニットによって更新されるものとする。計画ユニットは運転計画データベース２２に保存されている運転計画情報の一部またはすべての読み出しと書き換えを行うことができる。複数の計画ユニットから運転計画データベース２２へのアクセスが行われる場合があるため、セマフォやロックなどによる排他制御を行ってもよい。
【００４０】
次に、図を参照しながら運転計画情報に含まれるデータの例を示す。図５は、運転計画生成処理の概要を示している。最初に運転計画システムは、運転計画で稼働対象となる運転ユニットの組み合わせを生成する（図５上段）。図５のテーブル３５は運転計画で稼働対象となる運転ユニットの組み合わせの例を示している。テーブル３５の第１行目には、運転ユニットのＵＮＩＴ＿ＩＤが示されている。テーブル３５の第２行目には、各運転ユニットが稼働対象として選択されているか否かが示されている。テーブル３５では“０”となっている運転ユニットは稼働対象ではない運転ユニットであり、“１”となっている運転ユニットは稼働対象となる運転ユニットである。
【００４１】
テーブル３５を参照すると、ＵＮＩＴ＿ＩＤ＝Ｂ、Ｃ、Ｄ、Ｅ、Ｇ、Ｈ、Ｉの運転ユニットが運転計画で稼働対象となる運転ユニットとして選択されていることがわかる。図５の例では、図４に示されたＵＮＩＴ＿ＩＤ＝Ａ〜Ｊの１０台の運転ユニットのうち、７台の運転ユニットが稼働する運転ユニットとして選択されていることがわかる。
【００４２】
次に、運転計画システムはそれぞれの計画期間において稼働する運転ユニットを決める（図５中段）。図５のテーブル４５は、各計画期間で稼働する運転ユニットの例を示している。テーブル４５の第１列目は各運転ユニットのＵＮＩＴ＿ＩＤ（Ｂ、Ｃ、Ｄ、Ｅ、Ｇ、Ｈ、Ｉ）を示している。また、テーブル４５の第１行目は運転計画の計画期間（＃１、＃２、＃３、・・・、＃２４）を示している。テーブル４５の第１行目および第１列目を除く各フィールドは、各運転ユニットが各計画期間で稼働対象として選択されているか否かを示している。テーブル４５では、“１”となっている運転ユニットが該当する計画期間で稼働する運転ユニットであり、“０”となっている運転ユニットが該当する計画期間で稼働しない運転ユニットである。
【００４３】
テーブル４５を参照すると、計画期間＃１〜＃３では、ＵＮＩＴ＿ＩＤ＝Ｂ、Ｅ、Ｄの運転ユニットが稼働する運転ユニットとして選択されていることがわかる。また、計画期間＃１〜＃２４で稼働する運転ユニットは、テーブル３５に示されたＵＮＩＴ＿ＩＤ＝Ｂ、Ｃ、Ｄ、Ｅ、Ｇ、Ｈ、Ｉの運転ユニットの組み合わせの一部またはすべての運転ユニットとなっていることがわかる。運転計画システムが電力系統に適用されている場合、テーブル４５は発電機の起動停止パターン（起動停止計画から負荷配分を除いた情報）に相当する。
【００４４】
そして、運転計画システムは各計画期間で稼働する運転ユニットの出力設定値を決める（図５下段）。図５のテーブル５０は、各計画期間で稼働する運転ユニットの出力設定値の例を示している。テーブル４５と同様、テーブル５０の第１列目は各運転ユニットのＵＮＩＴ＿ＩＤ（Ｂ、Ｃ、Ｄ、Ｅ、Ｇ、Ｈ、Ｉ）を示している。また、テーブル５０の第１行目は運転計画の計画期間（＃１、＃２、＃３、・・・、＃２４）を示している。テーブル５０の第１行目および第１列目を除く各フィールドには、各運転ユニットの該当する計画期間における出力設定値が格納されている。
【００４５】
テーブル５０を参照すると、計画期間＃１ではＵＮＩＴ＿ＩＤ＝Ｂの運転ユニットの出力設定値が２１２ＭＷ、ＵＮＩＴ＿ＩＤ＝Ｅの運転ユニットの出力設定値が２２０ＭＷ、ＵＮＩＴ＿ＩＤ＝Ｄの運転ユニットの出力設定値が４６９ＭＷとなっていることがわかる。計画期間＃１における運転ユニットの出力設定値の和は９０１ＭＷとなっており、図３に示した計画期間＃１に要求される合計出力の値と等しくなっている。計画期間＃２における運転ユニットの出力設定値の和は９６３ＭＷとなっており、図３に示した計画期間＃２に要求される合計出力の値と等しくなっている。
【００４６】
図３を参照すると、計画期間＃４において要求されている合計出力は１２０９ＭＷである。ところが、図４に示されたＵＮＩＴ＿ＩＤ＝Ｂ、Ｅ、Ｄの運転ユニットの最大定格出力を確認すると、合計が１１２０ＭＷであり、要求に対して不足してしまう。このため、テーブル５０の計画期間＃４ではさらにＵＮＩＴ＿ＩＤ＝Ｃの運転ユニットが立ち上げられる。ＵＮＩＴ＿ＩＤ＝Ｂ、Ｅ、Ｄ、Ｃの運転ユニットの出力設定値は、２６３ＭＷ、２７６ＭＷ、５２０ＭＷ、１５０ＭＷとなっており、和が計画期間＃４において要求されている合計出力１２０９ＭＷに等しくなっている。
【００４７】
図３を参照すると、計画期間＃９、＃１０において要求されている合計出力は１５３２ＭＷとなっており、全計画期間を通して最大値となっている。このため、図５のテーブル５０をみると、計画期間＃９、＃１０ではＵＮＩＴ＿ＩＤ＝Ｂ、Ｃ、Ｄ、Ｅ、Ｇ、Ｈ、Ｉのすべての運転ユニットが稼働対象となっている。計画期間＃９、＃１０では運転ユニットの出力設定値の和が１５３２ＭＷとなっており、計画期間＃９、＃１０で要求されている合計出力に等しくなっている。運転計画システムが電力系統に適用されている場合、テーブル５０は電力系統の発電計画（負荷配分計画）に相当する。
【００４８】
図５に示した内容は運転計画生成処理の一部にしか過ぎない。運転計画システムの実際の処理では、計画期間における運転ユニットの起動停止パターンを複数生成し、各起動停止パターンについて運転ユニットの出力設定値を決定する。そして、要求された合計出力（例えば、需要）と制約条件を満たし、コストが最も低い計画を実際の運転計画として採用する。したがって、運転計画生成処理の実行中に保存される運転ユニットの組み合わせ、運転ユニットの起動停止パターンや運転ユニットの出力設定に関するデータは運転計画の候補であるといえる。運転計画生成処理は複数の計画ユニットの間で分散して実行されるため、負荷の分散し、各計画ユニットが有する計算資源を有効に活用することができる。運転計画生成処理の詳細については後述する。
【００４９】
以降では再び図２を参照しながら、運転計画システムの構成要素を説明する。次に説明する要求変更部２４とユニット情報収集部２５はいずれも管理サーバ３にある処理部２３の内部の構成要素である。
【００５０】
要求変更部２４は、システム（例えば、電力系統）に要求される合計出力が変化した場合、要求データベース２０を更新する。また、要求される合計出力が変化した旨を計画ユニットに通知する。この通知によって計画ユニットは要求される合計出力の変更がある計画期間について、運転計画を修正することができる。通知は全計画ユニットへのブロードキャストであってもよいし、一部の計画ユニットへの通知であってもよい。運転計画の修正は、既存の運転計画で稼働する運転ユニットの出力設定値の調整であってもよいし、計画期間で稼働する運転ユニットの変更であってもよいし、これらの組み合わせであってもよい。また、必要に応じて運転計画を再生成してもよい。
【００５１】
電力系統の場合、例えば気温の急激な変化に伴って冷暖房の使用率が上昇し、電力需要が大きくなった場合や、実際の電力使用量が予測値と乖離し始めたときに、システムに要求する合計出力の値を変更する。
【００５２】
ユニット情報収集部２５は、システムの構成変更や状態変化を検出し、ユニットデータベース２１を更新する。システムの構成変更の例としては、運転ユニットの追加、運転ユニットの変更、運転ユニットの削除、計画ユニットの追加、計画ユニットの変更、計画ユニットの削除などが挙げられる。システムの状態変化の例としては、運転ユニットの故障、計画ユニットの故障、運転ユニットの保守停止、計画ユニットの保守停止、運転ユニットの構成変更、運転ユニットの整備状況や摩耗に応じた最大定格出力の変更などが挙げられる。
【００５３】
また、ユニット情報収集部２５は、システムの構成変更または状態変化を検出したら、その旨を各計画ユニットに通知する。変更後のシステム構成および状態において、要求される合計出力が満たされなくなる場合、この通知を受信した計画ユニットは、要求変更部２４によって通知が行われた場合と同様、運転計画の修正処理を開始する。通知先の計画ユニットはすべての計画ユニットであってもよいし、一部の計画ユニットのみであってもよい。
【００５４】
次に、計画ユニット１ａ、１ｂの構成要素について説明する。以下で説明する計画ユニットの構成要素は、各計画ユニットが共通して備えるものである。
【００５５】
計画ユニット１ａ、１ｂは、処理部１１と、通信部１５と、記憶部１６と、運転制御部１７とを備えている。このうち、処理部１１は内部の構成要素として計画部１２と、制御部１３と、検証部１４とを備えている。
【００５６】
処理部１１は、演算、制御など各種の情報処理を実行し、計画ユニットの機能を実現する。処理部１１は、例えばＣＰＵなどのプロセッサ、ＡＳＩＣ、ＣＰＬＤなどのハードウェア回路、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）やアプリケーションなどのプログラムまたはこれらの組み合わせによって実装される。
【００５７】
通信部１５は、ネットワーク４を介して、他の計画ユニットや管理サーバ３との間でデータを送受信する機能を提供する。通信部１５の例としては、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）、無線通信モジュールなどの通信デバイスが挙げられるが、通信デバイスの種類については特に問わない。
【００５８】
記憶部１６は、運転計画生成処理に関連するデータ、運転計画のデータや計画ユニットで動作するプログラムのデータなどを保存する記憶領域を提供する。記憶部１６は、例えばＳＲＡＭ、ＤＲＡＭなどの揮発性メモリであってもよいし、ＮＡＮＤ、ＭＲＡＭ、ＦＲＡＭなどの不揮発性メモリでもよい。またハードディスク、ＳＳＤなどのストレージ装置でもよく、デバイスの種類については特に限定しない。
【００５９】
運転制御部１７は、記憶部１６に保存された運転計画に基づき、当該計画ユニットとペアになっている運転ユニットを制御する。運転制御部１７が運転ユニットの制御に用いるインタフェースと通信規格の種類については特に問わない。運転制御部１７は、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓ、ＵＳＢ、ＵＡＲＴ、ＳＰＩ、ＳＤＩＯ、シリアルポート、イーサネットなどの電気的な信号を送受信して運転ユニットを制御してもよいし、無線通信によって運転ユニットを制御してもよい。
【００６０】
なお、運転ユニットの制御は、必ず計画ユニット（例えば、上述の運転制御部１７）が運転ユニットに制御指令を送信する形で実現されていなくてもよい。例えば、計画ユニットは、記憶部１６に運転計画のデータを保持し、運転ユニット側が運転計画のデータを定期的にアクセスし、運転ユニットが取得した運転計画のデータに従って稼働してもよい。運転ユニット側から、計画ユニットに運転計画のデータの提供をリクエストし、計画ユニットが当該リクエストに応えて、運転ユニットに運転計画のデータを送信してもよい。運転ユニットがリクエストを計画ユニットへ送信するタイミングについては特に問わない。
【００６１】
ユーザが計画ユニットで生成された運転計画の内容をディスプレイなどで参照し、手動操作で運転ユニットを運転計画に沿って稼働させてもよい。また、取り外し可能な記憶媒体を用いて運転計画のデータを計画ユニットから運転ユニットに移して、運転ユニットの制御プログラムを動かしてもよい。すなわち、運転ユニットを計画ユニットで生成された運転計画にしたがって稼働させることができるのであれば、運転ユニットの制御を実現する方法や、運転ユニットと計画ユニットの間のインタフェースの種類については特に問わない。
【００６２】
次に、処理部１１の内部の構成要素について説明する。
【００６３】
計画部１２は、運転ユニットの組み合わせの生成処理、当該組み合わせの中から各計画期間において稼働する運転ユニットの選択し、運転ユニットの起動停止パターンを生成する処理、各計画期間における運転ユニットの出力設定値を決定する処理、運転計画の修正処理などを実行する。計画部１２による処理によって、運転計画情報のうち、図５に示したデータが生成される。計画部１２は生成したデータを記憶部１６または管理サーバの運転計画データベース２２に保存する。運転計画データベース２２に保存された運転ユニットの組み合わせなどのデータは、他の計画ユニットに共有される。計画部１２は必要に応じて管理サーバの運転計画データベース２２に保存された、共有の運転計画情報を読み出すことができる。
【００６４】
例えば、計画部１２は、既に生成された運転ユニットの組み合わせに基づき、運転ユニットの組み合わせを新たに選択する場合、運転計画データベース２２に格納された他の計画ユニットによって生成された運転ユニットの組み合わせを利用することができる。例えば、計画部１２は遺伝的アルゴリズム（ＧＡ：Ｇｅｎｅｔｉｃ  Ａｌｇｏｒｉｔｍ）、強化学習（Ｒｅｉｎｆｏｒｃｅｍｅｎｔ  Ｌｅａｒｎｉｎｇ）、粒子群最適化（ＰＳＯ：Ｐａｒｔｉｃｌｅ  Ｓｗａｒｍ  Ｏｐｔｉｍｉｚａｔｉｏｎ）を使うことによって、既存の運転ユニットの組み合わせに基づき新たな運転ユニットの組み合わせを生成することができる。これらの手法は一例であり、計画部１２はその他の手法を使って運転ユニットの組み合わせを生成してもよい。
【００６５】
制御部１３は、運転計画生成処理における各ステップの処理がどの計画ユニットによって実行されるのかを指定する。また、制御部１３は運転計画生成処理の必要可否を判定し、必要があると判定された場合には運転計画生成処理の開始指令を各計画ユニットへ送信する。さらに制御部１３は運転計画の修正が必要であるか否かを判定し、必要がある場合には運転計画の修正処理の開始指令を送信する。制御部１３は、運転ユニットの組み合わせを生成する計画ユニット（権限のある計画ユニット）を指定したり、運転ユニットの出力設定値の決定処理、コストやスコアの計算処理を実行する計画ユニットを指定したりする。制御部１３は、ユニットデータベース２１に格納された運転ユニットまたは計画ユニットの優先度に基づき、運転ユニットの組み合わせを生成する計画ユニットや特定の処理を実行する計画ユニットを決定してもよい。
【００６６】
検証部１４は、生成されている運転計画の候補が制約条件を満たしているか否かをチェックする。生成されている運転計画の候補が制約条件を満たしている場合、検証部１４は当該運転計画の候補の適用可否フラグを“１”に設定する。生成されている運転計画の候補が制約条件を満たしていない場合、検証部１４は当該運転計画の候補の適用可否フラグを“０”に設定する。なお、検証部１４は生成されている運転計画の候補が制約条件を満たしていない場合、計画部１２に運転計画の修正を要求してもよい。運転計画の修正処理では、運転ユニットの出力設定値の調整を行ってもよいし、計画期間で稼働する運転ユニットの変更を行ってもよいし、これらの組み合わせを行ってもよい。
【００６７】
また、検証部１４は、生成された運転計画の候補のコストやスコアの計算を行う。検証部１４は運転計画の候補に係る適用可否フラグの値、コスト、スコアなどを記憶部１６または管理サーバの運転計画データベース２２に保存する。検証部１４は、ペナルティとして、制約条件を満たしていない運転計画の候補のコストに任意の値を加算してもよい。これによって、運転計画の候補を選択対象から外したり、運転計画の候補が選択される順位を下げることができる。
【００６８】
次に、運転計画生成処理の詳細について説明する。図６は運転ユニットの組み合わせを生成する方法の例を示している。以下では、図６を参照しながら運転ユニットの組み合わせの生成処理について述べる。
【００６９】
運転ユニットの組み合わせは各計画期間において要求されている合計出力（例えば、図３の要求データベース）とユニットデータベースの情報（例えば、図４）に基づいて生成される。当該組み合わせに含める運転ユニットの決定にあたっては、運転にかかるコストが低い運転ユニットを優先して選択することができる。
【００７０】
運転ユニットの選択の基準として、下記の式（２）のような平均運転コスト関数ａｖｇ（Ｐｉ）を用いることができる。
【数２】
2019211989.tif 000004
ここで、Ｃ（・・・）は式（１）のコスト関数である。Ｐｍａｘ，ｉは運転ユニットｉの最大定格出力である。
【００７１】
式（２）を使うことによって、各運転ユニットの平均運転コストを計算することができる。ＵＮＩＴ＿ＩＤ＝Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊに係る運転ユニットの平均発電コストはそれぞれ１．９２、２．３４、２．２０、２．２６、２．３４、２．０５、２．１３、２．１５、２．１３、１．９６である。運転にかかるコストが低い運転ユニットを優先して選択する場合、選択の優先順位はＡ、Ｊ、Ｆ、Ｇ、Ｉ、Ｈ、Ｃ、Ｄ、Ｅ、Ｂとなる。
【００７２】
そして、運転ユニットの選択を行う。図３を参照すると、計画期間において要求されている合計出力の最小値Ｐｌｏａｄ，ｍｉｎは８７８ＭＷであり、計画期間において要求されている合計出力の最大値Ｐｌｏａｄ，ｍａｘは１５３２ＭＷである。各計画期間において要求されている合計出力が満たされるよう、下記の式（３）および（４）の制約のもとで運転ユニットの選択を行う。
【数３】
2019211989.tif 000005
ここで、Ｐｉ，ｍｉｎは運転ユニットｉの最小定格出力であり、Ｐｉ，ｍａｘは運転ユニットｉの最大定格出力である。ｉにはＵＮＩＴ＿ＩＤなどの各運転ユニットの識別子が入る。
【００７３】
図６のテーブル３０には、複数の運転ユニットの組み合わせが示されている。式（２）に基づいて計算した平均運転コストをそのまま適用して運転ユニットを選択すると、行３１に示されているように、１０台の運転ユニットをすべて選択しないと式（４）の条件を満たせない。そこで、ＵＮＩＴ＿ＩＤ＝Ａに係る運転ユニットをスキップして、次の優先順位にあるＵＮＩＴ＿ＩＤ＝Ｊに係る運転ユニットから選択すると、行３１ａに示されているように、９台の運転ユニットを選択すると式（３）および式（４）の条件が満たされる。
【００７４】
さらにＵＮＩＴ＿ＩＤ＝Ｊに係る運転ユニットをスキップして、次の優先順位にあるＵＮＩＴ＿ＩＤ＝Ｆに係る運転ユニットから選択すると、行３１ｂに示されているように、ＵＮＩＴ＿ＩＤ＝Ｆ、Ｇ、Ｉ、Ｈ、Ｃ、Ｄ、Ｅ、Ｂの８台の運転ユニットのみで式（３）および式（４）の条件を満たすことができる。運転ユニットの台数を減らすと、運転計画を単純化できるため、行３１ｂで選択された組み合わせのもとに使用可能な運転ユニットの組み合わせを探索することにする。
【００７５】
次に、ＵＮＩＴ＿ＩＤ＝Ｆ、Ｇ、Ｉ、Ｈ、Ｃ、Ｄ、Ｅ、Ｂの８台の運転ユニットを使って複数の部分集合を生成する。図６のテーブル３２では、優先順位を用いて複数の部分集合を生成している。まず、８台の運転ユニットのうち、最も優先順位が高いＵＮＩＴ＿ＩＤ＝Ｆの運転ユニット（第１行目の部分集合）に、次の優先順位のＵＮＩＴ＿ＩＤ＝Ｇの運転ユニットを追加している（第２行目の部分集合）。そして、第２行目の部分集合に、次の優先順位のＵＮＩＴ＿ＩＤ＝Ｉの運転ユニットを追加している（第３行目の部分集合）。同様の処理を繰り返すことにより、８個の部分集合を生成する。
【００７６】
８台の運転ユニットのすべてを使わないと式（４）の条件が満たされないため、ＵＮＩＴ＿ＩＤ＝Ｆ、Ｇ、Ｉ、Ｈ、Ｃ、Ｄ、Ｅ、Ｂの運転ユニットをすべて含む組み合わせを使用対象として選択する（行３３：第８行目の部分集合）。なお、テーブル３２の処理で式（３）および式（４）の条件を満たしている部分集合が複数個存在する場合、複数個の組み合わせを使用対象として選択してもよい。
【００７７】
図６下段のテーブル３４は、上述の処理の結果、使用対象とされたＵＮＩＴ＿ＩＤ＝Ｆ、Ｇ、Ｉ、Ｈ、Ｃ、Ｄ、Ｅ、Ｂに係る運転ユニットの組み合わせをビット形式で表現している。対応するビットの値が“１”となっている運転ユニットは使用対象とされた運転ユニットであり、ビットの値が“０”となっている運転ユニットは使用対象とされなかった運転ユニットである。また、テーブル３４の下に示された“ＣＯＭＢＩＮＡＴＩＯＮ：５１０”はテーブル３４のビット列を２進数表記から１０進数表記に変換したものである。以降の説明では、必要に応じ、選択された運転ユニットの組み合わせを１０進数表記で表すものとする。
【００７８】
上述の運転ユニットの組み合わせの生成処理は一例にしか過ぎず、これとは異なる方法を使って運転ユニットの組み合わせを生成してもよい。例えば、ランダムに運転ユニットを選択して運転ユニットの組み合わせを複数個生成し、これらの組み合わせの中で式（３）および式（４）の条件を満たす運転ユニットの組み合わせを抽出してもよい。
【００７９】
次に、図７Ａ、図７Ｂを参照しながら、各計画期間で稼働する運転ユニットを決定する処理の例について説明する。図７Ｂの処理は、一定の運転ユニットの組み合わせを使って、運転ユニットの起動停止パターンを決める処理にあたる。
【００８０】
図７Ｂの例では、図６で生成されたＣＯＭＢＩＮＡＴＩＯＮ：５１０（ＵＮＩＴ＿ＩＤ＝Ｆ、Ｇ、Ｉ、Ｈ、Ｃ、Ｄ、Ｅ、Ｂ）に係る運転ユニットの組み合わせを使って、各計画期間で稼働する運転ユニットを決定している。
【００８１】
図７Ｂの処理の最初では、ＵＮＩＴ＿ＩＤ＝Ｆ、Ｇ、Ｉ、Ｈ、Ｃ、Ｄ、Ｅ、Ｂのすべての運転ユニットが計画期間ｊ＝１〜２４で稼働する設定となっている（図７Ａのテーブル４６）。図７Ｂの処理では、それぞれの運転ユニットの制約条件および各計画期間における合計出力の値に基づき、各運転ユニットが停止可能な期間を探索する。
【００８２】
運転ユニットの制約条件の例としては、最小稼働時間Ｔｏｎ，ｉと最小停止時間Ｔｏｆｆ，ｉが挙げられる。それぞれの計画期間ｊの長さＴＬｊと運転ユニットｉの最小稼働時間Ｔｏｎ，ｉと最小停止時間Ｔｏｆｆ，ｉを比較することによって、運転ユニットｉが停止可能な計画期間を特定することができる。図７Ｂの例では、ＵＮＩＴ＿ＩＤ＝Ｆの運転ユニットが計画期間ｊ＝１〜２４で停止可能であるため、計画期間ｊ＝１〜２４のすべての計画期間で停止する設定にする（テーブル４１、４２）。すべての計画期間で停止する設定となった運転ユニットを、生成した運転ユニットの組み合わせから削除してもよい。
【００８３】
また、ＵＮＩＴ＿ＩＤ＝Ｇの運転ユニットについては、最小稼働時間、最小停止時間、各計画期間ｊの長さＴＬｊの関係から計画期間ｊ＝１〜６および１４〜２４で停止可能であるものとする（テーブル４３、４４）。同様にして、ＵＮＩＴ＿ＩＤ＝Ｉ、Ｈ、Ｃの運転ユニットの停止可能な計画期間を特定する（テーブル４５）。なお、生成された運転ユニットの組み合わせの中で、最大定格出力が大きいＵＮＩＴ＿ＩＤ＝Ｄ、Ｅ、Ｂの運転ユニットについては、停止可能な計画期間を特定する処理が行われていない（図４参照）。電力系統の場合、ＵＮＩＴ＿ＩＤ＝Ｄ、Ｅ、Ｂの運転ユニットはベースロード電源を供給する（長期にわたって継続的に稼働する）発電機に相当するからである。
【００８４】
図７Ｂの例のように、一部の運転ユニットについては停止可能な計画期間を特定する処理をスキップしてもよいし、すべての運転ユニットについて停止可能な計画期間を特定する処理を実行してもよい。当該処理をスキップする運転ユニットを選択する基準の例としては、スタートアップコストがしきい値より大きい場合、シャットダウンコストがしきい値より大きい場合、平均運転コスト関数の値がしきい値より小さい場合、最大定格出力がしきい値より大きい場合、最大定格出力と最小定格出力の差がしきい値より大きい場合などが挙げられるが、どのような基準を用いてもよい。
【００８５】
運転ユニットの組み合わせに含まれる運転ユニットについて、停止可能な計画期間を特定したら、それぞれの計画期間ｊについて下記の式（５）が満たされているか否かをチェックする。
【数４】
2019211989.tif 000006
ここで、Σｉ（ｊ）とは、計画期間ｊにおいて稼働する運転ユニットｉについて、最小定格出力または最大定格出力の和をとることを意味している。
【００８６】
式（５）は、計画期間ｊにおいて稼働する運転ユニットの最小定格出力の和が、計画期間ｊにおいて要求されている合計出力の値以下であり、なおかつ計画期間ｊにおいて稼働する運転ユニットの最大定格出力の和が計画期間ｊにおいて要求されている合計出力の値以上であるという条件を示している。式（５）によって、計画期間ｊにおいて稼働する設定となった運転ユニットで、要求されている合計出力の値が満たされるのか確認することができる。
【００８７】
いずれかの計画期間が式（５）の条件を満たしていない場合、該当する計画期間において稼働する（停止する）運転ユニットの設定（選択）を変更する。設定に変更を行った運転ユニットについては、最小稼働時間や最小停止時間などの制約条件が満たされているのかを確認する。制約条件が満たされている場合、当該変更を運転ユニットの起動停止パターンへ正式に反映する。制約条件が満たされていない場合、該当する計画期間において、異なる運転ユニットの稼働（停止）設定の変更を行う。
【００８８】
上述のような処理を実行することによって、運転ユニットの組み合わせを使った運転ユニットの起動停止パターンを生成することができる（例えば、テーブル４５）。運転計画システムは複数の運転ユニットの組み合わせを生成した場合、それぞれの運転ユニットの組み合わせを使って、運転ユニットの起動停止パターンを生成することができる。
【００８９】
図６に示した運転ユニットの組み合わせを生成する処理と、図７Ｂに示した運転ユニットの起動停止パターンを生成する処理は、１台の計画ユニットによって実行されてもよいし、複数台の計画ユニットによって実行されてもよい。
【００９０】
次に、運転計画生成処理の全体のフローについて説明する。図８は、第１の実施形態に係る運転計画生成処理の例を示している。図８に示された処理のフローでは、複数の計画ユニットが並列的に動作し、運転計画を生成する。
【００９１】
まず、いずれかの計画ユニットの制御部１３は運転計画の生成が必要である場合、運転計画生成処理の開始指令を各計画ユニットへ送信する。当該指令を受信した各計画ユニットは、図８のステップＳ１０の処理を実行する。ステップＳ１０において、各計画ユニットは、コストベースの優先順位に基づき、運転ユニットの組み合わせをＮ個生成する。さらに、ランダムに運転ユニットを選択することによって、運転ユニットの組み合わせをＭ個生成する。これにより、各計画ユニットは、運転ユニットの組み合わせをＭ＋Ｎ個生成する。ここで、ＮおよびＭの値については特に限定しない。
【００９２】
図８のテーブル６０はステップＳ１０で生成された運転ユニットの組み合わせの例を示している。１０進数表記のＣＯＭＢＩＮＡＴＩＯＮ：８５９を２進数表記に変換すると、“１１０１０１１０１１”のビット列が得られる。このビット列はＵＮＩＴ＿ＩＤ＝Ａ、Ｂ、Ｄ、Ｆ、Ｇ、Ｉ、Ｊの運転ユニットの組み合わせを示している。また、１０進数表記のＣＯＭＢＩＮＡＴＩＯＮ：９５を２進数表記に変換すると、“０００１０１１１１１”のビット列が得られる。このビット列はＵＮＩＴ＿ＩＤ＝Ｄ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊの運転ユニットの組み合わせを示している。
【００９３】
次に、各計画ユニットの計画部１２は、各組み合わせを使って、起動停止パターンを生成する。生成した起動停止パターンについて出力設定値を決め、当該条件でシステムが運転された場合におけるコストを計算する（ステップＳ１１）。ここで検証部１４は併せて計画が制約条件を満たしているか否かを確認し、適用可否フラグの値を設定する。そして、各計画ユニットは生成した運転ユニットの組み合わせ、起動停止パターン、運転ユニットの出力設定値、コスト、適用可否フラグの値を管理サーバ３の運転計画データベース２２に保存する（ステップＳ１２）。これによって、各計画ユニットは他の計画ユニットが生成した運転ユニットの組み合わせ、起動停止パターン、運転ユニットの出力設定値、コスト、制約条件の充足（適用可否）に関する情報を取得することができるようになる。なお、運転ユニットの出力設定値を決める方法の詳細について後述する。
【００９４】
図８のテーブル６１は、ステップＳ１１で生成された運転計画の候補の例を示している。ＣＯＭＢＩＮＡＴＩＯＮ：８５９の場合、コストの値が８９となり、制約条件を満たす運転計画の候補が生成されている。ＣＯＭＢＩＮＡＴＩＯＮ：９５の場合、コストの値が２３４となり、制約条件を満たす運転計画の候補が生成されている。ＣＯＭＢＩＮＡＴＩＯＮ：３４の場合、制約条件を満たす運転計画の候補を生成できなかったため、ペナルティが課され、コストが９１７１という大きな値に設定されている。
【００９５】
そして、各計画ユニットは運転計画生成処理を終了できるか否かを判定する（ステップＳ１３）。運転計画生成処理を終了する条件として、制約条件を満たしている運転計画の候補の有無、制約条件を満たしている運転計画の候補の数が一定値に達したか否か、処理の繰り返し回数などを使うことができるが、どのような条件を適用してもよい。ステップＳ１３で運転計画生成処理が終了した場合、運転計画データベース２２に保存された制約条件を満たしている（すなわち、適用可否フラグの値が“１”である）運転計画の候補を正式な運転計画に設定して、対象のシステムを運転することができる。
【００９６】
ステップＳ１３で、運転計画生成処理を終了できないと判定した場合、各計画ユニットは運転計画データベース２２に保存されている既存の運転ユニットの組み合わせを使い、新しい運転ユニットの組み合わせを生成する（ステップＳ１４）。ステップＳ１４では例えば、１００組の運転ユニットの組み合わせをさらに生成することができるが、生成される運転計画の組み合わせの数については特に限定しない。また、ステップＳ１４において各計画ユニットは異なる手法を使って運転計画の組み合わせを生成してもよい。
【００９７】
図８の例において、計画ユニット＃１はステップＳ１４で遺伝的アルゴリズム（ＧＡ）を使って運転ユニットの異なる組み合わせを生成している。一方、計画ユニット＃２はステップＳ１４で強化学習を使って運転ユニットの異なる組み合わせを生成している。また、計画ユニット＃３はステップＳ１４で粒子群最適化（ＰＳＯ）を使って運転ユニットの異なる組み合わせを生成している。これらの手法は例であり、その他の手法を使って運転ユニットの組み合わせをさらに生成してもよい。
【００９８】
各計画ユニットはステップＳ１４で運転ユニットの組み合わせをさらに生成したら、ステップＳ１１の処理に戻り、生成した組み合わせについて出力設定値を決める。そして、当該設定でシステムが運転された場合におけるコストを計算し、生成された運転計画の候補が制約条件を満たしているかを確認する。
【００９９】
なお、ステップＳ１０の処理において、異なる計画ユニットが同一の運転ユニットの組み合わせを生成しないようにしてもよい。例えば、計画ユニットの番号、識別子、ユニットデータベース２１に保存された計画ユニットの優先度などの値に基づき、それぞれの計画ユニットが異なる運転ユニットを除外するように設定を行ってもよい。
【０１００】
次に、運転ユニットの出力設定値を決定する方法について述べる。図９は、各運転ユニットの出力設定値を決定する処理の例を示している。図９のフローチャートは図８のステップＳ１１で実行される処理の一部をより詳細に示したものとなっている。以下では図９を参照しながら、処理を説明する。
【０１０１】
最初に、各計画ユニットは要求データベース２０を参照し、対象の計画期間ｔについて要求されている出力の合計値Ｒ（ｔ）を取得する（ステップＳ１０１）。
【０１０２】
なお、既に計画期間ｔ−１または計画期間ｔ＋１の少なくともいずれかについて運転ユニットの出力設定値が決められている場合には、計画期間ｔ−１または計画期間ｔ＋１に係る運転計画情報を運転計画データベース２２から取得してもよい。このとき、計画ユニットはユニットデータベース２１から各運転ユニットの最大定格出力、各運転ユニットの最小定格出力、各運転ユニットのランプアップレート、各運転ユニットのランプダウンレートなども取得する。これらの情報と、計画期間ｔ−１または計画期間ｔ＋１における各運転ユニットの出力設定値および稼働対象となる運転ユニットの組み合わせに基づき、対象の計画期間ｔで設定可能な出力設定値の合計の上限値Ｏｔ，ｍａｘと下限値Ｏｔ，ｍｉｎを特定することができる。
【０１０３】
したがって、既に計画期間ｔ−１または計画期間ｔ＋１の少なくともいずれかについて運転ユニットの出力設定値が決められている場合には、対象の計画期間ｔにおける各運転ユニットの出力設定値の合計は、計画期間ｔについて要求されている出力の合計値Ｒ（ｔ）以上であり、なおかつ［Ｏｔ，ｍｉｎ、Ｏｔ，ｍａｘ］の範囲内の値となるように調整される。
【０１０４】
次に、計画期間ｔで稼働する各運転ユニットの値Ｐｉ（ｔ）を初期化する（ステップＳ１０２）。ここで、各運転ユニットの出力設定値は［Ｐｉ，ｍｉｎ、Ｐｉ，ｍａｘ］の範囲内の値に初期化される。また、ステップＳ１０２では稼働対象となる運転ユニットの出力設定値の合計ΣＰｉ（ｔ）が計画期間ｔについて要求されている出力の合計値Ｒ（ｔ）以上になるようにする。ステップＳ１０２で、各運転ユニットの出力設定値を各運転ユニットの最大定格出力Ｐｉ，ｍａｘに設定してもよいし、ΣＰｉ（ｔ）が上述のＯｔ，ｍａｘに等しくなるように各運転ユニットの出力設定値を決めてもよい。
【０１０５】
そして、各運転ユニットの出力設定値の合計ΣＰｉ（ｔ）からＲ（ｔ）を減算し、余剰出力Ｅｐを計算する（ステップＳ１０３）。以降の処理では、余剰出力Ｅｐの値が０になるまで、いずれかの運転ユニットの出力設定値Ｐｉ（ｔ）を減らす処理が繰り返し実行される。
【０１０６】
次のステップＳ１０４では余剰出力Ｅｐが０であるか否かを確認する。Ｅｐ＝０である場合、各運転ユニットの出力設定値を決定する処理は終了する（ステップＳ１０４のＹＥＳ）。Ｅｐ＞０である場合、運転ユニットのコストＣを計算する（ステップＳ１０５）。コストＣは各運転ユニットの現時点における出力設定値Ｐｉ（ｔ）を式（１）のコスト関数に代入することによって求められる。なお、この計算方法は例であり、これとは異なる方法でコストＣを計算してもよい。なお、最終的にΣＰｉ（ｔ）をＲ（ｔ）より大きい値に調整するのであれば、ステップＳ１０４における終了条件をＥｐ＝ｒ（ｒ＞０）に設定してもよい。
【０１０７】
そして、出力設定値Ｐｉ（ｔ）が最小定格出力Ｐｉ，ｍｉｎより大きい運転ユニットのうち、コストＣの値が最大の運転ユニットを選択する（ステップＳ１０６）。そして、選択した運転ユニットの出力設定値Ｐｉ（ｔ）をΔｑだけ減らす（ステップＳ１０７）。調整量Δｑは正の値をとる。調整量Δｑの値としては、例えば０．１、０．２、０．５、１．０などの値を用いることができるが、異なる値を使ってもよい。調整量Δｑは定数であってもよいし、調整可能なパラメータであってもよい。また、さらに余剰出力ＥｐをΔｑ減らし、余剰出力Ｅｐの値を更新する（ステップＳ６０８）。
【０１０８】
余剰出力Ｅｐの値を更新したら、再びステップＳ１０４の判定を実行し、余剰出力Ｅｐが０になっているか確認する。余剰出力Ｅｐが０より大きい場合、ステップＳ１０５以降の処理を再び実行する。
【０１０９】
システム（例えば、電力系統）の規模が大きくなると、運転計画の生成や修正の処理において探索対象となる運転ユニットの組み合わせの数や、負荷配分（出力設定）のパターン数が膨大なものになる。例えば、運転ユニットがｎ台あるシステムの場合、選択可能な運転ユニットの組み合わせの数は合計２のｎ乗パターンになる。したがって、管理サーバなど特定の計算機で集中的に運転計画の生成や変更の処理を実行させると、運転計画の生成や変更に要する時間が長くなってしまう。また、計算資源の制約から、充分な数の運転ユニットの組み合わせや、負荷配分のパターンを検証することができず、期限内に経済的な運転計画を生成できないおそれすらある。
【０１１０】
そこで、本実施形態の運転計画システムでは、運転計画生成処理を複数の計画ユニットの間で分散して実行する。これによって、複数の計画ユニットが有する計算資源を使い、検証可能な運転ユニットの組み合わせの数や、負荷配分（出力設定）のパターン数を増やし、短時間で制約条件を満たした経済的な運転計画を用意することが可能となる。
【０１１１】
本実施形態の運転計画システムでは、運転ユニットと計画ユニットのペアを追加すると、システムの出力面だけでなく、計算資源のスケールアウトをはかることもできる。したがって、対象となるシステム（例えば、電力系統）の規模が拡大しても、運転計画の生成や修正処理のために充分な計算資源を確保することができる。
【０１１２】
（第２の実施形態）
第１の実施形態に係る運転計画システムでは、複数の計画ユニットが並列的に運転計画生成処理を実行していた。ただし、第１の実施形態とは異なる方法によっても運転計画生成処理に係る負荷を複数の計画ユニットの間で分散させることができる。第２の実施形態においては、特定の計画ユニットが運転ユニットの組み合わせを複数個生成する。その後、各計画ユニットは割り当てられた運転ユニットの組み合わせを使って、起動停止パターンを生成し、出力設定値の決定、コストの計算、制約条件のチェックなどの処理を実行する。
【０１１３】
図１０は、第２の実施形態に係る運転計画生成処理の例を示したフローチャートである。以下では、図１０のフローチャートを参照しながら、処理を説明する。
【０１１４】
なお、以下では運転ユニットの組み合わせを生成する権限がある計画ユニットをリーダーの計画ユニットとよぶものとする。いずれかの計画ユニットがリーダーの計画ユニットに設定されるものとする。処理の途中でリーダーの計画ユニットが変更されてもよい。
【０１１５】
まず、リーダーに設定された計画ユニットは上述の式（３）および式（４）の条件を満たす運転ユニットの組み合わせを複数個生成する（ステップＳ１１１）。リーダーの計画ユニットは、例えばユニットデータベース２１に格納された計画ユニットの優先度に基づいて、決められてもよいし、ランダムに選択されてもよく、決め方については特に問わない。
【０１１６】
次に、リーダーの計画ユニットは、各計画ユニットがどの運転ユニットの組み合わせについて運転計画の候補を生成するのか、処理の割り当てを決定する（ステップＳ１１２）。ここで、運転計画の候補の生成処理とは、ある運転ユニットの組み合わせについて出力設定値を設定し、該当する条件のもとでのコストの計算と制約条件の確認を行う処理のことをいう。ステップＳ１１２において、リーダーの計画ユニットに一部の運転ユニットの組み合わせについて運転計画の候補を生成する処理を割り当ててもよいし、処理の割り当て先からリーダーの計画ユニットを除外してもよい。当該割り当てに関する情報はそれぞれの計画ユニットに通知される。メッセージを各計画ユニットに送信することによって通知を行ってもよいし、運転計画データベース２２に割り当てに関する情報を書き込むことによって、各計画ユニットへの通知を行ってもよい。
【０１１７】
そして、各計画ユニットは割り当てられた運転ユニットの組み合わせについて、起動停止パターンを生成する。そして、生成した起動停止パターンについて出力設定値を決定し、コストの計算、制約条件の確認を行う。また、各計画ユニットは生成した運転計画情報を共有された記憶領域（運転計画データベース２２）に保存する（ステップＳ１１３）。各計画ユニットによって運転計画の候補が生成されたら、リーダーの計画ユニットは処理の終了条件が満たされているか否かを確認する（ステップＳ１１４）。処理を終了する条件として、制約条件を満たしている運転計画の候補の有無、制約条件を満たしている運転計画の候補の数が一定値に達したか否か、処理の繰り返し回数などを使うことができるが、どのような条件を適用してもよい。
【０１１８】
処理の終了条件が満たされている場合、図１０の処理を終了する（ステップＳ１１４のＹＥＳ）。処理の終了条件が満たされていない場合（ステップＳ１１４のＮＯ）、次にリーダーとなる計画ユニットを決める（ステップＳ１１５）。次にリーダーとなる計画ユニットは前回とは異なる計画ユニットであってもよいし、前回と同じ計画ユニットであってもよい。ステップＳ１１１と同様、リーダーとなる計画ユニットの決め方については特に問わない。
【０１１９】
そして、リーダーに選定された計画ユニットは、共有された記憶領域（運転計画データベース２２）に保存された運転計画情報に対して遺伝的アルゴリズムを適用し、運転ユニットの異なる組み合わせを生成する（ステップＳ１１６）。追加で運転ユニットの組み合わせが生成されたら、リーダーの計画ユニットは、各計画ユニットがどの運転ユニットの組み合わせについて運転計画の候補を生成するのか、処理の割り当てを決定する（ステップＳ１１２）。すなわち、追加で生成された運転ユニットの組み合わせについて、再びステップＳ１１２以降の処理が実行される。
【０１２０】
以下では、図１０のフローチャートで説明した処理を実際のデータに適用した例について説明する。図１１と図１２は、第２の実施形態に係る運転計画生成処理で生成されるデータの例を示している。以下では、図１１を参照しながら、説明をする。
【０１２１】
図１１の例では、最初に計画ユニット＃１がリーダーとなっている。計画ユニット＃１の計画部１２は運転ユニットの組み合わせを複数個生成する。そして、計画ユニット＃１の制御部１３は生成した運転ユニットの組み合わせのそれぞれについて、運転計画の候補の生成を担当する計画ユニットを決定している。そして、計画ユニット＃１の制御部１３は、処理を割り当てたそれぞれの計画ユニットに対して、対象となる運転ユニットの組み合わせに関する情報を通知し、出力設定値の決定処理、コストの計算処理、制約条件の充足性を確認する処理の実行を求める指令を送信する。
【０１２２】
なお、計画ユニット＃１は生成した運転ユニットの組み合わせに関する情報を運転計画データベース２２（共有された記憶領域）に保存し、各計画ユニットに対して、運転計画データベース２２を参照して、割り当てられた運転ユニットの組み合わせに関する情報を取得するように指示してもよい。
【０１２３】
図１１の例では、計画ユニット＃１にＣＯＭＢＩＮＡＴＩＯＮ：８９８とＣＯＭＢＩＮＡＴＩＯＮ：９１が割り当てられている。計画ユニット＃２にはＣＯＭＢＩＮＡＴＩＯＮ：４００とＣＯＭＢＩＮＡＴＩＯＮ：１４４が割り当てられている。計画ユニット＃３にはＣＯＭＢＩＮＡＴＩＯＮ：８０８とＣＯＭＢＩＮＡＴＩＯＮ：１８が割り当てられている。計画ユニット＃４にはＣＯＭＢＩＮＡＴＩＯＮ：５７５とＣＯＭＢＩＮＡＴＩＯＮ：３４４が割り当てられている。それぞれの計画ユニットは割り当てられた運転ユニットの組み合わせを使って起動停止パターンを生成する。そして、各起動停止パターンについて出力設定値を決定し、コストの計算、制約条件の充足性を確認する処理（検証）を実行する。
【０１２４】
そして、各計画ユニットは運転ユニットの組み合わせに係る起動停止パターン、出力設定値、コスト、適用可否フラグの値を運転計画データベース２２（共有された記憶領域）に保存する。生成された運転計画の候補が制約条件を満たしている場合、適用可否フラグの値は“１”となる。生成された運転計画の候補が制約条件を満たしていない場合、適用可否フラグの値は“０”となる。各計画ユニットは、適用可否フラグの値が“１”となった運転計画の候補に係る運転計画情報を運転計画データベース２２に保存してもよいし、すべての運転計画の候補に係る運転計画情報を運転計画データベース２２に保存してもよい。
【０１２５】
各計画ユニットによって運転計画情報が保存されたら、計画ユニット＃１は処理の終了条件が満たされているか否かを確認する。図１１の例では、適用可否フラグの値が“１”で制約条件を満たしている運転計画の候補が生成されているものの、処理の終了条件が満たされていないと判定されたため、計画ユニット＃１は処理を続行する。そして、リーダーである計画ユニット＃１は、次にリーダーとなる計画ユニットを決める。図１１の例では、次にリーダーとなる計画ユニットとして計画ユニット＃３が選択されている。ユニットデータベース２１に格納された優先度に基づいてリーダーの計画ユニットが決定されている場合、ユニットデータベース２１における優先度の値を更新してもよい。
【０１２６】
以下では、図１２を参照しながら、説明をする。
【０１２７】
新たにリーダーとなった計画ユニット＃３の計画部１２は運転ユニットの組み合わせを複数個生成する。そして、計画ユニット＃３の制御部１３は生成した運転ユニットの組み合わせのそれぞれについて、運転計画の候補の生成を担当する計画ユニットを決定する。そして、計画ユニット＃３の制御部１３は、処理を割り当てたそれぞれの計画ユニットに対して、対象となる運転ユニットの組み合わせに関する情報を通知し、起動停止パターンの生成処理、出力設定値の決定処理、コストの計算処理、制約条件の確認処理の実行を求める指令を送信する。計画ユニット＃３は生成した運転ユニットの組み合わせに関する情報を運転計画データベース２２（共有された記憶領域）に保存し、各計画ユニットに対して、運転計画データベース２２を参照して、割り当てられた運転ユニットの組み合わせに関する情報を取得するように指示してもよい。
【０１２８】
図１２の例では、計画ユニット＃１にＣＯＭＢＩＮＡＴＩＯＮ：８５９とＣＯＭＢＩＮＡＴＩＯＮ：９５が割り当てられている。計画ユニット＃２にはＣＯＭＢＩＮＡＴＩＯＮ：３４とＣＯＭＢＩＮＡＴＩＯＮ：８４４が割り当てられている。計画ユニット＃３にはＣＯＭＢＩＮＡＴＩＯＮ：２５６とＣＯＭＢＩＮＡＴＩＯＮ：５１４が割り当てられている。計画ユニット＃４にはＣＯＭＢＩＮＡＴＩＯＮ：２０６とＣＯＭＢＩＮＡＴＩＯＮ：４１３が割り当てられている。それぞれの計画ユニットは割り当てられた運転ユニットの組み合わせについて起動停止パターンを生成する。そして、各起動停止パターンについて出力設定値を決定し、コストの計算、制約条件の充足性を確認する処理（検証）を実行する。
【０１２９】
そして、各計画ユニットは運転ユニットの組み合わせに係る起動停止パターン、出力設定値、コスト、適用可否フラグの値を運転計画データベース２２（共有された記憶領域）に保存する。各計画ユニットは、適用可否フラグが“１”となった運転計画の候補に係る運転計画情報を運転計画データベース２２に保存してもよいし、すべての運転計画の候補に係る運転計画情報を運転計画データベース２２に保存してもよい。図１２の処理を実行することによって、運転計画データベース２２に格納された運転計画の候補の数が増えていることがわかる。
【０１３０】
ここで、計画ユニット＃３は処理の終了条件が満たされているか否かを確認する。図１２の例では、適用可否フラグの値が“１”で制約条件を満たしている運転計画の候補が複数生成されているものの、処理の終了条件が満たされていないと判定されたため、計画ユニット＃３は処理を続行する。そして、リーダーである計画ユニット＃３は、次にリーダーとなる計画ユニットとして計画ユニット＃２を選定している。
【０１３１】
第２の実施形態では、リーダーとなった計画ユニットが運転ユニットの組み合わせを生成している。そして、リーダーの計画ユニットは各計画ユニットが運転計画の候補の生成処理に用いる運転ユニットの組み合わせの割り当てを決定している。この割り当て処理により、複数の計画ユニットが同じ運転ユニットの組み合わせを使って運転計画の候補を生成し、処理内容が重複する状態となることを避けることができる。運転ユニットの台数が多いと、探索空間のサイズも大きくなる（２のｎ乗個の組み合わせ）ため、第２の実施形態によって、効率的に低コストで良好な特性を備える運転計画が生成される確率を高めることができる。
【０１３２】
（第３の実施形態）
第１の実施形態に係る処理と、第２の実施形態に係る処理を選択できるように、運転計画システムを構成してもよい。第３の実施形態では、運転計画生成処理の実行方法を選択できるようにした場合について説明する。
【０１３３】
図１３は、運転計画を生成する方法を切り替えられるように構成したシステムにおける処理の例を示したフローチャートである。以下では、図１３を参照しながら、処理について説明する。
【０１３４】
まず、最初に複数の計画ユニットを起動する（ステップＳ１５１）。そして、起動した計画ユニットのうち、最も優先度の高い計画ユニットの制御部１３は、運転計画の生成が必要であるか否かを判定する（ステップＳ１５２）。運転計画を生成する必要がある場合（ステップＳ１５２のＹＥＳ）、それぞれの計画ユニットが運転ユニットの組み合わせを生成するか否かを判定する（ステップＳ１５３）。運転計画を生成する必要がない場合、図１３の処理は終了する（ステップＳ１５２のＮＯ）。
【０１３５】
それぞれの計画ユニットが運転ユニットの組み合わせを生成する場合（ステップＳ１５３のＹＥＳ）、最も優先度の高い計画ユニットの制御部１３は、各計画ユニットに運転計画の生成処理を開始させる指令を送信する（ステップＳ１５４）。当該指令を受信した各計画ユニットは、図８（第１の実施形態）の方法によって運転計画を生成する（ステップＳ１５５）。
【０１３６】
それぞれの計画ユニットが運転ユニットの組み合わせを生成しない場合（ステップＳ１５３のＮＯ）、最も優先度の高い計画ユニットは、リーダーの計画ユニットとなり、図１０（第２の実施形態）の方法によって運転計画を生成する（ステップＳ１５６）。
【０１３７】
運転計画データベース２２に運転計画の生成方法を指定する情報を保存し、当該情報に基づき、ステップＳ１５３で図８（第１の実施形態）の処理によって運転計画を生成するのか、図１０（第２の実施形態）の処理によって運転計画を生成するかを決定してもよい。また、保守員がいずれの方法によって運転計画の生成を行うのかを指定してもよい。
【０１３８】
（第４の実施形態）
運転計画生成処理の負荷を複数の計画ユニットに分散させるために、第１の実施形態や第２の実施形態の方法とは異なる方法を適用してもよい。第４の実施形態では、運転計画の候補を複数の計画ユニットの間で巡回させ、調整処理を実行する。
【０１３９】
図１４は、第４の実施形態に係る運転計画生成処理の例を示している。以下では、図１４を参照しながら、処理を説明する。図１４では、計画ユニット＃１〜＃３の３台の計画ユニットが運転計画の生成処理を行っている。図１４に示されている処理は一例にしか過ぎず、実際に運転計画の生成処理を実行する計画ユニットの台数はこれとは異なっていてもよい。例えば、数十台、数百台、数千台またはそれ以上の計画ユニットが図１４の処理を実行してもよい。
【０１４０】
最初に、計画ユニット＃１〜＃３は、運転ユニットの組み合わせ、対応する起動停止パターン、出力設定値、コストを含む運転計画の候補を生成する。計画ユニット＃１は、運転計画の候補ＳＬ１１、ＳＬ１２、ＳＬ１３を生成する。一方、計画ユニット＃２は、運転計画の候補ＳＬ２１、ＳＬ２２、ＳＬ２３を生成する。計画ユニット＃３は、運転計画の候補ＳＬ３１、ＳＬ３２、ＳＬ３３を生成する。各計画ユニットは、生成した運転計画の候補に係る運転計画情報を運転計画データベース２２に保存してもよい。また、運転計画情報を他の計画ユニットに送信してもよい。
【０１４１】
そして、各計画ユニットは、運転計画の候補を調整する（巡回回数：０）。検証部１４が運転計画の候補を検証した結果、制約条件が満たされていない場合、制約条件が満たされるように各計画期間で稼働する運転ユニット（起動停止パターン）や、出力設定値の調整を行ってもよい。また、各計画ユニットがペアとなっている運転ユニットの構成変更や状態変化などがあれば、これらの変化を運転計画の候補に反映してもよい。例えば、ペアとなっている運転ユニットが故障した場合や、保守点検状態となった場合には、当該運転ユニットを運転計画の候補から除外することができる。また、ペアとなっている運転ユニットの改良、拡張、機能追加などがあれば、当該運転ユニットの出力設定値を大きくすることができる。
【０１４２】
調整処理によって、計画ユニット＃１が生成した運転計画の候補ＳＬ１１、ＳＬ１２、ＳＬ１３はそれぞれ運転計画の候補ＳＬ１１ａ、ＳＬ１２ａ、ＳＬ１３ａに変化したものとする。また、計画ユニット＃２が生成した運転計画の候補ＳＬ２１、ＳＬ２２、ＳＬ２３は調整処理によって、それぞれ運転計画の候補ＳＬ２１ｂ、ＳＬ２２ｂ、ＳＬ２３ｂに変化したものとする。計画ユニット＃３が生成した運転計画の候補ＳＬ３１、ＳＬ３２、ＳＬ３３はそれぞれ運転計画の候補ＳＬ３１ｃ、ＳＬ３２ｃ、ＳＬ３３ｃに変化したものとする。ここでも、調整された運転計画の候補に係る運転計画情報を運転計画データベース２２に保存してもよい。また、運転計画情報を他の計画ユニットに送信してもよい。
【０１４３】
次に、それぞれの計画ユニットが調整対象とする運転計画の候補が巡回される（巡回回数：１）。巡回前に計画ユニット＃１が調整していた運転計画の候補ＳＬ１１ａ、ＳＬ１２ａ、ＳＬ１３ａは、巡回後に計画ユニット＃３の調整対象となる。巡回前に計画ユニット＃２が調整していた運転計画の候補ＳＬ２１ｂ、ＳＬ２２ｂ、ＳＬ２３ｂは、巡回後に計画ユニット＃１の調整対象となる。巡回前に計画ユニット＃３が調整していた運転計画の候補ＳＬ３１ｃ、ＳＬ３２ｃ、ＳＬ３３ｃは計画ユニット＃２の調整対象となる。
【０１４４】
計画ユニット＃１が実行する調整処理により、運転計画の候補ＳＬ２１ｂ、ＳＬ２２ｂ、ＳＬ２３ｂはそれぞれ運転計画の候補ＳＬ２１ａｂ、ＳＬ２２ａｂ、ＳＬ２３ａｂに変化する。計画ユニット＃２が実行する調整処理により、運転計画の候補ＳＬ３１ｃ、ＳＬ３２ｃ、ＳＬ３３ｃはそれぞれ運転計画の候補ＳＬ３１ｂｃ、ＳＬ３２ｂｃ、ＳＬ３３ｂｃに変化する。計画ユニット＃３が実行する調整処理により、運転計画の候補ＳＬ１１ａｃ、ＳＬ１２ａｃ、ＳＬ１３ａｃに変化する。各計画ユニットは、運転計画の候補のコストを計算する。また、運転計画の候補が制約条件を満たしているかを確認する。ここでも、調整された運転計画の候補に係る運転計画情報を運転計画データベース２２に保存してもよい。また、運転計画情報を他の計画ユニットに送信してもよい。
【０１４５】
再びそれぞれの計画ユニットが調整対象とする運転計画の候補が巡回される（巡回回数：２）。巡回前に計画ユニット＃１が調整していた運転計画の候補ＳＬ２１ａｂ、ＳＬ２２ａｂ、ＳＬ２３ａｂは、巡回後に計画ユニット＃３の調整対象となる。巡回前に計画ユニット＃２が調整していた運転計画の候補ＳＬ３１ｂｃ、ＳＬ３２ｂｃ、ＳＬ３３ｂｃは、巡回後に計画ユニット＃１の調整対象となる。巡回前に計画ユニット＃３が調整していた運転計画の候補ＳＬ１１ａｃ、ＳＬ１２ａｃ、ＳＬ１３ａｃは、巡回後に計画ユニット＃２の調整対象となる。
【０１４６】
計画ユニット＃１が実行する調整処理により、運転計画の候補ＳＬ３１ｂｃ、ＳＬ３２ｂｃ、ＳＬ３３ｂｃはそれぞれ運転計画の候補ＳＬ３１ａｂｃ、ＳＬ３２ａｂｃ、ＳＬ３３ａｂｃに変化する。計画ユニット＃２が実行する調整処理により、運転計画の候補ＳＬ１１ａｃ、ＳＬ１２ａｃ、ＳＬ１３ａｃはそれぞれ運転計画の候補ＳＬ１１ａｂｃ、ＳＬ１２ａｂｃ、ＳＬ１３ａｂｃに変化する。計画ユニット＃３が実行する調整処理により、運転計画の候補ＳＬ２１ａｂ、ＳＬ２２ａｂ、ＳＬ２３ａｂはそれぞれ運転計画の候補ＳＬ２１ａｂｃ、ＳＬ２２ａｂｃ、ＳＬ２３ａｂｃに変化する。各計画ユニットは、運転計画の候補のコストを計算する。また、運転計画の候補が制約条件を満たしているかを確認する。ここでも、調整された運転計画の候補に係る運転計画情報を運転計画データベース２２に保存してもよい。また、運転計画情報を他の計画ユニットに送信してもよい。
【０１４７】
計画ユニットは各回で運転計画の候補を調整した後、制約条件を満たした運転計画の候補が存在するか否かの確認を行う。制約条件を満たした運転計画の候補がある場合、各計画ユニットは運転計画の生成処理を終了することができる。ただし、制約条件を満たした運転計画の候補が一定数を超えることなど、その他の終了条件を設定してもよいのは、第１の実施形態と同様である。
【０１４８】
ここでは、運転計画の生成処理が実行された場合を例に説明をしたが、本実施形態の方法は、既に生成された運転計画の修正処理を行う場合にも適用することができる。また、図１４で説明した巡回パターンは一例にしか過ぎない。したがって、図１４とは異なる方向で運転計画の候補を巡回させてもよいし、巡回パターンにおける順序が図１４とは異なっていてもよい。
【０１４９】
本実施形態の方法を適用することによって、処理の分散をはかると同時に、各計画ユニットとペアとなっている運転ユニットの構成変更や状態変化を迅速に運転計画に反映させることができる。管理サーバ３におけるユニットデータベース２１の情報をただちにアップデートできない場合でも、各計画ユニットが有する、ローカルな運転ユニットの情報を使って、運転計画の生成や修正を行うことができる。
【０１５０】
（第５の実施形態）
上述の各実施形態の運転計画システムは、運転ユニットの組み合わせの生成、運転ユニットの組み合わせを使った起動停止パターンの生成、起動停止パターンにおける出力設定値の決定、コストの計算および制約条件のチェックの順で処理が実行されていた。ただし、運転計画の生成処理を必ず上述の処理の順序および処理の組み合わせで実行しなくてもよい。
【０１５１】
例えば、起動停止パターンの生成処理をスキップし、運転ユニットの組み合わせを生成した後、当該組み合わせを使って出力設定値の決定処理を実行してもよい。この場合、同じ運転ユニットの組み合わせがすべての計画期間で継続して稼働する運転計画が生成される。運転ユニットの稼働操作や停止操作などを行うとコストが発生する場合があるため、運転ユニットの起動停止を行わない方が経済的な運転計画が用意できるケースがある。
【０１５２】
そこで、第５の実施形態では、起動停止パターンの生成処理をスキップして運転計画を生成する場合を例に説明する。
【０１５３】
図１５、図１６は、第５の実施形態に係る運転計画生成処理の例を示したフローチャートである。以下では、図１５、図１６を参照しながら、処理を説明する。図１５、図１６の処理が実行される前に、運転ユニットの組み合わせを生成する処理（例えば、図６の処理）が実行されているものとする。
【０１５４】
なお、図１５、図１６の処理を複数の計画ユニットに実行させることによって、並列的に複数の運転計画を生成することができる。制約条件を満たす複数の運転計画が生成された場合、その中で最もコストが低い運転計画を正式な運転計画として選択することができる。一般に、処理を実行する計画ユニットの台数を増やすほど、短時間でコストが低い運転計画を生成できる確率が高まる。
【０１５５】
最初に、計画ユニットは、運転計画データベース２２（共有された記憶領域）に保存されている、運転ユニットの組み合わせより、運転ユニットの組み合わせの少なくともいずれかを選択する（ステップＳ２０１）。計画ユニットは、運転計画データベース２２の選択した運転ユニットの組み合わせに係るデータ（第１データ）に、当該運転ユニットの組み合わせを選択済みである旨を記録（マーキング）してもよい。この場合、各計画ユニットは、第１データにおける当該記録（マーキング）の有無を確認し、他の計画ユニットによって選択されていない、運転ユニットの組み合わせを選択する。これによって、他の計画ユニットが同一の運転ユニットの組み合わせを選択することを避けることができる。
【０１５６】
各計画ユニットが運転ユニットの異なる組み合わせを使って、運転計画の候補を生成することにより、計画ユニット間で処理対象の探索空間の重複を解消し、低コストで好ましい特性の運転計画が探索しやすくなる。
【０１５７】
次に、計画ユニットは、運転ユニットの組み合わせに含まれる各運転ユニットの最小定格出力と最大定格出力を取得する（ステップＳ２０２）。そして、各計画期間で要求されている合計出力の値と各運転ユニットの最小定格出力と最大定格出力の値を参照し、上述の式（３）および式（４）の関係が成立するか否かを確認する（ステップＳ２０３）。式（３）および式（４）の関係が満たされていない場合（ステップＳ２０３のＮＯ）、ステップＳ２０１に戻り、他の運転ユニットの組み合わせを選択する。
【０１５８】
式（３）および式（４）の関係が満たされている場合（ステップＳ２０３のＹＥＳ）、選択した運転ユニットの組み合わせに含まれるすべての運転ユニットが全計画期間で継続して稼働するものとして、計画出力値を決定する処理を実行する（ステップＳ２０４）。計画出力値を決定する処理の詳細は、図９の説明で述べた通りである。ステップＳ２０４で生成される計画を第１計画とよぶものとする。第１計画は起動停止パターンの生成処理をスキップして生成される運転計画の一例である。生成された第１計画に係る運転計画情報は、運転計画データベース２２（共有された記憶領域）に保存される。
【０１５９】
図１５、図１６の処理では、運転ユニットの起動操作と停止操作を含む運転計画も生成される。以降のステップは、運転ユニットの起動操作と停止操作を含む運転計画の生成処理に相当する。
【０１６０】
第１計画の生成に使われたのと、同一の運転ユニットの組み合わせについて、各運転ユニットが停止可能な計画期間を探索する（ステップＳ２０５）。そして、一部の計画期間で停止可能な運転ユニットがある場合には、作成中の運転計画の候補において、当該運転ユニットを停止させる設定にする（ステップＳ２０６）。すなわち、ステップＳ２０５、Ｓ２０６では、運転ユニットの起動停止パターンが決定される。ステップＳ２０５、ステップＳ２０６で実行される処理の詳細は、図７Ｂの説明で述べた通りである。
【０１６１】
以降では、図１６を参照しながら、処理を説明する。
【０１６２】
次に、運転ユニットの起動停止パターンについて、計画出力値を決定する（ステップＳ２０７）。計画出力値を決定する処理の詳細は、図９の説明で述べた通りである。そして、生成中の運転計画の候補が制約条件を満たしているか否かを確認する（ステップＳ２０８）。生成中の運転計画の候補が制約条件を満たしている場合（ステップＳ２０８のＹＥＳ）、当該運転計画の候補を正式な運転計画として適用する（ステップＳ２０９）。
【０１６３】
生成中の運転計画の候補が制約条件を満たしていない場合（ステップＳ２０８のＮＯ）、運転計画の候補を調整した回数がしきい値以上となっているか否かを確認する（ステップＳ２１０）。運転計画の候補を調整した回数がしきい値以上である場合（ステップＳ２１０のＹＥＳ）、第１計画を正式な運転計画として適用する（ステップＳ２１２）。運転計画の候補を調整した回数がしきい値以上ではない場合（ステップＳ２１０のＮＯ）、制約条件が満たされていない計画期間について、稼働対象とする運転ユニットの選択を変更する（ステップＳ２１１）。すなわち、ステップＳ２１１では運転ユニットの起動停止パターンの修正が行われる。そして、修正後の起動停止パターンについて、計画出力値を決定する（ステップＳ２０７）。
【０１６４】
このように、制約条件の満たされている運転計画の候補が用意できるか、運転計画の候補を調整した回数が一定値以上となるまで、起動停止パターンの修正処理と、計画出力値を決定する処理が繰り返される。所定の回数内に制約条件を満たす運転計画の候補が用意できたら、当該運転計画の候補を正式な運転計画として適用する。所定の回数内に制約条件を満たす運転計画の候補が用意できない場合には、すべての計画期間で同じ運転ユニットの組み合わせが稼働する第１計画を正式な運転計画として適用する。
【０１６５】
なお、図１５、図１６の処理は一例にしか過ぎない。例えば、第１計画と、起動停止パターンを含む運転計画に要するコストを比較し、コストが低い方の計画を正式な運転計画として適用してもよい。また、運転計画システムは第１計画と、起動停止パターンを含む運転計画の双方を生成せず、第１計画のみを生成してもよい。
【０１６６】
図１７は、第５の実施形態に係る運転計画生成処理で生成されるデータの例を示している。図１７には、図５〜図７Ｂの例と同じＣＯＭＢＩＮＡＴＩＯＮ：５１０（ＵＮＩＴ＿ＩＤ＝Ｆ、Ｇ、Ｉ、Ｈ、Ｃ、Ｄ、Ｅ、Ｂ）に係る運転ユニットの組み合わせを使って、第１計画が生成された例が示されている。
【０１６７】
図１７のテーブル３５は、ＣＯＭＢＩＮＡＴＩＯＮ：５１０に係る運転ユニットの組み合わせを示している。テーブル４６を参照すると、計画期間ｊ＝１〜２４でＵＮＩＴ＿ＩＤ＝Ｆ、Ｇ、Ｉ、Ｈ、Ｃ、Ｄ、Ｅ、Ｂのすべての運転ユニットが稼働する設定となっていることがわかる。そして、テーブル５１はテーブル４６の設定を使って、各計画期間における運転ユニットの出力設定値を決めた、第１計画の一例である。
【０１６８】
（第６の実施形態）
第６の実施形態では、複数の計画ユニットが遺伝的アルゴリズムを使って運転計画を生成する方法の例について説明する。上述のように、処理を実行する計画ユニットの台数を増やすほど、短時間でコストが低い運転計画を生成できる確率が高まる。第６の実施形態でも、各計画ユニットが運転ユニットの異なる組み合わせを使って、運転計画の候補を生成することため、計画ユニット間で処理内容に重複が発生するのを避けることができる。
【０１６９】
図１８は、第６の実施形態に係る運転計画生成処理の例を示したフローチャートである。以下では、図１８を参照しながら、処理を説明する。
【０１７０】
なお、以下では運転ユニットの組み合わせを生成する権限のある計画ユニットをリーダーの計画ユニットとよぶものとする。
【０１７１】
最初に、リーダーの計画ユニットはすべての計画期間において要求されている合計出力の最大値Ｐｌｏａｄ，ｍａｘと、すべての計画期間において要求されている合計出力の最小値Ｐｌｏａｄ，ｍｉｎを取得する（ステップＳ３０１）。そして、リーダーの計画ユニットは最大定格出力の和がＰｌｏａｄ，ｍａｘ以上となる運転ユニットの組み合わせを複数個生成し、運転計画データベース２２（共有された記憶領域）に保存する（ステップＳ３０２）。リーダーの計画ユニットは、例えばユニットデータベース２１に格納された計画ユニットの優先度に基づいて決定される。その他の方法によってリーダーとなる計画ユニットを決めてもよい。
【０１７２】
ステップＳ３０３〜Ｓ３０６の処理は、複数の計画ユニットによって実行されるものとする。ここで、複数の計画ユニットにはリーダーの計画ユニットが含まれていてもよいし、リーダーの計画ユニットが含まれていなくてもよい。次に、各計画ユニットは生成された運転ユニットの組み合わせのうち、上述の式（４）の条件を満たす運転ユニットの組み合わせを選択する（ステップＳ３０３）。各計画ユニットは、運転計画データベース２２の選択した運転ユニットの組み合わせに係るデータに、選択した旨を示した情報を記録（マーキング）してもよい。これによって、他の計画ユニットは既に他の計画ユニットによって選択された運転ユニットの組み合わせを選択することを避けることができる。
【０１７３】
そして、各計画ユニットは抽出した運転ユニットの組み合わせを使って運転ユニットの起動停止パターンを生成する。さらに起動停止パターンにおける出力設定値を決定する（ステップＳ３０４）。各計画ユニットがステップＳ３０３、Ｓ３０４で生成した運転ユニットの組み合わせ、起動停止パターン、出力設定値のデータは、運転計画の候補に相当する。
【０１７４】
次に、各計画ユニットは運転計画の候補が制約条件を満たしているか確認し、制約条件が満たされていない場合には、運転計画の候補を修正する（ステップＳ３０５）。運転計画の候補の修正処理では、起動停止パターンの変更を行ってもよいし、出力設定値の変更を行ってもよいし、これらの処理を組み合わせて実行してもよい。そして、それぞれの運転計画の候補におけるコストと、コストに基づくスコアの計算を行う（ステップＳ３０６）。
【０１７５】
スコアは、運転計画の候補を評価する数値であり、運転計画の候補が好ましい特性（例えば、経済性、環境性、出力の安定性など）を備えるものであるほど、高い値に設定することができる。コストの逆数に係数を乗じた値をスコアとしてもよいし、適応度関数（Ｆｉｔｎｅｓｓ  ｆｕｎｃｔｉｏｎ）の値をスコアとしてもよく、スコアの計算方法については特に問わない。汚染物質の生成量、温暖化ガスの排出量など、環境負荷を含めたスコアの計算を行ってもよい。
【０１７６】
そして、各計画ユニットは制約条件を満たす運転ユニットの組み合わせ、起動停止パターン、出力設定値対応するスコア（運転計画情報）を運転計画データベース２２（共有された記憶領域）に保存する（ステップＳ３０７）。次に、リーダーの計画ユニットは運転計画データベース２２を参照し、しきい値以上のスコアの運転計画の候補の有無を確認する（ステップＳ３０８）。
【０１７７】
スコアがしきい値以上の運転計画の候補がある場合（ステップＳ３０８のＹＥＳ）、リーダーの計画ユニットは保存されている運転計画情報のスコアに基づき、正式に適用する運転計画を選択する（ステップＳ３１１）。ステップＳ３１１では、例えばスコアが最大の運転計画の候補を正式な運転計画とする。
【０１７８】
スコアがしきい値以上の運転計画の候補がない場合（ステップＳ３０８のＮＯ）、リーダーの計画ユニットは運転計画情報のスコアに基づき、運転ユニットの組み合わせを複数個選択する（ステップＳ３０９）。ステップＳ３０９では、スコアの値が上位となった運転計画の候補における運転ユニットの組み合わせを抽出する。例えば、スコアの値が上位５０個の運転計画の候補から運転ユニットの組み合わせを抽出してもよいし、スコアの値が上位１０％の運転計画の候補から運転ユニットの組み合わせを抽出してもよい。その他の基準値を使って、運転ユニットの組み合わせを抽出してもよい。
【０１７９】
そして、リーダーの計画ユニットは遺伝的アルゴリズムを用いて、前ステップで選択した運転ユニットの組み合わせから新しい運転ユニットの組み合わせを複数個生成する（ステップＳ３１０）。リーダーの計画ユニットは、遺伝的アルゴリズムによって新たに生成した運転ユニットの組み合わせを運転計画データベース２２（共有された記憶領域）に保存する。ステップＳ３１０の後、ステップＳ３０３以降の処理が再び実行される。
【０１８０】
図２０、図２１は図１８の処理を概略的に示している。図２０では、リーダーの計画ユニットによって生成された運転ユニットの組み合わせが６組示されている（テーブル６２）。上述の式（３）および式（４）の条件への適合性をチェックした結果、４組の運転ユニットの組み合わせが選択されている（テーブル６３）。
【０１８１】
図２１の上段に示されているように、遺伝的アルゴリズムの操作には、選択、交叉、突然変異がある。運転ユニットの異なる組み合わせを生成する際に、これらの操作のいずれかを用いてもよいし、複数の種類の操作を組み合わせて適用してもよい。遺伝的アルゴリズムを適用した結果、５組の新しい運転ユニットの組み合わせが生成されている（テーブル６４）。
【０１８２】
そして、テーブル６４に示された運転ユニットの組み合わせに対し、上述の式（３）および式（４）の条件への適合性をチェックしたところ、テーブル６５に示された３組の運転ユニットの組み合わせが条件に適合していると判定され、選択されている。
【０１８３】
（第７の実施形態）
第１の実施形態に係る運転計画システムでは、各種のデータベース（例えば、要求データベース２０、ユニットデータベース２１、運転計画データベース２２）が管理サーバの記憶部に配置されていた。ただし、第１の実施形態におけるデータベースの配置は一例にしか過ぎず、データベースはその他の構成要素（装置）が提供する記憶領域に配置されていてもよい。第７の実施形態に係る運転計画システムでは、データベースが計画ユニット（運転計画装置）の記憶部に配置されている。
【０１８４】
図２２は、第７の実施形態に係る運転計画装置の構成例を示している。図２２の例では、計画ユニット１ａ（計画ユニット＃１）の記憶部１６に要求データベース２０と、ユニットデータベース２１と、運転計画データベース２２が配置されている。計画ユニットの記憶部は、第１の実施形態に係る管理サーバの記憶部のように、複数の計画ユニットからアクセス可能に設定された記憶領域を有するものであってもよいし、複数の計画ユニットからアクセス可能に設定された記憶領域を有しないものであってもよい。複数の計画ユニットからアクセス可能に設定された記憶領域には、運転計画データベース２２を配置することができる。
【０１８５】
計画ユニットの記憶部の少なくとも一部の記憶領域を複数の計画ユニットからアクセス可能に設定せず、各計画ユニットの記憶部に要求データベース２０、ユニットデータベース２１、運転計画データベース２２などのデータベースを配置してもよい。また、要求データベース２０と、ユニットデータベース２１と、運転計画データベース２２は一部の計画ユニットに配置されていてもよいし、すべての計画ユニットに配置されていてもよい。
【０１８６】
複数の計画ユニットに要求データベース２０、ユニットデータベース２１、運転計画データベース２２が配置された場合、複数のデータベースへの更新指令を同時に送信することによって、データを共有することができる。例えば、ある計画ユニットが運転ユニットの組み合わせを生成したり、運転計画の候補を生成したりする場合、当該計画ユニットは複数の計画ユニットに対して、運転計画情報の更新を求める指令をブロードキャスト（送信）する。当該指令を受信したそれぞれの計画ユニットは、ローカルの記憶部に配置された運転計画データベース２２の運転計画情報を更新する。
【０１８７】
計画ユニットまたは運転ユニットの構成変更や状態変化が検出された場合や、要求される合計出力が変化した場合にも、いずれかの計画ユニットまたは管理サーバがデータベースの更新を求める指令を複数の計画ユニットにブロードキャストする。このように、データベースへの更新を求める指令をブロードキャスト（送信）し、略同時刻に各計画ユニットに配置されたデータベースを更新することによって、運転計画の生成に必要なデータが複数の計画ユニット間で共有される。
【０１８８】
要求データベース２０、ユニットデータベース２１、運転計画データベース２２が複数の計画ユニットに配置されている場合、いずれかの計画ユニットに保存されているデータベースをマスターのデータベースに設定してもよい。この場合、要求される合計出力の値が変更された場合、マスターの要求データベース２０を更新後、その他の計画ユニットの要求データベース２０を更新する。計画ユニットまたは運転ユニットの構成変更や状態変化が検出された場合、マスターのユニットデータベース２１を更新後、その他の計画ユニットのユニットデータベース２１を更新する。
【０１８９】
いずれかの計画ユニットの記憶部が故障やファイルのエラーが発生し、データベースを復元する必要がある場合、マスターのデータベースのデータに基づき、他の計画ユニットのデータベースを復元する。また、必要に応じてトランザクションログを使って、データベースの復元を行ってもよい。
【０１９０】
図２２の構成例のように、それぞれの計画ユニットに運転計画の生成に必要なデータを保持させることで、それぞれの計画ユニットが処理の各ステップで管理サーバをアクセスする必要がなくなる。これにより、管理サーバにかかる負荷を一層軽減することができる。また、管理サーバがダウンした場合や、管理サーバへの通信経路にあるネットワークの一部が不通となった場合にも、運転計画の生成処理を継続することができる。
【０１９１】
運転計画システムのデータベースの配置は図２、図２２の例とは異なっていてもよい。例えば、外部ストレージ、クラウド上のストレージサービスなどに要求データベース２０、ユニットデータベース２１、運転計画データベース２２の一部またはすべてを配置してもよい。各計画ユニット間で運転計画データベース２２のデータが共有されるのであれば、各種データベースの配置や運転計画システムの実装形態については特に問わない。
【０１９２】
すなわち、各計画ユニットは通信部１５を介して生成した運転計画（運転計画の候補）に係る運転計画情報を送信する。送信された運転計画情報は、少なくとも複数の計画ユニットからアクセス可能に設定された記憶領域（共有された記憶領域）または各計画ユニットの記憶部が提供する記憶領域のいずれかに保存される。いずれの場合においても、各計画ユニットが生成した運転計画に係る運転計画情報は他の計画ユニットがアクセス可能な記憶領域に保存されている。複数の計画ユニットは他の計画ユニットが生成した運転計画の情報（運転計画情報）を取得し、新しい運転計画を生成することができる。
【０１９３】
（第８の実施形態）
第８の実施形態では、運転計画システムの各構成要素のハードウェア構成について説明する。上述の各実施形態における計画ユニット、管理サーバ、運転ユニットの一部はコンピュータ１００によって構成される。コンピュータ１００には、サーバ、クライアント端末、組み込み機器のマイコン、タブレット、スマートフォン、フィーチャーフォン、パソコンなどの各種の情報処理装置が含まれる。コンピュータ１００は、仮想計算機（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）やコンテナなどによって実現されていてもよい。
【０１９４】
図２３は、コンピュータ１００の一例を示す図である。図２３のコンピュータ１００は、プロセッサ１０１と、入力装置１０２と、表示装置１０３と、通信装置１０４と、記憶装置１０５とを備える。プロセッサ１０１、入力装置１０２、表示装置１０３、通信装置１０４、記憶装置１０５は、バス１０６によって相互に接続されている。
【０１９５】
プロセッサ１０１は、コンピュータ１００の制御装置と演算装置を含む電子回路である。プロセッサ１０１として、例えば、汎用目的プロセッサ、中央処理装置（ＣＰＵ）、マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、コントローラ、マイクロコントローラ、状態マシン、特定用途向け集積回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラム可能論理回路（ＰＬＤ）またはこれらの組合せを用いることができる。
【０１９６】
プロセッサ１０１は、バス１０６を介して接続された各装置（例えば、入力装置１０２、通信装置１０４、記憶装置１０５）から入力されたデータやプログラムに基づいて演算処理を行い、演算結果や制御信号を、バス１０６を介して接続された各装置（例えば、表示装置１０３、通信装置１０４、記憶装置１０５）に出力する。具体的には、プロセッサ１０１は、コンピュータ１００のＯＳ（オペレーティングシステム）や、運転計画プログラムなどを実行し、コンピュータ１００に含まれるそれぞれの装置を制御する。
【０１９７】
運転計画プログラムとは、コンピュータ１００に、運転計画装置の各構成要素に係る処理を実行させるプログラムである。運転計画プログラムは、一時的でない有形のコンピュータ読み取り可能な記憶媒体に記憶される。上記の記憶媒体は、例えば、光ディスク、光磁気ディスク、磁気ディスク、磁気テープ、フラッシュメモリ、半導体メモリであるが、これに限られない。プロセッサ１０１が運転計画プログラムを実行することによって、コンピュータ１００は計画ユニットまたは運転ユニットまたは管理サーバとして機能することができる。
【０１９８】
入力装置１０２は、コンピュータ１００に情報を入力するための装置である。入力装置１０２は、例えば、キーボード、マウス、タッチパネルなどであるが、これに限られない。ユーザは、入力装置１０２を用いることにより、利用者は運転計画生成処理の種類を選択する操作、運転ユニットの組み合わせを生成する方法を選択する操作、要求される合計出力の値を変更する操作、運転計画生成処理の開始指令、運転計画修正処理の開始指令、各種データベースの内容を参照する操作、各種データベースの内容を変更する操作などを入力することができる。
【０１９９】
表示装置１０３は、画像や映像を表示するための装置である。表示装置１０３は、例えば、ＬＣＤ（液晶ディスプレイ）、ＣＲＴ（ブラウン管）、有機ＥＬ（有機エレクトロルミネッセンス）ディスプレイ、プロジェクタ、ＬＥＤディスプレイなどであるが、これに限られない。表示装置１０３には、現在適用されている運転計画に関する情報、生成中の運転計画の候補に関する情報、運転計画情報の詳細、各計画ユニットの構成や状態、各運転ユニットの構成や状態などが表示される。
【０２００】
通信装置１０４は、コンピュータ１００が外部装置と無線または有線で通信するために使用する装置である。通信装置１０４は、例えば、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）、通信モジュール、モデム、ハブ、ルータなどであるが、これに限られない。コンピュータ１００は、通信装置１０４を介して、他の計画ユニット、管理サーバ、運転ユニットとデータの通信をすることができる。また、コンピュータ１００がデータセンターやマシン室に設置されたサーバなどである場合、コンピュータ１００は通信装置１０４を介して、リモートの端末からの操作指令を受け付けたり、画面表示の内容をリモートの端末に表示させたりしてもよい。
【０２０１】
記憶装置１０５は、コンピュータ１００のＯＳや、運転計画プログラム、運転計画プログラムの実行に必要なデータ、運転計画プログラムの実行により生成されたデータなどを記憶する記憶媒体である。記憶装置１０５には、主記憶装置と外部記憶装置が含まれる。主記憶装置は、例えば、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭであるが、これに限られない。また、外部記憶装置は、例えば、ハードディスク、光ディスク、フラッシュメモリ、磁気テープなどであるが、これに限られない。上述の要求データベース２０、ユニットデータベース２１と、運転計画データベース２２は、記憶装置１０５上に構築されてもよいし、外部のサーバやストレージ上に構築されてもよい。
【０２０２】
なお、コンピュータ１００は、プロセッサ１０１、入力装置１０２、表示装置１０３、通信装置１０４、記憶装置１０５を、それぞれ１つずつまたは複数備えてもよい。また、コンピュータ１００にプリンタやスキャナなどの周辺機器が接続されていてもよい。
【０２０３】
また、計画ユニット、運転ユニット、管理サーバは、単一のコンピュータ１００により構成されてもよいし、複数のコンピュータ１００が相互に接続された情報システムによって構成されていてもよい。
【０２０４】
さらに、運転計画プログラムは、コンピュータ１００の記憶装置１０５に予め記憶されていてもよいし、コンピュータ１００の外部の記憶媒体に記憶されていてもよいし、インターネット上にアップロードされていてもよい。いずれの場合にも、運転計画プログラムをコンピュータ１００にインストールして実行することにより、計画ユニット、運転ユニット、管理サーバの機能を実現することができる。
【０２０５】
なお、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素を適宜組み合わせることによって種々の発明を形成できる。また例えば、各実施形態に示される全構成要素からいくつかの構成要素を削除した構成も考えられる。さらに、異なる実施形態に記載した構成要素を適宜組み合わせてもよい。
【符号の説明】
【０２０６】
１ａ、１ｂ、１ｃ、１ｄ  計画ユニット
２ａ、２ｂ、２ｃ、２ｄ  運転ユニット
３  管理サーバ
４  ネットワーク
１１、２３  処理部
１２  計画部
１３  制御部
１４  検証部
１５、１８  通信部
１６、１９  記憶部
１７  運転制御部
２０  要求データベース
２１  ユニットデータベース
２２  運転計画データベース
２４  要求変更部
２５  ユニット情報収集部
３０、３２、３４、３５、４１、４２、４３、４４、４５、４６、５０、５１、６０、６１、６１、６２、６３、６４、６５  テーブル
３１、３１ａ、３１ｂ  行
１００  コンピュータ
１０１  プロセッサ
１０２  入力装置
１０３  表示装置
１０４  通信装置
１０５  記憶装置
１０６  バス
【図１】
2019211989.tif 000007
【図２】
2019211989.tif 000008
【図３】
2019211989.tif 000009
【図４】
2019211989.tif 000010
【図５】
2019211989.tif 000011
【図６】
2019211989.tif 000012
【図７Ａ】
2019211989.tif 000013
【図７Ｂ】
2019211989.tif 000014
【図８】
2019211989.tif 000015
【図９】
2019211989.tif 000016
【図１０】
2019211989.tif 000017
【図１１】
2019211989.tif 000018
【図１２】
2019211989.tif 000019
【図１３】
2019211989.tif 000020
【図１４】
2019211989.tif 000021
【図１５】
2019211989.tif 000022
【図１６】
2019211989.tif 000023
【図１７】
2019211989.tif 000024
【図１８】
2019211989.tif 000025
【図１９】
2019211989.tif 000026
【図２０】
2019211989.tif 000027
【図２１】
2019211989.tif 000028
【図２２】
2019211989.tif 000029
【図２３】
2019211989.tif 000030