(57)【要約】  制御対象となる複数の要素を含む計算機システムであって、計算機システムは計算機と、複数の要素を制御する制御部とを備え、計算機は、少なくとも一つの要素を含むグループの運用状態を最適化するための部分目的関数に基づいて制御される複数のグループから、複数のグループの各々の運用状態を示す運用情報を取得する取得部と、運用情報に基づいて計算機システム全体を最適化するための全体目的関数を生成する全体目的関数生成部と、全体目的関数から所定の部分目的関数を生成する部分目的関数生成部とを有し、制御部は、部分目的関数に基づいて前記複数のグループに含まれる複数の要素を制御する。
2017037835.tif 000002
【特許請求の範囲】
【請求項１】
制御対象となる複数の要素を含む計算機システムであって、
前記計算機システムは、
プロセッサ、前記プロセッサに接続されるメモリ、前記プロセッサに接続され、前記複数の要素に接続するインタフェースを有する少なくとも一つの計算機と、
前記複数の要素を制御する制御部と、を備え、
前記計算機は、
少なくとも一つの前記要素を含むグループの運用状態を最適化するための部分目的関数に基づいて制御される複数のグループから、前記複数のグループの各々の運用状態を示す運用情報を取得する取得部と、
前記運用情報に基づいて前記計算機システム全体を最適化するための全体目的関数を生成する全体目的関数生成部と、
前記全体目的関数から所定の数の前記部分目的関数を生成する部分目的関数生成部と、を有し、
前記制御部は、前記部分目的関数に基づいて前記複数のグループに含まれる複数の要素を制御することによって前記計算機システムを最適化することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記全体目的関数生成部は、
前記運用情報に含まれるパラメータ間の相関関係を示す相関行列を生成し、
前記相関行列から固有ベクトルを算出し、
前記パラメータ及び前記固有ベクトルを用いて前記全体目的関数を生成し、
前記部分目的関数生成部は、最適化の最小単位となるグループの数だけ前記全体目的関数を分割することによって、前記複数のグループの各々の前記部分目的関数を生成することを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記複数のグループは、第１のグループと第２のグループを含み、
前記部分目的関数生成部は、
前記全体目的関数を用いて、前記第１のグループを特徴付ける前記パラメータを変数とする第１の関数を算出することによって、前記第１のグループの前記部分目的関数を生成し、
前記全体目的関数を用いて、前記第２のグループを特徴付ける前記パラメータを変数とする第２の関数を算出することによって、前記第２のグループの前記部分目的関数を生成することを特徴とする計算機システム。
【請求項４】
請求項３に記載の計算機システムであって、
前記部分目的関数生成部は、
前記全体目的関数に含まれる前記第２のグループを特徴付ける前記パラメータを定数に置き換えることによって、前記第１のグループの前記部分目的関数を生成し、
前記全体目的関数に含まれる前記第１のグループを特徴付ける前記パラメータを定数に置き換えることによって、前記第２のグループの前記部分目的関数を生成することを特徴とする計算機システム。
【請求項５】
請求項２に記載の計算機システムであって、
前記部分目的関数生成部は、
新たに生成された前記部分目的関数と、現在前記各グループに適用される部分目的関数とを比較し、
前記新たに生成された部分目的関数を前記各グループに設定する必要があるか否かを判定し、
前記新たに生成された部分目的関数を前記各グループに設定する必要があると判定された場合、前記各グループに前記新たに生成された部分目的関数を設定することを特徴とする計算機システム。
【請求項６】
請求項２に記載の計算機システムであって、
前記計算機は、前記複数のグループの運用状態のシミュレーションを実行するシミュレーション部を有し、
前記全体目的関数は、前記シミュレーション部によって実行されたシミュレーションの結果に基づいて前記全体目的関数を生成することを特徴とする計算機システム。
【請求項７】
制御対象となる複数の要素を含む計算機システムにおけるシステム制御方法であって、
前記計算機システムは、
プロセッサ、前記プロセッサに接続されるメモリ、前記プロセッサに接続され、前記複数の要素に接続するインタフェースを有する少なくとも一つの計算機と、
前記複数の要素を制御する制御部と、を有し、
前記システム制御方法は、
前記計算機が、少なくとも一つの前記要素を含むグループの運用状態を最適化するための部分目的関数に基づいて制御される複数のグループから、前記複数のグループの各々の運用状態を示す運用情報を取得する第１のステップと、
前記計算機が、前記運用情報に基づいて前記計算機システム全体を最適化するための全体目的関数を生成する第２のステップと、
前記計算機が、前記全体目的関数から所定の数の前記部分目的関数を生成する第３のステップと、
前記制御部が、前記部分目的関数に基づいて前記複数のグループに含まれる複数の要素を制御することによって前記計算機システムを最適化する第４のステップと、を含むことを特徴とするシステム制御方法。
【請求項８】
請求項７に記載のシステム制御方法であって、
前記第２のステップは、
前記運用情報に含まれるパラメータ間の相関関係を示す相関行列を生成するステップと、
前記相関行列から固有ベクトルを算出するステップと、
前記パラメータ及び前記固有ベクトルを用いて前記全体目的関数を生成するステップと、を含み、
前記第３のステップは、最適化の最小単位となるグループの数だけ前記全体目的関数を分割することによって、前記複数のグループの各々の前記部分目的関数を生成するステップを含むことを特徴とするシステム制御方法。
【請求項９】
請求項８に記載のシステム制御方法であって、
前記複数のグループは、第１のグループと第２のグループを含み、
前記第３のステップは、
前記全体目的関数を用いて、前記第１のグループを特徴付ける前記パラメータを変数とする第１の関数を算出することによって、前記第１のグループの前記部分目的関数を生成する第５のステップと、
前記全体目的関数を用いて、前記第２のグループを特徴付ける前記パラメータを変数とする第２の関数を算出することによって、前記第２のグループの前記部分目的関数を生成する第６のステップと、を含むことを特徴とするシステム制御方法。
【請求項１０】
請求項９に記載のシステム制御方法であって、
前記第５のステップでは、前記全体目的関数に含まれる前記第２のグループを特徴付ける前記パラメータを定数に置き換えることによって、前記第１のグループの前記部分目的関数を生成し、
前記第６のステップでは、前記全体目的関数に含まれる前記第１のグループを特徴付ける前記パラメータを定数に置き換えることによって、前記第２のグループの前記部分目的関数を生成することを特徴とするシステム制御方法。
【請求項１１】
請求項８に記載のシステム制御方法であって、
前記第３のステップは、
新たに生成された前記部分目的関数と、現在前記各グループに適用される部分目的関数とを比較するステップと、
前記新たに生成された部分目的関数を前記各グループに設定する必要があるか否かを判定するステップと、
前記新たに生成された部分目的関数を前記各グループに設定する必要があると判定された場合、前記各グループに前記新たに生成された部分目的関数を設定するステップと、を含むことを特徴とするシステム制御方法。
【請求項１２】
請求項８に記載のシステム制御方法であって、
前記計算機が、前記複数のグループの運用状態のシミュレーションを実行するステップと、
前記計算機が、前記シミュレーションの結果に基づいて前記全体目的関数を生成するステップと、を含むことを特徴とするシステム制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数の要素を自律的に制御するシステム及び方法に関する。
【背景技術】
【０００２】
多数の要素が相互作用するような大規模かつ複雑なシステムを制御する場合、システムの全体最適化を行おうとしても現実的に解けないという問題である。システムの全体最適化では、膨大な要素の状態の組合せを最適化する必要がある。したがって、組合せの数が増大した場合、解空間が巨大化するため、有限時間で最適解を求めることが困難になる。【０００３】
前述した問題からシステム全体の最適制御を実現するために、大規模な最適化問題を小規模な部分最適化問題に分割する方法が研究されている（例えば特許文献１、非特許文献１を参照）。【０００４】
特許文献１には、「１つ以上のロットをグルーピングして生成したロットグルーピングを、製造ライン工程の各リソースに割付ける際の、前記ロットグルーピングと前記リソースとの組み合わせであるグループ候補の最適解を探索する処理を行うサーバを含んで構成される最適解探索システムであって、前記サーバが、指定された条件下で前記ロットグルーピングと前記リソースとの組み合わせとして可能な全てのグループ候補を含んでなる全体集合を生成する機能、前記生成した全体集合を、１つ以上のグループ候補を要素として持つ複数の部分集合として、かつ、ある部分集合内のグループ候補に所属する各ロットが他の部分集合内のグループ候補には所属しないように分割する機能、前記部分集合毎の最適解に相当するグループ候補を探索して、部分最適解として決定する機能、前記決定した部分集合毎の部分最適解について、各部分最適解を合わせて、前記全体集合の最適解として出力する機能を有する」ことが記載されている。また、非特許文献１には、システムの全体目的関数からサブシステムの部分目的関数を生成することが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−３３５１８号公報
【非特許文献】
【０００６】
【非特許文献１】廣松毅ほか．２章  最適制御の理論．経済分析，1989，第115号，pp. 20-54．（http://www.esri.go.jp/jp/archive/bun/bun115/bun115b.pdf）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
部分最適化問題に分割する方法では、以下のような問題が生じる。【０００８】
第１は、システムの全体最適化と部分最適化とが必ずしも一致しない問題である。一般的に、大規模なシステムは、複数のサブシステムに分割し、サブシステム毎に部分最適化が行われる。しかし、部分最適化を行っても、システム全体の最適化されない場合がある。【０００９】
第２は、全体最適化を行う場合、システムの状態変化に即座に追従できない問題である。一般的にサブシステムの部分制御はフロントエンドで行われるため、部分最適化はシステムの状態変化に即座に対応できる。一方、システム全体の制御はバックエンドで行われるため、情報収集及び全体最適化に要する時間がかかり、システムの状態変化に即座に対応できない。【００１０】
前述した問題に対して、特許文献１及び非特許文献１に記載の方法では、システム全体の最適化問題を小規模な部分最適化問題に分割し、部分最適化問題を解くことによって前述した問題を解決している。【００１１】
例えば、非特許文献１では、部分目的関数を解くことによって、最適化問題の解空間が小さくなるため有限時間で最適解を求めることができる。また、非特許文献１では、システム全体の全体目的関数からサブシステムの部分目的関数を生成することによって第１の問題を解決している。また、非特許文献１では、システム全体を統合するコーディネータが部分目的関数の変数を調整して全体制御の負荷を軽減することによって、第２の問題を解決している。【００１２】
一方、前述した問題の他に、システムが複雑系であるため一意な解を求められない問題である。複雑系では要素同士が相互作用し、また、要素と環境とが相互作用するため、全体の挙動を要素又は一部分から把握できない。そのため、不確実性又は限定合理性の下でシステムを制御する必要があり、システム又はサブシステムの目的関数を適切に設定できない。したがって、全体目的関数が設定できない場合、非特許文献１に記載の技術を適用できない。【００１３】
本発明の目的は、システムの状態変化にリアルタイムに対応し、かつ、システムの状態に柔軟に適応した最適化を実現する自律制御システムを提供することにある。
【課題を解決するための手段】
【００１４】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、制御対象となる複数の要素を含む計算機システムであって、前記計算機システムは、プロセッサ、前記プロセッサに接続されるメモリ、前記プロセッサに接続され、前記複数の要素に接続するインタフェースを有する少なくとも一つの計算機と、前記複数の要素を制御する制御部と、を備え、前記計算機は、少なくとも一つの前記要素を含むグループの運用状態を最適化するための部分目的関数に基づいて制御される複数のグループから、前記複数のグループの各々の運用状態を示す運用情報を取得する取得部と、前記運用情報に基づいて前記計算機システム全体を最適化するための全体目的関数を生成する全体目的関数生成部と、前記全体目的関数から所定の前記部分目的関数を生成する部分目的関数生成部と、を有し、前記制御部は、前記部分目的関数に基づいて前記複数のグループに含まれる複数の要素を制御することによって前記計算機システムを最適化することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、全体目的関数及び部分目的関数が再帰的に生成され、また、制御部が部分目的関数に基づいてグループに含まれる要素を制御するため、システムの状態変化にリアルタイムに対応し、かつ、システムの状態に適応した最適化を実現できる。上記以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１６】
【図１】実施例１の自律制御システムの構成例を示す説明図である。
【図２】実施例１の自律制御システムの概念図である。
【図３】実施例１の自律制御システムの制御方法を示す図である。
【図４】実施例１の管理計算機が実行する処理を説明するフローチャートである。
【図５】実施例１の管理計算機が実行する処理の具体例を説明するフローチャートである。
【図６】実施例２の自律制御システムの構成例を示す説明図である。
【図７】実施例３の自律制御システムの構成例を示す説明図である。
【図８】実施例３の自律制御システムの概念図である。
【図９】従来の制御システムの概念図である。
【発明を実施するための形態】
【００１７】
以下、本発明による実施例を図面とともに説明する。
【実施例１】
【００１８】
図１は、実施例１の自律制御システムの構成例を示す説明図である。【００１９】
自律制御システム１００は、管理計算機１０１、複数のサブシステム１０２、及びデータベース１０３から構成される。管理計算機１０１、複数のサブシステム１０２、及びデータベース１０３は、ネットワーク１０４を介して互いに接続される。ネットワーク１０４は、ＷＡＮ（Ｗｉｄe  Ａｒｅａ  Ｎｅｔｗｏｒｋ）又はＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等が考えられる。なお、本発明はネットワーク１０４の接続形式に限定されない。【００２０】
管理計算機１０１は、自律制御システム１００の全体最適化を行うための全体目的関数、及び自律制御システム１００の部分最適化を行うための部分目的関数を管理する。管理計算機１０１の具体的な構成は後述する。【００２１】
サブシステム１０２は、部分最適化の対象となるシステム（グループ）である。図1に示す例では、ｎ個のサブシステム１０２が存在する。各サブシステム１０２は、複数の計算機１０５を含む。なお、計算機１０５のハードウェア構成は、管理計算機１０１と同様のものである。ただし、サブシステム１０２は、後述する記憶装置１１２等は含まなくてもよい。また、サブシステム１０２に含まれる複数の計算機１０５のうち、少なくとも一つの計算機１０５が部分目的関数に基づく部分最適化を行う制御機能を有する。【００２２】
なお、サブシステム１０２は、部分最適化を行う最小単位となるグループを定義するものであり、計算機１０５から構成される必要はない。例えば、製品を製造する工場の場合、複数の工程を一つのサブシステム１０２として扱えばよい。この場合、自律制御システム１００は、管理計算機１０１及び制御機能を有する計算機１０５を備えればよい。ただし、制御機能を有する計算機１０５の数は、サブシステム１０２の数と必ずしも一致しなくてもよい。【００２３】
データベース１０３は、図示しないコントローラ、及び図示しない複数の記憶装置を有するストレージシステムである。データベース１０３には、目的指標及び設定情報等の全体目的関数を生成するための情報が格納される。ここで、目的指標とは、自律制御システム１００全体の最適化の指標を表す。例えば、コスト、時間等の数値、又は、コスト、時間等の条件等が目的指標となる。【００２４】
ここで、管理計算機１０１のハードウェア構成及びソフトウェア構成について説明する。まず、管理計算機１０１のハードウェア構成について説明する。管理計算機１０１は、プロセッサ１１０、メモリ１１１、記憶装置１１２、ネットワークインタフェース１１３、及びユーザインタフェース１１４を備える。なお、管理計算機１０１は図示しない構成を含んでいてもよい。【００２５】
プロセッサ１１０は、メモリ１１１に格納されるプログラムを実行する。プロセッサ１１０がメモリ１１１に格納されるプログラムを実行することによって、管理計算機１０１が有する機能が実現される。以下の説明では、機能（プログラム）を主体に処理を説明する場合、プロセッサ１１０が当該機能を実現するプログラムを実行していることを示す。【００２６】
メモリ１１１は、プロセッサ１１０によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。また、メモリ１１１は、プログラムによって使用されるワークエリアを含む。【００２７】
記憶装置１１２は、各種情報を格納する。例えば、全体目的関数を生成するための情報を格納する。全体目的関数を生成するための情報には、目的指標及びシステムの設定情報等が含まれる。【００２８】
ネットワークインタフェース１１３は、ネットワーク１０４を介して他の装置に接続するためのインタフェースである。ユーザインタフェース１１４は、情報の入力及び情報の出力を行うためのインタフェースである。ユーザインタフェース１１４は、例えば、キーボード、マウス、タッチパネル、及びディスプレイ等を含む。【００２９】
次に、管理計算機１０１のソフトウェア構成について説明する。実施例１のメモリ１１１は、情報取得部１２０、特徴ベクトル算出部１２１、全体目的関数生成部１２２、部分目的関数生成部１２３、設定部１２４、及びシミュレーション部１２５を実現するプログラムを格納する。なお、メモリ１１１は、図示しないオペレーティングシステム等のプログラムを含む。【００３０】
情報取得部１２０は、ネットワーク１０４を介して、各サブシステム１０２の運用情報を取得する。取得された運用情報は、メモリ１１１又は記憶装置１１２のいずれかに格納される。特徴ベクトル算出部１２１は、運用情報から特徴ベクトルを算出する。【００３１】
全体目的関数生成部１２２は、目的指標及び特徴ベクトルに基づいて全体目的関数を生成する。すなわち、全体目的関数生成部１２２は、部分目的関数に基づいて制御された各サブシステム１０２の運用情報を入力として、全体目的関数を生成する。なお、全体目的関数生成部１２２が特徴ベクトル算出部１２１を含むような構成であってもよい。【００３２】
部分目的関数生成部１２３は、全体目的関数を入力として、部分目的関数を生成する。後述するように、部分目的関数生成部１２３は、全体目的関数を分割することによって部分目的関数を生成する。また、部分目的関数生成部１２３は、新たに生成された部分目的関数を各サブシステム１０２に送信することによって、各サブシステム１０２に部分目的関数を設定する。なお、部分目的関数生成部１２３は、生成された部分目的関数をログとして保持する。【００３３】
設定部１２４は、データベース１０３から全体目的関数を生成するための情報を読み出し、読み出された情報を記憶装置１１２等に格納する。なお、当該情報は、ユーザインタフェース１１４を介して入力されてもよい。また、設定部１２４は、自律制御システム１００の運用のシミュレーションを行う場合、記憶装置１１２に格納された情報を読み出す。【００３４】
シミュレーション部１２５は、自律制御システム１００の運用のシミュレーションを行う。また、シミュレーション部１２５は、シミュレーションの結果、すなわち、運用情報を情報取得部１２０に出力する。例えば、シミュレーション部１２５は、自律制御システム１００の運用開始時又はシステム構成の変更時にシミュレーションを行う。また、シミュレーション部１２５は、自律制御システム１００の運用中に、運用情報又は特徴ベクトルを入力としてシミュレーションを行い、自律制御システム１００の運用状態を予測する。予測結果に基づいて全体目的関数が生成されることとなる。【００３５】
ここで、実施例１の自律制御システム１００の自律制御、及び従来の制御システムの制御について説明する。【００３６】
図２は、実施例１の自律制御システム１００の概念図である。図３は、実施例１の自律制御システム１００の制御方法を示す図である。図９は、従来の制御システムの概念図である。【００３７】
自律制御システム１００は、複数の要素から構成される。図２に示す自律制御システム１００は、要素Ｘａ１、要素Ｘａ２、要素Ｘａ３、要素Ｘａ４、要素Ｘｂ１、要素Ｘｂ２、要素Ｘｂ３、要素Ｘｂ４、要素Ｘｂ５、要素Ｘｃ１、要素Ｘｃ２、要素Ｘｃ３、及び要素Ｘｄ１を含む。各要素は互いに関係性を有する。【００３８】
また、自律制御システム１００は、一つ以上の要素を含むグループ２００単位に最適化が行われる。図２に示す自律制御システム１００は、グループ２００−１、グループ２００−２、グループ２００−３、及びグループ２００−４の四つのグループを含む。グループ２００−１は要素Ｘａ１、要素Ｘａ２、要素Ｘａ３、及び要素Ｘａ４を含む。グループ２００−２は要素Ｘｂ１、要素Ｘｂ２、要素Ｘｂ３、要素Ｘｂ４、及び要素Ｘｂ５を含む。グループ２００−３は要素Ｘｃ１、要素Ｘｃ２、及び要素Ｘｃ３を含む。グループ２００−４は要素Ｘｄ１を含む。【００３９】
ここで、グループ２００は図１のサブシステム１０２に対応し、要素はサブシステム１０２に含まれる計算機１０５に対応する。【００４０】
各グループ２００は制御部を含み、当該制御部がグループ２００を制御する。より具体的には、各グループ２００の制御部は、全体目的関数Ｇを分割して生成された部分目的関数ｇに基づいて各グループ２００を制御する。【００４１】
図２では、グループ２００−１の制御部は部分目的関数ｇａに基づいてグループ２００−１を制御し、グループ２００−２の制御部は部分目的関数ｇｂに基づいてグループ２００−２を制御し、グループ２００−３の制御部は部分目的関数ｇｃに基づいてグループ２００−３を制御し、グループ２００−４の制御部は部分目的関数ｇｄに基づいてグループ２００−４を制御する。ここで、各グループ２００の部分目的関数ｇは下式（１）のように与えられ、また、全体目的関数Ｇは下式（２）のように表すことができる。【００４２】
【数１】
2017037835.tif 000003
【００４３】
【数２】
2017037835.tif 000004
【００４４】
ここで、部分目的関数ｇの変数ｘａ１等は、要素Ｘａ１等の状態を示すパラメータである。部分目的関数ｇａの変数ｘｂ１ｏ等はグループ２００−１に相互作用する要素の状態を示すパラメータである。【００４５】
例えば、グループ２００−１の制御部は、要素Ｘａ１、要素Ｘａ２、要素Ｘａ３、及び要素Ｘａ４の状態、並びに、要素Ｘｂ１、要素Ｘｂ２、及び要素Ｘｃ２の状態を参照して、グループ２００−１を最適化するための制御を行う。他のグループ２００の制御部についても同様の制御が行われる。【００４６】
図３に示すように、部分目的関数ｇは、全体目的関数Ｇを分割することによって生成され、各グループ２００に設定される。また、全体目的関数Ｇは、部分目的関数ｇに基づく制御結果である運用情報から生成される。このように、本実施例では、全体目的関数Ｇに基づく部分目的関数ｇの生成、及び部分目的関数ｇの制御結果に基づく全体目的関数Ｇの生成が再帰的に循環する。【００４７】
これによって、部分最適化と全体最適化との間の乖離を回避することができる。また、自律制御システム１００全体の最適化を部分最適化により実現しているため、有限時間内で最適解を求めることができる。また、各グループ２００の制御部が、部分目的関数ｇに基づいて各グループ２００を自律的に制御することによって、各グループ２００の状態変化にリアルタイムに対応した制御が可能となる。さらに、システムが複雑系であっても、システムの状態変化に合わせて全体目的関数及び部分目的関数が更新されるため、システムの状態に柔軟に適応した最適化を実現できる。すなわち、システムの状態に応じて最適な全体目的関数及び部分目的関数が、自律制御システム１００に設定される。【００４８】
従来の制御システム９００も互いに関係性を有する複数の要素から構成される。説明の簡単のため、図９に示す制御システム９００を構成する要素は、自律制御システム１００を構成する要素と同一であるものとする。また、従来の制御システム９００のグループ９１０−１、９００−２、９００−３、９００−４の構成は、自律制御システム１００のグループ２００−１、２００−２、２００−３、２００−４の構成と同一であるものとする。【００４９】
従来の制御システム９００では、全体目的関数Ｆは、下式（３）で与えられる。変数の組合せが膨大になると、有限時間内に全体目的関数Ｇの最適解を求めることが困難である。また、全体目的関数Ｆに基づく最適化（制御）には時間が掛かり、各要素又は各グループ２００の変化に対応できない。また、従来の制御システム９００では、部分目的関数ｆは下式（４）で与えられるため、全体目的関数Ｆに基づく最適化と部分目的関数ｆに基づく最適化とが一致しない。また、全体目的関数Ｆの最適解を求めることができない。さらに、複雑系のシステムの場合、全体目的関数Ｆ又は部分目的関数ｆを適切に設定できない。【００５０】
【数３】
2017037835.tif 000005
【００５１】
【数４】
2017037835.tif 000006
【００５２】
これに対して、実施例１の自律制御システム１００は、全体目的関数Ｇを分割することによって部分目的関数ｇを生成しているため、全体目的関数Ｇに基づく制御と、部分目的関数ｇに基づく制御との間の乖離を抑止できる。また、部分目的関数ｇに基づいて、各グループ２００が自律的に制御されるため、最適解を算出する時間を削減し、また、最適解を容易に求めることができる。さらに、システムの状態変化に対応して全体目的関数Ｇの生成と部分目的関数ｇの生成とが再帰的に行われるため、システムの状態に対応した目的関数を設定できる。【００５３】
図４は、実施例１の管理計算機１０１が実行する処理を説明するフローチャートである。【００５４】
情報取得部１２０は、周期的に又は管理者から指示を受け付けた場合、各サブシステム１０２から運用情報を取得する（ステップＳ４０１）。なお、各サブシステム１０２は、部分目的関数に基づいて部分最適化を行っている。【００５５】
次に、特徴ベクトル算出部１２１は、運用情報から特徴ベクトルを算出する（ステップＳ４０２）。次に、全体目的関数生成部１２２は、目的指標及び特徴ベクトルに基づいて、全体目的関数を生成する（ステップＳ４０３）。ステップＳ４０２及びステップＳ４０３の処理は、例えば、データマイニングにおける主成分分析及び重回帰分析等の多変量解析、又は、人工知能におけるパターン認識及び機械学習等を用いることが考えられる。【００５６】
部分目的関数生成部１２３は、全体目的関数が入力された場合、全体目的関数を分割することによって、部分目的関数を生成する（ステップＳ４０４）。なお、部分目的関数はサブシステム１０２の数だけ生成されるものとする。【００５７】
全体目的関数の分割方法としては、厳密な分割原理に基づく分割方法を用いる方法が考えられる。ただし、自律制御システム１００の状態は変化するため分割原理に基づいて分割しても常に最適な解とはならず、また、システムの状態に応じて全体目的関数及び部分目的関数が再帰的に更新されるため厳密な分割原理に基づく分割方法でなくてもよい。例えば、サブシステム１０２に関連するパラメータのみを変数として扱う分割方法等が考えられる。急激なシステムの状態変化に対しては、システム変更に伴う割り込み処理を用いて対応すればよい。【００５８】
部分目的関数生成部１２３は、サブシステム１０２に対して部分目的関数を更新するか否かを判定する（ステップＳ４０５）。なお、ステップＳ４０５の判定処理はサブシステム毎に行われる。【００５９】
例えば、以下のような処理が実行される。部分目的関数生成部１２３は、対象となるサブシステムを選択する。部分目的関数生成部１２３は、選択されたサブシステム１０２に設定される部分目的関数と、新たに生成された部分目的関数とを比較し、関数が変化しているか否かを判定する。関数が変化している場合、部分目的関数生成部１２３は、部分目的関数を更新すると判定する。【００６０】
また、別の方法としては以下のような処理が考えられる。部分目的関数生成部１２３は、更新前の部分目的関数と新たに生成された部分目的関数との距離等の関数の類似度を算出する。部分目的関数生成部１２３は、当該類似度が所定の閾値より小さい場合、部分目的関数を更新すると判定する。なお、前述した二つの判定方法は一例であってこれに限定されない。【００６１】
ステップＳ４０５において、全てのサブシステム１０２の部分目的関数を更新しないと判定された場合、管理計算機１０１はステップＳ４０１に戻り同様の処理を実行する。【００６２】
ステップＳ４０５において、少なくとも一つのサブシステム１０２の部分目的関数を更新すると判定された場合、部分目的関数生成部１２３は、新たに生成された部分関数を当該サブシステム１０２に設定する（ステップＳ４０６）。その後、管理計算機１０１はステップＳ４０１に戻り同様の処理を実行する。具体的には、部分目的関数生成部１２３が、部分目的関数を更新する必要があるサブシステム１０２に対して、新たに生成された部分目的関数を送信する。【００６３】
なお、部分目的関数を設定する場合、サブシステム１０２と同期して設定してもよいし、サブシステム１０２の状態に合わせて非同期的に設定してもよい。例えば、自律制御システム１００の急な状態変化又は大幅な設定変更等がある場合にはサブシステム１０２と同期して部分目的関数を設定すればよい。また、自律制御システム１００の通常運用時には、サブシステム１０２が関係性の大きい要素から構成され、かつ、サブシステム１０２間の関係性が小さい場合、サブシステム１０２と非同期で部分目的関数を設定すればよい。【００６４】
サブシステム１０２の制御部は、部分目的関数生成部１２３によって設定された部分目的関数に基づいて部分最適化を行う。なお、サブシステム１０２の制御部は、部分目的関数に基づいて、サブシステム内の計算機１０５（要素）の関係性を変更し、計算機１０５（要素）を追加若しくは削除し、又は、サブシステム１０２間の計算機１０５（要素）の組み替えを行う場合がある。【００６５】
このように、自律制御システム１００では、部分目的関数に基づく制御結果である運用情報に基づく全体目的関数の生成、全体目的関数に基づく部分目的関数の生成が再帰的に行われる。【００６６】
自律制御システム１００の運用開始時、又は、自律制御システム１００の大幅な変更に割り込み処理の開始時には、設定部１２４が、目的指標及び設定情報を受け付ける（ステップＳ４１１）。自律制御システム１００の変更時には、管理計算機１０１に対して割込み処理を行えばよい。【００６７】
シミュレーション部１２５は、自律制御システム１００の運用をシミュレーションし（ステップＳ４１２）、シミュレーションの結果、目的指標及び設定情報に基づいて全体目的関数を生成する（ステップＳ４０３）。なお、シミュレーション部１２５は、ステップＳ４０１において取得された運用情報を用いてもよいし、また、ステップＳ４０２において算出された特徴ベクトルを用いてもよい。【００６８】
次に、図５を用いて管理計算機１０１が実行する処理の具体例について説明する。図５は、実施例１の管理計算機１０１が実行する処理の具体例を説明するフローチャートである。【００６９】
以下の説明では、ｎ個のサブシステム１０２−１〜１０２−ｎが存在しているものとする。また、識別子が「ｉ」であるサブシステム１０２の運用情報には、ｋ個のパラメータｘｉｋ＿ｉの値が含まれるものとする。ここで、ｋ＿ｉは識別子が「ｉ」であるサブシステム１０２のパラメータを識別する識別子である。なお、パラメータｘｉｋ＿ｉの値は、スカラー値及びベクトル値のいずれであってもよい。例えば、時系列データを扱うシステムの場合、複数の時系列データ群から抽出された特徴量（ベクトル）がパラメータｘｉｋ＿ｉの値となる。ここでは、説明の簡単のため、パラメータｘｉｋの値はスカラー値であるものとする。【００７０】
以下の説明では、ｋ＿ｉ個のパラメータｘｉｋ＿ｉの値を含む運用情報を運用情報（ｘｉｋ＿ｉ）とも記載する。【００７１】
ステップＳ４０１において、情報取得部１２０は、サブシステム１０２−１から運用情報（ｘ１ｋ＿１）を取得し、サブシステム１０２−２から運用情報（ｘ２ｋ＿２）を取得し、サブシステム１０２−ｎから運用情報（ｘｎｋ＿ｎ）を取得する。【００７２】
ステップＳ４０２において、特徴ベクトル算出部１２１は、複数のパラメータｘｉｋ＿ｉの間の相関関係を示す相関行列Ａを生成する。なお、相関行列の要素である相関係数ａｉｊはパラメータｘｉｋ＿ｉの間の相関解析によって求めることができる。添字ｉ、ｊは、１からｍまでの整数である。また、ｍは自律制御システム１００全体のパラメータｘｉｋ＿ｉの総数と一致する。特徴ベクトル算出部１２１は、固有値λｓからなる固有値行列及び固有ベクトルＵを生成する。添字ｓは、１からｍまでの整数である。固有値ベクトルが特徴ベクトルとなる。【００７３】
ステップＳ４０３において、全体目的関数生成部１２２は、目的指標に対する重回帰分析を実行することによって、特徴ベクトルＵ及び回帰係数αｔから構成される全体目的関数を生成する。添字ｔは０以上かつｍ以下の整数である。例えば、下式（５）のように全体目的関数が生成される。なお、計算量を削減するために固有値が大きい成分を選択することによって全体目的関数の次元を縮約してもよい。すなわち、回帰係数のパラメータの数が固有ベクトルの固有値の数より小さくなるように重回帰分析を行ってもよい。【００７４】
【数５】
2017037835.tif 000007
【００７５】
ステップＳ４０４において、部分目的関数生成部１２３は、固有ベクトルＵを元のパラメータｘｉｋ＿ｉの表記に戻すことによって全体目的関数から下式（６）に示すような部分目的関数を生成する。【００７６】
【数６】
2017037835.tif 000008
【００７７】
ここで、全体目的関数及び部分目的関数の生成方法の一例について説明する。説明の簡単のため、自律制御システム１００が、第１のサブシステム１０２及び第２のサブシステム１０２を有するものとする。また、ステップＳ４０１において、情報取得部１２０は、第１のサブシステム１０２から一つのパラメータｘ１１の値のみを含む運用情報（ｘ１１）を取得し、また、第２のサブシステム１０２から一つのパラメータｘ２１運用情報（ｘ２１）を取得するものとする。ここで、パラメータの個数の添字を省略して、パラメータｘ１１をｘ１、パラメータｘ２１をｘ２と記載する。【００７８】
このとき、特徴ベクトル算出部１２１は、下式（７）に示すような成分から構成される特徴ベクトルＵを算出する。【００７９】
【数７】
2017037835.tif 000009
【００８０】
全体目的関数生成部１２２は、式（７）の特徴ベクトルＵを用いて二次の重回帰分析を実行する。この場合、全体目的関数は下式（８）に示すような特徴ベクトルの成分ｕ１、ｕ２の二次関数となる。【００８１】
【数８】
2017037835.tif 000010
【００８２】
部分目的関数生成部１２３は、全体目的関数を変形し、数式の各項をパラメータ毎の項にまとめる。パラメータ同士の積の項が含まれる場合、部分目的関数生成部１２３は、いずれかのパラメータを平均値等の定数に置き換える。以上の手順によって第１のサブシステム１０２の部分目的関数、及び第２のサブシステム１０２の部分目的関数に分割できる。【００８３】
例えば、部分目的関数生成部１２３は、式（７）を用いて、式（８）に示す全体目的関数を下式（９）に示すように変形する。ｘ１の項、ｘ１の自乗の項、ｘ２の項、ｘ２の自乗の項、並びに、ｘ１及びｘ２の積の項のそれぞれの係数をβ１、β２、β３、β４、及びβ５と定義した場合、式（９）は式（１０）のように表すことができる。【００８４】
【数９】
2017037835.tif 000011
【００８５】
【数１０】
2017037835.tif 000012
【００８６】
式（１０）に示すように、全体目的関数にはパラメータｘ１、ｘ２の積の項が含まれる。部分目的関数生成部１２３は、ｘ２を平均値に置き換えることによって式（１１）に示すような第１のサブシステム１０２の部分目的関数を算出し、また、ｘ１を平均値に置き換えることによって式（１２）に示すような第２のサブシステム１０２の部分目的関数を算出する。なお、それぞれのサブシステム１０２の部分目的関数の定数項は、サブシステム１０２の運用状態に合わせて設定すればよい。【００８７】
【数１１】
2017037835.tif 000013
【００８８】
【数１２】
2017037835.tif 000014
【００８９】
なお、線形回帰の場合、異なるパラメータの積の項がないため、部分目的関数の生成は前述した例より容易になる。パラメータの数が多い場合、又は高次のパラメータの項を含む複雑な全体目的関数の場合、前述した処理と同様の処理を実行し、又は、システム理論又は数理計画法の分野における分割原理を利用した処理を実行してもよい。【００９０】
（実施例１の適用例１）
実施例１の自律制御システム１００の適用例として工場を考える。ここでは、複数の工程を経て製品を出荷する工場の生産性の管理を一例に考える。この場合、工場が一つの自律制御システム１００に対応し、各工程がサブシステム１０２に対応する。【００９１】
ある工程（サブシステム１０２）が最適化され、スループットが向上した場合であっても、他の工程のスループットが小さいと仕掛在庫が増加する。また、人員配置、故障、保守、電力、温室効果ガス排出量等の要因が前後の工程に影響を与える。そのため、部分最適化、すなわち、各工程の最適化では工場全体の生産性を上げられない場合がある。【００９２】
実施例１の自律制御システム１００を適用した場合、工場全体を管理する管理計算機１０１が、各工程の稼働状態及びスループット等の運用情報に基づいて全体目的関数を生成し、全体目的関数を分割することによって部分目的関数を生成する。各工程は、部分目的関数に基づいて稼働する。【００９３】
したがって、各工程が全体目的関数から生成された部分目的関数に基づいて自律的に制御されるため、工場全体の最適化が可能となる。また、全体目的関数及び部分目的関数が循環的に生成されるため、例えば、部材の供給、製品の需要、及び電力のコスト等が変化にあわせて、全体目的関数及び部分目的関数が更新される。したがって、各工程を最適な状態で稼働させることができる。【００９４】
（実施例１の適用例２）
自動運転車にも実施例１の自律制御システム１００を適用できる。この場合、自動車がサブシステム１０２に対応し、交通が自律制御システム１００に対応する。【００９５】
自動車はセンサ又は人工知能に基づいて道路を走行する。しかし、部分最適化だけでは渋滞及び公害等の問題が生じる場合がある。【００９６】
交通を管理する管理計算機１０１が、各自動車の走行状況及び位置情報等の運用情報に基づいて交通を最適化するための全体目的関数を生成し、全体目的関数を分割することによって各自動車の運行を最適化するための部分目的関数を生成する。各自動車は、部分目的関数に基づいて自動運転を行う。したがって、交通の状況変化にあわせて、全体目的関数及び部分目的関数が更新されるため、自動車の最適な自動運転を実現できる。【００９７】
（実施例１の適用例３）
持株会社にも実施例１の自律制御システム１００を適用できる。この場合、持株会社が自律制御システム１００に対応し、子会社がサブシステム１０２に対応する。【００９８】
複数の子会社が異なる事業を行っているが、子会社同士の製品が競合し、又は、収益が相反することによって、ある子会社における収益の最大化が持株会社の収益の最大化につながらない場合がある。【００９９】
子会社全体を管理する管理計算機１０１が、各子会社の事業状況及び収益等の運用情報に基づいて、持株会社の収益を最大化するための全体目的関数を生成し、全体目的関数を分割することによって各子会社の収益を最大化する部分目的関数を生成する。子会社には、部分目的関数にしたがった事業を行わせる。【０１００】
したがって、子会社の事業環境の変化にあわせて、全体目的関数及び部分目的関数が更新されるため、持株会社の収益の最大化が実現できる。【０１０１】
以上の三つの適用例で説明したように、実施例１は幅広い分野に適用することができる。【０１０２】
実施例１では、バックエンドである管理計算機１０１が全体目的関数から部分目的関数を生成し、フロントエンドである各サブシステム１０２に部分目的関数を設定する。各サブシステム１０２の制御部は部分目的関数に基づいて制御を行う。また、実施例１では、管理計算機１０１がサブシステム１０２から取得された運用情報に基づいて新たに全体目的関数を生成する。【０１０３】
全体目的関数及び部分目的関数は管理計算機１０１によって生成されているため、各サブシステム１０２の制御部は、サブシステム１０２の状態変化にリアルタイムに対応した制御が可能となる。また、全体目的関数の生成と部分目的関数の生成とが循環することによって、適切な全体目的関数又は部分目的関数が定義できない場合でも、全体目的関数及び部分目的関数が自律制御システム１００の状態に合わせて適宜更新される。すなわち、自律制御システム１００に適した全体目的関数及び部分目的関数を設定できる。したがって、自律制御システム１００はシステム状態に順応し、かつ自律した制御が可能となる。【０１０４】
また、全体目的関数及び部分目的関数の再帰的な生成処理と並行して、シミュレーション結果に基づいて全体目的関数を生成することによって、現在の状態だけを考慮した制御ではなく、システムの状態変化を先取りした制御が可能となる。【０１０５】
なお、シミュレーション結果に基づく全体目的関数の生成処理は、全体目的関数及び部分目的関数の再帰的な生成処理より時間を要する。そのため、通常運用時には、全体目的関数及び部分目的関数の再帰的な生成処理を優先的に実行すればよい。また、システムの変化が緩やかである場合、シミュレーション結果に基づく全体目的関数の生成処理は必ずしも実行する必要はない。【０１０６】
前述した二つの生成処理が並列して実行された結果、二つの全体目的関数が生成された場合、ステップＳ４０３又はステップＳ４０６において、管理計算機１０１が、いずれの生成処理に基づいて生成された全体目的関数及び部分目的関数を使用するかを判定すればよい。この場合、設定情報等に判定に必要な条件を含めればよい。【０１０７】
目的指標が複数である場合全体目的関数は多目的関数になる。この場合、複数の目的指標の各々に重みを付与することによって全体目的関数を単一目的関数へ変換することによって全体目的関数を部分目的関数に分割すればよい。また、他の方法としては、設定情報に含まれる制約条件に基づいて全体目的関数を部分目的関数に分割することによって、パレート効率的に各サブシステム１０２が制御するようにしてもよい。
【実施例２】
【０１０８】
実施例２では、分散処理システムが全体目的関数の生成及び部分目的関数の生成する点が実施例１と異なる。以下、実施例１との差異を中心に実施例２について説明する。【０１０９】
図６は、実施例２の自律制御システム６００の構成例を示す説明図である。【０１１０】
実施例２の自律制御システム６００は、複数のサブシステム１０２、及びデータベース１０３から構成される。実施例２では、各サブシステム１０２に含まれる少なくとも一つの計算機１０５を用いて分散処理システム６１０が構築される。分散処理システム６１０を構成する計算機１０５のハードウェア構成、及びソフトウェア構成は、実施例２と同一である。また、分散処理システム６１０によって実行される処理は、実施例１の管理計算機１０１が実行する処理と同一である。【０１１１】
実施例２によれば、フロントエンドのみからなる自律制御システムでも実施例１と同様の効果を得ることができる。【０１１２】
なお、実施例１の自律制御システム１００と実施例２の自律制御システム６００のいずれを用いるかは様々な指針に基づいて決定すればよい。例えば、サブシステム１０２間の関係性又は独立性、分散処理システム６１０を構成する計算機１０５の性能、ネットワーク１０４の通信帯域等に基づいて決定すればよい。
【実施例３】
【０１１３】
実施例３では、一つの要素を一つのサブシステム１０２とする点が実施例１と異なる。以下、実施例１との差異を中心に実施例３について説明する。【０１１４】
図７は、実施例３の自律制御システム７００の構成例を示す説明図である。【０１１５】
自律制御システム１００は、管理計算機１０１、複数の計算機１０５、及びデータベース１０３から構成される。図７に示すように、実施例３では、一つの計算機１０５が一つのサブシステム１０２に対応する。【０１１６】
図８は、実施例３の自律制御システム７００の概念図である。【０１１７】
自律制御システム７００は、複数の要素から構成される。図７に示す自律制御システム７００の要素の構成は、図２の示す自律制御システム１００と同一であるものとする。【０１１８】
また、自律制御システム７００は、各要素が部分目的関数に基づいて自律的に制御する。例えば、要素Ｘａ１は、部分目的関数ｇ１に基づいて制御される。当該制御には、要素Ｘａ１に関係性を有する他の要素及び環境の状態Ｅｉｏが参照される。すなわち、要素Ｘａ１の制御時には、関係性を有する要素Ｘａ２、Ｘａ３、Ｘａ４の状態ｘａ２ｏ、ｘａ３ｏ、ｘａ４ｏ、及び環境の状態が参照される。【０１１９】
実施例３によれば、要素毎の運用情報に基づいて全体目的関数が生成され、また、全体目的関数を分割して生成された部分目的関数に基づいて各要素が最適化される。したがって、よりシステムの変化に適応した自律制御が可能となる。【０１２０】
なお、実施例１の自律制御システム１００と実施例３の自律制御システム７００のいずれを用いるかは様々な指針に基づいて決定すればよい。例えば、要素間の関係性及びクラスタ性、要素間を接続するネットワークの帯域及び距離、人又はモノの流量又は移動時間等に基づいて決定すればよい。【０１２１】
なお、サブシステム１０２及び要素の構成はシステムに応じて決定すればよい。例えば、複数の要素から構成される下位層のサブシステム１０２、下位層のサブシステム１０２から構成される中位層のサブシステム１０２、中位層のサブシステム１０２から構成されるを上位層のサブシステム１０２のように多段の階層から構成されるシステムであってもよい。この場合、管理計算機１０１は、全体目的関数から上位層のサブシステム１０２の部分目的関数を生成し、上位層のサブシステム１０２の部分目的関数から中位層のサブシステム１０２の部分目的関数を生成し、中位層のサブシステム１０２の部分目的関数から下位層のサブシステム１０２の部分目的関数を生成すればよい。要素は、下位層のサブシステム１０２の部分目的関数に基づいて制御される。【０１２２】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。【０１２３】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるＣＰＵが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。【０１２４】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ等の広範囲のプログラム又はスクリプト言語で実装できる。【０１２５】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるＣＰＵが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。【０１２６】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【図１】
2017037835.tif 000015
【図２】
2017037835.tif 000016
【図３】
2017037835.tif 000017
【図４】
2017037835.tif 000018
【図５】
2017037835.tif 000019
【図６】
2017037835.tif 000020
【図７】
2017037835.tif 000021
【図８】
2017037835.tif 000022
【図９】
2017037835.tif 000023
【国際調査報告】
2017037835.tif 000024
2017037835.tif 000025
2017037835.tif 000026
2017037835.tif 000027