(57)【特許請求の範囲】
【請求項１】
変数の集合と各変数のとり得る値の集合に対応して、変数の許される値の組合わせの集合としての制約を充足する制約充足解を求める制約充足問題解決装置において、
前記制約以外の条件として、変数の値に対する外部からの要求を受取る要求入力手段と、
該入力された要求と前記制約とを満足する複数の制約充足解を生成する充足解生成手段と、
該生成された解と過去の問題解決事例において採用された解との類似度を求める類似度計算手段と、
該生成された解を過去の問題解決事例において採用された解と比較し、同一の解が採用された頻度に基づいて該解の評価値を求めて最も評価値の高い解を出力し、該生成された解が過去の問題解決事例において採用されていない時は、前記類似度計算手段による計算結果に基づいて最適の解を出力する最適解出力手段とを備えることを特徴とする制約充足問題解決装置。
【請求項２】
前記類似度計算手段が、前記生成された制約充足解と過去の問題解決事例において採用された解との間の距離によって前記類似度を求めることを特徴とする請求項１記載の制約充足問題解決装置。
【請求項３】
前記充足解生成手段が前記制約充足解を生成する毎に、前記最適解出力手段が生成された解に対する前記評価値を求めると共に、
すでに生成された解の評価値に対応して、該評価値より評価値が高い解が生成される可能性がない時、前記充足解生成手段による解の生成を中止させる探索範囲制限手段を更に備えることを特徴とする請求項１記載の制約充足問題解決装置。
【請求項４】
前記制約充足問題解決装置が、前記最適解決出力手段によって求められた評価値が高い複数の解を保存する複数解保存手段を更に備え、
前記最適解出力手段が、前記評価値の最も高い解に加えて、評価値が高い、更に１つ以上の解を出力することを特徴とする請求項１記載の制約充足問題解決装置。
【請求項５】
前記最適解出力手段が、前記同一の解が採用された頻度に加えて、あらかじめ与えられた目的関数を用いて前記評価値を求めることを特徴とする請求項１記載の制約充足問題解決装置。
【請求項６】
前記充足解生成手段が前記制約充足解を生成する毎に、前記最適解出力手段が生成された解に対する前記評価値を求めると共に、
該充足解生成手段による解の生成開始からの処理時間があらかじめ定められた時間を経過した時、該充足解生成手段による解の生成を中止させる問題解決時間管理手段を更に備えることを特徴とする請求項１記載の制約充足問題解決装置。
【請求項７】
変数の集合と各変数のとり得る値の集合に対応して、変数の値の許される組合わせの集合としての制約を充足する制約充足解を求める制約充足問題解決方法において、
前記制約以外の条件として、外部から与えられる変数の値に対する要求を受取り、
該要求と前記制約とを満足する複数の制約充足解を生成し、
該生成された解を過去の問題解決事例において採用された解と比較し、同一の解が採用された頻度に基づいて該解の評価値を求め、該生成された解が過去の問題解決事例において採用されていない時は、該生成された解と過去の問題解決事例において採用された解との類似度を求め、
最も評価値の高い解または前記類似度に基づく最適の解を出力する処理をコンピュータが実行する制約充足問題解決方法。
【請求項８】
変数の集合と各変数のとり得る値の集合に対応して、変数の値の許される組合わせの集合としての制約を充足する制約充足解を求めるための計算機によって使用される記憶媒体において、
前記制約以外の条件として、外部から与えられる変数の値に対する要求を受取るステップと、
該要求と前記制約とを満足する複数の制約充足解を生成するステップと、
該生成された解を過去の問題解決事例において採用された解と比較し、同一の解が採用された頻度に基づいて該解の評価値を求め、該生成された解が過去の問題解決事例において採用されていない時は、該生成された解と過去の問題解決事例において採用された解との類似度を求めるステップと、
最も評価値の高い解または前記類似度に基づく最適の解を出力するステップとを計算機に実行させるためのプログラムを格納した計算機読出し可能可搬型記憶媒体。
【請求項９】
変数の集合と各変数のとり得る値の集合に対応して、変数の値の許される組合わせの集合としての制約を充足する制約充足解を求めるための計算機によって使用されるプログラムにおいて、
前記制約以外の条件として、外部から与えられる変数の値に対する要求を受取る手順と、
該要求と前記制約とを満足する複数の制約充足解を生成する手順と、
該生成された解を過去の問題解決事例において採用された解と比較し、同一の解が採用された頻度に基づいて該解の評価値を求め、該生成された解が過去の問題解決事例において採用されていない時は、該生成された解と過去の問題解決事例において採用された解との類似度を求める手順と、
最も評価値の高い解または前記類似度に基づく最適の解を出力する手順とを計算機に実行させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は制約充足問題、すなわち変数の値の組合わせの中で許される組合わせとしての制約が与えられた時に、各変数の値を求める問題の解決方式に係り、更に詳しくは生産計画問題、配送問題、製品のカスタマイゼーション問題などのように、同じ制約のもとで、変数の値に対してそれぞれの時点毎に異なる要求が与えられる場合の制約充足問題解決方式に関する。
【０００２】
【従来の技術】
本発明が対象とする制約充足問題、例えば生産計画問題においては、製品毎の生産量やその納期を表わす変数と、実際の生産スケジュールを表わす変数とがあり、特に前者については、問題を解くにあたって外部からの要求として、変数の値自身や、その値のとり得る範囲が与えられる。例えばある製品に対する注文が１０個であり、在庫が全くないとすると、その製品の生産量を表わす変数のとり得る範囲は１０以上となる。
【０００３】
このような生産計画問題では、例えば月毎、あるいは週毎、日毎に異なる生産量の要求に対して問題を解く必要がある。すなわち生産量や納期を表わす変数に対しては、問題を解くたびに異なる値、あるいは値の範囲が外部から要求して与えられることになる。
【０００４】
制約充足問題とは、複数の変数と各変数のとり得る値の集合に対応して、２つないしはそれ以上の変数の値の組合わせの中で、許される組合わせと許されない組合わせを表わす制約の集合が与えられた時に、全ての制約を満足するような各変数の値を求める問題である。本発明ではそれに加えて、変数の一部に対してはそのとり得る値の集合に制限があり、その制限を前記の要求として、残りの変数の値を求める問題を対象とする。
【０００５】
対象とする問題の全ての要素を、以上のような制約充足問題として理論的に表現できれば、表現された問題を解くことによって実用的な解、例えば生産計画問題では生産スケジュールを求めることができるはずである。
【０００６】
しかしながら実際には、必要な全ての要素を論理的に記述することは極めて困難である。例えば機械の生産能力などのような物理的な制約を記述することは比較的容易であるが、例えば人間関係の良さなどの人的な要素や、運用上の習慣などを制約として論理的に記述することは困難である。
【０００７】
その結果、実際のアプリケーションにおいては制約充足問題として記述される制約は不十分であったり、不正確であったりする可能性がある。そのため単に与えられた制約を全て満足する解を求めるだけでは、その解が十分によい解であるとは限らない。そこで求められた解に対して様々な評価を行って、最適な解を求めなければならない。
【０００８】
このような制約充足問題に類似した問題の解決技術として次の２つの文献がある。
文献１）特開平１１−１８４８７２号，多属性データ群に対する検索支援システム．
文献２）特開２００１−１５４８４８号，仲介型問題解決支援システム．
文献１では複数の属性で表現されるデータに対する検索支援システムが開示されており、あらかじめシステム管理者あるいは利用者によって設定された評価関数やルールを用いることによって、解のランキングを行ったり、与えられた条件を満足しない解を選別することができる。
【０００９】
文献２では過去の問題解決事例が保存され、新しい要求、すなわち１つ、または複数の変数の値の範囲を制限する要求が入力された時に、過去の類似した要求とそれに対して採用された解が検索され、値が決められていない変数の値としてどの値がどの程度望ましいかが推定され、その推定結果が実際に問題を解くための問題解決器に対する前処理、または後処理で用いられる。
【００１０】
すなわち利用者からは値の指定がされていない属性に対しても、その値を高い信頼度で推定できる場合には、推定結果の値を解に対する条件として前処理において追加する。あるいは解候補の評価関数として、その値をとるような解候補を高く評価する関数を生成して、後処理においてその関数に基づいて利用者に提示すべき解を選択する。
【００１１】
【発明が解決しようとする課題】
前述の文献１においては、あらかじめ解の候補が全て羅列されていることを前提としており、組合わせる要素が多く、全ての解候補を羅列することが難しいような問題、例えば前述の生産計画問題や、複数商品の組合わせを求めるコンフィグレーション問題などに適用することが困難であるという第１の問題点があった。
【００１２】
またシステム管理者、または利用者が様々な評価関数やルールを設定する必要があり、システム管理者の作業を増大させたり、利用者の手間を増やすという第２の問題点があった。特にどのような解が望ましい解であるかについての評価基準が、例えば日々変化するような場合には、システム管理者が適切な評価関数を用意しておくことは極めて困難である。
【００１３】
更に解の評価を行う場合の評価関数として、一般には解の各属性、すなわち変数の値の評価値を独立に評価する評価関数が用いられるために、複数の属性、すなわち変数が互いに強い相関を持つようなアプリケーションには向かないという第３の問題点があった。
【００１４】
文献２では問題解決器として制約充足システムや組合わせ最適化システムを用いることによって、全ての候補を羅列しなければならないという第１の問題点がある程度解決される。また過去の問題解決事例を用いて解の評価を行うために、システム管理者や利用者が評価関数やルールをあらかじめ設定する必要がなく、第２の問題点も解決される。
【００１５】
しかしながら第３の問題点については、評価関数として複数の属性の値の組を識別／評価できる評価関数を生成することは実際には非常に困難であり、例えば実際には制約を満足しないものだけが高く評価されてしまう評価関数が用いられてしまう可能性があった。
【００１６】
本発明の課題は、上述の問題点を解決することができる制約充足問題解決装置、および解決方法を提供することである。
【００１７】
【課題を解決するための手段】
本発明では過去の問題解決事例を用いることによって前述の第２の問題点を解決する。更にあらかじめ可能な解を用意しておくのではなく、利用者から問題が与えられた後で、あらかじめ定義されている制約や新たに与えられた要求を満足する解を生成／探索して、その処理中に過去の問題解決事例を利用して解候補の評価を行うことによって、第１の問題点、および第３の問題点を解決する。
【００１８】
図１は本発明の制約充足問題解決装置の原理構成ブロック図である。同図は、変数の集合と各変数のとり得る値の集合に対応して、許される変数の値の組合わせの集合としての制約を充足する制約充足解を求める制約充足問題解決装置１の原理構成ブロック図である。
【００１９】
図１において要求入力手段２は、例えば要求入力部であり、前記制約以外の条件として、変数の値に対する外部からの要求、例えば利用者からの要求を受取るものであり、充足解生成手段３は例えば制約充足解生成部であり、入力された要求と前記制約とを満足する複数の制約充足解を生成するものである。
【００２０】
最適解出力手段４は、充足解生成手段３によって生成された解を過去の問題解決事例において採用された解と比較し、同一の解が過去に採用された頻度に基づいて、その解の評価値を求め、最も評価値の高い解を出力するものである。
【００２１】
発明の実施の形態においては、制約充足問題解決装置１は、生成された制約充足解と過去の問題解決事例において採用された解との類似度を求める類似度計算手段を更に備え、生成された解が過去の問題解決事例において採用されていない時、最適解出力手段４が類似度計算手段の計算結果に基づいて最適の解を出力することもでき、この場合、生成された解と過去の問題解決事例において採用された解との距離を用いて、類似度計算手段が類似度を求めることもできる。
【００２２】
また実施の形態においては、充足解生成手段３が制約充足解を生成する毎に、最適解出力手段４が生成された解に対する評価値を求めると共に、すでに生成された解の評価値に対応して、その評価値より評価値が高い解が生成される可能性がない時、充足解生成手段３による解の生成を中止させる探索範囲制限手段を更に備えることもでき、あるいは充足解生成手段３による解生成の開始からの処理時間があらかじめ定められた時間を経過した時に、充足解生成手段３による解の生成を中止させる問題解決時間管理手段を更に備えることもできる。
【００２３】
実施の形態においては、制約充足問題解決装置１が最適解出力手段４によって求められた評価値が高い複数の解を保存する複数解保存手段を更に備え、最適解出力手段４が評価値の最も高い解に加えて、評価値が高い、さらに１つ以上の解を出力することもできる。
【００２４】
更に実施の形態においては、最適解出力手段４が前述の同一の解が採用された頻度に加えて、あらかじめ与えられた目的関数を用いて前述の評価値を求めることもできる。
【００２５】
本発明の制約充足問題解決方法においては、制約以外の条件として変数の値に対する外部からの要求を受取り、その要求と制約とを満足する複数の制約充足解を生成し、該生成された解を過去の問題解決事例で採用された解と比較し、同一の解が採用された頻度に基づいてその解の評価値を求め、最も評価値の高い解を最適解として出力する方法が用いられる。
【００２６】
本発明の記憶媒体においては、制約以外の条件として変数の値に対する外部からの要求を受取るステップと、その要求と制約とを満足する複数の制約充足解を生成するステップと、該生成された解を過去の問題解決事例で採用された解と比較し、同一の解が採用された頻度に基づいてその解の評価値を求めるステップと、最も評価値の高い解を最適解として出力するステップとを計算機に実行させるためのプログラムを格納した計算機読出し可能可搬型記憶媒体が用いられる。
【００２７】
本発明のプログラムにおいては、制約以外の条件として変数の値に対する外部からの要求を受取る手順と、その要求と制約とを満足する複数の制約充足解を生成する手順と、該生成された解を過去の問題解決事例で採用された解と比較し、同一の解が採用された頻度に基づいてその解の評価値を求める手順と、最も評価値の高い解を最適解として出力する手順とを計算機に実行させるためのプログラムが用いられる。
【００２８】
以上のように本発明によれば、制約に加えて、その度毎に異なった要求が与えられる時に、過去の問題解決事例を用いて制約と要求とを満足する最適な解が出力される。
【００２９】
【発明の実施の形態】
図２は本発明の制約充足問題解決装置の最も基本的な構成ブロック図である。本発明の制約充足問題解決装置は当然一般的なコンピュータシステムによって実現されるが、そのようなコンピュータシステムのより一般的な構成については後述するものとし、図２では本発明を実現するための最も基本的な部分について説明する。
【００３０】
本発明における制約充足問題解決のためのプログラムは、図２において例えば補助記憶装置１０に格納され、必要に応じて主記憶装置１１上に展開され、ＣＰＵ１２によって実行される。必要となるデータ、すなわち変数やその可能な値、制約、目的関数など、問題自身に関するデータや、過去の事例データなども補助記憶装置１０に格納され、プログラム実行時において必要に応じて参照される。高速な処理が求められる場合には、これらのデータも主記憶装置１１上に展開され、そのデータを用いた処理が実行される。
【００３１】
問題データや事例データなどが図２と異なる他のコンピュータシステム上にある場合には、必要に応じてネットワークを介してデータの参照を行うことによって、制約充足問題の解が求められる。
【００３２】
図３は本発明の制約充足問題解決装置の機能的な構成ブロック図である。同図における各ブロックは、基本的にはプログラムとして図２の補助記憶装置１０に格納される。
【００３３】
図３において要求入力部２０は、制約以外の問題解決に対する条件、すなわち問題を解くたびに与えられる変数の値や、その範囲を示す要求を受取るものであり、その要求は制約充足解生成部２１に与えられる。
【００３４】
制約充足解生成部２１は変数の集合、各変数のとり得る値の集合、および制約を問題管理部２２から受取り、要求入力部２０から与えられた要求と、制約とを満足する制約充足解を、一般に複数個生成し、生成した制約充足解を解評価部２３によって与える。
【００３５】
解評価部２３は、事例管理部２４によって管理されている過去の問題解決事例において採用された解と、生成された制約充足解とを比較して、同じ解が採用された頻度を用いることによって、あるいは類似度計算部２５によって過去の問題解決事例において採用された解と生成された制約充足解との類似度を用いて、あるいは目的関数管理部２６によって管理されている目的関数の値を更に用いて制約充足解に対する評価値を求め、その評価値を制約充足解生成部２１に返す。
【００３６】
最適解出力部２７は、制約充足解生成部２１によって生成された複数の制約充足解のうちで、例えば最も評価値の高い解を最適解として、あるいは複数解保存部２８に保存されている評価値の高い複数の解を外部に出力する。
【００３７】
探索範囲制限部２９は、例えば複数解保存部２８から与えられる評価値の下限を用いて、その評価値の下限よりも大きい制約充足解が生成される可能性がなくなった時点で、制約充足解生成部２１による解の生成を中止させ、探索範囲の制限を行うものである。
【００３８】
また問題解決時間管理部３０は、制約充足解生成部２１による解の生成の開始からあらかじめ定められた時間が経過した時点で、制約充足解生成部２１による解の生成を中止させ、問題解決時間をある一定値以内に収めるものであり、制約充足解生成部２１からの探索時間の問い合わせに対応して、探索の継続の可否を制約充足解生成部２１に支持する。
【００３９】
以下の説明においては、まず変数とそのとり得る値の集合は次のものとする。
Ｘ∈｛１，２，３｝，Ｙ∈｛１，２，３｝，
Ｚ∈｛１，２，３｝，Ｗ∈｛１，２，３｝
また制約は次の変数の組合わせ、すなわち許される変数の組合わせとする。なおここでは組合わせ（Ｙ，Ｚ）についての制約が示されておらず、その意味ではこの問題は完全には定義されていないものである。
【００４０】
（Ｘ，Ｚ）∈｛（１，１），（２，２），（３，３）｝
（Ｙ，Ｗ）∈｛（１，２），（１，３），（２，１），（２，３），（３，１），（３，２）｝
（Ｚ，Ｗ）∈｛（１，１），（１，２），（１，３），（２，２），（２，３），（３，３）｝
以下の説明においては、制約充足問題を解くにあたり過去の問題解決事例を利用する。図４はそのような過去の問題解決事例を示す。これは上述の４つの変数に対する値の割当ての集合であり、図４に示すような８個の事例が存在するものとする。なおこの過去の問題解決事例とは、制約充足問題解決装置から最適解として出力されたものでも、例えばシステム管理者によって前述のような運用上の習慣や人的な要素を考慮して、不適切と判断されたものを除いたものである。
【００４１】
本発明の第１の実施形態として次の要素が、例えば利用者から入力された場合を考える。
Ｘ∈｛１，２｝＆Ｙ∈｛２，３｝
第１の実施形態では、前述の制約と入力された要求とを満足する制約充足解、すなわち４個の変数に対して値が割当てられた解が、図３の制約充足解生成部２１によって順次生成され、生成されたそれぞれの制約充足解について解評価部２３によって評価値が計算され、最も評価値の高い制約充足解が最適解出力部２７によって出力される。
【００４２】
図５は第１の実施形態における制約充足問題解決処理のフローチャートである。同図において、新しい要求の入力に対応してステップＳ１で制約充足解の１つが生成され、ステップＳ２で制約充足解が生成できたか否かが判定され、生成できた場合にはステップＳ３で生成された解の評価値が、図４で説明した過去の問題解決事例における解と比較され、例えば図４に示されている過去の解のうちで生成された解と一致する解の個数が求められる。そしてステップＳ４で、その値、すなわち評価値が現在までに見つけられた最良の解の評価値よりよいか否かが判定され、よい場合にはステップＳ５で新しい解とその評価値が最良解として記憶された後に、また評価値がよくない場合には直ちに、ステップＳ１で次の制約充足解が生成され、ステップＳ２以降の処理が繰返される。そしてステップＳ２で制約充足解が生成できなくなったと判定された時点で、ステップＳ６で最良解（最適解）が出力されて処理を終了する。
【００４３】
図５のステップＳ１で制約充足解を生成する方法について説明する。その方法としては様々な方法が可能であるが、本実施形態では深さ優先の木探索を用いるものとする。深さ優先の木探索では、値が決定されていない変数を選択し、その変数の値を決定することを繰返して、全ての変数の値を決定する。制約に違反することなく全ての変数の値が決定された場合には、それを制約充足解として出力し、最後に値が決定された変数の値をまだ調べていない他の値に変更することによって、別の制約充足解を探す処理が行われる。
【００４４】
値を決定して行く途中で制約、または要求が満たせない場合、またはある変数の値を全て調べた場合には、直前に値が決定された変数の値をまだ調べていない別の値に変更して処理を続けることによって、全ての制約充足解を求めることができる。
【００４５】
木探索の処理においては、値が決定されていない変数が複数個存在する時に、次に値を決める変数をどのように選択するか、また選択された変数の値としてどの値から取っていくかによって、解を求める経過が異なってくる。本実施形態では、とり得る値の数が最も少ない変数を選択し、その値としては小さな値から順次調べていくことにする。
【００４６】
図６は第１の実施形態における制約充足解生成部２１による木探索処理の動作例である。前述の要求では、ＸとＹとがとり得る値の数がともに２で最も少ないが、図６ではこの２つのうち変数Ｘを出発ノード、すなわちルートとした場合の深さ優先の木探索の結果として得られる探索木が示されている。
【００４７】
前述のように、Ｘの次に調べられる変数としては、左側の木ではＸ＝１に対応して組合わせ可能なＺの値が１のみとなり、Ｚの値が決定された後に２個の値をとり得るＹの値が決定され、最後にＷの値が決定されることによって制約充足解が次々と求められる。
【００４８】
以上の処理によって、第１の実施形態では制約充足解生成部２１によって次の６個の制約充足解が生成される。なお、例えば変数が多い問題など、複雑な問題に対する解の個数は数百、数万、数百万にも達する。また、要求、すなわち変数の値に対する要求が入力されない場合の解の個数はさらに多くなる。
【００４９】
解１：（Ｘ，Ｙ，Ｚ，Ｗ）＝（１，２，１，１）
解２：（Ｘ，Ｙ，Ｚ，Ｗ）＝（１，２，１，３）
解３：（Ｘ，Ｙ，Ｚ，Ｗ）＝（１，３，１，１）
解４：（Ｘ，Ｙ，Ｚ，Ｗ）＝（１，３，１，２）
解５：（Ｘ，Ｙ，Ｚ，Ｗ）＝（２，２，２，３）
解６：（Ｘ，Ｙ，Ｚ，Ｗ）＝（２，３，２，２）
これらの制約充足解は、与えられた要求とあらかじめ定義された制約とを共に満足する解という意味では対等のものであるが、第１の実施形態ではそのうち１つだけが最適解として出力される。ここでは６個の解を図４の解、すなわち過去の問題解決事例において採用された解のうちのいくつと一致するかによって評価し、最も評価値の高いものが最適解として出力される。６個の解を図４の解と比較すると解１は２個の事例と一致、解３，解６はそれぞれ１個の事例と一致し、解２、解４、解５と一致する事例は存在しない。よって解１が最適解として出力される。
【００５０】
ここで、生成された制約充足解の評価を、過去の問題解決事例において採用された同一の解の数によって行う理由について説明する。
具体的な例としてパソコンの販売方法について考える。一般にパソコンは一組のシステムとして本体，メモリ，ディスプレイ，その他が組合されて販売される。この本体，メモリ，ディスプレイ，・・・が変数Ｘ，Ｙ，Ｚ，・・・に相当する。
【００５１】
本実施形態では過去の販売実績としてデータベースに格納されている組合わせの中で、たくさん売れている組合わせをユーザの要求を満足するものとして出すことをポリシーとしている。
【００５２】
あるユーザにとってたくさん売れているものが必ずしもよい組合わせとは限らず、そういう意味では論理的根拠が充分とは言えないが、たくさんの人が選んでいる組合わせが高い確率でユーザが望むものと考えられ、本実施形態ではそのような推定にもとづいて解の評価を行う。
【００５３】
以上の説明では、制約充足解生成の方法として深さ優先の木探索を用いるものとしたが、他の方法、例えば幅優先探索（横方向優先探索）などの他の木探索方法や、制約を満足する変数の値の組合わせを始めに全て列挙しておき、それらの中から要求、すなわちいくつかの変数の値についての条件が入力された時に、条件を満足するものを選択する方法なども可能であり、これらを深さ優先の木探索の代わりに用いてもよい。
【００５４】
第１の実施形態においては、制約充足解の評価にあたって解と完全に一致する過去の問題解決事例の数を用いているが、解が多数の変数を用いて表現されていたり、個々の変数がとり得る値の数が多いような場合には、全く同じ解が過去の問題解決事例において採用されていた可能性は少ない。その結果、最適解の評価が困難になる。
【００５５】
そこで本発明の第２の実施形態では、過去の問題解決事例において採用された解の中で、評価対象としての制約充足解に完全に一致していなくても、十分類似している解を検索し、評価対象の解とどの程度類似したものがいくつあるかをもとに解の評価を行う。すなわち完全に一致していなくても、非常によく似た解が多数ある解の評価値を高くすることによって、最適解を決定する。
【００５６】
図７は第２の実施形態における制約充足問題解決処理のフローチャートである。同図を第１の実施形態に対応する図５と比較すると、ステップＳ２で制約充足解を生成できた時に、ステップＳ３の処理に代わって、ステップＳ１０で生成された解とそれぞれの問題解決事例における解との類似度が計算され、類似事例の集合が決定され、ステップＳ１１でその類似事例を用いて生成された解の評価値が計算され、ステップＳ４以降の処理が実行される点が異なっている。
【００５７】
第２の実施形態における具体例として、次の要求が外部から入力されたものとする。
Ｘ＝１＆Ｗ∈｛２，３｝
図８は前述の制約とこの要求とを満足する制約充足解生成処理における探索木を示す。ルートとしての変数Ｘに対する外部からの要求がＸ＝１のみに限られるため、Ｘ＝１のみに対する探索が実行され、その結果として次の４個の解が生成される。
【００５８】
解１：（Ｘ，Ｙ，Ｚ，Ｗ）＝（１，１，１，２）
解２：（Ｘ，Ｙ，Ｚ，Ｗ）＝（１，１，１，３）
解３：（Ｘ，Ｙ，Ｚ，Ｗ）＝（１，２，１，３）
解４：（Ｘ，Ｙ，Ｚ，Ｗ）＝（１，３，１，２）
なお図８ではこの４個の解は解１、解４、解２、解３の順序で生成され、解の生成順序とその番号とは必ずしも対応していない。
【００５９】
図４の問題解決事例において採用された解の中には、この４個の解と一致するものが１つも存在せず、第１の実施形態では最良の解を選ぶことができない。第２の実施形態では制約充足解の評価にあたって、完全に一致する事例ではなく、類似した事例が用いられる。
【００６０】
類似した事例を用いた評価においては、制約充足解と事例との距離をどのように定義するか、また類似した事例の集合から全体的にどのように評価値を決定するかについて様々な方法を用いることができる。
【００６１】
例えば後者については、距離がある閾値以下の事例の数で評価したり、制約充足解毎に距離の小さい順にある一定個数の事例を選択し、選択された事例との距離の平均値を用いたり、距離ｄと負の相関を持つような関数、例えば次の関数
１／（ｄ＋α）、ここでαは小さな正数
の値の和によって評価することができる。
【００６２】
ここでは解と事例との間の距離としては、異なる値をとる変数の数を用い、制約充足解の評価は最も近い事例との間の距離が小さいほど高く、また距離が最も近い事例が複数ある場合には、その距離にある事例の数が多いほど高いものとして処理が行われる。
【００６３】
前述の４個の制約充足解について、図４の過去の問題解決事例における解と比較すると、解１と解２は最も近い事例との距離が２であり、解３と解４は最も近い事例との距離は１であるが、解３と距離１の事例は事例１と事例７との２個あるのに対して、解４と距離１の事例は事例２の１個だけであるため、第２の実施形態では解３が最良解として出力される。
【００６４】
次に本発明の第３の実施形態について説明する。第３の実施形態においては、制約充足解生成部２１によって、例えば深さ優先探索を用いて次々と制約充足解を生成するにあたって、制約充足解が制約されるたびにその解の評価値を計算し、計算された評価値に対応して制約充足解探索範囲の制限が行われる。
【００６５】
すなわち、すでにいくつか制約充足解が生成されている場合、それらの中で最もよい解の評価値よりも評価値が低くなるような解が以後生成されたとしても、その解は最終的な結果として出力される可能性は存在しない。そこで第３の実施形態では、それまでに見つかった解の評価値を用いて、制約充足解生成のための探索範囲を制限することによって、全体的な処理速度の向上が行われる。
【００６６】
図９は第３の実施形態における制約充足問題解決処理のフローチャートである。同図を第２の実施形態における図７と比較すると、まず要求入力に対応して、ステップＳ１５で評価値の下限Ｌの値が設定される。ステップＳ１５ではその下限Ｌの初期値として−∞が設定され、続いてステップＳ１で制約充足解が生成され、ステップＳ１６で評価値がその下限Ｌより大きい制約充足解を生成できたか否かが判定される。
【００６７】
生成できた場合には図７におけると同様のステップＳ１０，Ｓ１１の処理が行われ、ステップＳ５で新しい解とその評価値が最良解として記憶され、ステップＳ１７で最良解の評価値が評価値の下限Ｌとされた後に、ステップＳ１以降の処理が繰返される。ステップＳ１６で評価値がＬより大きい制約充足解が生成できない、あるいは生成できる可能性がないと判定された場合には、ステップＳ６で最良解が出力されて処理を終了する。
【００６８】
第３の実施形態における処理の例として、第１の実施形態におけると同じ要求が与えられたものとし、また制約充足解の評価は第２の実施形態におけると同様に行われるものとする。そして制約充足解の生成においては、第１実施形態、および第２の実施形態におけると同様に、深さ優先の木探索が行われるものとする。
【００６９】
図１０は第３の実施形態における探索木を示す。この探索において最初の制約充足解、すなわち
解１：（Ｘ，Ｙ，Ｚ，Ｗ）＝（１，２，１，１）
を発見するまでは、第１、第２の実施形態におけると同様の処理が行われる。
【００７０】
解１が発見された時点で、この解の評価を行うために図４の過去の問題解決事例との比較が行われ、距離０の事例が２つあることが分かる。そこで以降の処理においてはこれよりもよい解、すなわち距離０の事例が３個以上ある解を探す必要がある。
【００７１】
一般に探索木中の出発ノード（ルート）から最も下のノード（リーフ）に至る間の中間ノードでは、それまでに決定されている変数の値の組との距離がある一定値以下である事例の数は、探索木中のノードを下にたどる、すなわち値が決定されていない変数の値を決定していくにつれて単調に減少する。
【００７２】
この例では中間ノードにおいて距離０の事例が３個未満となったら、その下で距離０の事例が３個以上ある制約充足解を見つけられる可能性は存在しない。そこでそのような中間ノードに達した時点で、それ以下のノードの探索は行わず、上に戻って他の制約充足解を見つける処理を続行する。
【００７３】
図１０において、解１と解２を生成した後にＹ＝３に対する処理が行われるが、この時点でＸ＝１，Ｙ＝３，Ｚ＝１に対応する事例は事例２の１つのみであり、距離０の事例数が１であることから、それ以下のノードをたどる処理は行われず、出発ノードに戻ってＸ＝２に対する処理が行われる。
【００７４】
しかし、入力された要求においてＹの値が２、または３でなければならないことから、この中間ノードにおいて距離０の事例は事例４の１つだけとなり、距離０の事例が３個以上ある制約充足解を見つけられる可能性は存在せず、この中間ノードにおいて処理は打ち切られ、図６における木探索の処理に比べて処理時間を短縮することができる。
【００７５】
すなわち、図１０においては、解１に対してのみ図９のステップＳ１０，Ｓ１１で類似度の計算と評価値の計算が行われ、解２の生成時を含め、以後の処理ではステップＳ１６で評価値がＬより大きい制約充足解を生成できなかったと判定されて処理を終了する。
【００７６】
図１１は第４の実施形態における制約充足問題解決処理のフローチャートである。第４の実施形態では、第１〜第３の実施形態のように最良解を１つだけ出力するのでなく、評価値の高い複数の解を出力し、そのうちどれを選択するかは利用者またはシステム管理者のような専門家にまかせるものとする。
【００７７】
図１１を第３の実施形態に対応する図９と比較すると、ステップＳ１１までの処理は同様である。そしてステップＳ１６で評価値がその下限Ｌより大きい制約充足解が生成できたために、ステップＳ２０で新しく生成された解とその評価値が図３の複数解保存部２８に追加され、ステップＳ２１で複数解保存部２８に保存されている解の数が要求されている数、すなわち出力すべき数より大きいか否かが判定される。
【００７８】
要求されている数より大きくない場合には、ステップＳ２２で複数解保存部２８に保存されている解の数が要求されている数と等しいか否かが判定され、等しくない場合にはステップＳ１以降の処理が繰返される。
【００７９】
要求されている数と等しい場合には、ステップＳ２３で解の評価値の下限としてのＬの値が、複数解保存部２８に保存されている解の評価値の中で最も低い値に設定された後に、ステップＳ１以降の処理が繰返される。
【００８０】
すなわちステップＳ２２で保存されている解の数が要求されている解の数に達していない場合には、評価値がどのような値であっても生成された解を複数解保存部２８に保存するだけでよいが、要求されている数に達した場合には、それ以後に生成される解は複数解保存部２８に保存されている解の中で評価値の最も低い値よりも評価値が大きくなければならないために、ステップＳ１５で設定された評価値の下限が再設定されて、ステップＳ１以降の処理が行われることになる。
【００８１】
ステップＳ２１で複数解保存部２８に保存されている解の数が要求されている数より大きいと判断された場合には、ステップＳ２０で新しい解の追加を行うことによって解の数が過剰になったことになるので、ステップＳ２４で複数解保存部２８に保存されている解の中で最も評価値が低い解とその評価値が削除され、ステップＳ２３で解の評価値の下限Ｌが再設定された後にステップＳ１以降の処理が繰返され、ステップＳ１６で評価値がＬより大きい制約充足解を生成できなくなった時点で、ステップＳ２５で複数解保存部２８に保存されている解が出力されて処理を終了する。
【００８２】
このように第４の実施形態では評価値の高い解が１つだけでなく複数個出力され、最終的な解の選択は人間の専門家にまかせられる。これは、例えば第１の実施形態においては評価値が２番目、あるいはそれ以下の解の方が最良解よりもよいと専門家によって判断される可能性があるからである。特に過去の問題解決事例における解が十分に集められていないような場合には、そのような状況がおこる可能性が高い。例えば第２の実施形態の問題に対して、出力すべき解の数が２個と指定された場合には、評価値の高い順に２つの制約充足解、すなわち解３と解４とが出力されることになる。
【００８３】
なお図１１では複数解保存部２８に追加される新しい解の評価においても、第２，第３の実施形態と同様に類似度を用いて解の評価値が求められるものとしたが、第１の実施形態におけると同様に生成された解と完全に一致する事例の数を用いて評価することも当然可能である。
【００８４】
次に第５の実施形態について説明する。第１〜第４の実施形態では、過去の問題解決事例において採用された解を用いて生成された制約充足解の評価が行われる。しかしながら実際の問題、例えば生産スケジューリング問題では在庫はできれば少なくおさえたいとか、コストは低いほうがよいなど、明白な目的関数が与えられる場合が多い。この目的関数と制約とが完全であれば、制約充足解の中で目的関数の値が最もよいものを求めればよいことになる。
【００８５】
しかし、前述のように必要な全ての要素を制約として記述することが困難であるのと同様に、完全な目的関数を記述することもまた困難である。そこで生成された制約充足解を評価するために、目的関数だけでなく、過去の問題解決事例も用いることが有効である。第５の実施形態では、例えば第１の実施形態で述べた距離０の事例数による解の評価と、目的関数による評価とを組合わせて最終的な評価関数を生成し、制約充足解の評価を行うものとする。
【００８６】
図１２は第５の実施形態における制約充足問題解決処理のフローチャートである。図１１の第４の実施形態に対するフローチャートと比較すると、図１１のステップＳ１１で解の評価値が類似事例のみを使って計算されるのに対して、図１２ではステップＳ２６で解の評価値が類似事例と目的関数の両方を使って計算される点だけが異なっている。
【００８７】
類似事例と目的関数とを組合わせた評価関数としては、目的関数による評価値と事例による評価値との線形和をとるものとするが、より複雑な非線形関数、例えば距離０の事例数が多ければ事例数のみを使い、その事例数が少なければある目的関数を使うというようにすることも可能である。
【００８８】
ここでは例として第１の実施形態におけると同じ要求が入力されたものとする。目的関数はＹ＋Ｗの最大化とし、事例を用いた評価関数は距離０の事例の数であるとする。また目的関数と事例による評価関数とを組合わせた制約充足解に対する評価関数は、目的関数の値と距離０の事例の数との線形和とし、その係数は目的関数の値に対して１００、距離０の事例の数に対して１とする。すなわち基本的には外部から与えられた目的関数が重視されるが、その値がほとんど同じ場合には、距離０の事例の数の多い解が最良解として選択される。
【００８９】
図１３は第１の実施形態におけると同じ６個の解のそれぞれに対する評価関数の値を示す。その結果から要求されている解の数が１個の場合には解６が出力されることになる。
【００９０】
図１４は第６の実施形態における制約充足問題解決処理のフローチャートである。第１〜第５の実施形態では、基本的には生成される可能性のある解の全ての評価値を調べ、最適な解を１つ、または複数個の解を出力する。しかし多くの制約充足問題では、１つの解を求めるだけでも常に問題のサイズ（変数の数）の多項式時間で解けることが補償されないものと考えられる。そのため変数の数が多い場合には、第１〜第５の実施形態では処理に時間がかかる。
【００９１】
また制約充足問題が適用されるアプリケーションにおいては、時間をかけてもできるだけよい解がほしい場合もあるが、逆に解の質はほどほどでも、できるだけ短時間で解がほしい場合もある。
【００９２】
そこで第６の実施形態では、図３で説明した問題解決時間管理部３０による管理によって、あらかじめ設定された、あるいはユーザから要求された時間が経過した時点でそれ以上の処理を中止し、その段階で見つかっている解の中で最良の解、または複数解保存部２８に保存されている複数個の解を出力する処理が実行される。
【００９３】
図１４を第５の実施形態に対応する図１２と比較すると、ステップＳ１５とステップＳ１の間のステップＳ２８で処理時間が与えられた問題解決時間を超過したか否かが判定され、まだ超過していない場合にはステップＳ１において次の制約充足解を生成する処理以降が繰返されるが、超過した場合にはステップＳ２５で複数解保存部２８に保存されている解が出力されて、処理を終了する点だけが異なっている。
【００９４】
図１５は第６の実施形態において評価値の下限Ｌの値を使用しない場合の制約充足問題解決処理のフローチャートである。同図において、例えば利用者から入力された要求に対応してステップＳ２８で処理時間が与えられた問題解決時間を超過したか否かが判定され、超過してない場合には第１の実施形態に対応するステップＳ１，Ｓ２の処理が行われ、制約充足解を生成できた場合には図１２におけると同様にステップＳ２６で生成された解の評価値が計算され、ステップＳ２２で複数解保存部に保存されている解の数が要求されている解の数と等しいか否かが判定される。
【００９５】
要求されている解の数と等しくない場合には、複数解保存部２８に保存されている解の数が要求されている解の数に達していないことになるため、ステップＳ２０で新しい解とその評価値が複数解保存部２８に保存された後に、ステップＳ２８以降の処理が繰返される。
【００９６】
ステップＳ２２で要求されている数と等しいと判定されると、ステップＳ３０で新しく生成された解の評価値が複数解保存部２８に保存されている解の中で最も悪い解の評価よりもよいか否かが判定され、よい場合にはステップＳ３１でその評価値が最悪の解が複数解保存部２８から削除され、新しい解と評価値とが保存された後に、また最悪な評価値よりもよくない場合にはステップＳ３１の処理を行うことなく、ステップＳ２８以降の処理が繰返される点が異なっている。
【００９７】
以上において本発明の制約充足問題解決装置、および解決方法についてその詳細を説明したが、この制約充足問題解決装置は前述のように一般的なコンピュータシステムとして構成することが可能であり、そのようなシステムの基本的な部分は図２においてすでに説明したが、図１６はそのようなコンピュータシステム、すなわちハードウェア環境のより一般的な構成ブロック図を示す。
【００９８】
図１６においてコンピュータシステムは中央処理装置（ＣＰＵ）５０、リードオンリメモリ（ＲＯＭ）５１、ランダムアクセスメモリ（ＲＡＭ）５２、通信インタフェース５３、記憶装置５４、入出力装置５５、および可搬型記憶媒体の読取り装置５６、およびこれらの全てが接続されたバス５７によって構成されている。
【００９９】
記憶装置５４としては、ハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができ、このような記憶装置５４、またはＲＯＭ５１に図５、図７、図９、図１１、図１２、図１４および図１５などのフローチャートに示されたプログラムや、本発明の特許請求の範囲の請求項１０のプログラムなどが格納され、そのようなプログラムがＣＰＵ５０によって実行されることにより、本実施形態における制約充足問題解決が可能となる。
【０１００】
このようなプログラムは、プログラム提供者５８側からネットワーク５９、および通信インタフェース５３を介して、例えば記憶装置５４に格納されることも、また市販され、流通している可搬型記憶媒体６０に格納され、読取り装置５６にセットされて、ＣＰＵ５０によって実行されることも可能である。可搬型記憶媒体６０としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスクなど様々な形式の記憶媒体を使用することができ、このような記憶媒体に格納されたプログラムが読取り装置５６によって読取られることにより、本実施形態における制約充足問題解決が可能となる。
【０１０１】
【発明の効果】
以上詳細に説明したように本発明によれば、制約充足問題の解決のために過去の問題解決事例において採用された解、あるいはそのような解と目的関数とを組合わせた評価関数を用いることによって、いくつかの変数の組合わせに対する制限としての制約の必ずしも全てが与えられていない場合、すなわち問題が完全に定義されていない場合でも、どのような解が望ましいがを判定してよりよい解を求めることが可能となり、制約充足問題の解決効率化に寄与するところが大きい。
【図面の簡単な説明】
【図１】本発明の制約充足問題解決装置の原理構成ブロック図である。
【図２】制約充足問題解決装置としてのコンピュータの基本構成を示す図である。
【図３】制約充足問題解決装置の機能的な構成を示すブロック図である。
【図４】事例管理部に保存されている過去の問題解決事例の例である。
【図５】第１の実施形態における処理のフローチャートである。
【図６】第１の実施形態における探索木の例である。
【図７】第２の実施形態における処理のフローチャートである。
【図８】第２の実施形態における探索木の例である。
【図９】第３の実施形態における処理のフローチャートである。
【図１０】第３の実施形態における探索木の例である。
【図１１】第４の実施形態における処理のフローチャートである。
【図１２】第５の実施形態における処理のフローチャートである。
【図１３】第５の実施形態における制約充足解に対する評価値を示す図である。
【図１４】第６の実施形態における処理のフローチャートである。
【図１５】第６の実施形態において評価値の下限を用いない処理のフローチャートである。
【図１６】本発明を実現するためのコンピュータシステムのより一般的な構成を示す図である。
【符号の説明】
１    制約充足問題解決装置
２    要求入力手段
３    充足解生成手段
４    最適解出力手段
１０    補助記憶装置
１１    主記憶装置
１２    中央処理装置（ＣＰＵ）
２０    要求入力部
２１    制約充足解生成部
２２    問題管理部
２３    解評価部
２４    事例管理部
２５    類似度計算部
２６    目的関数管理部
２７    最適解出力部
２８    複数解保存部
２９    探索範囲制限部
３０    問題解決時間管理部
【図１】
0004829441.tif 000002
【図２】
0004829441.tif 000003
【図３】
0004829441.tif 000004
【図４】
0004829441.tif 000005
【図５】
0004829441.tif 000006
【図６】
0004829441.tif 000007
【図７】
0004829441.tif 000008
【図８】
0004829441.tif 000009
【図９】
0004829441.tif 000010
【図１０】
0004829441.tif 000011
【図１１】
0004829441.tif 000012
【図１２】
0004829441.tif 000013
【図１３】
0004829441.tif 000014
【図１４】
0004829441.tif 000015
【図１５】
0004829441.tif 000016
【図１６】
0004829441.tif 000017