(57)【要約】  計算機（４０２）は、行動群から行動を選択し、選択された行動に対応する状態を状態群から選択する選択部（６０１）と、選択した状態の評価を示す評価値を取得する取得部（６０２）と、選択された行動ごとに、取得した評価値の中から評価が最も低い最低評価値を特定する特定部（６０３）と、ある行動に対応して選択された全状態の評価値の中の最低評価値をミニマックス候補とし、各行動に対応する最低評価値のうち最も評価の高い評価値をミニマックスとして決定する決定部（６０４）と、他の行動に対応して選択される各状態の評価値とミニマックス候補とを評価値の取得の度に比較し、評価値がミニマックス候補よりも評価の低いものである場合には、当該行動に対応する状態の選択を打ち切り、行動群に含まれる未選択の行動の中から行動を選択させる制御部（６０５）と、ミニマックスに対応する行動を出力する出力部（６０６）と、を有する。
2013042213.tif 000002
【特許請求の範囲】
【請求項１】
複数の行動を含む行動群と、前記行動群に含まれる各行動に対応した複数の状態を含む状態群とを記憶する記憶装置と、
前記行動群から行動を選択し、選択された行動に対応する状態を前記状態群から選択する選択部と、
前記選択部が選択した状態の評価を示す評価値を取得する取得部と、
選択された行動ごとに、前記取得部が取得した評価値の中から、評価が最も低い最低評価値を特定する特定部と、
ある行動に対応して選択された全状態の評価値の中の最低評価値をミニマックス候補として決定し、各行動に対応する最低評価値のうち最も評価の高い評価値をミニマックスとして決定する決定部と、
前記ミニマックス候補の決定後に他の行動に対応して選択される各状態の評価値と前記ミニマックス候補とを評価値の取得の度に比較し、前記評価値が前記ミニマックス候補よりも評価の低いものである場合には、前記選択部を制御して当該行動に対応する状態の選択を打ち切り、前記行動群に含まれる未選択の行動の中から行動を選択させる制御部と、
前記決定部が決定したミニマックスに対応する行動を出力する出力部と、
を備えることを特徴とする計算機。
【請求項２】
行動群の行動ごとに状態群の各状態を指定可能な探索空間と任意の値をとる仮想ミニマックスとを記憶する記憶装置と、
前記記憶装置に記憶されている探索空間内の行動群から行動を順次選択し、選択された行動に対する状態群の各状態を順次選択する選択部と、
前記選択された行動に対して選択された状態の評価値を順次取得して、前記探索空間に記憶する取得部と、
前記選択された行動ごとに前記取得部が前記状態群の評価値群を取得した場合、前記選択された行動ごとに前記評価値群の中から最大評価値を特定する特定部と、
前記選択された行動および前記選択された状態の評価値が前記仮想ミニマックス以下である場合、前記選択された行動に対し未選択の状態を前記選択部に選択させ、前記選択された行動および前記選択された状態の評価値が前記仮想ミニマックスよりも大きい場合、前記選択部を制御して選択中の行動に対し未選択の状態の選択を打ち切って、未選択の行動を前記選択部に選択させる制御部と、
前記選択の打ち切りが発生しなかった行動について前記特定された最大評価値群のうち最小評価値をミニマックス候補に決定する第１の決定部と、
選択すべき行動がない場合、いずれかの行動について前記選択の打ち切りが発生したか否かを判断する判断部と、
前記選択の打ち切りが発生しなかった行動があると判断された場合、前記選択の打ち切りが発生しなかった行動について前記決定されたミニマックス候補を、ミニマックスに決定する第２の決定部と、
前記ミニマックスが決定された行動を出力する出力部と、
を有することを特徴とする計算機。
【請求項３】
前記計算機はさらに、
各行動について前記選択の打ち切りが発生したと判断された場合、前記選択の打ち切りが発生したときの前記行動群の評価値群の中の最小評価値を前記仮想ミニマックスの下限を示す仮想ミニマックス下限に設定する設定部と、
前記各行動について前記選択の打ち切りが発生したと判断された場合、前記仮想ミニマックスに所定の増加量を追加する追加部と、
前記設定された仮想ミニマックス下限が前記所定の増加量追加後の仮想ミニマックスよりも大きいか否かを判定する判定部と、
前記判定部が前記仮想ミニマックス下限が前記所定の増加量追加後の仮想ミニマックスよりも大きいと判定した場合、前記仮想ミニマックスを、前記所定の増加量追加後の仮想ミニマックスから前記仮想ミニマックス下限に更新する更新部を有することを特徴とする請求項２記載の計算機。
【請求項４】
前記計算機において、
前記選択部は、
前記更新部が前記所定の増加量追加後の仮想ミニマックスから前記仮想ミニマックス下限に更新した場合、前記行動群から行動を順次々選択するとともに、前記選択された行動に対する状態群の各状態を順次々選択し、
前記取得部は、
前記選択部が再選択した行動に対して順次々選択した状態の評価値のうち未取得の評価値を順次取得し、
前記特定部は、
前記選択部が順次々選択した行動ごとに、前記選択部が前記状態群の評価値群を取得した場合、順次々選択された行動ごとに前記評価値群の中から最大評価値を特定し、
前記制御部は、
前記選択された行動および前記選択された状態の評価値が前記仮想ミニマックス以下であると前記判断部が判断した場合、前記選択された行動に対し未選択の状態を前記選択部に選択させ、前記選択された行動および前記選択された状態の評価値が前記更新された仮想ミニマックスよりも大きいと前記判断部が判断した場合、前記選択された行動に対し未選択の状態の選択を打ち切って、前記選択部に未選択の行動を選択させることを特徴とする請求項３記載の計算機。
【請求項５】
前記更新手段は、
前記仮想ミニマックス下限が前記増加量追加後の仮想ミニマックス以下である場合、前記仮想ミニマックスを前記増加量追加後の仮想ミニマックスに更新することを特徴とする請求項３記載の計算機。
【請求項６】
行動ごとに最大評価値候補および最大評価値の記憶領域を指定する第１の記憶装置を有するマスタ計算機と、行動群の行動ごとに状態群の各状態を指定可能な探索空間を記憶する第２の記憶装置を有するスレーブ計算機と、がネットワークを介して通信可能な計算機システムであって、
スレーブ計算機は、
前記第２の記憶装置に記憶されている探索空間内の行動および状態のうち、いずれかの行動および状態を指定する開始位置および任意の値をとる仮想ミニマックスを前記マスタ計算機から受信する受信部と、
前記受信部によって受信された開始位置で指定される行動から順次選択し、選択された行動に対し前記開始位置で指定される状態から順次選択する選択部と、
前記選択部によって選択された行動に対して選択された状態の評価値を順次取得する取得部と、
選択された行動ごとに前記取得部によって前記状態群の評価値群が取得された場合、選択された行動ごとに前記評価値群の中から最大評価値を特定する第１の特定部と、
選択中の行動および状態の評価値が前記仮想ミニマックス以下である場合、前記選択部を制御して選択中の行動に対し未選択の状態を選択し、選択中の行動および状態の評価値が前記仮想ミニマックスよりも大きい場合、前記選択部を制御して選択中の行動に対し未選択の状態の選択を打ち切って、未選択の行動を選択する制御部と、
選択中の行動に対し選択の打ち切りが発生した場合、打ち切りが発生したときの評価値を選択中の行動での最大評価値候補として特定する第２の特定部と、
選択中の行動に対して特定された最大評価値または最大評価値候補を前記マスタ計算機に送信し、いずれかの行動の最大評価値が得られた場合、または、各行動の最大評価値候補が得られた場合、評価完了通知を前記マスタ計算機に送信する送信部と、を備え、
前記マスタ計算機は、
行動群の行動ごとに状態群の各状態を指定可能な探索空間のうちいずれかの行動および状態で指定された開始位置と、任意の値をとる仮想ミニマックスとを、スレーブ計算機ごとに異なるように設定し、前記複数のスレーブ計算機での仮想ミニマックス群の下限となる仮想ミニマックス下限と、前記仮想ミニマックス群の上限となる仮想ミニマックス上限と、を設定する設定部と、
前記設定部によって前記スレーブ計算機ごとに設定された開始位置および仮想ミニマックスを、前記各スレーブ計算機に配信する配信部と、
前記送信部によって前記各スレーブ計算機から送信されてきた最大評価値または最大評価値候補を、前記第１の記憶装置内の該当する行動の記憶領域に書き込む格納部と、
前記複数のスレーブ計算機のうちいずれかのスレーブ計算機からの評価完了通知を検出する検出部と、
前記検出部によって評価完了通知が検出された場合、前記仮想ミニマックス下限を、前記記憶装置に記憶されている最大評価値候補群のうち最小の最大評価値候補に更新し、前記仮想ミニマックス上限を、前記第１の記憶装置に記憶されている最大評価値群の最小の最大評価値に更新する更新部と、
前記更新部による更新後の仮想ミニマックス下限が前記更新部による更新後の仮想ミニマックス上限よりも大きいか否かを判定する判定部と、
前記判定部によって大きいと判定されたときの前記更新後の仮想ミニマックス上限をミニマックスに決定する決定部と、
前記決定部によってミニマックスが決定された行動を出力する出力部と、
を備えることを特徴とする計算機システム。
【請求項７】
複数の行動を含む行動群と、前記行動群に含まれる各行動に対応した複数の状態を含む状態群とを記憶する記憶装置を有する計算機に、
前記行動群から行動を選択し、選択された行動に対応する状態を前記状態群から選択し、
選択した状態の評価を示す評価値を取得し、
選択された行動ごとに、取得した評価値の中から、評価が最も低い最低評価値を特定し、
ある行動に対応して選択された全状態の評価値の中の最低評価値をミニマックス候補として決定し、各行動に対応する最低評価値のうち最も評価の高い評価値をミニマックスとして決定し、
前記ミニマックス候補の決定後に他の行動に対応して選択される各状態の評価値と前記ミニマックス候補とを評価値の取得の度に比較し、前記評価値が前記ミニマックス候補よりも評価の低いものである場合には、当該行動に対応する状態の選択を打ち切り、前記行動群に含まれる未選択の行動の中から行動を選択させ、
決定したミニマックスに対応する行動を出力する、
処理を実行させることを特徴とする探索プログラム。
【請求項８】
複数のスレーブ計算機とネットワークを介して通信可能であり、行動ごとに最大評価値候補および最大評価値の記憶領域を指定する記憶装置を有する計算機に、
行動群の行動ごとに状態群の各状態を指定可能な探索空間のうちいずれかの行動および状態で指定された開始位置と、任意の値をとる仮想ミニマックスとを、スレーブ計算機ごとに異なるように設定し、前記複数のスレーブ計算機での仮想ミニマックス群の下限となる仮想ミニマックス下限と、前記仮想ミニマックス群の上限となる仮想ミニマックス上限と、を設定し、
前記スレーブ計算機ごとに設定された開始位置および仮想ミニマックスを、前記各スレーブ計算機に配信し、
前記各スレーブ計算機から送信されてきた最大評価値または最大評価値候補を、前記記憶装置内の該当する行動の記憶領域に書き込み、
前記複数のスレーブ計算機のうちいずれかのスレーブ計算機からの評価完了通知を検出し、
評価完了通知が検出された場合、前記仮想ミニマックス下限を、前記記憶装置に記憶されている最大評価値候補群のうち最小の最大評価値候補に更新し、前記仮想ミニマックス上限を、前記記憶装置に記憶されている最大評価値群の最小の最大評価値に更新し、
更新後の仮想ミニマックス下限が更新後の仮想ミニマックス上限よりも大きいか否かを判定し、
大きいと判定されたときの前記更新後の仮想ミニマックス上限をミニマックスに決定し、
ミニマックスが決定された行動を出力する、
処理を実行させることを特徴とする探索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報を探索する計算機、計算機システム、および探索プログラムに関する。
【背景技術】
【０００２】
ミニマックス(ｍｉｎｉ−ＭＡＸ)法によるミニマックス計算は、特に、不確実な将来の状態に対して取るべき行動として、起こり得る状態における最大の損失が最も少ない行動、あるいは、起こり得る状態において最低限保証される効用が最大になる行動を決定するというミニマックス損失基準による行動決定問題に利用されている。また、ミニマックス計算は、ミニマックス損失基準による行動決定問題だけでなく、様々な産業上の目的のために利用されている。例えば、家電や車両などのファジー制御に関し、ファジー論理式（ｉｆ  Ａ  ａｎｄ  Ｂ  ｔｈｅｎ  Ｘの形式の集合）の左辺の各項のグレード（事実との適合度）が与えられたとき、その最小値をもって右辺のグレード値とし、その右辺の中で最大となるものを求める技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第２６３３１６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ミニマックス損失基準による行動決定問題とは、複数の行動Ｂ１〜Ｂｍの行動Ｂｊごとに、複数の状態Ａ１〜Ａｎにおける損失を表す評価値群の最大評価値Ｖ１ｍａｘ，…Ｖｊｍａｘ，…Ｖｍｍａｘを求め、最大評価値Ｖ１ｍａｘ，…Ｖｊｍａｘ，…Ｖｍｍａｘが最小となる行動を選択する。行動決定問題では、ｍ×ｎ個の評価値を求める必要がある。【０００５】
しかしながら、上述した従来技術を適用しても、行動決定問題では、ｍ×ｎ個の評価値を求める必要があり、行動決定問題の解を発見まで時間がかかるという問題がある。１つの側面では、本発明は、ミニマックスを効率的に発見することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、複数の行動を含む行動群と、前記行動群に含まれる各行動に対応した複数の状態を含む状態群とを記憶する記憶装置内の前記行動群から行動を選択し、選択された行動に対応する状態を前記状態群から選択し、選択した状態の評価を示す評価値を取得し、選択された行動ごとに、取得した評価値の中から、評価が最も低い最低評価値を特定し、ある行動に対応して選択された全状態の評価値の中の最低評価値をミニマックス候補として決定し、各行動に対応する最低評価値のうち最も評価の高い評価値をミニマックスとして決定し、前記ミニマックス候補の決定後に他の行動に対応して選択される各状態の評価値と前記ミニマックス候補とを評価値の取得の度に比較し、前記評価値が前記ミニマックス候補よりも評価の低いものである場合には、当該行動に対応する状態の選択を打ち切り、前記行動群に含まれる未選択の行動の中から行動を選択させ、決定したミニマックスに対応する行動を出力する計算機、計算機システム、および探索プログラムが提案される。
【発明の効果】
【０００７】
本発明の一側面によれば、ミニマックスを効率的に発見することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、ミニマックス損失基準による行動決定問題の解法の一例を示す説明図である。
【図２】図２は、探索空間の一例を示す説明図である。
【図３】図３は、実施の形態１にかかるミニマックス損失基準による行動決定問題の解法を示す説明図である。
【図４】図４は、実施の形態１にかかる計算機システムのシステム構成例を示す説明図である。
【図５】図５は、実施の形態１にかかるコンピュータ（計算機４０１、４０２、端末４０３）のハードウェア構成例を示すブロック図である。
【図６】図６は、実施の形態１にかかる計算機４０２の機能的構成例を示すブロック図である。
【図７】図７は、実施の形態１にかかる計算機４０２によるミニマックス探索処理手順例を示すフローチャートである。
【図８】図８は、実施の形態１におけるミニマックス探索例を示す説明図である。
【図９】図９は、仮想ミニマックス否定条件を示す説明図である。
【図１０】図１０は、実施の形態２にかかるミニマックス損失基準による行動決定問題の解法を示す説明図である。
【図１１】図１１は、実施の形態２にかかる計算機４０２の機能的構成例を示すブロック図である。
【図１２】図１２は、評価済み状態テーブルの記憶内容例を示す説明図である。
【図１３】図１３は、実施の形態２にかかる計算機４０２によるミニマックス探索処理手順例を示すフローチャートである。
【図１４】図１４は、図１３に示した探索処理（ステップＳ１３０２）の詳細な処理手順例を示すフローチャートである。
【図１５】図１５は、実施の形態３にかかる計算機システムのシステム構成例を示す説明図である。
【図１６】図１６は、実施の形態３にかかるミニマックス並列探索例（その１）を示す説明図である。
【図１７】図１７は、実施の形態３にかかるミニマックス並列探索例（その２）を示す説明図である。
【図１８】図１８は、実施の形態３にかかるミニマックス並列探索例（その３）を示す説明図である。
【図１９】図１９は、実施の形態３にかかるミニマックス並列探索例（その４）を示す説明図である。
【図２０】図２０は、実施の形態３にかかるミニマックス並列探索例（その５）を示す説明図である。
【図２１】図２１は、実施の形態３にかかるミニマックス並列探索例（その６）を示す説明図である。
【図２２】図２２は、実施の形態３にかかるミニマックス並列探索例（その７）を示す説明図である。
【図２３】図２３は、実施の形態３にかかるミニマックス並列探索例（その８）を示す説明図である。
【図２４】図２４は、実施の形態３にかかるミニマックス並列探索例（その９）を示す説明図である。
【図２５】図２５は、実施の形態３にかかるスレーブ計算機１５０ｐの機能的構成例を示すブロック図である。
【図２６】図２６は、実施の形態３にかかるマスタ計算機１５００の機能的構成例を示すブロック図である。
【図２７】図２７は、マスタ計算機１５００によるミニマックス探索処理手順例（前半）を示すフローチャートである。
【図２８−１】図２８−１は、マスタ計算機１５００によるミニマックス探索処理手順例（後半）を示すフローチャートである。
【図２８−２】図２８−２は、マスタ計算機１５００によるミニマックス探索処理手順例（後半）の他の例を示すフローチャートである。
【図２９】図２９は、図２７に示した仮想ミニマックス設定処理（ステップＳ２７０５）の詳細な処理手順例を示すフローチャートである。
【図３０−１】図３０−１は、スレーブ計算機１５０ｐによるミニマックス探索処理手順例を示すフローチャート（その１）である。
【図３０−２】図３０−２は、スレーブ計算機１５０ｐによるミニマックス探索処理手順例を示すフローチャート（その２）である。
【図３１】図３１は、運転計画作成装置の機能的構成例を示すブロック図である。
【図３２】図３２は、需要変動シナリオの一例を示す説明図である。
【図３３】図３３は、日照時間変動確率テーブルの一例を示す説明図である。
【図３４】図３４は、ピークカット効果を示す説明図である。
【図３５】図３５は、図３１に示した最適運転評価テーブル３１１６の一例を示す説明図である。
【図３６】図３６は、図３１に示した当初運転計画テーブル３１１７の一例を示す説明図である。
【図３７】図３７は、図３１に示した修正運転評価テーブル３１１８の一例を示す説明図である。
【図３８】図３８は、図３１に示した対応力評価テーブル３１１９の一例を示す説明図である。
【図３９】図３９は、天候変動モデルの説明図である。
【図４０】図４０は、日射量変動シナリオの一例を示す説明図である。
【図４１】図４１は、需給シナリオの一例を示す説明図である。
【図４２】図４２は、制御パラメータの探索範囲について説明するための図である。
【図４３】図４３は、リグレット値の分布の一例を示す図（その１）である。
【図４４】図４４は、リグレット値の分布の一例を示す図（その２）である。
【図４５】図４５は、リグレット値の分布の一例を示す図（その３）である。
【図４６】図４６は、運転計画作成装置の処理手順を示すフローチャートである。
【図４７】図４７は、需給シナリオの生成処理（ステップＳ４６０２）の処理手順を示すフローチャートである。
【図４８】図４８は、当初運転計画の選択処理の処理手順を示すフローチャートである。
【図４９】図４９は、環境負荷低減効果を用いた場合の最適運転評価テーブルの一例を示す説明図である。
【図５０】図５０は、環境負荷低減効果を用いた場合の修正運転評価テーブルの一例を示す説明図である。
【図５１】図５１は、対応力評価テーブル３１１９の一例を示す説明図である。
【図５２】図５２は、コスト削減効果を用いた場合の最適運転評価テーブル３１１６の一例を示す説明図である。
【図５３】図５３は、コスト削減効果を用いた場合の修正運転評価テーブル３１１８の一例を示す説明図である。
【図５４】図５４は、対応力評価テーブル３１１９の一例を示す図である。
【図５５】図５５は、通信基地局の運転台数調整の例を示す説明図である。
【図５６】図５６は、運転計画の一例を示す説明図である。
【図５７】図５７は、１日の通信需要の推移の典型的なデータ例を示す説明図である。
【図５８】図５８は、通信需要と、その対応に要するエネルギー量（単位時間あたりの消費電力量）の関係を、それぞれの運転モード毎に示す説明図である。
【図５９】図５９は、本実施例の運転計画作成で考慮するもう１つのエネルギー量である、運転モード切り替えに要するコストの例を示す説明図である。
【図６０】図６０は、探索範囲の一例を示す説明図である。
【図６１】図６１は、通信需要シナリオ生成のための変動確率テーブルの例を示す説明図である。
【図６２】図６２は、作成した最適な運転計画の例を示す説明図である。
【図６３】図６３は、評価結果を示す説明図である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、この発明にかかる計算機、計算機システム、探索プログラム、探索方法の実施の形態を詳細に説明する。まず、不確実性の下での合理的な意思決定に関する理論について説明する。
【００１０】
不確実性の下での合理的な意思決定に関する理論としては統計的決定理論がある。統計的決定理論では、決定問題が直面する未来の状態の不確実性のレベルを次の４段階に区分し、それぞれの不確実性の下で取るべき行動案を決定し提案する。
【００１１】
（１）確定未来の場合：将来システムの状態（又は環境）が確定的に予測できる場合
（２）リスクがある場合：将来起こりうる全ての状態とその確率分布が予測できる場合
（３）（狭義の）不確実性がある場合：将来起こりうる状態の全体は認識できるが、それらの状態分布が予測できない場合
（４）あいまいな場合：将来起こりうる状態も不明な場合
【００１２】
上記（１）の場合、予想される未来の状況に対する各行動代替案の効用を評価し、最大効用を示す行動案を選択すればよいので、単なる効用関数の評定問題に帰せられる。
【００１３】
上記（４）の場合、整理された知識が乏しい。ここで不確実性があるケースのうち、上記（２）の場合は確率分布を利用して期待値基準、安定性基準、最尤値基準、希求水準基準等で行動を決定することが可能である。
【００１４】
上記（３）の場合、将来起こりうる状態は認識することができ、各状態の行動の効用の評価値も推定することは可能であるが、未来の状態分布の推定ができない。現実の問題ではこのような状況は少なくない。このときの決定基準として、ラプラスの基準、ワルドの基準（マックスミン利得基準）、マックス・マックス利得基準、ハービッツの基準、サベッジの基準（ミニマックス損失基準）等が提案されている。
【００１５】
この狭義の不確実性がある場合の意思決定問題において、状況の数と行動の数が膨大で、効用計算にもコストがかかる状況が存在しうる。たとえば、社会基盤システムの運転計画の候補の中から、最適な運転計画を決めたいが、起こり得る状態の確率分布も効用関数も明確ではなく、シミュレーションによって各状態に対する各運転計画の効用を算出し意思決定をしなければならないような状況である。
【００１６】
たとえば、契約電力低減によるコスト低減のために、太陽光発電を導入した事業所の年間を通じた最大のピーク電力を低減できるような蓄電池によるピークカット運転の制御パラメータを決定する問題がこれにあたる。蓄電池によるピーク電力低減は、予め設定したピークカット目標値に基づく放電制御（電力需要が目標値を超えないように放電すること）で実施することが一般的であるが、太陽光発電と蓄電池の併用によりピーク電力を低減する場合には、太陽光発電出力・電力需要がともに気象条件の影響をうけて変動するので、適切な目標値を設定することは容易でない。
【００１７】
たとえば、ある気象条件の典型的な１日の需給パタンに基づいて目標値を設定しても、別の気象条件の日の目標値としては不適切である可能性が高いので、年間を通じて起こり得るさまざまな需給パタンを考慮して、最適な放電目標値を設定しなくてはならない。すなわち、年間を通じた最大のピーク電力を効果的に低減できる目標値を決定することは、様々な需給状況という「状態」に対して、放電目標値という「行動」を適切に決定するという問題を解くことに帰着する。
【００１８】
状態の確率分布や効用関数がわかっている場合には、種々の理論（線形計画法，非線形計画法，動的計画法等）を利用することが可能である。状態の確率分布や効用関数がわからない場合は、各行動に対してすべての状態の効用を計算したうえで、最大値や最小値等を計算し、いずれかの基準によって意思決定しなければならない。本実施の形態では、状態の確率分布や効用関数がわからない場合に採用されるミニマックス損失基準による行動決定問題の解を、効率的に発見する。
【００１９】
なお、本実施の形態において、行動Ｂｊに対する状態Ａｉの評価値をＶｉｊとする。たとえば、行動Ｂ１に対する状態Ａ３の評価値はＶ３１であらわされる。また、行動ごとに各状態の位置を指定するテーブルを、「探索空間」と称す。
【００２０】
＜ミニマックス損失基準による行動決定問題の解法＞
図１は、ミニマックス損失基準による行動決定問題の解法の一例を示す説明図である。図１では、行動として、蓄電池運転計画を例にあげ、状態として、需給状況を例に挙げて説明する。
【００２１】
図１では、行動数ｍ＝４、状態数ｎ＝４の探索空間におけるミニマックス損失基準による行動決定問題を示している。図１の（Ａ）では、４×４＝１６個の評価値を求め、行動ごとに評価値群の最大評価値を求める。これにより、各行動Ｂ１〜Ｂ４の最大評価値Ｖ１ｍａｘ（＝４）、Ｖ２ｍａｘ（＝１０）、Ｖ３ｍａｘ（＝９）、Ｖ４ｍａｘ（＝６）の中から最小値であるＶ１ｍａｘ（＝４）がミニマックスとして選ばれる。これにより、最適な蓄電池運転計画は、最大ピーク電力の最小値であるピーク電力４００［ｋＷ］である行動Ｂ１であることがわかる。
【００２２】
これに対し、図１の（Ｂ）では、選択した行動に対して順に状態を評価していく処理において、選択中の行動の起こりうる状態に対する評価の最大評価値がミニマックスとはなりえないと判明した段階で、選択中の行動に対する後続の状態の評価について、評価の打ち切りをおこなう。本明細書では、このような評価の打ち切りを「枝刈り」と称す。
【００２３】
すなわち、ミニマックスを効率的に発見するための基本的な考え方としては，各行動の評価過程で得られる情報を利用して、最適になる見込みのない行動の評価を打ち切ることにより、ミニマックス探索の効率を向上させる。以下に枝刈りを行う際の条件（枝刈り規則）を示す。
【００２４】
枝刈り規則：ある１つの行動Ｂｊについて各状態Ａ１〜Ａｎにおける効用を順次計算する処理において、それ以前に実行した別の行動Ｂ１〜Ｂ（ｊ−１）に対する評価計算で見つかった最大評価値の最小値をミニマックス候補とする。このミニマックス候補に対し、評価中の状態Ａｉの効用（評価値）がミニマックス候補を上回るならば、その行動Ｂｊは最適になりえないと判定し、行動Ｂｊに対する評価を打ち切る。
【００２５】
枝刈り規則は、既に見つかっている最悪な状態よりもさらに悪い状態を含む行動は最適な行動になりえないので、それ以上評価を行わないことにより、ミニマックスとはならない最大評価値を含む行動の計算を省略することを意味する。枝刈り規則を用いることによって、最適にはなりえない行動の評価を省略しながら、ミニマックスの探索を行うことが可能となる。
【００２６】
たとえば、図１の（Ｂ）では、行動Ｂ１に対して状態Ａ１〜Ａ４の計算が完了し行動Ｂ１の最大評価値Ｖ１ｍａｘ＝４であることが判明しているものとする。この時点でミニマックス候補は４となる。そして、行動Ｂ２に対する状態Ａ１の評価値Ｖ１２は１０である。この場合、行動Ｂ２の最大評価値Ｖ２ｍａｘはこの時点で１０以上であることが確定するため、ミニマックス候補である４よりも大きい値になる。
【００２７】
つまり、行動Ｂ２に対し、状態Ａ１以外の状態Ａ２〜Ａ４は評価しても行動Ｂ２の最大評価値Ｖ２ｍａｘがミニマックスになる見込みがなくなってしまったので，状態Ａ１以外の状態Ａ２〜Ａ４の評価はする必要がなくなる。このように、計算過程で明らかになるミニマックス候補に基づき、最大評価値Ｖ２ｍａｘがミニマックスとなりえない行動を判定することにより、ミニマックスを計算するために必要のない計算を省略する。図１の（Ｂ）では、行動Ｂ３、Ｂ４についても同様に省略される。
【００２８】
すなわち、図１の（Ｂ）では、７個の評価値を求めるだけで、ミニマックスを求めることができるため、図１の（Ａ）と比較して、９個（＝１６−７）の評価が枝刈りされる。したがって、ミニマックス探索の計算負荷の低減を図ることができ、効率的にミニマックスを探索することができる。
【００２９】
（実施の形態１）
まず、本発明の実施の形態１にかかる情報を探索する計算機、計算機システム、探索プログラム、探索方法について説明する。実施の形態１は、図１の（Ｂ）に示したように、計算機により、ミニマックス損失基準による行動決定問題の解を求める例である。
【００３０】
＜探索空間の一例＞
図２は、探索空間の一例を示す説明図である。探索空間Ｔは、評価値Ｖｉｊ、最大評価値候補ＶＣｊｍａｘ、最大評価値Ｖｊｍａｘ、ミニマックスを記憶するデータテーブルであり、記憶装置に記憶されている。行動Ｂｊに対する状態Ａｉで指定される位置Ｃｉｊには、評価値Ｖｉｊが記憶される。初期状態では、位置Ｃｉｊには評価値Ｖｉｊが記憶されていない。同様に、最大評価値候補ＶＣｊｍａｘ、最大評価値Ｖｊｍａｘ、ミニマックスも記憶されていない。
【００３１】
図３は、実施の形態１にかかるミニマックス損失基準による行動決定問題の解法を示す説明図である。図３は、図１の（Ｂ）に示したミニマックス損失基準による行動決定問題の解法の詳細を示している。なお、図２および図３の探索空間Ｔ内のミニマックスのレコードで、「△」の場合はミニマックス候補を意味し、「○」の場合はミニマックスを意味するものとする。
【００３２】
まず、（Ａ）は、行動Ｂ１に対する状態Ａ１〜Ａ４の各々の評価値が求められた状態を示している。この場合、行動Ｂ１での最大評価値Ｖ１ｍａｘは、状態Ａ１のときの評価値Ｖ１１＝４となる。この時点では、全ての行動Ｂ１〜Ｂ４について最大評価値または最大評価値候補が得られていないため、ミニマックスは確定しておらず、行動Ｂ１での最大評価値Ｖ１ｍａｘ＝４がミニマックス候補となる。
【００３３】
つぎに、（Ｂ）において、行動Ｂ２が選択されて、状態Ａ１が評価されたものとする。このときの評価値Ｖ１２を「１０」とする。このとき、ミニマックス候補の最大評価値Ｖ１ｍａｘ＝４と評価値Ｖ１２＝１０とを比較する。この場合、行動Ｂ２の最大評価値Ｖ２ｍａｘはこの時点で１０以上であることが確定するため、ミニマックス候補である４よりも大きい値になる。
【００３４】
つまり、（Ｃ）において、行動Ｂ２に対し、状態Ａ１以外の状態Ａ２〜Ａ４は評価しても行動Ｂ２の最大評価値Ｖ２ｍａｘがミニマックスになる見込みがなくなってしまったので、状態Ａ１以外の状態Ａ２〜Ａ４の評価はする必要がなくなる。これにより、枝刈りが実行されて、状態Ａ２〜Ａ４の評価は省略される。
【００３５】
つぎに、（Ｄ）において、行動Ｂ３が選択されて、状態Ａ１が評価されたものとする。このときの評価値Ｖ１３を「７」とする。このとき、ミニマックス候補の最大評価値Ｖ１ｍａｘ＝４と評価値Ｖ１３＝７とを比較する。この場合、行動Ｂ３の最大評価値Ｖ３ｍａｘはこの時点で７以上であることが確定するため、ミニマックス候補である４よりも大きい値になる。
【００３６】
つまり、（Ｅ）において、行動Ｂ３に対し、状態Ａ１以外の状態Ａ２〜Ａ４は評価しても行動Ｂ３の最大評価値Ｖ３ｍａｘがミニマックスになる見込みがなくなってしまったので、状態Ａ１以外の状態Ａ２〜Ａ４の評価はする必要がなくなる。これにより、枝刈りを実行されて、状態Ａ２〜Ａ４の評価は省略される。
【００３７】
（Ｆ）において、行動Ｂ４についても同様に評価する。すなわち、行動Ｂ４に対し、状態Ａ１以外の状態Ａ２〜Ａ４は評価しても行動Ｂ４の最大評価値Ｖ４ｍａｘがミニマックスになる見込みがなくなってしまったので、状態Ａ１以外の状態Ａ２〜Ａ４の評価はする必要がなくなる。これにより、枝刈りを実行されて、状態Ａ２〜Ａ４の評価は省略される。したがって、図１の（Ｂ）で説明したように、９個（＝１６−７）の評価が枝刈りされるため、ミニマックス探索の計算負荷の低減を図ることができる。
【００３８】
このように、有望ではない（ミニマックスよりも高い最大評価値を含む）行動に対する評価する必要のない状態についての計算を省略することにより、効率的なミニマックス探索を実現することができる。すなわち、発見したいミニマックスを含む行動の最大評価値の評価は省略することなくすべての状態に対する評価を行う。その一方で、計算過程で得られるミニマックス候補を利用して計算する必要のない行動の評価を省略することにより、図１の（Ａ）に示したような枝刈りをしない評価と同様に確実にミニマックスを発見しつつ、効率的な評価を実現することができる。
【００３９】
なお、ここでは、状態Ａ１〜Ａ４に対する最大評価値が最小となる行動を決定する計算を例に説明したが、状態Ａ１〜Ａ４に対する最小評価値が最大となる行動を決定する場合にも、（大小関係を逆にした）同様の手順で探索処理を効率化できる。また、状態Ａ１〜Ａ４に対するｎ番目に大きい（小さい）評価値が最小（最大）になる行動を決定する場合にも、行動に対する最大評価値を求める処理を、ｎ番目に大きい（小さい）評価値を求める形に置き換えれば、同様の手順で探索処理を効率化できる。
【００４０】
＜システム構成例＞
図４は、実施の形態１にかかる計算機システムのシステム構成例を示す説明図である。計算機システムは、計算機４０１と計算機４０２と端末４０３とが、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク４１０により相互に通信可能に接続されている。
【００４１】
計算機４０１は、ミニマックス損失基準による行動決定問題において、ある行動Ｂｊに対するある状態Ａｉの評価値を計算するコンピュータである。たとえば、蓄電池運転計画についての行動決定問題を解決したい場合は、蓄電池運転計画を「行動」とし、需給状況を「状態」として、シミュレーションを実行する。この場合、各行動の最大評価値となる最大電力群のうち最小電力がミニマックスとなり、ミニマックスでの蓄電池運転計画が最適な行動となる。これにより、いずれの需給状況Ａｉが実現しても最大電力の値がなるべく小さくなるような運転計画を効率的に探索することができ、最大電力を高い確率で抑えられるようになる。
【００４２】
また、計算機４０１は、企業の戦略を「行動」とし、景気を「状態」としてシミュレーションを実行することとしてもよい。この場合、各行動の最大評価値となる最大損失群のうち最小損失がミニマックスとなり、ミニマックスでの企業戦略が最適な行動となる。これにより、いずれの景気Ａｉが実現しても最大損失の値がなるべく小さくなるような企業戦略を効率的に探索することができ、最大損失を高い確率で抑えられるようになる。このように、何を「行動」とし、何を「状態」とするかは、計算機４０１でのシミュレーションに依存することとなる。なお、計算機４０１のシミュレーションの詳細については後述する。
【００４３】
計算機４０２は、図２および図３に示したように、ミニマックスの探索を実行するコンピュータである。計算機４０２において、ある行動Ｂｊに対するある状態Ａｉを評価する場合、２つの方法がある。１つは、計算機４０１に対し、ある行動Ｂｊに対するある状態Ａｉの評価値の計算を、ネットワーク４１０を介して依頼し、計算機４０１から評価値をネットワーク４１０を介して取得する方法である。もう１つは、計算機４０１でのシミュレーションの機能を計算機４０２に実装しておき、計算機４０２において、ある行動Ｂｊに対するある状態Ａｉの評価値の計算を実行する方法である。後者の場合は、計算機４０１は不要である。
【００４４】
端末４０３は、計算機４０２に対しミニマックスの探索リクエストをネットワーク４１０を介して送り、ミニマックスとなる行動を計算機４０２からネットワーク４１０を介して受け取るコンピュータである。なお、計算機４０２は、端末４０３からの探索リクエストだけではなく、計算機４０２を直接操作することで、探索リクエストを受け付けることもできる。この場合、計算機４０２は、表示装置などにミニマックスとなる行動を出力することとなる。
【００４５】
＜コンピュータのハードウェア構成例＞
図５は、実施の形態１にかかるコンピュータ（計算機４０１、４０２、端末４０３）のハードウェア構成例を示すブロック図である。コンピュータは、記憶装置５０１と、入力装置５０２と、出力装置５０３と、プロセッサ５０４（中央処理装置）と、がバス５０５を介して接続されて構成される。
【００４６】
記憶装置５０１は、データやプログラム（ブートプログラムやオペレーティングシステム、アプリケーション）を記憶する。また、記憶装置５０１は、プロセッサ５０４のワークエリアとして使用される。また、計算機４０２内の記憶装置５０１については、図２に示した探索空間Ｔが記憶されている。記憶装置５０１としては、たとえば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリ、磁気ディスクドライブ、光ディスクドライブなどが採用される。
【００４７】
入力装置５０２は、外部からデータや命令を入力する。入力されたデータや命令は記憶装置５０１に格納され、プロセッサ５０４に渡される。入力装置５０２としては、たとえば、キーボード、操作キー、マウス、タッチパネル、スキャナ、カメラ、マイク、通信インターフェースなどが挙げられる。
【００４８】
出力装置５０３は、プロセッサ５０４から渡されたデータを出力する。出力装置５０３としては、たとえば、ディスプレイ、プリンタ、スピーカ、通信インターフェースなどが採用される。
【００４９】
プロセッサ５０４は、コンピュータの全体の制御を司る。プロセッサ５０４は、記憶装置５０１内のプログラムを読み込んで命令を実行する。その際、プロセッサ５０４は、記憶装置５０１内のデータを読み込んだり、記憶装置５０１にデータを書き込んだりする。また、プロセッサ５０４は、命令に従って演算結果を出力装置５０３に渡す。
【００５０】
＜計算機４０２の機能的構成例＞
図６は、実施の形態１にかかる計算機４０２の機能的構成例を示すブロック図である。計算機４０２は、選択部６０１と、取得部６０２と、特定部６０３と、決定部６０４と、制御部６０５と、出力部６０６と、を備えている。選択部６０１〜出力部６０６は、具体的には、たとえば、図５に示した記憶装置５０１に記憶されたプログラムをプロセッサ５０４に実行させることによりその機能を実現する。
【００５１】
選択部６０１は、行動群から行動を選択し、選択された行動に対応する状態を前記状態群から選択する。具体的には、選択部６０１は、記憶装置５０１に記憶されている探索空間Ｔ内の行動群から行動を順次選択し、選択された行動に対する状態群の各状態を順次選択する。たとえば、選択部６０１は、行動Ｂ１〜Ｂｎのうち未選択の行動Ｂｊを順次選択する。そして、選択部６０１は、選択中の行動Ｂｊに対し、状態Ａｉを順次選択する。
【００５２】
すなわち、選択部６０１は、選択中の行動Ｂｊについて枝刈り規則が適用されない限り、未選択の状態Ａｉを順次選択することになる。枝刈り規則が適用された場合、選択中の行動Ｂｊに対し未選択の状態Ａｉが残存していたとしても、制御部６０５からの指示により、つぎの未選択の行動を選択することになる。
【００５３】
また、枝刈り規則が適用されずに行動Ｂｊについて選択すべき状態Ａｉがなくなった場合は、選択部６０１は、残余の未選択の行動を選択することになる。未選択の行動Ｂｊがなくなった場合は、選択部６０１は、選択処理を終了する。
【００５４】
取得部６０２は、選択部６０１が選択した状態の評価を示す評価値を取得する。具体的には、取得部６０２は、選択部６０１によって選択された行動に対して選択された状態の評価値を順次取得して、探索空間Ｔに記憶する。たとえば、計算機４０１が評価値の計算を実行する場合は、取得部６０２は、選択された行動Ｂｊに対して選択された状態Ａｉの評価のリクエストを計算機４０１に送信する。そして、取得部６０２は、計算機４０１から送信されてくる評価値Ｖｉｊを受信して、探索空間Ｔ内の位置Ｃｉｊに、評価値Ｖｉｊを記憶する。
【００５５】
一方、計算機４０２が評価値の計算を実行する場合には、取得部６０２は、選択された行動Ｂｊに対して選択された状態Ａｉの評価値Ｖｉｊを算出して、探索空間Ｔ内の位置Ｃｉｊに、評価値Ｖｉｊを記憶する。
【００５６】
特定部６０３は、取得部６０２が取得した評価値の中から、評価が最も低い最低評価値を特定する。具体的には、特定部６０３は、選択された行動ごとに取得部６０２によって状態群の評価値群が取得された場合、選択された行動ごとに評価値群の中から最大評価値を特定する。たとえば、図３の（Ａ）に示したように、行動Ｂ１について、状態Ａ１〜Ａ４の評価値Ｖ１１〜Ｖ１４が取得された場合、評価値Ｖ１１〜Ｖ１４の中から最大評価値Ｖ１ｍａｘを特定する。この例では、Ｖ１ｍａｘ＝Ｖ１１＝４となる。他の行動Ｂ２〜Ｂ４についても枝刈りが実行されない限り、行動Ｂ１と同様に評価値群が取得されるため、それぞれ最大評価値Ｖ２ｍａｘ〜Ｖ４ｍａｘが特定されることになる。
【００５７】
一方、枝刈りが実行された場合は、特定部６０３は、枝刈り実行時の評価値を最大評価値候補ＶＣｊｍａｘとして特定する。たとえば、図３の（Ｂ）、（Ｃ）に示したように、行動Ｂ２については、評価値Ｖ２１で枝刈りが実行されたため、評価値Ｖ２１が行動Ｂ２での最大評価値候補ＶＣ２ｍａｘとして特定される。
【００５８】
決定部６０４は、ある行動に対応して選択された全状態の評価値の中の最低評価値をミニマックス候補として決定し、各行動に対応する最低評価値のうち最も評価の高い評価値をミニマックスとして決定する。具体的には、決定部６０４は、選択済みの行動群での特定部６０３によって特定された最大評価値群のうち最小評価値をミニマックス候補に決定する。たとえば、決定部６０４は、選択中の行動が行動Ｂｊであり、行動Ｂ１〜Ｂ（ｊ−１）のうち枝刈りが実行されずに得られた最大評価値の中から最小値を、暫定的にミニマックス候補に決定する。より具体的には、たとえば、選択中の行動が行動Ｂ３で、行動Ｂ１，Ｂ２については枝刈りされずに最大評価値Ｖ１ｍａｘ，Ｖ２ｍａｘが得られたとした場合、最大評価値Ｖ１ｍａｘ，Ｖ２ｍａｘのうち最小値をミニマックス候補に決定する。
【００５９】
また、決定部６０４は、選択すべき行動がない場合にはミニマックス候補をミニマックスに決定する。具体的には、行動Ｂ１〜Ｂｎでの評価が完了した時点でのミニマックス候補を、ミニマックスに決定する。たとえば、図３の例では、行動Ｂ１〜Ｂ４での評価が完了した時点でのミニマックス候補はＶ１ｍａｘ＝４であるため、Ｖ１ｍａｘ＝４をミニマックスに決定する。
【００６０】
制御部６０５は、ミニマックス候補の決定後に他の行動に対応して選択される各状態の評価値とミニマックス候補とを評価値の取得の度に比較し、評価値がミニマックス候補よりも評価の低いものである場合には、選択部６０１を制御して当該行動に対応する状態の選択を打ち切り、行動群に含まれる未選択の行動の中から行動を選択させる。具体的には、制御部６０５は、選択中の行動に対して選択された状態の評価値がミニマックス候補よりも大きい場合、選択部６０１を制御して、選択中の行動に対して未選択の状態の選択を打ち切って行動群の中から未選択の行動を選択する。すなわち、制御部６０５では、上述した枝刈り規則を適用することで、選択部６０１による選択を制御する。
【００６１】
たとえば、制御部６０５は、選択中の行動Ｂｊに対する状態Ａｉの評価値Ｖｉｊと、現時点でのミニマックス候補とを比較する。評価値Ｖｉｊがミニマックス候補よりも大きい場合は、選択部６０１に未選択の行動を選択させる。たとえば、選択部６０１は、行動Ｂｊのインデックスｊをｊ＝１から、状態Ａ１〜Ａｎの選択がすべて終了したタイミングで１ずつインクリメントすることで行動Ｂｊを選択している場合、制御部６０５は、枝刈り規則が適用されたときにインデックスｊを強制的にインクリメントする。たとえば、図３のように、行動Ｂ２に対する状態Ａ１の評価値Ｖ１２は枝刈り規則が適用されるため、選択部６０１に未選択であるつぎの行動Ｂ３を選択させる。
【００６２】
また、制御部６０５は、枝刈り規則適用時の評価値Ｖｉｊを行動Ｂｊでの最大評価値候補ＶＣｉｊとして、探索空間Ｔに記憶する。したがって、未選択の行動をランダムに選択させる場合、探索空間Ｔにおいて最大評価値または最大評価値候補のいずれも記憶されていない行動を特定し、選択部６０１に通知する。これにより、選択部６０１に未選択の行動を選択させることができる。
【００６３】
出力部６０６は、決定部６０４が決定したミニマックスに対応する行動を出力する。具体的には、たとえば、ミニマックスが決定された行動の名称（たとえば、「蓄電池運転計画１」のような行動を示す文字列）を出力する。なお、行動だけではなく、ミニマックス（の値）や状態（の名称）も出力してもよい。図３の例では、たとえば、｛行動Ｂ１、状態Ａ１、ミニマックス＝４｝が出力結果として出力される。出力部６０６は、このような出力結果を出力装置５０３や記憶装置５０１に出力する。出力装置５０３に出力した場合は、出力装置５０３に応じた出力（画面表示、印刷、他の装置への送信、音声読み上げ）が行われる。記憶装置５０１に出力された場合は、記憶装置５０１に格納されることになる。
【００６４】
＜計算機４０２によるミニマックス探索処理手順例＞
図７は、実施の形態１にかかる計算機４０２によるミニマックス探索処理手順例を示すフローチャートである。図７の例では、行動Ｂｊのインデックスｊおよび状態Ａｉのインデックスｉを１からインクリメントするものとして説明するが、ｎ、ｍからデクリメントさせてもよい。また、インクリメントやデクリメントではなく、未選択の行動Ｂｊ、状態Ａｉをランダムに選択することとしてもよい。ランダムに選択する場合は、たとえば、選択した位置Ｃｉｊに選択済みのフラグを設定することで、重複選択を禁止することとしてもよい。
【００６５】
また、ヒューリスティック等によって経験的に最適になる可能性が高い行動が判明している場合は、行動Ｂ１〜Ｂｍに優先度を設定しておき、優先度の高い順に選択することとしてもよい。これにより、最適に近いミニマックス候補が見つかれば、その後の行動の評価を効率的に行うことが可能である。さらに、どの行動に対しても評価が高い（損失が高い）状態が判明している場合には、状態Ａ１〜Ａｎに優先度を設定しておき、優先度の高い順に選択することとしてもよい。これにより、最悪の状態を優先的に評価することによって、ミニマックスになりえない行動を判断できるタイミングを早くできる。
【００６６】
まず、計算機４０２は、ミニマックス候補を∞（無限大）で初期化する（ステップＳ７０１）。つぎに、計算機４０２は、行動Ｂｊのインデックスｊをｊ＝１に設定し（ステップＳ７０２）、選択部６０１により行動Ｂｊを選択する（ステップＳ７０３）。また、計算機４０２は、状態Ａｉのインデックスｉをｉ＝１に設定し（ステップＳ７０４）、選択部６０１により状態Ａｉを選択する（ステップＳ７０５）。これにより、位置Ｃｉｊが特定される。つぎに、計算機４０２は、取得部６０２により、行動Ｂｊに対する状態Ａｉの評価値Ｖｉｊを取得する（ステップＳ７０６）。取得された評価値Ｖｉｊは探索空間Ｔの位置Ｃｉｊに記憶される。
【００６７】
そして、計算機４０２は、制御部６０５により、評価値Ｖｉｊに対し枝刈り規則が適用可能か否かを判断する（ステップＳ７０７）。具体的には、評価値Ｖｉｊがミニマックス候補より大きいか否かを判断する。選択済みの行動がない場合であっても、ミニマックス候補は初期値＝∞に設定されているため、枝刈り規則は適用される。
【００６８】
枝刈り規則が適用可能でない場合（ステップＳ７０７：Ｎｏ）、計算機４０２は、選択部６０１により、状態Ａｉのインデックスｉをインクリメントし（ステップＳ７０８）、ｉ≦ｎであるか否かを判断する（ステップＳ７０９）。ｉ≦ｎである場合（ステップＳ７０９：Ｙｅｓ）、未選択の状態Ａｉが残存するため、ステップＳ７０５に戻り、計算機４０２は、選択部６０１により、状態Ａｉを選択する。
【００６９】
一方、ｉ≦ｎでない場合（ステップＳ７０９：Ｎｏ）、行動Ｂｊについてすべての状態Ａ１〜Ａｎの評価値が得られたため、計算機４０２は、特定部６０３により、行動Ｂｊの評価値群Ｖ１ｊ〜Ｖｎｊの中から最大評価値Ｖｊｍａｘを特定する（ステップＳ７１０）。特定された最大評価値Ｖｊｍａｘは探索空間Ｔに記憶される。
【００７０】
そして、計算機４０２は、ミニマックス候補を更新する（ステップＳ７１１）。すなわち、計算機４０２は、決定部６０４により、これまでに得られた最大評価値群の中で最小評価値値をミニマックス候補に決定する。このあと、計算機４０２は、行動Ｂｊのインデックスｊをインクリメントする（ステップＳ７１２）。
【００７１】
一方、ステップＳ７０７において、枝刈り規則が適用可能である場合（ステップＳ７０７：Ｙｅｓ）、ステップＳ７１２に移行する。すなわち、ステップＳ７０８、Ｓ７０９、Ｓ７０５〜Ｓ７０９のループと、ステップＳ７１０，Ｓ７１１がスキップされる。したがって、無駄な計算を抑制することでミニマックス探索の高速化を図ることができる。
【００７２】
ステップＳ７１２のあと、計算機４０２は、ｊ≦ｍであるか否かを判断する（ステップＳ７１３）。すなわち、未選択の行動Ｂｊがあるか否かを判断する。ｊ≦ｍである場合（ステップＳ７１３：Ｙｅｓ）、ステップＳ７０３に戻り、計算機４０２は、選択部６０１により行動Ｂｊを選択する。一方、ｊ≦ｍでない場合（ステップＳ７１３：Ｎｏ）、計算機４０２は、決定部６０４によりこの時点でのミニマックス候補をミニマックスとして、出力部６０６によりミニマックスを取る行動Ｂｊを出力する（ステップＳ７１４）。これにより、一連の処理を終了する。
【００７３】
このように、実施の形態１によれば、行動Ｂｊの最大評価値がミニマックスになりえないという意味で評価する必要のない行動Ｂｊの評価を省略する。これにより、ミニマックス損失基準に基づく意思決定を迅速に行うことが可能となる。特に、将来起こり得る状態Ａｉの数ｎ、各状態Ａｉの行動の数ｍが膨大な場合、各状態Ａｉの行動Ｂｊの評価値計算に負荷がかかることになる。したがって、実施の形態１のように枝刈りを実行することで、計算機４０１，４０２の計算負荷の低減化を図ることができる。
【００７４】
（実施の形態２）
つぎに、実施の形態２について説明する。実施の形態１では、未選択の行動Ｂｊを何らかの方法で選択していき、選択された状態ごとに枝刈り規則の適用可否を判断することで、ミニマックス探索処理の高速化を図ることができる。この場合、真のミニマックスに近いミニマックス候補が偶然発見されるまで、有効な枝刈り規則を設定できていれば打ち切れたはずの計算を打ち切ることができず、可能であったはずの効率的な探索を十分に実現することができない。
【００７５】
図８は、実施の形態１におけるミニマックス探索例を示す説明図である。図８では、（Ａ）〜（Ｃ）に示したように、行動Ｂ１〜Ｂ３では枝刈り規則が適用されることなく、全ての状態Ａ１〜Ａ４について評価値を取得している。そして、（Ｄ）に示すように、行動Ｂ４に対する状態Ａ１においてようやく枝刈り規則が適用され、状態Ａ２〜Ａ４の枝刈りが実行されている。すなわち、ミニマックス候補＝４が、探索の初期段階で発見できていれば、より有効に枝刈り規則が適用される。
【００７６】
そこで、実施の形態２では、ある値Ｓをミニマックスと仮定する。ミニマックスとして仮定した値Ｓを「仮想ミニマックス」と称す。そして、仮想ミニマックスＳを用いて枝刈り規則を利用して効率的に探索を行い、仮想ミニマックスＳがミニマックスかどうかを判定し、ミニマックスでなければ仮想ミニマックスＳを更新し，最終的にミニマックスが見つかるまで判定を繰り返していく、というのが実施の形態２である。
【００７７】
仮想ミニマックスＳを適切に設定できれば、真のミニマックスに近いミニマックス候補が見つかるまで評価が悪い行動の計算を行うことなく、枝刈り規則による効率的なミニマックス探索が実現できる。仮想ミニマックスＳを適切に設定できなくても、仮想ミニマックスＳが真のミニマックスよりも低く設定されていれば、多くの行動において枝刈り規則による計算の打ち切りが期待できる。したがって、仮想ミニマックスＳがミニマックスではないことを判定するために大きな実行時間は必要としない。さらに、その判定において評価した状態の情報はその後の探索に再利用するため、枝刈りをしない場合と比べて計算時間が増加することはない。
【００７８】
実施の形態２では、仮想ミニマックスＳを真のミニマックスよりも低く設定し、枝刈り規則によって効率的な探索を行い、そこで得られた情報によって仮想ミニマックスＳを真のミニマックスに近づくように仮想ミニマックスＳの更新を行って探索を継続することになる。したがって、まずは、仮想ミニマックスＳがミニマックスかどうか判定することが必要となる。仮想ミニマックスＳがミニマックスではない場合には、ミニマックスとなる最大評価値をとる行動を含むすべての行動において枝刈りが実行されるが、仮想ミニマックスＳ自体はミニマックスというわけではない。そこで、以下に示すミニマックス否定条件を利用する。
【００７９】
ミニマックス否定条件：仮想ミニマックスＳがミニマックスではないならば、すべての行動で最大評価値の最小値候補が見つからない（枝刈りが起こる）。
【００８０】
図９は、仮想ミニマックス否定条件を示す説明図である。図９の例では、行動Ｂ３の最大評価値Ｖ３ｍａｘ＝４がミニマックスである。図９において、仮想ミニマックスＳをＳ＝２とした場合、行動Ｂ１〜Ｂ４の最大評価値Ｖ１ｍａｘ〜Ｖ４ｍａｘは、仮想ミニマックスＳよりも大きい。すなわち、仮想ミニマックスＳ＝２は、ミニマックスではないため（Ｓ≠４）、すべての行動Ｂ１〜Ｂ４において最大評価値ではない。したがって、最大評価値の最小値候補が見つからず、枝刈りによる打ち切りが発生する。
【００８１】
すなわち、すべての行動Ｂ１〜Ｂｍを評価した結果、ミニマックス否定条件を満たす場合には、ミニマックスが見つかっていないことを意味する。したがって、実施の形態２では、この場合に仮想ミニマックスＳをΔＳで更新して、再度同様の処理を行う。仮想ミニマックスＳが真のミニマックスを上回った場合には、最大評価値がミニマックスである行動Ｂｊにおいて枝刈りが起こらないため、ミニマックスを発見することができる。
【００８２】
したがって、実施の形態２におけるミニマックス探索においては、仮想ミニマックスＳが真のミニマックスを上回らない限り、真のミニマックス以下の仮想ミニマックスＳとして行う探索を複数回行う。このため、それぞれの行動Ｂｊで既に行った状態Ａｉの評価を重複して行ってしまっては、むしろ枝刈りを行わないほうが計算量の少ない場合も生じてしまう。そこで、実施の形態２では、評価済み状態テーブルを用意し、評価済み状態テーブルに必要な情報を記録することとする。評価済み状態テーブルの詳細は後述する。
【００８３】
また、実施の形態２では、仮想ミニマックスＳを低く設定すれば，仮想ミニマックスＳがミニマックスではないと判定するのにそれほど多くの時間はかからないが、可能な限り早い段階で仮想ミニマックスＳを真のミニマックスに近い値に設定できた方が理想に近い効率的なミニマックス探索を実現できる。そこで、ミニマックス探索過程で得られるミニマックスの探索下限となる仮想ミニマックス下限Ｓｍｉｎを定義し、仮想ミニマックスＳを可能な限り早い段階で真のミニマックスに近づける。
【００８４】
仮想ミニマックス下限Ｓｍｉｎ：各行動Ｂ１〜Ｂｍに対していくつかの状態の評価を取得し、各行動Ｂ１〜Ｂｍの最大評価値候補がわかっているとする。仮想ミニマックス下限は、各行動の最大評価値候補の最小値となる。以下、図９に示した評価値群について、実施の形態２を適用した場合のミニマックス探索について説明する。
【００８５】
図１０は、実施の形態２にかかるミニマックス損失基準による行動決定問題の解法を示す説明図である。まず、（Ａ）において、仮想ミニマックスＳをＳ＝１とし、増加量ΔＳをΔＳ＝１とする。仮想ミニマックスＳを用いた枝刈り規則の適用により、各行動Ｂ１〜Ｂ４に対する状態Ａ１の評価値Ｖ１１〜Ｖ１４が、行動Ｂ１〜Ｂ４の順に取得される。このとき、評価値Ｖ１１〜Ｖ１４は、仮想ミニマックスＳ（＝１）よりも大きいため、仮想ミニマックスＳは真のミニマックスではなく、仮想ミニマックス否定条件が成立する。したがって、評価値Ｖ１１〜Ｖ１４は、最大評価値候補ＶＣ１１〜ＶＣ１４となる。仮想ミニマックス下限Ｓｍｉｎは、最大評価値候補ＶＣ１１〜ＶＣ１４の中の最小値であるため、Ｓｍｉｎ＝Ｖ３ｍａｘ＝２となる。
【００８６】
つぎに、仮想ミニマックスＳ（＝１）では、ミニマックス否定条件を遵守したため、増加量ΔＳを加算することで、仮想ミニマックスＳをＳ＝２に更新する。そして、更新後の仮想ミニマックスＳ（＝２）と仮想ミニマックス下限Ｓｍｉｎとで、Ｓ＜Ｓｍｉｎが成立するか否かを判断することになる。Ｓ＜Ｓｍｉｎが成立する場合、すなわち、仮想ミニマックス下限Ｓｍｉｎの方が仮想ミニマックスＳよりも大きい場合は，仮想ミニマックス下限Ｓｍｉｎの方がより真のミニマックスに近いので、仮想ミニマックスＳを仮想ミニマックス下限Ｓｍｉｎの値に更新する。（Ａ）では、Ｓ＝Ｓｍｉｎであるため、仮想ミニマックスＳを仮想ミニマックス下限Ｓｍｉｎの値に更新しない。
【００８７】
（Ｂ）では、評価値Ｖ１１〜Ｖ１４について枝刈り規則が適用されるかが判断される。（Ｂ）では、仮想ミニマックスＳがＳ＝２であるため、行動Ｂ１，Ｂ２，Ｂ４については状態Ａ２〜Ａ４の枝刈りが実行される。これに対し、行動Ｂ３に対する状態Ａ１の評価値Ｖ１３はＶ１３＝２であるため、Ｖ１３＝Ｓとなる。したがって、行動Ｂ３については枝刈りが行われない。このあと、行動Ｂ３についてはつぎの未選択の状態Ａ２を選択し、評価値Ｖ２３を取得する。ここで、評価値Ｖ２３はＶ２３＝４とする。
【００８８】
評価値Ｖ２３（＝４）は仮想ミニマックスＳ（＝２）よりも大きいため、行動Ｂ３に対する状態Ａ３，Ａ４は枝刈りされる。このため、仮想ミニマックスＳ（＝２）でも、ミニマックス否定条件を遵守したため、再度増加量ΔＳを加算することで、仮想ミニマックスＳをＳ＝３に更新する。そして、更新後の仮想ミニマックスＳ（＝３）と仮想ミニマックス下限Ｓｍｉｎ（＝４）とで、Ｓ＜Ｓｍｉｎが成立するか否かを判断することになる。
【００８９】
この場合、Ｓ＜Ｓｍｉｎが成立するため、仮想ミニマックス下限Ｓｍｉｎの方がより真のミニマックスに近いこととなり、仮想ミニマックスＳを仮想ミニマックス下限Ｓｍｉｎの値に更新する。（Ｃ）では、仮想ミニマックスＳ＝Ｓｍｉｎ＝４となる。
【００９０】
（Ｃ）においても、（Ｂ）と同様、評価値Ｖ１１〜Ｖ１４について枝刈り規則が適用されるかが判断される。（Ｃ）では、仮想ミニマックスＳがＳ＝４であるため、行動Ｂ１，Ｂ２，Ｂ４については状態Ａ２〜Ａ４の枝刈りが実行される。これに対し、行動Ｂ３に対する状態Ａ１の評価値Ｖ１３はＶ１３＝２であるため、Ｖ１３＜Ｓとなる。したがって、行動Ｂ３については枝刈りが行われない。このあと、行動Ｂ３についてはつぎの未選択の状態Ａ２を選択し、評価値Ｖ２３を取得する。ここで、評価値Ｖ２３はＶ２３＝４とする。評価値Ｖ２３においても、Ｖ２３＝Ｓとなる。したがって、行動Ｂ３については枝刈りが行われない。
【００９１】
このあと、行動Ｂ３に対する状態Ａ３，Ａ４の評価値Ｖ３３，Ｖ４３についても枝刈りが発生しない。したがって、行動Ｂ３はミニマックス否定条件違反の行動となるため、行動Ｂ３の評価値群Ｖ１３〜Ｖ４３の中の最大評価値Ｖ２３＝４がミニマックスとなる。このように、図８の例では、行動Ｂ４に対する状態Ａ２〜Ａ４の３個の評価値を省略できたが、図１０では、行動Ｂ１，Ｂ２，Ｂ４に対する状態Ａ２〜Ａ４の９個の評価値の取得を省略することができる。したがって、実施の形態１よりも、より効率的にミニマックスを探索することができ、計算機４０１，４０２の計算負荷の低減化を図ることができる。
【００９２】
＜計算機４０２の機能的構成例＞
図１１は、実施の形態２にかかる計算機４０２の機能的構成例を示すブロック図である。計算機４０２は、選択部１１０１と、取得部１１０２と、特定部１１０３と、制御部１１０４と、第１の決定部１１０５と、判断部１１０６と、第２の決定部１１０７と、出力部１１０８と、設定部１１０９と、追加部１１１０と、判定部１１１１と、更新部１１１２と、を備えている。選択部１１０１〜更新部１１１２は、具体的には、たとえば、図５に示した記憶装置５０１に記憶されたプログラムをプロセッサ５０４に実行させることによりその機能を実現する。選択部１１０１、取得部１１０２、および特定部１１０３は、実施の形態１の選択部６０１、取得部６０２、および特定部６０３と同一内容であるため説明を省略する。
【００９３】
また、実施の形態２では、仮想ミニマックスＳは、記憶装置５０１に記憶されている。仮想ミニマックスＳは、初期状態では、真のミニマックスに対し十分に低いと想定される値を設定しておく。これにより、ミニマックスを発見できない探索においても枝刈り規則の適用機会が増加し、効率的な探索を期待することができる。仮想ミニマックスＳは真のミニマックスよりも高く設定しても問題ないが、設定した仮想ミニマックスＳが効率的な探索を実現するという観点で適切ではないと、枝刈りを有効に活用することができないことになる。
【００９４】
制御部１１０４は、選択中の行動Ｂｊおよび状態Ａｉの評価値Ｖｉｊが仮想ミニマックスＳ以下である場合、選択部１１０１を制御して選択中の行動に対し未選択の状態を選択する。すなわち、評価値Ｖｉｊが仮想ミニマックスＳ以下である場合は、枝刈り規則を満たさないため、選択部１１０１に、未選択の状態を選択させることになる。
【００９５】
また、制御部１１０４は、選択中の行動Ｂｊおよび状態Ａｉの評価値Ｖｉｊが仮想ミニマックスＳよりも大きいと判断された場合、選択部１１０１を制御して選択中の行動に対し未選択の状態の選択を打ち切って、未選択の行動を選択する。この場合は、枝刈り規則を満たしているため、未選択の行動を選択することになる。
【００９６】
たとえば、選択部１１０１は、行動Ｂｊのインデックスｊをｊ＝１から、状態Ａ１〜Ａｎの選択がすべて終了したタイミングで１ずつインクリメントすることで行動Ｂｊを選択している場合、制御部１１０４は、枝刈り規則が適用されたときにインデックスｊを強制的にインクリメントする。たとえば、図１０のように、行動Ｂ１に対する状態Ａ１の評価値Ｖ１１は枝刈り規則が適用されるため、選択部１１０１に未選択であるつぎの行動Ｂ２を選択させる。
【００９７】
第１の決定部１１０５は、制御部１１０４により選択の打ち切りが発生しなかった行動について特定部１１０３によって特定された最大評価値群のうち最小評価値をミニマックス候補に決定する。たとえば、打ち切りが発生しなかった行動が行動Ｂ１，Ｂ２である場合、行動Ｂ１の評価値Ｖ１１〜Ｖ４１の中の最大評価値Ｖ１ｍａｘと、行動Ｂ２の評価値Ｖ１２〜Ｖ４２の中の最大評価値Ｖ２ｍａｘのうち、最小の最大評価値をミニマックス候補に決定する。第１の決定部１１０５による決定処理は、ミニマックス否定条件に違反するまで実行されることになる。
【００９８】
判断部１１０６は、選択すべき行動がない場合、制御部１１０４によりいずれの行動についても選択の打ち切りが発生したか否かを判断する。具体的には、たとえば、判断部１１０６は、ミニマックス否定条件を遵守しているか違反しているかを判断する。いずれの行動についても選択の打ち切りが発生した場合、ミニマックス否定条件を遵守したことになるため、この時点では真のミニマックスは発見されていない。一方、いずれかの行動について選択の打ち切りが発生しなかった場合、ミニマックス否定条件に違反したことになり、ミニマックスが発見できたことが判明する。
【００９９】
第２の決定部１１０７は、判断部１１０６によって選択の打ち切りが発生しなかった行動があると判断された場合、選択の打ち切りが発生しなかった行動について第１の決定部１１０５によって決定されたミニマックス候補を、ミニマックスに決定する。具体的には、たとえば、ミニマックス否定条件に違反した場合、選択の打ち切りが発生しなかった行動群の最大評価値群の中の最小の最大評価値がミニマックス候補として第１の決定部１１０５により決定済みである。したがって、第２の決定部１１０７は、ミニマックス候補をミニマックスに決定することになる。
【０１００】
出力部１１０８は、第２の決定部１１０７によってミニマックスが決定された行動を出力する。具体的には、たとえば、ミニマックスが決定された行動の名称（たとえば、「蓄電池運転計画１」のような行動を示す文字列）を出力する。なお、行動だけではなく、ミニマックス（の値）や状態（の名称）も出力してもよい。図３の例では、たとえば、｛行動Ｂ１、状態Ａ１、ミニマックス＝４｝が出力結果として出力される。出力部１１０８は、このような出力結果を出力装置５０３や記憶装置５０１に出力する。出力装置５０３に出力した場合は、出力装置５０３に応じた出力（画面表示、印刷、他の装置への送信、音声読み上げ）が行われる。記憶装置５０１に出力された場合は、記憶装置５０１に格納されることになる。
【０１０１】
設定部１１０９は、判断部１１０６によっていずれの行動についても選択の打ち切りが発生したと判断された場合、制御部１１０４により選択の打ち切りが発生したときの行動群の評価値群の中の最小評価値を仮想ミニマックスＳの下限を示す仮想ミニマックス下限Ｓｍｉｎに設定する。すなわち、設定部１１０９は、ミニマックス否定条件を遵守した場合に、仮想ミニマックス下限を設定することになる。
【０１０２】
たとえば、図１０の（Ａ）では、行動Ｂ１〜Ｂ４について選択の打ち切り、すなわち、枝刈りが発生しているため、枝刈り発生時の評価値Ｖ１１（＝６），Ｖ１２（＝１０），Ｖ１３（＝２），Ｖ１４（＝５）の中から最小評価値Ｖ１３（＝２）を仮想ミニマックス下限Ｓｍｉｎに設定する。
【０１０３】
追加部１１１０は、判断部１１０６によっていずれの行動についても選択の打ち切りが発生したと判断された場合、仮想ミニマックスＳに所定の増加量ΔＳを追加する。すなわち、追加部１１１０は、ミニマックス否定条件を遵守した場合に、仮想ミニマックスＳに所定の増加量ΔＳを追加することになる。
【０１０４】
たとえば、図１０の（Ａ）では、行動Ｂ１〜Ｂ４について選択の打ち切り、すなわち、枝刈りが発生しているため、追加部１１１０は、このときの仮想ミニマックスＳ（＝１）に増加量ΔＳ（＝１）を加算して、仮想ミニマックスＳ（＝２）にする。増加量ΔＳは大きすぎない値に設定するものとする。増加量ΔＳを大きい値に設定すると、追加部１１１０により仮想ミニマックスＳが真のミニマックスに対し高すぎる値に設定されてしまい、最終的に効率の悪い計算になってしまう。このため、増加量ΔＳは、任意に設定可能であるが、増加の刻み幅が細かく設定できる程度の値にするのが好ましい。このため、本例では、ΔＳ＝１としている。
【０１０５】
判定部１１１１は、設定部１１０９によって設定された仮想ミニマックス下限Ｓｍｉｎが、追加部１１１０による追加後の仮想ミニマックスＳよりも大きいか否かを判定する。仮想ミニマックス下限Ｓｍｉｎの方が仮想ミニマックスＳよりも大きい場合は、仮想ミニマックス下限Ｓｍｉｎの方がより真のミニマックスに近いことになる。
【０１０６】
更新部１１１２は、仮想ミニマックス下限Ｓｍｉｎが、追加部１１１０による追加後の仮想ミニマックスＳよりも大きいと判定された場合には、仮想ミニマックスＳを仮想ミニマックス下限の値に更新する。これにより、仮想ミニマックスＳをより真のミニマックスに近づけることができる。したがって、効率的な枝刈りをおこなうことができる。
【０１０７】
また、更新部１１１２は、仮想ミニマックス下限Ｓｍｉｎが、追加部１１１０による追加後の仮想ミニマックスＳ以下と判定された場合には、追加後の仮想ミニマックスＳを最新の仮想ミニマックスＳとして扱う。
【０１０８】
いずれにしても更新部１１１２により仮想ミニマックスＳが更新されると、選択部１１０１、取得部１１０２、特定部１１０３、第１の決定部１１０５により、再度評価値の選択、取得（取得済みの評価値は除く）、特定、ミニマックス候補の決定が実行される。また、制御部１１０４についても、最新の仮想ミニマックスＳにより、選択の打ち切りを判断することになる。
【０１０９】
これにより、再度、判断部１１０６により、ミニマックス否定条件について判断されミニマックス否定条件を遵守している場合には、設定部１１０９、追加部１１１０、判定部１１１１、更新部１１１２による処理が再度実行される。このように、ミニマックス否定条件に違反するまで、再帰的に処理が実行され、最終的にミニマックス否定条件に違反した場合に、第２の決定部１１０７が最新のミニマックス候補をミニマックスに決定して、出力部１１０８が出力することになる。
【０１１０】
＜評価済み状態テーブル＞
図１２は、評価済み状態テーブルの記憶内容例を示す説明図である。図１２において、評価済み状態テーブル１２００は、行動ごとに、評価済み状態のインデックスｉと最大評価値候補ＶＣｊｍａｘが記憶される。評価済み状態テーブル１２００には、選択中の行動Ｂｊについて枝刈りが発生したときの状態Ａｉのインデックスｉと枝刈りが発生したときの評価値Ｖｉｊが最大評価値候補ＶＣｊｍａｘとして記憶される。設定部１１０９は、最大評価値候補ＶＣｊｍａｘのうち最小値を仮想ミニマックス下限Ｓｍｉｎに設定することになる。
【０１１１】
図１２において、（Ａ）は図１０の（Ａ）のときの記憶内容である。この場合、最大評価値候補ＶＣｊｍａｘのうち最小値は、行動Ｂ３に対する状態Ａ１の評価値Ｖ１３（すなわち、行動Ｂ３のこの時点での最大評価値候補ＶＣ３ｍａｘ）＝２である。したがって、仮想ミニマックス下限Ｓｍｉｎ＝２に設定される。
【０１１２】
また、図１２において、（Ｂ）は図１０の（Ｂ），（Ｃ）のときの記憶内容である。この場合、最大評価値候補ＶＣｊｍａｘのうち最小値は、行動Ｂ３に対する状態Ａ１の評価値Ｖ２３（すなわち、行動Ｂ３のこの時点での最大評価値候補ＶＣ３ｍａｘ）＝４である。したがって、仮想ミニマックス下限Ｓｍｉｎ＝４に設定される。
【０１１３】
＜計算機４０２によるミニマックス探索処理手順例＞
図１３は、実施の形態２にかかる計算機４０２によるミニマックス探索処理手順例を示すフローチャートである。まず、計算機４０２は、仮想ミニマックスＳを初期化する（ステップＳ１３０１）。上述したように、仮想ミニマックスＳは、枝刈りを有効的に活用できる程度の値に初期化する。つぎに、計算機４０２は、探索処理を実行する（ステップＳ１３０２）。
【０１１４】
探索処理（ステップＳ１３０２）では、行動ごとに、枝刈りが発生していない場合は最大評価値Ｖｊｍａｘ、枝刈りが発生した場合は最大評価値候補ＶＣｊｍａｘが探索される。そして、最大評価値Ｖｊｍａｘの中で最小の最大評価値Ｖｊｍａｘがミニマックス候補となる。探索処理（ステップＳ１３０２）の詳細については図１４で後述する。
【０１１５】
このあと、計算機４０２は、判断部１１０６によりミニマックス否定条件を満たしているか否かを判断する（ステップＳ１３０３）。すなわち、すべての行動について枝刈りが発生したか否かを判断する。ミニマックス否定条件を満たす場合（ステップＳ１３０３：Ｙｅｓ）、いずれの行動についても枝刈りが発生していることになる。この場合、計算機４０２は、追加部１１１０により仮想ミニマックスＳに増加量ΔＳを追加する。
【０１１６】
そして、計算機４０２は、仮想ミニマックス下限Ｓｍｉｎが、追加後の仮想ミニマックスＳより大きいか否かを判断する（ステップＳ１３０５）。仮想ミニマックス下限Ｓｍｉｎが、追加後の仮想ミニマックスＳ以下の場合（ステップＳ１３０５：Ｎｏ）、ステップＳ１３０２に移行する。この場合、追加後の仮想ミニマックスＳで探索処理（ステップＳ１３０２）が再度実行されることになる。
【０１１７】
一方、仮想ミニマックス下限Ｓｍｉｎが、追加後の仮想ミニマックスＳより大きい場合（ステップＳ１３０５：Ｙｅｓ）、計算機４０２は、更新部１１１２により、仮想ミニマックスＳを仮想ミニマックス下限Ｓｍｉｎに更新する（ステップＳ１３０６）。そして、ステップＳ１３０２に移行する。この場合、仮想ミニマックス下限Ｓｍｉｎで更新された仮想ミニマックスＳで探索処理（ステップＳ１３０２）が再度実行されることになる。したがって、真のミニマックスに仮想ミニマックスを近づけることができ、効率的な枝刈りが実行されることになる。
【０１１８】
また、ステップＳ１３０３において、ミニマックス否定条件を満たさない場合（ステップＳ１３０３：Ｎｏ）、第２の決定部１１０７によりミニマックス候補をミニマックスに決定し（ステップＳ１３０７）、ミニマックスを取る行動を出力部１１０８により出力する（ステップＳ１３０８）。これにより、一連の処理を終了する。
【０１１９】
図１４は、図１３に示した探索処理（ステップＳ１３０２）の詳細な処理手順例を示すフローチャートである。図１４の例では、行動Ｂｊのインデックスｊおよび状態Ａｉのインデックスｉを１からインクリメントするものとして説明するが、ｎ、ｍからデクリメントさせてもよい。また、インクリメントやデクリメントではなく、未選択の行動Ｂｊ、状態Ａｉをランダムに選択することとしてもよい。ランダムに選択する場合は、たとえば、選択した位置Ｃｉｊに選択済みのフラグを設定することで、重複選択を禁止することとしてもよい。
【０１２０】
また、ヒューリスティック等によって経験的に最適になる可能性が高い行動が判明している場合は、行動Ｂ１〜Ｂｍに優先度を設定しておき、優先度の高い順に選択することとしてもよい。これにより、最適に近いミニマックス候補が見つかれば、その後の行動の評価を効率的に行うことが可能である。さらに、どの行動に対しても評価が高い（損失が高い）状態が判明している場合には、状態Ａ１〜Ａｎに優先度を設定しておき、優先度の高い順に選択することとしてもよい。これにより、最悪の状態を優先的に評価することによって、ミニマックスになりえない行動を判断できるタイミングを早くできる。
【０１２１】
図１４において、まず、計算機４０２は、ミニマックス候補を、仮想ミニマックスＳで初期化する（ステップＳ１４０１）。つぎに、計算機４０２は、行動Ｂｊのインデックスｊをｊ＝１に設定し（ステップＳ１４０２）、選択部１１０１により行動Ｂｊを選択する（ステップＳ１４０３）。また、計算機４０２は、状態Ａｉのインデックスｉをｉ＝１に設定し（ステップＳ１４０４）、選択部６０１により状態Ａｉを選択する（ステップＳ１４０５）。これにより、位置Ｃｉｊが特定される。つぎに、計算機４０２は、取得部１１０２により、行動Ｂｊに対する状態Ａｉの評価値Ｖｉｊを取得する（ステップＳ１４０６）。取得された評価値Ｖｉｊは探索空間Ｔの位置Ｃｉｊに記憶される。取得済みの場合は実行しない。
【０１２２】
そして、計算機４０２は、制御部１１０４により、評価値Ｖｉｊに対し枝刈り規則が適用可能か否かを判断する（ステップＳ１４０７）。具体的には、評価値Ｖｉｊが仮想ミニマックスＳより大きいか否かを判断する。選択済みの行動がない場合であっても、仮想ミニマックスＳが設定されているため、枝刈り規則は適用される。
【０１２３】
枝刈り規則が適用可能でない場合（ステップＳ１４０７：Ｎｏ）、計算機４０２は、選択部１１０１により、状態Ａｉのインデックスｉをインクリメントし（ステップＳ１４０８）、ｉ≦ｎであるか否かを判断する（ステップＳ１４０９）。ｉ≦ｎである場合（ステップＳ１４０９：Ｙｅｓ）、未選択の状態Ａｉが残存するため、ステップＳ１４０５に戻り、計算機４０２は、選択部１１０１により、状態Ａｉを選択する。
【０１２４】
一方、ｉ≦ｎでない場合（ステップＳ１４０９：Ｎｏ）、行動Ｂｊについてすべての状態Ａ１〜Ａｎの評価値が得られたため、計算機４０２は、特定部１１０３により、行動Ｂｊの評価値群Ｖ１ｊ〜Ｖｎｊの中から最大評価値Ｖｊｍａｘを特定する（ステップＳ１４１０）。特定された最大評価値Ｖｊｍａｘは探索空間Ｔに記憶される。
【０１２５】
そして、計算機４０２は、ミニマックス候補を更新する（ステップＳ１４１１）。すなわち、計算機４０２は、第１の決定部１１０５により、これまでに得られた最大評価値群の中で最小評価値が、ステップＳ１４０１で初期化されたミニマックス候補よりも小さい場合、最大評価値群の中の最小評価値をミニマックス候補に決定する。このあと、計算機４０２は、行動Ｂｊのインデックスｊをインクリメントする（ステップＳ１４１２）。
【０１２６】
一方、ステップＳ１４０７において、枝刈り規則が適用可能である場合（ステップＳ１４０７：Ｙｅｓ）、ステップＳ１４１２に移行する。すなわち、ステップＳ１４０８、Ｓ１４０９、Ｓ１４０５〜Ｓ１４０７のループと、ステップＳ１４１０，Ｓ１４１１がスキップされる。したがって、無駄な計算を抑制することでミニマックス探索の高速化を図ることができる。
【０１２７】
ステップＳ１４１２のあと、計算機４０２は、ｊ≦ｍであるか否かを判断する（ステップＳ１４１３）。すなわち、未選択の行動Ｂｊがあるか否かを判断する。ｊ≦ｍである場合（ステップＳ１４１３：Ｙｅｓ）、ステップＳ１４０３に戻り、計算機４０２は、選択部１１０１により行動Ｂｊを選択する。一方、ｊ≦ｍでない場合（ステップＳ１４１３：Ｎｏ）、ステップＳ１３０３に移行して、ミニマックス否定条件を満たすか否かを判断することになる。これにより、一連の処理を終了する。
【０１２８】
このように、実施の形態２によれば、仮想ミニマックスＳをあらかじめ設定しておくことで、効率のよい探索が可能な枝刈り規則が見つかるまで評価の悪い行動の計算を行うことなく、効率的にミニマックスを発見することができる。たとえば、真のミニマックスまたは真のミニマックス以上で十分に小さい値を仮想ミニマックスＳの初期値として設定した場合、選択すべき行動以外の行動の評価値の取得を枝刈り規則により打ち切ることが可能である。
【０１２９】
このように、実施の形態２によれば、枝刈り規則の初期値設定に関する前提知識をもっていなくても、仮想ミニマックスＳがミニマックスかどうか高速に判定する処理を繰り返し行うことにより、効率的にミニマックスを発見することができる。
【０１３０】
（実施の形態３）
つぎに、実施の形態３について説明する。実施の形態３は、複数の計算機を用いて仮想ミニマックスＳに基づくミニマックス探索を並列処理で実行する例である。各行動Ｂｊに対する状態Ａｉの評価を分担して行うことは当然のこととして、ミニマックスを発見するために有用な情報も分担して収集した上で共有し、さらにその情報自体をその情報収集のために利用する。これにより、単独の計算機では実現できない効率的な探索を実現することができることになる。
【０１３１】
単独の計算機では、適切ではない仮想ミニマックスＳを設定し探索を行ってしまった場合でも、すべての行動Ｂｊに対する処理を行わなければならない上に、ミニマックスを発見するために有益な情報を収集することができない場合がある。複数の計算機を利用することにより、ミニマックスを発見するために有用な情報を複数の計算機で共有し、有用な情報を発見するための処理自体を分担して行うことが可能である。また、適切ではない設定による探索を行っているのであれば、その情報自体を効率的な情報収集に利用し、より適切な探索への再設定を行うことができる。
【０１３２】
複数の計算機を利用する主眼は、状態Ａｉの評価の分担と仮想ミニマックスＳの上限を示す仮想ミニマックス上限Ｓｍａｘ、仮想ミニマックス下限Ｓｍｉｎを分担して収集し、共有することにより収集効率を上げ、総合的にミニマックスを探索することにある。必ずしも１つの計算機でミニマックスを発見する処理を閉じる必要はなく、複数の計算機が全体としてミニマックスを発見するための処理を行う。
【０１３３】
＜システム構成例＞
図１５は、実施の形態３にかかる計算機システムのシステム構成例を示す説明図である。図４と同一構成には同一符号を付し、説明を省略する。計算機システムは、マスタとなる計算機（マスタ計算機１５００）と、スレーブとなる複数（Ｐ台）の計算機（スレーブ計算機１５０１〜１５０Ｐ）とが、ネットワーク４１０に接続されている。なお、マスタ計算機１５００およびスレーブ計算機１５０ｐのハードウェア構成例は実施の形態１と同様である。
【０１３４】
マスタ計算機１５００は、スレーブ計算機１５０１〜１５０Ｐからの計算終了のメッセージ（評価完了通知）を受け取ると、スレーブ計算機１５０１〜１５０Ｐに仮想ミニマックスを送信し、計算を再開させる。マスタ計算機１５００とスレーブ計算機１５０ｐとの間の通信は、マスタ計算機１５００のプロセッサ５０４とスレーブ計算機１５０ｐのプロセッサ５０４とを使った１対１双方向通信（たとえば、ＭＰＩ＿ＳＥＮＤ／ＭＰＩ＿ＲＥＣＶ等)でおこなわれる。
【０１３５】
実施の形態３では、マスタ計算機１５００が、仮想ミニマックス上限Ｓｍａｘ、仮想ミニマックス下限Ｓｍｉｎ、各スレーブ計算機１５０ｐが収集してくる行動Ｂｊに対する状態Ａｉの評価値Ｖｉｊを管理する。マスタ計算機１５００は、さらに仮想ミニマックス上限Ｓｍａｘおよび仮想ミニマックス下限Ｓｍｉｎによって仮想ミニマックスＳの設定範囲を制御し、探索過程において仮想ミニマックスＳを情報収集の効率が高まるように再設定する。これにより、ミニマックスを発見するために有用な仮想ミニマックス上限Ｓｍａｘ、仮想ミニマックス下限Ｓｍｉｎを収集することができる。したがって、単独の計算機でミニマックス探索を行うよりも探索効率が大きく向上する。
【０１３６】
＜ミニマックス並列探索例＞
つぎに、実施の形態３にかかるミニマックス並列探索例について図１６〜図２４を用いて時系列で説明する。図１６〜図２４では、一例としてスレーブ計算機をＰ＝２台とする。また、実施の形態１，２と同様、行動数ｍ＝４、状態数ｎ＝４で説明する。また、実施の形態３では、スレーブ計算機１５０ｐが、行動Ｂｊおよび状態Ａｉで指定される探索空間Ｔを有し、マスタ計算機１５００は、行動Ｂｊごとに最大評価値候補ＶＣｊｍａｘまたは最大評価値Ｖｊｍａｘを記憶する評価値テーブルＴ０を有するものとする。なお、スレーブ計算機１５０ｐは、ここでは物理マシンとして説明するが、仮想マシンでもよい。
【０１３７】
図１６は、実施の形態３にかかるミニマックス並列探索例（その１）を示す説明図である。図１６において、マスタ計算機１５００は、探索開始位置列｛ＳＰｐ｝を生成する。探索開始位置列｛ＳＰｐ｝とは、探索開始位置ＳＰｐがスレーブ計算機１５０ｐの個数Ｐ分配列したデータ列である。ｐはスレーブ計算機１５０ｐを特定する番号である。探索開始位置ＳＰｐは、探索空間Ｔ内の位置Ｃｉｊであり、スレーブ計算機１５０ｐごとに異なる。
【０１３８】
詳細は後述するが、探索開始位置ＳＰｐは、同一位置Ｃｉｊの評価値Ｖｉｊの取得を回避するため、探索空間Ｔｐの対角位置で等間隔で配列するのが好ましい。本例では、探索開始位置列｛ＳＰｐ｝は、スレーブ計算機１５０１の探索開始位置ＳＰ１と、スレーブ計算機１５０２の探索開始位置ＳＰ２と、を有する。ここでは、例として、探索開始位置ＳＰ１を位置Ｃ１１とし、探索開始位置ＳＰ２を位置Ｃ３３とする。マスタ計算機１５００は、探索開始位置ＳＰ１，ＳＰ２を、それぞれのスレーブ計算機１５０１，１５０２に配信する。スレーブ計算機１５０１，１５０２は、それぞれ探索開始位置ＳＰ１，ＳＰ２を受信する。各スレーブ計算機１５０１，１５０２は、受信した探索開始位置から評価値の取得をおこなうことになる。
【０１３９】
また、マスタ計算機１５００は、仮想ミニマックス列｛Ｓｐ｝を生成する。仮想ミニマックス列｛Ｓｐ｝は、仮想ミニマックスＳがスレーブ計算機１５０ｐの個数Ｐ分配列したデータ列である。ｐはスレーブ計算機を特定する番号である。本例では、仮想ミニマックス列｛Ｓｐ｝は、スレーブ計算機１５０１の仮想ミニマックスＳ１と、スレーブ計算機１５０２の仮想ミニマックスＳ２と、を有する。Ｓ１≠Ｓ２である。
【０１４０】
詳細は後述するが、マスタ計算機１５００は、たとえば、初項が仮想ミニマックスＳｍｉｎ、増分を増加量ΔＳとする要素数Ｐ個の等差数列で表現される。ここでは、Ｐ＝２としており、Ｓ１＝０、Ｓ２＝１００とする。マスタ計算機１５００は、仮想ミニマックスＳ１，Ｓ２を、それぞれのスレーブ計算機１５０１，１５０２に配信する。スレーブ計算機１５０１，１５０２は、それぞれ仮想ミニマックスＳ１，Ｓ２を受信する。なお、各スレーブ計算機１５０１，１５０２の探索空間Ｔ１、Ｔ２では、評価値Ｂｉｊは未取得である。
【０１４１】
図１７は、実施の形態３にかかるミニマックス並列探索例（その２）を示す説明図である。図１７において、スレーブ計算機１５０１は、受信した探索開始位置ＳＰ１＝Ｃ１１から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ１１の評価値Ｖ１１＝４とする。評価値Ｖ１１＝４は、受信した仮想ミニマックスＳ１よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ１に対する状態Ａ２〜Ａ４についての評価はスキップされ、行動Ｂ２に対し状態Ａ１から順に選択することになる。
【０１４２】
また、スレーブ計算機１５０１は、行動Ｂ１での評価が終了したため、枝刈り発生時の評価値Ｖ１１＝４を、行動Ｂ１での最大評価値候補ＶＣ１ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ１ｍａｘ＝４を受信して、評価値テーブルＴ０に書き込む。
【０１４３】
スレーブ計算機１５０２も同様に、受信した探索開始位置ＳＰ２＝Ｃ３３から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ３３の評価値Ｖ３３＝７とする。評価値Ｖ３３＝７は、受信した仮想ミニマックスＳ２以下であるため、枝刈り規則が適用されない。したがって、つぎの状態Ａ４が選択され、行動Ｂ３に対する状態Ａ４の評価が実行されることになる。
【０１４４】
図１８は、実施の形態３にかかるミニマックス並列探索例（その３）を示す説明図である。図１８において、スレーブ計算機１５０１は、行動Ｂ１の評価が枝刈りで打ち切られたため、位置Ｃ１２から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ１２の評価値Ｖ１２＝１０とする。評価値Ｖ１２＝１０は、仮想ミニマックスＳ１よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ２に対する状態Ａ２〜Ａ４についての評価はスキップされ、行動Ｂ３に対し状態Ａ１から順に選択することになる。
【０１４５】
また、スレーブ計算機１５０１は、行動Ｂ２での評価が終了したため、枝刈り発生時の評価値Ｖ１２＝１０を、行動Ｂ２での最大評価値候補ＶＣ２ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ２ｍａｘ＝１０を受信して、評価値テーブルＴ０に書き込む。
【０１４６】
スレーブ計算機１５０２では、行動Ｂ３に対し選択された状態Ａ４の評価値Ｖ４３＝９を取得する。評価値Ｖ４３＝９は、仮想ミニマックスＳ２以下であるため、枝刈り規則が適用されない。したがって、つぎの状態Ａ１が選択され、行動Ｂ３に対する状態Ａ１の評価が実行されることになる。
【０１４７】
図１９は、実施の形態３にかかるミニマックス並列探索例（その４）を示す説明図である。図１９において、スレーブ計算機１５０１は、行動Ｂ２の評価が枝刈りで打ち切られたため、位置Ｃ１３から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ１３の評価値Ｖ１３＝７とする。評価値Ｖ１３＝７は、仮想ミニマックスＳ１よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ３に対する状態Ａ２〜Ａ４についての評価はスキップされ、行動Ｂ４に対し状態Ａ１から順に選択することになる。
【０１４８】
また、スレーブ計算機１５０１は、行動Ｂ３での評価が終了したため、枝刈り発生時の評価値Ｖ１３＝７を、行動Ｂ３での最大評価値候補ＶＣ３ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ３ｍａｘ＝７を受信して、評価値テーブルＴ０に書き込む。
【０１４９】
スレーブ計算機１５０２では、行動Ｂ３に対し選択された状態Ａ１の評価値Ｖ１３＝７を取得する。評価値Ｖ１３＝７は、仮想ミニマックスＳ２以下であるため、枝刈り規則が適用されない。したがって、つぎの状態Ａ２が選択され、行動Ｂ３に対する状態Ａ２の評価が実行されることになる。
【０１５０】
図２０は、実施の形態３にかかるミニマックス並列探索例（その５）を示す説明図である。図２０において、スレーブ計算機１５０１は、行動Ｂ１の評価が枝刈りで打ち切られたため、位置Ｃ１４から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ１４の評価値Ｖ１４＝５とする。評価値Ｖ１４＝５は、仮想ミニマックスＳ１よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ４に対する状態Ａ２〜Ａ４についての評価はスキップされる。
【０１５１】
また、スレーブ計算機１５０１は、行動Ｂ４での評価が終了したため、枝刈り発生時の評価値Ｖ１４＝５を、行動Ｂ４での最大評価値候補ＶＣ４ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ４ｍａｘ＝５を受信して、評価値テーブルＴ０に書き込む。また、スレーブ計算機１５０１は、すべての行動Ｂ１〜Ｂ４について評価が終了したことになるため、評価完了通知をマスタ計算機１５００に送信する。
【０１５２】
スレーブ計算機１５０２では、行動Ｂ３に対し選択された状態Ａ２の評価値Ｖ２３＝８を取得する。評価値Ｖ２３＝８は、仮想ミニマックスＳ２以下であるため、枝刈り規則が適用されない。行動Ｂ３では未選択の状態がなくなったため、行動Ｂ３での最大評価値Ｖ３ｍａｘ＝９をマスタ計算機１５００に送信する。マスタ計算機１５００は、受信した行動Ｂ３での最大評価値Ｖ３ｍａｘ＝９を評価値テーブルＴ０に書き込む。これにより、行動Ｂ３については最大評価値Ｖ３ｍａｘ＝９が確定する。また、スレーブ計算機１５０２では、行動Ｂ３について最大評価値Ｖ３ｍａｘが得られたため、計算の評価完了通知をマスタ計算機１５００に送信する。
【０１５３】
マスタ計算機１５００は、先に受けたスレーブ計算機１５０１からの評価完了通知により、仮想ミニマックス列｛Ｓｐ｝の更新をおこなう。具体的には、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス下限Ｓｍｉｎを、最大評価値候補群の中の最小の最大評価値候補に更新する。本例の場合は、ＶＣ１ｍａｘ＝４が仮想ミニマックス下限Ｓｍｉｎとなる。また、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス上限Ｓｍａｘを、最大評価値群の中の最小の最大評価値に更新する。本例の場合は、Ｖ３ｍａｘ＝９が仮想ミニマックス上限Ｓｍａｘとなる。
【０１５４】
このあと、マスタ計算機１５００では、更新後の仮想ミニマックス下限Ｓｍｉｎおよび仮想ミニマックス上限Ｓｍａｘを用いて、仮想ミニマックス列｛Ｓｐ｝の再生成をおこなう。これにより、仮想ミニマックスＳ１＝４、仮想ミニマックスＳ２＝９になる。そして、マスタ計算機１５００は、更新された仮想ミニマックスＳ１＝４を、スレーブ計算機１５０１に送信する。この時点では、マスタ計算機１５００は、スレーブ計算機１５０２から評価完了通知を受け付けているが、ウェイト状態であるため、仮想ミニマックスＳ２は送信されていないものとする。
【０１５５】
図２１は、実施の形態３にかかるミニマックス並列探索例（その６）を示す説明図である。図２１において、スレーブ計算機１５０１は、マスタ計算機１５００からあらたに送信されてきた仮想ミニマックスＳ１を用いて、探索開始位置ＳＰ１から評価をおこなう。位置Ｃ１１の評価値Ｖ１１はＶ１１＝４であり、評価値Ｖ１１＝４は、受信した仮想ミニマックスＳ１＝４と同じであるため、枝刈り規則が適用されない。
【０１５６】
したがって、つぎの状態Ａ２が選択され、行動Ｂ１に対する状態Ａ２の評価が実行されることになる。行動Ｂ１に対する状態Ａ２の評価値Ｖ２１＝８とする。評価値Ｖ２１＝８は、仮想ミニマックスＳ１＝４よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ１に対する状態Ａ３，Ａ４についての評価はスキップされ、行動Ｂ２に対し状態Ａ１から順に選択することになる。
【０１５７】
また、スレーブ計算機１５０１は、行動Ｂ１での評価が終了したため、枝刈り発生時の評価値Ｖ２１＝８を、行動Ｂ１での最大評価値候補ＶＣ１ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ１ｍａｘ＝８を受信して、評価値テーブルＴ０に書き込む。
【０１５８】
図２２は、実施の形態３にかかるミニマックス並列探索例（その７）を示す説明図である。図２２において、スレーブ計算機１５０１は、行動Ｂ１の評価が枝刈りで打ち切られたため、位置Ｃ１２から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ１２の評価値Ｖ１２＝１０であり、仮想ミニマックスＳ１＝４よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ２に対する状態Ａ２〜Ａ４についての評価はスキップされ、行動Ｂ３に対し状態Ａ１から順に選択することになる。
【０１５９】
また、スレーブ計算機１５０１は、行動Ｂ２での評価が終了したため、枝刈り発生時の評価値Ｖ１２＝１０を、行動Ｂ２での最大評価値候補ＶＣ２ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ２ｍａｘ＝１０を受信して、評価値テーブルＴ０に書き込む。
【０１６０】
また、スレーブ計算機１５０１は、行動Ｂ２の評価が枝刈りで打ち切られたため、位置Ｃ１３から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ１３の評価値Ｖ１３＝７であり、仮想ミニマックスＳ１＝４よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ３に対する状態Ａ２〜Ａ４についての評価はスキップされ、行動Ｂ３に対し状態Ａ１から順に選択することになる。
【０１６１】
スレーブ計算機１５０１は、行動Ｂ３での評価が終了したため、枝刈り発生時の評価値Ｖ１３＝７を、行動Ｂ３での最大評価値候補ＶＣ３ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ３ｍａｘ＝１０を受信するが、すでに行動Ｂ３の最大評価値Ｖ３ｍａｘが「９」に確定しているため、これ以上の書込みはしない。
【０１６２】
また、ここで、マスタ計算機１５００は、ウェイトさせていたスレーブ計算機１５０２からの評価完了通知を受けて、仮想ミニマックス列｛Ｓｐ｝の更新をおこなう。具体的には、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス下限Ｓｍｉｎを、最大評価値候補群の中の最小の最大評価値候補に更新する。本例の場合は、ＶＣ４ｍａｘ＝５が仮想ミニマックス下限Ｓｍｉｎとなる。また、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス上限Ｓｍａｘを、最大評価値群の中の最小の最大評価値に更新する。本例の場合は、最大評価値Ｖ３ｍａｘ＝９が仮想ミニマックス上限Ｓｍａｘとなる。
【０１６３】
このあと、マスタ計算機１５００では、更新後の仮想ミニマックス下限Ｓｍｉｎおよび仮想ミニマックス上限Ｓｍａｘを用いて、仮想ミニマックス列｛Ｓｐ｝の再生成をおこなう。これにより、仮想ミニマックスＳ１＝５、仮想ミニマックスＳ＝９になる。そして、マスタ計算機１５００は、更新された仮想ミニマックスＳ２＝９を、スレーブ計算機１５０２に送信する。この時点では、マスタ計算機１５００は、スレーブ計算機１５０１から評価完了通知を受け付けていないため、仮想ミニマックスＳ１＝５は、スレーブ計算機１５０１に送信されない。
【０１６４】
また、スレーブ計算機１５０２では、仮想ミニマックスＳ２＝９を受信することで、探索開始位置ＳＰ２からの評価を開始する。スレーブ計算機１５０２では、探索開始位置ＳＰ２＝Ｃ３３についての行動Ｂ３の評価は終了しているため、行動Ｂ４に対する状態Ａ３から評価を開始する。
【０１６５】
そして、スレーブ計算機１５０２では、行動Ｂ４に対し選択された状態Ａ３の評価値Ｖ３４＝３を取得する。評価値Ｖ３４＝３は、仮想ミニマックスＳ２＝９以下であるため、枝刈り規則が適用されない。したがって、つぎの状態Ａ４が選択され、行動Ｂ４に対する状態Ａ４の評価が実行されることになる。
【０１６６】
図２３は、実施の形態３にかかるミニマックス並列探索例（その８）を示す説明図である。図２３において、スレーブ計算機１５０１は、行動Ｂ３の評価が枝刈りで打ち切られたため、位置Ｃ１４から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ１４の評価値Ｖ１４＝５であり、仮想ミニマックスＳ１＝４よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ４に対する状態Ａ２〜Ａ４についての評価はスキップされる。
【０１６７】
スレーブ計算機１５０１は、行動Ｂ４での評価が終了したため、枝刈り発生時の評価値Ｖ１４＝５を、行動Ｂ４での最大評価値候補ＶＣ４ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ４ｍａｘ＝５を受信して、評価値テーブルＴ０に書き込む。また、スレーブ計算機１５０１は、すべての行動Ｂ１〜Ｂ４について評価が終了したことになるため、評価完了通知をマスタ計算機１５００に送信する。
【０１６８】
マスタ計算機１５００は、スレーブ計算機１５０１からの評価完了通知により、仮想ミニマックス列｛Ｓｐ｝の更新をおこなう。具体的には、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス下限Ｓｍｉｎを、最大評価値候補群の中の最小の最大評価値候補に更新する。本例の場合は、ＶＣ４ｍａｘ＝５が仮想ミニマックス下限Ｓｍｉｎとなる。また、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス上限Ｓｍａｘを、最大評価値群の中の最小の最大評価値に更新する。本例の場合は、最大評価値Ｖ３ｍａｘ＝９が仮想ミニマックス上限Ｓｍａｘとなる。
【０１６９】
このあと、マスタ計算機１５００では、更新後の仮想ミニマックス下限Ｓｍｉｎおよび仮想ミニマックス上限Ｓｍａｘを用いて、仮想ミニマックス列｛Ｓｐ｝の再生成をおこなう。これにより、仮想ミニマックスＳ１＝５、仮想ミニマックスＳ２＝９になる。そして、マスタ計算機１５００は、更新された仮想ミニマックスＳ１＝５を、スレーブ計算機１５０１に送信する。この時点では、マスタ計算機１５００は、スレーブ計算機１５０２から評価完了通知を受け付けていないため、仮想ミニマックスＳ２は送信されない。
【０１７０】
図２４は、実施の形態３にかかるミニマックス並列探索例（その９）を示す説明図である。図２４において、スレーブ計算機１５０１は、探索開始位置ＳＰ１＝Ｃ１１から評価値Ｖｉｊの取得をおこなう。現時点での仮想ミニマックスＳ１はＳ１＝５であるため、スレーブ計算機１５０１では、行動Ｂ１では状態Ａ３，Ａ４、行動Ｂ２では状態Ａ２〜Ａ４が枝刈りされる。したがって、スレーブ計算機１５０１は、マスタ計算機１５００に対し、最大評価値候補ＶＣ１ｍａｘ＝８、ＶＣ２ｍａｘ＝１０を送信する。これにより、評価値テーブルＴ０が更新される。
【０１７１】
一方、スレーブ計算機１５０２では、行動Ｂ４に対し状態Ａ４が選択されて評価値Ｖ４４＝２を得る。評価値Ｖ４４＝２は仮想ミニマックスＳ２＝９以下であるため、枝刈り規則は適用されない。スレーブ計算機１５０２では、行動Ｂ４に対しつぎの状態Ａ１が選択されて評価値Ｖ１４＝５を得る。評価値Ｖ１４＝５は仮想ミニマックスＳ２＝９以下であるため、枝刈り規則は適用されない。
【０１７２】
スレーブ計算機１５０２では、行動Ｂ４に対しつぎの状態Ａ２が選択されて評価値Ｖ２４＝６を得る。評価値Ｖ２４＝６は仮想ミニマックスＳ２＝９以下であるため、枝刈り規則は適用されない。これにより、行動Ｂ４での評価が終了して、最大評価値Ｖ４ｍａｘ＝Ｖ２４＝６が得られたため、スレーブ計算機１５０２は、最大評価値Ｖ４ｍａｘ＝６および評価完了通知をマスタ計算機１５００に送信する。
【０１７３】
マスタ計算機１５００は、スレーブ計算機１５０２からの評価完了通知により、仮想ミニマックス列｛Ｓｐ｝の更新をおこなう。具体的には、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス下限Ｓｍｉｎを、最大評価値候補群の中の最小の最大評価値候補に更新する。本例の場合は、ＶＣ１ｍａｘ＝８が仮想ミニマックス下限Ｓｍｉｎとなる。また、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス上限Ｓｍａｘを、最大評価値群の中の最小の最大評価値に更新する。本例の場合は、Ｖ４ｍａｘ＝６が仮想ミニマックス上限Ｓｍａｘとなる。
【０１７４】
この場合、Ｓｍｉｎ＞Ｓｍａｘであることから、マスタ計算機１５００では、仮想ミニマックスＳ１，Ｓ２の更新をせずに、評価値テーブルＴ０の最大評価値群の中の最小の最大評価値をミニマックスに決定する。本例では、行動Ｂ４の最大評価値Ｖ４ｍａｘ＝６がミニマックスとなる。これにより、最適な行動は行動Ｂ４であり、ミニマックスは「６」であることがわかる。最後に、マスタ計算機１５００は、評価を実行中であるスレーブ計算機１５０１，１５０２に評価完了通知を送信することで、スレーブ計算機１５０１，１５０２での評価は終了する。
【０１７５】
上述した例では、マスタ計算機１５００とスレーブ計算機１５０１〜１５０Ｐとの間で、探索空間を共有していない場合を例に挙げて説明したが、マスタ計算機１５００とスレーブ計算機１５０１〜１５０Ｐとの間で探索空間を共有することとしてもよい。この場合、マスタ計算機１５００の記憶装置５０１には、さらに、探索空間を保持することになり、スレーブ計算機１５０ｐでは、算出された評価値Ｖｉｊをマスタ計算機１５００や他のスレーブ計算機の探索空間に、ＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）で書き込むことになる。
【０１７６】
＜スレーブ計算機の機能的構成例＞
図２５は、実施の形態３にかかるスレーブ計算機１５０ｐの機能的構成例を示すブロック図である。スレーブ計算機１５０ｐは、受信部２５０１と、選択部２５０２と、取得部２５０３と、第１の特定部２５０４と、制御部２５０５と、第２の特定部２５０６と、送信部２５０７と、を備える。受信部２５０１〜送信部２５０７は、具体的には、たとえば、図５に示した記憶装置５０１に記憶されたプログラムをプロセッサ５０４に実行させることによりその機能を実現する。なお、選択部２５０２、取得部２５０３、第１の特定部２５０４および制御部２５０５は、実施の形態２の選択部１１０１、取得部１１０２、特定部１１０３および制御部１１０４と同一内容であるため、説明を省略する。
【０１７７】
受信部２５０１は、記憶装置５０１に記憶されている探索空間Ｔｐのうちいずれかの行動および状態で指定された開始位置および任意の値をとる仮想ミニマックスをマスタ計算機１５００から受信する。具体的には、たとえば、受信部２５０１は、マスタ計算機１５００で生成された探索開始位置ＳＰｐを受信する。たとえば、スレーブ計算機１５０１の場合は、探索開始位置ＳＰ１＝Ｃ１１を受信する。これにより、選択部２５０２は、探索開始位置ＳＰｐから評価を実行することになる。
【０１７８】
また、受信部２５０１は、マスタ計算機１５００で得られた仮想ミニマックスＳｐを受信する。仮想ミニマックスＳｐは探索開始時と、スレーブ計算機１５０ｐから評価完了通知を送信した場合に受信される。
【０１７９】
第２の特定部２５０６は、選択中の行動に対し選択の打ち切りが発生した場合、打ち切りが発生したときの評価値を選択中の行動での最大評価値候補として特定する。たとえば、図１７に示したように、スレーブ計算機１５０１では、行動Ｂ１に対する状態Ａ１の評価値Ｖ１１で枝刈りが発生したため、評価値Ｖ１１が行動Ｂ１の最大評価値候補ＶＣ１ｍａｘとして特定される。
【０１８０】
送信部２５０７は、選択中の行動に対して特定された最大評価値または最大評価値候補をマスタ計算機１５００に送信する。具体的には、たとえば、図２０に示したように、スレーブ計算機１５０２では、行動Ｂ３で最大評価値Ｖ３ｍａｘ＝９を特定したため、マスタ計算機１５００に最大評価値Ｖ３ｍａｘ＝９を送信する。また、図１７に示したように、スレーブ計算機１５０１では、最大評価値候補ＶＣ１ｍａｘ＝４を特定したため、マスタ計算機１５００に最大評価値ＶＣ１ｍａｘ＝４を送信する。
【０１８１】
また、送信部２５０７は、いずれかの行動の最大評価値が得られた場合、または、各行動の最大評価値候補が得られた場合、評価完了通知をマスタ計算機１５００に送信する。具体的には、たとえば、図２０に示したように、スレーブ計算機１５０２では、行動Ｂ３で最大評価値Ｖ３ｍａｘ＝９を特定したため、マスタ計算機１５００に評価完了通知を送信する。また、図２０に示したように、スレーブ計算機１５０１では、すべての行動Ｂ１〜行動Ｂ４の最大評価値候補ＶＣ１ｍａｘ〜ＶＣ４ｍａｘを特定したため、マスタ計算機１５００に評価完了通知を送信する。
【０１８２】
＜マスタ計算機１５００の機能的構成例＞
図２６は、実施の形態３にかかるマスタ計算機１５００の機能的構成例を示すブロック図である。マスタ計算機１５００は、設定部２６０１と、配信部２６０２と、受信部２６０３と、格納部２６０４と、検出部２６０５と、更新部２６０６と、判定部２６０７と、決定部２６０８と、出力部２６０９と、を備える。設定部２６０１〜出力部２６０９は、具体的には、たとえば、図５に示した記憶装置５０１に記憶されたプログラムをプロセッサ５０４に実行させることによりその機能を実現する。
【０１８３】
設定部２６０１は、行動群の行動ごとに状態群の各状態を指定可能な探索空間Ｔｐのうちいずれかの行動および状態で指定された開始位置を、スレーブ計算機１５０ｐごとに異なるように設定する。開始位置ＳＰｐは互いに異なるようにすればランダムに決定してもよい。
【０１８４】
また、設定部２６０１は、スレーブ計算機の数Ｐに基づいて、開始位置をスレーブ計算機ごとに異なるように設定することとしてもよい。たとえば、探索空間Ｔｐ内の行動Ｂ１〜ＢｍをＰで分割し、状態Ａ１〜ＡｎをＰで分割する。そして、分割されたブロック内のいずれかの位置Ｃｉｊを、スレーブ計算機１５０ｐごとに割り当てる。
【０１８５】
たとえば、図１６の例では、Ｐ＝２であるため、行動Ｂ１〜Ｂ４を２分割、状態Ａ１〜Ａ４を２分割する。そして、設定部２６０１は、行動Ｂ１，Ｂ２、状態Ａ１，Ａ２のブロックから、たとえば、位置Ｃ１１を探索開始位置ＳＰ１とし、行動Ｂ３，Ｂ４、状態Ａ３，Ａ４のブロックから、たとえば、位置Ｃ３３を探索開始位置ＳＰ２とする。
【０１８６】
ここで、位置Ｃ１１、Ｃ３３のように、探索開始位置列を、対角方向に配列することで、スレーブ計算機間の同一位置での重複評価を低減することができる。なお、対角方向であれば、位置Ｃ１１，Ｃ３３の組み合わせのほか、位置Ｃ２２，Ｃ４４でもよい。なお、位置Ｃ１１，Ｃ２２の組み合わせなどのように位置の間隔が近いと重複評価が発生する可能性が高くなるため、等距離に配列するのが好ましい。
【０１８７】
また、設定部２６０１は、任意の値をとる仮想ミニマックスＳｐをスレーブ計算機１５０ｐごとに異なるように設定する。具体的には、たとえば、設定部２６０１は、仮想ミニマックスＳｐの増加量ΔＳとスレーブ計算機の数Ｐとに基づいて、仮想ミニマックスＳｐをスレーブ計算機１５０ｐごとに異なるように設定する。たとえば、仮想ミニマックス下限Ｓｍｉｎの初期値を十分小さい値の例として０、仮想ミニマックス上限Ｓｍａｘの初期値を十分大きい値の例として１００とする。この場合、設定部２６０１では、下記式（１）を満たすか否かで増加量ΔＳを更新する。
【０１８８】
Ｓｍｉｎ＋ΔＳ×（Ｐ−１）≦Ｓｍａｘ・・・（１）
【０１８９】
増加量ΔＳの初期値をΔＳ＝１００、Ｐ＝２として上記式（１）に各値を代入すると、左辺は、０＋１００×（２−１）＝１００となる。右辺は、１００である。この場合は、上記式（１）を満たすため、仮想ミニマックス列｛Ｓｐ｝は、初項Ｓｍｉｎ＝１００、増加量ΔＳ＝１００、要素数Ｐ個の等差数列｛０，１００｝となる。したがって、図１６に示したように、スレーブ計算機１５０１の仮想ミニマックスＳ１はＳ１＝０となり、スレーブ計算機１５０２の仮想ミニマックスＳ２はＳ２＝１００となる。
【０１９０】
すなわち、仮想ミニマックス列｛Ｓｐ｝の設定を繰り返すことで、仮想ミニマックス下限Ｓｍｉｎは探索が進むにつれて必ず真のミニマックスに近づいていくため、仮想ミニマックス下限Ｓｍｉｎによって仮想ミニマックスＳｐはミニマックスに近い値に更新されていくことは保証される。
【０１９１】
また、上記式（１）を満たさなかった場合、探索刻み幅である増加量ΔＳを下記式（２）で更新する。
【０１９２】
ΔＳ＝（Ｓｍａｘ−Ｓｍｉｎ）／（Ｐ−１）・・・（２）
【０１９３】
すなわち、ある行動に対してすべての状態を評価できた場合には、計算を行った仮想ミニマックスＳｐ以下のミニマックス候補となる仮想ミニマックス上限Ｓｍａｘが見つかっている。仮想ミニマックス上限Ｓｍａｘは探索刻み幅である増加量ΔＳを更新するのに有効に活用することが可能である。そのため、上記式（２）で示したように、ΔＳを更新して仮想ミニマックス列｛ＳＰｐ｝の再設定をおこなう。つまり、仮想ミニマックス上限Ｓｍａｘが与えられた増加量ΔＳで計算可能な仮想ミニマックスＳｐよりも低い値ならば、増加量ΔＳを細かくすることが可能になる。この場合には増加量ΔＳを上記式（２）で更新して仮想ミニマックス列｛ＳＰｐ｝の再設定をおこなう。
【０１９４】
配信部２６０２は、設定部２６０１によってスレーブ計算機ごとに設定された開始位置および仮想ミニマックスを、各スレーブ計算機に配信する。具体的には、たとえば、配信部２６０２は、探索開始位置ＳＰｐをスレーブ計算機１５０ｐに送信する。同様に、配信部２６０２は、仮想ミニマックスＳｐをスレーブ計算機１５０ｐに送信する。
【０１９５】
受信部２６０３は、スレーブ計算機から送信されてくる情報を受信する。たとえば、受信部２６０３は、最大評価値Ｖｊｍａｘ、最大評価値候補ＶＣｊｍａｘ、評価完了通知をスレーブ計算機１５０ｐから受信する。
【０１９６】
格納部２６０４は、各スレーブ計算機から送信されてきた最大評価値または最大評価値候補を、記憶装置５０１内の該当する行動の記憶領域に書き込む。具体的には、たとえば、図１６〜図２４に示したように、評価値テーブルＴ０の該当する行動に、最大評価値Ｖｊｍａｘまたは最大評価値候補ＶＣｊｍａｘを書き込む。なお、すでに最大評価値Ｖｊｍａｘが格納済みである場合は、同一行動Ｂｊについて最大評価値候補ＶＣｊｍａｘが受信されても書き込む必要はない。これにより、最大評価値候補ＶＣｊｍａｘの書込みによるマスタ計算機１５００の処理負荷軽減を図ることができる。
【０１９７】
検出部２６０５は、複数のスレーブ計算機のうちいずれかのスレーブ計算機からの評価完了通知を検出する。評価完了通知は、仮想ミニマックス列｛Ｓｐ｝の再設定のトリガとなる。
【０１９８】
更新部２６０６は、検出部２６０５によって評価完了通知が検出された場合、仮想ミニマックス下限Ｓｍｉｎを、記憶装置５０１に記憶されている最大評価値候補群のうち最小の最大評価値候補に更新する。具体的には、たとえば、図２０に示したように、更新部２６０６は、仮想ミニマックス下限Ｓｍｉｎを、評価値テーブルＴ０の最大評価値候補群のうち最小の最大評価値候補ＶＣ１ｍａｘ＝４に更新する。また、更新部２６０６は、仮想ミニマックス上限Ｓｍａｘを、記憶装置５０１に記憶されている最大評価値群の最小の最大評価値に更新する。具体的には、たとえば、図２０に示したように、更新部２６０６は、仮想ミニマックス上限Ｓｍａｘを、評価値テーブルＴ０の最大評価値群のうち最小の最大評価値Ｖ３ｍａｘ＝９に更新する。
【０１９９】
このように、仮想ミニマックス下限Ｓｍｉｎと仮想ミニマックス上限Ｓｍａｘが更新されると、設定部２６０１では、上記式（１）を用いて、仮想ミニマックス列｛Ｓｐ｝を再設定する。これにより、仮想ミニマックスＳｐが更新されて、配信部２６０２により再配信されることになる。
【０２００】
判定部２６０７は、更新部２６０６による更新後の仮想ミニマックス下限が更新部２６０６による更新後の仮想ミニマックス上限よりも大きいか否かを判定する。具体的には、たとえば、判定部２６０７は、Ｓｍｉｎ＞Ｓｍａｘになったか否かを判定する。このような状態になった場合は、未探索範囲にミニマックスが存在しないことを意味する。
【０２０１】
決定部２６０８は、判定部２６０７によって大きいと判定されたときの更新後の仮想ミニマックス上限をミニマックスに決定する。すなわち、決定部２６０８は、Ｓｍｉｎ＞Ｓｍａｘになった場合は、最新の仮想ミニマックス上限Ｓｍａｘをミニマックスに決定する。これにより、ミニマックスが発見されることになる。たとえば、図２４では、Ｓｍｉｎ＞Ｓｍａｘになったときの仮想ミニマックス上限Ｓｍａｘ＝６であるため、ミニマックスは行動Ｂ４に対する状態Ａ２での評価値Ｖ２４＝６であることが判明する。
【０２０２】
出力部２６０９は、決定部２６０８によってミニマックスが決定された行動を出力する。具体的には、たとえば、ミニマックスが決定された行動の名称（たとえば、「蓄電池運転計画１」のような行動を示す文字列）を出力する。なお、行動だけではなく、ミニマックス（の値）や状態（の名称）も出力してもよい。図２４の例では、たとえば、｛行動Ｂ４、状態Ａ２、ミニマックス＝６｝が出力結果として出力される。出力部２６０９は、このような出力結果を出力装置５０３や記憶装置５０１に出力する。出力装置５０３に出力した場合は、出力装置５０３に応じた出力（画面表示、印刷、他の装置への送信、音声読み上げ）が行われる。記憶装置５０１に出力された場合は、記憶装置５０１に格納されることになる。
【０２０３】
＜マスタ計算機１５００によるミニマックス探索処理手順例＞
図２７は、マスタ計算機１５００によるミニマックス探索処理手順例（前半）を示すフローチャートである。まず、図２７において、マスタ計算機１５００は、計算開始まで待ち受け（ステップＳ２７０１：Ｎｏ）、計算開始の場合（ステップＳ２７０１：Ｙｅｓ）、スレーブ計算機の台数（計算プロセス数）Ｐ、仮想ミニマックス上限Ｓｍａｘ、仮想ミニマックス下限Ｓｍｉｎ、増加量ΔＳを取得する（ステップＳ２７０２）。これらは、あらかじめ記憶装置５０１に保持されているファイルを読み込んでもよく、入力装置５０２からの操作入力により受け付けることとしてもよい。
【０２０４】
つぎに、マスタ計算機１５００は、設定部２６０１により探索開始位置列｛ＳＰｐ｝を設定し（ステップＳ２７０３）、各スレーブ計算機１５０ｐに、対応する探索開始位置ＳＰｐを送信する（ステップＳ２７０４）。このあと、マスタ計算機１５００は、設定部２６０１により、仮想ミニマックス設定処理（ステップＳ２７０５）を実行する。仮想ミニマックス設定処理（ステップＳ２７０５）の詳細については、図２９で説明するが、これにより、仮想ミニマックス列｛Ｓｐ｝、すなわち、スレーブ計算機ごとの仮想ミニマックスＳｐが設定される。したがって、マスタ計算機１５００は、各スレーブ計算機１５０ｐに、対応する仮想ミニマックスＳｐを送信して（ステップＳ２７０６）、図２８のステップＳ２８０１に移行する。
【０２０５】
図２８−１は、マスタ計算機１５００によるミニマックス探索処理手順例（後半）を示すフローチャートである。図２８−１では、マスタ計算機１５００は、評価値テーブルＴ０への書込み要求が受信されたか否かを判断する（ステップＳ２８０１）。すなわち、いずれかのスレーブ計算機１５０ｐから最大評価値Ｖｊｍａｘまたは最大評価値候補ＶＣｊｍａｘが受信されたか否かを判断する。受信されていない場合（ステップＳ２８０１：Ｎｏ）、ステップＳ２８０４に移行する。一方、受信された場合（ステップＳ２８０１：Ｙｅｓ）、マスタ計算機１５００は、書き込み要求された最大評価値Ｖｊｍａｘまたは最大評価値候補ＶＣｊｍａｘが、評価値テーブルＴ０に記録されているものと比較して更新する必要があるか否かを判定する（ステップＳ２８０２）。すなわち、他のスレーブ計算機ですでに計算した状態を重複して計算している場合があるため、ステップＳ２８０２を実行することになる。
【０２０６】
そして、ステップＳ２８０２において、更新する必要がない場合（ステップＳ２８０２：Ｎｏ）、ステップＳ２８０４に移行する。一方、更新する必要がある場合（ステップＳ２８０２：Ｙｅｓ）、マスタ計算機１５００は、書込み要求に含まれている最大評価値Ｖｊｍａｘまたは最大評価値候補ＶＣｊｍａｘを、評価値テーブルＴ０に書き込んで（ステップＳ２８０３）、ステップＳ２８０４に移行する。
【０２０７】
ステップＳ２８０４では、マスタ計算機１５００は、いずれかのスレーブ計算機１５０ｐから評価完了通知を受信したか否か判断する（ステップＳ２８０４）。受信されていない場合（ステップＳ２８０４：Ｎｏ）、マスタ計算機１５００は、評価値テーブルＴ０を参照して、評価済みの行動の最大評価値群の中からミニマックス候補を特定する（ステップＳ２８０５）。すなわち、マスタ計算機１５００は、最大評価値群の中から最小となる最大評価値を特定する。そして、マスタ計算機１５００は、特定したミニマックス候補で仮想ミニマックス上限Ｓｍａｘを更新する（ステップＳ２８０６）。これにより、仮想ミニマックス上限Ｓｍａｘは段階的に低下することになる。
【０２０８】
また、マスタ計算機１５００は、評価値テーブルＴ０を参照して、最大評価値候補群の中から最小となる最大評価値候補を仮想ミニマックス下限Ｓｍｉｎとして特定する（ステップＳ２８０５）。そして、マスタ計算機１５００は、特定した仮想ミニマックス下限Ｓｍｉｎで、仮想ミニマックス下限Ｓｍｉｎを更新する（ステップＳ２８０８）。
【０２０９】
このあと、マスタ計算機１５００は、Ｓｍａｘ＜Ｓｍｉｎであるか否かを判断する（ステップＳ２８０９）。すなわち、仮想ミニマックス下限Ｓｍｉｎが仮想ミニマックス上限Ｓｍａｘを上回ったか否かを判断する。Ｓｍａｘ＜Ｓｍｉｎでない場合（ステップＳ２８０９：Ｎｏ）、図２７のステップＳ２７０５に戻って、仮想ミニマックス設定処理を実行する（ステップＳ２７０５）。
【０２１０】
一方、Ｓｍａｘ＜Ｓｍｉｎである場合（ステップＳ２８０９：Ｙｅｓ）、マスタ計算機１５００は、計算終了通知を各スレーブ計算機１５０ｐに配信する（ステップＳ２８１０）。これにより、スレーブ計算機１５０ｐでの評価処理を停止させる。このあと、マスタ計算機１５００は、決定部２６０８により、仮想ミニマックス上限Ｓｍａｘをミニマックスに決定し（ステップＳ２８１１）、決定されたミニマックスを取る行動Ｂｊを出力する（ステップＳ２８１２）。これにより、一連の処理を終了する。
【０２１１】
図２９は、図２７に示した仮想ミニマックス設定処理（ステップＳ２７０５）の詳細な処理手順例を示すフローチャートである。まず、マスタ計算機１５００は、上記式（１）の左辺となるＲを算出する（ステップＳ２９０１）。そして、マスタ計算機１５００は、上記式（１）を満たすか否かを判断する（ステップＳ２９０２）。満たす場合（ステップＳ２９０２：Ｙｅｓ）、ステップＳ２９０４に移行する。一方、満たさない場合（ステップＳ２９０２：Ｎｏ）、マスタ計算機１５００は、増加量ΔＳを上記式（２）により更新して（ステップＳ２９０３）、ステップＳ２９０４に移行する。これにより、増加量ΔＳを適切な量に修正することができ、仮想ミニマックスＳｐを適切に調節することができる。
【０２１２】
また、ステップＳ２９０４では、仮想ミニマックス下限Ｓｍｉｎを初項、増加量ΔＳ、要素数Ｐで得られる等差数列を、仮想ミニマックス列｛Ｓｐ｝として生成して（ステップＳ２９０４）、ステップＳ２７０６に移行する。このように等差数列とすることで、仮想ミニマックス下限Ｓｍｉｎ〜仮想ミニマックス上限Ｓｍａｘ間のどの位置に真のミニマックスが潜んでいても、ミニマックスを突き止めることができる。また、仮想ミニマックス列｛Ｓｐ｝の再設定を繰り返すことで、仮想ミニマックス下限Ｓｍｉｎ〜仮想ミニマックス上限Ｓｍａｘの範囲が狭まるため、効率的にミニマックスを絞り込むことができる。
【０２１３】
＜スレーブ計算機１５０ｐによるミニマックス探索処理手順例＞
図３０−１は、スレーブ計算機１５０ｐによるミニマックス探索処理手順例を示すフローチャート（その１）である。まず、スレーブ計算機１５０ｐは、探索開始位置ＳＰｐの受信を待ち受け（ステップＳ３００１：Ｎｏ）、探索開始位置ＳＰｐが受信された場合（ステップＳ３００１：Ｙｅｓ）、仮想ミニマックスＳｐの受信を待ち受ける（ステップＳ３００２：Ｎｏ）。
【０２１４】
仮想ミニマックスＳｐが受信された場合（ステップＳ３００２：Ｙｅｓ）、スレーブ計算機１５０ｐは、初回の行動選択であるか否かを判断する（ステップＳ３００３）。初回の行動選択である場合（ステップＳ３００３：Ｙｅｓ）、スレーブ計算機１５０ｐは、探索開始位置ＳＰｐで指定された行動Ｂｊを選択し（ステップＳ３００４）、ステップＳ３００６に移行する。一方、初回の行動選択でない場合（ステップＳ３００３：Ｎｏ）、探索開始位置ＳＰｐで指定された行動Ｂｊが選択済みである。この場合は、最後に選択された行動の次の行動Ｂｊを選択する（ステップＳ３００５）。そして、ステップＳ３００６に移行する。
【０２１５】
ステップＳ３００６では、スレーブ計算機１５０ｐは、行動Ｂｊでの最大評価値候補ＶＣｊｍａｘが、ステップＳ３００２で受信された仮想ミニマックスＳｐ以下であるか否かを判断する（ステップＳ３００６）。ＶＣｊｍａｘ≦Ｓｐでない場合（ステップＳ３００６：Ｎｏ）、枝刈り規則が適用されるため、スレーブ計算機１５０ｐは、次の行動Ｂｊを選択して（ステップＳ３００７）、ステップＳ３００６に戻る。これにより、枝刈り規則の適用可否を繰り返しおこなうことができる。
【０２１６】
一方、ステップＳ３００３において、ＶＣｊｍａｘ≦Ｓｐである場合（ステップＳ３００６：Ｙｅｓ）、スレーブ計算機１５０ｐは、探索開始位置ＳＰｐに最も近い未評価の状態Ａｉを選択する（ステップＳ３００８）。そして、未評価状態がある場合（ステップＳ３００９：Ｙｅｓ）、スレーブ計算機１５０ｐは、行動Ｂｊに対する状態Ａｉの評価を実行する（ステップＳ３０１０）。そして、スレーブ計算機１５０ｐは、得られた評価値Ｖｉｊについて枝刈り規則が適用可能か否かを判断する（ステップＳ３００９）。
【０２１７】
枝刈り規則が適用可能でない場合（ステップＳ３０１１：Ｎｏ）、スレーブ計算機１５０ｐは、行動Ｂｊについて次の未評価状態Ａｉを選択し（ステップＳ３０１２）、ステップＳ３００９に戻る。
【０２１８】
一方、ステップＳ３０１１において、枝刈り規則が適用可能である場合（ステップＳ３０１３：Ｙｅｓ）、スレーブ計算機１５０ｐは、枝刈り発生時の評価値Ｖｉｊを行動Ｂｊの最大評価値候補ＶＣｊｍａｘとしてマスタ計算機１５００に送信して（ステップＳ３０１３）、ステップＳ３００２に戻り、あらたな仮想ミニマックスＳｐを受信するまで待機する。
【０２１９】
また、ステップＳ３００９において、未評価状態Ａｉがない場合（ステップＳ３００９：Ｎｏ）、その行動Ｂｊに対する全状態Ａ１〜Ａｎの評価値Ｖ１ｊ〜Ｖｎｊが得られたことになる。したがって、スレーブ計算機１５０ｐは、評価結果である行動Ｂｊの評価値Ｖ１ｊ〜Ｖｎｊ（評価結果群）の中から最大評価値Ｖｊｍａｘ（すなわちミニマックス候補）を特定する（ステップＳ３０１４）。そして、スレーブ計算機１５０ｐは、最大評価値Ｖｊｍａｘと評価完了通知をマスタ計算機１５００に送信して（ステップＳ３０１５）、ステップＳ３００２に戻り、あらたな仮想ミニマックスＳｐを受信するまで待機する。
【０２２０】
なお、スレーブ計算機１５０ｐでは、いかなる場合でも、マスタ計算機１５００から計算終了通知を受け付けた場合は、そのとき選択中の行動を保持しておき、途中であっても処理を終了する。
【０２２１】
このように、実施の形態３によれば、複数のスレーブ計算機１５０ｐによって状態の評価を重複なく分担して計算しつつ、仮想ミニマックス上限Ｓｍａｘと仮想ミニマックス下限Ｓｍｉｎを明らかにする。そして、ミニマックスを効率的に発見するために仮想ミニマックス上限Ｓｍａｘと仮想ミニマックス下限Ｓｍｉｎをマスタ計算機１５００からフィードバックしていくことで、効率的にミニマックスを発見することができる。
【０２２２】
また、上述した実施の形態３では、探索空間や評価値テーブルＴ０をマスタ計算機１５００とマスタ計算機１５００に共有していない場合について説明したが、マスタ計算機１５００とスレーブ計算機１５０ｐで共有することとしてもよい。具体的には、たとえば、行動Ｂｊの状態Ａｉの評価値Ｖｉｊや最大評価値候補ＶＣｊｍａｘ、最大評価値Ｖｊｍａｘが、マスタ計算機１５００とスレーブ計算機１５０ｐで共有されることになる。
【０２２３】
すなわち、あるスレーブ計算機１５０ｐで評価値Ｖｉｊが得られると、マスタ計算機１５００や他のスレーブ計算機１５０ｐに送信され、マスタ計算機１５００や他のスレーブ計算機１５０ｐにおいて未評価の場合、評価値Ｖｉｊが書き込まれることになる。同様に、あるスレーブ計算機１５０ｐで最大評価値候補ＶＣｊｍａｘが得られると、マスタ計算機１５００や他のスレーブ計算機１５０ｐに送信され、マスタ計算機１５００や他のスレーブ計算機１５０ｐにおいて書き込まれることになる。最大評価値Ｖｊｍａｘも同様である。ただし、最大評価値Ｖｊｍａｘについては、一度登録されると、更新の必要はない。
【０２２４】
また、これらの書き込み処理は、たとえば、ＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）で実行される。したがって、書き込み先の計算機のプロセッサを使わずに実行できるため、書き込み先での処理負荷の増大を抑制することができる。また、探索空間や評価値テーブルＴ０を共有する場合、ある計算機（たとえば、マスタ計算機１５００）にのみ持たせて、他の計算機が書き込んだり、読み出したりすることとしてもよい。いずれにしても、どの計算機１５００、１５０ｐも、常に最新の状態の探索空間および評価値テーブルＴ０が参照できることになる。
【０２２５】
この場合、マスタ計算機１５００について図２８−１のマスタ計算機１５００によるミニマックス探索処理手順例（後半）は、図２８−２のようになる。
【０２２６】
図２８−２は、マスタ計算機１５００によるミニマックス探索処理手順例（後半）の他の例を示すフローチャートである。図２８−２において、図２８−１と同一ステップには同一符号を付してある。図２８−２では、図２８−１において、ステップＳ２８０２を除いた処理手順である。ステップＳ２８０２に相当する処理は、スレーブ計算機１５０ｐで実行することになる。したがって、図３０−１に示したスレーブ計算機１５０ｐによるミニマックス探索処理手順例を示すフローチャート（その１）は、図３０−２のようになる。
【０２２７】
図３０−２は、スレーブ計算機１５０ｐによるミニマックス探索処理手順例を示すフローチャート（その２）である。図３０−２では、ステップＳ３００１〜Ｓ３００８までは図３０−１と同一であるため、図３０−２では省略している。また、図３０−２において、図３０−１と同一ステップには同一符号を付してある。
【０２２８】
図３０−２では、ステップＳ３０１０で行動Ｂｊに対する状態Ａｉの評価が実行されると、マスタ計算機１５００の探索空間や他のスレーブ計算機１５０ｐの探索空間に書き込む（ステップＳ３０２０）。これにより、他のスレーブ計算機１５０ｐでの重複計算を防止することができ、ミニマックス探索処理の高速化を図ることができる。
【０２２９】
また、ステップＳ３０１１で枝刈り規則が適用可能である場合（ステップＳ３０１１：Ｙｅｓ）、スレーブ計算機１５０ｐは、評価値テーブルＴ０において、枝刈り発生時の評価値Ｖｉｊを、行動Ｂｊの最大評価値候補ＶＣｊｍａｘに更新する必要があるか否かを判断する（ステップＳ３０２１）。現在登録中の最大評価値候補ＶＣｊｍａｘよりも大きい場合は更新する必要があるため（ステップＳ３０２１：Ｙｅｓ）、スレーブ計算機１５０ｐは、評価値テーブルＴ０において、枝刈り発生時の評価値Ｖｉｊを、行動Ｂｊの最大評価値候補ＶＣｊｍａｘに更新して（ステップＳ３０２２）、ステップＳ３００２に移行する。一方、現在登録中の最大評価値候補ＶＣｊｍａｘよりも大きくない場合は更新する必要がないため（ステップＳ３０２１：Ｎｏ）、ステップＳ３００７に戻り、次の行動Ｂｊを選択することになる。
【０２３０】
また、ステップＳ３０１４において、最大評価値Ｖｊｍａｘが特定されると、スレーブ計算機１５０ｐは、評価値テーブルＴ０において、最大評価値Ｖｊｍａｘを登録する必要があるか否かを判断する（ステップＳ３０２３）。行動Ｂｊについて未登録である場合は登録する必要があるため（ステップＳ３０２３：Ｙｅｓ）、スレーブ計算機１５０ｐは、評価値テーブルＴ０において、最大評価値Ｖｊｍａｘを登録し、かつ、マスタ計算機１５００に評価完了通知を送信して（ステップＳ３０２４）、ステップＳ３００２に移行する。また、ステップＳ３０２３において、登録済みである場合、登録する必要がないため（ステップＳ３０２３：Ｎｏ）、ステップＳ３００７に戻り、次の行動Ｂｊを選択することになる。
【０２３１】
このように、計算機間で情報を共有することで、他のスレーブ計算機１５０ｐでの重複計算を防止することができ、ミニマックス探索処理の高速化を図ることができる。
【０２３２】
以上説明したように、本実施の形態によれば、ミニマックスを発見するため、選択した行動Ｂｊに対して順に状態Ａｉを評価していく処理において，その行動Ｂｊの起こりうる状態Ａｉに対する評価値Ｖｉｊの最大評価値Ｖｊｍａｘがミニマックスとはなりえないと判明した段階で、枝刈りをおこなう。
【０２３３】
このように、有望ではない（ミニマックスよりも高い最大値を含む）行動Ｂｊについての評価する必要のない状態Ａｉの計算を省略することにより，効率的なミニマックス探索を実現することができる。また、発見したいミニマックスを含む行動の最大評価値の評価は省略することなくすべての状態に対して実行され、計算過程で得られるミニマックス候補を利用して計算する必要のない行動Ｂｊの計算は省略される。したがって、枝刈りをしない計算と同様に確実にミニマックスを発見しつつ、効率的な計算を実現することができる。
【０２３４】
つぎに、上述した実施の形態１〜３に示したミニマックス損失基準による行動決定問題の具体例について説明する。ここでは、運転計画作成装置を例に挙げて説明する。運転計画作成装置は、図４に示した計算機４０１に相当する。
【０２３５】
運転計画作成装置は、蓄電池を一日運転するための運転計画を修正することを見越して、修正時点以降に天候がどのように変動しても対応できるように、運転計画開始時点から修正時点までの運転計画を示す当初運転計画を作成する計算機４０１である。この運転計画開始時点は、たとえば、０時であり、修正時点は、たとえば、１３時である。なお、実施例１では、運転計画作成装置が当初運転計画を作成する場合を説明するが、本発明はこれに限定されるものではない。
【０２３６】
たとえば、運転計画作成装置は、修正時点以降の運転計画を示す修正運転計画についても当初運転計画と同様に、修正運転計画をさらに修正することを見越して作成するようにしても良い。また、運転計画開始時点及び修正時点についても、この例示に限るものではなく、運転計画作成装置を利用する者が任意の値に設定して良い。
【０２３７】
図３１は、運転計画作成装置の機能的構成例を示すブロック図である。図３１に示すように、運転計画作成装置３１００は、記憶部３１１０と、制御部３１２０とを有する。また、運転計画作成装置３１００は、入力装置３１０１と、出力装置３１０２とに接続される。
【０２３８】
入力装置３１０１は、各種情報の入力を受け付ける。たとえば、入力装置３１０１は、需要データ３１１１ａ及び日射量データ３１１２を受け付ける。また、入力装置３１０１は、作成すべき運転計画を指定する条件として、たとえば、蓄電池の運転開始時刻、運転終了時刻、および、運転計画修正時刻を受け付ける。また、たとえば、入力装置３１０１は、運転計画作成において考慮すべき日射量変動の範囲を特定する条件として、開始時刻ｔ０と、終了時刻ｔ＿ｅと、初期日照時間ｈ０と、時間刻み幅Δｔとを受け付ける。たとえば、入力装置３１０１は、キーボードやマウス、媒体読取装置などに対応する。なお、入力装置３１０１が受け付ける情報については、説明を後述する。
【０２３９】
出力装置３１０２は、各種情報を出力する。たとえば、出力装置３１０２は、後述する出力部３１２７から各種情報を受け付けて、受け付けた情報を出力する。たとえば、出力装置３１０２は、ディスプレイやモニタなどに対応する。
【０２４０】
記憶部３１１０は、需要データ３１１１ａと、需要変動シナリオ３１１１ｂと、日射量データ３１１２と、日照時間変動確率テーブル３１１３と、出力変動データ３１１４と、需給データ３１１５とを有する。また、記憶部３１１０は、最適運転評価テーブル３１１６と、当初運転計画テーブル３１１７と、修正運転評価テーブル３１１８と、対応力評価テーブル３１１９とを有する。記憶部３１１０は、たとえば、ＲＡＭ、ＲＯＭ、フラッシュメモリ等の半導体メモリ素子、磁気ディスク装置、光ディスク装置又は光磁気ディスク装置等の記憶装置に対応する。
【０２４１】
需要データ３１１１ａは、需要電力値を要素とする時系列データである。たとえば、需要データ３１１１ａは、一日における各時間帯と需要電力値とを対応づけたデータである。この需要電力値は、たとえば、過去の消費電力値の統計データから算出される。
【０２４２】
需要変動シナリオ３１１１ｂは、運転計画策定対象の１日に対する需要の推移の可能性を示す。たとえば、需要変動シナリオ３１１１ｂは、一日の時間帯ごとの需要電力値の推移を示し、需要データ３１１１ａに基づいて生成される。
【０２４３】
図３２は、需要変動シナリオの一例を示す説明図である。図３２の横軸は時間を示し、縦軸は電力量［ｋＷｈ］を示す。図３２には、ある工場における一日の需要変動シナリオ１１１ｂを例示する。図３２では、需要変動シナリオ３１１１ｂが１パタンである場合を示したが、本発明はこれに限定されるものではない。たとえば、需要変動シナリオ３１１１ｂは、曜日や時期に違いがあり、複数の推移の仕方が予想されるような場合には、Ｍパタン存在する場合もある。なお、Ｍは、自然数である。
【０２４４】
日射量データ３１１２は、所定時間ごとの過去の日射量の記録である。日射量には、たとえば、日照時間という単位で計測された値を含む。ここで、日照時間とは、直射日光が雲などに遮られずに所定の値（一般に０．１２ｋＷ／ｍ２）以上の強さで地表を照射した時間として定義される値である。たとえば、日射量データ３１１２は、２０１０年７月の１ヶ月分の日照時間と単位面積あたりの積算日射量が１時間ごとに記録されたものである。日射量データ３１１２は、たとえば、日本気象協会のデータベースから取得されるデータである。
【０２４５】
日照時間変動確率テーブル３１１３は、変動前の日照時間Ｈbeforeが単位時間過ぎた後に変動後の日照時間Ｈafterへ変動する条件付確率Ｐ（Ｈafter｜Ｈbefore）を示すテーブルである。
【０２４６】
図３３は、日照時間変動確率テーブルの一例を示す説明図である。図３３の横方向は変動前の日照時間Ｈbeforeを示し、「０．０」、「０．１−０．５」、「０．６−０．９」及び「１．０」の４項目に分類される。また、縦方向は変動後の日照時間Ｈafterを示し、「０．０」から「１．０」まで「０．１」刻みで１１項目に分類される。図３３に示すように、日照時間変動確率テーブル３１１３は、変動前の日照時間Ｈbeforeが１時間過ぎた後に変動後の日照時間Ｈafterへ変動する条件付確率Ｐ（Ｈafter｜Ｈbefore）を格納する。なお、条件付確率Ｐは、０〜１で表される値である。
【０２４７】
図３３に示すように、日照時間変動確率テーブル３１１３は、たとえば、日照時間Ｈbefore「０．０」から１時間後に日照時間Ｈafter「０．０」へ変動する条件付確率Ｐが「０．８６」であることを格納する。また、日照時間変動確率テーブル３１１３は、日照時間Ｈbefore「０．１−０．５」から１時間後に日照時間Ｈafter「０．３」へ変動する条件付確率Ｐが「０．０７」であることを格納する。また、日照時間変動確率テーブル３１１３は、他の条件付確率Ｐについても同様に格納する。なお、図３３に示した日照時間変動確率テーブル３１１３のデータ構造は一例であり、これに限定されるものではない。たとえば、変動前の日照時間Ｈbeforeを「０．０」から「１．０」まで「０．１」刻みで１１項目に分類するようにしても良い。
【０２４８】
出力変動データ３１１４は、太陽光発電による発電量を要素とする時系列データである。たとえば、出力変動データ３１１４は、一日における各時間帯と発電量とを対応づけたデータである。この出力変動データ３１１４は、たとえば、後述する需給シナリオ生成部３１２２により生成され、記憶部３１１０に格納される。たとえば、出力変動データ３１１４は、一日の時間帯ごとの太陽光発電による発電量の推移を示す出力変動シナリオを含む。この出力変動シナリオについては、説明を後述する。
【０２４９】
需給データ３１１５は、蓄電池を運用する電力網内の電力需要と、太陽光発電による出力との差を要素とする時系列データである。たとえば、需給データ３１１５は、与えられた初期状態に対してその後に起こり得る需給電力量の推移を示す需給シナリオの集合である。需給データ３１１５は、たとえば、後述する需給シナリオ生成部３１２２により生成され、記憶部１１０に格納される。なお、需給シナリオについては、説明を後述する。
【０２５０】
最適運転評価テーブル３１１６は、複数のシナリオごとに、蓄電池を運転した場合に最良の評価値である第１の評価値が得られる運転計画（以下「最適運転計画」と称する）を記憶する。たとえば、最適運転評価テーブル３１１６は、需給シナリオと、最適運転計画による評価値と、最適な制御パラメータとを対応づけて記憶する。このうち、最適運転評価テーブル３１１６の「需給シナリオ」は、需給シナリオを識別する識別情報を示す。
【０２５１】
また、最適運転計画による評価値は、需給シナリオについて様々な制御パラメータで蓄電池を運用した場合のシミュレーションを行い、シミュレーション結果から得られた評価値のうち、最良の評価値を示す。たとえば、評価値は、電力需要が所定の電力値を超えた場合に放電するピークカット方式により蓄電池が運転される場合には、ピークカット効果が用いられる。この所定の電力値は、放電基準値とも称する。また、最適な制御パラメータは、最適運転計画による評価値が得られる蓄電池の制御パラメータを示す。たとえば、制御パラメータは、ピークカット方式により蓄電池が運転される場合には、放電基準値が用いられる。
【０２５２】
なお、評価値は、ピークカット効果に限定されるものではなく、たとえば、環境負荷低減効果、コスト削減効果、あるいはこれらの値の組み合わせなどを評価値として用いても良い。また、制御パラメータは、放電基準値に限定されるものではない。たとえば、一定放電方式により蓄電池が運転される場合には、放電すべき時間帯と放電量との組み合わせが制御パラメータとなる。また、たとえば、余剰電力吸収方式により蓄電池が運転される場合には、蓄電池の初期電力量が制御パラメータとなる。以下では、ピークカット方式により蓄電池が運転され、評価値としてピークカット効果が用いられる場合を説明する。
【０２５３】
ここで、ピークカット効果について説明する。ピークカット効果は、ピークカット方式により蓄電池が運転された場合の効果を示す評価値であり、デマンド値をどれだけ下げることができたかで評価される値である。たとえば、ピークカット効果は、下記の式（３１）で表される。
【０２５４】
（ピークカット効果）＝（ピークカット対策なしデマンド値）−（ピークカット対策ありデマンド値）・・・（３１）
【０２５５】
なお、デマンド値は、３０分ごとの平均使用電力［ｋＷ］に対応し、たとえば、シミュレーションによって算出した値を用いる。たとえば、デマンド値は、下記の式（３２）で表される。
【０２５６】
（デマンド値［ｋＷ］）＝（３０分間の使用電力量［ｋＷｈ］）×２・・・（３２）
【０２５７】
図３４は、ピークカット効果を示す説明図である。図３４の横軸は時間を示し、縦軸は電力量［ｋＷｈ］を示す。図３４を用いて、シミュレーションによってピークカット効果を算出する場合を説明する。図３４に示すように、需給状況４ａは、シミュレーションによって得られたピークカット対策なしの需給状況を示す。需給状況４ａの３０分間の最大使用電力量は１５７ｋＷｈであるので、デマンド値４ｂは１５７×２＝３１４［ｋＷ］となる。
【０２５８】
ここで、ピークカット制御により蓄電池を運転することで、デマンド値４ｂをデマンド値４ｃに下げることに成功した場合には、需給状況４ａは需給状況４ｄに改善される。このデマンド値４ｃは１１８×２＝２３６［ｋＷ］であるので、ピークカット効果４ｅは３１４−２３６＝７８［ｋＷ］となる。なお、需給状況は、下記の式（３３）で表される。
【０２５９】
（需給状況［ｋＷｈ］）＝（需要電力量［ｋＷｈ］）＋（太陽光発電量［ｋＷｈ］）−（蓄電池放電量［ｋＷｈ］（又は、蓄電池充電量））・・・（３３）
【０２６０】
図３５は、図３１に示した最適運転評価テーブル３１１６の一例を示す説明図である。たとえば、最適運転評価テーブル３１１６は、需給シナリオ「１」と、最適運転計画による評価値「３６」と、最適な制御パラメータ「２７８」とを対応づけて記憶する。つまり、最適運転評価テーブル３１１６は、需給シナリオ「１」に対して最良の放電基準値は２７８［ｋＷ］であり、この放電基準値で蓄電池を運転した場合のピークカット効果が３６［ｋＷ］であることを示す。
【０２６１】
また、最適運転評価テーブル３１１６は、他の需給シナリオについても同様に、需給シナリオと、最適運転計画による評価値と、最適な制御パラメータとを対応づけて記憶する。なお、最適運転計画による評価値は、第１の評価値の一例である。また、式（３３）において、蓄電池充電量を用いる場合には、該当する項は＋の項になる。
【０２６２】
図３６は、図３１に示した当初運転計画テーブル３１１７の一例を示す説明図である。当初運転計画テーブル３１１７は、当初運転計画と、制御パラメータとを対応づけて記憶する。このうち、当初運転計画テーブル３１１７の「当初運転計画」は、当初運転計画の候補を識別する識別情報を示す。また、「制御パラメータ」は、当初運転計画の制御パラメータを示す。たとえば、制御パラメータは、ピークカット方式により蓄電池が運転される場合には、放電基準値に対応する。
【０２６３】
たとえば、当初運転計画テーブル３１１７は、当初運転計画「１」と、制御パラメータ「５０」とを対応づけて記憶する。つまり、当初運転計画テーブル３１１７は、当初運転計画「１」の放電基準値が５０［ｋＷ］であることを示す。また、当初運転計画テーブル３１１７は、他の当初運転計画の候補についても同様に、当初運転計画と、制御パラメータとを対応づけて記憶する。
【０２６４】
図３７は、図３１に示した修正運転評価テーブル３１１８の一例を示す説明図である。修正運転評価テーブル３１１８は、当初運転計画と、需給シナリオと、当初運転計画に対する最適修正運転計画の評価値とを対応づけて記憶する。このうち、修正運転評価テーブル３１１８の「当初運転計画」は、当初運転計画の候補を識別する識別情報を示す。また、「需給シナリオ」は、需給シナリオを識別する識別情報を示す。また、「当初運転計画Ｑに対する最適修正運転計画の評価値」は、対応する当初運転計画について、修正時点以降の最適な運転計画を示す最適修正運転計画で蓄電池が運転された場合の評価値を需給シナリオごとに示す。
【０２６５】
たとえば、修正運転評価テーブル３１１８は、当初運転計画「１」と、需給シナリオ「１」と、当初運転計画Ｑに対する最適修正運転計画の評価値「３４」とを対応づけて記憶する。つまり、修正運転評価テーブル３１１８は、需給シナリオ「１」に対して当初運転計画「１」で蓄電池が運転された後に最適修正運転計画で蓄電池が運転された場合の評価値が「３４」であることを示す。
【０２６６】
また、修正運転評価テーブル３１１８は、当初運転計画「１」について、他の需給シナリオと、他の当初運転計画に対する最適修正運転計画の他の評価値とを対応づけて記憶する。このように、修正運転評価テーブル３１１８は、一つの当初運転計画に対して、複数の需給シナリオと、複数の当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて記憶する。そして、修正運転評価テーブル３１１８は、他の当初運転計画についても同様に、当初運転計画と、需給シナリオと、当初運転計画に対する最適修正運転計画の評価値とを対応づけて記憶する。なお、当初運転計画に対する最適修正運転計画の評価値は、第２の評価値の一例である。
【０２６７】
図３８は、図３１に示した対応力評価テーブル３１１９の一例を示す説明図である。対応力評価テーブル３１１９は、当初運転計画と、需給シナリオと、当初運転計画に対する対応力評価とを対応づけて記憶する。このうち、対応力評価テーブル３１１９の「当初運転計画」は、当初運転計画の候補を識別する識別情報を示す。また、「需給シナリオ」は、需給シナリオを識別する識別情報を示す。
【０２６８】
また、「当初運転計画に対する対応力評価」は、対応する当初運転計画について、需給シナリオごとに算出されるリグレット値を示す。このリグレット値は、各需給シナリオに対する最適修正運転計画の評価値が、各シナリオに対する最適な運転計画による評価値にどれだけ近づくかという観点から評価される値であり、リグレット値が低いほど高い対応力であることを示す。
【０２６９】
たとえば、対応力評価テーブル３１１９は、当初運転計画「１」と、需給シナリオ「１」と、当初運転計画に対する対応力評価「２」とを対応づけて記憶する。つまり、対応力評価テーブル３１１９は、需給シナリオ「１」に対して当初運転計画「１」で蓄電池が運転された場合の対応力の評価値が「２」であることを示す。
【０２７０】
また、対応力評価テーブル３１１９は、当初運転計画「１」について、他の需給シナリオと、他の需給シナリオに対する対応力評価とを対応づけて記憶する。このように、対応力評価テーブル１１９は、一つの当初運転計画に対して、複数の需給シナリオと、複数の対応力評価とを対応づけて記憶する。そして、対応力評価テーブル３１１９は、他の当初運転計画についても同様に、当初運転計画と、需給シナリオと、当初運転計画に対する対応力評価とを対応づけて記憶する。
【０２７１】
図３１の説明に戻る。制御部３１２０は、受付部３１２１と、需給シナリオ生成部３１２２と、最適評価値算出部３１２３と、修正評価値算出部３１２４と、対応力算出部３１２５と、最適計画選択部３１２６と、出力部３１２７とを有する。
【０２７２】
受付部３１２１は、入力装置３１０１から各種情報を受け付ける。たとえば、受付部３１２１は、需要データ３１１１ａ及び日射量データ３１１２を入力装置３１０１から受け付けて、受け付けた需要データ３１１１ａ及び日射量データ３１１２を記憶部３１１０に格納する。
【０２７３】
また、たとえば、受付部３１２１は、運転計画作成において考慮すべき日射量変動の範囲を特定する条件として、開始時刻ｔ０と、終了時刻ｔ＿ｅと、初期日照時間ｈ０と、時間刻み幅Δｔとを入力装置３１０１から受け付ける。ここで、開始時刻ｔ０及び終了時刻ｔ＿ｅは、天候の変動の影響により、考慮すべき程度以上に発電出力が変動する可能性がある時間帯、すなわち、晴天時であれば十分な発電出力が期待できる時間帯の開始時刻及び終了時刻にそれぞれ対応する。
【０２７４】
たとえば、開始時刻ｔ０は９時であり、終了時刻ｔ＿ｅは１５時である。また、初期日照時間ｈ０は、当初運転計画の作成対象となる日の開始時刻ｔ０における日射量であり、たとえば、前日の天気予報によって予想される開始時刻ｔ０における天候に基づいて算出される。たとえば、開始時刻ｔ０における天候が「晴れ」と予想される場合には、初期日照時間ｈ０は「１」である。なお、ここでは、受付部１２１が初期日照時間ｈ０を受け付ける場合を説明したが、これに限定されるものではない。
【０２７５】
たとえば、受付部３１２１は、初期日射量を受け付けても良い。そして、日射量を日照時間に変換することで、初期日照時間ｈ０が算出される。この変換には、たとえば、各月ごとの日照時間と日射量との間の相関関係を用いる。具体的には、日照時間と日射量との回帰分析を行い、得られた回帰直線の式を用いることで、日照時間を算出する。また、時間刻み幅Δｔは、日射量データ３１１２に記録された日照時間の時間間隔に対応する。たとえば、時間刻み幅Δｔは、１時間である。そして、受付部３１２１は、受け付けた開始時刻ｔ０と、終了時刻ｔ＿ｅと、初期日照時間ｈ０と、時間刻み幅Δｔとを需給シナリオ生成部３１２２に出力する。
【０２７６】
需給シナリオ生成部３１２２は、需給電力値の推移の可能性を示す複数のシナリオを生成する。たとえば、需給シナリオ生成部３１２２は、日射量データ３１１２に基づいて単位時間当たりの天候変動をマルコフ過程としてモデル化した天候変動モデルを構築する。需給シナリオ生成部３１２２は、構築した天候変動モデルに基づいてモンテカルロシミュレーションを行うことで、複数の出力変動シナリオＯを発生する。
【０２７７】
そして、需給シナリオ生成部３１２２は、複数の出力変動シナリオＯと、需要データ３１１１ａによって示される需要変動シナリオとの差をとることで、複数の需給シナリオを生成する。ここで、需給シナリオとは、蓄電池を運用する電力網内の電力需要と、太陽光発電による出力との差を要素とする時系列データである。なお、需給シナリオ生成部１２２は、生成部の一例である。また、需給電力値は、蓄電池を運用する電力網内の電力需要と、太陽光発電による出力との差に対応し、需給差、又は需給バランスとも称される。また、需給シナリオは、シナリオの一例である。
【０２７８】
以下において、需給シナリオ生成部３１２２が実行する処理について詳細に説明する。たとえば、需給シナリオ生成部３１２２は、日射量データ３１１２から日照時間変動確率テーブル３１１３を生成する。具体的には、需給シナリオ生成部３１２２は、ある時刻の日照時間がその直前の時刻の日照時間の影響を受けるものと仮定して、単位時間ごとの日照時間の変動をマルコフ過程としてモデル化する。
【０２７９】
ここで、需給シナリオ生成部３１２２が日照時間の変動をマルコフ過程としてモデル化できるのは、日照時間が雲の影響を受け、曇の量や密度などの状態が時間に伴って連続的に変化すると考えられるからである。すなわち、雲の状態の連続的な変化を捉えられる程度の時間間隔で計測された日照時間は、直前の時刻の天候の影響を受けるものと考えられるからである。
【０２８０】
図３９は、天候変動モデルの説明図である。たとえば、図３９に示すように、需給シナリオ生成部３１２２は、天候を晴れ、曇り、雨の３種類に分類する。そして、需給シナリオ生成部１２２は、現在の天候から１時間後の天候（晴れ、曇り、雨の３種類）に変動する確率を、過去の天候が記録されたデータから算出することで、天候変動モデルを生成する。需給シナリオ生成部３１２２は、１時間毎に天候変動モデルを繰り返し適用することで、一日の天候変動の可能性を示すシナリオを複数出力する。なお、図３９に示した天候変動モデルは一例である。より詳細には、需給シナリオ生成部３１２２は、天候を日照時間によって分類し、それぞれの日照時間の後にどのように日照時間が変化するかをモデル化している。
【０２８１】
たとえば、需給シナリオ生成部３１２２は、日射量データ３１１２に基づいて、日照時間Ｈbeforeが単位時間過ぎた後に日照時間Ｈafterへ変動する条件付確率Ｐ（Ｈafter｜Ｈbefore）を、下記の式（３４）を用いて計算する。
【０２８２】
Ｐ（Ｈafter｜Ｈbefore）＝（日照時間Ｈbeforeの後に日照時間Ｈafterが出現するデータ数）/（日照時間Ｈbeforeが出現するデータ数）・・・（３４）
【０２８３】
上記の式（３４）を利用して過去の日射量データ３１１２から条件付確率Ｐ（Ｈafter｜Ｈbefore）を計算することで、需給シナリオ生成部３１２２は、図３３に示した日照時間変動確率テーブル３１１３を生成する。
【０２８４】
たとえば、需給シナリオ生成部３１２２は、生成した日照時間変動確率テーブル３１１３に基づいて、複数の出力変動シナリオを生成する。具体的には、需給シナリオ生成部１２２は、開始時刻ｔ０と、終了時刻ｔ＿ｅと、初期日照時間ｈ０と、時間刻み幅Δｔとを受付部１２１から受け付ける。需給シナリオ生成部１２２は、初期日照時間ｈ０を初期値とし、開始時刻ｔ０から終了時刻ｔ＿ｅまでに対して単位時間ごとに日照時間変動確率テーブル１１３を適用することで、確率的にＮパタンの日射量変動シナリオをモンテカルロシミュレーションによって発生する。なお、Ｎは、十分に大きい自然数であり、たとえば、１００００である。
【０２８５】
たとえば、需給シナリオ生成部３１２２は、一様乱数ｒを発生させ、ｘ以下の条件付確率Ｐ（ｘ｜Ｈ（ｔ））の積算値がｒより大きくなる最小のｘをＨ（ｔ＋Δｔ）とする。たとえば、需給シナリオ生成部３１２２は、日照時間Ｈ（ｔ）が「０．１」の場合には、図３に示した日照時間変動確率テーブル３１１３の変動前の日照時間が「０．１−０．５」の列を参照する。
【０２８６】
そして、需給シナリオ生成部１２２は、発生した乱数が「ｒ＜０．４５」の場合には、「Ｈ（ｔ＋Δｔ）＝０．０」を取得し、乱数が「０．４５≦ｒ＜０．６」の場合には、「Ｈ（ｔ＋Δｔ）＝０．１」を取得する。このように、需給シナリオ生成部１２２は、開始時刻ｔ０から終了時刻ｔ＿ｅまでの間に、時間刻み幅Δｔごとに変動する日照時間Ｈ（ｔ＋Δｔ）を取得する。
【０２８７】
そして、需給シナリオ生成部３１２２は、上述した日照時間と日射量と間の相関関係を用いて、取得した日照時間Ｈ（ｔ＋Δｔ）を日射量Ｉ（ｔ＋Δｔ）に変換する。そして、需給シナリオ生成部３１２２は、開始時刻ｔ０から終了時刻ｔ＿ｅまでの日射量Ｉ（ｔ）の変動を、日射量変動シナリオＩとして生成する。また、需給シナリオ生成部３１２２は、同様の処理を繰り返し実行することで、Ｎパタンの日射量変動シナリオＩを生成する。なお、Ｎは、十分に大きい自然数であり、たとえば、１００００である。
【０２８８】
図４０は、日射量変動シナリオの一例を示す説明図である。図４０の横軸は時間を示し、縦軸は日射量［ＭＪ／ｍ２］を示す。日射量変動シナリオＩのうち９時から１６時までの時間帯は、９時から１６時までの日射量の変動を示す日射量変動シナリオＩであり、Ｎパタンのシナリオを含む。また、０時から９時までの時間帯及び１６時から２４時までの時間帯は、過去の日射量データ３１１２に基づいて生成される部分であり、１パタンのシナリオを含む。
【０２８９】
たとえば、需給シナリオ生成部３１２２は、生成した日射量変動シナリオＩに基づいて、太陽光発電における出力変動シナリオＯを生成する。たとえば、需給シナリオ生成部３１２２は、日射量変動シナリオＩに含まれる日射量Ｉ（ｔ）［ＭＪ／ｍ２］を太陽光発電による発電量Ｏ（ｔ）［ｋＷｈ］に変換する。この変換は、たとえば、パネルの規模や種類、気温などによって変化する変換効率に日射量を対応づけて発電量を見積もることによって行う。
【０２９０】
このように、需給シナリオ生成部３１２２は、日射量変動シナリオＩに含まれる日射量Ｉ（ｔ）から発電量Ｏ（ｔ）を算出することで、開始時刻ｔ０から終了時刻ｔ＿ｅまでのシナリオを生成する。また、たとえば、需給シナリオ生成部３１２２は、太陽光発電の発電量の過去のデータを参照し、各時間帯における発電量の平均値を算出することで、０時から開始時刻ｔ０までの発電量及び終了時刻ｔ＿ｅから２４時までのシナリオを生成する。
【０２９１】
そして、需給シナリオ生成部３１２２は、開始時刻ｔ０から終了時刻ｔ＿ｅまでのシナリオと、０時から開始時刻ｔ０までの発電量及び終了時刻ｔ＿ｅから２４時までのシナリオとを組み合わせることで、一日の出力変動シナリオＯを生成する。また、需給シナリオ生成部３１２２は、生成した出力変動シナリオＯを出力変動データ１１４として記憶部１１０に格納する。なお、ここでは、変換効率を用いる場合を説明したが、これに限定されるものではない。たとえば、日射量Ｉ（ｔ）と発電量Ｏ（ｔ）と間の相関関係を用いても良い。具体的には、日射量Ｉ（ｔ）と発電量Ｏ（ｔ）との回帰分析を行い、得られた回帰直線の式に日射量Ｉ（ｔ）を代入することで発電量Ｏ（ｔ）を算出する。
【０２９２】
たとえば、需給シナリオ生成部３１２２は、複数の出力変動シナリオＯと、図３２に示した需要変動シナリオとの差をとることで、複数の需給シナリオを生成する。たとえば、需給シナリオ生成部３１２２は、需要変動シナリオにおける各時間帯の需要電力値から、出力変動シナリオＯにおいて対応する時間帯の発電量を減算することで、需給シナリオを生成する。つまり、この需給シナリオは、蓄電池に対する需要電力量の指標となる。
【０２９３】
図４１は、需給シナリオの一例を示す説明図である。図４１の横軸は時間を示し、縦軸は電力量［ｋＷｈ］を示す。この電力量が多いほど、需要が多いことを示す。図４１に示すように、需給シナリオは、一日の時間帯ごとの需給電力量の推移を示す。たとえば、需給シナリオ生成部３１２２は、Ｍパタンの需要変動シナリオとＮパタンの出力変動シナリオとを用いた場合には、Ｍ×Ｎパタンの需給シナリオを生成する。また、需給シナリオ生成部３１２２は、生成した需給シナリオを需給データ３１１５として記憶部３１１０に格納する。
【０２９４】
図３１の説明に戻る。最適評価値算出部３１２３は、シナリオごとに、蓄電池を運転した場合の評価値が最良の評価値となる運転計画を算出し、その最良の評価値を各シナリオに対する第１の評価値として記録する。たとえば、最適評価値算出部３１２３は、需給シナリオ生成部３１２２により生成された需給シナリオのそれぞれに対して、シミュレーションによる評価値が最良となる運転計画である最適運転計画を作成する。そして、最適評価値算出部３１２３は、需給シナリオと、最適運転計画による評価値と、最良の評価値を示した最適な制御パラメータとを対応づけて、図３５に示した最適運転評価テーブル３１１６に格納する。なお、最適評価値算出部３１２３は、第１の算出部の一例である。
【０２９５】
以下において、最適評価値算出部３１２３が行う最適運転計画作成処理について詳細に説明する。ここでは、蓄電池がピークカット方式により運転される場合を説明する。たとえば、最適評価値算出部３１２３は、需給シナリオ生成部３１２２により生成された需給シナリオを一つずつ選択し、以下の処理を行う。
【０２９６】
最適評価値算出部３１２３は、選択した需給シナリオについて、様々な放電基準値を適用してシミュレーションを行って評価値を算出する。この放電基準値は、たとえば、制御パラメータの探索範囲に含まれる放電基準値を、所定の刻み幅で順に適用する。そして、評価値が最良になる放電基準値を最適運転計画として選択する。ここで、制御パラメータの探索範囲について説明する。
【０２９７】
図４２は、制御パラメータの探索範囲について説明するための図である。図４２の横軸は時間を示し、縦軸は電力量［ｋＷｈ］を示す。図４２には、図４１に示した需給シナリオに対する制御パラメータの探索範囲を示す。ピークカット方式により蓄電池が運転される場合には、放電基準値は需給シナリオの最大デマンド値を超えない正の値である。このため、図４２に示す例では、最適評価値算出部３１２３は、最大デマンド値１２ａから電力値０［ｋＷ］までの範囲を探索範囲１２ｂとして用いる。つまり、最適評価値算出部３１２３は、探索範囲１２ｂから任意の電力値を放電基準値として選択し、選択した放電基準値をシミュレーションに用いる。なお、たとえば、放電基準値１２ｃは１２５［ｋＷ］であり、放電基準値１２ｄは１００［ｋＷ］であり、放電基準値１２ｅは７５［ｋＷ］である。
【０２９８】
たとえば、最適評価値算出部３１２３は、探索範囲１２ｂに含まれる放電基準値のうち最も高い放電基準値１５７［ｋＷ］を選択し、選択した放電基準値１５７［ｋＷ］で蓄電池を運転した場合のシミュレーションを行う。最適評価値算出部１２３は、次の放電基準値として、刻み幅１［ｋＷ］低い値を選択し、同様にシミュレーションを行うという処理を、探索範囲１２ｂの下限まで繰り返す。
【０２９９】
最適評価値算出部３１２３は、シミュレーションで得られた放電基準値のうち最良のピークカット効果を示す放電基準値を最適運転計画として選択する。そして、最適評価値算出部３１２３は、需給シナリオと、最良のピークカット効果と、最良のピークカット効果を示す放電基準値とを対応づけて、最適運転評価テーブル３１１６に格納する。なお、最良のピークカット効果は最適運転計画による評価値に対応し、最良のピークカット効果を示す放電基準値は最適な制御パラメータに対応する。
【０３００】
また、最適評価値算出部３１２３は、他の需給シナリオについても同様の処理を実行することで、最適運転評価テーブル３１１６を生成する。なお、最適評価値算出部３１２３が行う最適運転計画の探索処理は、上記の方法に限定されるものではない。たとえば、探索範囲１２ｂに含まれる放電基準値のうち最も低い放電基準値０［ｋＷ］から順に、１［ｋＷ］間隔で放電基準値を選択するようにしても良い。また、たとえば、放電基準値を５［ｋＷ］間隔で選択するようにしても良い。あるいは、Ｐａｒｔｉｃｌｅ  Ｓｗａｒｍ  Ｏｐｔｉｍｉｚａｔｉｏｎや遺伝的アルゴリズムなどの最適化アルゴリズムを用いて、最適計画を探索しても良い。
【０３０１】
修正評価値算出部３１２４は、複数の運転計画候補を作成し、それぞれの運転計画候補について、各シナリオに対してその運転計画候補で計画修正時刻まで前記蓄電池を運転した場合に得られる第２の評価値を算出する。たとえば、修正評価値算出部３１２４は、当初運転計画の候補を複数作成する。そして、修正評価値算出部３１２４は、作成した当初運転計画について、その計画で修正時点まで蓄電池を運転し、その後の状態（蓄電池残量）で、修正時点以降の最適な運転計画を示す最適修正運転計画で蓄電池が運転された場合の評価値を、需給シナリオごとに算出する。なお、修正評価値算出部３１２４は、第２の算出部の一例である。
【０３０２】
以下において、修正評価値算出部３１２４が行う処理について詳細に説明する。まず、修正評価値算出部３１２４は、当初運転計画の候補を作成する。たとえば、修正評価値算出部３１２４は、図３５に示した最適運転評価テーブル３１１６の最適な制御パラメータのうち最小値から最大値の範囲で当初運転計画の候補を作成する。
【０３０３】
これは、ピークカット方式により蓄電池が運転される場合には、各需給シナリオに対するピークカット効果は、放電基準値がその需給シナリオに対して最適な放電基準値から乖離するに従って減少し、一定以上乖離すると０になるという性質があるからである。たとえば、修正評価値算出部３１２４は、５０［ｋＷ］から１０［ｋＷ］間隔で１５０［ｋＷ］までの放電基準値を当初運転計画の候補として作成する。
【０３０４】
そして、修正評価値算出部３１２４は、当初運転計画と制御パラメータとを対応づけて、図３６に示した当初運転計画テーブル３１１７に格納する。なお、当初運転計画の候補は当初運転計画に対応し、放電基準値は制御パラメータに対応する。なお、当初運転計画の候補の作成方法は、上記の方法に限定されるものではない。たとえば、修正評価値算出部３１２４は、図４２に示した探索範囲１２ｂで任意に作成しても良い。
【０３０５】
次に、修正評価値算出部３１２４は、各当初運転計画候補について、最適な修正運転計画を作成する。たとえば、修正評価値算出部３１２４は、各需給シナリオについて当初運転計画候補で蓄電池が運用された場合のシミュレーションを行う。修正評価値算出部３１２４は、シミュレーション結果から蓄電池が修正時刻まで運用された場合の蓄電池残量を算出する。そして、算出した蓄電池残量を蓄電池の初期残量として、修正時刻から運転終了時刻まで運転した場合に最良の評価値となる最適な運転計画を作成し、当初運転計画候補とシナリオの組み合わせに対する最適修正運転計画として記録する。この最適修正運転計画作成処理は、前記の最適評価値算出部３１２３が行う最適運転計画作成処理と同様の手順で実施する。
【０３０６】
次に、修正評価値算出部３１２４は、修正時刻までは当初運転計画候補で、修正時刻以降は最適修正運転計画で、蓄電池を運転した場合の評価値を算出し、その評価値を、当初運転計画候補と各シナリオの組み合わせに対する第２の評価値として、図３７に示した修正運転評価テーブル３１１８に格納する。また、修正評価値算出部３１２４は、他の当初運転計画についても同様に処理を実行する。あるいは、Ｐａｒｔｉｃｌｅ  Ｓｗａｒｍ  Ｏｐｔｉｍｉｚａｔｉｏｎや遺伝的アルゴリズムなどの最適化アルゴリズムを用いて、最適計画を探索しても良い。
【０３０７】
対応力算出部３１２５は、運転計画候補ごとに、各シナリオについて第１の評価値と第２の評価値との差分を算出する。たとえば、対応力算出部３１２５は、図３５の最適運転評価テーブル３１１６に示した最適運転計画による評価値と、図３７の修正運転評価テーブル３１１８に示した当初運転計画Ｑに対する最適修正運転計画の評価値との差分を算出することで、対応力を評価する。すなわち、対応力算出部３１２５は、各需給シナリオに対する最適修正運転計画の評価値が、各シナリオに対する最適な運転計画による評価値にどれだけ近づくかという観点から、対応力を評価する。なお、対応力算出部３１２５は、第３の算出部の一例である。
【０３０８】
たとえば、対応力算出部３１２５は、下記の式（３５）を用いて、リグレット値を算出する。たとえば、対応力算出部３１２５は、リグレット値が低いほど高い対応力であると評価する。
【０３０９】
（リグレット値）＝（最適運転計画による評価値）−（当初運転計画に対する最適修正運転計画の評価値）・・・（３５）
【０３１０】
たとえば、対応力算出部３１２５は、当初運転計画と、需給シナリオと、当初運転計画に対する対応力評価とを対応づけて、図３８に示した対応力評価テーブル３１１９に格納する。なお、リグレット値は、当初運転計画に対する対応力評価に対応する。対応力算出部１２５は、他の当初運転計画についても同様に処理を実行する。
【０３１１】
最適計画選択部３１２６は、第１の評価値と第２の評価値との差分に基づいて、複数の運転計画から蓄電池の運転計画を選択する。たとえば、最適計画選択部３１２６は、当初運転計画の候補ごとにリグレット値の分布を集計し、集計したリグレット値の分布に基づいて、当初運転計画を選択する。なお、最適計画選択部３１２６は、選択部の一例である。
【０３１２】
図４３〜図４５は、リグレット値の分布の一例を示す図である。図４３〜図４５の横軸はリグレット値を示し、縦軸はリグレット値に対応する需給シナリオの割合を示す。図４３には、当初運転計画Ａのリグレット値の分布を例示する。図４３に示すように、当初運転計画Ａは、最良のリグレット値が２１であり、最悪のリグレット値が４２である。図４４には、当初運転計画Ｂのリグレット値の分布を例示する。図４４に示すように、当初運転計画Ｂは、最良のリグレット値が０であり、最悪のリグレット値が７である。図４５には、当初運転計画Ｃのリグレット値の分布を例示する。図４５に示すように、当初運転計画Ｃは、最良のリグレット値が０であり、最悪のリグレット値が１９である。
【０３１３】
ここで、図４３に示した当初運転計画Ａと、図４４に示した当初運転計画Ｂとをワルド基準で比較する場合を説明する。このワルド基準とは、それぞれの運転計画にとって最悪のシナリオにおける評価値（最悪評価値）が最良の運転計画を選択するという基準である。当初運転計画Ａは、最良のリグレット値が２１であるのに対して、当初運転計画Ｂは、最悪でもリグレット値が７である。
【０３１４】
したがって、当初運転計画Ｂは、どの需給シナリオを想定しても、当初運転計画Ａと比較して最適に近い効果が期待できる対応力の高い運転計画である。このため、最適計画選択部１２６は、ワルド基準で比較した場合には、当初運転計画Ｂを選択する。なお、このようにリグレット値をワルド基準で選択する場合、サベッジの基準又はミニマックス損失基準という。
【０３１５】
また、図４４に示した当初運転計画Ｂと、図４５に示した当初運転計画Ｃとをワルド基準で比較する場合を説明する。当初運転計画Ｃは、当初運転計画Ｂに比べ、平均リグレット値は低いものの、高いリグレット値をとる需給シナリオが少数存在する運転計画である。すなわち、当初運転計画Ｃは、当初運転計画Ｂに比べ、発生確率が高い需給シナリオにおいて最適な運転計画と近い効果を期待できる一方、稀に大きな損失が発生する可能性がある運転計画であると言える。
【０３１６】
したがって、当初運転計画Ｂは、どの需給シナリオを想定しても、当初運転計画Ｃと比較して最適に近い効果が期待できる対応力の高い運転計画である。このため、最適計画選択部３１２６は、ワルド基準で比較した場合には、当初運転計画Ｂを選択する。なお、最適計画選択部３１２６が当初運転計画を選択する基準は、ワルド基準に限定されるものではない。たとえば、最適計画選択部３１２６は、平均リグレット値が最良のものを選択するという基準で当初運転計画を選択しても良い。この場合、最適計画選択部３１２６は、平均リグレット値が当初運転計画Ｂよりも低い当初運転計画Ｃを選択する。
【０３１７】
また、たとえば、最適計画選択部３１２６は、リグレット値の分散が最小のものを選択するという基準で当初運転計画を選択しても良い。この場合、最適計画選択部３１２６は、当初運転計画Ｂ及びＣのリグレット値の分散をそれぞれ算出し、算出したリグレット値の分散をそれぞれ比較する。ここで、当初運転計画Ｂのリグレット値の分散が最小である場合には、最適計画選択部３１２６は、当初運転計画Ｂを選択する。また、たとえば、最適計画選択部３１２６は、上述した選択基準を組み合わせて用いても良い。たとえば、最適計画選択部３１２６は、最悪のリグレット値が所定値を下回り、かつ、平均リグレット値が所定値を上回る当初運転計画を選択するようにしても良い。
【０３１８】
出力部３１２７は、出力装置３１０２に各種情報を出力する。たとえば、出力部３１２７は、最適計画選択部３１２６により選択された最良の当初運転計画を出力装置３１０２に出力する。なお、出力部３１２７が出力する情報は、最良の当初運転計画のみに限定されるものではない。たとえば、出力部１２７は、最適計画選択部３１２６により選択された当初運転計画とともに需給シナリオを出力する。
【０３１９】
次に、運転計画作成装置３１００の処理手順について説明する。図４６は、運転計画作成装置の処理手順を示すフローチャートである。図４６に示す処理は、たとえば、受付部３１２１が開始時刻ｔ０と、終了時刻ｔ＿ｅと、初期日照時間ｈ０と、時間刻み幅Δｔとを受け付けたことを契機として実行される。
【０３２０】
図４６に示すように、需給シナリオ生成部３１２２は、複数の需給シナリオを生成する（ステップＳ４６０２）。ここで、図４７を用いて、図４６のステップＳ４６０２に示した需給シナリオの生成処理の処理手順について説明する。
【０３２１】
図４７は、需給シナリオの生成処理（ステップＳ４６０２）の処理手順を示すフローチャートである。図４７に示すように、需給シナリオ生成部３１２２は、日射量データ３１１２から日照時間変動確率テーブル３１１３を生成する（ステップＳ４７０１）。需給シナリオ生成部１２２は、時刻ｔ、日射量Ｉを初期化する（ステップＳ４７０２）。つまり、需給シナリオ生成部３１２２は、時刻ｔ＝ｔ０、日射量Ｉ（ｔ）＝ｈ０とする。
【０３２２】
需給シナリオ生成部３１２２は、時間刻み幅Δｔ後の時刻の日射量Ｉ（ｔ＋Δｔ）を決定する（ステップＳ４７０３）。需給シナリオ生成部３１２２は、初期日照時間ｈ０を初期値とし、時間刻み幅Δｔ後の時刻の日照時間Ｈ（ｔ＋Δｔ）を取得する。需給シナリオ生成部３１２２は、上述した日照時間と日射量との間の相関関係を用いて、取得した日照時間Ｈ（ｔ＋Δｔ）を日射量Ｉ（ｔ＋Δｔ）に変換する。
【０３２３】
需給シナリオ生成部３１２２は、現在の時刻ｔに時間刻み幅Δｔを加算する（ステップＳ４７０４）。需給シナリオ生成部３１２２は、時刻ｔと終了時刻ｔ＿ｅとを比較し、ｔ＜ｔ＿ｅであるか否かを判定する（ステップＳ４７０５）。ｔ＜ｔ＿ｅである場合には（ステップＳ４７０５，Ｙｅｓ）、需給シナリオ生成部３１２２は、ステップＳ４７０３の処理に戻る。需給シナリオ生成部３１２２は、日射量変動シナリオＩを発生するまで、ステップＳ４７０３からステップＳ４７０５までの処理を繰り返す。
【０３２４】
一方、ｔ＜ｔ＿ｅでない場合には（ステップＳ４７０５：Ｎｏ）、需給シナリオ生成部３１２２は、日射量変動シナリオＩに基づいて、出力変動シナリオＯを生成する（ステップＳ４７０６）。なお、需給シナリオ生成部３１２２は、Ｎパタンの出力変動シナリオＯを生成するまでステップＳ４７０２からステップＳ４７０６までの処理を繰り返す。そして、需給シナリオ生成部３１２２は、Ｎパタンの出力変動シナリオＯと、Ｍパタンの需要変動シナリオとの差をとることで、Ｍ×Ｎパタンの需給シナリオを生成する（ステップＳ４７０７）。
【０３２５】
図４６の説明に戻る。最適評価値算出部３１２３は、需給シナリオ生成部３１２２により生成された複数の需給シナリオそれぞれに対して、シミュレーションによる評価値が最良となる最適運転計画を作成する（ステップＳ４６０３）。そして、最適評価値算出部３１２３は、需給シナリオと、最適運転計画による評価値と、最良の評価値を示した最適な制御パラメータとを対応づけて、最適運転評価テーブル３１１６に格納する。
【０３２６】
修正評価値算出部３１２４は、当初運転計画の候補を作成する（ステップＳ４６０４）。修正評価値算出部３１２４は、作成した当初運転計画の候補について、修正時点以降の最適な運転計画を示す最適修正運転計画を作成する（ステップＳ４６０５）。そして、修正評価値算出部３１２４は、最適修正運転計画で蓄電池が運転された場合の評価値を需給シナリオごとに算出する。
【０３２７】
修正評価値算出部３１２４は、終了条件を満たさない場合には（ステップＳ４６０６：Ｎｏ）、ステップＳ４６０４の処理に戻る。たとえば、修正評価値算出部３１２４は、作成したすべての当初運転計画の候補について処理を終了していない場合に、ステップＳ４６０４の処理に戻る。また、たとえば、修正評価値算出部３１２４は、評価値を計算した当初運転計画の候補と需給シナリオとの組み合わせに基づいて、次に評価すべき有力な当初運転計画の候補が推定される場合には、ステップＳ４６０４の処理に戻る。
【０３２８】
一方、終了条件を満たす場合には（ステップＳ４６０６，Ｙｅｓ）、最適計画選択部３１２６は、当初運転計画を選択する（ステップＳ４６０７）。
【０３２９】
ここで、図４８を用いて、図４６のステップＳ４６０７に示した当初運転計画の選択処理の処理手順について説明する。図４８は、当初運転計画の選択処理の処理手順を示すフローチャートである。
【０３３０】
図４８に示すように、対応力算出部３１２５は、当初運転計画の各需給シナリオに対する対応力を計算する（ステップＳ４８０１）。つまり、対応力算出部３１２５は、最適運転評価テーブル３１１６に記録した最適運転計画による評価値と、修正運転評価テーブル３１１８に記録した当初運転計画Ｑに対する最適修正運転計画の評価値との差分を算出することで、対応力を評価する。
【０３３１】
最適計画選択部３１２６は、当初運転計画の候補ごとに対応力の分布を集計する（ステップＳ４８０２）。そして、最適計画選択部３１２６は、集計した対応力の分布に基づいて、当初運転計画を選択する（ステップＳ４８０３）。
【０３３２】
次に、運転計画作成装置３１００の効果について説明する。運転計画作成装置３１００は、需給電力値の推移の可能性を示す複数のシナリオを生成する。運転計画作成装置３１００は、シナリオごとに、蓄電池を運転した場合に最良の評価値である第１の評価値が得られる運転計画を算出する。運転計画作成装置３１００は、運転計画候補ごとに、各シナリオに対してその計画で蓄電池を運転した場合に得られる第２の評価値を算出する。
【０３３３】
運転計画作成装置３１００は、複数の運転計画候補ごとに、各シナリオについて第１の評価値と第２の評価値との差分を算出する。運転計画作成装置３１００は、差分に基づいて、複数の運転計画から蓄電池の運転計画を選択する。このため、運転計画作成装置１００は、天候がどのように変動しても対応できる運転計画を作成することができる。
【０３３４】
すなわち、天候変動によって起こり得る需給電力値の推移の可能性を表現する複数のシナリオを用い、また、各シナリオに対する最良の評価値である第１の評価値を基準に、当初運転計画候補を評価しているので、その当初運転計画で修正時刻まで運転した後で、適切に運転計画を修正すれば、いずれのシナリオが実現しても、そのシナリオに対して最適な運転計画で当初から運転した場合に近い効果が得られるような、対応力の高い当初運転計画を選択できる。
【０３３５】
また、運転計画作成装置３１００は、太陽光発電の出力が大きく変動する状況でも、過去の天候データにおける変動の発生確率に応じて発電出力変動シナリオに含めるようにモデル化し、需給シナリオを発生する。このため、運転計画作成装置３１００は、太陽光発電による出力が急激に変動する可能性を含めて運転計画を評価し、評価の高い運転計画を選択できる。
【０３３６】
すなわち、たとえば、従来技術ではピークカット方式で蓄電池を運転する場合に、蓄電池残量が少ないと、比較的小幅な短時間の出力低下にも対応できず、大きな損失を生ずることがあった。これに対して、運転計画作成装置３１００は、このような小規模の出力低下の影響を含めて運転計画を評価できるので、太陽光発電による出力変動の影響を受けにくい対応力の高い運転計画を選択できる。
【０３３７】
また、たとえば、運転計画作成装置３１００は、選択した当初運転計画とともに需給シナリオを出力する。具体的には、運転計画作成装置３１００は、選択した当初運転計画のうち、リグレット値が大きい方から所定割合に含まれる需給シナリオを抽出し、抽出した需給シナリオを出力する。このため、運転計画作成装置３１００は、出力した需給シナリオについて、蓄電池の制御方式の改良や、蓄電池の残量不足を補完する予備発電設備の導入など、損失を回避する可能性を具体的に検討することを支援することができる。
【０３３８】
また、たとえば、運転計画作成装置３１００は、選択した当初運転計画に対して、リグレット値が大きい方から所定割合に含まれる需給シナリオを抽出し、抽出した需給シナリオを出力する。運転計画作成装置３１００は、抽出した需給シナリオについて、選択された当初運転計画で修正時刻まで蓄電池を運転した場合の蓄電池残量を示す予想蓄電池残量を算出する。
【０３３９】
運転計画作成装置３１００は、抽出した需給シナリオに対して最良の運転計画で修正時刻まで蓄電池を運転した場合の蓄電池残量を示す理想蓄電池残量を算出する。ここで、予想蓄電池残量と理想蓄電池残量との差分は、損失回避のために補完すべき電力の総量に相当する。このため、運転計画作成装置１００は、導入効果が期待できる予備発電設備の規模の概算見積もりを行うことができる。
【０３４０】
たとえば、上記の例では、ピークカット効果を用いて運転計画を評価する場合を説明したが、これに限定されるものではない。たとえば、環境負荷低減効果やコスト削減効果を用いて運転計画を評価しても良い。
【０３４１】
ここで、環境負荷低減効果について説明する。環境負荷低減効果は、太陽光発電や蓄電池の利用によりＣＯ2をどれだけ削減することができたかを評価するものである。たとえば、環境負荷低減効果は、下記の式（３６）で表される。
【０３４２】
（環境負荷低減効果）＝（昼の発電に対するＣＯ2換算係数）×（昼の使用電力削減量）−（夜の発電に対するＣＯ2換算係数）×（夜間電力使用量）・・・（３６）
【０３４３】
なお、昼の発電に対するＣＯ2換算係数は、たとえば、０．４６２［ｋｇ−ＣＯ2／ｋＷｈ］であり、夜の発電に対するＣＯ2換算係数は、たとえば、０．４３５［ｋｇ−ＣＯ2／ｋＷｈ］である。これは、参考文献「温対法に基づく事業者別排出係数の算出方法等に係る検討会事務局「季時別平均排出係数の導入について（平成２１年３月２７日）」」に基づくものである。また、ここに示した換算係数は一例であり、任意の値を用いることができる。以下において、環境負荷低減効果を用いた場合の最適運転評価テーブル３１１６と、修正運転評価テーブル３１１８と、対応力評価テーブル３１１９とを例示する。
【０３４４】
図４９は、環境負荷低減効果を用いた場合の最適運転評価テーブルの一例を示す説明図である。たとえば、最適運転評価テーブル３１１６は、需給シナリオ「１」と、最適運転計画による評価値「１７」と、最適な制御パラメータ「２７８」とを対応づけて記憶する。つまり、最適運転評価テーブル１１６は、需給シナリオ「１」に対して最良の放電基準値は２７８［ｋＷ］であり、この放電基準値で蓄電池を運転した場合の環境負荷低減効果が１７ｋｇ−ＣＯ2であることを示す。また、最適運転評価テーブル３１１６は、他の需給シナリオについても同様に、需給シナリオと、最適運転計画による評価値と、最適な制御パラメータとを対応づけて記憶する。
【０３４５】
図５０は、環境負荷低減効果を用いた場合の修正運転評価テーブルの一例を示す説明図である。たとえば、修正運転評価テーブル３１１８は、当初運転計画「１」と、需給シナリオ「１」と、当初運転計画Ｑに対する最適修正運転計画の評価値「１６」とを対応づけて記憶する。つまり、修正運転評価テーブル１１８は、需給シナリオ「１」に対して当初運転計画「１」で蓄電池が運転された後に、最適修正運転計画で蓄電池が運転された場合の環境負荷低減効果が１６［ｋｇ−ＣＯ2］であることを示す。
【０３４６】
また、修正運転評価テーブル３１１８は、当初運転計画「１」について、他の需給シナリオと、他の当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて記憶する。このように、修正運転評価テーブル３１１８は、一つの当初運転計画に対して、複数の需給シナリオと、複数の当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて記憶する。そして、修正運転評価テーブル３１１８は、他の当初運転計画についても同様に、当初運転計画と、需給シナリオと、当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて記憶する。
【０３４７】
ここで、図５０に示す当初運転計画１〜Ｑが、実施の形態１〜３における行動Ｂ１〜Ｂｍに該当する。また、需給シナリオ１〜Ｍ×Ｎが、実施の形態１〜３における状態Ａ１〜Ａｎに該当する。したがって、たとえば、計算機４０２から行動Ｂ１に対する状態Ａ１の評価値Ｖ１１のリクエストが計算機４０１に送信された場合、計算機４０１から評価値Ｖ１１＝１６［ｋｇ−ＣＯ2］が計算機４０２に送信されることになる。
【０３４８】
図５１は、対応力評価テーブル３１１９の一例を示す説明図である。たとえば、対応力評価テーブル３１１９は、当初運転計画「１」と、需給シナリオ「１」と、当初運転計画Ｑに対する対応力評価「１」とを対応づけて記憶する。つまり、対応力評価テーブル１１９は、需給シナリオ「１」に対して当初運転計画「１」で蓄電池が運転された場合に、環境負荷低減効果の理想値との乖離が１［ｋｇ−ＣＯ2］であることを示す。
【０３４９】
また、対応力評価テーブル３１１９は、当初運転計画「１」について、他の需給シナリオと、他の当初運転計画Ｑに対する対応力評価とを対応づけて記憶する。このように、対応力評価テーブル３１１９は、一つの当初運転計画に対して、複数の需給シナリオと、複数の当初運転計画Ｑに対する対応力評価とを対応づけて記憶する。そして、対応力評価テーブル１１９は、他の当初運転計画についても同様に、当初運転計画と、需給シナリオと、当初運転計画Ｑに対する対応力評価とを対応づけて記憶する。
【０３５０】
ここで、図５１に示す当初運転計画１〜Ｑが、実施の形態１〜３における行動Ｂ１〜Ｂｍに該当する。また、需給シナリオ１〜Ｍ×Ｎが、実施の形態１〜３における状態Ａ１〜Ａｎに該当する。したがって、たとえば、計算機４０２から行動Ｂ１に対する状態Ａ１の評価値Ｖ１１のリクエストが計算機４０１に送信された場合、計算機４０１から評価値Ｖ１１＝１［ｋｇ−ＣＯ2］が計算機４０２に送信されることになる。
【０３５１】
このように、運転計画作成装置３１００は、環境負荷低減効果を用いた場合にも、需給シナリオと、最適運転計画による評価値と、最良の評価値を示した最適な制御パラメータとを対応づけて、図４９に示した最適運転評価テーブル３１１６に格納する。また、運転計画作成装置３１００は、当初運転計画と、需給シナリオと、当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて、図５０に示した修正運転評価テーブル３１１８に格納する。
【０３５２】
また、運転計画作成装置３１００は、図４９の最適運転評価テーブル３１１６に示した最適運転計画による評価値と、図５０の修正運転評価テーブル３１１８に示した当初運転計画Ｑに対する最適修正運転計画の評価値との差分を算出することで、対応力を評価する。このため、運転計画作成装置３１００は、天候がどのように変動しても最良の環境負荷低減効果に近い効果が得られる運転計画を作成することができる。
【０３５３】
また、コスト削減効果について説明する。コスト削減効果は、太陽光発電や蓄電池の利用によりコストをどれだけ削減することができたかを金額に換算して評価するものである。たとえば、コスト削減効果は、下記の式（３７）で表される。
【０３５４】
（コスト削減効果）＝（１ｋＷｈあたりの電力使用料金）×｛（対策前の使用電力量）−（対策後の使用電力量）｝＋｛（対策前の基本料金）−（対策後の基本料金）｝・・・（３７）
【０３５５】
なお、基本料金は最大デマンド値から算出され、たとえば、電力会社ごとに設定される料金である。以下において、コスト削減効果を用いた場合の最適運転評価テーブル３１１６と、修正運転評価テーブル３１１８と、対応力評価テーブル３１１９とを例示する。
【０３５６】
図５２は、コスト削減効果を用いた場合の最適運転評価テーブル３１１６の一例を示す説明図である。たとえば、最適運転評価テーブル３１１６は、需給シナリオ「１」と、最適運転計画による評価値「３６」と、最適な制御パラメータ「２７８」とを対応づけて記憶する。つまり、最適運転評価テーブル３１１６は、需給シナリオ「１」に対して最良の放電基準値は２７８［ｋＷ］であり、この放電基準値で蓄電池を運転した場合のコスト削減効果が３６００万円であることを示す。また、最適運転評価テーブル３１１６は、他の需給シナリオについても同様に、需給シナリオと、最適運転計画による評価値と、最適な制御パラメータとを対応づけて記憶する。
【０３５７】
図５３は、コスト削減効果を用いた場合の修正運転評価テーブル３１１８の一例を示す説明図である。たとえば、修正運転評価テーブル３１１８は、当初運転計画「１」と、需給シナリオ「１」と、当初運転計画Ｑに対する最適修正運転計画の評価値「３４」とを対応づけて記憶する。つまり、修正運転評価テーブル３１１８は、需給シナリオ「１」に対して当初運転計画「１」で蓄電池が運転された後に、最適修正運転計画で蓄電池が運転された場合のコスト削減効果が３４００万円であることを示す。
【０３５８】
また、修正運転評価テーブル３１１８は、当初運転計画「１」について、他の需給シナリオと、他の当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて記憶する。このように、修正運転評価テーブル３１１８は、一つの当初運転計画に対して、複数の需給シナリオと、複数の当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて記憶する。そして、修正運転評価テーブル３１１８は、他の当初運転計画についても同様に、当初運転計画と、需給シナリオと、当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて記憶する。
【０３５９】
ここで、図５３に示す当初運転計画１〜Ｑが、実施の形態１〜３における行動Ｂ１〜Ｂｍに該当する。また、需給シナリオ１〜Ｍ×Ｎが、実施の形態１〜３における状態Ａ１〜Ａｎに該当する。したがって、たとえば、計算機４０２から行動Ｂ１に対する状態Ａ１の評価値Ｖ１１のリクエストが計算機４０１に送信された場合、計算機４０１から評価値Ｖ１１＝３４［万円］が計算機４０２に送信されることになる。
【０３６０】
図５４は、対応力評価テーブル３１１９の一例を示す図である。たとえば、対応力評価テーブル３１１９は、当初運転計画「１」と、需給シナリオ「１」と、当初運転計画Ｑに対する対応力評価「２」とを対応づけて記憶する。つまり、対応力評価テーブル３１１９は、需給シナリオ「１」に対して当初運転計画「１」で蓄電池が運転された場合に、コスト削減効果の理想値との乖離が２００万円であることを示す。
【０３６１】
また、対応力評価テーブル３１１９は、当初運転計画「１」について、他の需給シナリオと、他の当初運転計画Ｑに対する対応力評価とを対応づけて記憶する。このように、対応力評価テーブル３１１９は、一つの当初運転計画に対して、複数の需給シナリオと、複数の当初運転計画Ｑに対する対応力評価とを対応づけて記憶する。そして、対応力評価テーブル３１１９は、他の当初運転計画についても同様に、当初運転計画と、需給シナリオと、当初運転計画Ｑに対する対応力評価とを対応づけて記憶する。
【０３６２】
ここで、図５４に示す当初運転計画１〜Ｑが、実施の形態１〜３における行動Ｂ１〜Ｂｍに該当する。また、需給シナリオ１〜Ｍ×Ｎが、実施の形態１〜３における状態Ａ１〜Ａｎに該当する。したがって、たとえば、計算機４０２から行動Ｂ１に対する状態Ａ１の評価値Ｖ１１のリクエストが計算機４０１に送信された場合、計算機４０１から評価値Ｖ１１＝２［万円］が計算機４０２に送信されることになる。
【０３６３】
このように、運転計画作成装置３１００は、コスト削減効果を用いた場合にも、需給シナリオと、最適運転計画による評価値と、最良の評価値を示した最適な制御パラメータとを対応づけて、図５２に示した最適運転評価テーブル３１１６に格納する。また、運転計画作成装置３１００は、当初運転計画と、需給シナリオと、当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて、図５３に示した修正運転評価テーブル３１１８に格納する。
【０３６４】
また、運転計画作成装置３１００は、図５２の最適運転評価テーブル３１１６に示した最適運転計画による評価値と、図５３の修正運転評価テーブル３１１８に示した当初運転計画Ｑに対する最適修正運転計画の評価値との差分を算出することで、対応力を評価する。このため、運転計画作成装置３１００は、天候がどのように変動しても最良のコスト削減効果に近い効果が得られる運転計画を作成することができる。
【０３６５】
また、上述した例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。たとえば、図３１において、最適計画選択部３１２６の処理が自動的に行われる場合を説明したが、この処理は手動的に行うこともできる。
【０３６６】
具体的には、最適計画選択部３１２６は、当初運転計画候補ごとの対応力の分布を示す図を出力装置３１０２に出力させることで、利用者に最良の運転計画を手動的に選択させることもできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。たとえば、図３５に示した最適運転評価テーブルは、必ずしも最適な制御パラメータを記憶しなくても良い。
【０３６７】
また、図３１に示した運転計画作成装置３１００の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、運転計画作成装置３１００の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。たとえば、図３１に示した最適評価値算出部３１２３及び修正評価値算出部３１２４を統合して構成することができる。
【０３６８】
また、上述した例では蓄電池運転計画について説明してきたが、行動計画は蓄電池に限らず、需要の推移に合わせて機器の稼動状態を調節することが効果的な機器の運転計画を作成する場合にも適用できる。そこで、以下では、通信需要の推移にあわせて、通信基地局の稼動台数を調整する運転計画を、運転計画の通信基地局の運転に必要なエネルギー低減の観点で最適化する例を説明する。まず、図５５〜５９を使って、本実施例で想定する運転計画の作成について説明する。
【０３６９】
図５５は、通信基地局の運転台数調整の例を示す説明図である。図５５において、７個の六角形で構成される領域が、通信基地局でカバーすべき領域である。最も左のＭｏｄｅ１は、対象領域全体を１台の基地局でカバーすることを示しており、同様に、その右のＭｏｄｅ４は、４台の基地局で、Ｍｏｄｅ７は、７台の基地局でカバーすることを示している。
【０３７０】
本例では、図５６のように、予め設定されている時間帯毎に、上記３つのモードのいずれで運転するかを指定したものを運転計画と呼ぶ。そして、１日の中で予想される通信需要の推移のいずれが実現しても、予めその推移が起きることが分かっていた場合に達成できる最小のエネルギーに近いエネルギーで運転できるような、運転計画を求めることを目的とする。
【０３７１】
図５７は、１日の通信需要の推移の典型的なデータ例を示す説明図である。この推移に基づき、本例では、図５６に示した５つの時間帯にわけ、それぞれの時間帯では、図５５の中のいずれか１つを選択して運転することを想定している。なお、それぞれの時間帯は、０−６時は、通信需要が少ない時間帯、６−１０時は、通信需要が増加傾向にある時間帯、１０−１４時は、比較的高いレベルで通信需要が安定している時間帯、１４−１８時は、ピークに向かい増加する時間帯、１８−２４時は、ピークから需要が減少していく時間帯に相当する。
【０３７２】
図５８は、通信需要と、その対応に要するエネルギー量（単位時間あたりの消費電力量）の関係を、それぞれの運転モード毎に示す説明図である。横軸は、通信需要の量である。通信需要の指標としては、単位時間（たとえば数分程度）あたりのユーザ（モバイル端末）の発呼回数や通信量などの色々な指標や、それらの指標の組み合わせなどが考えられるが、本例では、説明を簡略化するため、単位時間あたりの発呼回数を用いている。
【０３７３】
縦軸は、通信需要の対応に要するエネルギー量を、１時間あたりに基地局が消費する電力量を単位に示している。たとえば、単位時間あたり２０回程度発呼されるような状態が１時間続いた場合には、Ｍｏｄｅ１では、その対応に１．５［ｋＷｈ］程度の電力を、Ｍｏｄｅ４では、Ｍｏｄｅ１より大きい３［ｋＷｈ］程度の電力を消費することを示している。同様に、３５回程度以上発呼されるようになると、Ｍｏｄｅ４の方が、Ｍｏｄｅ１より少ない消費電力量ですむことがわかる。本実施例の運転計画作成では、このように通信需要によってエネルギー効率との関係が異なる運転モードを、各時間帯内で予想される通信需要の推移を考慮して適切に選択するというのが１つのポイントになる。
【０３７４】
図５９は、本実施例の運転計画作成で考慮するもう１つのエネルギー量である、運転モード切り替えに要するコストの例を示す説明図である。たとえば、最初の行は、Ｍｏｄｅ１からＭｏｄｅ４に機器を切り替えるためのコストであり、図５５のＣ（１，４）に相当する。本例では、このコストデータは、過去の実績データ、もしくは、模擬実験等により、予め利用可能になっていることを前提とする。
【０３７５】
次に、以上で説明した通信基地局の運転計画の作成結果について説明する。本例で想定する運転計画の候補の範囲は、前述の図５６で示したものでる。これは、図６０に示した探索範囲を網羅したものである。図６０の探索範囲は、図５７に例示した通信需要の推移をベースに、考慮に値する運転モードを各時間帯別に選択したものである。なお、図５７の探索範囲を考慮せずに、すべてのモードの組み合わせを運転計画の候補としてもかまわない。
【０３７６】
以下では、６−１０時の時間帯の直前に、６−１０時の運転モードを決定することを例に、処理手順を説明する。まず、本例では、前記の太陽光発電出力変動シナリオと同様の手順で、起こり得る通信需要の推移のシナリオを生成する。
【０３７７】
図６１は、通信需要シナリオ生成のための変動確率テーブルの例を示す説明図である。図６１の横方向に示した「０−２０」、「２０−４０」、「４０−６０」、「６０−８０」、「８０−」は、それぞれ単位時間あたりの発呼回数に対応する。Ｎ（μ，σ）は、平均値μ、標準偏差σの正規分布に従いランダムに発生した値を、変動後の値として用いることを示している。この表の確率値およびσ1〜σ５の値は、過去の通信需要データの統計分析により算出すればよい。
【０３７８】
なお、前記の太陽光発電出力変動シナリオ生成では、１つの変動確率テーブルを使用していたが、本例では、前記の５つの時間帯毎に、図６１のような変動確率テーブルを、過去データに基づき作成し、使用する。また、現在説明の例では、６−１０時の運転モード（６時から翌６時までの運転計画）を作成するので、通信需要生成用の初期値としては、６時の直前の通信需要の値を使用する。
【０３７９】
次に、作成した複数の通信需要シナリオのそれぞれについて、需給シナリオに対する蓄電池の最適運転計画作成と同様の手順で、最適な運転計画（通信機の運転モードの切り替え計画）を作成する。最適運転計画の作成に必要な運転計画の評価では、以下の式に基づき計算した評価値を用いる。
【０３８０】
（消費電力量）＝Σｉ（Σｔ  Ｅ（Ｄ＿ｔ，Ｍｏｄｅ＿ｉ））＋Σｉ  Ｃ（Ｍｏｄｅ＿ｉ，Ｍｏｄｅ＿（ｉ＋１））・・・（３８）
【０３８１】
式（３８）において、ｉは、前述の時間帯のそれぞれに対するインデックスであり、ｔは、各時間帯における単位時間（たとえば１０分）刻みの時刻に対応するインデックスである。なお、今回の例では、６−１０時を最初の時間帯として、翌日の０−６時を最後の時間帯として扱う。Ｄ＿ｔは、ｔに対応する時刻における通信需要値であり、これは、評価対象の通信シナリオによって決まる値である。
【０３８２】
Ｍｏｄｅ＿ｉは、評価対象の運転計画において、時間帯ｉに対応して指定された運転モードである。Ｅ（Ｄ＿ｔ，Ｍｏｄｅ＿ｉ）は、Ｄ＿ｔの通信需要値が単位時間継続した時に、Ｍｏｄｅ＿ｉの運転モードで消費される電力量であり、その値は、図５８のデータによって算出する。また、Ｃ（）は、前記の運転モード切替のコストであり、その値は３０のデータによって算出する（運転モードの切り替えがない場合には０）。なお、ここで算出された消費電力量が評価値に対応する。つまり、この評価値は、低い方が良い値となる。
【０３８３】
図６２は、作成した最適な運転計画の例を示す説明図である。図６２において、「最適運転計画」の列の先頭の数字は、運転計画ＩＤである。また、カッコ内は、説明用に補足した情報で、６−１０時の時間帯を先頭に、翌日０−６時の時間帯までの運転モードの切り替えを方を示している。たとえば、ＩＤ１４で示される運転計画は、６−１０時にＭｏｄｅ４、１０−１４時にＭｏｄｅ４、１４−１８時にＭｏｄｅ７、１８−２４時にＭｏｄｅ４、翌０−６時にＭｏｄｅ１でそれぞれ運転されることを示す。
【０３８４】
最後に、６−１０時の時間帯の運転モードの２つの候補Ｍｏｄｅ１とＭｏｄｅ４について、各通信需要シナリオが実現した場合の評価値を、蓄電池の当初運転計画の評価と同様の手順で算出する。評価に利用する評価値の計算式は、上記の式（３８）と同一である。たとえば、候補Ｍｏｄｅ１について通信需要シナリオ「１」が実現した場合の評価値は、２０４である。
【０３８５】
そして、ここで算出された評価値と最適運転計画による評価値との差分がリグレット値に対応する。たとえば、候補Ｍｏｄｅ１について通信需要シナリオ「１」が実現した場合のリグレット値は、２０４−１６０＝４４となる。また、今回の例では、各シナリオに対する最適運転計画の６−１０時の時間帯の運転モードが、評価対象の運転モードと一致している場合は、リグレット値は０になるので、シミュレーションは省略できる。
【０３８６】
図６３は、評価結果を示す説明図である。この評価結果に基づき、たとえば、通信需要シナリオに対する評価値の中で最悪のものが、最良の運転計画（６−１０時の運転モード）を選ぶことで、いずれの通信需要シナリオが実現しても、１０時に運転計画を修正すれば、予めその推移が起きることが分かっていた場合に達成できる最小のエネルギーに近いエネルギーで運転できることが保障される。
【０３８７】
ここで、図６３に示す６−１０時の運転モードが、実施の形態１〜３における行動Ｂ１〜Ｂｍに該当する。また、通信需給シナリオ１〜Ｍ×Ｎが、実施の形態１〜３における状態Ａ１〜Ａｎに該当する。したがって、たとえば、計算機４０２から行動Ｂ１に対する状態Ａ１の評価値Ｖ１１のリクエストが計算機４０１に送信された場合、計算機４０１から運転モード「１」の通信需給シナリオ「１」の評価値Ｖ１１＝２０４［ｋＷｈ］が計算機４０２に送信されることになる。このように、実施の形態１〜３では、様々な行動計画を適用することができる。
【符号の説明】
【０３８８】
４０１，４０２  計算機
６０１  選択部
６０２  取得部
６０３  特定部
６０４  決定部
６０５  制御部
６０６  出力部
１１０１  選択部
１１０２  取得部
１１０３  特定部
１１０４  制御部
１１０５  第１の決定部
１１０６  判断部
１１０７  第２の決定部
１１０８  出力部
１１０９  設定部
１１１０  追加部
１１１１  判定部
１１１２  更新部
１２００  評価済み状態テーブル
１５００  マスタ計算機
１５０１，１５０２  スレーブ計算機
２５０１  受信部
２５０２  選択部
２５０３  取得部
２５０４  第１の特定部
２５０５  制御部
２５０６  第２の特定部
２５０７  送信部
２６０１  設定部
２６０２  配信部
２６０３  受信部
２６０４  格納部
２６０５  検出部
２６０６  更新部
２６０７  判定部
２６０８  決定部
２６０９  出力部
【図１】
2013042213.tif 000003
【図２】
2013042213.tif 000004
【図３】
2013042213.tif 000005
【図４】
2013042213.tif 000006
【図５】
2013042213.tif 000007
【図６】
2013042213.tif 000008
【図７】
2013042213.tif 000009
【図８】
2013042213.tif 000010
【図９】
2013042213.tif 000011
【図１０】
2013042213.tif 000012
【図１１】
2013042213.tif 000013
【図１２】
2013042213.tif 000014
【図１３】
2013042213.tif 000015
【図１４】
2013042213.tif 000016
【図１５】
2013042213.tif 000017
【図１６】
2013042213.tif 000018
【図１７】
2013042213.tif 000019
【図１８】
2013042213.tif 000020
【図１９】
2013042213.tif 000021
【図２０】
2013042213.tif 000022
【図２１】
2013042213.tif 000023
【図２２】
2013042213.tif 000024
【図２３】
2013042213.tif 000025
【図２４】
2013042213.tif 000026
【図２５】
2013042213.tif 000027
【図２６】
2013042213.tif 000028
【図２７】
2013042213.tif 000029
【図２８−１】
2013042213.tif 000030
【図２８−２】
2013042213.tif 000031
【図２９】
2013042213.tif 000032
【図３０−１】
2013042213.tif 000033
【図３０−２】
2013042213.tif 000034
【図３１】
2013042213.tif 000035
【図３２】
2013042213.tif 000036
【図３３】
2013042213.tif 000037
【図３４】
2013042213.tif 000038
【図３５】
2013042213.tif 000039
【図３６】
2013042213.tif 000040
【図３７】
2013042213.tif 000041
【図３８】
2013042213.tif 000042
【図３９】
2013042213.tif 000043
【図４０】
2013042213.tif 000044
【図４１】
2013042213.tif 000045
【図４２】
2013042213.tif 000046
【図４３】
2013042213.tif 000047
【図４４】
2013042213.tif 000048
【図４５】
2013042213.tif 000049
【図４６】
2013042213.tif 000050
【図４７】
2013042213.tif 000051
【図４８】
2013042213.tif 000052
【図４９】
2013042213.tif 000053
【図５０】
2013042213.tif 000054
【図５１】
2013042213.tif 000055
【図５２】
2013042213.tif 000056
【図５３】
2013042213.tif 000057
【図５４】
2013042213.tif 000058
【図５５】
2013042213.tif 000059
【図５６】
2013042213.tif 000060
【図５７】
2013042213.tif 000061
【図５８】
2013042213.tif 000062
【図５９】
2013042213.tif 000063
【図６０】
2013042213.tif 000064
【図６１】
2013042213.tif 000065
【図６２】
2013042213.tif 000066
【図６３】
2013042213.tif 000067
【手続補正書】
【提出日】平成26年3月19日(2014.3.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の行動を含む行動群と、前記行動群に含まれる各行動に対応した複数の状態を含む状態群とを記憶する記憶装置と、
前記行動群から行動を選択し、選択された行動に対応する状態を前記状態群から選択する選択部と、
前記選択部が選択した状態の評価を示す評価値を取得する取得部と、
選択された行動ごとに、前記取得部が取得した評価値の中から、評価が最も低い最低評価値を特定する特定部と、
ある行動に対応して選択された全状態の評価値の中の最低評価値をミニマックス候補として決定し、各行動に対応する最低評価値のうち最も評価の高い評価値をミニマックスとして決定する決定部と、
前記ミニマックス候補の決定後に他の行動に対応して選択される各状態の評価値と前記ミニマックス候補とを評価値の取得の度に比較し、前記評価値が前記ミニマックス候補よりも評価の低いものである場合には、前記選択部を制御して当該行動に対応する状態の選択を打ち切り、前記行動群に含まれる未選択の行動の中から行動を選択させる制御部と、
前記決定部が決定したミニマックスに対応する行動を出力する出力部と、
を備えることを特徴とする計算機。
【請求項２】
行動群の行動ごとに状態群の各状態を指定可能な探索空間と任意の値をとる仮想ミニマックスとを記憶する記憶装置と、
前記記憶装置に記憶されている探索空間内の行動群から行動を順次選択し、選択された行動に対する状態群の各状態を順次選択する選択部と、
前記選択された行動に対して選択された状態の評価値を順次取得して、前記探索空間に記憶する取得部と、
前記選択された行動ごとに前記取得部が前記状態群の評価値群を取得した場合、前記選択された行動ごとに前記評価値群の中から最大評価値を特定する特定部と、
前記選択された行動および前記選択された状態の評価値が前記仮想ミニマックス以下である場合、前記選択された行動に対し未選択の状態を前記選択部に選択させ、前記選択された行動および前記選択された状態の評価値が前記仮想ミニマックスよりも大きい場合、前記選択部を制御して選択中の行動に対し未選択の状態の選択を打ち切って、未選択の行動を前記選択部に選択させる制御部と、
前記選択の打ち切りが発生しなかった行動について前記特定された最大評価値群のうち最小評価値をミニマックス候補に決定する第１の決定部と、
選択すべき行動がない場合、いずれかの行動について前記選択の打ち切りが発生したか否かを判断する判断部と、
前記選択の打ち切りが発生しなかった行動があると判断された場合、前記選択の打ち切りが発生しなかった行動について前記決定されたミニマックス候補を、ミニマックスに決定する第２の決定部と、
前記ミニマックスが決定された行動を出力する出力部と、
を有することを特徴とする計算機。
【請求項３】
前記計算機はさらに、
各行動について前記選択の打ち切りが発生したと判断された場合、前記選択の打ち切りが発生したときの前記行動群の評価値群の中の最小評価値を前記仮想ミニマックスの下限を示す仮想ミニマックス下限に設定する設定部と、
前記各行動について前記選択の打ち切りが発生したと判断された場合、前記仮想ミニマックスに所定の増加量を追加する追加部と、
前記設定された仮想ミニマックス下限が前記所定の増加量追加後の仮想ミニマックスよりも大きいか否かを判定する判定部と、
前記判定部が前記仮想ミニマックス下限が前記所定の増加量追加後の仮想ミニマックスよりも大きいと判定した場合、前記仮想ミニマックスを、前記所定の増加量追加後の仮想ミニマックスから前記仮想ミニマックス下限に更新する更新部を有することを特徴とする請求項２記載の計算機。
【請求項４】
前記計算機において、
前記選択部は、
前記更新部が前記所定の増加量追加後の仮想ミニマックスから前記仮想ミニマックス下限に更新した場合、前記行動群から行動を順次々選択するとともに、前記選択された行動に対する状態群の各状態を順次々選択し、
前記取得部は、
前記選択部が再選択した行動に対して順次々選択した状態の評価値のうち未取得の評価値を順次取得し、
前記特定部は、
前記選択部が順次々選択した行動ごとに、前記選択部が前記状態群の評価値群を取得した場合、順次々選択された行動ごとに前記評価値群の中から最大評価値を特定し、
前記制御部は、
前記選択された行動および前記選択された状態の評価値が前記仮想ミニマックス以下であると前記判断部が判断した場合、前記選択された行動に対し未選択の状態を前記選択部に選択させ、前記選択された行動および前記選択された状態の評価値が前記更新された仮想ミニマックスよりも大きいと前記判断部が判断した場合、前記選択された行動に対し未選択の状態の選択を打ち切って、前記選択部に未選択の行動を選択させることを特徴とする請求項３記載の計算機。
【請求項５】
行動ごとに最大評価値候補および最大評価値の記憶領域を指定する第１の記憶装置を有するマスタ計算機と、行動群の行動ごとに状態群の各状態を指定可能な探索空間を記憶する第２の記憶装置を有するスレーブ計算機と、がネットワークを介して通信可能な計算機システムであって、
スレーブ計算機は、
前記第２の記憶装置に記憶されている探索空間内の行動および状態のうち、いずれかの行動および状態を指定する開始位置および任意の値をとる仮想ミニマックスを前記マスタ計算機から受信する受信部と、
前記受信部によって受信された開始位置で指定される行動から順次選択し、選択された行動に対し前記開始位置で指定される状態から順次選択する選択部と、
前記選択部によって選択された行動に対して選択された状態の評価値を順次取得する取得部と、
選択された行動ごとに前記取得部によって前記状態群の評価値群が取得された場合、選択された行動ごとに前記評価値群の中から最大評価値を特定する第１の特定部と、
選択中の行動および状態の評価値が前記仮想ミニマックス以下である場合、前記選択部を制御して選択中の行動に対し未選択の状態を選択し、選択中の行動および状態の評価値が前記仮想ミニマックスよりも大きい場合、前記選択部を制御して選択中の行動に対し未選択の状態の選択を打ち切って、未選択の行動を選択する制御部と、
選択中の行動に対し選択の打ち切りが発生した場合、打ち切りが発生したときの評価値を選択中の行動での最大評価値候補として特定する第２の特定部と、
選択中の行動に対して特定された最大評価値または最大評価値候補を前記マスタ計算機に送信し、いずれかの行動の最大評価値が得られた場合、または、各行動の最大評価値候補が得られた場合、評価完了通知を前記マスタ計算機に送信する送信部と、を備え、
前記マスタ計算機は、
行動群の行動ごとに状態群の各状態を指定可能な探索空間のうちいずれかの行動および状態で指定された開始位置と、任意の値をとる仮想ミニマックスとを、スレーブ計算機ごとに異なるように設定し、複数のスレーブ計算機での仮想ミニマックス群の下限となる仮想ミニマックス下限と、前記仮想ミニマックス群の上限となる仮想ミニマックス上限と、を設定する設定部と、
前記設定部によって前記スレーブ計算機ごとに設定された開始位置および仮想ミニマックスを、前記各スレーブ計算機に配信する配信部と、
前記送信部によって前記各スレーブ計算機から送信されてきた最大評価値または最大評価値候補を、前記第１の記憶装置内の該当する行動の記憶領域に書き込む格納部と、
前記複数のスレーブ計算機のうちいずれかのスレーブ計算機からの評価完了通知を検出する検出部と、
前記検出部によって評価完了通知が検出された場合、前記仮想ミニマックス下限を、前記第１の記憶装置に記憶されている最大評価値候補群のうち最小の最大評価値候補に更新し、前記仮想ミニマックス上限を、前記第１の記憶装置に記憶されている最大評価値群の最小の最大評価値に更新する更新部と、
前記更新部による更新後の仮想ミニマックス下限が前記更新部による更新後の仮想ミニマックス上限よりも大きいか否かを判定する判定部と、
前記判定部によって大きいと判定されたときの前記更新後の仮想ミニマックス上限をミニマックスに決定する決定部と、
前記決定部によってミニマックスが決定された行動を出力する出力部と、
を備えることを特徴とする計算機システム。
【請求項６】
複数の行動を含む行動群と、前記行動群に含まれる各行動に対応した複数の状態を含む状態群とを記憶する記憶装置を有する計算機に、
前記行動群から行動を選択し、選択された行動に対応する状態を前記状態群から選択し、
選択した状態の評価を示す評価値を取得し、
選択された行動ごとに、取得した評価値の中から、評価が最も低い最低評価値を特定し、
ある行動に対応して選択された全状態の評価値の中の最低評価値をミニマックス候補として決定し、各行動に対応する最低評価値のうち最も評価の高い評価値をミニマックスとして決定し、
前記ミニマックス候補の決定後に他の行動に対応して選択される各状態の評価値と前記ミニマックス候補とを評価値の取得の度に比較し、前記評価値が前記ミニマックス候補よりも評価の低いものである場合には、当該行動に対応する状態の選択を打ち切り、前記行動群に含まれる未選択の行動の中から行動を選択させ、
決定したミニマックスに対応する行動を出力する、
処理を実行させることを特徴とする探索プログラム。
【請求項７】
複数のスレーブ計算機とネットワークを介して通信可能であり、行動ごとに最大評価値候補および最大評価値の記憶領域を指定する記憶装置を有する計算機に、
行動群の行動ごとに状態群の各状態を指定可能な探索空間のうちいずれかの行動および状態で指定された開始位置と、任意の値をとる仮想ミニマックスとを、スレーブ計算機ごとに異なるように設定し、前記複数のスレーブ計算機での仮想ミニマックス群の下限となる仮想ミニマックス下限と、前記仮想ミニマックス群の上限となる仮想ミニマックス上限と、を設定し、
前記スレーブ計算機ごとに設定された開始位置および仮想ミニマックスを、前記各スレーブ計算機に配信し、
前記各スレーブ計算機から送信されてきた最大評価値または最大評価値候補を、前記記憶装置内の該当する行動の記憶領域に書き込み、
前記複数のスレーブ計算機のうちいずれかのスレーブ計算機からの評価完了通知を検出し、
評価完了通知が検出された場合、前記仮想ミニマックス下限を、前記記憶装置に記憶されている最大評価値候補群のうち最小の最大評価値候補に更新し、前記仮想ミニマックス上限を、前記記憶装置に記憶されている最大評価値群の最小の最大評価値に更新し、
更新後の仮想ミニマックス下限が更新後の仮想ミニマックス上限よりも大きいか否かを判定し、
大きいと判定されたときの前記更新後の仮想ミニマックス上限をミニマックスに決定し、
ミニマックスが決定された行動を出力する、
処理を実行させることを特徴とする探索プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報を探索する計算機、計算機システム、および探索プログラムに関する。
【背景技術】
【０００２】
ミニマックス(ｍｉｎｉ−ＭＡＸ)法によるミニマックス計算は、特に、不確実な将来の状態に対して取るべき行動として、起こり得る状態における最大の損失が最も少ない行動、あるいは、起こり得る状態において最低限保証される効用が最大になる行動を決定するというミニマックス損失基準による行動決定問題に利用されている。また、ミニマックス計算は、ミニマックス損失基準による行動決定問題だけでなく、様々な産業上の目的のために利用されている。例えば、家電や車両などのファジー制御に関し、ファジー論理式（ｉｆ  Ａ  ａｎｄ  Ｂ  ｔｈｅｎ  Ｘの形式の集合）の左辺の各項のグレード（事実との適合度）が与えられたとき、その最小値をもって右辺のグレード値とし、その右辺の中で最大となるものを求める技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−１６１７６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ミニマックス損失基準による行動決定問題とは、複数の行動Ｂ１〜Ｂｍの行動Ｂｊごとに、複数の状態Ａ１〜Ａｎにおける損失を表す評価値群の最大評価値Ｖ１ｍａｘ，…Ｖｊｍａｘ，…Ｖｍｍａｘを求め、最大評価値Ｖ１ｍａｘ，…Ｖｊｍａｘ，…Ｖｍｍａｘが最小となる行動を選択する。行動決定問題では、ｍ×ｎ個の評価値を求める必要がある。
【０００５】
しかしながら、上述した従来技術を適用しても、行動決定問題では、ｍ×ｎ個の評価値を求める必要があり、行動決定問題の解を発見まで時間がかかるという問題がある。１つの側面では、本発明は、ミニマックスを効率的に発見することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、複数の行動を含む行動群と、前記行動群に含まれる各行動に対応した複数の状態を含む状態群とを記憶する記憶装置内の前記行動群から行動を選択し、選択された行動に対応する状態を前記状態群から選択し、選択した状態の評価を示す評価値を取得し、選択された行動ごとに、取得した評価値の中から、評価が最も低い最低評価値を特定し、ある行動に対応して選択された全状態の評価値の中の最低評価値をミニマックス候補として決定し、各行動に対応する最低評価値のうち最も評価の高い評価値をミニマックスとして決定し、前記ミニマックス候補の決定後に他の行動に対応して選択される各状態の評価値と前記ミニマックス候補とを評価値の取得の度に比較し、前記評価値が前記ミニマックス候補よりも評価の低いものである場合には、当該行動に対応する状態の選択を打ち切り、前記行動群に含まれる未選択の行動の中から行動を選択させ、決定したミニマックスに対応する行動を出力する計算機、計算機システム、および探索プログラムが提案される。
【発明の効果】
【０００７】
本発明の一側面によれば、ミニマックスを効率的に発見することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、ミニマックス損失基準による行動決定問題の解法の一例を示す説明図である。
【図２】図２は、探索空間の一例を示す説明図である。
【図３】図３は、実施の形態１にかかるミニマックス損失基準による行動決定問題の解法を示す説明図である。
【図４】図４は、実施の形態１にかかる計算機システムのシステム構成例を示す説明図である。
【図５】図５は、実施の形態１にかかるコンピュータ（計算機４０１、４０２、端末４０３）のハードウェア構成例を示すブロック図である。
【図６】図６は、実施の形態１にかかる計算機４０２の機能的構成例を示すブロック図である。
【図７】図７は、実施の形態１にかかる計算機４０２によるミニマックス探索処理手順例を示すフローチャートである。
【図８】図８は、実施の形態１におけるミニマックス探索例を示す説明図である。
【図９】図９は、仮想ミニマックス否定条件を示す説明図である。
【図１０】図１０は、実施の形態２にかかるミニマックス損失基準による行動決定問題の解法を示す説明図である。
【図１１】図１１は、実施の形態２にかかる計算機４０２の機能的構成例を示すブロック図である。
【図１２】図１２は、評価済み状態テーブルの記憶内容例を示す説明図である。
【図１３】図１３は、実施の形態２にかかる計算機４０２によるミニマックス探索処理手順例を示すフローチャートである。
【図１４】図１４は、図１３に示した探索処理（ステップＳ１３０２）の詳細な処理手順例を示すフローチャートである。
【図１５】図１５は、実施の形態３にかかる計算機システムのシステム構成例を示す説明図である。
【図１６】図１６は、実施の形態３にかかるミニマックス並列探索例（その１）を示す説明図である。
【図１７】図１７は、実施の形態３にかかるミニマックス並列探索例（その２）を示す説明図である。
【図１８】図１８は、実施の形態３にかかるミニマックス並列探索例（その３）を示す説明図である。
【図１９】図１９は、実施の形態３にかかるミニマックス並列探索例（その４）を示す説明図である。
【図２０】図２０は、実施の形態３にかかるミニマックス並列探索例（その５）を示す説明図である。
【図２１】図２１は、実施の形態３にかかるミニマックス並列探索例（その６）を示す説明図である。
【図２２】図２２は、実施の形態３にかかるミニマックス並列探索例（その７）を示す説明図である。
【図２３】図２３は、実施の形態３にかかるミニマックス並列探索例（その８）を示す説明図である。
【図２４】図２４は、実施の形態３にかかるミニマックス並列探索例（その９）を示す説明図である。
【図２５】図２５は、実施の形態３にかかるスレーブ計算機１５０ｐの機能的構成例を示すブロック図である。
【図２６】図２６は、実施の形態３にかかるマスタ計算機１５００の機能的構成例を示すブロック図である。
【図２７】図２７は、マスタ計算機１５００によるミニマックス探索処理手順例（前半）を示すフローチャートである。
【図２８−１】図２８−１は、マスタ計算機１５００によるミニマックス探索処理手順例（後半）を示すフローチャートである。
【図２８−２】図２８−２は、マスタ計算機１５００によるミニマックス探索処理手順例（後半）の他の例を示すフローチャートである。
【図２９】図２９は、図２７に示した仮想ミニマックス設定処理（ステップＳ２７０５）の詳細な処理手順例を示すフローチャートである。
【図３０−１】図３０−１は、スレーブ計算機１５０ｐによるミニマックス探索処理手順例を示すフローチャート（その１）である。
【図３０−２】図３０−２は、スレーブ計算機１５０ｐによるミニマックス探索処理手順例を示すフローチャート（その２）である。
【図３１】図３１は、運転計画作成装置の機能的構成例を示すブロック図である。
【図３２】図３２は、需要変動シナリオの一例を示す説明図である。
【図３３】図３３は、日照時間変動確率テーブルの一例を示す説明図である。
【図３４】図３４は、ピークカット効果を示す説明図である。
【図３５】図３５は、図３１に示した最適運転評価テーブル３１１６の一例を示す説明図である。
【図３６】図３６は、図３１に示した当初運転計画テーブル３１１７の一例を示す説明図である。
【図３７】図３７は、図３１に示した修正運転評価テーブル３１１８の一例を示す説明図である。
【図３８】図３８は、図３１に示した対応力評価テーブル３１１９の一例を示す説明図である。
【図３９】図３９は、天候変動モデルの説明図である。
【図４０】図４０は、日射量変動シナリオの一例を示す説明図である。
【図４１】図４１は、需給シナリオの一例を示す説明図である。
【図４２】図４２は、制御パラメータの探索範囲について説明するための図である。
【図４３】図４３は、リグレット値の分布の一例を示す図（その１）である。
【図４４】図４４は、リグレット値の分布の一例を示す図（その２）である。
【図４５】図４５は、リグレット値の分布の一例を示す図（その３）である。
【図４６】図４６は、運転計画作成装置の処理手順を示すフローチャートである。
【図４７】図４７は、需給シナリオの生成処理（ステップＳ４６０２）の処理手順を示すフローチャートである。
【図４８】図４８は、当初運転計画の選択処理の処理手順を示すフローチャートである。
【図４９】図４９は、環境負荷低減効果を用いた場合の最適運転評価テーブルの一例を示す説明図である。
【図５０】図５０は、環境負荷低減効果を用いた場合の修正運転評価テーブルの一例を示す説明図である。
【図５１】図５１は、対応力評価テーブル３１１９の一例を示す説明図である。
【図５２】図５２は、コスト削減効果を用いた場合の最適運転評価テーブル３１１６の一例を示す説明図である。
【図５３】図５３は、コスト削減効果を用いた場合の修正運転評価テーブル３１１８の一例を示す説明図である。
【図５４】図５４は、対応力評価テーブル３１１９の一例を示す図である。
【図５５】図５５は、通信基地局の運転台数調整の例を示す説明図である。
【図５６】図５６は、運転計画の一例を示す説明図である。
【図５７】図５７は、１日の通信需要の推移の典型的なデータ例を示す説明図である。
【図５８】図５８は、通信需要と、その対応に要するエネルギー量（単位時間あたりの消費電力量）の関係を、それぞれの運転モード毎に示す説明図である。
【図５９】図５９は、本実施例の運転計画作成で考慮するもう１つのエネルギー量である、運転モード切り替えに要するコストの例を示す説明図である。
【図６０】図６０は、探索範囲の一例を示す説明図である。
【図６１】図６１は、通信需要シナリオ生成のための変動確率テーブルの例を示す説明図である。
【図６２】図６２は、作成した最適な運転計画の例を示す説明図である。
【図６３】図６３は、評価結果を示す説明図である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、この発明にかかる計算機、計算機システム、探索プログラム、探索方法の実施の形態を詳細に説明する。まず、不確実性の下での合理的な意思決定に関する理論について説明する。
【００１０】
不確実性の下での合理的な意思決定に関する理論としては統計的決定理論がある。統計的決定理論では、決定問題が直面する未来の状態の不確実性のレベルを次の４段階に区分し、それぞれの不確実性の下で取るべき行動案を決定し提案する。
【００１１】
（１）確定未来の場合：将来システムの状態（又は環境）が確定的に予測できる場合
（２）リスクがある場合：将来起こりうる全ての状態とその確率分布が予測できる場合
（３）（狭義の）不確実性がある場合：将来起こりうる状態の全体は認識できるが、それらの状態分布が予測できない場合
（４）あいまいな場合：将来起こりうる状態も不明な場合
【００１２】
上記（１）の場合、予想される未来の状況に対する各行動代替案の効用を評価し、最大効用を示す行動案を選択すればよいので、単なる効用関数の評定問題に帰せられる。
【００１３】
上記（４）の場合、整理された知識が乏しい。ここで不確実性があるケースのうち、上記（２）の場合は確率分布を利用して期待値基準、安定性基準、最尤値基準、希求水準基準等で行動を決定することが可能である。
【００１４】
上記（３）の場合、将来起こりうる状態は認識することができ、各状態の行動の効用の評価値も推定することは可能であるが、未来の状態分布の推定ができない。現実の問題ではこのような状況は少なくない。このときの決定基準として、ラプラスの基準、ワルドの基準（マックスミン利得基準）、マックス・マックス利得基準、ハービッツの基準、サベッジの基準（ミニマックス損失基準）等が提案されている。
【００１５】
この狭義の不確実性がある場合の意思決定問題において、状況の数と行動の数が膨大で、効用計算にもコストがかかる状況が存在しうる。たとえば、社会基盤システムの運転計画の候補の中から、最適な運転計画を決めたいが、起こり得る状態の確率分布も効用関数も明確ではなく、シミュレーションによって各状態に対する各運転計画の効用を算出し意思決定をしなければならないような状況である。
【００１６】
たとえば、契約電力低減によるコスト低減のために、太陽光発電を導入した事業所の年間を通じた最大のピーク電力を低減できるような蓄電池によるピークカット運転の制御パラメータを決定する問題がこれにあたる。蓄電池によるピーク電力低減は、予め設定したピークカット目標値に基づく放電制御（電力需要が目標値を超えないように放電すること）で実施することが一般的であるが、太陽光発電と蓄電池の併用によりピーク電力を低減する場合には、太陽光発電出力・電力需要がともに気象条件の影響をうけて変動するので、適切な目標値を設定することは容易でない。
【００１７】
たとえば、ある気象条件の典型的な１日の需給パタンに基づいて目標値を設定しても、別の気象条件の日の目標値としては不適切である可能性が高いので、年間を通じて起こり得るさまざまな需給パタンを考慮して、最適な放電目標値を設定しなくてはならない。すなわち、年間を通じた最大のピーク電力を効果的に低減できる目標値を決定することは、様々な需給状況という「状態」に対して、放電目標値という「行動」を適切に決定するという問題を解くことに帰着する。
【００１８】
状態の確率分布や効用関数がわかっている場合には、種々の理論（線形計画法，非線形計画法，動的計画法等）を利用することが可能である。状態の確率分布や効用関数がわからない場合は、各行動に対してすべての状態の効用を計算したうえで、最大値や最小値等を計算し、いずれかの基準によって意思決定しなければならない。本実施の形態では、状態の確率分布や効用関数がわからない場合に採用されるミニマックス損失基準による行動決定問題の解を、効率的に発見する。
【００１９】
なお、本実施の形態において、行動Ｂｊに対する状態Ａｉの評価値をＶｉｊとする。たとえば、行動Ｂ１に対する状態Ａ３の評価値はＶ３１であらわされる。また、行動ごとに各状態の位置を指定するテーブルを、「探索空間」と称す。
【００２０】
＜ミニマックス損失基準による行動決定問題の解法＞
図１は、ミニマックス損失基準による行動決定問題の解法の一例を示す説明図である。図１では、行動として、蓄電池運転計画を例にあげ、状態として、需給状況を例に挙げて説明する。
【００２１】
図１では、行動数ｍ＝４、状態数ｎ＝４の探索空間におけるミニマックス損失基準による行動決定問題を示している。図１の（Ａ）では、４×４＝１６個の評価値を求め、行動ごとに評価値群の最大評価値を求める。これにより、各行動Ｂ１〜Ｂ４の最大評価値Ｖ１ｍａｘ（＝４）、Ｖ２ｍａｘ（＝１０）、Ｖ３ｍａｘ（＝９）、Ｖ４ｍａｘ（＝６）の中から最小値であるＶ１ｍａｘ（＝４）がミニマックスとして選ばれる。これにより、最適な蓄電池運転計画は、最大ピーク電力の最小値であるピーク電力４００［ｋＷ］である行動Ｂ１であることがわかる。
【００２２】
これに対し、図１の（Ｂ）では、選択した行動に対して順に状態を評価していく処理において、選択中の行動の起こりうる状態に対する評価の最大評価値がミニマックスとはなりえないと判明した段階で、選択中の行動に対する後続の状態の評価について、評価の打ち切りをおこなう。本明細書では、このような評価の打ち切りを「枝刈り」と称す。
【００２３】
すなわち、ミニマックスを効率的に発見するための基本的な考え方としては，各行動の評価過程で得られる情報を利用して、最適になる見込みのない行動の評価を打ち切ることにより、ミニマックス探索の効率を向上させる。以下に枝刈りを行う際の条件（枝刈り規則）を示す。
【００２４】
枝刈り規則：ある１つの行動Ｂｊについて各状態Ａ１〜Ａｎにおける効用を順次計算する処理において、それ以前に実行した別の行動Ｂ１〜Ｂ（ｊ−１）に対する評価計算で見つかった最大評価値の最小値をミニマックス候補とする。このミニマックス候補に対し、評価中の状態Ａｉの効用（評価値）がミニマックス候補を上回るならば、その行動Ｂｊは最適になりえないと判定し、行動Ｂｊに対する評価を打ち切る。
【００２５】
枝刈り規則は、既に見つかっている最悪な状態よりもさらに悪い状態を含む行動は最適な行動になりえないので、それ以上評価を行わないことにより、ミニマックスとはならない最大評価値を含む行動の計算を省略することを意味する。枝刈り規則を用いることによって、最適にはなりえない行動の評価を省略しながら、ミニマックスの探索を行うことが可能となる。
【００２６】
たとえば、図１の（Ｂ）では、行動Ｂ１に対して状態Ａ１〜Ａ４の計算が完了し行動Ｂ１の最大評価値Ｖ１ｍａｘ＝４であることが判明しているものとする。この時点でミニマックス候補は４となる。そして、行動Ｂ２に対する状態Ａ１の評価値Ｖ１２は１０である。この場合、行動Ｂ２の最大評価値Ｖ２ｍａｘはこの時点で１０以上であることが確定するため、ミニマックス候補である４よりも大きい値になる。
【００２７】
つまり、行動Ｂ２に対し、状態Ａ１以外の状態Ａ２〜Ａ４は評価しても行動Ｂ２の最大評価値Ｖ２ｍａｘがミニマックスになる見込みがなくなってしまったので，状態Ａ１以外の状態Ａ２〜Ａ４の評価はする必要がなくなる。このように、計算過程で明らかになるミニマックス候補に基づき、最大評価値Ｖ２ｍａｘがミニマックスとなりえない行動を判定することにより、ミニマックスを計算するために必要のない計算を省略する。図１の（Ｂ）では、行動Ｂ３、Ｂ４についても同様に省略される。
【００２８】
すなわち、図１の（Ｂ）では、７個の評価値を求めるだけで、ミニマックスを求めることができるため、図１の（Ａ）と比較して、９個（＝１６−７）の評価が枝刈りされる。したがって、ミニマックス探索の計算負荷の低減を図ることができ、効率的にミニマックスを探索することができる。
【００２９】
（実施の形態１）
まず、本発明の実施の形態１にかかる情報を探索する計算機、計算機システム、探索プログラム、探索方法について説明する。実施の形態１は、図１の（Ｂ）に示したように、計算機により、ミニマックス損失基準による行動決定問題の解を求める例である。
【００３０】
＜探索空間の一例＞
図２は、探索空間の一例を示す説明図である。探索空間Ｔは、評価値Ｖｉｊ、最大評価値候補ＶＣｊｍａｘ、最大評価値Ｖｊｍａｘ、ミニマックスを記憶するデータテーブルであり、記憶装置に記憶されている。行動Ｂｊに対する状態Ａｉで指定される位置Ｃｉｊには、評価値Ｖｉｊが記憶される。初期状態では、位置Ｃｉｊには評価値Ｖｉｊが記憶されていない。同様に、最大評価値候補ＶＣｊｍａｘ、最大評価値Ｖｊｍａｘ、ミニマックスも記憶されていない。
【００３１】
図３は、実施の形態１にかかるミニマックス損失基準による行動決定問題の解法を示す説明図である。図３は、図１の（Ｂ）に示したミニマックス損失基準による行動決定問題の解法の詳細を示している。なお、図２および図３の探索空間Ｔ内のミニマックスのレコードで、「△」の場合はミニマックス候補を意味し、「○」の場合はミニマックスを意味するものとする。
【００３２】
まず、（Ａ）は、行動Ｂ１に対する状態Ａ１〜Ａ４の各々の評価値が求められた状態を示している。この場合、行動Ｂ１での最大評価値Ｖ１ｍａｘは、状態Ａ１のときの評価値Ｖ１１＝４となる。この時点では、全ての行動Ｂ１〜Ｂ４について最大評価値または最大評価値候補が得られていないため、ミニマックスは確定しておらず、行動Ｂ１での最大評価値Ｖ１ｍａｘ＝４がミニマックス候補となる。
【００３３】
つぎに、（Ｂ）において、行動Ｂ２が選択されて、状態Ａ１が評価されたものとする。このときの評価値Ｖ１２を「１０」とする。このとき、ミニマックス候補の最大評価値Ｖ１ｍａｘ＝４と評価値Ｖ１２＝１０とを比較する。この場合、行動Ｂ２の最大評価値Ｖ２ｍａｘはこの時点で１０以上であることが確定するため、ミニマックス候補である４よりも大きい値になる。
【００３４】
つまり、（Ｃ）において、行動Ｂ２に対し、状態Ａ１以外の状態Ａ２〜Ａ４は評価しても行動Ｂ２の最大評価値Ｖ２ｍａｘがミニマックスになる見込みがなくなってしまったので、状態Ａ１以外の状態Ａ２〜Ａ４の評価はする必要がなくなる。これにより、枝刈りが実行されて、状態Ａ２〜Ａ４の評価は省略される。
【００３５】
つぎに、（Ｄ）において、行動Ｂ３が選択されて、状態Ａ１が評価されたものとする。このときの評価値Ｖ１３を「７」とする。このとき、ミニマックス候補の最大評価値Ｖ１ｍａｘ＝４と評価値Ｖ１３＝７とを比較する。この場合、行動Ｂ３の最大評価値Ｖ３ｍａｘはこの時点で７以上であることが確定するため、ミニマックス候補である４よりも大きい値になる。
【００３６】
つまり、（Ｅ）において、行動Ｂ３に対し、状態Ａ１以外の状態Ａ２〜Ａ４は評価しても行動Ｂ３の最大評価値Ｖ３ｍａｘがミニマックスになる見込みがなくなってしまったので、状態Ａ１以外の状態Ａ２〜Ａ４の評価はする必要がなくなる。これにより、枝刈りを実行されて、状態Ａ２〜Ａ４の評価は省略される。
【００３７】
（Ｆ）において、行動Ｂ４についても同様に評価する。すなわち、行動Ｂ４に対し、状態Ａ１以外の状態Ａ２〜Ａ４は評価しても行動Ｂ４の最大評価値Ｖ４ｍａｘがミニマックスになる見込みがなくなってしまったので、状態Ａ１以外の状態Ａ２〜Ａ４の評価はする必要がなくなる。これにより、枝刈りを実行されて、状態Ａ２〜Ａ４の評価は省略される。したがって、図１の（Ｂ）で説明したように、９個（＝１６−７）の評価が枝刈りされるため、ミニマックス探索の計算負荷の低減を図ることができる。
【００３８】
このように、有望ではない（ミニマックスよりも高い最大評価値を含む）行動に対する評価する必要のない状態についての計算を省略することにより、効率的なミニマックス探索を実現することができる。すなわち、発見したいミニマックスを含む行動の最大評価値の評価は省略することなくすべての状態に対する評価を行う。その一方で、計算過程で得られるミニマックス候補を利用して計算する必要のない行動の評価を省略することにより、図１の（Ａ）に示したような枝刈りをしない評価と同様に確実にミニマックスを発見しつつ、効率的な評価を実現することができる。
【００３９】
なお、ここでは、状態Ａ１〜Ａ４に対する最大評価値が最小となる行動を決定する計算を例に説明したが、状態Ａ１〜Ａ４に対する最小評価値が最大となる行動を決定する場合にも、（大小関係を逆にした）同様の手順で探索処理を効率化できる。また、状態Ａ１〜Ａ４に対するｎ番目に大きい（小さい）評価値が最小（最大）になる行動を決定する場合にも、行動に対する最大評価値を求める処理を、ｎ番目に大きい（小さい）評価値を求める形に置き換えれば、同様の手順で探索処理を効率化できる。
【００４０】
＜システム構成例＞
図４は、実施の形態１にかかる計算機システムのシステム構成例を示す説明図である。計算機システムは、計算機４０１と計算機４０２と端末４０３とが、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク４１０により相互に通信可能に接続されている。
【００４１】
計算機４０１は、ミニマックス損失基準による行動決定問題において、ある行動Ｂｊに対するある状態Ａｉの評価値を計算するコンピュータである。たとえば、蓄電池運転計画についての行動決定問題を解決したい場合は、蓄電池運転計画を「行動」とし、需給状況を「状態」として、シミュレーションを実行する。この場合、各行動の最大評価値となる最大電力群のうち最小電力がミニマックスとなり、ミニマックスでの蓄電池運転計画が最適な行動となる。これにより、いずれの需給状況Ａｉが実現しても最大電力の値がなるべく小さくなるような運転計画を効率的に探索することができ、最大電力を高い確率で抑えられるようになる。
【００４２】
また、計算機４０１は、企業の戦略を「行動」とし、景気を「状態」としてシミュレーションを実行することとしてもよい。この場合、各行動の最大評価値となる最大損失群のうち最小損失がミニマックスとなり、ミニマックスでの企業戦略が最適な行動となる。これにより、いずれの景気Ａｉが実現しても最大損失の値がなるべく小さくなるような企業戦略を効率的に探索することができ、最大損失を高い確率で抑えられるようになる。このように、何を「行動」とし、何を「状態」とするかは、計算機４０１でのシミュレーションに依存することとなる。なお、計算機４０１のシミュレーションの詳細については後述する。
【００４３】
計算機４０２は、図２および図３に示したように、ミニマックスの探索を実行するコンピュータである。計算機４０２において、ある行動Ｂｊに対するある状態Ａｉを評価する場合、２つの方法がある。１つは、計算機４０１に対し、ある行動Ｂｊに対するある状態Ａｉの評価値の計算を、ネットワーク４１０を介して依頼し、計算機４０１から評価値をネットワーク４１０を介して取得する方法である。もう１つは、計算機４０１でのシミュレーションの機能を計算機４０２に実装しておき、計算機４０２において、ある行動Ｂｊに対するある状態Ａｉの評価値の計算を実行する方法である。後者の場合は、計算機４０１は不要である。
【００４４】
端末４０３は、計算機４０２に対しミニマックスの探索リクエストをネットワーク４１０を介して送り、ミニマックスとなる行動を計算機４０２からネットワーク４１０を介して受け取るコンピュータである。なお、計算機４０２は、端末４０３からの探索リクエストだけではなく、計算機４０２を直接操作することで、探索リクエストを受け付けることもできる。この場合、計算機４０２は、表示装置などにミニマックスとなる行動を出力することとなる。
【００４５】
＜コンピュータのハードウェア構成例＞
図５は、実施の形態１にかかるコンピュータ（計算機４０１、４０２、端末４０３）のハードウェア構成例を示すブロック図である。コンピュータは、記憶装置５０１と、入力装置５０２と、出力装置５０３と、プロセッサ５０４（中央処理装置）と、がバス５０５を介して接続されて構成される。
【００４６】
記憶装置５０１は、データやプログラム（ブートプログラムやオペレーティングシステム、アプリケーション）を記憶する。また、記憶装置５０１は、プロセッサ５０４のワークエリアとして使用される。また、計算機４０２内の記憶装置５０１については、図２に示した探索空間Ｔが記憶されている。記憶装置５０１としては、たとえば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリ、磁気ディスクドライブ、光ディスクドライブなどが採用される。
【００４７】
入力装置５０２は、外部からデータや命令を入力する。入力されたデータや命令は記憶装置５０１に格納され、プロセッサ５０４に渡される。入力装置５０２としては、たとえば、キーボード、操作キー、マウス、タッチパネル、スキャナ、カメラ、マイク、通信インターフェースなどが挙げられる。
【００４８】
出力装置５０３は、プロセッサ５０４から渡されたデータを出力する。出力装置５０３としては、たとえば、ディスプレイ、プリンタ、スピーカ、通信インターフェースなどが採用される。
【００４９】
プロセッサ５０４は、コンピュータの全体の制御を司る。プロセッサ５０４は、記憶装置５０１内のプログラムを読み込んで命令を実行する。その際、プロセッサ５０４は、記憶装置５０１内のデータを読み込んだり、記憶装置５０１にデータを書き込んだりする。また、プロセッサ５０４は、命令に従って演算結果を出力装置５０３に渡す。
【００５０】
＜計算機４０２の機能的構成例＞
図６は、実施の形態１にかかる計算機４０２の機能的構成例を示すブロック図である。計算機４０２は、選択部６０１と、取得部６０２と、特定部６０３と、決定部６０４と、制御部６０５と、出力部６０６と、を備えている。選択部６０１〜出力部６０６は、具体的には、たとえば、図５に示した記憶装置５０１に記憶されたプログラムをプロセッサ５０４に実行させることによりその機能を実現する。
【００５１】
選択部６０１は、行動群から行動を選択し、選択された行動に対応する状態を前記状態群から選択する。具体的には、選択部６０１は、記憶装置５０１に記憶されている探索空間Ｔ内の行動群から行動を順次選択し、選択された行動に対する状態群の各状態を順次選択する。たとえば、選択部６０１は、行動Ｂ１〜Ｂｎのうち未選択の行動Ｂｊを順次選択する。そして、選択部６０１は、選択中の行動Ｂｊに対し、状態Ａｉを順次選択する。
【００５２】
すなわち、選択部６０１は、選択中の行動Ｂｊについて枝刈り規則が適用されない限り、未選択の状態Ａｉを順次選択することになる。枝刈り規則が適用された場合、選択中の行動Ｂｊに対し未選択の状態Ａｉが残存していたとしても、制御部６０５からの指示により、つぎの未選択の行動を選択することになる。
【００５３】
また、枝刈り規則が適用されずに行動Ｂｊについて選択すべき状態Ａｉがなくなった場合は、選択部６０１は、残余の未選択の行動を選択することになる。未選択の行動Ｂｊがなくなった場合は、選択部６０１は、選択処理を終了する。
【００５４】
取得部６０２は、選択部６０１が選択した状態の評価を示す評価値を取得する。具体的には、取得部６０２は、選択部６０１によって選択された行動に対して選択された状態の評価値を順次取得して、探索空間Ｔに記憶する。たとえば、計算機４０１が評価値の計算を実行する場合は、取得部６０２は、選択された行動Ｂｊに対して選択された状態Ａｉの評価のリクエストを計算機４０１に送信する。そして、取得部６０２は、計算機４０１から送信されてくる評価値Ｖｉｊを受信して、探索空間Ｔ内の位置Ｃｉｊに、評価値Ｖｉｊを記憶する。
【００５５】
一方、計算機４０２が評価値の計算を実行する場合には、取得部６０２は、選択された行動Ｂｊに対して選択された状態Ａｉの評価値Ｖｉｊを算出して、探索空間Ｔ内の位置Ｃｉｊに、評価値Ｖｉｊを記憶する。
【００５６】
特定部６０３は、取得部６０２が取得した評価値の中から、評価が最も低い最低評価値を特定する。具体的には、特定部６０３は、選択された行動ごとに取得部６０２によって状態群の評価値群が取得された場合、選択された行動ごとに評価値群の中から最大評価値を特定する。たとえば、図３の（Ａ）に示したように、行動Ｂ１について、状態Ａ１〜Ａ４の評価値Ｖ１１〜Ｖ１４が取得された場合、評価値Ｖ１１〜Ｖ１４の中から最大評価値Ｖ１ｍａｘを特定する。この例では、Ｖ１ｍａｘ＝Ｖ１１＝４となる。他の行動Ｂ２〜Ｂ４についても枝刈りが実行されない限り、行動Ｂ１と同様に評価値群が取得されるため、それぞれ最大評価値Ｖ２ｍａｘ〜Ｖ４ｍａｘが特定されることになる。
【００５７】
一方、枝刈りが実行された場合は、特定部６０３は、枝刈り実行時の評価値を最大評価値候補ＶＣｊｍａｘとして特定する。たとえば、図３の（Ｂ）、（Ｃ）に示したように、行動Ｂ２については、評価値Ｖ２１で枝刈りが実行されたため、評価値Ｖ２１が行動Ｂ２での最大評価値候補ＶＣ２ｍａｘとして特定される。
【００５８】
決定部６０４は、ある行動に対応して選択された全状態の評価値の中の最低評価値をミニマックス候補として決定し、各行動に対応する最低評価値のうち最も評価の高い評価値をミニマックスとして決定する。具体的には、決定部６０４は、選択済みの行動群での特定部６０３によって特定された最大評価値群のうち最小評価値をミニマックス候補に決定する。たとえば、決定部６０４は、選択中の行動が行動Ｂｊであり、行動Ｂ１〜Ｂ（ｊ−１）のうち枝刈りが実行されずに得られた最大評価値の中から最小値を、暫定的にミニマックス候補に決定する。より具体的には、たとえば、選択中の行動が行動Ｂ３で、行動Ｂ１，Ｂ２については枝刈りされずに最大評価値Ｖ１ｍａｘ，Ｖ２ｍａｘが得られたとした場合、最大評価値Ｖ１ｍａｘ，Ｖ２ｍａｘのうち最小値をミニマックス候補に決定する。
【００５９】
また、決定部６０４は、選択すべき行動がない場合にはミニマックス候補をミニマックスに決定する。具体的には、行動Ｂ１〜Ｂｎでの評価が完了した時点でのミニマックス候補を、ミニマックスに決定する。たとえば、図３の例では、行動Ｂ１〜Ｂ４での評価が完了した時点でのミニマックス候補はＶ１ｍａｘ＝４であるため、Ｖ１ｍａｘ＝４をミニマックスに決定する。
【００６０】
制御部６０５は、ミニマックス候補の決定後に他の行動に対応して選択される各状態の評価値とミニマックス候補とを評価値の取得の度に比較し、評価値がミニマックス候補よりも評価の低いものである場合には、選択部６０１を制御して当該行動に対応する状態の選択を打ち切り、行動群に含まれる未選択の行動の中から行動を選択させる。具体的には、制御部６０５は、選択中の行動に対して選択された状態の評価値がミニマックス候補よりも大きい場合、選択部６０１を制御して、選択中の行動に対して未選択の状態の選択を打ち切って行動群の中から未選択の行動を選択する。すなわち、制御部６０５では、上述した枝刈り規則を適用することで、選択部６０１による選択を制御する。
【００６１】
たとえば、制御部６０５は、選択中の行動Ｂｊに対する状態Ａｉの評価値Ｖｉｊと、現時点でのミニマックス候補とを比較する。評価値Ｖｉｊがミニマックス候補よりも大きい場合は、選択部６０１に未選択の行動を選択させる。たとえば、選択部６０１は、行動Ｂｊのインデックスｊをｊ＝１から、状態Ａ１〜Ａｎの選択がすべて終了したタイミングで１ずつインクリメントすることで行動Ｂｊを選択している場合、制御部６０５は、枝刈り規則が適用されたときにインデックスｊを強制的にインクリメントする。たとえば、図３のように、行動Ｂ２に対する状態Ａ１の評価値Ｖ１２は枝刈り規則が適用されるため、選択部６０１に未選択であるつぎの行動Ｂ３を選択させる。
【００６２】
また、制御部６０５は、枝刈り規則適用時の評価値Ｖｉｊを行動Ｂｊでの最大評価値候補ＶＣｉｊとして、探索空間Ｔに記憶する。したがって、未選択の行動をランダムに選択させる場合、探索空間Ｔにおいて最大評価値または最大評価値候補のいずれも記憶されていない行動を特定し、選択部６０１に通知する。これにより、選択部６０１に未選択の行動を選択させることができる。
【００６３】
出力部６０６は、決定部６０４が決定したミニマックスに対応する行動を出力する。具体的には、たとえば、ミニマックスが決定された行動の名称（たとえば、「蓄電池運転計画１」のような行動を示す文字列）を出力する。なお、行動だけではなく、ミニマックス（の値）や状態（の名称）も出力してもよい。図３の例では、たとえば、｛行動Ｂ１、状態Ａ１、ミニマックス＝４｝が出力結果として出力される。出力部６０６は、このような出力結果を出力装置５０３や記憶装置５０１に出力する。出力装置５０３に出力した場合は、出力装置５０３に応じた出力（画面表示、印刷、他の装置への送信、音声読み上げ）が行われる。記憶装置５０１に出力された場合は、記憶装置５０１に格納されることになる。
【００６４】
＜計算機４０２によるミニマックス探索処理手順例＞
図７は、実施の形態１にかかる計算機４０２によるミニマックス探索処理手順例を示すフローチャートである。図７の例では、行動Ｂｊのインデックスｊおよび状態Ａｉのインデックスｉを１からインクリメントするものとして説明するが、ｎ、ｍからデクリメントさせてもよい。また、インクリメントやデクリメントではなく、未選択の行動Ｂｊ、状態Ａｉをランダムに選択することとしてもよい。ランダムに選択する場合は、たとえば、選択した位置Ｃｉｊに選択済みのフラグを設定することで、重複選択を禁止することとしてもよい。
【００６５】
また、ヒューリスティック等によって経験的に最適になる可能性が高い行動が判明している場合は、行動Ｂ１〜Ｂｍに優先度を設定しておき、優先度の高い順に選択することとしてもよい。これにより、最適に近いミニマックス候補が見つかれば、その後の行動の評価を効率的に行うことが可能である。さらに、どの行動に対しても評価が高い（損失が高い）状態が判明している場合には、状態Ａ１〜Ａｎに優先度を設定しておき、優先度の高い順に選択することとしてもよい。これにより、最悪の状態を優先的に評価することによって、ミニマックスになりえない行動を判断できるタイミングを早くできる。
【００６６】
まず、計算機４０２は、ミニマックス候補を∞（無限大）で初期化する（ステップＳ７０１）。つぎに、計算機４０２は、行動Ｂｊのインデックスｊをｊ＝１に設定し（ステップＳ７０２）、選択部６０１により行動Ｂｊを選択する（ステップＳ７０３）。また、計算機４０２は、状態Ａｉのインデックスｉをｉ＝１に設定し（ステップＳ７０４）、選択部６０１により状態Ａｉを選択する（ステップＳ７０５）。これにより、位置Ｃｉｊが特定される。つぎに、計算機４０２は、取得部６０２により、行動Ｂｊに対する状態Ａｉの評価値Ｖｉｊを取得する（ステップＳ７０６）。取得された評価値Ｖｉｊは探索空間Ｔの位置Ｃｉｊに記憶される。
【００６７】
そして、計算機４０２は、制御部６０５により、評価値Ｖｉｊに対し枝刈り規則が適用可能か否かを判断する（ステップＳ７０７）。具体的には、評価値Ｖｉｊがミニマックス候補より大きいか否かを判断する。選択済みの行動がない場合であっても、ミニマックス候補は初期値＝∞に設定されているため、枝刈り規則は適用される。
【００６８】
枝刈り規則が適用可能でない場合（ステップＳ７０７：Ｎｏ）、計算機４０２は、選択部６０１により、状態Ａｉのインデックスｉをインクリメントし（ステップＳ７０８）、ｉ≦ｎであるか否かを判断する（ステップＳ７０９）。ｉ≦ｎである場合（ステップＳ７０９：Ｙｅｓ）、未選択の状態Ａｉが残存するため、ステップＳ７０５に戻り、計算機４０２は、選択部６０１により、状態Ａｉを選択する。
【００６９】
一方、ｉ≦ｎでない場合（ステップＳ７０９：Ｎｏ）、行動Ｂｊについてすべての状態Ａ１〜Ａｎの評価値が得られたため、計算機４０２は、特定部６０３により、行動Ｂｊの評価値群Ｖ１ｊ〜Ｖｎｊの中から最大評価値Ｖｊｍａｘを特定する（ステップＳ７１０）。特定された最大評価値Ｖｊｍａｘは探索空間Ｔに記憶される。
【００７０】
そして、計算機４０２は、ミニマックス候補を更新する（ステップＳ７１１）。すなわち、計算機４０２は、決定部６０４により、これまでに得られた最大評価値群の中で最小評価値値をミニマックス候補に決定する。このあと、計算機４０２は、行動Ｂｊのインデックスｊをインクリメントする（ステップＳ７１２）。
【００７１】
一方、ステップＳ７０７において、枝刈り規則が適用可能である場合（ステップＳ７０７：Ｙｅｓ）、ステップＳ７１２に移行する。すなわち、ステップＳ７０８、Ｓ７０９、Ｓ７０５〜Ｓ７０９のループと、ステップＳ７１０，Ｓ７１１がスキップされる。したがって、無駄な計算を抑制することでミニマックス探索の高速化を図ることができる。
【００７２】
ステップＳ７１２のあと、計算機４０２は、ｊ≦ｍであるか否かを判断する（ステップＳ７１３）。すなわち、未選択の行動Ｂｊがあるか否かを判断する。ｊ≦ｍである場合（ステップＳ７１３：Ｙｅｓ）、ステップＳ７０３に戻り、計算機４０２は、選択部６０１により行動Ｂｊを選択する。一方、ｊ≦ｍでない場合（ステップＳ７１３：Ｎｏ）、計算機４０２は、決定部６０４によりこの時点でのミニマックス候補をミニマックスとして、出力部６０６によりミニマックスを取る行動Ｂｊを出力する（ステップＳ７１４）。これにより、一連の処理を終了する。
【００７３】
このように、実施の形態１によれば、行動Ｂｊの最大評価値がミニマックスになりえないという意味で評価する必要のない行動Ｂｊの評価を省略する。これにより、ミニマックス損失基準に基づく意思決定を迅速に行うことが可能となる。特に、将来起こり得る状態Ａｉの数ｎ、各状態Ａｉの行動の数ｍが膨大な場合、各状態Ａｉの行動Ｂｊの評価値計算に負荷がかかることになる。したがって、実施の形態１のように枝刈りを実行することで、計算機４０１，４０２の計算負荷の低減化を図ることができる。
【００７４】
（実施の形態２）
つぎに、実施の形態２について説明する。実施の形態１では、未選択の行動Ｂｊを何らかの方法で選択していき、選択された状態ごとに枝刈り規則の適用可否を判断することで、ミニマックス探索処理の高速化を図ることができる。この場合、真のミニマックスに近いミニマックス候補が偶然発見されるまで、有効な枝刈り規則を設定できていれば打ち切れたはずの計算を打ち切ることができず、可能であったはずの効率的な探索を十分に実現することができない。
【００７５】
図８は、実施の形態１におけるミニマックス探索例を示す説明図である。図８では、（Ａ）〜（Ｃ）に示したように、行動Ｂ１〜Ｂ３では枝刈り規則が適用されることなく、全ての状態Ａ１〜Ａ４について評価値を取得している。そして、（Ｄ）に示すように、行動Ｂ４に対する状態Ａ１においてようやく枝刈り規則が適用され、状態Ａ２〜Ａ４の枝刈りが実行されている。すなわち、ミニマックス候補＝４が、探索の初期段階で発見できていれば、より有効に枝刈り規則が適用される。
【００７６】
そこで、実施の形態２では、ある値Ｓをミニマックスと仮定する。ミニマックスとして仮定した値Ｓを「仮想ミニマックス」と称す。そして、仮想ミニマックスＳを用いて枝刈り規則を利用して効率的に探索を行い、仮想ミニマックスＳがミニマックスかどうかを判定し、ミニマックスでなければ仮想ミニマックスＳを更新し，最終的にミニマックスが見つかるまで判定を繰り返していく、というのが実施の形態２である。
【００７７】
仮想ミニマックスＳを適切に設定できれば、真のミニマックスに近いミニマックス候補が見つかるまで評価が悪い行動の計算を行うことなく、枝刈り規則による効率的なミニマックス探索が実現できる。仮想ミニマックスＳを適切に設定できなくても、仮想ミニマックスＳが真のミニマックスよりも低く設定されていれば、多くの行動において枝刈り規則による計算の打ち切りが期待できる。したがって、仮想ミニマックスＳがミニマックスではないことを判定するために大きな実行時間は必要としない。さらに、その判定において評価した状態の情報はその後の探索に再利用するため、枝刈りをしない場合と比べて計算時間が増加することはない。
【００７８】
実施の形態２では、仮想ミニマックスＳを真のミニマックスよりも低く設定し、枝刈り規則によって効率的な探索を行い、そこで得られた情報によって仮想ミニマックスＳを真のミニマックスに近づくように仮想ミニマックスＳの更新を行って探索を継続することになる。したがって、まずは、仮想ミニマックスＳがミニマックスかどうか判定することが必要となる。仮想ミニマックスＳがミニマックスではない場合には、ミニマックスとなる最大評価値をとる行動を含むすべての行動において枝刈りが実行されるが、仮想ミニマックスＳ自体はミニマックスというわけではない。そこで、以下に示すミニマックス否定条件を利用する。
【００７９】
ミニマックス否定条件：仮想ミニマックスＳがミニマックスではないならば、すべての行動で最大評価値の最小値候補が見つからない（枝刈りが起こる）。
【００８０】
図９は、仮想ミニマックス否定条件を示す説明図である。図９の例では、行動Ｂ３の最大評価値Ｖ３ｍａｘ＝４がミニマックスである。図９において、仮想ミニマックスＳをＳ＝２とした場合、行動Ｂ１〜Ｂ４の最大評価値Ｖ１ｍａｘ〜Ｖ４ｍａｘは、仮想ミニマックスＳよりも大きい。すなわち、仮想ミニマックスＳ＝２は、ミニマックスではないため（Ｓ≠４）、すべての行動Ｂ１〜Ｂ４において最大評価値ではない。したがって、最大評価値の最小値候補が見つからず、枝刈りによる打ち切りが発生する。
【００８１】
すなわち、すべての行動Ｂ１〜Ｂｍを評価した結果、ミニマックス否定条件を満たす場合には、ミニマックスが見つかっていないことを意味する。したがって、実施の形態２では、この場合に仮想ミニマックスＳをΔＳで更新して、再度同様の処理を行う。仮想ミニマックスＳが真のミニマックスを上回った場合には、最大評価値がミニマックスである行動Ｂｊにおいて枝刈りが起こらないため、ミニマックスを発見することができる。
【００８２】
したがって、実施の形態２におけるミニマックス探索においては、仮想ミニマックスＳが真のミニマックスを上回らない限り、真のミニマックス以下の仮想ミニマックスＳとして行う探索を複数回行う。このため、それぞれの行動Ｂｊで既に行った状態Ａｉの評価を重複して行ってしまっては、むしろ枝刈りを行わないほうが計算量の少ない場合も生じてしまう。そこで、実施の形態２では、評価済み状態テーブルを用意し、評価済み状態テーブルに必要な情報を記録することとする。評価済み状態テーブルの詳細は後述する。
【００８３】
また、実施の形態２では、仮想ミニマックスＳを低く設定すれば，仮想ミニマックスＳがミニマックスではないと判定するのにそれほど多くの時間はかからないが、可能な限り早い段階で仮想ミニマックスＳを真のミニマックスに近い値に設定できた方が理想に近い効率的なミニマックス探索を実現できる。そこで、ミニマックス探索過程で得られるミニマックスの探索下限となる仮想ミニマックス下限Ｓｍｉｎを定義し、仮想ミニマックスＳを可能な限り早い段階で真のミニマックスに近づける。
【００８４】
仮想ミニマックス下限Ｓｍｉｎ：各行動Ｂ１〜Ｂｍに対していくつかの状態の評価を取得し、各行動Ｂ１〜Ｂｍの最大評価値候補がわかっているとする。仮想ミニマックス下限は、各行動の最大評価値候補の最小値となる。以下、図９に示した評価値群について、実施の形態２を適用した場合のミニマックス探索について説明する。
【００８５】
図１０は、実施の形態２にかかるミニマックス損失基準による行動決定問題の解法を示す説明図である。まず、（Ａ）において、仮想ミニマックスＳをＳ＝１とし、増加量ΔＳをΔＳ＝１とする。仮想ミニマックスＳを用いた枝刈り規則の適用により、各行動Ｂ１〜Ｂ４に対する状態Ａ１の評価値Ｖ１１〜Ｖ１４が、行動Ｂ１〜Ｂ４の順に取得される。このとき、評価値Ｖ１１〜Ｖ１４は、仮想ミニマックスＳ（＝１）よりも大きいため、仮想ミニマックスＳは真のミニマックスではなく、仮想ミニマックス否定条件が成立する。したがって、評価値Ｖ１１〜Ｖ１４は、最大評価値候補ＶＣ１１〜ＶＣ１４となる。仮想ミニマックス下限Ｓｍｉｎは、最大評価値候補ＶＣ１１〜ＶＣ１４の中の最小値であるため、Ｓｍｉｎ＝Ｖ３ｍａｘ＝２となる。
【００８６】
つぎに、仮想ミニマックスＳ（＝１）では、ミニマックス否定条件を遵守したため、増加量ΔＳを加算することで、仮想ミニマックスＳをＳ＝２に更新する。そして、更新後の仮想ミニマックスＳ（＝２）と仮想ミニマックス下限Ｓｍｉｎとで、Ｓ＜Ｓｍｉｎが成立するか否かを判断することになる。Ｓ＜Ｓｍｉｎが成立する場合、すなわち、仮想ミニマックス下限Ｓｍｉｎの方が仮想ミニマックスＳよりも大きい場合は，仮想ミニマックス下限Ｓｍｉｎの方がより真のミニマックスに近いので、仮想ミニマックスＳを仮想ミニマックス下限Ｓｍｉｎの値に更新する。（Ａ）では、Ｓ＝Ｓｍｉｎであるため、仮想ミニマックスＳを仮想ミニマックス下限Ｓｍｉｎの値に更新しない。
【００８７】
（Ｂ）では、評価値Ｖ１１〜Ｖ１４について枝刈り規則が適用されるかが判断される。（Ｂ）では、仮想ミニマックスＳがＳ＝２であるため、行動Ｂ１，Ｂ２，Ｂ４については状態Ａ２〜Ａ４の枝刈りが実行される。これに対し、行動Ｂ３に対する状態Ａ１の評価値Ｖ１３はＶ１３＝２であるため、Ｖ１３＝Ｓとなる。したがって、行動Ｂ３については枝刈りが行われない。このあと、行動Ｂ３についてはつぎの未選択の状態Ａ２を選択し、評価値Ｖ２３を取得する。ここで、評価値Ｖ２３はＶ２３＝４とする。
【００８８】
評価値Ｖ２３（＝４）は仮想ミニマックスＳ（＝２）よりも大きいため、行動Ｂ３に対する状態Ａ３，Ａ４は枝刈りされる。このため、仮想ミニマックスＳ（＝２）でも、ミニマックス否定条件を遵守したため、再度増加量ΔＳを加算することで、仮想ミニマックスＳをＳ＝３に更新する。そして、更新後の仮想ミニマックスＳ（＝３）と仮想ミニマックス下限Ｓｍｉｎ（＝４）とで、Ｓ＜Ｓｍｉｎが成立するか否かを判断することになる。
【００８９】
この場合、Ｓ＜Ｓｍｉｎが成立するため、仮想ミニマックス下限Ｓｍｉｎの方がより真のミニマックスに近いこととなり、仮想ミニマックスＳを仮想ミニマックス下限Ｓｍｉｎの値に更新する。（Ｃ）では、仮想ミニマックスＳ＝Ｓｍｉｎ＝４となる。
【００９０】
（Ｃ）においても、（Ｂ）と同様、評価値Ｖ１１〜Ｖ１４について枝刈り規則が適用されるかが判断される。（Ｃ）では、仮想ミニマックスＳがＳ＝４であるため、行動Ｂ１，Ｂ２，Ｂ４については状態Ａ２〜Ａ４の枝刈りが実行される。これに対し、行動Ｂ３に対する状態Ａ１の評価値Ｖ１３はＶ１３＝２であるため、Ｖ１３＜Ｓとなる。したがって、行動Ｂ３については枝刈りが行われない。このあと、行動Ｂ３についてはつぎの未選択の状態Ａ２を選択し、評価値Ｖ２３を取得する。ここで、評価値Ｖ２３はＶ２３＝４とする。評価値Ｖ２３においても、Ｖ２３＝Ｓとなる。したがって、行動Ｂ３については枝刈りが行われない。
【００９１】
このあと、行動Ｂ３に対する状態Ａ３，Ａ４の評価値Ｖ３３，Ｖ４３についても枝刈りが発生しない。したがって、行動Ｂ３はミニマックス否定条件違反の行動となるため、行動Ｂ３の評価値群Ｖ１３〜Ｖ４３の中の最大評価値Ｖ２３＝４がミニマックスとなる。このように、図８の例では、行動Ｂ４に対する状態Ａ２〜Ａ４の３個の評価値を省略できたが、図１０では、行動Ｂ１，Ｂ２，Ｂ４に対する状態Ａ２〜Ａ４の９個の評価値の取得を省略することができる。したがって、実施の形態１よりも、より効率的にミニマックスを探索することができ、計算機４０１，４０２の計算負荷の低減化を図ることができる。
【００９２】
＜計算機４０２の機能的構成例＞
図１１は、実施の形態２にかかる計算機４０２の機能的構成例を示すブロック図である。計算機４０２は、選択部１１０１と、取得部１１０２と、特定部１１０３と、制御部１１０４と、第１の決定部１１０５と、判断部１１０６と、第２の決定部１１０７と、出力部１１０８と、設定部１１０９と、追加部１１１０と、判定部１１１１と、更新部１１１２と、を備えている。選択部１１０１〜更新部１１１２は、具体的には、たとえば、図５に示した記憶装置５０１に記憶されたプログラムをプロセッサ５０４に実行させることによりその機能を実現する。選択部１１０１、取得部１１０２、および特定部１１０３は、実施の形態１の選択部６０１、取得部６０２、および特定部６０３と同一内容であるため説明を省略する。
【００９３】
また、実施の形態２では、仮想ミニマックスＳは、記憶装置５０１に記憶されている。仮想ミニマックスＳは、初期状態では、真のミニマックスに対し十分に低いと想定される値を設定しておく。これにより、ミニマックスを発見できない探索においても枝刈り規則の適用機会が増加し、効率的な探索を期待することができる。仮想ミニマックスＳは真のミニマックスよりも高く設定しても問題ないが、設定した仮想ミニマックスＳが効率的な探索を実現するという観点で適切ではないと、枝刈りを有効に活用することができないことになる。
【００９４】
制御部１１０４は、選択中の行動Ｂｊおよび状態Ａｉの評価値Ｖｉｊが仮想ミニマックスＳ以下である場合、選択部１１０１を制御して選択中の行動に対し未選択の状態を選択する。すなわち、評価値Ｖｉｊが仮想ミニマックスＳ以下である場合は、枝刈り規則を満たさないため、選択部１１０１に、未選択の状態を選択させることになる。
【００９５】
また、制御部１１０４は、選択中の行動Ｂｊおよび状態Ａｉの評価値Ｖｉｊが仮想ミニマックスＳよりも大きいと判断された場合、選択部１１０１を制御して選択中の行動に対し未選択の状態の選択を打ち切って、未選択の行動を選択する。この場合は、枝刈り規則を満たしているため、未選択の行動を選択することになる。
【００９６】
たとえば、選択部１１０１は、行動Ｂｊのインデックスｊをｊ＝１から、状態Ａ１〜Ａｎの選択がすべて終了したタイミングで１ずつインクリメントすることで行動Ｂｊを選択している場合、制御部１１０４は、枝刈り規則が適用されたときにインデックスｊを強制的にインクリメントする。たとえば、図１０のように、行動Ｂ１に対する状態Ａ１の評価値Ｖ１１は枝刈り規則が適用されるため、選択部１１０１に未選択であるつぎの行動Ｂ２を選択させる。
【００９７】
第１の決定部１１０５は、制御部１１０４により選択の打ち切りが発生しなかった行動について特定部１１０３によって特定された最大評価値群のうち最小評価値をミニマックス候補に決定する。たとえば、打ち切りが発生しなかった行動が行動Ｂ１，Ｂ２である場合、行動Ｂ１の評価値Ｖ１１〜Ｖ４１の中の最大評価値Ｖ１ｍａｘと、行動Ｂ２の評価値Ｖ１２〜Ｖ４２の中の最大評価値Ｖ２ｍａｘのうち、最小の最大評価値をミニマックス候補に決定する。第１の決定部１１０５による決定処理は、ミニマックス否定条件に違反するまで実行されることになる。
【００９８】
判断部１１０６は、選択すべき行動がない場合、制御部１１０４によりいずれの行動についても選択の打ち切りが発生したか否かを判断する。具体的には、たとえば、判断部１１０６は、ミニマックス否定条件を遵守しているか違反しているかを判断する。いずれの行動についても選択の打ち切りが発生した場合、ミニマックス否定条件を遵守したことになるため、この時点では真のミニマックスは発見されていない。一方、いずれかの行動について選択の打ち切りが発生しなかった場合、ミニマックス否定条件に違反したことになり、ミニマックスが発見できたことが判明する。
【００９９】
第２の決定部１１０７は、判断部１１０６によって選択の打ち切りが発生しなかった行動があると判断された場合、選択の打ち切りが発生しなかった行動について第１の決定部１１０５によって決定されたミニマックス候補を、ミニマックスに決定する。具体的には、たとえば、ミニマックス否定条件に違反した場合、選択の打ち切りが発生しなかった行動群の最大評価値群の中の最小の最大評価値がミニマックス候補として第１の決定部１１０５により決定済みである。したがって、第２の決定部１１０７は、ミニマックス候補をミニマックスに決定することになる。
【０１００】
出力部１１０８は、第２の決定部１１０７によってミニマックスが決定された行動を出力する。具体的には、たとえば、ミニマックスが決定された行動の名称（たとえば、「蓄電池運転計画１」のような行動を示す文字列）を出力する。なお、行動だけではなく、ミニマックス（の値）や状態（の名称）も出力してもよい。図３の例では、たとえば、｛行動Ｂ１、状態Ａ１、ミニマックス＝４｝が出力結果として出力される。出力部１１０８は、このような出力結果を出力装置５０３や記憶装置５０１に出力する。出力装置５０３に出力した場合は、出力装置５０３に応じた出力（画面表示、印刷、他の装置への送信、音声読み上げ）が行われる。記憶装置５０１に出力された場合は、記憶装置５０１に格納されることになる。
【０１０１】
設定部１１０９は、判断部１１０６によっていずれの行動についても選択の打ち切りが発生したと判断された場合、制御部１１０４により選択の打ち切りが発生したときの行動群の評価値群の中の最小評価値を仮想ミニマックスＳの下限を示す仮想ミニマックス下限Ｓｍｉｎに設定する。すなわち、設定部１１０９は、ミニマックス否定条件を遵守した場合に、仮想ミニマックス下限を設定することになる。
【０１０２】
たとえば、図１０の（Ａ）では、行動Ｂ１〜Ｂ４について選択の打ち切り、すなわち、枝刈りが発生しているため、枝刈り発生時の評価値Ｖ１１（＝６），Ｖ１２（＝１０），Ｖ１３（＝２），Ｖ１４（＝５）の中から最小評価値Ｖ１３（＝２）を仮想ミニマックス下限Ｓｍｉｎに設定する。
【０１０３】
追加部１１１０は、判断部１１０６によっていずれの行動についても選択の打ち切りが発生したと判断された場合、仮想ミニマックスＳに所定の増加量ΔＳを追加する。すなわち、追加部１１１０は、ミニマックス否定条件を遵守した場合に、仮想ミニマックスＳに所定の増加量ΔＳを追加することになる。
【０１０４】
たとえば、図１０の（Ａ）では、行動Ｂ１〜Ｂ４について選択の打ち切り、すなわち、枝刈りが発生しているため、追加部１１１０は、このときの仮想ミニマックスＳ（＝１）に増加量ΔＳ（＝１）を加算して、仮想ミニマックスＳ（＝２）にする。増加量ΔＳは大きすぎない値に設定するものとする。増加量ΔＳを大きい値に設定すると、追加部１１１０により仮想ミニマックスＳが真のミニマックスに対し高すぎる値に設定されてしまい、最終的に効率の悪い計算になってしまう。このため、増加量ΔＳは、任意に設定可能であるが、増加の刻み幅が細かく設定できる程度の値にするのが好ましい。このため、本例では、ΔＳ＝１としている。
【０１０５】
判定部１１１１は、設定部１１０９によって設定された仮想ミニマックス下限Ｓｍｉｎが、追加部１１１０による追加後の仮想ミニマックスＳよりも大きいか否かを判定する。仮想ミニマックス下限Ｓｍｉｎの方が仮想ミニマックスＳよりも大きい場合は、仮想ミニマックス下限Ｓｍｉｎの方がより真のミニマックスに近いことになる。
【０１０６】
更新部１１１２は、仮想ミニマックス下限Ｓｍｉｎが、追加部１１１０による追加後の仮想ミニマックスＳよりも大きいと判定された場合には、仮想ミニマックスＳを仮想ミニマックス下限の値に更新する。これにより、仮想ミニマックスＳをより真のミニマックスに近づけることができる。したがって、効率的な枝刈りをおこなうことができる。
【０１０７】
また、更新部１１１２は、仮想ミニマックス下限Ｓｍｉｎが、追加部１１１０による追加後の仮想ミニマックスＳ以下と判定された場合には、追加後の仮想ミニマックスＳを最新の仮想ミニマックスＳとして扱う。
【０１０８】
いずれにしても更新部１１１２により仮想ミニマックスＳが更新されると、選択部１１０１、取得部１１０２、特定部１１０３、第１の決定部１１０５により、再度評価値の選択、取得（取得済みの評価値は除く）、特定、ミニマックス候補の決定が実行される。また、制御部１１０４についても、最新の仮想ミニマックスＳにより、選択の打ち切りを判断することになる。
【０１０９】
これにより、再度、判断部１１０６により、ミニマックス否定条件について判断されミニマックス否定条件を遵守している場合には、設定部１１０９、追加部１１１０、判定部１１１１、更新部１１１２による処理が再度実行される。このように、ミニマックス否定条件に違反するまで、再帰的に処理が実行され、最終的にミニマックス否定条件に違反した場合に、第２の決定部１１０７が最新のミニマックス候補をミニマックスに決定して、出力部１１０８が出力することになる。
【０１１０】
＜評価済み状態テーブル＞
図１２は、評価済み状態テーブルの記憶内容例を示す説明図である。図１２において、評価済み状態テーブル１２００は、行動ごとに、評価済み状態のインデックスｉと最大評価値候補ＶＣｊｍａｘが記憶される。評価済み状態テーブル１２００には、選択中の行動Ｂｊについて枝刈りが発生したときの状態Ａｉのインデックスｉと枝刈りが発生したときの評価値Ｖｉｊが最大評価値候補ＶＣｊｍａｘとして記憶される。設定部１１０９は、最大評価値候補ＶＣｊｍａｘのうち最小値を仮想ミニマックス下限Ｓｍｉｎに設定することになる。
【０１１１】
図１２において、（Ａ）は図１０の（Ａ）のときの記憶内容である。この場合、最大評価値候補ＶＣｊｍａｘのうち最小値は、行動Ｂ３に対する状態Ａ１の評価値Ｖ１３（すなわち、行動Ｂ３のこの時点での最大評価値候補ＶＣ３ｍａｘ）＝２である。したがって、仮想ミニマックス下限Ｓｍｉｎ＝２に設定される。
【０１１２】
また、図１２において、（Ｂ）は図１０の（Ｂ），（Ｃ）のときの記憶内容である。この場合、最大評価値候補ＶＣｊｍａｘのうち最小値は、行動Ｂ３に対する状態Ａ１の評価値Ｖ２３（すなわち、行動Ｂ３のこの時点での最大評価値候補ＶＣ３ｍａｘ）＝４である。したがって、仮想ミニマックス下限Ｓｍｉｎ＝４に設定される。
【０１１３】
＜計算機４０２によるミニマックス探索処理手順例＞
図１３は、実施の形態２にかかる計算機４０２によるミニマックス探索処理手順例を示すフローチャートである。まず、計算機４０２は、仮想ミニマックスＳを初期化する（ステップＳ１３０１）。上述したように、仮想ミニマックスＳは、枝刈りを有効的に活用できる程度の値に初期化する。つぎに、計算機４０２は、探索処理を実行する（ステップＳ１３０２）。
【０１１４】
探索処理（ステップＳ１３０２）では、行動ごとに、枝刈りが発生していない場合は最大評価値Ｖｊｍａｘ、枝刈りが発生した場合は最大評価値候補ＶＣｊｍａｘが探索される。そして、最大評価値Ｖｊｍａｘの中で最小の最大評価値Ｖｊｍａｘがミニマックス候補となる。探索処理（ステップＳ１３０２）の詳細については図１４で後述する。
【０１１５】
このあと、計算機４０２は、判断部１１０６によりミニマックス否定条件を満たしているか否かを判断する（ステップＳ１３０３）。すなわち、すべての行動について枝刈りが発生したか否かを判断する。ミニマックス否定条件を満たす場合（ステップＳ１３０３：Ｙｅｓ）、いずれの行動についても枝刈りが発生していることになる。この場合、計算機４０２は、追加部１１１０により仮想ミニマックスＳに増加量ΔＳを追加する。
【０１１６】
そして、計算機４０２は、仮想ミニマックス下限Ｓｍｉｎが、追加後の仮想ミニマックスＳより大きいか否かを判断する（ステップＳ１３０５）。仮想ミニマックス下限Ｓｍｉｎが、追加後の仮想ミニマックスＳ以下の場合（ステップＳ１３０５：Ｎｏ）、ステップＳ１３０２に移行する。この場合、追加後の仮想ミニマックスＳで探索処理（ステップＳ１３０２）が再度実行されることになる。
【０１１７】
一方、仮想ミニマックス下限Ｓｍｉｎが、追加後の仮想ミニマックスＳより大きい場合（ステップＳ１３０５：Ｙｅｓ）、計算機４０２は、更新部１１１２により、仮想ミニマックスＳを仮想ミニマックス下限Ｓｍｉｎに更新する（ステップＳ１３０６）。そして、ステップＳ１３０２に移行する。この場合、仮想ミニマックス下限Ｓｍｉｎで更新された仮想ミニマックスＳで探索処理（ステップＳ１３０２）が再度実行されることになる。したがって、真のミニマックスに仮想ミニマックスを近づけることができ、効率的な枝刈りが実行されることになる。
【０１１８】
また、ステップＳ１３０３において、ミニマックス否定条件を満たさない場合（ステップＳ１３０３：Ｎｏ）、第２の決定部１１０７によりミニマックス候補をミニマックスに決定し（ステップＳ１３０７）、ミニマックスを取る行動を出力部１１０８により出力する（ステップＳ１３０８）。これにより、一連の処理を終了する。
【０１１９】
図１４は、図１３に示した探索処理（ステップＳ１３０２）の詳細な処理手順例を示すフローチャートである。図１４の例では、行動Ｂｊのインデックスｊおよび状態Ａｉのインデックスｉを１からインクリメントするものとして説明するが、ｎ、ｍからデクリメントさせてもよい。また、インクリメントやデクリメントではなく、未選択の行動Ｂｊ、状態Ａｉをランダムに選択することとしてもよい。ランダムに選択する場合は、たとえば、選択した位置Ｃｉｊに選択済みのフラグを設定することで、重複選択を禁止することとしてもよい。
【０１２０】
また、ヒューリスティック等によって経験的に最適になる可能性が高い行動が判明している場合は、行動Ｂ１〜Ｂｍに優先度を設定しておき、優先度の高い順に選択することとしてもよい。これにより、最適に近いミニマックス候補が見つかれば、その後の行動の評価を効率的に行うことが可能である。さらに、どの行動に対しても評価が高い（損失が高い）状態が判明している場合には、状態Ａ１〜Ａｎに優先度を設定しておき、優先度の高い順に選択することとしてもよい。これにより、最悪の状態を優先的に評価することによって、ミニマックスになりえない行動を判断できるタイミングを早くできる。
【０１２１】
図１４において、まず、計算機４０２は、ミニマックス候補を、仮想ミニマックスＳで初期化する（ステップＳ１４０１）。つぎに、計算機４０２は、行動Ｂｊのインデックスｊをｊ＝１に設定し（ステップＳ１４０２）、選択部１１０１により行動Ｂｊを選択する（ステップＳ１４０３）。また、計算機４０２は、状態Ａｉのインデックスｉをｉ＝１に設定し（ステップＳ１４０４）、選択部６０１により状態Ａｉを選択する（ステップＳ１４０５）。これにより、位置Ｃｉｊが特定される。つぎに、計算機４０２は、取得部１１０２により、行動Ｂｊに対する状態Ａｉの評価値Ｖｉｊを取得する（ステップＳ１４０６）。取得された評価値Ｖｉｊは探索空間Ｔの位置Ｃｉｊに記憶される。取得済みの場合は実行しない。
【０１２２】
そして、計算機４０２は、制御部１１０４により、評価値Ｖｉｊに対し枝刈り規則が適用可能か否かを判断する（ステップＳ１４０７）。具体的には、評価値Ｖｉｊが仮想ミニマックスＳより大きいか否かを判断する。選択済みの行動がない場合であっても、仮想ミニマックスＳが設定されているため、枝刈り規則は適用される。
【０１２３】
枝刈り規則が適用可能でない場合（ステップＳ１４０７：Ｎｏ）、計算機４０２は、選択部１１０１により、状態Ａｉのインデックスｉをインクリメントし（ステップＳ１４０８）、ｉ≦ｎであるか否かを判断する（ステップＳ１４０９）。ｉ≦ｎである場合（ステップＳ１４０９：Ｙｅｓ）、未選択の状態Ａｉが残存するため、ステップＳ１４０５に戻り、計算機４０２は、選択部１１０１により、状態Ａｉを選択する。
【０１２４】
一方、ｉ≦ｎでない場合（ステップＳ１４０９：Ｎｏ）、行動Ｂｊについてすべての状態Ａ１〜Ａｎの評価値が得られたため、計算機４０２は、特定部１１０３により、行動Ｂｊの評価値群Ｖ１ｊ〜Ｖｎｊの中から最大評価値Ｖｊｍａｘを特定する（ステップＳ１４１０）。特定された最大評価値Ｖｊｍａｘは探索空間Ｔに記憶される。
【０１２５】
そして、計算機４０２は、ミニマックス候補を更新する（ステップＳ１４１１）。すなわち、計算機４０２は、第１の決定部１１０５により、これまでに得られた最大評価値群の中で最小評価値が、ステップＳ１４０１で初期化されたミニマックス候補よりも小さい場合、最大評価値群の中の最小評価値をミニマックス候補に決定する。このあと、計算機４０２は、行動Ｂｊのインデックスｊをインクリメントする（ステップＳ１４１２）。
【０１２６】
一方、ステップＳ１４０７において、枝刈り規則が適用可能である場合（ステップＳ１４０７：Ｙｅｓ）、ステップＳ１４１２に移行する。すなわち、ステップＳ１４０８、Ｓ１４０９、Ｓ１４０５〜Ｓ１４０７のループと、ステップＳ１４１０，Ｓ１４１１がスキップされる。したがって、無駄な計算を抑制することでミニマックス探索の高速化を図ることができる。
【０１２７】
ステップＳ１４１２のあと、計算機４０２は、ｊ≦ｍであるか否かを判断する（ステップＳ１４１３）。すなわち、未選択の行動Ｂｊがあるか否かを判断する。ｊ≦ｍである場合（ステップＳ１４１３：Ｙｅｓ）、ステップＳ１４０３に戻り、計算機４０２は、選択部１１０１により行動Ｂｊを選択する。一方、ｊ≦ｍでない場合（ステップＳ１４１３：Ｎｏ）、ステップＳ１３０３に移行して、ミニマックス否定条件を満たすか否かを判断することになる。これにより、一連の処理を終了する。
【０１２８】
このように、実施の形態２によれば、仮想ミニマックスＳをあらかじめ設定しておくことで、効率のよい探索が可能な枝刈り規則が見つかるまで評価の悪い行動の計算を行うことなく、効率的にミニマックスを発見することができる。たとえば、真のミニマックスまたは真のミニマックス以上で十分に小さい値を仮想ミニマックスＳの初期値として設定した場合、選択すべき行動以外の行動の評価値の取得を枝刈り規則により打ち切ることが可能である。
【０１２９】
このように、実施の形態２によれば、枝刈り規則の初期値設定に関する前提知識をもっていなくても、仮想ミニマックスＳがミニマックスかどうか高速に判定する処理を繰り返し行うことにより、効率的にミニマックスを発見することができる。
【０１３０】
（実施の形態３）
つぎに、実施の形態３について説明する。実施の形態３は、複数の計算機を用いて仮想ミニマックスＳに基づくミニマックス探索を並列処理で実行する例である。各行動Ｂｊに対する状態Ａｉの評価を分担して行うことは当然のこととして、ミニマックスを発見するために有用な情報も分担して収集した上で共有し、さらにその情報自体をその情報収集のために利用する。これにより、単独の計算機では実現できない効率的な探索を実現することができることになる。
【０１３１】
単独の計算機では、適切ではない仮想ミニマックスＳを設定し探索を行ってしまった場合でも、すべての行動Ｂｊに対する処理を行わなければならない上に、ミニマックスを発見するために有益な情報を収集することができない場合がある。複数の計算機を利用することにより、ミニマックスを発見するために有用な情報を複数の計算機で共有し、有用な情報を発見するための処理自体を分担して行うことが可能である。また、適切ではない設定による探索を行っているのであれば、その情報自体を効率的な情報収集に利用し、より適切な探索への再設定を行うことができる。
【０１３２】
複数の計算機を利用する主眼は、状態Ａｉの評価の分担と仮想ミニマックスＳの上限を示す仮想ミニマックス上限Ｓｍａｘ、仮想ミニマックス下限Ｓｍｉｎを分担して収集し、共有することにより収集効率を上げ、総合的にミニマックスを探索することにある。必ずしも１つの計算機でミニマックスを発見する処理を閉じる必要はなく、複数の計算機が全体としてミニマックスを発見するための処理を行う。
【０１３３】
＜システム構成例＞
図１５は、実施の形態３にかかる計算機システムのシステム構成例を示す説明図である。図４と同一構成には同一符号を付し、説明を省略する。計算機システムは、マスタとなる計算機（マスタ計算機１５００）と、スレーブとなる複数（Ｐ台）の計算機（スレーブ計算機１５０１〜１５０Ｐ）とが、ネットワーク４１０に接続されている。なお、マスタ計算機１５００およびスレーブ計算機１５０ｐのハードウェア構成例は実施の形態１と同様である。
【０１３４】
マスタ計算機１５００は、スレーブ計算機１５０１〜１５０Ｐからの計算終了のメッセージ（評価完了通知）を受け取ると、スレーブ計算機１５０１〜１５０Ｐに仮想ミニマックスを送信し、計算を再開させる。マスタ計算機１５００とスレーブ計算機１５０ｐとの間の通信は、マスタ計算機１５００のプロセッサ５０４とスレーブ計算機１５０ｐのプロセッサ５０４とを使った１対１双方向通信（たとえば、ＭＰＩ＿ＳＥＮＤ／ＭＰＩ＿ＲＥＣＶ等)でおこなわれる。
【０１３５】
実施の形態３では、マスタ計算機１５００が、仮想ミニマックス上限Ｓｍａｘ、仮想ミニマックス下限Ｓｍｉｎ、各スレーブ計算機１５０ｐが収集してくる行動Ｂｊに対する状態Ａｉの評価値Ｖｉｊを管理する。マスタ計算機１５００は、さらに仮想ミニマックス上限Ｓｍａｘおよび仮想ミニマックス下限Ｓｍｉｎによって仮想ミニマックスＳの設定範囲を制御し、探索過程において仮想ミニマックスＳを情報収集の効率が高まるように再設定する。これにより、ミニマックスを発見するために有用な仮想ミニマックス上限Ｓｍａｘ、仮想ミニマックス下限Ｓｍｉｎを収集することができる。したがって、単独の計算機でミニマックス探索を行うよりも探索効率が大きく向上する。
【０１３６】
＜ミニマックス並列探索例＞
つぎに、実施の形態３にかかるミニマックス並列探索例について図１６〜図２４を用いて時系列で説明する。図１６〜図２４では、一例としてスレーブ計算機をＰ＝２台とする。また、実施の形態１，２と同様、行動数ｍ＝４、状態数ｎ＝４で説明する。また、実施の形態３では、スレーブ計算機１５０ｐが、行動Ｂｊおよび状態Ａｉで指定される探索空間Ｔを有し、マスタ計算機１５００は、行動Ｂｊごとに最大評価値候補ＶＣｊｍａｘまたは最大評価値Ｖｊｍａｘを記憶する評価値テーブルＴ０を有するものとする。なお、スレーブ計算機１５０ｐは、ここでは物理マシンとして説明するが、仮想マシンでもよい。
【０１３７】
図１６は、実施の形態３にかかるミニマックス並列探索例（その１）を示す説明図である。図１６において、マスタ計算機１５００は、探索開始位置列｛ＳＰｐ｝を生成する。探索開始位置列｛ＳＰｐ｝とは、探索開始位置ＳＰｐがスレーブ計算機１５０ｐの個数Ｐ分配列したデータ列である。ｐはスレーブ計算機１５０ｐを特定する番号である。探索開始位置ＳＰｐは、探索空間Ｔ内の位置Ｃｉｊであり、スレーブ計算機１５０ｐごとに異なる。
【０１３８】
詳細は後述するが、探索開始位置ＳＰｐは、同一位置Ｃｉｊの評価値Ｖｉｊの取得を回避するため、探索空間Ｔｐの対角位置で等間隔で配列するのが好ましい。本例では、探索開始位置列｛ＳＰｐ｝は、スレーブ計算機１５０１の探索開始位置ＳＰ１と、スレーブ計算機１５０２の探索開始位置ＳＰ２と、を有する。ここでは、例として、探索開始位置ＳＰ１を位置Ｃ１１とし、探索開始位置ＳＰ２を位置Ｃ３３とする。マスタ計算機１５００は、探索開始位置ＳＰ１，ＳＰ２を、それぞれのスレーブ計算機１５０１，１５０２に配信する。スレーブ計算機１５０１，１５０２は、それぞれ探索開始位置ＳＰ１，ＳＰ２を受信する。各スレーブ計算機１５０１，１５０２は、受信した探索開始位置から評価値の取得をおこなうことになる。
【０１３９】
また、マスタ計算機１５００は、仮想ミニマックス列｛Ｓｐ｝を生成する。仮想ミニマックス列｛Ｓｐ｝は、仮想ミニマックスＳがスレーブ計算機１５０ｐの個数Ｐ分配列したデータ列である。ｐはスレーブ計算機を特定する番号である。本例では、仮想ミニマックス列｛Ｓｐ｝は、スレーブ計算機１５０１の仮想ミニマックスＳ１と、スレーブ計算機１５０２の仮想ミニマックスＳ２と、を有する。Ｓ１≠Ｓ２である。
【０１４０】
詳細は後述するが、マスタ計算機１５００は、たとえば、初項が仮想ミニマックスＳｍｉｎ、増分を増加量ΔＳとする要素数Ｐ個の等差数列で表現される。ここでは、Ｐ＝２としており、Ｓ１＝０、Ｓ２＝１００とする。マスタ計算機１５００は、仮想ミニマックスＳ１，Ｓ２を、それぞれのスレーブ計算機１５０１，１５０２に配信する。スレーブ計算機１５０１，１５０２は、それぞれ仮想ミニマックスＳ１，Ｓ２を受信する。なお、各スレーブ計算機１５０１，１５０２の探索空間Ｔ１、Ｔ２では、評価値Ｂｉｊは未取得である。
【０１４１】
図１７は、実施の形態３にかかるミニマックス並列探索例（その２）を示す説明図である。図１７において、スレーブ計算機１５０１は、受信した探索開始位置ＳＰ１＝Ｃ１１から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ１１の評価値Ｖ１１＝４とする。評価値Ｖ１１＝４は、受信した仮想ミニマックスＳ１よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ１に対する状態Ａ２〜Ａ４についての評価はスキップされ、行動Ｂ２に対し状態Ａ１から順に選択することになる。
【０１４２】
また、スレーブ計算機１５０１は、行動Ｂ１での評価が終了したため、枝刈り発生時の評価値Ｖ１１＝４を、行動Ｂ１での最大評価値候補ＶＣ１ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ１ｍａｘ＝４を受信して、評価値テーブルＴ０に書き込む。
【０１４３】
スレーブ計算機１５０２も同様に、受信した探索開始位置ＳＰ２＝Ｃ３３から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ３３の評価値Ｖ３３＝７とする。評価値Ｖ３３＝７は、受信した仮想ミニマックスＳ２以下であるため、枝刈り規則が適用されない。したがって、つぎの状態Ａ４が選択され、行動Ｂ３に対する状態Ａ４の評価が実行されることになる。
【０１４４】
図１８は、実施の形態３にかかるミニマックス並列探索例（その３）を示す説明図である。図１８において、スレーブ計算機１５０１は、行動Ｂ１の評価が枝刈りで打ち切られたため、位置Ｃ１２から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ１２の評価値Ｖ１２＝１０とする。評価値Ｖ１２＝１０は、仮想ミニマックスＳ１よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ２に対する状態Ａ２〜Ａ４についての評価はスキップされ、行動Ｂ３に対し状態Ａ１から順に選択することになる。
【０１４５】
また、スレーブ計算機１５０１は、行動Ｂ２での評価が終了したため、枝刈り発生時の評価値Ｖ１２＝１０を、行動Ｂ２での最大評価値候補ＶＣ２ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ２ｍａｘ＝１０を受信して、評価値テーブルＴ０に書き込む。
【０１４６】
スレーブ計算機１５０２では、行動Ｂ３に対し選択された状態Ａ４の評価値Ｖ４３＝９を取得する。評価値Ｖ４３＝９は、仮想ミニマックスＳ２以下であるため、枝刈り規則が適用されない。したがって、つぎの状態Ａ１が選択され、行動Ｂ３に対する状態Ａ１の評価が実行されることになる。
【０１４７】
図１９は、実施の形態３にかかるミニマックス並列探索例（その４）を示す説明図である。図１９において、スレーブ計算機１５０１は、行動Ｂ２の評価が枝刈りで打ち切られたため、位置Ｃ１３から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ１３の評価値Ｖ１３＝７とする。評価値Ｖ１３＝７は、仮想ミニマックスＳ１よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ３に対する状態Ａ２〜Ａ４についての評価はスキップされ、行動Ｂ４に対し状態Ａ１から順に選択することになる。
【０１４８】
また、スレーブ計算機１５０１は、行動Ｂ３での評価が終了したため、枝刈り発生時の評価値Ｖ１３＝７を、行動Ｂ３での最大評価値候補ＶＣ３ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ３ｍａｘ＝７を受信して、評価値テーブルＴ０に書き込む。
【０１４９】
スレーブ計算機１５０２では、行動Ｂ３に対し選択された状態Ａ１の評価値Ｖ１３＝７を取得する。評価値Ｖ１３＝７は、仮想ミニマックスＳ２以下であるため、枝刈り規則が適用されない。したがって、つぎの状態Ａ２が選択され、行動Ｂ３に対する状態Ａ２の評価が実行されることになる。
【０１５０】
図２０は、実施の形態３にかかるミニマックス並列探索例（その５）を示す説明図である。図２０において、スレーブ計算機１５０１は、行動Ｂ１の評価が枝刈りで打ち切られたため、位置Ｃ１４から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ１４の評価値Ｖ１４＝５とする。評価値Ｖ１４＝５は、仮想ミニマックスＳ１よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ４に対する状態Ａ２〜Ａ４についての評価はスキップされる。
【０１５１】
また、スレーブ計算機１５０１は、行動Ｂ４での評価が終了したため、枝刈り発生時の評価値Ｖ１４＝５を、行動Ｂ４での最大評価値候補ＶＣ４ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ４ｍａｘ＝５を受信して、評価値テーブルＴ０に書き込む。また、スレーブ計算機１５０１は、すべての行動Ｂ１〜Ｂ４について評価が終了したことになるため、評価完了通知をマスタ計算機１５００に送信する。
【０１５２】
スレーブ計算機１５０２では、行動Ｂ３に対し選択された状態Ａ２の評価値Ｖ２３＝８を取得する。評価値Ｖ２３＝８は、仮想ミニマックスＳ２以下であるため、枝刈り規則が適用されない。行動Ｂ３では未選択の状態がなくなったため、行動Ｂ３での最大評価値Ｖ３ｍａｘ＝９をマスタ計算機１５００に送信する。マスタ計算機１５００は、受信した行動Ｂ３での最大評価値Ｖ３ｍａｘ＝９を評価値テーブルＴ０に書き込む。これにより、行動Ｂ３については最大評価値Ｖ３ｍａｘ＝９が確定する。また、スレーブ計算機１５０２では、行動Ｂ３について最大評価値Ｖ３ｍａｘが得られたため、計算の評価完了通知をマスタ計算機１５００に送信する。
【０１５３】
マスタ計算機１５００は、先に受けたスレーブ計算機１５０１からの評価完了通知により、仮想ミニマックス列｛Ｓｐ｝の更新をおこなう。具体的には、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス下限Ｓｍｉｎを、最大評価値候補群の中の最小の最大評価値候補に更新する。本例の場合は、ＶＣ１ｍａｘ＝４が仮想ミニマックス下限Ｓｍｉｎとなる。また、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス上限Ｓｍａｘを、最大評価値群の中の最小の最大評価値に更新する。本例の場合は、Ｖ３ｍａｘ＝９が仮想ミニマックス上限Ｓｍａｘとなる。
【０１５４】
このあと、マスタ計算機１５００では、更新後の仮想ミニマックス下限Ｓｍｉｎおよび仮想ミニマックス上限Ｓｍａｘを用いて、仮想ミニマックス列｛Ｓｐ｝の再生成をおこなう。これにより、仮想ミニマックスＳ１＝４、仮想ミニマックスＳ２＝９になる。そして、マスタ計算機１５００は、更新された仮想ミニマックスＳ１＝４を、スレーブ計算機１５０１に送信する。この時点では、マスタ計算機１５００は、スレーブ計算機１５０２から評価完了通知を受け付けているが、ウェイト状態であるため、仮想ミニマックスＳ２は送信されていないものとする。
【０１５５】
図２１は、実施の形態３にかかるミニマックス並列探索例（その６）を示す説明図である。図２１において、スレーブ計算機１５０１は、マスタ計算機１５００からあらたに送信されてきた仮想ミニマックスＳ１を用いて、探索開始位置ＳＰ１から評価をおこなう。位置Ｃ１１の評価値Ｖ１１はＶ１１＝４であり、評価値Ｖ１１＝４は、受信した仮想ミニマックスＳ１＝４と同じであるため、枝刈り規則が適用されない。
【０１５６】
したがって、つぎの状態Ａ２が選択され、行動Ｂ１に対する状態Ａ２の評価が実行されることになる。行動Ｂ１に対する状態Ａ２の評価値Ｖ２１＝８とする。評価値Ｖ２１＝８は、仮想ミニマックスＳ１＝４よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ１に対する状態Ａ３，Ａ４についての評価はスキップされ、行動Ｂ２に対し状態Ａ１から順に選択することになる。
【０１５７】
また、スレーブ計算機１５０１は、行動Ｂ１での評価が終了したため、枝刈り発生時の評価値Ｖ２１＝８を、行動Ｂ１での最大評価値候補ＶＣ１ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ１ｍａｘ＝８を受信して、評価値テーブルＴ０に書き込む。
【０１５８】
図２２は、実施の形態３にかかるミニマックス並列探索例（その７）を示す説明図である。図２２において、スレーブ計算機１５０１は、行動Ｂ１の評価が枝刈りで打ち切られたため、位置Ｃ１２から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ１２の評価値Ｖ１２＝１０であり、仮想ミニマックスＳ１＝４よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ２に対する状態Ａ２〜Ａ４についての評価はスキップされ、行動Ｂ３に対し状態Ａ１から順に選択することになる。
【０１５９】
また、スレーブ計算機１５０１は、行動Ｂ２での評価が終了したため、枝刈り発生時の評価値Ｖ１２＝１０を、行動Ｂ２での最大評価値候補ＶＣ２ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ２ｍａｘ＝１０を受信して、評価値テーブルＴ０に書き込む。
【０１６０】
また、スレーブ計算機１５０１は、行動Ｂ２の評価が枝刈りで打ち切られたため、位置Ｃ１３から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ１３の評価値Ｖ１３＝７であり、仮想ミニマックスＳ１＝４よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ３に対する状態Ａ２〜Ａ４についての評価はスキップされ、行動Ｂ３に対し状態Ａ１から順に選択することになる。
【０１６１】
スレーブ計算機１５０１は、行動Ｂ３での評価が終了したため、枝刈り発生時の評価値Ｖ１３＝７を、行動Ｂ３での最大評価値候補ＶＣ３ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ３ｍａｘ＝１０を受信するが、すでに行動Ｂ３の最大評価値Ｖ３ｍａｘが「９」に確定しているため、これ以上の書込みはしない。
【０１６２】
また、ここで、マスタ計算機１５００は、ウェイトさせていたスレーブ計算機１５０２からの評価完了通知を受けて、仮想ミニマックス列｛Ｓｐ｝の更新をおこなう。具体的には、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス下限Ｓｍｉｎを、最大評価値候補群の中の最小の最大評価値候補に更新する。本例の場合は、ＶＣ４ｍａｘ＝５が仮想ミニマックス下限Ｓｍｉｎとなる。また、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス上限Ｓｍａｘを、最大評価値群の中の最小の最大評価値に更新する。本例の場合は、最大評価値Ｖ３ｍａｘ＝９が仮想ミニマックス上限Ｓｍａｘとなる。
【０１６３】
このあと、マスタ計算機１５００では、更新後の仮想ミニマックス下限Ｓｍｉｎおよび仮想ミニマックス上限Ｓｍａｘを用いて、仮想ミニマックス列｛Ｓｐ｝の再生成をおこなう。これにより、仮想ミニマックスＳ１＝５、仮想ミニマックスＳ＝９になる。そして、マスタ計算機１５００は、更新された仮想ミニマックスＳ２＝９を、スレーブ計算機１５０２に送信する。この時点では、マスタ計算機１５００は、スレーブ計算機１５０１から評価完了通知を受け付けていないため、仮想ミニマックスＳ１＝５は、スレーブ計算機１５０１に送信されない。
【０１６４】
また、スレーブ計算機１５０２では、仮想ミニマックスＳ２＝９を受信することで、探索開始位置ＳＰ２からの評価を開始する。スレーブ計算機１５０２では、探索開始位置ＳＰ２＝Ｃ３３についての行動Ｂ３の評価は終了しているため、行動Ｂ４に対する状態Ａ３から評価を開始する。
【０１６５】
そして、スレーブ計算機１５０２では、行動Ｂ４に対し選択された状態Ａ３の評価値Ｖ３４＝３を取得する。評価値Ｖ３４＝３は、仮想ミニマックスＳ２＝９以下であるため、枝刈り規則が適用されない。したがって、つぎの状態Ａ４が選択され、行動Ｂ４に対する状態Ａ４の評価が実行されることになる。
【０１６６】
図２３は、実施の形態３にかかるミニマックス並列探索例（その８）を示す説明図である。図２３において、スレーブ計算機１５０１は、行動Ｂ３の評価が枝刈りで打ち切られたため、位置Ｃ１４から評価値Ｖｉｊの取得をおこなう。ここでは、位置Ｃ１４の評価値Ｖ１４＝５であり、仮想ミニマックスＳ１＝４よりも大きいため、枝刈り規則が適用される。したがって、行動Ｂ４に対する状態Ａ２〜Ａ４についての評価はスキップされる。
【０１６７】
スレーブ計算機１５０１は、行動Ｂ４での評価が終了したため、枝刈り発生時の評価値Ｖ１４＝５を、行動Ｂ４での最大評価値候補ＶＣ４ｍａｘとしてマスタ計算機１５００に送信する。マスタ計算機１５００は、スレーブ計算機１５０１からの最大評価値候補ＶＣ４ｍａｘ＝５を受信して、評価値テーブルＴ０に書き込む。また、スレーブ計算機１５０１は、すべての行動Ｂ１〜Ｂ４について評価が終了したことになるため、評価完了通知をマスタ計算機１５００に送信する。
【０１６８】
マスタ計算機１５００は、スレーブ計算機１５０１からの評価完了通知により、仮想ミニマックス列｛Ｓｐ｝の更新をおこなう。具体的には、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス下限Ｓｍｉｎを、最大評価値候補群の中の最小の最大評価値候補に更新する。本例の場合は、ＶＣ４ｍａｘ＝５が仮想ミニマックス下限Ｓｍｉｎとなる。また、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス上限Ｓｍａｘを、最大評価値群の中の最小の最大評価値に更新する。本例の場合は、最大評価値Ｖ３ｍａｘ＝９が仮想ミニマックス上限Ｓｍａｘとなる。
【０１６９】
このあと、マスタ計算機１５００では、更新後の仮想ミニマックス下限Ｓｍｉｎおよび仮想ミニマックス上限Ｓｍａｘを用いて、仮想ミニマックス列｛Ｓｐ｝の再生成をおこなう。これにより、仮想ミニマックスＳ１＝５、仮想ミニマックスＳ２＝９になる。そして、マスタ計算機１５００は、更新された仮想ミニマックスＳ１＝５を、スレーブ計算機１５０１に送信する。この時点では、マスタ計算機１５００は、スレーブ計算機１５０２から評価完了通知を受け付けていないため、仮想ミニマックスＳ２は送信されない。
【０１７０】
図２４は、実施の形態３にかかるミニマックス並列探索例（その９）を示す説明図である。図２４において、スレーブ計算機１５０１は、探索開始位置ＳＰ１＝Ｃ１１から評価値Ｖｉｊの取得をおこなう。現時点での仮想ミニマックスＳ１はＳ１＝５であるため、スレーブ計算機１５０１では、行動Ｂ１では状態Ａ３，Ａ４、行動Ｂ２では状態Ａ２〜Ａ４が枝刈りされる。したがって、スレーブ計算機１５０１は、マスタ計算機１５００に対し、最大評価値候補ＶＣ１ｍａｘ＝８、ＶＣ２ｍａｘ＝１０を送信する。これにより、評価値テーブルＴ０が更新される。
【０１７１】
一方、スレーブ計算機１５０２では、行動Ｂ４に対し状態Ａ４が選択されて評価値Ｖ４４＝２を得る。評価値Ｖ４４＝２は仮想ミニマックスＳ２＝９以下であるため、枝刈り規則は適用されない。スレーブ計算機１５０２では、行動Ｂ４に対しつぎの状態Ａ１が選択されて評価値Ｖ１４＝５を得る。評価値Ｖ１４＝５は仮想ミニマックスＳ２＝９以下であるため、枝刈り規則は適用されない。
【０１７２】
スレーブ計算機１５０２では、行動Ｂ４に対しつぎの状態Ａ２が選択されて評価値Ｖ２４＝６を得る。評価値Ｖ２４＝６は仮想ミニマックスＳ２＝９以下であるため、枝刈り規則は適用されない。これにより、行動Ｂ４での評価が終了して、最大評価値Ｖ４ｍａｘ＝Ｖ２４＝６が得られたため、スレーブ計算機１５０２は、最大評価値Ｖ４ｍａｘ＝６および評価完了通知をマスタ計算機１５００に送信する。
【０１７３】
マスタ計算機１５００は、スレーブ計算機１５０２からの評価完了通知により、仮想ミニマックス列｛Ｓｐ｝の更新をおこなう。具体的には、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス下限Ｓｍｉｎを、最大評価値候補群の中の最小の最大評価値候補に更新する。本例の場合は、ＶＣ１ｍａｘ＝８が仮想ミニマックス下限Ｓｍｉｎとなる。また、マスタ計算機１５００は、評価値テーブルＴ０を参照し、仮想ミニマックス上限Ｓｍａｘを、最大評価値群の中の最小の最大評価値に更新する。本例の場合は、Ｖ４ｍａｘ＝６が仮想ミニマックス上限Ｓｍａｘとなる。
【０１７４】
この場合、Ｓｍｉｎ＞Ｓｍａｘであることから、マスタ計算機１５００では、仮想ミニマックスＳ１，Ｓ２の更新をせずに、評価値テーブルＴ０の最大評価値群の中の最小の最大評価値をミニマックスに決定する。本例では、行動Ｂ４の最大評価値Ｖ４ｍａｘ＝６がミニマックスとなる。これにより、最適な行動は行動Ｂ４であり、ミニマックスは「６」であることがわかる。最後に、マスタ計算機１５００は、評価を実行中であるスレーブ計算機１５０１，１５０２に評価完了通知を送信することで、スレーブ計算機１５０１，１５０２での評価は終了する。
【０１７５】
上述した例では、マスタ計算機１５００とスレーブ計算機１５０１〜１５０Ｐとの間で、探索空間を共有していない場合を例に挙げて説明したが、マスタ計算機１５００とスレーブ計算機１５０１〜１５０Ｐとの間で探索空間を共有することとしてもよい。この場合、マスタ計算機１５００の記憶装置５０１には、さらに、探索空間を保持することになり、スレーブ計算機１５０ｐでは、算出された評価値Ｖｉｊをマスタ計算機１５００や他のスレーブ計算機の探索空間に、ＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）で書き込むことになる。
【０１７６】
＜スレーブ計算機の機能的構成例＞
図２５は、実施の形態３にかかるスレーブ計算機１５０ｐの機能的構成例を示すブロック図である。スレーブ計算機１５０ｐは、受信部２５０１と、選択部２５０２と、取得部２５０３と、第１の特定部２５０４と、制御部２５０５と、第２の特定部２５０６と、送信部２５０７と、を備える。受信部２５０１〜送信部２５０７は、具体的には、たとえば、図５に示した記憶装置５０１に記憶されたプログラムをプロセッサ５０４に実行させることによりその機能を実現する。なお、選択部２５０２、取得部２５０３、第１の特定部２５０４および制御部２５０５は、実施の形態２の選択部１１０１、取得部１１０２、特定部１１０３および制御部１１０４と同一内容であるため、説明を省略する。
【０１７７】
受信部２５０１は、記憶装置５０１に記憶されている探索空間Ｔｐのうちいずれかの行動および状態で指定された開始位置および任意の値をとる仮想ミニマックスをマスタ計算機１５００から受信する。具体的には、たとえば、受信部２５０１は、マスタ計算機１５００で生成された探索開始位置ＳＰｐを受信する。たとえば、スレーブ計算機１５０１の場合は、探索開始位置ＳＰ１＝Ｃ１１を受信する。これにより、選択部２５０２は、探索開始位置ＳＰｐから評価を実行することになる。
【０１７８】
また、受信部２５０１は、マスタ計算機１５００で得られた仮想ミニマックスＳｐを受信する。仮想ミニマックスＳｐは探索開始時と、スレーブ計算機１５０ｐから評価完了通知を送信した場合に受信される。
【０１７９】
第２の特定部２５０６は、選択中の行動に対し選択の打ち切りが発生した場合、打ち切りが発生したときの評価値を選択中の行動での最大評価値候補として特定する。たとえば、図１７に示したように、スレーブ計算機１５０１では、行動Ｂ１に対する状態Ａ１の評価値Ｖ１１で枝刈りが発生したため、評価値Ｖ１１が行動Ｂ１の最大評価値候補ＶＣ１ｍａｘとして特定される。
【０１８０】
送信部２５０７は、選択中の行動に対して特定された最大評価値または最大評価値候補をマスタ計算機１５００に送信する。具体的には、たとえば、図２０に示したように、スレーブ計算機１５０２では、行動Ｂ３で最大評価値Ｖ３ｍａｘ＝９を特定したため、マスタ計算機１５００に最大評価値Ｖ３ｍａｘ＝９を送信する。また、図１７に示したように、スレーブ計算機１５０１では、最大評価値候補ＶＣ１ｍａｘ＝４を特定したため、マスタ計算機１５００に最大評価値ＶＣ１ｍａｘ＝４を送信する。
【０１８１】
また、送信部２５０７は、いずれかの行動の最大評価値が得られた場合、または、各行動の最大評価値候補が得られた場合、評価完了通知をマスタ計算機１５００に送信する。具体的には、たとえば、図２０に示したように、スレーブ計算機１５０２では、行動Ｂ３で最大評価値Ｖ３ｍａｘ＝９を特定したため、マスタ計算機１５００に評価完了通知を送信する。また、図２０に示したように、スレーブ計算機１５０１では、すべての行動Ｂ１〜行動Ｂ４の最大評価値候補ＶＣ１ｍａｘ〜ＶＣ４ｍａｘを特定したため、マスタ計算機１５００に評価完了通知を送信する。
【０１８２】
＜マスタ計算機１５００の機能的構成例＞
図２６は、実施の形態３にかかるマスタ計算機１５００の機能的構成例を示すブロック図である。マスタ計算機１５００は、設定部２６０１と、配信部２６０２と、受信部２６０３と、格納部２６０４と、検出部２６０５と、更新部２６０６と、判定部２６０７と、決定部２６０８と、出力部２６０９と、を備える。設定部２６０１〜出力部２６０９は、具体的には、たとえば、図５に示した記憶装置５０１に記憶されたプログラムをプロセッサ５０４に実行させることによりその機能を実現する。
【０１８３】
設定部２６０１は、行動群の行動ごとに状態群の各状態を指定可能な探索空間Ｔｐのうちいずれかの行動および状態で指定された開始位置を、スレーブ計算機１５０ｐごとに異なるように設定する。開始位置ＳＰｐは互いに異なるようにすればランダムに決定してもよい。
【０１８４】
また、設定部２６０１は、スレーブ計算機の数Ｐに基づいて、開始位置をスレーブ計算機ごとに異なるように設定することとしてもよい。たとえば、探索空間Ｔｐ内の行動Ｂ１〜ＢｍをＰで分割し、状態Ａ１〜ＡｎをＰで分割する。そして、分割されたブロック内のいずれかの位置Ｃｉｊを、スレーブ計算機１５０ｐごとに割り当てる。
【０１８５】
たとえば、図１６の例では、Ｐ＝２であるため、行動Ｂ１〜Ｂ４を２分割、状態Ａ１〜Ａ４を２分割する。そして、設定部２６０１は、行動Ｂ１，Ｂ２、状態Ａ１，Ａ２のブロックから、たとえば、位置Ｃ１１を探索開始位置ＳＰ１とし、行動Ｂ３，Ｂ４、状態Ａ３，Ａ４のブロックから、たとえば、位置Ｃ３３を探索開始位置ＳＰ２とする。
【０１８６】
ここで、位置Ｃ１１、Ｃ３３のように、探索開始位置列を、対角方向に配列することで、スレーブ計算機間の同一位置での重複評価を低減することができる。なお、対角方向であれば、位置Ｃ１１，Ｃ３３の組み合わせのほか、位置Ｃ２２，Ｃ４４でもよい。なお、位置Ｃ１１，Ｃ２２の組み合わせなどのように位置の間隔が近いと重複評価が発生する可能性が高くなるため、等距離に配列するのが好ましい。
【０１８７】
また、設定部２６０１は、任意の値をとる仮想ミニマックスＳｐをスレーブ計算機１５０ｐごとに異なるように設定する。具体的には、たとえば、設定部２６０１は、仮想ミニマックスＳｐの増加量ΔＳとスレーブ計算機の数Ｐとに基づいて、仮想ミニマックスＳｐをスレーブ計算機１５０ｐごとに異なるように設定する。たとえば、仮想ミニマックス下限Ｓｍｉｎの初期値を十分小さい値の例として０、仮想ミニマックス上限Ｓｍａｘの初期値を十分大きい値の例として１００とする。この場合、設定部２６０１では、下記式（１）を満たすか否かで増加量ΔＳを更新する。
【０１８８】
Ｓｍｉｎ＋ΔＳ×（Ｐ−１）≦Ｓｍａｘ・・・（１）
【０１８９】
増加量ΔＳの初期値をΔＳ＝１００、Ｐ＝２として上記式（１）に各値を代入すると、左辺は、０＋１００×（２−１）＝１００となる。右辺は、１００である。この場合は、上記式（１）を満たすため、仮想ミニマックス列｛Ｓｐ｝は、初項Ｓｍｉｎ＝１００、増加量ΔＳ＝１００、要素数Ｐ個の等差数列｛０，１００｝となる。したがって、図１６に示したように、スレーブ計算機１５０１の仮想ミニマックスＳ１はＳ１＝０となり、スレーブ計算機１５０２の仮想ミニマックスＳ２はＳ２＝１００となる。
【０１９０】
すなわち、仮想ミニマックス列｛Ｓｐ｝の設定を繰り返すことで、仮想ミニマックス下限Ｓｍｉｎは探索が進むにつれて必ず真のミニマックスに近づいていくため、仮想ミニマックス下限Ｓｍｉｎによって仮想ミニマックスＳｐはミニマックスに近い値に更新されていくことは保証される。
【０１９１】
また、上記式（１）を満たさなかった場合、探索刻み幅である増加量ΔＳを下記式（２）で更新する。
【０１９２】
ΔＳ＝（Ｓｍａｘ−Ｓｍｉｎ）／（Ｐ−１）・・・（２）
【０１９３】
すなわち、ある行動に対してすべての状態を評価できた場合には、計算を行った仮想ミニマックスＳｐ以下のミニマックス候補となる仮想ミニマックス上限Ｓｍａｘが見つかっている。仮想ミニマックス上限Ｓｍａｘは探索刻み幅である増加量ΔＳを更新するのに有効に活用することが可能である。そのため、上記式（２）で示したように、ΔＳを更新して仮想ミニマックス列｛ＳＰｐ｝の再設定をおこなう。つまり、仮想ミニマックス上限Ｓｍａｘが与えられた増加量ΔＳで計算可能な仮想ミニマックスＳｐよりも低い値ならば、増加量ΔＳを細かくすることが可能になる。この場合には増加量ΔＳを上記式（２）で更新して仮想ミニマックス列｛ＳＰｐ｝の再設定をおこなう。
【０１９４】
配信部２６０２は、設定部２６０１によってスレーブ計算機ごとに設定された開始位置および仮想ミニマックスを、各スレーブ計算機に配信する。具体的には、たとえば、配信部２６０２は、探索開始位置ＳＰｐをスレーブ計算機１５０ｐに送信する。同様に、配信部２６０２は、仮想ミニマックスＳｐをスレーブ計算機１５０ｐに送信する。
【０１９５】
受信部２６０３は、スレーブ計算機から送信されてくる情報を受信する。たとえば、受信部２６０３は、最大評価値Ｖｊｍａｘ、最大評価値候補ＶＣｊｍａｘ、評価完了通知をスレーブ計算機１５０ｐから受信する。
【０１９６】
格納部２６０４は、各スレーブ計算機から送信されてきた最大評価値または最大評価値候補を、記憶装置５０１内の該当する行動の記憶領域に書き込む。具体的には、たとえば、図１６〜図２４に示したように、評価値テーブルＴ０の該当する行動に、最大評価値Ｖｊｍａｘまたは最大評価値候補ＶＣｊｍａｘを書き込む。なお、すでに最大評価値Ｖｊｍａｘが格納済みである場合は、同一行動Ｂｊについて最大評価値候補ＶＣｊｍａｘが受信されても書き込む必要はない。これにより、最大評価値候補ＶＣｊｍａｘの書込みによるマスタ計算機１５００の処理負荷軽減を図ることができる。
【０１９７】
検出部２６０５は、複数のスレーブ計算機のうちいずれかのスレーブ計算機からの評価完了通知を検出する。評価完了通知は、仮想ミニマックス列｛Ｓｐ｝の再設定のトリガとなる。
【０１９８】
更新部２６０６は、検出部２６０５によって評価完了通知が検出された場合、仮想ミニマックス下限Ｓｍｉｎを、記憶装置５０１に記憶されている最大評価値候補群のうち最小の最大評価値候補に更新する。具体的には、たとえば、図２０に示したように、更新部２６０６は、仮想ミニマックス下限Ｓｍｉｎを、評価値テーブルＴ０の最大評価値候補群のうち最小の最大評価値候補ＶＣ１ｍａｘ＝４に更新する。また、更新部２６０６は、仮想ミニマックス上限Ｓｍａｘを、記憶装置５０１に記憶されている最大評価値群の最小の最大評価値に更新する。具体的には、たとえば、図２０に示したように、更新部２６０６は、仮想ミニマックス上限Ｓｍａｘを、評価値テーブルＴ０の最大評価値群のうち最小の最大評価値Ｖ３ｍａｘ＝９に更新する。
【０１９９】
このように、仮想ミニマックス下限Ｓｍｉｎと仮想ミニマックス上限Ｓｍａｘが更新されると、設定部２６０１では、上記式（１）を用いて、仮想ミニマックス列｛Ｓｐ｝を再設定する。これにより、仮想ミニマックスＳｐが更新されて、配信部２６０２により再配信されることになる。
【０２００】
判定部２６０７は、更新部２６０６による更新後の仮想ミニマックス下限が更新部２６０６による更新後の仮想ミニマックス上限よりも大きいか否かを判定する。具体的には、たとえば、判定部２６０７は、Ｓｍｉｎ＞Ｓｍａｘになったか否かを判定する。このような状態になった場合は、未探索範囲にミニマックスが存在しないことを意味する。
【０２０１】
決定部２６０８は、判定部２６０７によって大きいと判定されたときの更新後の仮想ミニマックス上限をミニマックスに決定する。すなわち、決定部２６０８は、Ｓｍｉｎ＞Ｓｍａｘになった場合は、最新の仮想ミニマックス上限Ｓｍａｘをミニマックスに決定する。これにより、ミニマックスが発見されることになる。たとえば、図２４では、Ｓｍｉｎ＞Ｓｍａｘになったときの仮想ミニマックス上限Ｓｍａｘ＝６であるため、ミニマックスは行動Ｂ４に対する状態Ａ２での評価値Ｖ２４＝６であることが判明する。
【０２０２】
出力部２６０９は、決定部２６０８によってミニマックスが決定された行動を出力する。具体的には、たとえば、ミニマックスが決定された行動の名称（たとえば、「蓄電池運転計画１」のような行動を示す文字列）を出力する。なお、行動だけではなく、ミニマックス（の値）や状態（の名称）も出力してもよい。図２４の例では、たとえば、｛行動Ｂ４、状態Ａ２、ミニマックス＝６｝が出力結果として出力される。出力部２６０９は、このような出力結果を出力装置５０３や記憶装置５０１に出力する。出力装置５０３に出力した場合は、出力装置５０３に応じた出力（画面表示、印刷、他の装置への送信、音声読み上げ）が行われる。記憶装置５０１に出力された場合は、記憶装置５０１に格納されることになる。
【０２０３】
＜マスタ計算機１５００によるミニマックス探索処理手順例＞
図２７は、マスタ計算機１５００によるミニマックス探索処理手順例（前半）を示すフローチャートである。まず、図２７において、マスタ計算機１５００は、計算開始まで待ち受け（ステップＳ２７０１：Ｎｏ）、計算開始の場合（ステップＳ２７０１：Ｙｅｓ）、スレーブ計算機の台数（計算プロセス数）Ｐ、仮想ミニマックス上限Ｓｍａｘ、仮想ミニマックス下限Ｓｍｉｎ、増加量ΔＳを取得する（ステップＳ２７０２）。これらは、あらかじめ記憶装置５０１に保持されているファイルを読み込んでもよく、入力装置５０２からの操作入力により受け付けることとしてもよい。
【０２０４】
つぎに、マスタ計算機１５００は、設定部２６０１により探索開始位置列｛ＳＰｐ｝を設定し（ステップＳ２７０３）、各スレーブ計算機１５０ｐに、対応する探索開始位置ＳＰｐを送信する（ステップＳ２７０４）。このあと、マスタ計算機１５００は、設定部２６０１により、仮想ミニマックス設定処理（ステップＳ２７０５）を実行する。仮想ミニマックス設定処理（ステップＳ２７０５）の詳細については、図２９で説明するが、これにより、仮想ミニマックス列｛Ｓｐ｝、すなわち、スレーブ計算機ごとの仮想ミニマックスＳｐが設定される。したがって、マスタ計算機１５００は、各スレーブ計算機１５０ｐに、対応する仮想ミニマックスＳｐを送信して（ステップＳ２７０６）、図２８のステップＳ２８０１に移行する。
【０２０５】
図２８−１は、マスタ計算機１５００によるミニマックス探索処理手順例（後半）を示すフローチャートである。図２８−１では、マスタ計算機１５００は、評価値テーブルＴ０への書込み要求が受信されたか否かを判断する（ステップＳ２８０１）。すなわち、いずれかのスレーブ計算機１５０ｐから最大評価値Ｖｊｍａｘまたは最大評価値候補ＶＣｊｍａｘが受信されたか否かを判断する。受信されていない場合（ステップＳ２８０１：Ｎｏ）、ステップＳ２８０４に移行する。一方、受信された場合（ステップＳ２８０１：Ｙｅｓ）、マスタ計算機１５００は、書き込み要求された最大評価値Ｖｊｍａｘまたは最大評価値候補ＶＣｊｍａｘが、評価値テーブルＴ０に記録されているものと比較して更新する必要があるか否かを判定する（ステップＳ２８０２）。すなわち、他のスレーブ計算機ですでに計算した状態を重複して計算している場合があるため、ステップＳ２８０２を実行することになる。
【０２０６】
そして、ステップＳ２８０２において、更新する必要がない場合（ステップＳ２８０２：Ｎｏ）、ステップＳ２８０４に移行する。一方、更新する必要がある場合（ステップＳ２８０２：Ｙｅｓ）、マスタ計算機１５００は、書込み要求に含まれている最大評価値Ｖｊｍａｘまたは最大評価値候補ＶＣｊｍａｘを、評価値テーブルＴ０に書き込んで（ステップＳ２８０３）、ステップＳ２８０４に移行する。
【０２０７】
ステップＳ２８０４では、マスタ計算機１５００は、いずれかのスレーブ計算機１５０ｐから評価完了通知を受信したか否か判断する（ステップＳ２８０４）。受信されていない場合（ステップＳ２８０４：Ｎｏ）、マスタ計算機１５００は、評価値テーブルＴ０を参照して、評価済みの行動の最大評価値群の中からミニマックス候補を特定する（ステップＳ２８０５）。すなわち、マスタ計算機１５００は、最大評価値群の中から最小となる最大評価値を特定する。そして、マスタ計算機１５００は、特定したミニマックス候補で仮想ミニマックス上限Ｓｍａｘを更新する（ステップＳ２８０６）。これにより、仮想ミニマックス上限Ｓｍａｘは段階的に低下することになる。
【０２０８】
また、マスタ計算機１５００は、評価値テーブルＴ０を参照して、最大評価値候補群の中から最小となる最大評価値候補を仮想ミニマックス下限Ｓｍｉｎとして特定する（ステップＳ２８０５）。そして、マスタ計算機１５００は、特定した仮想ミニマックス下限Ｓｍｉｎで、仮想ミニマックス下限Ｓｍｉｎを更新する（ステップＳ２８０８）。
【０２０９】
このあと、マスタ計算機１５００は、Ｓｍａｘ＜Ｓｍｉｎであるか否かを判断する（ステップＳ２８０９）。すなわち、仮想ミニマックス下限Ｓｍｉｎが仮想ミニマックス上限Ｓｍａｘを上回ったか否かを判断する。Ｓｍａｘ＜Ｓｍｉｎでない場合（ステップＳ２８０９：Ｎｏ）、図２７のステップＳ２７０５に戻って、仮想ミニマックス設定処理を実行する（ステップＳ２７０５）。
【０２１０】
一方、Ｓｍａｘ＜Ｓｍｉｎである場合（ステップＳ２８０９：Ｙｅｓ）、マスタ計算機１５００は、計算終了通知を各スレーブ計算機１５０ｐに配信する（ステップＳ２８１０）。これにより、スレーブ計算機１５０ｐでの評価処理を停止させる。このあと、マスタ計算機１５００は、決定部２６０８により、仮想ミニマックス上限Ｓｍａｘをミニマックスに決定し（ステップＳ２８１１）、決定されたミニマックスを取る行動Ｂｊを出力する（ステップＳ２８１２）。これにより、一連の処理を終了する。
【０２１１】
図２９は、図２７に示した仮想ミニマックス設定処理（ステップＳ２７０５）の詳細な処理手順例を示すフローチャートである。まず、マスタ計算機１５００は、上記式（１）の左辺となるＲを算出する（ステップＳ２９０１）。そして、マスタ計算機１５００は、上記式（１）を満たすか否かを判断する（ステップＳ２９０２）。満たす場合（ステップＳ２９０２：Ｙｅｓ）、ステップＳ２９０４に移行する。一方、満たさない場合（ステップＳ２９０２：Ｎｏ）、マスタ計算機１５００は、増加量ΔＳを上記式（２）により更新して（ステップＳ２９０３）、ステップＳ２９０４に移行する。これにより、増加量ΔＳを適切な量に修正することができ、仮想ミニマックスＳｐを適切に調節することができる。
【０２１２】
また、ステップＳ２９０４では、仮想ミニマックス下限Ｓｍｉｎを初項、増加量ΔＳ、要素数Ｐで得られる等差数列を、仮想ミニマックス列｛Ｓｐ｝として生成して（ステップＳ２９０４）、ステップＳ２７０６に移行する。このように等差数列とすることで、仮想ミニマックス下限Ｓｍｉｎ〜仮想ミニマックス上限Ｓｍａｘ間のどの位置に真のミニマックスが潜んでいても、ミニマックスを突き止めることができる。また、仮想ミニマックス列｛Ｓｐ｝の再設定を繰り返すことで、仮想ミニマックス下限Ｓｍｉｎ〜仮想ミニマックス上限Ｓｍａｘの範囲が狭まるため、効率的にミニマックスを絞り込むことができる。
【０２１３】
＜スレーブ計算機１５０ｐによるミニマックス探索処理手順例＞
図３０−１は、スレーブ計算機１５０ｐによるミニマックス探索処理手順例を示すフローチャート（その１）である。まず、スレーブ計算機１５０ｐは、探索開始位置ＳＰｐの受信を待ち受け（ステップＳ３００１：Ｎｏ）、探索開始位置ＳＰｐが受信された場合（ステップＳ３００１：Ｙｅｓ）、仮想ミニマックスＳｐの受信を待ち受ける（ステップＳ３００２：Ｎｏ）。
【０２１４】
仮想ミニマックスＳｐが受信された場合（ステップＳ３００２：Ｙｅｓ）、スレーブ計算機１５０ｐは、初回の行動選択であるか否かを判断する（ステップＳ３００３）。初回の行動選択である場合（ステップＳ３００３：Ｙｅｓ）、スレーブ計算機１５０ｐは、探索開始位置ＳＰｐで指定された行動Ｂｊを選択し（ステップＳ３００４）、ステップＳ３００６に移行する。一方、初回の行動選択でない場合（ステップＳ３００３：Ｎｏ）、探索開始位置ＳＰｐで指定された行動Ｂｊが選択済みである。この場合は、最後に選択された行動の次の行動Ｂｊを選択する（ステップＳ３００５）。そして、ステップＳ３００６に移行する。
【０２１５】
ステップＳ３００６では、スレーブ計算機１５０ｐは、行動Ｂｊでの最大評価値候補ＶＣｊｍａｘが、ステップＳ３００２で受信された仮想ミニマックスＳｐ以下であるか否かを判断する（ステップＳ３００６）。ＶＣｊｍａｘ≦Ｓｐでない場合（ステップＳ３００６：Ｎｏ）、枝刈り規則が適用されるため、スレーブ計算機１５０ｐは、次の行動Ｂｊを選択して（ステップＳ３００７）、ステップＳ３００６に戻る。これにより、枝刈り規則の適用可否を繰り返しおこなうことができる。
【０２１６】
一方、ステップＳ３００３において、ＶＣｊｍａｘ≦Ｓｐである場合（ステップＳ３００６：Ｙｅｓ）、スレーブ計算機１５０ｐは、探索開始位置ＳＰｐに最も近い未評価の状態Ａｉを選択する（ステップＳ３００８）。そして、未評価状態がある場合（ステップＳ３００９：Ｙｅｓ）、スレーブ計算機１５０ｐは、行動Ｂｊに対する状態Ａｉの評価を実行する（ステップＳ３０１０）。そして、スレーブ計算機１５０ｐは、得られた評価値Ｖｉｊについて枝刈り規則が適用可能か否かを判断する（ステップＳ３００９）。
【０２１７】
枝刈り規則が適用可能でない場合（ステップＳ３０１１：Ｎｏ）、スレーブ計算機１５０ｐは、行動Ｂｊについて次の未評価状態Ａｉを選択し（ステップＳ３０１２）、ステップＳ３００９に戻る。
【０２１８】
一方、ステップＳ３０１１において、枝刈り規則が適用可能である場合（ステップＳ３０１３：Ｙｅｓ）、スレーブ計算機１５０ｐは、枝刈り発生時の評価値Ｖｉｊを行動Ｂｊの最大評価値候補ＶＣｊｍａｘとしてマスタ計算機１５００に送信して（ステップＳ３０１３）、ステップＳ３００２に戻り、あらたな仮想ミニマックスＳｐを受信するまで待機する。
【０２１９】
また、ステップＳ３００９において、未評価状態Ａｉがない場合（ステップＳ３００９：Ｎｏ）、その行動Ｂｊに対する全状態Ａ１〜Ａｎの評価値Ｖ１ｊ〜Ｖｎｊが得られたことになる。したがって、スレーブ計算機１５０ｐは、評価結果である行動Ｂｊの評価値Ｖ１ｊ〜Ｖｎｊ（評価結果群）の中から最大評価値Ｖｊｍａｘ（すなわちミニマックス候補）を特定する（ステップＳ３０１４）。そして、スレーブ計算機１５０ｐは、最大評価値Ｖｊｍａｘと評価完了通知をマスタ計算機１５００に送信して（ステップＳ３０１５）、ステップＳ３００２に戻り、あらたな仮想ミニマックスＳｐを受信するまで待機する。
【０２２０】
なお、スレーブ計算機１５０ｐでは、いかなる場合でも、マスタ計算機１５００から計算終了通知を受け付けた場合は、そのとき選択中の行動を保持しておき、途中であっても処理を終了する。
【０２２１】
このように、実施の形態３によれば、複数のスレーブ計算機１５０ｐによって状態の評価を重複なく分担して計算しつつ、仮想ミニマックス上限Ｓｍａｘと仮想ミニマックス下限Ｓｍｉｎを明らかにする。そして、ミニマックスを効率的に発見するために仮想ミニマックス上限Ｓｍａｘと仮想ミニマックス下限Ｓｍｉｎをマスタ計算機１５００からフィードバックしていくことで、効率的にミニマックスを発見することができる。
【０２２２】
また、上述した実施の形態３では、探索空間や評価値テーブルＴ０をマスタ計算機１５００とマスタ計算機１５００に共有していない場合について説明したが、マスタ計算機１５００とスレーブ計算機１５０ｐで共有することとしてもよい。具体的には、たとえば、行動Ｂｊの状態Ａｉの評価値Ｖｉｊや最大評価値候補ＶＣｊｍａｘ、最大評価値Ｖｊｍａｘが、マスタ計算機１５００とスレーブ計算機１５０ｐで共有されることになる。
【０２２３】
すなわち、あるスレーブ計算機１５０ｐで評価値Ｖｉｊが得られると、マスタ計算機１５００や他のスレーブ計算機１５０ｐに送信され、マスタ計算機１５００や他のスレーブ計算機１５０ｐにおいて未評価の場合、評価値Ｖｉｊが書き込まれることになる。同様に、あるスレーブ計算機１５０ｐで最大評価値候補ＶＣｊｍａｘが得られると、マスタ計算機１５００や他のスレーブ計算機１５０ｐに送信され、マスタ計算機１５００や他のスレーブ計算機１５０ｐにおいて書き込まれることになる。最大評価値Ｖｊｍａｘも同様である。ただし、最大評価値Ｖｊｍａｘについては、一度登録されると、更新の必要はない。
【０２２４】
また、これらの書き込み処理は、たとえば、ＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）で実行される。したがって、書き込み先の計算機のプロセッサを使わずに実行できるため、書き込み先での処理負荷の増大を抑制することができる。また、探索空間や評価値テーブルＴ０を共有する場合、ある計算機（たとえば、マスタ計算機１５００）にのみ持たせて、他の計算機が書き込んだり、読み出したりすることとしてもよい。いずれにしても、どの計算機１５００、１５０ｐも、常に最新の状態の探索空間および評価値テーブルＴ０が参照できることになる。
【０２２５】
この場合、マスタ計算機１５００について図２８−１のマスタ計算機１５００によるミニマックス探索処理手順例（後半）は、図２８−２のようになる。
【０２２６】
図２８−２は、マスタ計算機１５００によるミニマックス探索処理手順例（後半）の他の例を示すフローチャートである。図２８−２において、図２８−１と同一ステップには同一符号を付してある。図２８−２では、図２８−１において、ステップＳ２８０２を除いた処理手順である。ステップＳ２８０２に相当する処理は、スレーブ計算機１５０ｐで実行することになる。したがって、図３０−１に示したスレーブ計算機１５０ｐによるミニマックス探索処理手順例を示すフローチャート（その１）は、図３０−２のようになる。
【０２２７】
図３０−２は、スレーブ計算機１５０ｐによるミニマックス探索処理手順例を示すフローチャート（その２）である。図３０−２では、ステップＳ３００１〜Ｓ３００８までは図３０−１と同一であるため、図３０−２では省略している。また、図３０−２において、図３０−１と同一ステップには同一符号を付してある。
【０２２８】
図３０−２では、ステップＳ３０１０で行動Ｂｊに対する状態Ａｉの評価が実行されると、マスタ計算機１５００の探索空間や他のスレーブ計算機１５０ｐの探索空間に書き込む（ステップＳ３０２０）。これにより、他のスレーブ計算機１５０ｐでの重複計算を防止することができ、ミニマックス探索処理の高速化を図ることができる。
【０２２９】
また、ステップＳ３０１１で枝刈り規則が適用可能である場合（ステップＳ３０１１：Ｙｅｓ）、スレーブ計算機１５０ｐは、評価値テーブルＴ０において、枝刈り発生時の評価値Ｖｉｊを、行動Ｂｊの最大評価値候補ＶＣｊｍａｘに更新する必要があるか否かを判断する（ステップＳ３０２１）。現在登録中の最大評価値候補ＶＣｊｍａｘよりも大きい場合は更新する必要があるため（ステップＳ３０２１：Ｙｅｓ）、スレーブ計算機１５０ｐは、評価値テーブルＴ０において、枝刈り発生時の評価値Ｖｉｊを、行動Ｂｊの最大評価値候補ＶＣｊｍａｘに更新して（ステップＳ３０２２）、ステップＳ３００２に移行する。一方、現在登録中の最大評価値候補ＶＣｊｍａｘよりも大きくない場合は更新する必要がないため（ステップＳ３０２１：Ｎｏ）、ステップＳ３００７に戻り、次の行動Ｂｊを選択することになる。
【０２３０】
また、ステップＳ３０１４において、最大評価値Ｖｊｍａｘが特定されると、スレーブ計算機１５０ｐは、評価値テーブルＴ０において、最大評価値Ｖｊｍａｘを登録する必要があるか否かを判断する（ステップＳ３０２３）。行動Ｂｊについて未登録である場合は登録する必要があるため（ステップＳ３０２３：Ｙｅｓ）、スレーブ計算機１５０ｐは、評価値テーブルＴ０において、最大評価値Ｖｊｍａｘを登録し、かつ、マスタ計算機１５００に評価完了通知を送信して（ステップＳ３０２４）、ステップＳ３００２に移行する。また、ステップＳ３０２３において、登録済みである場合、登録する必要がないため（ステップＳ３０２３：Ｎｏ）、ステップＳ３００７に戻り、次の行動Ｂｊを選択することになる。
【０２３１】
このように、計算機間で情報を共有することで、他のスレーブ計算機１５０ｐでの重複計算を防止することができ、ミニマックス探索処理の高速化を図ることができる。
【０２３２】
以上説明したように、本実施の形態によれば、ミニマックスを発見するため、選択した行動Ｂｊに対して順に状態Ａｉを評価していく処理において，その行動Ｂｊの起こりうる状態Ａｉに対する評価値Ｖｉｊの最大評価値Ｖｊｍａｘがミニマックスとはなりえないと判明した段階で、枝刈りをおこなう。
【０２３３】
このように、有望ではない（ミニマックスよりも高い最大値を含む）行動Ｂｊについての評価する必要のない状態Ａｉの計算を省略することにより，効率的なミニマックス探索を実現することができる。また、発見したいミニマックスを含む行動の最大評価値の評価は省略することなくすべての状態に対して実行され、計算過程で得られるミニマックス候補を利用して計算する必要のない行動Ｂｊの計算は省略される。したがって、枝刈りをしない計算と同様に確実にミニマックスを発見しつつ、効率的な計算を実現することができる。
【０２３４】
つぎに、上述した実施の形態１〜３に示したミニマックス損失基準による行動決定問題の具体例について説明する。ここでは、運転計画作成装置を例に挙げて説明する。運転計画作成装置は、図４に示した計算機４０１に相当する。
【０２３５】
運転計画作成装置は、蓄電池を一日運転するための運転計画を修正することを見越して、修正時点以降に天候がどのように変動しても対応できるように、運転計画開始時点から修正時点までの運転計画を示す当初運転計画を作成する計算機４０１である。この運転計画開始時点は、たとえば、０時であり、修正時点は、たとえば、１３時である。なお、実施例１では、運転計画作成装置が当初運転計画を作成する場合を説明するが、本発明はこれに限定されるものではない。
【０２３６】
たとえば、運転計画作成装置は、修正時点以降の運転計画を示す修正運転計画についても当初運転計画と同様に、修正運転計画をさらに修正することを見越して作成するようにしても良い。また、運転計画開始時点及び修正時点についても、この例示に限るものではなく、運転計画作成装置を利用する者が任意の値に設定して良い。
【０２３７】
図３１は、運転計画作成装置の機能的構成例を示すブロック図である。図３１に示すように、運転計画作成装置３１００は、記憶部３１１０と、制御部３１２０とを有する。また、運転計画作成装置３１００は、入力装置３１０１と、出力装置３１０２とに接続される。
【０２３８】
入力装置３１０１は、各種情報の入力を受け付ける。たとえば、入力装置３１０１は、需要データ３１１１ａ及び日射量データ３１１２を受け付ける。また、入力装置３１０１は、作成すべき運転計画を指定する条件として、たとえば、蓄電池の運転開始時刻、運転終了時刻、および、運転計画修正時刻を受け付ける。また、たとえば、入力装置３１０１は、運転計画作成において考慮すべき日射量変動の範囲を特定する条件として、開始時刻ｔ０と、終了時刻ｔ＿ｅと、初期日照時間ｈ０と、時間刻み幅Δｔとを受け付ける。たとえば、入力装置３１０１は、キーボードやマウス、媒体読取装置などに対応する。なお、入力装置３１０１が受け付ける情報については、説明を後述する。
【０２３９】
出力装置３１０２は、各種情報を出力する。たとえば、出力装置３１０２は、後述する出力部３１２７から各種情報を受け付けて、受け付けた情報を出力する。たとえば、出力装置３１０２は、ディスプレイやモニタなどに対応する。
【０２４０】
記憶部３１１０は、需要データ３１１１ａと、需要変動シナリオ３１１１ｂと、日射量データ３１１２と、日照時間変動確率テーブル３１１３と、出力変動データ３１１４と、需給データ３１１５とを有する。また、記憶部３１１０は、最適運転評価テーブル３１１６と、当初運転計画テーブル３１１７と、修正運転評価テーブル３１１８と、対応力評価テーブル３１１９とを有する。記憶部３１１０は、たとえば、ＲＡＭ、ＲＯＭ、フラッシュメモリ等の半導体メモリ素子、磁気ディスク装置、光ディスク装置又は光磁気ディスク装置等の記憶装置に対応する。
【０２４１】
需要データ３１１１ａは、需要電力値を要素とする時系列データである。たとえば、需要データ３１１１ａは、一日における各時間帯と需要電力値とを対応づけたデータである。この需要電力値は、たとえば、過去の消費電力値の統計データから算出される。
【０２４２】
需要変動シナリオ３１１１ｂは、運転計画策定対象の１日に対する需要の推移の可能性を示す。たとえば、需要変動シナリオ３１１１ｂは、一日の時間帯ごとの需要電力値の推移を示し、需要データ３１１１ａに基づいて生成される。
【０２４３】
図３２は、需要変動シナリオの一例を示す説明図である。図３２の横軸は時間を示し、縦軸は電力量［ｋＷｈ］を示す。図３２には、ある工場における一日の需要変動シナリオ１１１ｂを例示する。図３２では、需要変動シナリオ３１１１ｂが１パタンである場合を示したが、本発明はこれに限定されるものではない。たとえば、需要変動シナリオ３１１１ｂは、曜日や時期に違いがあり、複数の推移の仕方が予想されるような場合には、Ｍパタン存在する場合もある。なお、Ｍは、自然数である。
【０２４４】
日射量データ３１１２は、所定時間ごとの過去の日射量の記録である。日射量には、たとえば、日照時間という単位で計測された値を含む。ここで、日照時間とは、直射日光が雲などに遮られずに所定の値（一般に０．１２ｋＷ／ｍ２）以上の強さで地表を照射した時間として定義される値である。たとえば、日射量データ３１１２は、２０１０年７月の１ヶ月分の日照時間と単位面積あたりの積算日射量が１時間ごとに記録されたものである。日射量データ３１１２は、たとえば、日本気象協会のデータベースから取得されるデータである。
【０２４５】
日照時間変動確率テーブル３１１３は、変動前の日照時間Ｈbeforeが単位時間過ぎた後に変動後の日照時間Ｈafterへ変動する条件付確率Ｐ（Ｈafter｜Ｈbefore）を示すテーブルである。
【０２４６】
図３３は、日照時間変動確率テーブルの一例を示す説明図である。図３３の横方向は変動前の日照時間Ｈbeforeを示し、「０．０」、「０．１−０．５」、「０．６−０．９」及び「１．０」の４項目に分類される。また、縦方向は変動後の日照時間Ｈafterを示し、「０．０」から「１．０」まで「０．１」刻みで１１項目に分類される。図３３に示すように、日照時間変動確率テーブル３１１３は、変動前の日照時間Ｈbeforeが１時間過ぎた後に変動後の日照時間Ｈafterへ変動する条件付確率Ｐ（Ｈafter｜Ｈbefore）を格納する。なお、条件付確率Ｐは、０〜１で表される値である。
【０２４７】
図３３に示すように、日照時間変動確率テーブル３１１３は、たとえば、日照時間Ｈbefore「０．０」から１時間後に日照時間Ｈafter「０．０」へ変動する条件付確率Ｐが「０．８６」であることを格納する。また、日照時間変動確率テーブル３１１３は、日照時間Ｈbefore「０．１−０．５」から１時間後に日照時間Ｈafter「０．３」へ変動する条件付確率Ｐが「０．０７」であることを格納する。また、日照時間変動確率テーブル３１１３は、他の条件付確率Ｐについても同様に格納する。なお、図３３に示した日照時間変動確率テーブル３１１３のデータ構造は一例であり、これに限定されるものではない。たとえば、変動前の日照時間Ｈbeforeを「０．０」から「１．０」まで「０．１」刻みで１１項目に分類するようにしても良い。
【０２４８】
出力変動データ３１１４は、太陽光発電による発電量を要素とする時系列データである。たとえば、出力変動データ３１１４は、一日における各時間帯と発電量とを対応づけたデータである。この出力変動データ３１１４は、たとえば、後述する需給シナリオ生成部３１２２により生成され、記憶部３１１０に格納される。たとえば、出力変動データ３１１４は、一日の時間帯ごとの太陽光発電による発電量の推移を示す出力変動シナリオを含む。この出力変動シナリオについては、説明を後述する。
【０２４９】
需給データ３１１５は、蓄電池を運用する電力網内の電力需要と、太陽光発電による出力との差を要素とする時系列データである。たとえば、需給データ３１１５は、与えられた初期状態に対してその後に起こり得る需給電力量の推移を示す需給シナリオの集合である。需給データ３１１５は、たとえば、後述する需給シナリオ生成部３１２２により生成され、記憶部１１０に格納される。なお、需給シナリオについては、説明を後述する。
【０２５０】
最適運転評価テーブル３１１６は、複数のシナリオごとに、蓄電池を運転した場合に最良の評価値である第１の評価値が得られる運転計画（以下「最適運転計画」と称する）を記憶する。たとえば、最適運転評価テーブル３１１６は、需給シナリオと、最適運転計画による評価値と、最適な制御パラメータとを対応づけて記憶する。このうち、最適運転評価テーブル３１１６の「需給シナリオ」は、需給シナリオを識別する識別情報を示す。
【０２５１】
また、最適運転計画による評価値は、需給シナリオについて様々な制御パラメータで蓄電池を運用した場合のシミュレーションを行い、シミュレーション結果から得られた評価値のうち、最良の評価値を示す。たとえば、評価値は、電力需要が所定の電力値を超えた場合に放電するピークカット方式により蓄電池が運転される場合には、ピークカット効果が用いられる。この所定の電力値は、放電基準値とも称する。また、最適な制御パラメータは、最適運転計画による評価値が得られる蓄電池の制御パラメータを示す。たとえば、制御パラメータは、ピークカット方式により蓄電池が運転される場合には、放電基準値が用いられる。
【０２５２】
なお、評価値は、ピークカット効果に限定されるものではなく、たとえば、環境負荷低減効果、コスト削減効果、あるいはこれらの値の組み合わせなどを評価値として用いても良い。また、制御パラメータは、放電基準値に限定されるものではない。たとえば、一定放電方式により蓄電池が運転される場合には、放電すべき時間帯と放電量との組み合わせが制御パラメータとなる。また、たとえば、余剰電力吸収方式により蓄電池が運転される場合には、蓄電池の初期電力量が制御パラメータとなる。以下では、ピークカット方式により蓄電池が運転され、評価値としてピークカット効果が用いられる場合を説明する。
【０２５３】
ここで、ピークカット効果について説明する。ピークカット効果は、ピークカット方式により蓄電池が運転された場合の効果を示す評価値であり、デマンド値をどれだけ下げることができたかで評価される値である。たとえば、ピークカット効果は、下記の式（３１）で表される。
【０２５４】
（ピークカット効果）＝（ピークカット対策なしデマンド値）−（ピークカット対策ありデマンド値）・・・（３１）
【０２５５】
なお、デマンド値は、３０分ごとの平均使用電力［ｋＷ］に対応し、たとえば、シミュレーションによって算出した値を用いる。たとえば、デマンド値は、下記の式（３２）で表される。
【０２５６】
（デマンド値［ｋＷ］）＝（３０分間の使用電力量［ｋＷｈ］）×２・・・（３２）
【０２５７】
図３４は、ピークカット効果を示す説明図である。図３４の横軸は時間を示し、縦軸は電力量［ｋＷｈ］を示す。図３４を用いて、シミュレーションによってピークカット効果を算出する場合を説明する。図３４に示すように、需給状況４ａは、シミュレーションによって得られたピークカット対策なしの需給状況を示す。需給状況４ａの３０分間の最大使用電力量は１５７ｋＷｈであるので、デマンド値４ｂは１５７×２＝３１４［ｋＷ］となる。
【０２５８】
ここで、ピークカット制御により蓄電池を運転することで、デマンド値４ｂをデマンド値４ｃに下げることに成功した場合には、需給状況４ａは需給状況４ｄに改善される。このデマンド値４ｃは１１８×２＝２３６［ｋＷ］であるので、ピークカット効果４ｅは３１４−２３６＝７８［ｋＷ］となる。なお、需給状況は、下記の式（３３）で表される。
【０２５９】
（需給状況［ｋＷｈ］）＝（需要電力量［ｋＷｈ］）＋（太陽光発電量［ｋＷｈ］）−（蓄電池放電量［ｋＷｈ］（又は、蓄電池充電量））・・・（３３）
【０２６０】
図３５は、図３１に示した最適運転評価テーブル３１１６の一例を示す説明図である。たとえば、最適運転評価テーブル３１１６は、需給シナリオ「１」と、最適運転計画による評価値「３６」と、最適な制御パラメータ「２７８」とを対応づけて記憶する。つまり、最適運転評価テーブル３１１６は、需給シナリオ「１」に対して最良の放電基準値は２７８［ｋＷ］であり、この放電基準値で蓄電池を運転した場合のピークカット効果が３６［ｋＷ］であることを示す。
【０２６１】
また、最適運転評価テーブル３１１６は、他の需給シナリオについても同様に、需給シナリオと、最適運転計画による評価値と、最適な制御パラメータとを対応づけて記憶する。なお、最適運転計画による評価値は、第１の評価値の一例である。また、式（３３）において、蓄電池充電量を用いる場合には、該当する項は＋の項になる。
【０２６２】
図３６は、図３１に示した当初運転計画テーブル３１１７の一例を示す説明図である。当初運転計画テーブル３１１７は、当初運転計画と、制御パラメータとを対応づけて記憶する。このうち、当初運転計画テーブル３１１７の「当初運転計画」は、当初運転計画の候補を識別する識別情報を示す。また、「制御パラメータ」は、当初運転計画の制御パラメータを示す。たとえば、制御パラメータは、ピークカット方式により蓄電池が運転される場合には、放電基準値に対応する。
【０２６３】
たとえば、当初運転計画テーブル３１１７は、当初運転計画「１」と、制御パラメータ「５０」とを対応づけて記憶する。つまり、当初運転計画テーブル３１１７は、当初運転計画「１」の放電基準値が５０［ｋＷ］であることを示す。また、当初運転計画テーブル３１１７は、他の当初運転計画の候補についても同様に、当初運転計画と、制御パラメータとを対応づけて記憶する。
【０２６４】
図３７は、図３１に示した修正運転評価テーブル３１１８の一例を示す説明図である。修正運転評価テーブル３１１８は、当初運転計画と、需給シナリオと、当初運転計画に対する最適修正運転計画の評価値とを対応づけて記憶する。このうち、修正運転評価テーブル３１１８の「当初運転計画」は、当初運転計画の候補を識別する識別情報を示す。また、「需給シナリオ」は、需給シナリオを識別する識別情報を示す。また、「当初運転計画Ｑに対する最適修正運転計画の評価値」は、対応する当初運転計画について、修正時点以降の最適な運転計画を示す最適修正運転計画で蓄電池が運転された場合の評価値を需給シナリオごとに示す。
【０２６５】
たとえば、修正運転評価テーブル３１１８は、当初運転計画「１」と、需給シナリオ「１」と、当初運転計画Ｑに対する最適修正運転計画の評価値「３４」とを対応づけて記憶する。つまり、修正運転評価テーブル３１１８は、需給シナリオ「１」に対して当初運転計画「１」で蓄電池が運転された後に最適修正運転計画で蓄電池が運転された場合の評価値が「３４」であることを示す。
【０２６６】
また、修正運転評価テーブル３１１８は、当初運転計画「１」について、他の需給シナリオと、他の当初運転計画に対する最適修正運転計画の他の評価値とを対応づけて記憶する。このように、修正運転評価テーブル３１１８は、一つの当初運転計画に対して、複数の需給シナリオと、複数の当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて記憶する。そして、修正運転評価テーブル３１１８は、他の当初運転計画についても同様に、当初運転計画と、需給シナリオと、当初運転計画に対する最適修正運転計画の評価値とを対応づけて記憶する。なお、当初運転計画に対する最適修正運転計画の評価値は、第２の評価値の一例である。
【０２６７】
図３８は、図３１に示した対応力評価テーブル３１１９の一例を示す説明図である。対応力評価テーブル３１１９は、当初運転計画と、需給シナリオと、当初運転計画に対する対応力評価とを対応づけて記憶する。このうち、対応力評価テーブル３１１９の「当初運転計画」は、当初運転計画の候補を識別する識別情報を示す。また、「需給シナリオ」は、需給シナリオを識別する識別情報を示す。
【０２６８】
また、「当初運転計画に対する対応力評価」は、対応する当初運転計画について、需給シナリオごとに算出されるリグレット値を示す。このリグレット値は、各需給シナリオに対する最適修正運転計画の評価値が、各シナリオに対する最適な運転計画による評価値にどれだけ近づくかという観点から評価される値であり、リグレット値が低いほど高い対応力であることを示す。
【０２６９】
たとえば、対応力評価テーブル３１１９は、当初運転計画「１」と、需給シナリオ「１」と、当初運転計画に対する対応力評価「２」とを対応づけて記憶する。つまり、対応力評価テーブル３１１９は、需給シナリオ「１」に対して当初運転計画「１」で蓄電池が運転された場合の対応力の評価値が「２」であることを示す。
【０２７０】
また、対応力評価テーブル３１１９は、当初運転計画「１」について、他の需給シナリオと、他の需給シナリオに対する対応力評価とを対応づけて記憶する。このように、対応力評価テーブル１１９は、一つの当初運転計画に対して、複数の需給シナリオと、複数の対応力評価とを対応づけて記憶する。そして、対応力評価テーブル３１１９は、他の当初運転計画についても同様に、当初運転計画と、需給シナリオと、当初運転計画に対する対応力評価とを対応づけて記憶する。
【０２７１】
図３１の説明に戻る。制御部３１２０は、受付部３１２１と、需給シナリオ生成部３１２２と、最適評価値算出部３１２３と、修正評価値算出部３１２４と、対応力算出部３１２５と、最適計画選択部３１２６と、出力部３１２７とを有する。
【０２７２】
受付部３１２１は、入力装置３１０１から各種情報を受け付ける。たとえば、受付部３１２１は、需要データ３１１１ａ及び日射量データ３１１２を入力装置３１０１から受け付けて、受け付けた需要データ３１１１ａ及び日射量データ３１１２を記憶部３１１０に格納する。
【０２７３】
また、たとえば、受付部３１２１は、運転計画作成において考慮すべき日射量変動の範囲を特定する条件として、開始時刻ｔ０と、終了時刻ｔ＿ｅと、初期日照時間ｈ０と、時間刻み幅Δｔとを入力装置３１０１から受け付ける。ここで、開始時刻ｔ０及び終了時刻ｔ＿ｅは、天候の変動の影響により、考慮すべき程度以上に発電出力が変動する可能性がある時間帯、すなわち、晴天時であれば十分な発電出力が期待できる時間帯の開始時刻及び終了時刻にそれぞれ対応する。
【０２７４】
たとえば、開始時刻ｔ０は９時であり、終了時刻ｔ＿ｅは１５時である。また、初期日照時間ｈ０は、当初運転計画の作成対象となる日の開始時刻ｔ０における日射量であり、たとえば、前日の天気予報によって予想される開始時刻ｔ０における天候に基づいて算出される。たとえば、開始時刻ｔ０における天候が「晴れ」と予想される場合には、初期日照時間ｈ０は「１」である。なお、ここでは、受付部１２１が初期日照時間ｈ０を受け付ける場合を説明したが、これに限定されるものではない。
【０２７５】
たとえば、受付部３１２１は、初期日射量を受け付けても良い。そして、日射量を日照時間に変換することで、初期日照時間ｈ０が算出される。この変換には、たとえば、各月ごとの日照時間と日射量との間の相関関係を用いる。具体的には、日照時間と日射量との回帰分析を行い、得られた回帰直線の式を用いることで、日照時間を算出する。また、時間刻み幅Δｔは、日射量データ３１１２に記録された日照時間の時間間隔に対応する。たとえば、時間刻み幅Δｔは、１時間である。そして、受付部３１２１は、受け付けた開始時刻ｔ０と、終了時刻ｔ＿ｅと、初期日照時間ｈ０と、時間刻み幅Δｔとを需給シナリオ生成部３１２２に出力する。
【０２７６】
需給シナリオ生成部３１２２は、需給電力値の推移の可能性を示す複数のシナリオを生成する。たとえば、需給シナリオ生成部３１２２は、日射量データ３１１２に基づいて単位時間当たりの天候変動をマルコフ過程としてモデル化した天候変動モデルを構築する。需給シナリオ生成部３１２２は、構築した天候変動モデルに基づいてモンテカルロシミュレーションを行うことで、複数の出力変動シナリオＯを発生する。
【０２７７】
そして、需給シナリオ生成部３１２２は、複数の出力変動シナリオＯと、需要データ３１１１ａによって示される需要変動シナリオとの差をとることで、複数の需給シナリオを生成する。ここで、需給シナリオとは、蓄電池を運用する電力網内の電力需要と、太陽光発電による出力との差を要素とする時系列データである。なお、需給シナリオ生成部１２２は、生成部の一例である。また、需給電力値は、蓄電池を運用する電力網内の電力需要と、太陽光発電による出力との差に対応し、需給差、又は需給バランスとも称される。また、需給シナリオは、シナリオの一例である。
【０２７８】
以下において、需給シナリオ生成部３１２２が実行する処理について詳細に説明する。たとえば、需給シナリオ生成部３１２２は、日射量データ３１１２から日照時間変動確率テーブル３１１３を生成する。具体的には、需給シナリオ生成部３１２２は、ある時刻の日照時間がその直前の時刻の日照時間の影響を受けるものと仮定して、単位時間ごとの日照時間の変動をマルコフ過程としてモデル化する。
【０２７９】
ここで、需給シナリオ生成部３１２２が日照時間の変動をマルコフ過程としてモデル化できるのは、日照時間が雲の影響を受け、曇の量や密度などの状態が時間に伴って連続的に変化すると考えられるからである。すなわち、雲の状態の連続的な変化を捉えられる程度の時間間隔で計測された日照時間は、直前の時刻の天候の影響を受けるものと考えられるからである。
【０２８０】
図３９は、天候変動モデルの説明図である。たとえば、図３９に示すように、需給シナリオ生成部３１２２は、天候を晴れ、曇り、雨の３種類に分類する。そして、需給シナリオ生成部１２２は、現在の天候から１時間後の天候（晴れ、曇り、雨の３種類）に変動する確率を、過去の天候が記録されたデータから算出することで、天候変動モデルを生成する。需給シナリオ生成部３１２２は、１時間毎に天候変動モデルを繰り返し適用することで、一日の天候変動の可能性を示すシナリオを複数出力する。なお、図３９に示した天候変動モデルは一例である。より詳細には、需給シナリオ生成部３１２２は、天候を日照時間によって分類し、それぞれの日照時間の後にどのように日照時間が変化するかをモデル化している。
【０２８１】
たとえば、需給シナリオ生成部３１２２は、日射量データ３１１２に基づいて、日照時間Ｈbeforeが単位時間過ぎた後に日照時間Ｈafterへ変動する条件付確率Ｐ（Ｈafter｜Ｈbefore）を、下記の式（３４）を用いて計算する。
【０２８２】
Ｐ（Ｈafter｜Ｈbefore）＝（日照時間Ｈbeforeの後に日照時間Ｈafterが出現するデータ数）/（日照時間Ｈbeforeが出現するデータ数）・・・（３４）
【０２８３】
上記の式（３４）を利用して過去の日射量データ３１１２から条件付確率Ｐ（Ｈafter｜Ｈbefore）を計算することで、需給シナリオ生成部３１２２は、図３３に示した日照時間変動確率テーブル３１１３を生成する。
【０２８４】
たとえば、需給シナリオ生成部３１２２は、生成した日照時間変動確率テーブル３１１３に基づいて、複数の出力変動シナリオを生成する。具体的には、需給シナリオ生成部１２２は、開始時刻ｔ０と、終了時刻ｔ＿ｅと、初期日照時間ｈ０と、時間刻み幅Δｔとを受付部１２１から受け付ける。需給シナリオ生成部１２２は、初期日照時間ｈ０を初期値とし、開始時刻ｔ０から終了時刻ｔ＿ｅまでに対して単位時間ごとに日照時間変動確率テーブル１１３を適用することで、確率的にＮパタンの日射量変動シナリオをモンテカルロシミュレーションによって発生する。なお、Ｎは、十分に大きい自然数であり、たとえば、１００００である。
【０２８５】
たとえば、需給シナリオ生成部３１２２は、一様乱数ｒを発生させ、ｘ以下の条件付確率Ｐ（ｘ｜Ｈ（ｔ））の積算値がｒより大きくなる最小のｘをＨ（ｔ＋Δｔ）とする。たとえば、需給シナリオ生成部３１２２は、日照時間Ｈ（ｔ）が「０．１」の場合には、図３に示した日照時間変動確率テーブル３１１３の変動前の日照時間が「０．１−０．５」の列を参照する。
【０２８６】
そして、需給シナリオ生成部１２２は、発生した乱数が「ｒ＜０．４５」の場合には、「Ｈ（ｔ＋Δｔ）＝０．０」を取得し、乱数が「０．４５≦ｒ＜０．６」の場合には、「Ｈ（ｔ＋Δｔ）＝０．１」を取得する。このように、需給シナリオ生成部１２２は、開始時刻ｔ０から終了時刻ｔ＿ｅまでの間に、時間刻み幅Δｔごとに変動する日照時間Ｈ（ｔ＋Δｔ）を取得する。
【０２８７】
そして、需給シナリオ生成部３１２２は、上述した日照時間と日射量と間の相関関係を用いて、取得した日照時間Ｈ（ｔ＋Δｔ）を日射量Ｉ（ｔ＋Δｔ）に変換する。そして、需給シナリオ生成部３１２２は、開始時刻ｔ０から終了時刻ｔ＿ｅまでの日射量Ｉ（ｔ）の変動を、日射量変動シナリオＩとして生成する。また、需給シナリオ生成部３１２２は、同様の処理を繰り返し実行することで、Ｎパタンの日射量変動シナリオＩを生成する。なお、Ｎは、十分に大きい自然数であり、たとえば、１００００である。
【０２８８】
図４０は、日射量変動シナリオの一例を示す説明図である。図４０の横軸は時間を示し、縦軸は日射量［ＭＪ／ｍ２］を示す。日射量変動シナリオＩのうち９時から１６時までの時間帯は、９時から１６時までの日射量の変動を示す日射量変動シナリオＩであり、Ｎパタンのシナリオを含む。また、０時から９時までの時間帯及び１６時から２４時までの時間帯は、過去の日射量データ３１１２に基づいて生成される部分であり、１パタンのシナリオを含む。
【０２８９】
たとえば、需給シナリオ生成部３１２２は、生成した日射量変動シナリオＩに基づいて、太陽光発電における出力変動シナリオＯを生成する。たとえば、需給シナリオ生成部３１２２は、日射量変動シナリオＩに含まれる日射量Ｉ（ｔ）［ＭＪ／ｍ２］を太陽光発電による発電量Ｏ（ｔ）［ｋＷｈ］に変換する。この変換は、たとえば、パネルの規模や種類、気温などによって変化する変換効率に日射量を対応づけて発電量を見積もることによって行う。
【０２９０】
このように、需給シナリオ生成部３１２２は、日射量変動シナリオＩに含まれる日射量Ｉ（ｔ）から発電量Ｏ（ｔ）を算出することで、開始時刻ｔ０から終了時刻ｔ＿ｅまでのシナリオを生成する。また、たとえば、需給シナリオ生成部３１２２は、太陽光発電の発電量の過去のデータを参照し、各時間帯における発電量の平均値を算出することで、０時から開始時刻ｔ０までの発電量及び終了時刻ｔ＿ｅから２４時までのシナリオを生成する。
【０２９１】
そして、需給シナリオ生成部３１２２は、開始時刻ｔ０から終了時刻ｔ＿ｅまでのシナリオと、０時から開始時刻ｔ０までの発電量及び終了時刻ｔ＿ｅから２４時までのシナリオとを組み合わせることで、一日の出力変動シナリオＯを生成する。また、需給シナリオ生成部３１２２は、生成した出力変動シナリオＯを出力変動データ１１４として記憶部１１０に格納する。なお、ここでは、変換効率を用いる場合を説明したが、これに限定されるものではない。たとえば、日射量Ｉ（ｔ）と発電量Ｏ（ｔ）と間の相関関係を用いても良い。具体的には、日射量Ｉ（ｔ）と発電量Ｏ（ｔ）との回帰分析を行い、得られた回帰直線の式に日射量Ｉ（ｔ）を代入することで発電量Ｏ（ｔ）を算出する。
【０２９２】
たとえば、需給シナリオ生成部３１２２は、複数の出力変動シナリオＯと、図３２に示した需要変動シナリオとの差をとることで、複数の需給シナリオを生成する。たとえば、需給シナリオ生成部３１２２は、需要変動シナリオにおける各時間帯の需要電力値から、出力変動シナリオＯにおいて対応する時間帯の発電量を減算することで、需給シナリオを生成する。つまり、この需給シナリオは、蓄電池に対する需要電力量の指標となる。
【０２９３】
図４１は、需給シナリオの一例を示す説明図である。図４１の横軸は時間を示し、縦軸は電力量［ｋＷｈ］を示す。この電力量が多いほど、需要が多いことを示す。図４１に示すように、需給シナリオは、一日の時間帯ごとの需給電力量の推移を示す。たとえば、需給シナリオ生成部３１２２は、Ｍパタンの需要変動シナリオとＮパタンの出力変動シナリオとを用いた場合には、Ｍ×Ｎパタンの需給シナリオを生成する。また、需給シナリオ生成部３１２２は、生成した需給シナリオを需給データ３１１５として記憶部３１１０に格納する。
【０２９４】
図３１の説明に戻る。最適評価値算出部３１２３は、シナリオごとに、蓄電池を運転した場合の評価値が最良の評価値となる運転計画を算出し、その最良の評価値を各シナリオに対する第１の評価値として記録する。たとえば、最適評価値算出部３１２３は、需給シナリオ生成部３１２２により生成された需給シナリオのそれぞれに対して、シミュレーションによる評価値が最良となる運転計画である最適運転計画を作成する。そして、最適評価値算出部３１２３は、需給シナリオと、最適運転計画による評価値と、最良の評価値を示した最適な制御パラメータとを対応づけて、図３５に示した最適運転評価テーブル３１１６に格納する。なお、最適評価値算出部３１２３は、第１の算出部の一例である。
【０２９５】
以下において、最適評価値算出部３１２３が行う最適運転計画作成処理について詳細に説明する。ここでは、蓄電池がピークカット方式により運転される場合を説明する。たとえば、最適評価値算出部３１２３は、需給シナリオ生成部３１２２により生成された需給シナリオを一つずつ選択し、以下の処理を行う。
【０２９６】
最適評価値算出部３１２３は、選択した需給シナリオについて、様々な放電基準値を適用してシミュレーションを行って評価値を算出する。この放電基準値は、たとえば、制御パラメータの探索範囲に含まれる放電基準値を、所定の刻み幅で順に適用する。そして、評価値が最良になる放電基準値を最適運転計画として選択する。ここで、制御パラメータの探索範囲について説明する。
【０２９７】
図４２は、制御パラメータの探索範囲について説明するための図である。図４２の横軸は時間を示し、縦軸は電力量［ｋＷｈ］を示す。図４２には、図４１に示した需給シナリオに対する制御パラメータの探索範囲を示す。ピークカット方式により蓄電池が運転される場合には、放電基準値は需給シナリオの最大デマンド値を超えない正の値である。このため、図４２に示す例では、最適評価値算出部３１２３は、最大デマンド値１２ａから電力値０［ｋＷ］までの範囲を探索範囲１２ｂとして用いる。つまり、最適評価値算出部３１２３は、探索範囲１２ｂから任意の電力値を放電基準値として選択し、選択した放電基準値をシミュレーションに用いる。なお、たとえば、放電基準値１２ｃは１２５［ｋＷ］であり、放電基準値１２ｄは１００［ｋＷ］であり、放電基準値１２ｅは７５［ｋＷ］である。
【０２９８】
たとえば、最適評価値算出部３１２３は、探索範囲１２ｂに含まれる放電基準値のうち最も高い放電基準値１５７［ｋＷ］を選択し、選択した放電基準値１５７［ｋＷ］で蓄電池を運転した場合のシミュレーションを行う。最適評価値算出部１２３は、次の放電基準値として、刻み幅１［ｋＷ］低い値を選択し、同様にシミュレーションを行うという処理を、探索範囲１２ｂの下限まで繰り返す。
【０２９９】
最適評価値算出部３１２３は、シミュレーションで得られた放電基準値のうち最良のピークカット効果を示す放電基準値を最適運転計画として選択する。そして、最適評価値算出部３１２３は、需給シナリオと、最良のピークカット効果と、最良のピークカット効果を示す放電基準値とを対応づけて、最適運転評価テーブル３１１６に格納する。なお、最良のピークカット効果は最適運転計画による評価値に対応し、最良のピークカット効果を示す放電基準値は最適な制御パラメータに対応する。
【０３００】
また、最適評価値算出部３１２３は、他の需給シナリオについても同様の処理を実行することで、最適運転評価テーブル３１１６を生成する。なお、最適評価値算出部３１２３が行う最適運転計画の探索処理は、上記の方法に限定されるものではない。たとえば、探索範囲１２ｂに含まれる放電基準値のうち最も低い放電基準値０［ｋＷ］から順に、１［ｋＷ］間隔で放電基準値を選択するようにしても良い。また、たとえば、放電基準値を５［ｋＷ］間隔で選択するようにしても良い。あるいは、Ｐａｒｔｉｃｌｅ  Ｓｗａｒｍ  Ｏｐｔｉｍｉｚａｔｉｏｎや遺伝的アルゴリズムなどの最適化アルゴリズムを用いて、最適計画を探索しても良い。
【０３０１】
修正評価値算出部３１２４は、複数の運転計画候補を作成し、それぞれの運転計画候補について、各シナリオに対してその運転計画候補で計画修正時刻まで前記蓄電池を運転した場合に得られる第２の評価値を算出する。たとえば、修正評価値算出部３１２４は、当初運転計画の候補を複数作成する。そして、修正評価値算出部３１２４は、作成した当初運転計画について、その計画で修正時点まで蓄電池を運転し、その後の状態（蓄電池残量）で、修正時点以降の最適な運転計画を示す最適修正運転計画で蓄電池が運転された場合の評価値を、需給シナリオごとに算出する。なお、修正評価値算出部３１２４は、第２の算出部の一例である。
【０３０２】
以下において、修正評価値算出部３１２４が行う処理について詳細に説明する。まず、修正評価値算出部３１２４は、当初運転計画の候補を作成する。たとえば、修正評価値算出部３１２４は、図３５に示した最適運転評価テーブル３１１６の最適な制御パラメータのうち最小値から最大値の範囲で当初運転計画の候補を作成する。
【０３０３】
これは、ピークカット方式により蓄電池が運転される場合には、各需給シナリオに対するピークカット効果は、放電基準値がその需給シナリオに対して最適な放電基準値から乖離するに従って減少し、一定以上乖離すると０になるという性質があるからである。たとえば、修正評価値算出部３１２４は、５０［ｋＷ］から１０［ｋＷ］間隔で１５０［ｋＷ］までの放電基準値を当初運転計画の候補として作成する。
【０３０４】
そして、修正評価値算出部３１２４は、当初運転計画と制御パラメータとを対応づけて、図３６に示した当初運転計画テーブル３１１７に格納する。なお、当初運転計画の候補は当初運転計画に対応し、放電基準値は制御パラメータに対応する。なお、当初運転計画の候補の作成方法は、上記の方法に限定されるものではない。たとえば、修正評価値算出部３１２４は、図４２に示した探索範囲１２ｂで任意に作成しても良い。
【０３０５】
次に、修正評価値算出部３１２４は、各当初運転計画候補について、最適な修正運転計画を作成する。たとえば、修正評価値算出部３１２４は、各需給シナリオについて当初運転計画候補で蓄電池が運用された場合のシミュレーションを行う。修正評価値算出部３１２４は、シミュレーション結果から蓄電池が修正時刻まで運用された場合の蓄電池残量を算出する。そして、算出した蓄電池残量を蓄電池の初期残量として、修正時刻から運転終了時刻まで運転した場合に最良の評価値となる最適な運転計画を作成し、当初運転計画候補とシナリオの組み合わせに対する最適修正運転計画として記録する。この最適修正運転計画作成処理は、前記の最適評価値算出部３１２３が行う最適運転計画作成処理と同様の手順で実施する。
【０３０６】
次に、修正評価値算出部３１２４は、修正時刻までは当初運転計画候補で、修正時刻以降は最適修正運転計画で、蓄電池を運転した場合の評価値を算出し、その評価値を、当初運転計画候補と各シナリオの組み合わせに対する第２の評価値として、図３７に示した修正運転評価テーブル３１１８に格納する。また、修正評価値算出部３１２４は、他の当初運転計画についても同様に処理を実行する。あるいは、Ｐａｒｔｉｃｌｅ  Ｓｗａｒｍ  Ｏｐｔｉｍｉｚａｔｉｏｎや遺伝的アルゴリズムなどの最適化アルゴリズムを用いて、最適計画を探索しても良い。
【０３０７】
対応力算出部３１２５は、運転計画候補ごとに、各シナリオについて第１の評価値と第２の評価値との差分を算出する。たとえば、対応力算出部３１２５は、図３５の最適運転評価テーブル３１１６に示した最適運転計画による評価値と、図３７の修正運転評価テーブル３１１８に示した当初運転計画Ｑに対する最適修正運転計画の評価値との差分を算出することで、対応力を評価する。すなわち、対応力算出部３１２５は、各需給シナリオに対する最適修正運転計画の評価値が、各シナリオに対する最適な運転計画による評価値にどれだけ近づくかという観点から、対応力を評価する。なお、対応力算出部３１２５は、第３の算出部の一例である。
【０３０８】
たとえば、対応力算出部３１２５は、下記の式（３５）を用いて、リグレット値を算出する。たとえば、対応力算出部３１２５は、リグレット値が低いほど高い対応力であると評価する。
【０３０９】
（リグレット値）＝（最適運転計画による評価値）−（当初運転計画に対する最適修正運転計画の評価値）・・・（３５）
【０３１０】
たとえば、対応力算出部３１２５は、当初運転計画と、需給シナリオと、当初運転計画に対する対応力評価とを対応づけて、図３８に示した対応力評価テーブル３１１９に格納する。なお、リグレット値は、当初運転計画に対する対応力評価に対応する。対応力算出部１２５は、他の当初運転計画についても同様に処理を実行する。
【０３１１】
最適計画選択部３１２６は、第１の評価値と第２の評価値との差分に基づいて、複数の運転計画から蓄電池の運転計画を選択する。たとえば、最適計画選択部３１２６は、当初運転計画の候補ごとにリグレット値の分布を集計し、集計したリグレット値の分布に基づいて、当初運転計画を選択する。なお、最適計画選択部３１２６は、選択部の一例である。
【０３１２】
図４３〜図４５は、リグレット値の分布の一例を示す図である。図４３〜図４５の横軸はリグレット値を示し、縦軸はリグレット値に対応する需給シナリオの割合を示す。図４３には、当初運転計画Ａのリグレット値の分布を例示する。図４３に示すように、当初運転計画Ａは、最良のリグレット値が２１であり、最悪のリグレット値が４２である。図４４には、当初運転計画Ｂのリグレット値の分布を例示する。図４４に示すように、当初運転計画Ｂは、最良のリグレット値が０であり、最悪のリグレット値が７である。図４５には、当初運転計画Ｃのリグレット値の分布を例示する。図４５に示すように、当初運転計画Ｃは、最良のリグレット値が０であり、最悪のリグレット値が１９である。
【０３１３】
ここで、図４３に示した当初運転計画Ａと、図４４に示した当初運転計画Ｂとをワルド基準で比較する場合を説明する。このワルド基準とは、それぞれの運転計画にとって最悪のシナリオにおける評価値（最悪評価値）が最良の運転計画を選択するという基準である。当初運転計画Ａは、最良のリグレット値が２１であるのに対して、当初運転計画Ｂは、最悪でもリグレット値が７である。
【０３１４】
したがって、当初運転計画Ｂは、どの需給シナリオを想定しても、当初運転計画Ａと比較して最適に近い効果が期待できる対応力の高い運転計画である。このため、最適計画選択部１２６は、ワルド基準で比較した場合には、当初運転計画Ｂを選択する。なお、このようにリグレット値をワルド基準で選択する場合、サベッジの基準又はミニマックス損失基準という。
【０３１５】
また、図４４に示した当初運転計画Ｂと、図４５に示した当初運転計画Ｃとをワルド基準で比較する場合を説明する。当初運転計画Ｃは、当初運転計画Ｂに比べ、平均リグレット値は低いものの、高いリグレット値をとる需給シナリオが少数存在する運転計画である。すなわち、当初運転計画Ｃは、当初運転計画Ｂに比べ、発生確率が高い需給シナリオにおいて最適な運転計画と近い効果を期待できる一方、稀に大きな損失が発生する可能性がある運転計画であると言える。
【０３１６】
したがって、当初運転計画Ｂは、どの需給シナリオを想定しても、当初運転計画Ｃと比較して最適に近い効果が期待できる対応力の高い運転計画である。このため、最適計画選択部３１２６は、ワルド基準で比較した場合には、当初運転計画Ｂを選択する。なお、最適計画選択部３１２６が当初運転計画を選択する基準は、ワルド基準に限定されるものではない。たとえば、最適計画選択部３１２６は、平均リグレット値が最良のものを選択するという基準で当初運転計画を選択しても良い。この場合、最適計画選択部３１２６は、平均リグレット値が当初運転計画Ｂよりも低い当初運転計画Ｃを選択する。
【０３１７】
また、たとえば、最適計画選択部３１２６は、リグレット値の分散が最小のものを選択するという基準で当初運転計画を選択しても良い。この場合、最適計画選択部３１２６は、当初運転計画Ｂ及びＣのリグレット値の分散をそれぞれ算出し、算出したリグレット値の分散をそれぞれ比較する。ここで、当初運転計画Ｂのリグレット値の分散が最小である場合には、最適計画選択部３１２６は、当初運転計画Ｂを選択する。また、たとえば、最適計画選択部３１２６は、上述した選択基準を組み合わせて用いても良い。たとえば、最適計画選択部３１２６は、最悪のリグレット値が所定値を下回り、かつ、平均リグレット値が所定値を上回る当初運転計画を選択するようにしても良い。
【０３１８】
出力部３１２７は、出力装置３１０２に各種情報を出力する。たとえば、出力部３１２７は、最適計画選択部３１２６により選択された最良の当初運転計画を出力装置３１０２に出力する。なお、出力部３１２７が出力する情報は、最良の当初運転計画のみに限定されるものではない。たとえば、出力部１２７は、最適計画選択部３１２６により選択された当初運転計画とともに需給シナリオを出力する。
【０３１９】
次に、運転計画作成装置３１００の処理手順について説明する。図４６は、運転計画作成装置の処理手順を示すフローチャートである。図４６に示す処理は、たとえば、受付部３１２１が開始時刻ｔ０と、終了時刻ｔ＿ｅと、初期日照時間ｈ０と、時間刻み幅Δｔとを受け付けたことを契機として実行される。
【０３２０】
図４６に示すように、需給シナリオ生成部３１２２は、複数の需給シナリオを生成する（ステップＳ４６０２）。ここで、図４７を用いて、図４６のステップＳ４６０２に示した需給シナリオの生成処理の処理手順について説明する。
【０３２１】
図４７は、需給シナリオの生成処理（ステップＳ４６０２）の処理手順を示すフローチャートである。図４７に示すように、需給シナリオ生成部３１２２は、日射量データ３１１２から日照時間変動確率テーブル３１１３を生成する（ステップＳ４７０１）。需給シナリオ生成部１２２は、時刻ｔ、日射量Ｉを初期化する（ステップＳ４７０２）。つまり、需給シナリオ生成部３１２２は、時刻ｔ＝ｔ０、日射量Ｉ（ｔ）＝ｈ０とする。
【０３２２】
需給シナリオ生成部３１２２は、時間刻み幅Δｔ後の時刻の日射量Ｉ（ｔ＋Δｔ）を決定する（ステップＳ４７０３）。需給シナリオ生成部３１２２は、初期日照時間ｈ０を初期値とし、時間刻み幅Δｔ後の時刻の日照時間Ｈ（ｔ＋Δｔ）を取得する。需給シナリオ生成部３１２２は、上述した日照時間と日射量との間の相関関係を用いて、取得した日照時間Ｈ（ｔ＋Δｔ）を日射量Ｉ（ｔ＋Δｔ）に変換する。
【０３２３】
需給シナリオ生成部３１２２は、現在の時刻ｔに時間刻み幅Δｔを加算する（ステップＳ４７０４）。需給シナリオ生成部３１２２は、時刻ｔと終了時刻ｔ＿ｅとを比較し、ｔ＜ｔ＿ｅであるか否かを判定する（ステップＳ４７０５）。ｔ＜ｔ＿ｅである場合には（ステップＳ４７０５，Ｙｅｓ）、需給シナリオ生成部３１２２は、ステップＳ４７０３の処理に戻る。需給シナリオ生成部３１２２は、日射量変動シナリオＩを発生するまで、ステップＳ４７０３からステップＳ４７０５までの処理を繰り返す。
【０３２４】
一方、ｔ＜ｔ＿ｅでない場合には（ステップＳ４７０５：Ｎｏ）、需給シナリオ生成部３１２２は、日射量変動シナリオＩに基づいて、出力変動シナリオＯを生成する（ステップＳ４７０６）。なお、需給シナリオ生成部３１２２は、Ｎパタンの出力変動シナリオＯを生成するまでステップＳ４７０２からステップＳ４７０６までの処理を繰り返す。そして、需給シナリオ生成部３１２２は、Ｎパタンの出力変動シナリオＯと、Ｍパタンの需要変動シナリオとの差をとることで、Ｍ×Ｎパタンの需給シナリオを生成する（ステップＳ４７０７）。
【０３２５】
図４６の説明に戻る。最適評価値算出部３１２３は、需給シナリオ生成部３１２２により生成された複数の需給シナリオそれぞれに対して、シミュレーションによる評価値が最良となる最適運転計画を作成する（ステップＳ４６０３）。そして、最適評価値算出部３１２３は、需給シナリオと、最適運転計画による評価値と、最良の評価値を示した最適な制御パラメータとを対応づけて、最適運転評価テーブル３１１６に格納する。
【０３２６】
修正評価値算出部３１２４は、当初運転計画の候補を作成する（ステップＳ４６０４）。修正評価値算出部３１２４は、作成した当初運転計画の候補について、修正時点以降の最適な運転計画を示す最適修正運転計画を作成する（ステップＳ４６０５）。そして、修正評価値算出部３１２４は、最適修正運転計画で蓄電池が運転された場合の評価値を需給シナリオごとに算出する。
【０３２７】
修正評価値算出部３１２４は、終了条件を満たさない場合には（ステップＳ４６０６：Ｎｏ）、ステップＳ４６０４の処理に戻る。たとえば、修正評価値算出部３１２４は、作成したすべての当初運転計画の候補について処理を終了していない場合に、ステップＳ４６０４の処理に戻る。また、たとえば、修正評価値算出部３１２４は、評価値を計算した当初運転計画の候補と需給シナリオとの組み合わせに基づいて、次に評価すべき有力な当初運転計画の候補が推定される場合には、ステップＳ４６０４の処理に戻る。
【０３２８】
一方、終了条件を満たす場合には（ステップＳ４６０６，Ｙｅｓ）、最適計画選択部３１２６は、当初運転計画を選択する（ステップＳ４６０７）。
【０３２９】
ここで、図４８を用いて、図４６のステップＳ４６０７に示した当初運転計画の選択処理の処理手順について説明する。図４８は、当初運転計画の選択処理の処理手順を示すフローチャートである。
【０３３０】
図４８に示すように、対応力算出部３１２５は、当初運転計画の各需給シナリオに対する対応力を計算する（ステップＳ４８０１）。つまり、対応力算出部３１２５は、最適運転評価テーブル３１１６に記録した最適運転計画による評価値と、修正運転評価テーブル３１１８に記録した当初運転計画Ｑに対する最適修正運転計画の評価値との差分を算出することで、対応力を評価する。
【０３３１】
最適計画選択部３１２６は、当初運転計画の候補ごとに対応力の分布を集計する（ステップＳ４８０２）。そして、最適計画選択部３１２６は、集計した対応力の分布に基づいて、当初運転計画を選択する（ステップＳ４８０３）。
【０３３２】
次に、運転計画作成装置３１００の効果について説明する。運転計画作成装置３１００は、需給電力値の推移の可能性を示す複数のシナリオを生成する。運転計画作成装置３１００は、シナリオごとに、蓄電池を運転した場合に最良の評価値である第１の評価値が得られる運転計画を算出する。運転計画作成装置３１００は、運転計画候補ごとに、各シナリオに対してその計画で蓄電池を運転した場合に得られる第２の評価値を算出する。
【０３３３】
運転計画作成装置３１００は、複数の運転計画候補ごとに、各シナリオについて第１の評価値と第２の評価値との差分を算出する。運転計画作成装置３１００は、差分に基づいて、複数の運転計画から蓄電池の運転計画を選択する。このため、運転計画作成装置１００は、天候がどのように変動しても対応できる運転計画を作成することができる。
【０３３４】
すなわち、天候変動によって起こり得る需給電力値の推移の可能性を表現する複数のシナリオを用い、また、各シナリオに対する最良の評価値である第１の評価値を基準に、当初運転計画候補を評価しているので、その当初運転計画で修正時刻まで運転した後で、適切に運転計画を修正すれば、いずれのシナリオが実現しても、そのシナリオに対して最適な運転計画で当初から運転した場合に近い効果が得られるような、対応力の高い当初運転計画を選択できる。
【０３３５】
また、運転計画作成装置３１００は、太陽光発電の出力が大きく変動する状況でも、過去の天候データにおける変動の発生確率に応じて発電出力変動シナリオに含めるようにモデル化し、需給シナリオを発生する。このため、運転計画作成装置３１００は、太陽光発電による出力が急激に変動する可能性を含めて運転計画を評価し、評価の高い運転計画を選択できる。
【０３３６】
すなわち、たとえば、従来技術ではピークカット方式で蓄電池を運転する場合に、蓄電池残量が少ないと、比較的小幅な短時間の出力低下にも対応できず、大きな損失を生ずることがあった。これに対して、運転計画作成装置３１００は、このような小規模の出力低下の影響を含めて運転計画を評価できるので、太陽光発電による出力変動の影響を受けにくい対応力の高い運転計画を選択できる。
【０３３７】
また、たとえば、運転計画作成装置３１００は、選択した当初運転計画とともに需給シナリオを出力する。具体的には、運転計画作成装置３１００は、選択した当初運転計画のうち、リグレット値が大きい方から所定割合に含まれる需給シナリオを抽出し、抽出した需給シナリオを出力する。このため、運転計画作成装置３１００は、出力した需給シナリオについて、蓄電池の制御方式の改良や、蓄電池の残量不足を補完する予備発電設備の導入など、損失を回避する可能性を具体的に検討することを支援することができる。
【０３３８】
また、たとえば、運転計画作成装置３１００は、選択した当初運転計画に対して、リグレット値が大きい方から所定割合に含まれる需給シナリオを抽出し、抽出した需給シナリオを出力する。運転計画作成装置３１００は、抽出した需給シナリオについて、選択された当初運転計画で修正時刻まで蓄電池を運転した場合の蓄電池残量を示す予想蓄電池残量を算出する。
【０３３９】
運転計画作成装置３１００は、抽出した需給シナリオに対して最良の運転計画で修正時刻まで蓄電池を運転した場合の蓄電池残量を示す理想蓄電池残量を算出する。ここで、予想蓄電池残量と理想蓄電池残量との差分は、損失回避のために補完すべき電力の総量に相当する。このため、運転計画作成装置１００は、導入効果が期待できる予備発電設備の規模の概算見積もりを行うことができる。
【０３４０】
たとえば、上記の例では、ピークカット効果を用いて運転計画を評価する場合を説明したが、これに限定されるものではない。たとえば、環境負荷低減効果やコスト削減効果を用いて運転計画を評価しても良い。
【０３４１】
ここで、環境負荷低減効果について説明する。環境負荷低減効果は、太陽光発電や蓄電池の利用によりＣＯ2をどれだけ削減することができたかを評価するものである。たとえば、環境負荷低減効果は、下記の式（３６）で表される。
【０３４２】
（環境負荷低減効果）＝（昼の発電に対するＣＯ2換算係数）×（昼の使用電力削減量）−（夜の発電に対するＣＯ2換算係数）×（夜間電力使用量）・・・（３６）
【０３４３】
なお、昼の発電に対するＣＯ2換算係数は、たとえば、０．４６２［ｋｇ−ＣＯ2／ｋＷｈ］であり、夜の発電に対するＣＯ2換算係数は、たとえば、０．４３５［ｋｇ−ＣＯ2／ｋＷｈ］である。これは、参考文献「温対法に基づく事業者別排出係数の算出方法等に係る検討会事務局「季時別平均排出係数の導入について（平成２１年３月２７日）」」に基づくものである。また、ここに示した換算係数は一例であり、任意の値を用いることができる。以下において、環境負荷低減効果を用いた場合の最適運転評価テーブル３１１６と、修正運転評価テーブル３１１８と、対応力評価テーブル３１１９とを例示する。
【０３４４】
図４９は、環境負荷低減効果を用いた場合の最適運転評価テーブルの一例を示す説明図である。たとえば、最適運転評価テーブル３１１６は、需給シナリオ「１」と、最適運転計画による評価値「１７」と、最適な制御パラメータ「２７８」とを対応づけて記憶する。つまり、最適運転評価テーブル１１６は、需給シナリオ「１」に対して最良の放電基準値は２７８［ｋＷ］であり、この放電基準値で蓄電池を運転した場合の環境負荷低減効果が１７ｋｇ−ＣＯ2であることを示す。また、最適運転評価テーブル３１１６は、他の需給シナリオについても同様に、需給シナリオと、最適運転計画による評価値と、最適な制御パラメータとを対応づけて記憶する。
【０３４５】
図５０は、環境負荷低減効果を用いた場合の修正運転評価テーブルの一例を示す説明図である。たとえば、修正運転評価テーブル３１１８は、当初運転計画「１」と、需給シナリオ「１」と、当初運転計画Ｑに対する最適修正運転計画の評価値「１６」とを対応づけて記憶する。つまり、修正運転評価テーブル１１８は、需給シナリオ「１」に対して当初運転計画「１」で蓄電池が運転された後に、最適修正運転計画で蓄電池が運転された場合の環境負荷低減効果が１６［ｋｇ−ＣＯ2］であることを示す。
【０３４６】
また、修正運転評価テーブル３１１８は、当初運転計画「１」について、他の需給シナリオと、他の当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて記憶する。このように、修正運転評価テーブル３１１８は、一つの当初運転計画に対して、複数の需給シナリオと、複数の当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて記憶する。そして、修正運転評価テーブル３１１８は、他の当初運転計画についても同様に、当初運転計画と、需給シナリオと、当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて記憶する。
【０３４７】
ここで、図５０に示す当初運転計画１〜Ｑが、実施の形態１〜３における行動Ｂ１〜Ｂｍに該当する。また、需給シナリオ１〜Ｍ×Ｎが、実施の形態１〜３における状態Ａ１〜Ａｎに該当する。したがって、たとえば、計算機４０２から行動Ｂ１に対する状態Ａ１の評価値Ｖ１１のリクエストが計算機４０１に送信された場合、計算機４０１から評価値Ｖ１１＝１６［ｋｇ−ＣＯ2］が計算機４０２に送信されることになる。
【０３４８】
図５１は、対応力評価テーブル３１１９の一例を示す説明図である。たとえば、対応力評価テーブル３１１９は、当初運転計画「１」と、需給シナリオ「１」と、当初運転計画Ｑに対する対応力評価「１」とを対応づけて記憶する。つまり、対応力評価テーブル１１９は、需給シナリオ「１」に対して当初運転計画「１」で蓄電池が運転された場合に、環境負荷低減効果の理想値との乖離が１［ｋｇ−ＣＯ2］であることを示す。
【０３４９】
また、対応力評価テーブル３１１９は、当初運転計画「１」について、他の需給シナリオと、他の当初運転計画Ｑに対する対応力評価とを対応づけて記憶する。このように、対応力評価テーブル３１１９は、一つの当初運転計画に対して、複数の需給シナリオと、複数の当初運転計画Ｑに対する対応力評価とを対応づけて記憶する。そして、対応力評価テーブル１１９は、他の当初運転計画についても同様に、当初運転計画と、需給シナリオと、当初運転計画Ｑに対する対応力評価とを対応づけて記憶する。
【０３５０】
ここで、図５１に示す当初運転計画１〜Ｑが、実施の形態１〜３における行動Ｂ１〜Ｂｍに該当する。また、需給シナリオ１〜Ｍ×Ｎが、実施の形態１〜３における状態Ａ１〜Ａｎに該当する。したがって、たとえば、計算機４０２から行動Ｂ１に対する状態Ａ１の評価値Ｖ１１のリクエストが計算機４０１に送信された場合、計算機４０１から評価値Ｖ１１＝１［ｋｇ−ＣＯ2］が計算機４０２に送信されることになる。
【０３５１】
このように、運転計画作成装置３１００は、環境負荷低減効果を用いた場合にも、需給シナリオと、最適運転計画による評価値と、最良の評価値を示した最適な制御パラメータとを対応づけて、図４９に示した最適運転評価テーブル３１１６に格納する。また、運転計画作成装置３１００は、当初運転計画と、需給シナリオと、当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて、図５０に示した修正運転評価テーブル３１１８に格納する。
【０３５２】
また、運転計画作成装置３１００は、図４９の最適運転評価テーブル３１１６に示した最適運転計画による評価値と、図５０の修正運転評価テーブル３１１８に示した当初運転計画Ｑに対する最適修正運転計画の評価値との差分を算出することで、対応力を評価する。このため、運転計画作成装置３１００は、天候がどのように変動しても最良の環境負荷低減効果に近い効果が得られる運転計画を作成することができる。
【０３５３】
また、コスト削減効果について説明する。コスト削減効果は、太陽光発電や蓄電池の利用によりコストをどれだけ削減することができたかを金額に換算して評価するものである。たとえば、コスト削減効果は、下記の式（３７）で表される。
【０３５４】
（コスト削減効果）＝（１ｋＷｈあたりの電力使用料金）×｛（対策前の使用電力量）−（対策後の使用電力量）｝＋｛（対策前の基本料金）−（対策後の基本料金）｝・・・（３７）
【０３５５】
なお、基本料金は最大デマンド値から算出され、たとえば、電力会社ごとに設定される料金である。以下において、コスト削減効果を用いた場合の最適運転評価テーブル３１１６と、修正運転評価テーブル３１１８と、対応力評価テーブル３１１９とを例示する。
【０３５６】
図５２は、コスト削減効果を用いた場合の最適運転評価テーブル３１１６の一例を示す説明図である。たとえば、最適運転評価テーブル３１１６は、需給シナリオ「１」と、最適運転計画による評価値「３６」と、最適な制御パラメータ「２７８」とを対応づけて記憶する。つまり、最適運転評価テーブル３１１６は、需給シナリオ「１」に対して最良の放電基準値は２７８［ｋＷ］であり、この放電基準値で蓄電池を運転した場合のコスト削減効果が３６００万円であることを示す。また、最適運転評価テーブル３１１６は、他の需給シナリオについても同様に、需給シナリオと、最適運転計画による評価値と、最適な制御パラメータとを対応づけて記憶する。
【０３５７】
図５３は、コスト削減効果を用いた場合の修正運転評価テーブル３１１８の一例を示す説明図である。たとえば、修正運転評価テーブル３１１８は、当初運転計画「１」と、需給シナリオ「１」と、当初運転計画Ｑに対する最適修正運転計画の評価値「３４」とを対応づけて記憶する。つまり、修正運転評価テーブル３１１８は、需給シナリオ「１」に対して当初運転計画「１」で蓄電池が運転された後に、最適修正運転計画で蓄電池が運転された場合のコスト削減効果が３４００万円であることを示す。
【０３５８】
また、修正運転評価テーブル３１１８は、当初運転計画「１」について、他の需給シナリオと、他の当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて記憶する。このように、修正運転評価テーブル３１１８は、一つの当初運転計画に対して、複数の需給シナリオと、複数の当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて記憶する。そして、修正運転評価テーブル３１１８は、他の当初運転計画についても同様に、当初運転計画と、需給シナリオと、当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて記憶する。
【０３５９】
ここで、図５３に示す当初運転計画１〜Ｑが、実施の形態１〜３における行動Ｂ１〜Ｂｍに該当する。また、需給シナリオ１〜Ｍ×Ｎが、実施の形態１〜３における状態Ａ１〜Ａｎに該当する。したがって、たとえば、計算機４０２から行動Ｂ１に対する状態Ａ１の評価値Ｖ１１のリクエストが計算機４０１に送信された場合、計算機４０１から評価値Ｖ１１＝３４［万円］が計算機４０２に送信されることになる。
【０３６０】
図５４は、対応力評価テーブル３１１９の一例を示す図である。たとえば、対応力評価テーブル３１１９は、当初運転計画「１」と、需給シナリオ「１」と、当初運転計画Ｑに対する対応力評価「２」とを対応づけて記憶する。つまり、対応力評価テーブル３１１９は、需給シナリオ「１」に対して当初運転計画「１」で蓄電池が運転された場合に、コスト削減効果の理想値との乖離が２００万円であることを示す。
【０３６１】
また、対応力評価テーブル３１１９は、当初運転計画「１」について、他の需給シナリオと、他の当初運転計画Ｑに対する対応力評価とを対応づけて記憶する。このように、対応力評価テーブル３１１９は、一つの当初運転計画に対して、複数の需給シナリオと、複数の当初運転計画Ｑに対する対応力評価とを対応づけて記憶する。そして、対応力評価テーブル３１１９は、他の当初運転計画についても同様に、当初運転計画と、需給シナリオと、当初運転計画Ｑに対する対応力評価とを対応づけて記憶する。
【０３６２】
ここで、図５４に示す当初運転計画１〜Ｑが、実施の形態１〜３における行動Ｂ１〜Ｂｍに該当する。また、需給シナリオ１〜Ｍ×Ｎが、実施の形態１〜３における状態Ａ１〜Ａｎに該当する。したがって、たとえば、計算機４０２から行動Ｂ１に対する状態Ａ１の評価値Ｖ１１のリクエストが計算機４０１に送信された場合、計算機４０１から評価値Ｖ１１＝２［万円］が計算機４０２に送信されることになる。
【０３６３】
このように、運転計画作成装置３１００は、コスト削減効果を用いた場合にも、需給シナリオと、最適運転計画による評価値と、最良の評価値を示した最適な制御パラメータとを対応づけて、図５２に示した最適運転評価テーブル３１１６に格納する。また、運転計画作成装置３１００は、当初運転計画と、需給シナリオと、当初運転計画Ｑに対する最適修正運転計画の評価値とを対応づけて、図５３に示した修正運転評価テーブル３１１８に格納する。
【０３６４】
また、運転計画作成装置３１００は、図５２の最適運転評価テーブル３１１６に示した最適運転計画による評価値と、図５３の修正運転評価テーブル３１１８に示した当初運転計画Ｑに対する最適修正運転計画の評価値との差分を算出することで、対応力を評価する。このため、運転計画作成装置３１００は、天候がどのように変動しても最良のコスト削減効果に近い効果が得られる運転計画を作成することができる。
【０３６５】
また、上述した例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。たとえば、図３１において、最適計画選択部３１２６の処理が自動的に行われる場合を説明したが、この処理は手動的に行うこともできる。
【０３６６】
具体的には、最適計画選択部３１２６は、当初運転計画候補ごとの対応力の分布を示す図を出力装置３１０２に出力させることで、利用者に最良の運転計画を手動的に選択させることもできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。たとえば、図３５に示した最適運転評価テーブルは、必ずしも最適な制御パラメータを記憶しなくても良い。
【０３６７】
また、図３１に示した運転計画作成装置３１００の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、運転計画作成装置３１００の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。たとえば、図３１に示した最適評価値算出部３１２３及び修正評価値算出部３１２４を統合して構成することができる。
【０３６８】
また、上述した例では蓄電池運転計画について説明してきたが、行動計画は蓄電池に限らず、需要の推移に合わせて機器の稼動状態を調節することが効果的な機器の運転計画を作成する場合にも適用できる。そこで、以下では、通信需要の推移にあわせて、通信基地局の稼動台数を調整する運転計画を、運転計画の通信基地局の運転に必要なエネルギー低減の観点で最適化する例を説明する。まず、図５５〜５９を使って、本実施例で想定する運転計画の作成について説明する。
【０３６９】
図５５は、通信基地局の運転台数調整の例を示す説明図である。図５５において、７個の六角形で構成される領域が、通信基地局でカバーすべき領域である。最も左のＭｏｄｅ１は、対象領域全体を１台の基地局でカバーすることを示しており、同様に、その右のＭｏｄｅ４は、４台の基地局で、Ｍｏｄｅ７は、７台の基地局でカバーすることを示している。
【０３７０】
本例では、図５６のように、予め設定されている時間帯毎に、上記３つのモードのいずれで運転するかを指定したものを運転計画と呼ぶ。そして、１日の中で予想される通信需要の推移のいずれが実現しても、予めその推移が起きることが分かっていた場合に達成できる最小のエネルギーに近いエネルギーで運転できるような、運転計画を求めることを目的とする。
【０３７１】
図５７は、１日の通信需要の推移の典型的なデータ例を示す説明図である。この推移に基づき、本例では、図５６に示した５つの時間帯にわけ、それぞれの時間帯では、図５５の中のいずれか１つを選択して運転することを想定している。なお、それぞれの時間帯は、０−６時は、通信需要が少ない時間帯、６−１０時は、通信需要が増加傾向にある時間帯、１０−１４時は、比較的高いレベルで通信需要が安定している時間帯、１４−１８時は、ピークに向かい増加する時間帯、１８−２４時は、ピークから需要が減少していく時間帯に相当する。
【０３７２】
図５８は、通信需要と、その対応に要するエネルギー量（単位時間あたりの消費電力量）の関係を、それぞれの運転モード毎に示す説明図である。横軸は、通信需要の量である。通信需要の指標としては、単位時間（たとえば数分程度）あたりのユーザ（モバイル端末）の発呼回数や通信量などの色々な指標や、それらの指標の組み合わせなどが考えられるが、本例では、説明を簡略化するため、単位時間あたりの発呼回数を用いている。
【０３７３】
縦軸は、通信需要の対応に要するエネルギー量を、１時間あたりに基地局が消費する電力量を単位に示している。たとえば、単位時間あたり２０回程度発呼されるような状態が１時間続いた場合には、Ｍｏｄｅ１では、その対応に１．５［ｋＷｈ］程度の電力を、Ｍｏｄｅ４では、Ｍｏｄｅ１より大きい３［ｋＷｈ］程度の電力を消費することを示している。同様に、３５回程度以上発呼されるようになると、Ｍｏｄｅ４の方が、Ｍｏｄｅ１より少ない消費電力量ですむことがわかる。本実施例の運転計画作成では、このように通信需要によってエネルギー効率との関係が異なる運転モードを、各時間帯内で予想される通信需要の推移を考慮して適切に選択するというのが１つのポイントになる。
【０３７４】
図５９は、本実施例の運転計画作成で考慮するもう１つのエネルギー量である、運転モード切り替えに要するコストの例を示す説明図である。たとえば、最初の行は、Ｍｏｄｅ１からＭｏｄｅ４に機器を切り替えるためのコストであり、図５５のＣ（１，４）に相当する。本例では、このコストデータは、過去の実績データ、もしくは、模擬実験等により、予め利用可能になっていることを前提とする。
【０３７５】
次に、以上で説明した通信基地局の運転計画の作成結果について説明する。本例で想定する運転計画の候補の範囲は、前述の図５６で示したものでる。これは、図６０に示した探索範囲を網羅したものである。図６０の探索範囲は、図５７に例示した通信需要の推移をベースに、考慮に値する運転モードを各時間帯別に選択したものである。なお、図５７の探索範囲を考慮せずに、すべてのモードの組み合わせを運転計画の候補としてもかまわない。
【０３７６】
以下では、６−１０時の時間帯の直前に、６−１０時の運転モードを決定することを例に、処理手順を説明する。まず、本例では、前記の太陽光発電出力変動シナリオと同様の手順で、起こり得る通信需要の推移のシナリオを生成する。
【０３７７】
図６１は、通信需要シナリオ生成のための変動確率テーブルの例を示す説明図である。図６１の横方向に示した「０−２０」、「２０−４０」、「４０−６０」、「６０−８０」、「８０−」は、それぞれ単位時間あたりの発呼回数に対応する。Ｎ（μ，σ）は、平均値μ、標準偏差σの正規分布に従いランダムに発生した値を、変動後の値として用いることを示している。この表の確率値およびσ1〜σ５の値は、過去の通信需要データの統計分析により算出すればよい。
【０３７８】
なお、前記の太陽光発電出力変動シナリオ生成では、１つの変動確率テーブルを使用していたが、本例では、前記の５つの時間帯毎に、図６１のような変動確率テーブルを、過去データに基づき作成し、使用する。また、現在説明の例では、６−１０時の運転モード（６時から翌６時までの運転計画）を作成するので、通信需要生成用の初期値としては、６時の直前の通信需要の値を使用する。
【０３７９】
次に、作成した複数の通信需要シナリオのそれぞれについて、需給シナリオに対する蓄電池の最適運転計画作成と同様の手順で、最適な運転計画（通信機の運転モードの切り替え計画）を作成する。最適運転計画の作成に必要な運転計画の評価では、以下の式に基づき計算した評価値を用いる。
【０３８０】
（消費電力量）＝Σｉ（Σｔ  Ｅ（Ｄ＿ｔ，Ｍｏｄｅ＿ｉ））＋Σｉ  Ｃ（Ｍｏｄｅ＿ｉ，Ｍｏｄｅ＿（ｉ＋１））・・・（３８）
【０３８１】
式（３８）において、ｉは、前述の時間帯のそれぞれに対するインデックスであり、ｔは、各時間帯における単位時間（たとえば１０分）刻みの時刻に対応するインデックスである。なお、今回の例では、６−１０時を最初の時間帯として、翌日の０−６時を最後の時間帯として扱う。Ｄ＿ｔは、ｔに対応する時刻における通信需要値であり、これは、評価対象の通信シナリオによって決まる値である。
【０３８２】
Ｍｏｄｅ＿ｉは、評価対象の運転計画において、時間帯ｉに対応して指定された運転モードである。Ｅ（Ｄ＿ｔ，Ｍｏｄｅ＿ｉ）は、Ｄ＿ｔの通信需要値が単位時間継続した時に、Ｍｏｄｅ＿ｉの運転モードで消費される電力量であり、その値は、図５８のデータによって算出する。また、Ｃ（）は、前記の運転モード切替のコストであり、その値は３０のデータによって算出する（運転モードの切り替えがない場合には０）。なお、ここで算出された消費電力量が評価値に対応する。つまり、この評価値は、低い方が良い値となる。
【０３８３】
図６２は、作成した最適な運転計画の例を示す説明図である。図６２において、「最適運転計画」の列の先頭の数字は、運転計画ＩＤである。また、カッコ内は、説明用に補足した情報で、６−１０時の時間帯を先頭に、翌日０−６時の時間帯までの運転モードの切り替えを方を示している。たとえば、ＩＤ１４で示される運転計画は、６−１０時にＭｏｄｅ４、１０−１４時にＭｏｄｅ４、１４−１８時にＭｏｄｅ７、１８−２４時にＭｏｄｅ４、翌０−６時にＭｏｄｅ１でそれぞれ運転されることを示す。
【０３８４】
最後に、６−１０時の時間帯の運転モードの２つの候補Ｍｏｄｅ１とＭｏｄｅ４について、各通信需要シナリオが実現した場合の評価値を、蓄電池の当初運転計画の評価と同様の手順で算出する。評価に利用する評価値の計算式は、上記の式（３８）と同一である。たとえば、候補Ｍｏｄｅ１について通信需要シナリオ「１」が実現した場合の評価値は、２０４である。
【０３８５】
そして、ここで算出された評価値と最適運転計画による評価値との差分がリグレット値に対応する。たとえば、候補Ｍｏｄｅ１について通信需要シナリオ「１」が実現した場合のリグレット値は、２０４−１６０＝４４となる。また、今回の例では、各シナリオに対する最適運転計画の６−１０時の時間帯の運転モードが、評価対象の運転モードと一致している場合は、リグレット値は０になるので、シミュレーションは省略できる。
【０３８６】
図６３は、評価結果を示す説明図である。この評価結果に基づき、たとえば、通信需要シナリオに対する評価値の中で最悪のものが、最良の運転計画（６−１０時の運転モード）を選ぶことで、いずれの通信需要シナリオが実現しても、１０時に運転計画を修正すれば、予めその推移が起きることが分かっていた場合に達成できる最小のエネルギーに近いエネルギーで運転できることが保障される。
【０３８７】
ここで、図６３に示す６−１０時の運転モードが、実施の形態１〜３における行動Ｂ１〜Ｂｍに該当する。また、通信需給シナリオ１〜Ｍ×Ｎが、実施の形態１〜３における状態Ａ１〜Ａｎに該当する。したがって、たとえば、計算機４０２から行動Ｂ１に対する状態Ａ１の評価値Ｖ１１のリクエストが計算機４０１に送信された場合、計算機４０１から運転モード「１」の通信需給シナリオ「１」の評価値Ｖ１１＝２０４［ｋＷｈ］が計算機４０２に送信されることになる。このように、実施の形態１〜３では、様々な行動計画を適用することができる。
【０３８８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０３８９】
（付記１）複数の行動を含む行動群と、前記行動群に含まれる各行動に対応した複数の状態を含む状態群とを記憶する記憶装置と、
前記行動群から行動を選択し、選択された行動に対応する状態を前記状態群から選択する選択部と、
前記選択部が選択した状態の評価を示す評価値を取得する取得部と、
選択された行動ごとに、前記取得部が取得した評価値の中から、評価が最も低い最低評価値を特定する特定部と、
ある行動に対応して選択された全状態の評価値の中の最低評価値をミニマックス候補として決定し、各行動に対応する最低評価値のうち最も評価の高い評価値をミニマックスとして決定する決定部と、
前記ミニマックス候補の決定後に他の行動に対応して選択される各状態の評価値と前記ミニマックス候補とを評価値の取得の度に比較し、前記評価値が前記ミニマックス候補よりも評価の低いものである場合には、前記選択部を制御して当該行動に対応する状態の選択を打ち切り、前記行動群に含まれる未選択の行動の中から行動を選択させる制御部と、
前記決定部が決定したミニマックスに対応する行動を出力する出力部と、
を備えることを特徴とする計算機。
【０３９０】
（付記２）行動群の行動ごとに状態群の各状態を指定可能な探索空間と任意の値をとる仮想ミニマックスとを記憶する記憶装置と、
前記記憶装置に記憶されている探索空間内の行動群から行動を順次選択し、選択された行動に対する状態群の各状態を順次選択する選択部と、
前記選択された行動に対して選択された状態の評価値を順次取得して、前記探索空間に記憶する取得部と、
前記選択された行動ごとに前記取得部が前記状態群の評価値群を取得した場合、前記選択された行動ごとに前記評価値群の中から最大評価値を特定する特定部と、
前記選択された行動および前記選択された状態の評価値が前記仮想ミニマックス以下である場合、前記選択された行動に対し未選択の状態を前記選択部に選択させ、前記選択された行動および前記選択された状態の評価値が前記仮想ミニマックスよりも大きい場合、前記選択部を制御して選択中の行動に対し未選択の状態の選択を打ち切って、未選択の行動を前記選択部に選択させる制御部と、
前記選択の打ち切りが発生しなかった行動について前記特定された最大評価値群のうち最小評価値をミニマックス候補に決定する第１の決定部と、
選択すべき行動がない場合、いずれかの行動について前記選択の打ち切りが発生したか否かを判断する判断部と、
前記選択の打ち切りが発生しなかった行動があると判断された場合、前記選択の打ち切りが発生しなかった行動について前記決定されたミニマックス候補を、ミニマックスに決定する第２の決定部と、
前記ミニマックスが決定された行動を出力する出力部と、
を有することを特徴とする計算機。
【０３９１】
（付記３）前記計算機はさらに、
各行動について前記選択の打ち切りが発生したと判断された場合、前記選択の打ち切りが発生したときの前記行動群の評価値群の中の最小評価値を前記仮想ミニマックスの下限を示す仮想ミニマックス下限に設定する設定部と、
前記各行動について前記選択の打ち切りが発生したと判断された場合、前記仮想ミニマックスに所定の増加量を追加する追加部と、
前記設定された仮想ミニマックス下限が前記所定の増加量追加後の仮想ミニマックスよりも大きいか否かを判定する判定部と、
前記判定部が前記仮想ミニマックス下限が前記所定の増加量追加後の仮想ミニマックスよりも大きいと判定した場合、前記仮想ミニマックスを、前記所定の増加量追加後の仮想ミニマックスから前記仮想ミニマックス下限に更新する更新部を有することを特徴とする付記２記載の計算機。
【０３９２】
（付記４）前記計算機において、
前記選択部は、
前記更新部が前記所定の増加量追加後の仮想ミニマックスから前記仮想ミニマックス下限に更新した場合、前記行動群から行動を順次々選択するとともに、前記選択された行動に対する状態群の各状態を順次々選択し、
前記取得部は、
前記選択部が再選択した行動に対して順次々選択した状態の評価値のうち未取得の評価値を順次取得し、
前記特定部は、
前記選択部が順次々選択した行動ごとに、前記選択部が前記状態群の評価値群を取得した場合、順次々選択された行動ごとに前記評価値群の中から最大評価値を特定し、
前記制御部は、
前記選択された行動および前記選択された状態の評価値が前記仮想ミニマックス以下であると前記判断部が判断した場合、前記選択された行動に対し未選択の状態を前記選択部に選択させ、前記選択された行動および前記選択された状態の評価値が前記更新された仮想ミニマックスよりも大きいと前記判断部が判断した場合、前記選択された行動に対し未選択の状態の選択を打ち切って、前記選択部に未選択の行動を選択させることを特徴とする付記３記載の計算機。
【０３９３】
（付記５）前記更新部は、
前記仮想ミニマックス下限が前記増加量追加後の仮想ミニマックス以下である場合、前記仮想ミニマックスを前記増加量追加後の仮想ミニマックスに更新することを特徴とする付記３記載の計算機。
【０３９４】
（付記６）行動ごとに最大評価値候補および最大評価値の記憶領域を指定する第１の記憶装置を有するマスタ計算機と、行動群の行動ごとに状態群の各状態を指定可能な探索空間を記憶する第２の記憶装置を有するスレーブ計算機と、がネットワークを介して通信可能な計算機システムであって、
スレーブ計算機は、
前記第２の記憶装置に記憶されている探索空間内の行動および状態のうち、いずれかの行動および状態を指定する開始位置および任意の値をとる仮想ミニマックスを前記マスタ計算機から受信する受信部と、
前記受信部によって受信された開始位置で指定される行動から順次選択し、選択された行動に対し前記開始位置で指定される状態から順次選択する選択部と、
前記選択部によって選択された行動に対して選択された状態の評価値を順次取得する取得部と、
選択された行動ごとに前記取得部によって前記状態群の評価値群が取得された場合、選択された行動ごとに前記評価値群の中から最大評価値を特定する第１の特定部と、
選択中の行動および状態の評価値が前記仮想ミニマックス以下である場合、前記選択部を制御して選択中の行動に対し未選択の状態を選択し、選択中の行動および状態の評価値が前記仮想ミニマックスよりも大きい場合、前記選択部を制御して選択中の行動に対し未選択の状態の選択を打ち切って、未選択の行動を選択する制御部と、
選択中の行動に対し選択の打ち切りが発生した場合、打ち切りが発生したときの評価値を選択中の行動での最大評価値候補として特定する第２の特定部と、
選択中の行動に対して特定された最大評価値または最大評価値候補を前記マスタ計算機に送信し、いずれかの行動の最大評価値が得られた場合、または、各行動の最大評価値候補が得られた場合、評価完了通知を前記マスタ計算機に送信する送信部と、を備え、
前記マスタ計算機は、
行動群の行動ごとに状態群の各状態を指定可能な探索空間のうちいずれかの行動および状態で指定された開始位置と、任意の値をとる仮想ミニマックスとを、スレーブ計算機ごとに異なるように設定し、複数のスレーブ計算機での仮想ミニマックス群の下限となる仮想ミニマックス下限と、前記仮想ミニマックス群の上限となる仮想ミニマックス上限と、を設定する設定部と、
前記設定部によって前記スレーブ計算機ごとに設定された開始位置および仮想ミニマックスを、前記各スレーブ計算機に配信する配信部と、
前記送信部によって前記各スレーブ計算機から送信されてきた最大評価値または最大評価値候補を、前記第１の記憶装置内の該当する行動の記憶領域に書き込む格納部と、
前記複数のスレーブ計算機のうちいずれかのスレーブ計算機からの評価完了通知を検出する検出部と、
前記検出部によって評価完了通知が検出された場合、前記仮想ミニマックス下限を、前記第１の記憶装置に記憶されている最大評価値候補群のうち最小の最大評価値候補に更新し、前記仮想ミニマックス上限を、前記第１の記憶装置に記憶されている最大評価値群の最小の最大評価値に更新する更新部と、
前記更新部による更新後の仮想ミニマックス下限が前記更新部による更新後の仮想ミニマックス上限よりも大きいか否かを判定する判定部と、
前記判定部によって大きいと判定されたときの前記更新後の仮想ミニマックス上限をミニマックスに決定する決定部と、
前記決定部によってミニマックスが決定された行動を出力する出力部と、
を備えることを特徴とする計算機システム。
【０３９５】
（付記７）複数の行動を含む行動群と、前記行動群に含まれる各行動に対応した複数の状態を含む状態群とを記憶する記憶装置を有する計算機に、
前記行動群から行動を選択し、選択された行動に対応する状態を前記状態群から選択し、
選択した状態の評価を示す評価値を取得し、
選択された行動ごとに、取得した評価値の中から、評価が最も低い最低評価値を特定し、
ある行動に対応して選択された全状態の評価値の中の最低評価値をミニマックス候補として決定し、各行動に対応する最低評価値のうち最も評価の高い評価値をミニマックスとして決定し、
前記ミニマックス候補の決定後に他の行動に対応して選択される各状態の評価値と前記ミニマックス候補とを評価値の取得の度に比較し、前記評価値が前記ミニマックス候補よりも評価の低いものである場合には、当該行動に対応する状態の選択を打ち切り、前記行動群に含まれる未選択の行動の中から行動を選択させ、
決定したミニマックスに対応する行動を出力する、
処理を実行させることを特徴とする探索プログラム。
【０３９６】
（付記８）複数のスレーブ計算機とネットワークを介して通信可能であり、行動ごとに最大評価値候補および最大評価値の記憶領域を指定する記憶装置を有する計算機に、
行動群の行動ごとに状態群の各状態を指定可能な探索空間のうちいずれかの行動および状態で指定された開始位置と、任意の値をとる仮想ミニマックスとを、スレーブ計算機ごとに異なるように設定し、前記複数のスレーブ計算機での仮想ミニマックス群の下限となる仮想ミニマックス下限と、前記仮想ミニマックス群の上限となる仮想ミニマックス上限と、を設定し、
前記スレーブ計算機ごとに設定された開始位置および仮想ミニマックスを、前記各スレーブ計算機に配信し、
前記各スレーブ計算機から送信されてきた最大評価値または最大評価値候補を、前記記憶装置内の該当する行動の記憶領域に書き込み、
前記複数のスレーブ計算機のうちいずれかのスレーブ計算機からの評価完了通知を検出し、
評価完了通知が検出された場合、前記仮想ミニマックス下限を、前記記憶装置に記憶されている最大評価値候補群のうち最小の最大評価値候補に更新し、前記仮想ミニマックス上限を、前記記憶装置に記憶されている最大評価値群の最小の最大評価値に更新し、
更新後の仮想ミニマックス下限が更新後の仮想ミニマックス上限よりも大きいか否かを判定し、
大きいと判定されたときの前記更新後の仮想ミニマックス上限をミニマックスに決定し、
ミニマックスが決定された行動を出力する、
処理を実行させることを特徴とする探索プログラム。
【符号の説明】
【０３９７】
４０１，４０２  計算機
６０１  選択部
６０２  取得部
６０３  特定部
６０４  決定部
６０５  制御部
６０６  出力部
１１０１  選択部
１１０２  取得部
１１０３  特定部
１１０４  制御部
１１０５  第１の決定部
１１０６  判断部
１１０７  第２の決定部
１１０８  出力部
１１０９  設定部
１１１０  追加部
１１１１  判定部
１１１２  更新部
１２００  評価済み状態テーブル
１５００  マスタ計算機
１５０１，１５０２  スレーブ計算機
２５０１  受信部
２５０２  選択部
２５０３  取得部
２５０４  第１の特定部
２５０５  制御部
２５０６  第２の特定部
２５０７  送信部
２６０１  設定部
２６０２  配信部
２６０３  受信部
２６０４  格納部
２６０５  検出部
２６０６  更新部
２６０７  判定部
２６０８  決定部
２６０９  出力部
【国際調査報告】
2013042213.tif 000068
2013042213.tif 000069
2013042213.tif 000070
2013042213.tif 000071