(57)【要約】エージェントは、変数データを記憶する変数記憶部と、制約データを記憶する制約記憶部と、変数変更禁止期間データを記憶する変数変更禁止期間記憶部と、変数データが制約データを満たしているかと満たすための容易度を示す改善容易度データを生成する改善容易度生成部と、近隣のエージェントと改善容易度データを送受信する通信部と、近隣のエージェントの改善容易度データを記憶する近隣状況記憶部と、改善容易度データと近隣のエージェントの改善容易度データとを比較し、変数変更禁止期間データに応じて、制約違反を解消するように変数データを変更するとともに変数変更禁止期間データを更新する制約解決部とを備え、多くのエージェントが非同期で協調して制約違反を解消して、局所最適解に陥ることなく集合全体がより早く解に到達するエージェントが得られる。
2006118193.tif 000002
【特許請求の範囲】
【請求項１】
複数のエージェントが非同期で協調して解を求めるエージェントにおいて、
求める前記解の現在の値を示す変数データを記憶する変数記憶部と、
前記変数データと近隣のエージェントが記憶する変数データとの値の組合せを示す制約データを記憶する制約記憶部と、
前記変数データの変更を禁止する期間を示す変数変更禁止期間データを記憶する変数変更禁止期間記憶部と、
自エージェントの前記変数データが前記制約データを満たすための容易度を示す改善容易度データを生成する改善容易度生成部と、
前記変数データと前記改善容易度生成部が生成した前記改善容易度データとを前記近隣のエージェントと送受信する通信部と、
前記近隣のエージェントより取得した改善容易度データおよび変数データを記憶する近隣状況記憶部と、
前記改善容易度生成部が生成した前記改善容易度データと前記近隣状況記憶部に格納している前記近隣のエージェントの改善容易度データとを比較し、前記変数変更禁止期間データに応じて、前記近隣状況記憶部に格納している前記近隣のエージェントの変数データとの間の制約違反を解消するように前記変数データを前記制約データの組合せを満たす値に変更するとともに、前記変数変更禁止期間データをあらかじめ定められた期間に設定する制約解決部と
を備えるエージェント。
【請求項２】
前記改善容易度生成部は、前記変数データに対する前記制約データの総数を求めた制約数と、前記変数データと前記近隣のエージェントの変数データとが前記制約データの値の組合せを満たしていない制約データの総数を求めた制約違反数と、前記変数データと前記近隣のエージェントの変数データとが前記制約データの値の組合せを満たしていない制約データのうち、前記変数データが前記変数変更禁止期間データに含まれておらず、かつ、前記変数データの値を変更することによって、前記制約データの値の組合せを満たすように変更できる組合せの総数を求めた前記改善可能数の少なくとも１つからなる改善容易度データを生成する
請求項１記載のエージェント。
【請求項３】
前記変数データが前記制約データを満たしている度合いの過去の推移を示す改善傾向データを記憶する改善傾向記憶部をさらに備え、
前記制約解決部は、前記変数データを変更する前に、前記改善容易度データに含まれる前記制約違反数で前記改善傾向記憶部に記憶している前記改善傾向データを追加更新し、前記改善傾向データに応じて前記変数変更禁止期間の長さを決定して、変数データを変更後に前記変数変更禁止期間データを設定する
請求項２記載のエージェント。
【請求項４】
前記改善容易度生成部は、第１の一定時間間隔毎に前記改善容易度データを生成し、前記通信部が前記近隣のエージェントへ前記改善容易度データを送信する
請求項１または請求項３のいずれか１項に記載のエージェント。
【請求項５】
前記改善容易度生成部は、第２の一定時間間隔毎に前記改善容易度データを生成し、前記制約解決部が前記変数変更禁止期間データに応じて、前記近隣のエージェントの記憶する変数データとの間の制約違反を解消するように前記変数データを変更するとともに前記変数変更禁止期間データを設定する
請求項１または請求項３のいずれか１項に記載のエージェント。
【請求項６】
前記第２の一定時間間隔は、前記第１の一定時間間隔より大きい請求項５記載のエージェント。
【請求項７】
前記変数データの変更を禁止する期間を示す前記変数変更禁止期間は、前記第２の一定時間間隔のｋ倍であり、ｋは整数である請求項６記載のエージェント。
【請求項８】
前記制約解決部は、前記変数データを変更するかどうかを判定する際に、自エージェントの前記改善容易度データと前記近隣状況記憶部が記憶する前記近隣のエージェントの改善容易度データとを比較し、少なくとも前記改善可能数が最も多い場合と、自エージェント以外に制約違反をしていて変数データを変更できるエージェントがいない場合と、前記制約違反数が最も多い場合と、前記制約数が最も少ない場合とのうちいずれか１つの場合に前記変数データを変更すると判定する
請求項１または請求項３のいずれか１項に記載のエージェント。
【請求項９】
前記制約解決部は、前記変数データを変更する際に、前記制約データより制約を満たす変数の値を選択し、変数記憶部の変数データを更新する
請求項１または請求項３のいずれか１項に記載のエージェント。
【請求項１０】
前記制約解決部は、前記改善傾向データの直近の第３の一定時間間隔における制約違反数の合計ｍ１とその前の第３の一定時間間隔における制約違反数の合計ｍ０とを比較により、ｍ１＜ｍ０の場合は改善傾向があると判定して前記変数変更禁止期間の現在設定値を短くし、ｍ１≧ｍ０の場合は改善傾向がないと判定して前記変数変更禁止期間の現在設定値を長くして、前記変数変更禁止期間データを設定する請求項３記載のエージェント。
【請求項１１】
各エージェントが、求める解の現在の値を示す変数データと、前記変数データと近隣のエージェントがもつ変数データとの値の組合せを示す制約データと、前記変数データの値の変更を禁止する期間を示す変数変更禁止期間データとをそれぞれ持ち、前記変数データ間のすべての制約関係が成立する前記変数データの解を複数のエージェントが協調して求める分散制約充足方法において、
各エージェントが、
自エージェントの前記変数データが前記制約データを満たすための容易度を示す前記改善容易度データを生成する生成ステップと、
前記変数データと前記生成ステップで生成した前記改善容易度データとを各近隣のエージェントと非同期に送受信するステップと、
前記変数データと前記改善容易度データを自己の前記改善容易度データと各近隣のエージェントの改善容易度データとを比較して、自己の前記変数データを変更するかどうかを決定する判定ステップと、
前記判定ステップで自己の前記変数データを変更すると判定した場合に、自己の前記変数データを前記制約データの組合せを満たす値に変更して前記近隣のエージェントに通知する変更ステップと、
前記変更ステップで前記変数データを変更した場合に、変数変更禁止期間データをあらかじめ定められた期間に設定する変更禁止ステップと
を有する分散制約充足方法。
【請求項１２】
前記生成ステップは、前記変数データに対する前記制約データの総数を求めた制約数と、前記変数データと前記近隣のエージェントの変数データとが前記制約データの値の組合せを満たしていない制約データの総数を求めた制約違反数と、前記変数データと前記近隣のエージェントの変数データとが前記制約データの値の組合せを満たしていない制約データのうち、前記変数データが前記変数変更禁止期間データに含まれておらず、かつ、前記変数データの値を変更することによって、前記制約データの値の組合せを満たすように変更できる組合せの総数を求めた前記改善可能数の少なくとも１つからなる改善容易度データを生成する
請求項１１記載の分散制約充足方法。
【請求項１３】
前記変数データを変更すると判定した場合に、前記制約違反数の現在の値を改善傾向データとして自エージェント内に追加格納するステップと、
前記改善傾向データより、前記変数データの変更を禁止する期間を調整するステップと
をさらに有する請求項１２記載の分散制約充足方法。
【請求項１４】
前記判定ステップにおいて、自己の前記改善容易度データと各近隣のエージェントの改善容易度データとを比較した場合に、少なくとも前記改善可能数が最も多い場合と、自エージェント以外に制約違反をしていて変数データを変更できるエージェントがいない場合と、前記制約違反数が最も多い場合と、前記制約数が最も少ない場合とのうちいずれか１つの場合に前記変数データを変更すると決定する
請求項１１記載の分散制約充足方法。
【請求項１５】
前記変更ステップにおいて、
自己の前記変数データを変更する際に、前記制約データより制約を満たす変数の値を選択して決定し前記変数データを更新する
請求項１１記載の分散制約充足方法。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、近隣のエージェントと通信し、非同期で協調して制約条件を満たすための解を求めるエージェント、および、エージェントの分散制約充足方法に関する。
【背景技術】
【０００２】  工場の生産計画や病院の看護士勤務表の作成、ロジスティックスの計画作成など、１つの計画と他の計画との間で規定された制約を満たす計画案を作成する装置として、制約充足装置が知られている。従来の制約充足装置は、より具体的には、計算機のハードウェアとソフトウェアから構成される。図２９は、従来の制約充足装置を構成する計算機の構成を示す。図２９において、計算機９００は、ＣＰＵ９０１、メモリ９０２、表示部９０３、入力部９０４、二次記憶部９０５、ネットワークインタフェース９０６で構成されている。さらに、二次記憶部９０５に、変数の初期値と制約データ、および、各部を制御するソフトウェアが格納されている。【０００３】  また、制約充足装置は、その動作原理を制約充足問題に一般化できることが知られている。このことは、例えば、特開平１１−３１６６８２号公報（第４−５頁）や、石塚満著「情報科学コアカリキュラム講座、知識の表現と高速推論」（丸善、１９９６年、ｐ．２０，１０３−１１９）に開示されている。【０００４】  この制約充足問題は、次のように説明される。すなわち、制約充足問題とは、ｍ個の変数ｘ１、ｘ２、・・・、ｘｍと、各変数のとり得る値の集合Ｄ１、Ｄ２、・・・、Ｄｍ、および、各変数間の制約の集合Ｐ＝｛ｐ１，ｐ２，・・・，ｐｒ｝が存在する時、変数の値がこの制約をすべて満たす組合せを見つけることである。すなわち、述語論理で記述すると、式１が真である場合の変数の組を見つけることである。【０００５】
【数１】
2006118193.tif 000003
【０００６】  制約充足問題のアルゴリズムや探索手法が既に提案されている。すべての解の組合せを探索するバックトラック探索手法や、ヒューリスティックスと呼ばれる問題に対する知識情報を用いる山登り法や最良優先探索、Ａ＊（エー・スター）アルゴリズムなどが知られている。ヒューリスティックサーチは解の評価値を改善する方向に進むため、高速に解に到達するが、局所最適解に陥るとそこから脱出できず、本当の解に到達し得ない可能性がある。また、シミュレーテッド・アニーリングや遺伝的アルゴリズムなどの確率的探索と呼ばれる手法が知られている。また、局所的探索手法を一般化したタブーサーチが知られている。タブーサーチは、最近選んだ近傍解への探索を避ける機構を持ち、近傍への探索を効率化している。これは例えば、特開平１１−１９５０６６号公報（第９頁、第２図）や石塚  満著「情報科学コアカリキュラム講座、知識の表現と高速推論」（丸善、１９９６年、ｐ．２０，１０３−１１９）や、サディック・Ｍ・サイト、外１名著、白石洋一訳、「組合せ最適化アルゴリズムの最新手法」（丸善、２００２年、ｐ．１６３）や、リナ・デチター著、「コンストレイント・プロセッシング」（（米国）、モルガン・カウフマン・パブリッシャーズ、２００３年）に開示されている。【０００７】  また、制約充足問題は制約ネットワーク図を用いて表現することができるので、ここで制約ネットワーク図について説明する。【０００８】  図３０は、制約充足問題を表現する制約ネットワーク図を説明する図である。図３０において、ノード１００１は制約充足問題の変数、アーク１００２は変数間の制約関係を示している。制約充足問題は、変数ｎ個の間の制約は２項制約に変換して表現できるため、一般性を失うことなく、このような制約ネットワーク図で表現することができる。例えば、各ノードが「黒」と「白」のうちどちらか一方の値をとり、各アークの両端のノードが同じ値をとることができないという制約を持つ場合の例について説明する。【０００９】  図３１Ａは、制約充足問題の初期状態例を示す制約ネットワーク図、図３１Ｂは、制約充足問題の解の定まった状態例を示す制約ネットワーク図である。図３１Ａと図３１Ｂにおいて、値が「黒」のノードは黒色で、値が「白」のノードは白色で示されている。図３１Ａでは、ノードＸ２０３とノードＸ２０６の値がともに「黒」でありこれらの間で制約違反が発生している。また、同じ値「白」であるノードＸ２０４とノードＸ２０５の間でも制約違反が発生している。図３１Ｂは、すべてのノード間の制約が満たされ、この問題の解の一つが定まった状態を示している。以降の説明では、適時、このような制約ネットワーク図を用いる。【００１０】  特に、制約充足装置のうちネットワークの資源割当計画や多数の作業を含む生産計画、あるいは、電力系統設備の作業停止計画など、分散して配置された計画と他の計画との間で規定された制約を満たす計画案を他の装置と非同期に協調して作成する装置として、複数のエージェントから構成される分散制約充足装置が知られている。この分散制約充足装置を構成するエージェントの動作原理は、制約充足問題の変数や制約を分散した分散制約充足問題に一般化できることが知られている。【００１１】  ここで、分散制約充足問題を表現する制約ネットワーク図について説明する。分散制約充足問題も、変数ｎ個の間の制約は２項制約に変換して表現できるため、制約充足問題と同様に制約ネットワーク図で表現することができる。図３２は、分散制約充足問題を表現する制約ネットワーク図を説明する図である。図３２において、１００３ａ、１００３ｂ、１００３ｃはエージェント、ノード１００１はエージェント１００３ａが持つ変数、アーク１００２はそれら変数間の制約関係を示している。このように各エージェントは、分散制約充足問題の一部の変数を対象にして、それぞれ対象に近隣の制約関係のあるエージェントと非同期に協調して制約を解消する。【００１２】  ここで、納入契約によって結ばれた複数の独立した会社、工場などの個々の事業者が利益を上げ、しかも全体としても利益が大きくなるように生産計画する場合の例について説明する。計画は、各事業者が独立して並行に作成し、各自業者間で計画を調整する。この全体の生産計画作成は分散制約充足問題として一般化できる。図３３において、事業者Ｆ１から事業者Ｆ７は、それぞれ部品Ａから部品Ｅや、半製品Ｆの生産数や在庫数、納入数など個別に生産計画を立案し、また他の事業者とこれらの全体計画を調整する。この時、納期や価格、生産期間、生産能力などの事業者間での各制約条件を満足する必要がある。しかし、事業者Ｆ１が、事業者Ｆ４に対して事業者Ｆ３や事業者Ｆ５の機密情報を漏らすことなく各計画を作成するためには、分散した変数や制約の情報を一箇所に集めることなく問題を解く方法が必要である。このように、分散制約充足問題では、制約についての情報を通信しようとすると通信コストが大きくなるという課題や、内部データである変数データを他のエージェントに対して隠蔽しなければいけないなどの課題から、分散制約充足問題についての情報を一箇所に集めて解くことが現実的ではない。【００１３】  制約充足問題を解く既存のアルゴリズムや探索アルゴリズムをそのまま分散制約充足問題に適用することは、非常に難しいことが知られている。分散環境でバックトラック探索する方法として、非同期分散バックトラック法が知られている。バックトラック探索は、探索時に分岐点を覚えておき、探索中に矛盾が生じたら分岐点まで戻って別のルートを探索する単純な方法である。これに対し、非同期分散バックトラック法は、分散環境でこれを実現するために２種類のメッセージと複数のメモリを使い分けるという複雑な構成が必要である。また、この非同期分散バックトラック法は、バックトラック探索と同様にバックトラックを用いた全解探索であるため、探索に著しく時間がかかる。また、各エージェントはノーグッドと呼ばれる制約違反情報を大量に保持する必要がある。このアルゴリズムは、例えば、特開平１１−３１６６８２号公報（第４−５頁）や、横尾  真、外３名、「分散制約充足による分散協調問題解決の定式化とその解法」（電子情報通信学会論文誌Ｄ−Ｉ、１９９２年、第７５巻、第８号、ｐ．７０４−７１３）や、横尾  真、外１名、「分散制約充足のアルゴリズム：レビュー」（自律エージェントとマルチェージェント・システム、（米��）、２０００年、第３巻、２号、ｐ．１８９−２１２）などに開示されている。【００１４】  また、非同期分散バックトラック法を改善した非同期弱コミットメント探索法が知られている。非同期弱コミットメント探索法は、優先度の概念を導入して高速であるが、制約違反情報を大量に保持、交換する必要がある。また、その情報を検索し、条件によってさらに制約違反情報を生成するなどのコストが必要である。また、特定のエージェント間の制約情報を第三のエージェントにも配布する必要があり、エージェント間でのセキュリティを保つことができない。このアルゴリズムは、例えば、リナ・デチター著「コンストレイント・プロセッシング」（（米国）、モルガン・カウフマン・パブリッシャーズ、２００３年）や、横尾  真「非同期弱コミットメント探索法」（第１回制約プログラミングの原理と実践に関する国際会議（ＣＰ−９５））、（米国）、１９９５年、ｐ．４０７−４２２））などに開示されている。【００１５】  また、バックトラックを必要とせず、制約違反情報も持たないアルゴリズムとして、分散ブレークアウトアルゴリズムが知られている。しかし、このアルゴリズムは特定の条件下では、ループに陥り解が得られない可能性がある。また、制約に対して重み付けをするため、解を求めている途中で制約が変わるような動的状況には対応できない。これは、例えば、特開平９−２９７６８９号公報（第４頁、第１図）や、横尾  真、外１名、「分散ｂｒｅａｋｏｕｔ：反復改善型分散制約充足アルゴリズム」（情報処理学会論文誌、１９９８年、第３９巻、第６号、ｐ．１８８９−１８９７）などに開示されている。【００１６】  また、従来のエージェントは、従来の制約充足装置と同様に、より具体的には、計算機のハードウェアとソフトウェアから構成される。特に、複数のエージェントがネットワークを介して非同期に通信し、協調して制約違反を解消するように動作する。【００１７】  上記従来のエージェントでは、各エージェントがそれぞれ非同期でエージェント間の制約違反状態を解消するための変数を求めようとする。そのため、局所最適解に陥る可能性や、一部のエージェントが順番に値を変更する処理の無限ループに陥る可能性が高いという課題がある。
【発明の開示】
【００１８】  本発明は、このような課題を解決するもので、非同期でエージェント間の制約違反状態を解消するための変数を求める際に、一部のエージェントだけで制約違反を解消しようとせず、多くのエージェントで制約違反解消にあたることで、局所最適解や無限ループに陥ることなく、結果としてエージェントの集合全体がより早く解に到達するエージェントを提供するものである。
【００１９】  上記の課題を解決するために、本発明のエージェントは、複数のエージェントが非同期で協調して解を求めるエージェントにおいて、求める前記解の現在の値を示す変数データを記憶する変数記憶部と、変数データと近隣のエージェントが記憶する変数データとの値の組合せを示す制約データを記憶する制約記憶部と、変数データの変更を禁止する期間を示す変数変更禁止期間データを記憶する変数変更禁止期間記憶部と、自エージェントの前記変数データが制約データを満たすための容易度を示す改善容易度データを生成する改善容易度生成部と、変数データと改善容易度生成部が生成した改善容易度データとを近隣のエージェントと送受信する通信部と、近隣のエージェントより取得した改善容易度データおよび変数データとで構成する近隣状況データを記憶する近隣状況記憶部と、改善容易度生成部が生成した改善容易度データと近隣状況記憶部に格納している近隣のエージェントの改善容易度データとを比較し、変数変更禁止期間データに応じて、近隣状況記憶部に格納している近隣のエージェントの変数データとの間の制約違反を解消するように変数データを制約データの組合せを満たす値に変更するとともに、変数変更禁止期間データをあらかじめ定められた期間とするよう設定する制約解決部とを備える。
【００２０】  そのため、ある条件下で一定の期間において変数を連続して変更することを禁止することにより、一部のエージェントの制約違反を解消するだけでなく、多くのエージェントで制約違反を解消するもので、局所最適解に陥ることなく、結果としてエージェントの集合全体がより早く解に到達することができる。
【００２１】  また、本発明のエージェントは、改善容易度データは、少なくとも、制約データの数を示す制約数と、変数データが制約データに違反している数を示す制約違反数と、変数データの値を変更した場合に違反状態を解消できる制約データの数を示す改善可能数とのいずれか１つを属性とする構造とし、改善容易度生成部が、変数データに対する制約データの総数を求めて制約数とし、変数データと近隣のエージェントの変数データとが制約データの値の組合せを満たしていない制約データの総数を求めて制約違反数とし、変数データと近隣のエージェントの変数データとが制約データの値の組合せを満たしていない制約データのうち、変数データが変数変更禁止期間データに含まれておらず、かつ、変数データの値を変更することによって、制約データの値の組合せを満たすように変更できる組合せの総数を求めて改善可能数として、改善容易度データの属性の値を生成する。
【００２２】  そのため、エージェントが変数データを変更すべきかどうかについてその変数データが制約データを満たす度合いに基づいて判断できるようになり、結果としてエージェントの集合全体がより早く解に到達することができる。
【００２３】  また、本発明のエージェントは、変数データが制約データを満たしている度合いの過去の推移を示す改善傾向データを記憶する改善傾向記憶部をさらに備え、制約解決部は、変数データに含まれる制約違反数で改善傾向記憶部にしている改善傾向データを追加更新し、改善傾向データに応じて変数変更禁止期間の長さを決定して、変数データを変更後に変数変更禁止期間記憶部に記憶している変数変更禁止期間データを更新する。
【００２４】  そのため、エージェントが制約違反の改善傾向に応じて変数データの変数変更禁止期間を調整し、問題に適応した期間だけ変数を変更することを禁止できるようになり、局所最適解に陥ることなく、あるいは一部のエージェントだけの無限ループに陥る可能性が低下し、結果としてエージェントの集合全体がより早く解に到達することができる。
【００２５】  また、本発明のエージェントは、改善容易度生成部は、第１の一定時間間隔毎に改善容易度データを生成し、通信部が近隣のエージェントへ改善容易度データを送信するように構成する。
【００２６】  そのため、エージェントが近隣のエージェントの改善度合いを定期的に取得できるようになり、より最新の改善状況に基づいて変数を変更するかどうかを判断し、結果として、エージェントの集合全体がより早く解に到達することができる。
【００２７】  また、本発明のエージェントは、改善容易度生成部は、第２の一定時間間隔毎に改善容易度データを生成し、制約解決部が変数変更禁止期間データに応じて、近隣のエージェントの記憶する変数データとの間の制約違反を解消するように変数データを変更するとともに変数変更禁止期間記憶部に記憶している変数変更禁止期間データを更新するように構成する。
【００２８】  そのため、エージェントが自身の改善度合いを定期的に確認できるようになり、より最新の自身の改善状況に基づいて変数を変更し、結果として、エージェントの集合全体がより早く解に到達することができる。
【００２９】  また、本発明のエージェントは、第１の一定時間間隔は、第２の一定時間間隔より小さく設定するように構成する。
【００３０】  そのため、エージェントが近隣のエージェントの改善度合いを送受信する頻度よりも自身の改善度合いを確認する頻度を低くできるようになり、近隣のエージェントの最新状況に基づいて改善度合いを確認することができ、結果として、エージェントの集合全体がより早く解に到達することができる。
【００３１】  また、本発明のエージェントは、変数データの変更を禁止する期間を示す変数変更禁止期間は、第２の一定時間間隔のｋ倍（ｋは整数）に設定するように構成する。
【００３２】  そのため、エージェントが自身の変数データを変更後に、変数データの変更を禁止した状態で、変数データの改善度を近隣のエージェントが判断することができるようになり、一部のエージェントの制約違反だけでなく、多くのエージェントで制約違反を解消し、一部のエージェントだけの無限ループに陥る可能性がより低下し、結果としてエージェントの集合全体がより早く解に到達することができる。
【００３３】  また、本発明のエージェントは、制約解決部は、変数データを変更するかどうかを判定する際に、自エージェントの改善容易度データと近隣状況記憶部が記憶する近隣のエージェントの改善容易度データとを比較し、少なくとも改善可能数が最も多い場合と、自エージェント以外に制約違反をしていて変数データを変更できるエージェントがいない場合と、制約違反数が最も多い場合と、制約数が最も少ない場合とのうちいずれか１つの場合に変数データを変更すると判定するように構成する。
【００３４】  そのため、エージェントが変数データを変更すべきかどうかについてその変数データが制約データを満たす複数の度合いに基づいて判断できるようになり、変数を変更するエージェントを任意の基準で決定し、結果としてエージェントの集合全体が解に到達する度合いを調整することができる。
【００３５】  また、本発明のエージェントは、制約解決部は、変数データを変更する際に、制約データより制約を満たす変数の値を選択し、変数記憶部の変数データを更新するように構成する。
【００３６】  そのため、エージェントが制約を解消する値を組合せリストから選択することができるようになり、適切に制約を解消できる値を確実に選定し、結果としてエージェントの集合全体がより早く解に到達することができる。
【００３７】  また、本発明のエージェントは、制約解決部は、改善傾向データの直近の第３の一定時間間隔における制約違反数の合計ｍ１とその前の第３の一定時間間隔における制約違反数の合計ｍ０とを比較により、ｍ１＜ｍ０の場合は改善傾向があると判定して変数変更禁止期間の現在設定値を短くし、ｍ１≧ｍ０の場合は改善傾向がないと判定して変数変更禁止期間の現在設定値を長くして、変数変更禁止期間データを更新するように構成する。
【００３８】  そのため、エージェントが実際の制約違反数の改善傾向に応じて変数データの変数変更禁止期間を調整し、問題に適応した期間だけ変数を変更することを禁止できるようになり、結果としてエージェントの集合全体がより早く解に到達することができる。
【００３９】  本発明のエージェントによれば、ある条件下で一定の期間において変数を連続して変更することを禁止することにより、一部のエージェントだけで制約違反を解消しようとせず、多くのエージェントで制約違反の解消にあたることで、局所最適解や無限ループに陥ることなく、結果としてエージェントの集合全体がより早く解に到達する。
【００４０】  エージェントは、複数のエージェントが非同期で協調して解を求めるエージェントにおいて、求める解の現在の値を示す変数データを記憶する変数記憶部と、変数データと近隣のエージェントが記憶する変数データとの値の組合せを示す制約データを記憶する制約記憶部と、変数データの変更を禁止する期間を示す変数変更禁止期間データを記憶する変数変更禁止期間記憶部と、自エージェントの変数データが制約データを満たすための容易度を示す改善容易度データを生成する改善容易度生成部と、変数データと改善容易度生成部が生成した改善容易度データとを近隣のエージェントと送受信する通信部と、近隣のエージェントより取得した改善容易度データおよび変数データを記憶する近隣状況記憶部と、改善容易度生成部が生成した改善容易度データと近隣状況記憶部に格納している近隣のエージェントの改善容易度データとを比較し、変数変更禁止期間データに応じて、近隣状況記憶部に格納している近隣のエージェントの変数データとの間の制約違反を解消するように変数データを制約データの組合せを満たす値に変更するとともに、変数変更禁止期間データをあらかじめ定められた期間に設定する制約解決部とを備える。
【００４１】  分散制約充足方法は、各エージェントが、求める解の現在の値を示す変数データと、変数データと近隣のエージェントがもつ変数データとの値の組合せを示す制約データと、変数データの値の変更を禁止する期間を示す変数変更禁止期間データとをそれぞれ持ち、変数データ間のすべての制約関係が成立する変数データの解を複数のエージェントが協調して求める分散制約充足方法において、各エージェントが、自エージェントの変数データが制約データを満たすための容易度を示す改善容易度データを生成する生成ステップと、変数データと生成ステップで生成した改善容易度データとを各近隣のエージェントと非同期に送受信するステップと、変数データと改善容易度データを自己の改善容易度データと各近隣のエージェントの改善容易度データとを比較して、自己の変数データを変更するかどうかを決定する判定ステップと、判定ステップで自己の変数データを変更すると判定した場合に、自己の変数データを制約データの組合せを満たす値に変更して近隣のエージェントに通知する変更ステップと、変更ステップで変数データを変更した場合に、変数変更禁止期間データをあらかじめ定められた期間に設定する変更禁止ステップとを有する。
【図面の簡単な説明】
【００４２】
【図１】図１は本発明の実施の形態１にかかるエージェントの構成図である。
【図２Ａ】図２Ａは本発明の実施の形態１にかかるエージェントの変数記憶部に格納する変数データの構造を示す図である。
【図２Ｂ】図２Ｂは本発明の実施の形態１にかかるエージェントの制約記憶部に格納する制約データの構造を示す図である。
【図２Ｃ】図２Ｃは本発明の実施の形態１にかかるエージェントの近隣状況記憶部に格納する改善容易度データの構造を示す図である。
【図２Ｄ】図２Ｄは本発明の実施の形態１にかかるエージェントの変数変更禁止期間記憶部に格納する変数変更期間データの構造を示す図である。
【図３】図３は本発明の実施の形態１にかかるエージェントの動作を示すフローチャートである。
【図４】図４は本発明の実施の形態１にかかるエージェントの変数変更禁止期間の設定例を示す図である。
【図５】図５は本発明の実施の形態１にかかるエージェントの変数を変更する判定処理を示すフローチャートである。
【図６】図６は本発明の実施の形態１にかかるタスク割当装置の構成図である。
【図７】図７は本発明の実施の形態１にかかるタスク割当装置が計画を作成するタスク問題の制約ネットワークを示す図である。
【図８Ａ】図８Ａは本発明の実施の形態１にかかるタスク割当装置の初期状態の制約ネットワークを示す図である。
【図８Ｂ】図８Ｂは本発明の実施の形態１にかかるタスク割当装置の計画策定中状態の制約ネットワークを示す図である。
【図８Ｃ】図８Ｃは本発明の実施の形態１にかかるタスク割当装置の最終状態の制約ネットワークを示す図である。
【図９】図９は本発明の実施の形態２にかかるエージェントの構成を示す図である。
【図１０】図１０は本発明の実施の形態２にかかるエージェントの動作を示すフローチャートである。
【図１１Ａ】図１１Ａは本発明の実施の形態２にかかるエージェントの改善傾向データの構造を示す図である。
【図１１Ｂ】図１１Ｂは本発明の実施の形態２にかかるエージェントの改善傾向データの記憶動作を説明する図である。
【図１１Ｃ】図１１Ｃは本発明の実施の形態２にかかるエージェントの改善傾向を判定する動作を説明する図である。
【図１２】図１２は本発明の実施の形態２にかかるエージェントの変数変更禁止期間を調整する動作を示すフローチャートである。
【図１３】図１３は本発明の実施の形態２にかかるエージェントを搭載するスケジュール調整装置の構成図である。
【図１４】図１４は本発明の実施の形態２にかかるスケジュール調整装置が計画を作成するスケジュール問題を説明する図である。
【図１５】図１５は本発明の実施の形態２にかかるスケジュール調整装置が計画を作成するスケジュール問題の制約ネットワークを示す図である。
【図１６】図１６は本発明の実施の形態２にかかるスケジュール調整装置の初期動作を説明する図である。
【図１７】図１７は本発明の実施の形態２にかかるスケジュール調整装置のＴＰ調整後の動作を説明する図である。
【図１８】図１８は本発明の実施の形態３にかかるエージェントの構成図である。
【図１９】図１９は本発明の実施の形態３にかかるエージェントを搭載した協調作業ロボットの構成例を示す図である。
【図２０】図２０は本発明の実施の形態３にかかる移動計画立案装置が計画を作成する移動問題を説明する図である。
【図２１】図２１は本発明の実施の形態３にかかる移動計画立案装置が計画を作成する移動問題の制約ネットワークを示す図である。
【図２２】図２２は本発明の実施の形態３にかかる協調作業ロボットの移動オペレータの説明図である。
【図２３】図２３は本発明の実施の形態３にかかる移動計画立案装置の初期状態を説明する図である。
【図２４】図２４は本発明の実施の形態３にかかる移動計画立案装置の途中状態を説明する図である。
【図２５】図２５は本発明の実施の形態３にかかる移動計画立案装置の最終動作を説明する図である。
【図２６】図２６は実験に使った問題の制約ネットワークの例を示す図である。
【図２７】図２７は実験結果の解到達までの平均サイクル数の比較を示す図である。
【図２８】図２８は実験結果の解到達率の比較を示す図である。
【図２９】図２９は従来の制約充足装置を構成する計算機の構成図である。
【図３０】図３０は制約充足問題を表現する制約ネットワークを説明する図である。
【図３１Ａ】図３１Ａは制約充足問題の初期状態例を示す制約ネットワークを示す図である。
【図３１Ｂ】図３１Ｂは制約充足問題の解の定まった状態例を示す制約ネットワークを示す図である。
【図３２】図３２は分散制約充足問題を表現する制約ネットワーク図を説明する図である。
【図３３】図３３は分散制約充足問題の例を説明する図である。
【符号の説明】
【００４３】  １００，１００ａ，１００ｂ，１００ｃ，２００，２００ａ，２００ｂ，２００ｃ，２００ｎ，７００    エージェント
１０１    変数記憶部
１０２    制約記憶部
１０３    近隣状況記憶部
１０４    変数変更禁止期間記憶部
１０５，２０５    制約解決部
１０６    通信部
１０７    改善容易度生成部
２０８    改善傾向記憶部
２１０    改善傾向データ
７０１    計画座標記憶部
７０３    近隣計画座標記憶部
８００，８１１，８１２    ロボット
８０１    外界検知部
８０２    移動部
８０３    衝突回避部
８１３    障害物
８１４，８１５    ゴール
９００    計算機
【発明を実施するための最良の形態】
【００４４】  （実施の形態１）
以下、本発明の実施の形態１にかかる複数のエージェントを接続したタスク割当装置について、図面を参照しながら説明する。実施の形態１にかかるエージェントは、ある条件下で一定の期間において変数を連続して変更することを禁止することにより、一部のエージェントの制約違反を解消するだけでなく、多くのエージェントで制約違反を解消するもので、局所最適解に陥ることなく、結果としてエージェントの集合全体がより早く解に到達するものである。【００４５】  まず、実施の形態１にかかるエージェントの構成および動作について説明する。図１は、本発明の実施の形態１にかかるエージェントの構成図である。図１において、エージェント１００は、変数記憶部１０１と制約記憶部１０２と変数変更禁止期間記憶部１０４と改善容易度生成部１０７と通信部１０６と近隣状況記憶部１０３と制約解決部１０５とで構成されている。【００４６】  変数記憶部１０１は、求める解の現在の値を示す変数データを記憶する。制約記憶部１０２は、変数データと近隣のエージェントが記憶する変数データとの値の組合せを示す制約データを記憶する。変数変更禁止期間記憶部１０４は、変数データの変更を禁止する期間を示す変数変更禁止期間データを記憶する。改善容易度生成部１０７は、自エージェントの変数データが制約データを満たすための容易度を示す改善容易度データを生成する。通信部１０６は、変数データと改善容易度生成部１０７が生成した改善容易度データとを近隣のエージェントと送受信する。近隣状況記憶部１０３は、近隣のエージェントより取得した改善容易度データおよび変数データとで構成する近隣状況データを記憶する。制約解決部１０５は、改善容易度生成部１０７が生成した改善容易度データと近隣状況記憶部１０３に格納している近隣のエージェントの改善容易度データとを比較し、変数変更禁止期間データに応じて、近隣状況記憶部１０３に格納している近隣のエージェントの変数データとの間の制約違反を解消するように変数データを制約データの組合せを満たす値に変更する。それとともに、制約解決部１０５は、変数変更禁止期間データをあらかじめ定められた期間とするよう設定する。【００４７】  次に、エージェント１００に格納するデータの構造について説明する。図２Ａは、本発明の実施の形態１にかかるエージェントの変数記憶部１０１に格納される変数データの構造を示す図である。図２Ａにおいて、変数記憶部１０１に格納される変数データ１２１は、変数名とその値をレコードとするテーブル構造をしている。図２Ａは、自エージェントＡが変数ｘを１つ持ち、その値が１であることを示している。【００４８】  図２Ｂは、本発明の実施の形態１にかかるエージェントの制約記憶部１０２に格納される制約データの構造を示す図である。図２Ｂにおいて、制約記憶部１０２に格納される制約データ１２２は、自分の変数名と近隣のエージェントの変数名と、それらの値の可能な値の組合せを示すリストをレコードとするテーブル構造である。図２Ｂにおいて、自エージェントＡは、変数ｘに関連する制約として、エージェントＢの変数ｙとの間に値の組合せ（ｘ，ｙ）が（１，１）または、（２，２）または（３，３）でなければならないとする制約���あることが示されている。また、エージェントＣの変数ｙとの間に値の組合せが（１，１）または、（２，２）または（３，３）とする制約があることも示されている。この変数ｘに関して制約のある変数を持つエージェントを近隣のエージェントと呼ぶ。【００４９】  図２Ｃは、本発明の実施の形態１にかかるエージェントの変数変更禁止期間記憶部１０４に格納される変数変更期間データの構造を示す図である。図２Ｃにおいて、変数変更禁止期間記憶部１０４に格納される変数変更禁止期間データ１２３は、変数名と、変数の値の変更を禁止する期間の開始時と終了時を示すそれぞれの時刻情報とをレコードとするテーブル構造である。図２Ｃでは、自エージェントＡの変数ｘの値を時刻００時００分から００時０５分まで禁止されていることが示されている。【００５０】  図２Ｄは、本発明の実施の形態１にかかるエージェントの近隣状況記憶部１０３に格納する改善容易度データの構造を示す図である。図２Ｄにおいて、近隣状況記憶部１０３に格納される近隣状況データは、変数データと制約関係のある近隣のエージェントの変数名と値、改善容易度データ１２５、をレコードとするテーブル構造をしている。なお、改善容易度データ１２５は、制約データの数を示す制約数ｌと、変数データが制約データに違反している数を示す制約違反数ｍと、変数データの値を変更した場合に制約違反状態を解消できる制約データの数を示す改善可能数ｎで構成されている。【００５１】  自エージェントＡの変数ｘと制約を有する近隣のエージェントＢについては、変数ｙの値が２であり、改善容易度データ１２５の制約数ｌが１、制約違反数ｍが１、改善可能数ｎが１であることを示している。同様に、近隣のエージェントＣについて、変数ｚの値が３であり、改善容易度データ１２５の制約数ｌが１、制約違反数ｍが１、改善可能数ｎが１であることを示している。なお、図２Ｄでは、自エージェントの改善容易度データ１２５についても、同様に格納するようにしているが、自エージェントＡの改善容易度データ１２５を別の記憶手段に記憶するように構成してもなんら差し支えない。【００５２】  次に、エージェントの動作を説明する。図３は、本発明の実施の形態１にかかるエージェントの動作を示すフローチャートである。図３においては、パラメータとして、近隣のエージェントへ改善容易度データを送信する時間間隔Ｔ１（タイマイベントＥｖ１）と、改善動作をする時間間隔Ｔ２（タイマイベントＥｖ２）が用いられている。尚、この時間間隔Ｔ１は第１の一定時間間隔の一例である。また、この時間間隔Ｔ２は第２の一定時間間隔の一例である。【００５３】  まず、制約解決部１０５は、時間間隔Ｔ１で起動されるタイマイベントＥｖ１と、時間間隔Ｔ２で起動されるタイマイベントＥｖ２と、近隣のエージェントからのメッセージを受信によるメッセージ受信イベントＥｖ３のいずれか１つのイベントが発生するまで待機する（ステップＳ４０１）。次に、制約解決部１０５は、発生したイベントの種類に応じて、それぞれ次の処理の開始を指示する（ステップＳ４０２）。【００５４】  イベントがタイマイベントＥｖ１の場合について説明する。改善容易度生成部１０７は、変数の値の変更が禁���されている期間内かどうかを、変数変更禁止期間記憶部１０４に記憶された変数変更禁止期間データより判定する。もし、期間外であれば、改善容易度生成部１０７は、変数記憶部１０１に格納された変数データと制約記憶部１０２に格納された制約データから、制約数ｌ、制約違反数ｍ、改善可能数ｎとで構成される改善容易度データを生成し、期間内であれば、変数の値が変更できない旨が記憶される（ステップＳ４０３）。このとき、改善容易度生成部１０７は、変数データテーブル１２１に格納されている変数データに対する改善容易度データの属性値を次のように生成する。改善容易度生成部１０７は、制約記憶部１０２に格納している制約データ１２２からその変数データの変数名を含むレコードの総数を計算して制約数ｌとし、そのレコードの中で、自エージェントの変数データと近隣のエージェントの変数データとが値の組合せに含まれていないレコードの総数を計算して制約違反数ｍとする。改善容易度生成部１０７は、さらにそのレコードの中で、変数データの値が変数変更禁止期間データ１２３に格納されておらず、かつ、変数データの値を変更することにより制約データの値の組合せとすることができるレコードの総数を計算して改善可能数ｎとする。なお、時間間隔Ｔ１は後に述べる時間間隔Ｔ２よりも短いことが望ましい。時間間隔Ｔ１が十分に短く、常に最新の状況を近隣のエージェントに通知することができる。【００５５】  続いて、通信部１０６は、改善容易度データをメッセージ通信で近隣のエージェントのすべてに送信し、ステップＳ４０１に戻る。ただし、通信部１０６は、ステップＳ４０３で変数の変更が禁止されている期間内で変数の値が変更できないと判定していた場合は、変更できない旨のメッセージを送信する（ステップＳ４０４）。【００５６】  次に、イベントがメッセージ受信イベントＥｖ３の場合について説明する。通信部１０６は、近隣のエージェントからメッセージを受信する（ステップＳ４０５）。通信部１０６は、受信したメッセージに含まれる近隣のエージェントの変数データと改善容易度データを近隣状況記憶部１０３に格納し、ステップＳ４０１に戻る（ステップＳ４０６）。【００５７】  次に、イベントがタイマイベントＥｖ２の場合について説明する。改善容易度生成部１０７は、ステップＳ４０３での処理と同様に、変数変更禁止期間記憶部１０４に記憶された変数変更禁止期間データ１２３より変数値の変更が禁止されていないかを判定する。さらに、改善容易度生成部１０７は、変数記憶部１０１に格納された変数データ１２１と制約記憶部１０２に格納された制約データ１２２から、制約数ｌ、制約違反数ｍ、改善可能数ｎとで構成される改善容易度データを生成する（ステップＳ４０７）。ただし、自エージェントの改善容易度データ１２５の近隣エージェント名は、自エージェントをあらわす値として、他エージェントのデータと区別可能としている。【００５８】  次に、制約解決部１０５は、改善容易度生成部１０７がステップ４０７で生成した改善容易度データ１２５と、近隣状況記憶部１０３に記録している各近隣のエージェントの改善容易度データ１２５とを比較し、変数の値を変更するべきかどうかを判定する。変更す��と判定した場合は、ステップＳ４０９へ進む。変更しないと判定した場合は、このイベント処理を終了し、ステップＳ４０１へ戻る（ステップＳ４０８）。この判定方法の詳細は後述する。【００５９】  続いて、制約解決部１０５は、制約記憶部１０２に格納している制約データ１２２の可能な組合せの中から、自エージェントのとれる変数を１つ選択して変数の値を求め、変数記憶部１０１に格納している変数データ１２１の現在の値を更新する。その結果として、改善容易度生成部１０７は、更新した変数データの値で改善容易度データをステップＳ４０３での処理と同様に生成し、通信部１０６は変数データと生成した改善容易度データを各近隣のエージェントにメッセージで通知する（ステップＳ４０９）。【００６０】  さらに、制約解決部１０５は、ステップＳ４０８で値を変更した変数に対して、その値を一定期間変更できないように変数変更禁止期間記憶部１０４に変数変更禁止期間の現在の時刻を開始時刻とし、一定期間経過後の時刻を終了時刻として格納し、ステップＳ４０１に戻る（ステップＳ４１０）。【００６１】  なお、ステップＳ４１０で、本実施の形態では、変数の変更を一定期間禁止する設定とし、この時の期間を時間間隔Ｔ２のｋ倍（ｋは整数）としている。例えば、ｋ＝２、即ち２倍とする。また、この期間が過ぎたら変数変更禁止期間記憶部１０４の禁止設定を解除するようにしている。【００６２】  なお、この動作フローは、近隣のエージェントとは独立して非同期的に動作する。そのため、各エージェント間は、非同期で動作する近隣のエージェントから任意の時間にメッセージが送られてくる。本実施の形態では、メッセージを受信した際にはイベント処理機構によるイベントキューにメッセージ受信イベントＥｖ３が格納され、ステップＳ４０１以外のステップを処理中であっても、ステップＳ４０１に処理が移行した際にイベントを検知できるよう実現している。また、ステップＳ４０５でメッセージ処理中にタイマイベントが発生した場合でも、同様に検知して処理できる。【００６３】  次に、ステップＳ４１０での変数変更禁止期間の設定方法について説明する。本実施の形態では、変数の値の変更を一切禁止する方法（禁止方法１）としたが、変数をある値にすることを禁止する方法（禁止方法２）や、ある値から別のある値へ変更することを禁止する方法（禁止方法３）、あるいは、上記の組合せやその他の特定の変更を禁止する方法（禁止方法４）として実現することもできる。【００６４】  このような禁止方法で、例えば、変数ｘの値域、すなわち、変数ｘのとる値の集合を｛１，２，３｝とし、変数ｘの値が「１」から「２」へ変更した場合に、先に示した禁止方法による禁止期間中の動作はそれぞれ次のようになる。【００６５】  禁止方法１では、変数ｘの値を変更することが一切禁止され、一定期間中は、変数ｘの値を変更することはできない。変数変更禁止期間は、変数毎に設定される。【００６６】  禁止方法２では、変数ｘの値を「１」に戻すことを一定期間禁止にするか、あるいは変数ｘの値を「２」に変更することを一定期間禁止にする。この場合、禁止期間であっても変数ｘの値を「３」に変更することは禁止されない。変数変更禁止期間���、変数の値毎に設定される。【００６７】  禁止方法３では、変数ｘの値を「１」から「２」への変更を禁止する。この場合、「１」から「２」への変更を禁止された期間であっても、「１」から「３」への変更や、「３」から「２」への変更は禁止されない。変数変更禁止期間は、変数の変更の方向を区別して設定される。【００６８】  禁止方法４では、変数ｘの値を「３」から「２」、「２」から「１」、「１」から「３」への変更を禁止する。この場合、値は「１」から「２」、「２」から「３」、「３」から「１」のように昇順方向での変更のみに制限される。【００６９】  次に、本実施の形態にかかるエージェントの変数変更禁止期間の設定例について説明する。図４は、本発明の実施の形態１にかかるエージェントの変数変更禁止期間の設定例を示す図である。図４において、変数Ａの値を「１」から「２」へ変更後、「１」から「２」への変更を禁止するように変数変更禁止期間１５１が設定（時刻１５３で）される。さらに、その変数変更禁止期間１５１中に変数Ａの値を「２」から「１」へ変更し、変数Ａの「２」から「１」への変数変更禁止期間１５２が設定（時刻１５４で）されている。それぞれの変数変更禁止期間は独立に設定され、また、「１」から「２」への変数変更禁止期間であっても、「２」から「１」への変数変更禁止期間でなければ、「２」から「１」へ変更は禁止されない。変数変更禁止期間の終了後は、禁止設定が解除（時刻１５５と、時刻１５６で）される。【００７０】  次に、本実施の形態にかかるエージェントの変数を変更する制約解決部１０５の判定処理の詳細について説明する。図５は、本発明の実施の形態１にかかるエージェントの変数を変更する制約解決部１０５の判定処理を示すフローチャートである。判定処理は、図３のエージェントの動作を示すフローチャートのステップＳ４０８の詳細な動作を示している。なお、図５では、制約解決部１０５は、必ず、変数の値を変更しないと判定するか（Ｓ５０９）、変数の値を変更すると判定し（Ｓ５１０）、終了する。【００７１】  ステップＳ５０１において、制約解決部１０５は、変数記憶部１０１に格納している変数データ１２１と制約記憶部１０２に格納している制約データ１２２とから、変数データの値が制約データの組合せに含まれていないレコードを検索して制約に違反している変数データの有無を判別する。制約に違反している変数データがない場合は、制約解決部１０５は、変数を変更しないと判定し（Ｓ５０９）、終了する。【００７２】  ステップＳ５０２において、ステップＳ５０１で調べた制約に違反している変数が、変数変更禁止期間記憶部１０４に格納されている変数変更禁止期間データ１２３の禁止期間に含まれており変数の変更が禁止されている場合は、制約解決部１０５は、変数の値を変更しないと判定し（Ｓ５０９）、終了する。【００７３】  ステップＳ５０３において、制約解決部１０５は、改善容易度生成部１０７で計算された制約数ｌ、制約違反数ｍ、改善可能数ｎとで構成される改善容易度データと近隣状況記憶部１０３に格納されている近隣のエージェントの改善容易度データ１２５とを比較する。改善可能数ｎがどの近隣のエージェントの改善可能数ｎよりも大��い場合は、制約解決部１０５は、変数の値を変更すると判定し（Ｓ５１０）、終了する。逆に、改善可能数ｎがいずれかの近隣のエージェントの改善可能数ｎよりも小さい場合は、制約解決部１０５は、変数を変更しないと判定し（Ｓ５０９）、終了する。上記以外の場合、すなわち、改善可能数ｎが近隣のエージェントの改善可能数ｎの中で最大のものと同じ場合は、ステップＳ５０４へ進む。この時、すべての近隣のエージェントとともに改善可能数ｎが０の場合も含まれる。【００７４】  ステップＳ５０４において、制約解決部１０５は、改善容易度生成部１０７で計算した制約数ｌ、制約違反数ｍ、改善可能数ｎとで構成される改善容易度データと近隣状況記憶部１０３に格納されている近隣のエージェントの改善容易度データ（制約数ｌ、制約違反数ｍ、改善可能数ｎ）１２５とから、近隣のエージェントの中に、制約違反数ｍが１以上で、かつ、改善可能数ｎから変数を変更できるエージェントがあるかを調べる。対象のエージェント数が０であれば、制約解決部１０５は、変数を変更すると判定し（Ｓ５１０）、終了する。対象のエージェント数が１以上であれば、ステップＳ５０５へ進む。【００７５】  ステップＳ５０５において、制約解決部１０５は、制約違反数ｍとステップＳ５０４で対象となったエージェントの制約違反数ｍとを比較し、どの近隣のエージェントの制約違反数ｍよりも大きい場合は、変数の値を変更すると判定し（Ｓ５１０）、終了する。いずれかの近隣のエージェントの制約違反数ｍよりも小さい場合は、変数を変更しないと判定し（Ｓ５０９）、終了する。また、制約違反数ｍが、近隣のエージェントの制約違反数ｍの中で最大のものと同じ場合は、ステップＳ５０６へ進む。【００７６】  ステップＳ５０６において、制約解決部１０５は、制約数ｌとステップＳ５０４で対象となったエージェントの制約数ｌとを比較し、どの近隣のエージェントの制約数ｌよりも小さい場合は、変数を変更すると判定し（Ｓ５１０）、終了する。いずれかの近隣のエージェントの制約数ｌよりも大きい場合は、変数を変更しないと判定し（Ｓ５０９）、終了する。制約数ｌが近隣のエージェントの制約数ｌの中で最小のものと同じ場合は、ステップＳ５０７へ進む。【００７７】  ステップＳ５０７において、制約解決部１０５は、自エージェントとステップＳ５０４で対象となったエージェントを含めて、あらかじめ設定されている確率的な判定方法で変数を変更するエージェント判別する。【００７８】  ステップＳ５０８において、制約解決部１０５は、自エージェントが変数を変更する対象と判別した場合には、変数を変更すると判定し、終了する。変数を変更する対象と判別されなかった場合には、変数を変更しないと判定し、終了する。【００７９】  なお、ステップＳ５０８でのエージェントの確率的な判定は、例えば時刻情報やエージェント間の序列など、エージェントが共通に参照できるデータに応じて算出する方法などとしてもよい。【００８０】  また、この確率的な判定方法は、決定する結果に偏りがなく平均的な確率分布でどちらの変数も決定されるものとし、少なくとも一方の変数が平均的に長い間続けて優先して変更されるようなことがないものとする。例えば、ノードの名前の若い方のノードが必ず優先して変更されるような誤った判定方法のみとする場合は除くものとする。【００８１】  また、変数を変更するかしないかを判定する処理手順について、本実施の形態では上記ステップＳ５０１からステップＳ５０８の処理手順としたが、一例を示したものであり、判定するステップの種類や判定する順番はこれに限定されるものではない。【００８２】  次に、本実施の形態にかかる複数のエージェントを接続したタスク割当装置により計画を作成する実施例について説明する。図６は、本発明の実施の形態１にかかるタスク割当装置の構成図である。図６において、タスク割当装置３００内のエージェント１００ａ、エージェント１００ｂ、、、、エージェント１００ｃは、有線あるいは無線のネットワークで接続され互いに通信可能な状態になっている。また、本実施の形態では、エージェント１００、エージェント１００ｂ、、、、エージェント１００ｃは図１に示したエージェント１００と同様の構成をしている。エージェント１００ａが自エージェントとすると、エージェント１００ｂなどが近隣エージェントということになる。また、変数記憶部１０１、制約記憶部１０２、変数変更禁止期間記憶部１０４には、あらかじめ動作に必要な初期値が設定されているとして説明するが、各エージェントの初期値を設定する初期設定装置を別に設けて、ネットワークを通して各エージェントに設定する構成としても実施できる。【００８３】  次に、本実施の形態にかかる複数のエージェントを接続したタスク割当装置の具体的動作について説明する。ここでは、「黒タスク」と「白タスク」のどちらか一方を受け持つ複数のエージェントが、それぞれタスクの種別を示す１つの変数を持ち、初期の値の状態から近隣のエージェントと制約違反を解消するように非同期に協調してタスク割当計画を作成する実施例について説明する。【００８４】  図７は、本発明の実施の形態１にかかるタスク割当装置が計画を作成する制約ネットワーク図である。図７において、各ノードは、エージェントＸ１の変数ｘ１、Ｘ２の変数ｘ２、・・・、Ｘ７の変数ｘ７を示している。そして各ノードは「黒タスク」を示す「黒」と「白タスク」を示す「白」のどちらか一方の値をとる。また、各アークは各変数間の制約を示している。ここでは、アークで結ばれた近隣のエージェントどうしは同じタスクを受け持つことはできないこととする。すなわち、制約で結ばれたノードどうしは互いに同じ値を持つことができない。例えば、ノードｘ１とノードｘ４は、同時に「白」、あるいは「黒」であってはいけない。図７に示される状態では、ノードｘ４とノードｘ５の値が同時に「黒」であり、制約違反が発生している。【００８５】  なお、図７は、タスク割当装置内の各エージェントについて変数間の制約関係を示したものであり、各エージェント間を接続する実際のネットワーク接続構成を示すものではない。ただし、図６に示したように必ずしもすべてのエージェント間の通信路を構成する必要はなく、少なくとも制約関係にある変数を持つエージェント間の通信路が構成されていればよい。【００８６】  次に、本実施の形態にかかる複数のエージェントを接続したタスク割当装置で各エージェントの変数間の制約を解消する例について説明する。図８Ａは、本発明の実施の形態１にかかるタスク割当装置の初期状態の制約ネットワーク図である。図８Ｂは、本発明の実施の形態１にかかるタスク割当装置の計画策定中状態の制約ネットワーク図である。図８Ｃは、本発明の実施の形態１にかかるタスク割当装置の最終状態の制約ネットワーク図である。なお、図８Ａから図８Ｃにおいて、各ノードを表す記号ｘｊの後ろにそれぞれの改善容易度データが「（改善可能数ｎ／制約違反数ｍ／制約数ｌ）」のように示されている。また、ここでは、変数を変更するかどうかの判定については、改善可能数ｎが多い方が変更する。もし、これが同じ場合には、制約違反数ｍが多い方が変更し、もし、これも同じ場合には、制約数ｌが少ない方のエージェントが変数の値を変更するものとしている。また、変数の変更禁止方法については、変数の値の変更を一切禁止するようにしている。【００８７】  図８Ａは、初期状態を示している。ここでは、ノードｘ４とノードｘ５の間で制約違反が発生している。ノードｘ１、ｘ２、ｘ３、ｘ６、ｘ７は、制約違反しておらず、制約数も１なので、改善容易度データはすべて（０／０／１）となる。ノードｘ４は、ノードｘ５との間で制約違反を１つ持ち、ノードｘ４が白に変更すると、ノードｘ５との間の制約違反は解消されるものの、ノードｘ１、ｘ２、ｘ３の間で制約違反が発生することから、改善可能数ｎ（この場合は０以上の数）は０になる。よって、ノードｘ４の改善容易度データは、（０／１／４）となる。ノードｘ５の改善容易度データも同様に（０／１／３）となる。この情報が図３のステップＳ４０３、ステップＳ４０４、ステップＳ４０５、ステップＳ４０６により近隣のエージェント間で情報交換される。【００８８】  制約違反しているノードｘ４と変数ｘ５は、ほとんど条件が同じだが、制約数ｌはノードｘ５の方が小さいため、ノードｘ４は値を変更しないと判定し、ノードｘ５は値を変更すると判定する。よってノードｘ５は値を「白」に変更し、図８Ｂに示す状態になる。【００８９】  図８Ｂの状態において、ノードｘ５は、値を「白」から「黒」に変えればノードｘ６、ノードｘ７との間の２つの制約違反を改善できるがノードｘ４との間の制約に違反することになるため、改善可能数ｌは１である。よってノードｘ５の改善容易度データは（１／２／３）となる。ノードｘ６、ｘ７の改善容易度データはともに（１／１／１）となる。改善可能数ｎはすべて同じであるが、制約数ｌはノードｘ５の方が大きい。ここでノードｘ５の値を「白」から「黒」に変更すると、図８Ａの状態に戻って局所最適解の無限ループに陥ってしまう。【００９０】  しかし、ノードｘ５は、先ほど値を変更したため変数変更禁止期間にあり、値は変更できない。このため、ノードｘ６、ノードｘ７は、それぞれがステップＳ５０４で値を変更すると判定する。ノードｘ６とノードｘ７は直接制約で結ばれていないので、両方が同時に値を変更できる。【００９１】  最後に、変数ｘ６、ｘ７が値を変更し、図８Ｃの状態になる。図８Ｃは、すべての制約が満たされた最終状態である。【００９２】  このようにして、すべてのエージェントに白、あるいは黒のタスクが、制約をすべて満たすように割当てられた。すなわち、すべての制約が満たされた状態になり、タスク割当装置によりタスク割当計画が作成された。【００９３】  なお、本実施の形態におけるエージェントは、近隣のエージェントと時間間隔Ｔ１で情報交換し、時間間隔Ｔ２で状態を改善する動作としたが、これらの動作を同じタイミングで実行するようにしてもよい。すなわち、近隣のエージェントとの情報交換と改善の判定を連続して動作するようにしてもよい。【００９４】  このような構成とすることによって、本実施の形態では、エージェントが変数を連続して変更することを禁止し、一定期間中は同じ変数を同じ値に変更できないようにすることにより、局所最適解に陥る可能性が低下し、結果としてエージェントの集合全体がより早く解に到達することができる。【００９５】  （実施の形態２）
次に、本発明の実施の形態２にかかる複数のエージェントを接続したスケジュール調整装置について説明する。【００９６】  本実施の形態にかかるエージェントは、変数の制約違反の解消状況に応じた期間において変数を連続して変更することを禁止することにより、一部のエージェントの制約違反を解消するだけでなく、局所最適解や無限ループに陥ることなく、結果としてエージェントの集合全体がさらに早く解に到達することを目的とする。【００９７】  まず、実施の形態２にかかるエージェントの構成および動作について説明する。図９は、本発明の実施の形態２にかかるエージェントの構成図である。図９において、エージェント２００は、図１に示したエージェント１００とほぼ同じ構成をしているが、変数データが制約データを満たしている度合いの過去の推移を示す改善傾向データを記憶する改善傾向記憶部２０８をさらに備えた点が図１と異なる。さらに、制約解決部２０５が、変数記憶部１０１に記憶する変数データの値を変更する際に最新の改善傾向データを生成して改善傾向記憶部２０８に記憶し、変数データの変数変更禁止期間の長さを改善傾向データに応じて調整するようにした点が図１と異なっている。また、改善傾向記憶部２０８に格納される改善傾向データは、変数名と、その変数の制約違反数ｍの推移データのテーブル構造である。改善傾向データは、過去数回分を含めた制約違反数ｍの履歴データである。過去の推移のデータ構造の詳細については後述する。【００９８】  次に、各エージェントの動作を説明する。図１０は、本発明の実施の形態２にかかるエージェントの動作を示すフローチャートである。図１０において、エージェント２００の動作は、図３に示したエージェント１００の各ステップとほぼ同じであるが、ステップＳ６０１とステップＳ６０２が加わっている点が図３と異なっている。また、パラメータとして時間間隔Ｔ１と時間間隔Ｔ２に加えて、変数の改善傾向を判定するための期間である時間間隔Ｔ４と、変数変更禁止期間の現在設定値ＴＰが用いられている。なお、この時間間隔Ｔ４は第３の一定時間間隔の一例である。また、時間間隔Ｔ４は時間間隔Ｔ２の数倍に相当する期間とするが、本実施の形態では、時間間隔Ｔ２の５倍に設定して説明する。また、変数変更禁止期間の現在設定値ＴＰは、変数の更新動作と判定動作の同期タイミングの関係より、時間間隔Ｔ２のｋ倍（ｋは整数）とすることが望ましく、本実施の形態での設定値については後述する。【００９９】  ステップＳ６０１において、制約解決部２０５は、改善容易度生成部１０７で計算した制約違反数ｍを現時点での改善傾向データとして、改善傾向記憶部２０８に記録する。制約違反数ｍは、時間間隔Ｔ４の２倍程度の期間の記録が残るように設定されている。【０１００】  ここで、改善傾向データの記録処理について説明する。なお、本実施の形態では、改善傾向データとして制約違反数ｍを用いている。図１１Ａは、本発明の実施の形態２にかかるエージェントの改善傾向データの構造を示す図である。図１１Ａにおいて、改善傾向データ２１０は、過去の変数の制約違反数ｍを記録する構造をしており、一番右の欄に現時点での制約違反数ｍを格納する。また、その左の欄に��１つ前の時刻に記録した制約違反数ｍが、さらにその左の欄には２つ前の回に記録した制約違反数ｍが格納される。このように、Ｔ４時間の２倍の期間分、すなわち、Ｔ２の１０倍の期間分が記録されている。図１１Ｂは、本発明の実施の形態２にかかるエージェントの改善傾向データの記憶動作を説明する図である。図１１Ｂにおいて、改善傾向データ２１０に新たなデータとして制約違反数を記録する場合は、それまでの記録を１つずつ左にシフトしてから一番右の欄に現在の制約違反数が記録され、過去の制約違反数について時刻順を保つよう記録される。【０１０１】  ステップＳ６０２において、制約解決部２０５は、改善傾向記憶部２０８に記録されている制約違反数ｍの履歴から、改善傾向を判定する。制約解決部２０５は、最近の時間間隔Ｔ４における制約違反数の合計と、その前の時間間隔Ｔ４における制約違反数の合計を比較し、改善の傾向を判定する。この判定により変数変更禁止期間の現在設定値ＴＰの値が変更される。【０１０２】  ここで、変数変更禁止期間の現在設定値ＴＰの値を変更する動作について説明する。【０１０３】  図１１Ｃは、本発明の実施の形態２にかかるエージェントの改善傾向を判定する動作を説明する図である。図１１Ｃおいて、改善傾向データ２１０のうち、最近の時間間隔Ｔ４における制約違反数の合計ｍ１と、その前の時間間隔Ｔ４における制約違反数の合計ｍ０の大小が比較される。ｍ１＞ｍ０ならば「改善されていない」と判定され、ｍ１≦ｍ０ならば「改善されている」と判定される。この判定に応じて変数変更禁止期間の現在設定値ＴＰの値が変更される。ここでは、以前の制約違反数の合計は６、最近の制約違反数の合計は５、であり、改善傾向は「改善されている」と判定される。【０１０４】  次に、変数変更禁止期間の現在設定値ＴＰを調整する制約解決部２０５の調整処理の詳細動作について説明する。図１２は、本発明の実施の形態２にかかるエージェントの変数変更禁止期間を調整する動作を示すフローチャートである。図１２において、変数変更禁止期間の現在設定値ＴＰは、最小値ＴＰ＿ｍｉｎから最大値ＴＰ＿ｍａｘまでの決められた範囲の値をとる。【０１０５】  ステップＳ７０１において、制約解決部２０５は、改善傾向記憶部２０８に記憶されている制約違反数ｍから改善の傾向が判定され、「改善されている」と判定された場合はステップＳ７０４に進む。「改善されていない」と判定された場合はステップＳ７０２へ進む。【０１０６】  ステップＳ７０２において、ＴＰ＜ＴＰ＿ｍａｘならばステップＳ７０３へ進む。そうでなければＴＰを変更せずに終了する。【０１０７】  ステップＳ７０３において、ＴＰがある決められた値分増加されて終了する。【０１０８】  ステップＳ７０４において、ＴＰ＞ＴＰ＿ｍｉｎならばステップＳ７０５へ進む。そうでなければＴＰを変更せずに終了する。【０１０９】  ステップＳ７０５において、ある決められた値をＴＰから減じて終了する。【０１１０】  次に、本実施の形態にかかる複数のエージェントを接続したスケジュール調整装置により計画を作成する実施例について説明する。図１３は、本発明の実施の形態２にかかるエージェントを搭載するスケジュール調整装置の構成図である。図１３において、スケジュール調整装置３０１は、ネットワークで接続された複数のエージェント２００ａ、エージェント２００ｂ、エージェント２００ｃ、・・・、エージェント２００ｎで構成されている。利用者Ａはエージェント２００ａに、利用者Ｂはエージェント２００ｂに、利用者Ｃはエージェント２００ｃに、また、利用者ｎはエージェント２００ｎにそれぞれ入出力部を介してスケジュールを入出力する。各エージェントは、それぞれ入力されたスケジュールを元に、他の利用者とのスケジュールを調整する。例えば、利用者Ａはエージェント２００ａを搭載するスケジュール調整装置に自分の希望する予定を入力するとともに、会議設定と他の参加者とのスケジュール調整の開始を指示する。また、エージェント２００ａが他のエージェント２００ｂ、エージェント２００ｃ、エージェント２００ｎと調整して作成した計画をスケジュール結果として、スケジュール調整装置より提示を受ける。【０１１１】  次に、本実施の形態にかかる複数のエージェントを接続したスケジュール調整装置の具体的動作について説明する。ここでは、利用者Ａ、利用者Ｂ、利用者Ｃの会議日を調整する３つのエージェント２００ａ、エージェント２００ｂ、エージェント２００ｃが協調して利用者Ａと利用者Ｂの第１の会議日を調整し、また、同時に利用者Ｂと利用者Ｃの第２の会議日を調整する場合の動作について説明する。【０１１２】  図１４は、本発明の実施の形態２にかかるスケジュール調整装置が計画を作成するスケジュール問題を説明する図である。図１４において、初期条件として、各利用者の設定可能日は、利用者Ａは１日と２日、利用者Ｂは２日と３日と４日、利用者Ｃは２日と３日であり、各利用者の会議を開催する希望開催日の初期設定が２日であることを示している。このスケジュール計画の作成において、各利用者は、同じ日に２つの会議を同時に設定できないものとしている。また、各利用者は、プライバシーの観点から会議の設定可能日を他の利用者に最初から開示しないものとしている。また、利用者Ｂは、利用者Ａと第１の会議を設定することを利用者Ｃには開示しないものとしている。同様に、利用者Ｂは、利用者Ｃと第２の会議をすることを利用者Ａには開示しないものとしている。【０１１３】  図１５は、本発明の実施の形態２にかかるスケジュール調整装置が計画を作成するスケジュール問題の制約ネットワーク図である。図１５において、各ノードは、エージェント２００ａ、エージェント２００ｂ、エージェント２００ｃの変数を示している。エージェント２００ａは利用者Ａの会議設定日を示すノードｘ８を持ち、ノードｘ８は「１」または「２」をとる。エージェント２００ｂは、利用者Ｂが利用者Ａと会議を設定する日を示すノードｘ９と、利用者Ｂが利用者Ｃと会議を設定する日を示すノードｘ１０を持つ。ノードｘ９とノードｘ１０はそれぞれ「２」、「３」、「４」のいずれかの値をとる。エージェント２００ｃは、利用者Ｃが利用者Ｂと会議を設定する日を示すノードｘ１１を持つ。ノードｘ１１は「２」または「３」をとる。ここでのノード間の制約は、「ｘ８＝ｘ９」、「ｘ９≠ｘ１０」、「ｘ１０＝ｘ１１」である。【０１１４】  なお、本���施の形態では、変数変更禁止期間の現在設定値ＴＰを調整動作する状態について説明するために、変数の値を変更するかどうかを判定するステップＳ４０８での動作を、次のようにする。制約で結ばれたそれぞれ２つのノードについて、改善容易度データの値が全く同じ場合における確率的な判定処理（ステップＳ５０７）では、ノードの名前の若い方のノード、例えば、ノードｘ９がノードｘ１０に優先して値を変更するように判定されるものとする。ただし、このような若い方のノードが永続的に優先して変更されることは誤っているが、限られた期間においてはこのように判定される場合はありうる。本実施の形態では、このような状態の動作について説明するために、少なくとも時間間隔Ｔ４の２倍以内の期間において、一方のノードに偏って多く変更すると判断するとしている。また、各変数の持つ変数変更禁止期間の現在設定値ＴＰの初期値は、時間間隔Ｔ２と同じ時間相当とする。さらに、本実施の形態において、ノードの値の変更禁止方法は、値を変更した後は、変更前の値に戻すことを変数変更禁止期間の間は禁止することとする。ただし、値を変更前の値以外にとり得る値があれば、その値への変更は禁止されない。【０１１５】  次に、実施の形態２にかかる複数のエージェントを接続したスケジュール調整装置で変数変更禁止期間の現在設定値ＴＰを調整しながら各エージェントの変数間の制約違反を解消する動作例について説明する。まず、動作を開始後、局所最適解に陥り変数の改善が進まず制約解決部２０５で「改善されていない」と判定され、変数変更禁止期間の現在設定値ＴＰの調整を開始するに至るまでの第１の動作例について説明する。図１６は、本発明の実施の形態２にかかるスケジュール調整装置の初期動作を説明する図である。図１６において、各行はそれぞれの時刻における変数の値を示している。また、変数の値の後ろに、それぞれ改善容易度データを「（改善可能数ｎ／制約違反数ｍ／制約数ｌ）」のように示している。【０１１６】  時刻０、すなわち、初期状態において、エージェント２００ａ、エージェント２００ｂ、エージェント２００ｃは、それぞれの変数ｘ８、変数ｘ９、変数ｘ１０、変数ｘ１１の値がすべて「２」に設定されており、変数ｘ９と変数ｘ１０の間で制約違反が発生している。ここで各エージェントは、改善容易度データを生成して送受信し、変数の値を変更するかどうかが判定される。エージェント２００ｂは、変数ｘ９と変数ｘ１０は改善容易度データが同じため、優先度を持つｘ９の値が「３」に変更される。エージェント２００ａとエージェント２００ｃは変数の値を変更しないと判定される。【０１１７】  時刻１において、変数ｘ９は値「２」への変更が禁止されているが、値「３」と値「４」へは変更できる状態になっている。また、変数ｘ８と変数ｘ９の間で制約違反が発生している。変数ｘ８と変数ｘ９の改善容易度データを比較すると、改善可能制約違反数ｎと制約違反数ｍは同じだが、制約数ｌが変数ｘ８の方が小さいので、エージェント２００ａは変数ｘ８の値を「１」に変更すると判定する。一方、エージェント２００ｂは変数ｘ９の値を変更しないと判定する。【０１１８】  時刻２において、変数ｘ８は、値「２」へ��変更が禁止された状態になっている。変数ｘ８は、値が「１」または「２」とする必要があるため、変数ｘ８は、値をまったく変更できない状態になっている。また、変数ｘ９の変数変更禁止設定は、解除されており、エージェント２００ｂは変数ｘ９の値を変更すると判定する。変数ｘ９は、制約違反数ｍが１で、仮に値「２」へ変更すると制約違反数ｍが２に増加することになるので、値「４」へ変更する。【０１１９】  時刻３において、変数ｘ８の変数変更禁止設定は、解除されている。時刻１の時と同様に、エージェント２００ａは、変数ｘ８の値を「１」から「２」へ変更する。【０１２０】  時刻４において、変数ｘ８が変数変更禁止設定され値が変更できないため、時刻２の時と同様に、エージェント２００ｂは変数ｘ９の値を「４」から「３」へ変更する。【０１２１】  時刻５において、時刻５は時刻１とほぼ同じ動作であり、この時刻以降も同様に変数ｘ８と変数ｘ９の値を交互に変更する動作を続けるのみで制約違反状態は解消されない。この時、変数ｘ８と変数ｘ９は制約違反数が１の状態が続いている。ここで、エージェント２００ａ、エージェント２００ｂの制約解決部２０５が、改善傾向データより「改善されていない」と判定し、エージェント２００ａは変数ｘ８、エージェント２００ｂは変数ｘ９についての変数変更禁止期間の現在設定値ＴＰを増加する。エージェント２００ｃは、どの変数についても変数変更禁止期間の現在設定値ＴＰを変更しない。【０１２２】  次に、第１の動作例に続いて変数変更禁止期間の現在設定値ＴＰが調整された後から、調整した新たな値により局所最適解からの脱出を強制的に誘発して制約違反を解消するに至る第２の動作例について説明する。図１７は、本発明の実施の形態２にかかるスケジュール調整装置のＴＰ調整後の動作例を説明する図である。図１７において、図１６と同様に、各行はそれぞれの時刻における変数の値を示している。なお、第２の動作例は、第１の動作例で変数ｘ８、変数ｘ９のＴＰが変更された後に続く動作例を示すが、動作の違いを比較しやすくするため、各変数の初期値は図１６で示した動作例の初期値と同じ状態とする。すなわち、どの変数についても変数変更禁止期間が設定されていない状態から動作を開始してどのように動作するかについて説明する。ただし、変数の現在設定値ＴＰについては、変数ｘ８と変数ｘ９については図１６に示した先の動作例での設定値である時間間隔Ｔ２の２倍の期間、すなわち、２×Ｔ２の時間としている。【０１２３】  時刻ｎにおいて、図１６の時刻０における動作と同様に、エージェント２００ａは変数ｘ９の値を「３」に変更する。【０１２４】  時刻ｎ＋１において、エージェント２００ｂは、変数ｘ９の値「２」への変更を変数変更禁止設定する。変数ｘ８と変数ｘ９の間の制約違反は、まだ解消されていない。制約数の少ない変数ｘ８の値を変更する。【０１２５】  時刻ｎ＋２において、エージェント２００ａは、変数ｘ８の値を「１」へ変更し、値「２」への変更を禁止設定する。変数ｘ８の値を「１」または「２」とする必要があるため、エージェント２００ａは、変数ｘ８の値を全く変更できない状態となっている。変数ｘ８と変数ｘ９の間の制約違反は、まだ���消されていないので、エージェント２００ｂは、図１６の時刻２における動作と同様に、変数ｘ９の値を「３」から「４」に変更する。変数ｘ９は、値「２」への変更が禁止された状態のため、値「４」へ変更する。【０１２６】  時刻ｎ＋３において、変数ｘ８と変数ｘ９の間の制約違反は解消されていない。変数ｘ８は、まだ値の変更が禁止されているので、エージェント２００ｂは、変数ｘ９の値を変更すると判断する。変数ｘ９は、値「２」へ変更すると制約違反数が２に増えるが、値「３」への変更が禁止されているので、値「２」へ変更する。【０１２７】  時刻ｎ＋４において、変数ｘ８と変数ｘ９の間、および、変数ｘ９と変数ｘ１０の間でそれぞれ制約違反が生じている。エージェント２００ｂは、変数ｘ９の値「３」への変更と、値「４」への変更がどちらも禁止されているので、値を変更することができない。しかし、エージェント２００ａは、変数ｘ８の値を変更すれば制約違反が解消できるため、値を「２」へ変更する。エージェント２００ｂは、変数ｘ１０の近隣で制約違反している変数ｘ９の値の変更が禁止されているので、変数ｘ１０の値を「２」から「３」へ変更する。【０１２８】  時刻ｎ＋５において、変数ｘ８と変数ｘ９の間、および、変数ｘ９と変数ｘ１０の間の制約違反は解消されている。変数ｘ１０と変数ｘ１１の間で制約違反が発生しているが、変数ｘ１１が値を変更すれば制約違反が解消できるので、エージェント２００ｃは、変数ｘ１１の値を「２」から「３」へ変更する。【０１２９】  時刻ｎ＋６において、変数間のすべての制約が満たされた状態になり、スケジュール調整装置は動作を終了する。【０１３０】  上記２つの動作例について説明した。図１６に示した第１の動作例では、時刻５において、変数名の若い方を変更すると判定される状態が確率的に継続し、一時的に局所最適解のループに陥った。しかし、時刻５以降の処理で変数変更禁止期間の現在設定値ＴＰの値を調整することにより、その結果、第２の動作例へと移行した。図１７に示した第２の動作例では、変数ｘ１０、変数ｘ１１の値を変更するべきところで、変数ｘ８と変数ｘ９の変更だけでこれを解決しようとすることにより、一時的に、局所最適解に陥った。しかし、変数変更禁止期間が第１の動作例より長く調整されていたので変数ｘ１０が値を変更して局所最適解から脱出し、時刻ｎ＋６において動作を完了した。【０１３１】  このような構成とすることによって、本実施の形態では、エージェントが制約違反の解消状態に応じた期間において、変数を連続して変更することを禁止し、局所最適解に陥る可能性や、一部のエージェントが無限ループに陥る可能性をより低下させ、結果としてエージェントの集合全体がさらに早く解に到達することができる分散制約充足装置を提供することができる。【０１３２】  なお、実施の形態２にかかるエージェントは、より具体的には、計算機ハードウェア、および、ソフトウェアから構成される。実施の形態２にかかるエージェントは、従来のエージェントと同様に、例えば、図２９に示す構成をしている。変数記憶部１０１と制約記憶部１０２と近隣状況記憶部１０３と変数変更禁止期間記憶部１０４と改善傾向記憶部２０８は、メモリ９０��と二次記憶部９０５およびこれらを管理するソフトウェアで実現される。制約解決部２０５と改善容易度生成部１０７は、ＣＰＵ９０１とメモリ９０２および二次記憶部９０５に格納されたソフトウェアから構成される。通信部１０６はネットワークインタフェース９０６、およびこれを制御するソフトウェアから構成される。また、スケジュール調整装置を利用する利用者は、ディスプレイなどの表示部９０３、およびマウスやキーボード、音声入力装置などの入力部９０４を用いることで対話的に自分のスケジュールを設定できる。また、スケジュール調整結果を表示部９０３により確認できる。【０１３３】  （実施の形態３）
次に、本発明の実施の形態３にかかるエージェントを複数接続した協調作業ロボット（以下、ロボットと記載）の移動計画立案装置について説明する。本実施の形態にかかるエージェントは、ある条件下で一定の期間において変数を連続して変更することを禁止することにより、一部のエージェントの制約違反を解消するだけでなく、多くのエージェントで制約違反を解消するもので、局所最適解に陥ることなく、結果としてエージェントの集合全体がより早く解に到達することを目的とする。【０１３４】  まず、本実施の形態にかかるエージェントの構成および動作について説明する。図１８は、本発明の実施の形態３にかかるエージェントの構成図である。図１８において、エージェント７００は、実施の形態１で示したエージェント１００とほぼ同じ構成をしているが、変数記憶部１０１に代わり計画座標系列を記憶する計画座標記憶部７０１と、近隣状況記憶部１０３に代わり近隣のエージェントの計画座標系列を記憶する近隣計画座標記憶部７０３を備えている点が異なっている。また、計画座標記憶部７０１に記憶される計画座標系列のデータ構造は、位置座標の配列構造をしている。また、近隣計画座標記憶部７０３に記憶される計画座標系列のデータ構造は、近隣のエージェントを識別するデータと、位置座標の配列構造データとをレコードとするテーブル構造をしている。【０１３５】  次に、エージェントの動作を説明する。エージェント７００の基本動作は実施の形態１で示したエージェント１００と同じである。【０１３６】  なお、本実施の形態にかかるエージェントはロボットに搭載され、他のロボットに搭載されるエージェントと通信するよう構成される。図１９は、本発明の実施の形態３にかかるエージェントを搭載した協調作業ロボットの構成例を示す図である。図１９において、ロボット８００は、自位置、他のロボットの位置、障害物などを検知するセンサからなる外界検知部８０１、移動のためのモータあるいは脚からなる移動部８０２、計画外あるいは予想外の障害物への衝突を回避するための衝突回避部８０３、センサからの各種入力と他のロボットとの移動計画との制約に応じて自分の移動計画を立案するエージェント７００からなる。このような構成で、ロボット８００は、起動後、エージェント７００が、あらかじめ設定される変数データと制約データと、外界検知部８０１と衝突回避部８０３が取得するデータに応じて他のロボットのエージェントと通信して移動計画を調整して立案し、その移動計画を移動部８０２に指示して移動する。【０１３７】  次に、実施の形態３にかかる複数のエージェントを接続した移動計画立案装置の具体的動作について説明する。ここでは、２台のロボットＲａ、ロボットＲｂに搭載されるエージェントが仮想的な移動計画立案装置を構成し、協調して目的地まで移動する計画を立案する。図２０は、本発明の実施の形態３にかかる移動計画立案装置が計画を作成する移動問題を説明する図である。図２０において、２台のロボットＲａ８１１、Ｒｂ８１２が同じ室内で作業する。ロボットＲａ８１１、ロボットＲｂ８１２は、それぞれの持つセンサで室内での自分の位置、相手の位置、障害物の位置などを検知して確認できる。ただし、セ���サの精度、ロボット本体の大きさなどの条件により、移動計画は量子化したタイル状の座標値で計画する。また、協調作業ロボットＲａ８１１、ロボットＲｂ８１２の移動できる空間は、Ｘ方向の幅５、Ｙ方向の幅２の大きさを持つ。この空間にロボットＲａ８１１とロボットＲｂ８１２が存在する。【０１３８】  協調作業ロボットＲａ８１１は、初期座標（１，１）に、ロボットＲｂ８１２は初期座標（０，０）に位置する。また、座標（３，１）には、障害物Ｋ８１３があり、ロボットＲａ８１１、ロボットＲｂ８１２はここに移動できない。障害物Ｋ８１３の存在は、ロボットＲａ８１１、ロボットＲｂ８１２のそれぞれのセンサにより既に認識されているものとする。また、ロボットは、１ステップで、Ｘ方向もしくはＹ方向に１つしか移動できない。ロボットＲａ８１１、ロボットＲｂ８１２は、それぞれ最短経路でゴールＧａ８１４、ゴールＧｂ８１５に移動し、ロボットＲｂ８１２についてはゴールＧｂ８１５に到達したところで留まるものとする。このような条件で、ロボットＲａ８１１は、最終座標すなわちゴールＧａ８１４（座標（４，１））に、ロボットＲｂ８１２はゴールＧｂ８１５（座標（４，０））に５ステップ以内に到達するものとする。この移動計画を立てることを考える。【０１３９】  ここで、計画座標系列をロボットＲａ８１１については、計画座標（ｘ１１，ｙ１１）から計画座標（ｘ１５，ｙ１５）、ロボットＲｂ８１２については計画座標（ｘ２１，ｙ２１）から計画座標（ｘ２５，ｙ２５）と表す。計画座標（ｘ１１，ｙ１１）と計画座標（ｘ１５，ｙ１５）は、それぞれロボットＲａ８１１の初期位置とゴールＧａ８１４の位置であり、計画座標（ｘ２１，ｙ２１）と計画座標（ｘ２５，ｙ２５）はロボットＲｂ８１２の初期位置とゴールＧｂ８１５の位置である。これらの値は既に決まっており、移動計画立案問題はこの間の座標を埋めることである。【０１４０】  次に、計画問題の制約条件について説明する。制約計画座標系列が変数であり、ロボットＲａ８１１、ロボットＲｂ８１２が同じ座標を占めないこと、障害物Ｋ８１３と同じ座標をとれないことなどが制約になる。またロボットＲａ８１１、ロボットＲｂ８１２の移動能力も制約となる。図２１は、本発明の実施の形態３にかかる移動計画立案装置が計画を作成する移動問題の制約ネットワーク図である。図２１において、計画座標のＸ座標値は「０」、「１」、「２」、「３」、「４」のいずれかの値、Ｙ座標値は「０」、「１」のいずれかの値をとるが、ロボットＲａ８１１とロボットＲｂ８１２が同じ時刻に同じ座標を持つことはできない。また、座標（３，１）には、障害物Ｋ８１３があり、この計画座標の値を持つことはできない。【０１４１】  また、移動オペレータ「ｏｐ」は、移動コマンドに関する制約を示す。移動は、１ステップにつき座標を上下左右どちらかの方向に１つ動く４種の移動オペレータと、全く動かない１つの移動オペレータの、計５つがある。【０１４２】  図２２は、本発明の実施の形態３にかかる協調作業ロボットの移動オペレータの説明図である。図２２において、「ｌｅｆｔ」オペレータはＸ座標値を１減らし、Ｙ座標値は変更しない。即ち、「Ｘ座標値変更」は「−１」であって、「Ｙ座標値変更」は「変更しない」である。「ｒｉｇｈｔ」オペレータではＸ座標値を１増やし、Ｙ座標値は変更しない。即ち、「Ｘ座標値変更」は「＋１」であって、「Ｙ座標値変更」は「変更しない」である。「ｕｐ」オペレータはＹ座標値を１増やし、Ｘ座標値は変更しない。即ち、「Ｙ座標値変更」は「＋１」であって、「Ｘ座標値変更」は「変更しない」である。「ｄｏｗｎ」オペレータはＹ座標値を１減らし、Ｘ座標値は変更しない。即ち、「Ｙ座標値変更」は「−１」であって、「Ｘ座標値変更」は「変更しない」である。また、「ｓｔａｙ」オペレータは座標値を変更しない。即ち、「Ｘ座標値変更」も「Ｙ座標値変更」は「変更しない」である。【０１４３】  また、ロボットＲａ８１１、ロボットＲｂ８１２は、これら５つのオペレータから一度に１つを選択するものとする。この時、これらのオペレータ間の制約として、座標系列は、１回の移動毎に移動前後の座標との間にそれぞれ制約が決定する。【０１４４】  次に、本実施の形態にかかる複数のエージェントを接続した移動計画立案装置で各エージェントの変数間の制約を解消する動作例について説明する。図２３は、本発明の実施の形態３にかかる移動計画立案装置の初期状態を説明する図である。図２３において、最初にロボットＲａ８１１とロボットＲｂ８１２は、計画座標記憶部７０１に格納されているそれぞれ自分の計画座標系列（ｘ１１，ｙ１１）から計画座標系列（ｘ１５，ｙ１５）と計画座標系列（ｘ２１，ｙ２１）から計画座標系列（ｘ２５，ｙ２５）を、制約解決部１０５により、移動オペレータの制約から計画した状態を示している。最初の計画を立てた後、ロボットＲａ８１１とロボットＲｂ８１２は通信部１０６により計画座標系列を送受信し、計画座標（ｘ１２，ｙ１２）から計画座標（ｘ１５，ｙ１５）と計画座標（ｘ２２，ｙ２２）から計画座標（ｘ２５，ｙ２５）とが同じ座標に存在することから制約違反状態であることを検知する。【０１４５】  図２４は、本発明の実施の形態３にかかる移動計画立案装置の途中状態を説明する図である。図２４において、制約条件を解消する優先度を持つロボットＲａ８１１が、図２３の状態から計画座標（ｘ１２，ｙ１２）の値を座標（１，０）から座標（２，１）に変更し、この変数を変更禁止設定した状態を示している。ロボットＲａ８１１は目標移動数以内でゴールＧａ８１４に到達するためには、計画座標（ｘ１２，ｙ１２）以降の計画座標系列を変更することができない。そして、ロボットＲａ８１１は、改善容易度生成部１０７にて生成した先の変更と変数変更禁止期間についての情報を含む改善容易度データをロボットＲｂ８１２へ送信する。ロボットＲａ８１１の改善容易度データを受信したロボットＲｂ８１２は、計画座標（ｘ２３，ｙ２３）を変更し、それ以降の計画座標についても変更する。【０１４６】  図２５は、本発明の実施の形態３にかかる移動計画立案装置の最終状態を説明する図である。図２５において、ロボットＲａ８１１とロボットＲｂ８１２の計画座標ですべての制約が満たされた状態を示している。図２５に示される通り、ロボットＲａ８１１はゴールＧａ８１４、即ち座標（４，１）に辿り着くことができる���ロボットＲｂ８１２はゴールＧｂ８１５、即ち座標（４，０）に辿り着くことができる。これにより、ロボットＲａ８１１とロボットＲｂ８１２の移動計画が立案動作を終了する。【０１４７】  このような構成とすることによって、実施の形態３では、エージェントが変数として座標系列を用いて、変数データや制約データの初期値や変更時の値をセンサ装置によって外部より取得して計画を作成する。また、この作成した計画に応じて稼動部を制御することによって、局所最適解に陥る可能性や、一部のエージェントが無限ループに陥る可能性がより低下する。結果として、ロボットに搭載されるエージェントの集合全体が移動計画を早く立案することができる。【０１４８】  なお、実施の形態３では変数として座標系列を用いる形態としたが、移動オペレータを変数として用いる形態としてもよい。【０１４９】  （実施例）
以上で説明した実施の形態１を用いて、効果の測定実験を行なった。分散アルゴリズムの速度評価は通信回数で行うのが一般的であるため、本実験では、実施の形態１におけるタスク割り当て装置の問題についてシミュレータを用いて解き、そのメッセージ交換回数で評価を行うことにする。【０１５０】  以下、本発明による手法と、既存アルゴリズムとしては最速である分散ブレークアウトアルゴリズム（横尾  真、外１名、「分散ｂｒｅａｋｏｕｔ：反復改善型分散制約充足アルゴリズム」、情報処理学会論文誌、１９９８年、第３９巻、第６号、ｐ．１８８９−１８９７を参照）を比較する。分散アルゴリズムの動作は本来、分散しているエージェント間で非同期だが、今回の実験では各エージェントがシミュレータ上で同期的にメッセージ交換と処理を行い、全ての制約が充足されたことをシミュレータが検知した時点までの全体のメッセージ交換回数（以下ではサイクル数と呼ぶ）で比較を行う。【０１５１】  実施の形態１におけるタスク割り当て装置においては、実施例として各エージェントが２種類のタスクだけを選択し得る図７の制約ネットワークを用いた。本実験では、各エージェントは３種類、あるいは４種類のタスクを選択し得るさらに複雑な制約ネットワークの問題を用いて実験を行った。【０１５２】  図２６は、その制約ネットワークの例を示す。３つのタスクを選択し得る場合の問題について説明する。図２６のように最初にエージェントを３つのグループに分け、違うグループのエージェントの間を制約によりランダムに結ぶことで問題が作成される。制約は、Ｘ≠Ｙ型の制約とする。このように問題を作成すると、必ず解が存在する問題を作ることができる。【０１５３】  図２６は、エージェントの数が１２だが、実験ではエージェントの総数１２０、制約の総数３２４となる問題を１０種類用意した。これを課題Ｉとする。【０１５４】  ４つのタスクを選択し得る場合についても同様に、エージェントを４つのグループに分けて、違うグループのエージェント間を制約でランダムに結ぶことで、解がある問題を作成した。エージェントの総数１２０、制約の総数５６４となる問題を１０種類用意した。これを課題ＩＩとする。【０１５５】  本実験では、課題Ｉと課題ＩＩそれぞれ各１０種類ずつの課題について、実行時にランダム値で初期化し、解に到達するまでのサイクル数を計測した。課題Ｉの１０種類についてそれぞれ１０回、課題ＩＩの１０種類についてそれぞれ１０回実行し、その解到達までの平均サイクル数を評価値として集計した。ただし、１００００サイクル（回）メッセージを交換しても解に到達しない場合、解に到達しなかったものとして扱い、１００００サイクルを評価値として平均計算に組み込む。【０１５６】  図２７および図２８は、この結果を示す。図２７は、解到達までの平均サイクル数である。図２８は、解到達率である。図２７に示されている通り、課題Ｉでも課題ＩＩでも、本発明の方式による解到達までの平均サイクル数は既存方式による解到達までの平均サイクル数よりも大変少ない値である。また、図２８に示されている通り、課題Ｉでも課題ＩＩでも、本発明の方式による解到達率は１００％である。一方、既存方式による解到達率は、��題Ｉでも課題ＩＩでも１００％に達していない。【０１５７】  本発明の手法は、既存の手法よりも短い時間で確実に解に到達していることがわかる。特に問題ＩＩにおいては、既存の手法が５２７７．３０サイクル（解到達率７４％）であるのに対し、本発明の方式では４０７．８２サイクル（解到達率１００％）であり、顕著な差が現れている。【０１５８】  なお、実施の形態１から実施の形態３において、それぞれの問題を、エージェント間で数回の情報交換をすることで解決できた。しかし実際の問題は非常に複雑である。例えば、実施の形態３においてロボットのとり得る座標は非常に少ない形態としたが、実世界での制約条件は複雑であり、情報交換の回数も非常に多くなる。ただし、このような複雑な問題で分散制約充足問題を解くことは、既存のアルゴリズムでは非常に長い時間が必要であるが、本発明によれば高速に解くことが可能である。実施の形態１から実施の形態３はそれを端的に説明するために問題を単純化したものであり、本発明にかかるエージェントの応用の範囲は、単純な問題に限定されるものではない。【０１５９】  なお、本発明は、上記した実施の形態の分野に限定されるものではない。例えば、複数の自律ロボットが共同で作業する場合、ロボットへのタスクの分配、ロボットの位置特定、複数ロボットによる地図作成などでも応用できる。このような問題ではロボット毎に変数や制約が分散しており、これを複数のロボットにより分散して解く必要があり、本発明が応用できる。【０１６０】  また、複数のセンサがネットワーク接続されている場合でも、本発明は各センサのセンシング情報の統合などに応用できる。これは各センサのセンシングノイズや誤差をとり除き全体として正確な情報を得るためには、各センサの持つ変数や制約、センサ間のセンシング情報についての制約を解決する必要があり、本発明が応用できる。あるいは各センサへのタスクの割当や、センサ間のネットワークの形成、センサ間の通信周波数の割当、センシング情報を目的のノードにまで送る装置などに本発明が応用できる。【０１６１】  また、本発明は、複数の観測機器による複数の観測対象の追跡において、追跡対象を観測機器に割当てる装置にも応用できる。監視カメラに監視対象を割当てる場合や、レーダーに追跡対象を割当てる場合などで、それぞれの観測機器の性能や観測範囲、追跡対象の移動など、変数と制約が観測機器に分散していて、これを分散環境で動作する場合に本発明が応用できる。【０１６２】  また、サプライチェーンマネージメントでの生産計画、在庫計画、納入計画などの立案にも本発明を応用することができる。あるいはロジスティックスの各種問題解決、計画立案に本発明が応用できる。分散して問題を解決するのはもちろんであるが、一部の情報を隠蔽する場合にも、本発明が応用できる。【０１６３】  また、電力系統設備作業停止計画にも本発明が応用できる。また、エネルギー需要予測に基づくエネルギー配送計画にも本発明が応用できる。例えば発電所からの電力配送計画では、発電所の能力とメンテナンス計画、需要予測、配電網などの各種制約と変数が分散していて、これを分散環境で動作する場合にも本発明が応用できる。【０１６４】  また、���発明は、複数の空調機器を用いる空調計画にも応用できる。分散した空調機器が独立に温度調整する場合でも、変数や制約が分散している状態を各機器で解決する場合にも本発明が応用できる。また、複数の機器からなるシステムの故障診断、通信経路ルーティング、無線ネットワークの通信周波数割当などにも本発明が応用できる。【０１６５】  また、鉄道、バスなどのダイヤ作成、勤務割当にも本発明が応用できる。例えば、複数の相互に乗り入れをしている鉄道会社でのダイヤ作成は、ダイヤという変数、乗り入れに関する制約が会社間に分散し、変数の制御を各装置で解決する場合にも本発明が応用できる。
【産業上の利用可能性】
【０１６６】  本発明にかかるエージェントは、ネットワーク接続されたタスク割当装置、スケジュール装置、ロボット等に搭載され自律的に近隣のエージェントと非同期で通信し協調して制約を解消する制御機器等に好適である。
【図１】
2006118193.tif 000004
【図２Ａ】
2006118193.tif 000005
【図２Ｂ】
2006118193.tif 000006
【図２Ｃ】
2006118193.tif 000007
【図２Ｄ】
2006118193.tif 000008
【図３】
2006118193.tif 000009
【図４】
2006118193.tif 000010
【図５】
2006118193.tif 000011
【図６】
2006118193.tif 000012
【図７】
2006118193.tif 000013
【図８Ａ】
2006118193.tif 000014
【図８Ｂ】
2006118193.tif 000015
【図８Ｃ】
2006118193.tif 000016
【図９】
2006118193.tif 000017
【図１０】
2006118193.tif 000018
【図１１Ａ】
2006118193.tif 000019
【図１１Ｂ】
2006118193.tif 000020
【図１１Ｃ】
2006118193.tif 000021
【図１２】
2006118193.tif 000022
【図１３】
2006118193.tif 000023
【図１４】
2006118193.tif 000024
【図１５】
2006118193.tif 000025
【図１６】
2006118193.tif 000026
【図１７】
2006118193.tif 000027
【図１８】
2006118193.tif 000028
【図１９】
2006118193.tif 000029
【図２０】
2006118193.tif 000030
【図２１】
2006118193.tif 000031
【図２２】
2006118193.tif 000032
【図２３】
2006118193.tif 000033
【図２４】
2006118193.tif 000034
【図２５】
2006118193.tif 000035
【図２６】
2006118193.tif 000036
【図２７】
2006118193.tif 000037
【図２８】
2006118193.tif 000038
【図２９】
2006118193.tif 000039
【図３０】
2006118193.tif 000040
【図３１Ａ】
2006118193.tif 000041
【図３１Ｂ】
2006118193.tif 000042
【図３２】
2006118193.tif 000043
【図３３】
2006118193.tif 000044
【国際調査報告】
2006118193.tif 000045
2006118193.tif 000046
2006118193.tif 000047