JPH08249187A - 探索装置 - Google Patents

探索装置

Info

Publication number
JPH08249187A
JPH08249187A JP7080750A JP8075095A JPH08249187A JP H08249187 A JPH08249187 A JP H08249187A JP 7080750 A JP7080750 A JP 7080750A JP 8075095 A JP8075095 A JP 8075095A JP H08249187 A JPH08249187 A JP H08249187A
Authority
JP
Japan
Prior art keywords
variable
value
set point
search
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP7080750A
Other languages
English (en)
Inventor
Yuriko Nomura
百合子 野村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP7080750A priority Critical patent/JPH08249187A/ja
Publication of JPH08249187A publication Critical patent/JPH08249187A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【目的】 探索に関する各種の方針を、対象問題の内容
に応じて柔軟に変更できるようにし、変数の種類に応じ
て動的に変更できるようにする。 【構成】 設定点毎探索処理部3は、以下の〜の処
理により、変数格納部5に格納されている変数への制約
条件群(対象問題における制約条件群)を満足する値の
設定を試みる探索処理を行う。 状況スタック格納部6内の状況スタックへの設定点
(設定点格納部8内の設定点リスト中の設定点)の設定
および削除を行って探索処理を進める。 関数格納部7内の値設定関数,設定点選択関数およ
び設定点追加関数と設定点内の各属性値とに基づき、探
索に関する各種の方針を決定する。 条件検査部9を用いて、条件格納部4内の制約条件
群に関する検査を行う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、制約条件群を満足する
ように変数の値を設定する処理により深さ優先探索(縦
型探索)を行う探索装置に関し、特に異なる定義の値域
を持つ変数が混在しうる変数群(値域が上限域と下限域
とで与えられるような連続の値域を持つ変数や離散値の
有限集合で与えられる変数や離散値の無限集合で与えら
れる変数等が混在しうる変数群)を持つ問題に対して制
約条件群を満足するように変数の値を設定する処理を行
う探索装置に関する。
【0002】
【従来の技術】深さ優先探索では、変数群と変数の値域
と満足すべき制約条件群とが入力として与えられて、次
のような処理が行われる。 各変数に対して値を設定して、制約条件群が満足さ
れているか否かを検査する。 制約条件群が満足されていない場合には、値の次候
補を変数に設定して再度検査を行う。 候補値を全て試したが制約条件群が満足されない場
合には、以前に値の設定が行われた変数にさかのぼって
値の次候補を試す。
【0003】深さ優先探索は、他の探索手法に比べて必
要となるメモリ量が比較的少なくてよいため、問題が大
きくなりがちな実用の場でしばしば用いられる。
【0004】なお、深さ優先探索については、「人工知
能,P.H.ウィンストン(Winston)著,長尾
真・白井良明訳,培風館,1980年9月10日初版発
行」に詳しい。
【0005】図10は、このような深さ優先探索を行う
従来の探索装置の一例の構成を示すブロック図である。
この探索装置は、制御部1002を介して中央処理装置
1001に接続されており、変数毎探索処理部1003
と、条件格納部1004と、変数格納部1005と、状
況スタック格納部1006と、条件検査部1007とを
含んで構成されている。
【0006】次に、この探索装置の動作について説明す
る。ここでは、探索対象の問題(対象問題)として、以
下の例題1が与えられた場合を考える。
【0007】例題1:「各々が{1 3 5}の値域
(離散値の有限集合で与えられる値域)を持つ変数A,
BおよびCが存在し、制約条件群として条件「A<5」
(条件とする),条件「A+B>7」(条件とす
る)および条件「C>2」(条件とする)が定義され
ている場合に、変数A,BおよびCの値を求める問
題。」
【0008】変数格納部1005には、変数名と個々の
変数の値域の定義とからなる変数情報が格納される。例
題1に関しては、{1 3 5}の値域を持つ変数A,
BおよびCの変数名(A,BおよびC)と値域の定義
({1 3 5})とが変数格納部1005に格納され
る。
【0009】条件格納部1004には、制約条件群が格
納される。例題1に関しては、上述の条件〜が条件
格納部1004に格納される。
【0010】状況スタック格納部1006には、状況ス
タックが格納される。状況スタックは、探索処理の過程
で探索ツリーをたどる際の分岐の状況を処理済みの変数
の履歴(探索履歴)として管理する。
【0011】条件検査部1007は、変数を入力として
受け取り、条件格納部1004に格納された制約条件群
(ここでは、条件〜)から入力変数(入力した変
数)に関係する制約条件群だけを選び出し、入力変数に
設定されている値がそれらの制約条件群を満足している
か否かを調べる。例題1に関して、変数Aに3が設定さ
れており他の変数(変数BおよびC)に値が設定されて
いない場合には、変数Aに関係する制約条件である条件
と条件とを取り出し、現時点の値設定状況で調べる
ことが可能な条件だけを検査する。この場合に、条件
は満足されているため、条件検査部1007は「制約
条件を満足している」と判定する。
【0012】変数毎探索処理部1003は、以下のよう
な処理を行う(以下に、変数毎探索処理部1003の詳
細な処理フローを図11の流れ図を用いて説明する)。
【0013】変数群への値設定の要求(探索処理の実行
の要求)が中央処理装置1001から制御部1002を
介して伝達されると、まず、終了条件判定ステップ11
01を起動する。終了条件判定ステップ1101では、
変数格納部1005に格納された全ての変数に値(制約
条件群を満足する値)が設定されているか否かを検査す
る。1回目の終了条件判定ステップ1101の起動時に
は、値が設定された変数が1つも存在していないので、
終了条件判定ステップ1101の検査結果は「失敗」と
なる。
【0014】なお、検査/判定における命題(終了条件
判定ステップ1101では「全ての変数に値が設定され
ている」という命題)に対する答が「偽」である場合に
は、当該検査/判定における検査/判定結果(以下、単
に検査結果という)が「失敗」であると表現する(同様
に、当該命題に対する答が「真」である場合には、当該
検査結果が「成功」であると表現する)。
【0015】終了条件判定ステップ1101の検査結果
が「失敗」である場合には、変数選択ステップ1102
を起動する。変数選択ステップ1102では、「変数格
納部1005に格納された変数であり、まだ値が設定さ
れていない変数」を、予め与えられる基準に従って選択
する。例えば「アルファベットの早い順に選択する」と
いう基準が与えられているならば、例題1に関しては最
初に変数Aを選択する。
【0016】次に、状況スタックプッシュステップ11
03を起動する。状況スタックプッシュステップ110
3では、直前の変数選択ステップ1102で選択した変
数を状況スタック格納部1006に格納された状況スタ
ックの一番上(最上部)に積む。例題1に関しては、1
回目の状況スタックプッシュステップ1103の起動時
には、空状態の状況スタックに変数Aを積む。
【0017】次に、変数初期値バインドステップ110
4を起動する。変数初期値バインドステップ1104で
は、直前の変数選択ステップ1102で選択した変数
に、予め与えられる基準に従って、初期値を与える。例
えば「値域の最小値を用いる」という基準が与えられて
いるならば、例題1に関しては、1回目の変数初期値バ
インドステップ1104の起動時には、変数Aの初期値
として1を設定する。
【0018】次に、状況スタック値書込みステップ11
05を起動する。状況スタック値書込みステップ110
5では、状況スタックの最上部に積まれた変数に付随す
る情報として変数の現在値を状況スタックに書き込む。
例題1に関しては、1回目の状況スタック値書込みステ
ップ1105の起動時には、状況スタックに積まれた変
数Aに付随する情報として1を格納する。
【0019】次に、制約検査ステップ1106を起動す
る。制約検査ステップ1106では、条件検査部100
7を用いて、制約条件群が満たされているか否かを検査
する。この時点では、変数Aに1が設定されており、他
の変数には値が設定されていない(条件検査部1007
の入力変数がAのみである場合に該当する)ので、変数
Aに関係する制約条件である条件と条件とが取り出
され、現時点の値設定状況で調べることが可能な条件
だけが検査され、条件は満たされているので、制約検
査ステップ1106の検査結果は「成功」となる。
【0020】制約検査ステップ1106の検査結果が
「成功」である場合には、終了条件判定ステップ110
1に戻って処理を続け、残りの変数への値の設定を行
う。
【0021】制約検査ステップ1106の検査結果が
「失敗」である場合には、値調整ステップ1107を起
動する。値調整ステップ1107では、予め与えられる
基準に従って、状況スタックの最上部に格納された変数
に設定されている値を変更する処理を行う(代替値の計
算を行う)。例題1に関して、「値域に指定された要素
(値)を左端から順に候補とする」という基準が与えら
れているならば、現在値が3であれば次には代替値とし
て5を計算(選択)する。
【0022】次に、値検査ステップ1108を起動す
る。値検査ステップ1108では、直前に起動された値
調整ステップ1107で代替値の計算が可能であったか
否かを検査する。例題1に関して、「値域に指定された
要素を左端から順に候補とする」という基準が与えられ
ており変数Bに5が設定されている状態で値調整ステッ
プ1107が起動された場合には、次に選択すべき値が
存在しないため、値検査ステップ1108の検査結果は
「失敗」となる。
【0023】値検査ステップ1108の検査結果が「成
功」である場合には、変数値設定ステップ1109を起
動する。変数値設定ステップ1109では、値調整ステ
ップ1107で新規に計算された値(代替値として選択
された値)を変数(状況スタックの最上部に格納された
変数)に設定する。例題1に対する探索処理において、
変数Aに設定されていた値の1の代替値として3を選択
したならば、変数Aに3を設定する。
【0024】変数値設定ステップ1109の処理が終了
すると、処理の流れを状況スタック値書込みステップ1
105に戻し、新しく設定された値を現在値として状況
スタック値書込みステップ1105以降の一連の処理を
行う。
【0025】値検査ステップ1108の検査結果が「失
敗」である場合には、変数値解除ステップ1110を起
動する。変数値解除ステップ1110では、変数(状況
スタックの最上部の変数)を値未設定の状態に戻す。例
題1に対する探索処理において、変数Aに1が設定され
ており変数Bに5が設定されていたとすると、変数Bに
5が設定されている状態で値調整ステップ1107を起
動した場合には、次に選択すべき値が存在しないため、
値検査ステップ1108の検査結果は「失敗」となり、
変数Bを値未設定の状態に戻す。
【0026】変数値解除ステップ1110の処理が終了
すると、次に状況スタックポップステップ1111を起
動する。状況スタックポップステップ1111では、状
況スタックの最上部に積まれた変数を削除する。この場
合(変数値解除ステップ1110で変数Bを未設定の状
態に戻した場合)には、変数Bを削除する。
【0027】状況スタックポップステップ1111の処
理が終了すると、次にスタック空検査ステップ1112
を起動する。スタック空検査ステップ1112では、状
況スタックが空か否かを検査する。なお、この検査時に
「状況スタックが空」ということは、どのような値設定
を行っても、制約条件群を満足するような値の設定を全
ての変数に対して行うことが不可能であることを示して
いる。
【0028】スタック空検査ステップ1112の検査結
果が「成功」である場合(状況スタックが空であった場
合)には、異常終了ステップ1113を起動する。異常
終了ステップ1113では、当該探索処理の異常終了の
旨を制御部1002を介して中央処理装置1001に返
却する。
【0029】スタック空検査ステップ1112の検査結
果が「失敗」である場合(状況スタックが空でない場
合)には、バックトラックが可能な探索ツリーの分岐点
がまだ残っているということなので、その分岐点の他の
枝の探索を行う。すなわち、値調整ステップ1107か
ら先の処理を繰り返す。例題1に対する探索処理の場
合、先に述べたように変数Bを状況スタックから削除し
た後でも、変数Aが状況スタックの中に残っているの
で、変数Aについてまだ試していない値群(3および
5)に関する探索を継続して行う。
【0030】終了条件判定ステップ1101の検査結果
が「成功」である場合(全変数に制約条件を違反しない
値が設定できた場合)には、正常終了ステップ1114
を起動する。正常終了ステップ1114では、当該探索
処理の正常終了の旨とその際の変数群の各変数名および
各値とを制御部1002を介して中央処理装置1001
に返却する。
【0031】図12は、例題1に対して従来の探索装置
を用いて探索処理を行う場合の探索ツリーの展開の概念
を示す図である。
【0032】1201行〜1210行に示すような順序
で探索が行われ、最終的に変数Aが1、変数Bが5、変
数Cが3という解(制約条件群を満たす値)にたどり着
く。すなわち、以下の〜に示す順序で探索が行われ
る。
【0033】 1201行で、変数Aに1が設定され
て、条件(「A<5」)が満たされる。
【0034】 1202行〜1204行で、変数Bに
対して{1 3 5}の値が試されるが、全ての値につ
いて条件(「A+B>7」)が満たされない。
【0035】 そこで、1205行で、変数Aにバッ
クトラックし、変数Aに3が設定される。
【0036】 1206行〜1208行で、変数Bに
対して{1 3 5}の値が試され、最後の値5におい
て条件が満たされる。
【0037】 次に、変数Cへの値の設定が行われ、
1209行〜1210行で、変数Cに対して{1 3}
の値が試され、値3で条件(「C>2」)が満たされ
て、この問題(例題1)の解が求められる。
【0038】図15は、例題1に対して従来の探索装置
を用いて探索処理を行う際の状況スタック格納部100
6内の状況スタックの推移の概念を示す図である。
【0039】「(1)変数Aの選択。(2)変数Aへの
1の代入。(3)変数Bの選択。(4)変数Bへの1の
代入。(5)変数Bの値の解除。(6)変数Bへの3の
代入。(7)変数Bの値の解除。(8)変数Bへの5の
代入。(9)変数Bの値の解除。(10)変数Bの選択
の解除(変数Bの削除)。(11)変数Aの値の解除。
(12)変数Aへの3の代入。(13)変数Bの選択。
(14)変数Bへの1の代入。(15)変数Bの値の解
除。(16)変数Bへの3の代入。(17)変数Bの値
の解除。(18)変数Bへの5の代入。(19)変数C
の選択。(20)変数Cへの1の代入。(21)変数C
の値の解除。(16)変数Cへの3の代入。」という一
連の流れで探索処理が行われるため、状況スタックの内
容は1500〜1522に示すように推移する。
【0040】初期状態では、1500に示すように、状
況スタックは空である。上述の(1)の処理が行われる
と、1501に示すように変数Aが状況スタックに格納
される。(2)の処理が行われると、1502に示すよ
うに変数Aに対する値の1が追加される。(3)の処理
が行われると、1503に示すように変数Bが状況スタ
ックの一番上に積まれる。以下同様にして、対象問題
(例題1)に対する解が求められた状態である1522
に至るまで処理が継続される。
【0041】以上の説明で明らかなように、従来の探索
装置では、変数に設定した値が制約違反(制約条件を満
足しないこと)を起こした場合に次にどのような値を変
数に設定してみるかという方針や、次にどの変数にバッ
クトラックするかという方針等は、予め与えておく基準
によって定められており、対象問題毎に柔軟に、また変
数毎に動的に変更することができなかった。
【0042】
【発明が解決しようとする課題】上述した従来の探索装
置では、探索に関する各種の方針は予め与えておく基準
によって定められており、対象問題の内容に応じて柔軟
に変更することはできなかった。しかし、対象問題の性
質によっては、次候補生成の方針等をその対象問題の内
容に適合するように変更できるならば高速に良い解にた
どり着ける。
【0043】ここで、別の対象問題として以下の例題2
を考える。
【0044】例題2:「1から1000までの自然数を
値域に持つ変数AおよびBを扱い、制約条件群として
「B<501」(条件とする)および「A+B>14
99」(条件とする)が与えられた場合に、変数Aお
よびBの値を求める問題。」
【0045】なお、本探索装置において、次にどの変数
にバックトラックするかを指定する変数選択方針として
「アルファベット順」という方針が予め定められてお
り、変数に設定した値が制約違反を起こした時に次にど
のような値を設定してみるかを指定する代替値計算方針
として「値域の最小の側からの順」という方針が予め定
められていたとする。
【0046】この場合には、A=1000およびB=5
00という解にたどり着くが、探索処理の過程で多量の
バックトラックが必要となる。
【0047】実際の問題を扱う場合には、対象問題にお
ける変数に対する予備知識として、「変数Aは大きい」
や「変数Bは100の倍数である」等の付加情報がある
場合が多い。付加情報を利用して変数毎の代替値計算方
針や変数選択方針等を柔軟に変更することができれば、
高速に解にたどり着くことができると思われる。
【0048】すなわち、上記の例題2において、上記の
付加情報に基づいて、「変数Aの場合は初期値から1ず
つ値を変更し、変数Bの場合は初期値から100ずつ変
更する」や「変数Aは最大値から値を減少させ、変数B
は最小値から値を増加させていく」という変数毎に異な
る代替値計算方針を採用するならば、高速に解にたどり
着くような探索処理の実現が可能となる。
【0049】また、値域が上限値と下限値とで与えられ
るような連続の値域を持つ変数や離散値の無限集合で与
えられる変数等の異なる定義の値域を持つ変数が混在す
る変数群を持つ問題に対する探索の場合には、探索に関
する代替値計算方針は変数毎に動的に変更することが望
ましい。例えば、製造業の工場で製品の生産のために必
要となる各作業の設備利用開始時刻を決める生産スケジ
ューリング問題に対する探索処理の場合には、ある設備
に対する変数では1日に1種類の製品しか処理できない
ために1日単位で値を変更すれば良いのに対して、別の
設備に対する変数では1時間単位で作業を入れ換えられ
るために1時間単位で値を変更する必要が生じる。
【0050】さらに、上述の生産スケジューリング問題
等においては、作業の全体の流れのボトルネックと予想
される設備を利用する作業に関連する変数への値の設定
は、「ボトルネックと予想される設備を利用する」とい
う当該変数の属性を考慮して、探索処理の早い段階で行
った方が探索処理の効率が良くなる。
【0051】以上のように、探索処理においては、対象
問題の内容を考慮して、また対象問題における変数の各
種の属性を考慮して、探索に関する各種の方針を柔軟か
つ動的に決定することが望ましいと考えられる。しかし
ながら、従来の探索装置では、そのような考慮がなされ
ていなかった。
【0052】本発明の目的は、上述の点に鑑み、対象問
題の内容に応じて予め(探索処理に先立って)定義でき
る3種類の関数(値設定関数,設定点追加関数および設
定点選択関数)を設け、「変数名」および「現在値」以
外の属性を持ちうる設定点というデータ構造(従来の探
索装置における変数のデータ構造は「変数名」および
「現在値」という属性のみを持つデータ構造であるとい
える)を導入することにより、探索に関する各種の方針
を、対象問題の内容に応じて柔軟に変更でき、変数の種
類に応じて動的に変更することができる探索装置を提供
することにある。これにより、対象問題に対する解を許
容時間以内に導くことができるシステム(探索装置を含
むシステム)を構築することができる。
【0053】
【課題を解決するための手段】本発明の探索装置は、異
なる定義の値域を持つ変数が混在しうる変数群を持つ対
象問題に対する探索処理を行い、与えられた制約条件群
を満足するように変数の値の設定を行う探索装置におい
て、「変数名」と「現在値」とを属性として含むデータ
構造であり、探索ツリーの分岐点の候補を表すデータ構
造であり、「変数名」および「現在値」以外の属性群と
して対象問題に適合する属性群を有するデータ構造であ
る設定点の集合である設定点リストを格納する設定点格
納部と、設定点を入力として受け取り入力設定点の属性
値を基に入力設定点に係る変数に対して次に試すべき値
を計算する関数である値設定関数,前記設定点格納部内
の設定点リストから次に処理べき設定点を選択する関数
である設定点選択関数,および設定点を入力として受け
取り入力設定点が表す探索ツリーの分岐点より一段先の
分岐点の候補群を求めて当該候補群である設定点群を返
却する関数である設定点追加関数の3種類の関数であ
り、対象問題の内容に適合するように予め定義されてい
る関数群を格納する関数格納部と、対象問題における制
約条件群を格納する条件格納部と、対象問題における変
数を格納する変数格納部と、探索ツリーを探索する際の
分岐の状況を「処理した設定点の履歴」として管理する
状況スタック格納部と、変数を入力として受け取り、前
記条件格納部に格納された制約条件群から入力変数に関
係する制約条件群を選択し、選択した制約条件群を入力
変数に設定されている値が満足しているか否か検査する
条件検査部と、前記状況スタック格納部内の状況スタッ
クへの設定点の設定および削除を行って探索処理を進
め、探索に関する各種の方針を前記関数格納部内の関数
群および設定点内の各属性値に基づいて決定し、前記条
件格納部内の制約条件群に関する検査を前記条件検査部
を用いて行い、前記変数格納部に格納されている変数へ
の制約条件群を満足する値の設定を試みる探索処理を行
う設定点毎探索処理部とを有する。
【0054】また、本発明の探索装置は、上述の探索装
置に対して、前記関数格納部内の設定点追加関数によっ
て設定点が追加される際の依存元の設定点および依存先
の設定点を示す情報を含む依存情報を格納する依存情報
格納部を加え、前記設定点毎探索処理部により行われる
全ての処理を行うとともに以下のおよびに示すよう
な依存情報に関する処理を行う第2設定点毎探索処理部
を前記設定点毎探索処理部の代わりに設けることによっ
ても実現できる。 前記関数格納部内の設定点追加関数によって設定点
が追加される際に前記依存情報格納部への依存情報の設
定を行う。 バックトラックを行う際に前記依存情報格納部内の
依存情報に基づいて当該バックトラックを行う。
【0055】
【作用】本発明の探索装置では、異なる定義の値域を持
つ変数が混在しうる変数群を持つ対象問題に対する探索
処理を行い与えられた制約条件群を満足するように変数
の値の設定を行う探索装置において、設定点格納部が設
定点(「変数名」と「現在値」とを属性として含むデー
タ構造であり、探索ツリーの分岐点の候補を表すデータ
構造であり、「変数名」および「現在値」以外の属性群
として対象問題に適合する属性群を有するデータ構造)
の集合である設定点リストを格納し、関数格納部が値設
定関数(設定点を入力として受け取り入力設定点の属性
値を基に入力設定点に係る変数に対して次に試すべき値
を計算する関数),設定点選択関数(設定点格納部内の
設定点リストから次に処理べき設定点を選択する関数)
および設定点追加関数(設定点を入力として受け取り入
力設定点が表す探索ツリーの分岐点より一段先の分岐点
の候補群を求めて当該候補群である設定点群を返却する
関数)の3種類の関数であって対象問題の内容に適合す
るように予め定義されている関数群を格納し、条件格納
部が対象問題における制約条件群を格納し、変数格納部
が対象問題における変数を格納し、状況スタック格納部
が探索ツリーを探索する際の分岐の状況を「処理した設
定点の履歴」として管理し、条件検査部が変数を入力と
して受け取り条件格納部に格納された制約条件群から入
力変数に関係する制約条件群を選択し当該制約条件群を
入力変数に設定されている値が満足しているか否か検査
し、設定点毎探索処理部が以下の〜の処理によって
変数格納部に格納されている変数への制約条件群を満足
する値の設定を試みる探索処理を行う。 状況スタック格納部内の状況スタックへの設定点の
設定および削除を行って探索処理を進める。 探索に関する各種の方針を関数格納部内の関数群お
よび設定点内の各属性値に基づいて決定する。 条件格納部内の制約条件群に関する検査を条件検査
部を用いて行う。
【0056】また、本発明の探索装置では、上述の探索
装置において、関数格納部内の設定点追加関数によって
設定点が追加される際の依存元の設定点および依存先の
設定点を示す情報を含む依存情報を格納する依存情報格
納部が設けられ、第2設定点毎探索処理部が設定点毎探
索処理部の処理の代わりに次の〜に示すような処理
を行うことも可能である。 設定点毎探索処理部により行われる全ての処理を行
う。 関数格納部内の設定点追加関数によって設定点が追
加される際に依存情報格納部への依存情報の設定を行
う。 バックトラックを行う際に依存情報格納部内の依存
情報に基づいて当該バックトラックを行う。
【0057】
【実施例】次に、本発明について図面を参照して詳細に
説明する。
【0058】図1は、本発明の探索装置の第1の実施例
(請求項1記載の発明に対応する実施例)の構成を示す
ブロック図である。
【0059】本実施例の探索装置は、設定点毎探索処理
部3と、条件格納部4と、変数格納部5と、状況スタッ
ク格納部6と、関数格納部7と、設定点格納部8と、条
件検査部9とを含んで構成されている。なお、本実施例
の探索装置は、制御部2を介して、中央処理装置1と接
続されている。
【0060】本実施例の探索装置は、従来の探索装置
(図10参照)になかった関数格納部7と設定点格納部
8とを付加したことと、従来の探索装置の変数毎探索処
理部1003に代えて設定点毎探索処理部3を設けたこ
ととを特徴とする。
【0061】図2は、設定点格納部8に格納される設定
点のデータ構造の一例を示す図である。
【0062】図3(a)〜(c)は、関数格納部7に格
納される値設定関数,設定点選択関数および設定点追加
関数の記述例を示す図である。
【0063】図4は、設定点毎探索処理部3の詳細な処
理フローを示す流れ図である。この処理は、設定点初期
入力ステップ401と、終了条件判定ステップ402
と、設定点選択ステップ403と、状況スタックプッシ
ュステップ404と、変数初期値バインドステップ40
5と、状況スタック値書込みステップ406と、制約検
査ステップ407と、設定点追加ステップ408と、変
数検査ステップ409と、値調整ステップ410と、値
検査ステップ411と、変数値設定ステップ412と、
変数値解除ステップ413と、状況スタックポップステ
ップ414と、スタック空検査ステップ415と、第2
異常終了ステップ416と、終了検査ステップ417
と、正常終了ステップ418と、第1異常終了ステップ
419とからなる。
【0064】図5,図6,図13および図16は、本実
施例の探索装置の動作を説明するための図である。
【0065】次に、このように構成された本実施例の探
索装置の動作について説明する。ここでは、探索対象の
問題(対象問題)として、製造業の工場で製品の生産の
ために必要となる各作業の設備利用開始時刻を決める生
産スケジューリング問題の1つである以下の例題3が与
えられた場合を考える。
【0066】例題3:「9:00(9時0分を意味す
る。以下同様)から18:00までの間の時刻が値域で
ある変数AおよびGがあり、変数Aは作業1を設備1で
行う際の作業開始時刻とし、変数Gは作業2を設備2で
行う際の作業開始時刻とする場合に、変数AおよびGの
値を求める問題。なお、制約条件群として次の〜の
条件が定義されているものとする。」 設備1は毎時ちょうど(毎時0分)からしか利用を
開始することができない。 設備2は10分間隔で作業を開始できる。 作業2は作業1が終了してから30分以上、50分
以内に開始しなければならない(しかし、なるべく、作
業1との時間間隔をあけた方が望ましい)。 12:00から13:00までの間(昼休みの間)
は、設備(設備1および2)は停止する。したがって、
昼休みにかかってしまうように作業(作業1および2)
をスケジュールしてはならない。 作業1は3時間を要し、作業2は1時間20分を要
する。 作業は9:00から18:00までの間に行う(設
備の稼働可能時間は9:00から18:00までの間で
ある)。
【0067】変数格納部5には、値として時刻が設定可
能な変数AおよびG(例題3における変数)が格納され
る。
【0068】条件格納部4には、上述の制約条件群が格
納される。
【0069】設定点格納部8には、設定点の集合である
設定点リストが格納される。設定点は、「変数名」と
「現在値」とを属性として含むデータ構造であり、探索
ツリーの分岐点の候補を表すデータ構造であり、「変数
名」および「現在値」以外の属性群として対象問題に適
合する属性群を有するデータ構造である。
【0070】ここでは、例えば、図2に示すようなデー
タ構造の設定点が取り扱われる。
【0071】図2中の201行は、属性「変数名」の定
義であり、当該設定点に係る変数の変数名を格納する。
図2の設定点の場合には、変数名「A」が設定されてい
る。
【0072】202行は、属性「初期値」の定義であ
り、当該変数への初期値を格納する。この場合には、時
刻「9:00」が設定されている。
【0073】203行は、属性「探索有無」の定義であ
り、探索において当該変数の値が変更可能か否かを指定
する。この場合には、「有」、すなわち他の値に変更し
て探索を試みることが可能である旨が指定されている。
【0074】204行は、属性「探索方針」の定義であ
り、属性「探索有無」において「有」と指定された場合
の探索方針を指定する。この場合には、「→」(この矢
印の示す探索方針の内容については後述する)が指定さ
れている。
【0075】205行は、属性「変更可能域」の定義で
あり、当該変数の値の有効範囲を指定する。この場合に
は、「[9:00..18:00](9:00から1
8:00まで)」が設定されている。
【0076】206行は、属性「値設定関数名」の定義
であり、当該変数の値(現在値)の代替値を計算する関
数(値設定関数)の関数名を格納する。この場合には、
関数名「settei−func1」が設定されてい
る。
【0077】207行は、属性「現在値」の定義であ
り、設定点毎探索処理部3の処理における途中の演算結
果(現在の値)を格納する。この場合には、まだ値が未
設定である。
【0078】なお、設定点のデータ構造は、図2中の2
01行〜207行に示すような7つの属性(「変数
名」,「初期値」,「探索有無」,「探索方針」,「変
更可能域」,「値設定関数名」および「現在値」)から
なるデータ構造に限定されるものではない。属性「変数
名」および属性「現在値」以外の属性としては、例え
ば、変数初期値バインドステップ405,変数検査ステ
ップ409,値調整ステップ410および値検査ステッ
プ411の処理内容と、値設定関数,設定点選択関数お
よび設定点追加関数の構成とに応じて、必要な任意の属
性の定義を追加することが可能である。
【0079】関数格納部7には、対象問題に適合するよ
うに予め(当該対象問題に対する探索処理に先立って)
定義されている3種類の関数(値設定関数,設定点選択
関数および設定点追加関数)が格納される。ここでは、
例えば、図3(a)〜(c)に示すような記述(この記
述はLispによるものである)を有する関数が格納さ
れているものとする。
【0080】図3(a)中の301行〜309行は、値
設定関数の記述例である。
【0081】値設定関数は、設定点を入力として受け取
り、入力設定点(入力した設定点)の属性値を基に入力
設定点に係る変数に対して次に試すべき値を計算する関
数である。
【0082】301行では、関数名としてsettei
−func1が定義され、入力として設定点sette
i−dat1が与えられている。
【0083】302行〜304行では、設定点sett
ei−dat1の属性「変数名」の頭文字に従って時間
刻みが決定されており、頭文字がAからFの場合には時
間刻みが1時間(60分)とされ、頭文字がGからZの
場合には時間刻みが10分とされる。
【0084】305行〜308行では、設定点sett
ei−dat1の属性「探索方針」に定義されている探
索方針が「→」の場合には当該設定点の属性「現在値」
に設定されている値が時間刻み分だけ増加され、探索方
針が「←」の場合にはその値が時間刻み分だけ減少さ
れ、その計算結果が返却される。
【0085】309行では、設定点settei−da
t1の属性「探索方針」に「←」および「→」以外が格
納されていた場合の計算が行われる。この場合には、代
替値を計算できないため、FALSEが返却される。
【0086】例題3に対する探索において、「変数名:
A,初期値:9:00,探索有無:有,探索方針:→,
変更可能域:[9:00..18:00],値設定関数
名:settei−func1,および現在値:9:0
0」という7つの属性値を持った設定点が入力として与
えられたならば、関数settei−func1(関数
名がsettei−func1の関数。以下同様の表記
方法を用いる)は10:00という時刻を返却する。
【0087】値設定関数は、図3(a)に示すような時
刻計算を行う関数のみに限定されるものではなく、入力
として設定点を与えられて、出力として代替値または
「計算が不可能であった旨を示す情報(例えば、FAL
SE)」を返却する関数であればどのような内容であっ
てもよい。
【0088】例えば、関数settei−func1で
は、設定点に属性「探索方針」が定義され、その属性に
格納された矢印の方向(「←」および「→」の別)によ
って時間刻みの増減の方向が決定されているが、設定点
に属性「変数名」および「現在値」以外の属性を追加せ
ずに時間刻みの増減の方向および刻み値を固定とするよ
うな定義や、設定点以外の情報に基づいて増減の方向お
よび刻み値を判断するような定義を持っていてもよい。
【0089】図3(b)中の310行〜311行は、設
定点選択関数の記述例である。
【0090】設定点選択関数は、設定点格納部8内の設
定点リストから次に処理すべき設定点(ここでは、先頭
にある設定点)を選択する関数である。
【0091】310行では、関数名としてsentak
u−func1が定義され、入力として設定点リストs
ettei−list1が与えられる。
【0092】311行では、その設定点リストの先頭要
素(先頭の設定点)が選択され返却される。
【0093】図3(b)に示す設定点選択関数では、設
定点格納部8に格納される設定点リストに対して、ラス
トイン・ファーストアウトの動作が実現される。ラスト
イン・ファーストアウトとは、最後に追加された要素が
最初に取り出されるようなリストの処理順序手法であ
る。
【0094】設定点選択関数は、図3(b)に示すよう
な単純な処理を行う関数に限定されるものではなく、入
力として設定点リストを与えられて、出力として当該設
定点リストの1要素(1つの設定点)または「選択可能
な設定点が存在しなかった場合にその旨を示す情報(例
えば、FALSE)」を返却する関数であればどのよう
な内容であってもよい。
【0095】図3(c)中の312行〜332行は、設
定点追加関数の記述例である。
【0096】設定点追加関数は、設定点を入力として受
け取り、入力設定点が表す探索ツリーの分岐点より一段
先の分岐点の候補群を求めて当該候補群である設定点群
を返却する関数である。
【0097】312行では、関数名としてadd−fu
nc1が定義され、入力として設定点settei1が
与えられる。
【0098】313行では、設定点settei1の属
性「変数名」の値を引数として次の変数を選択する関数
get−next−symbolが起動され、変数名が
求められ、その変数名がnext−symbolという
変数に束縛される。関数get−next−symbo
lは、例題3に対する探索においては、変数格納部5に
格納された変数群からアルファベット順に変数名を抽出
して、最後の変数に達した場合にはNIL(偽)を返却
する関数である。
【0099】314行〜331行は、next−sym
bolに束縛された値がNIL以外であった場合に動作
する。
【0100】315行では、関数generate−n
ew−settei−tenが用いられて新しい設定点
が生成され、その設定点が変数new−setteiに
束縛される。
【0101】316行では、設定点new−sette
iの属性「変数名」に、313行においてnext−s
ymbolに束縛された値が格納される。
【0102】317行〜319行では、設定点new−
setteiの属性「変更可能域」に、本設定点追加関
数への入力設定点であるsettei1の属性「現在
値」の値(時刻)を基にして、作業と作業との間であけ
なければならない時間間隔を指定した値が格納される。
【0103】320行では、設定点new−sette
iの属性「値設定関数名」に、関数名settti−f
unc1が格納される。
【0104】321行〜322行では、設定点new−
setteiの属性「初期値」に、本設定点追加関数へ
の入力設定点であるsettei1の属性「現在値」の
値(時刻)を基にして、作業と作業との間であけなけれ
ばならない時間間隔を指定した値が格納される。
【0105】323行〜328行は、next−sym
bolに束縛された変数名の頭文字がA〜Nの間であっ
た場合に動作する。
【0106】324行では、設定点new−sette
iの属性「探索有無」に「有」が格納される。
【0107】325行〜326行は、next−sym
bolに束縛された変数名の頭文字がA〜Fの間であっ
た場合に動作する。
【0108】326行では、設定点new−sette
iの属性「探索方針」に「→」が格納される。
【0109】327行〜328行は、next−sym
bolに束縛された変数名の頭文字がG〜Nの間であっ
た場合に動作する。
【0110】328行では、設定点new−sette
iの属性「探索方針」に「←」が格納される。
【0111】329行〜330行は、next−sym
bolに束縛された変数名の頭文字がO〜Zの間であっ
た場合に動作する。
【0112】330行では、設定点new−sette
iの属性「探索有無」に「無」が格納される。
【0113】331行では、設定点new−sette
iを要素とする設定点リストが返却される。
【0114】332行は、変数next−symbol
に格納された値がNILであった場合に動作し、FAL
SEを返却する。
【0115】例題3に対する探索において、「変数名:
A,初期値:9:00,探索有無:有,探索方針:→,
変更可能域:[9:00..18:00],値設定関数
名:settei−func1,および現在値:9:0
0」という7つの属性値を持った設定点が入力として与
えられたならば、関数add−func1は「変数名:
G,初期値:12:50,探索有無:有,探索方針:
←,変更可能域:[12:30..12:50],値設
定関数名:settei−func1,および現在値:
−」という7つの属性値を持った設定点を要素として持
つ設定点リストを返却する。
【0116】設定点追加関数は、図3(c)に示すよう
な時刻処理を行う関数に限定されるものではなく、入力
として設定点を与えられて、出力として新規設定点を要
素とする設定点リストまたは「新規設定点が生成不可能
な場合にその旨を示す情報(例えば、FALSE)」を
返却する関数であればどのような内容であってもよい。
【0117】例えば、関数add−func1には、変
数群からアルファベット順に変数名を抽出して次の変数
名を決める動作が含まれているが、予め定められる他の
優先順位に従って変数名を選択するような動作が含まれ
ていてもよい。また、関数add−func1では、属
性「変数名」および「現在値」以外の属性群が定義され
ているが、これらの属性群は例題3における変数初期値
バインドステップ405,変数検査ステップ409,値
調整ステップ410および値検査ステップ411の処理
内容と値設定関数,設定点選択関数および設定点追加関
数の構成とに応じて必要な属性が追加定義されたもので
あり、これらの属性群に限定されるものではない。さら
に、入力設定点以外の情報として、例えばすでに処理し
た設定点群の履歴情報等を用いて計算することも可能で
ある。
【0118】設定点毎探索処理部3は、以上のような条
件格納部4,変数格納部5,関数格納部7および設定点
格納部8の存在(探索ツリーを探索する際の分岐の状況
を「処理した設定点の履歴」として管理するために状況
スタックを格納する状況スタック格納部6の存在も含
む)を前提として、条件検査部9を用いて、以下に示す
ような処理を行う(図4参照)。なお、以下の説明にお
いて、「変数の値の設定」とは、当該変数に係る設定点
の属性「現在値」への値の設定を意味する(後述する第
2の実施例に関する説明においても同様)。
【0119】まず、設定点初期入力ステップ401を起
動する。設定点初期入力ステップ401では、中央処理
装置1から制御部2を介して入力される設定点群を設定
点格納部8に格納する。例えば、例題3に対する探索の
過程で、図2に示すような設定点を入力する。
【0120】次に、終了条件判定ステップ402を起動
する。終了条件判定ステップ402では、全ての設定点
の処理が終了したか否かを調べる。処理済みの設定点は
必ず状況スタック格納部6内の状況スタック上に積まれ
ているため、変数格納部5に格納された変数群に係る設
定点群が全て状況スタックに積まれているならば、全て
の設定点の処理は終了しているといえる。したがって、
終了条件判定ステップ402では、状況スタック格納部
6内の状況スタックに変数格納部5に格納された変数群
に係る設定点群が全て積まれているか否かによって終了
条件判定を行っている。例えば、1回目の終了条件判定
ステップ402の起動時には、状況スタックに1つも設
定点が積まれていないので、終了条件は満たされずに処
理を継続する(終了条件判定ステップ402の検査結果
が「失敗」となる)。
【0121】次に、設定点選択ステップ403を起動す
る。設定点選択ステップ403では、関数格納部7に格
納された設定点選択関数を起動して、設定点格納部8に
格納された設定点リストから1つの設定点を選択する。
例題3に関する1回目の設定点選択ステップ403の起
動時には、変数Aに係る設定点を選択する。この設定点
を、仮に「設定点1」と呼ぶものとする。
【0122】次に、状況スタックプッシュステップ40
4を起動する。状況スタックプッシュステップ404で
は、直前の設定点選択ステップ403で選択した設定点
を状況スタック格納部6内の状況スタックに積む。
【0123】図5に、この時点(状況スタックプッシュ
ステップ404の1回目の起動時)における、状況スタ
ックプッシュステップ404の動作前の状況スタック
(状況スタック501)の状態と状況スタックプッシュ
ステップ404の動作後の状況スタック(状況スタック
502)の状態とを示す。
【0124】状況スタック501には、まだ、設定点が
1つも格納されていない。
【0125】状況スタック502には、設定点1が格納
されている。なお、続けて、別の設定点(設定点2とす
る)が状況スタックプッシュステップ404で処理され
た場合には、設定点1の上に設定点2が積まれる。
【0126】次に、変数初期値バインドステップ405
を起動する。変数初期値バインドステップ405では、
直前の設定点選択ステップ403で選択した設定点に係
る変数に対する初期値を求める。
【0127】例題3に対する探索においては、設定点に
は属性「初期値」が定義されており、設定点が生成され
る時点で属性「初期値」に値が与えられている。したが
って、設定点1に係る変数の値(設定点1内の属性「現
在値」)に対して、設定点内で定義された初期値(属性
「初期値」の値)を与える。例えば、図2に示すような
設定点に関しては、変数Aの値として初期値「9:0
0」が求められることになる。
【0128】変数初期値バインドステップ405の処理
内容としては、上述の「設定点の属性「初期値」を利用
する」という処理内容に限定されるものではなく、以下
の〜等に示すようなバリエーションが考えられる。 中央処理装置1を介して初期値を計算する。 設定点以外のデータに基づいて初期値を計算する。 固定の初期値を持つ。
【0129】次に、状況スタック値書込みステップ40
6を起動する。状況スタック値書込みステップ406で
は、状況スタック格納部6内の状況スタック中の最上部
の設定点の属性「現在値」に値をセットする(直前の変
数初期値バインドステップ405または変数値設定ステ
ップ412(後述参照)で求めた値をセットする)。
【0130】図6に、この時点(状況スタック値書込み
ステップ406の1回目の起動時)における、状況スタ
ック値書込みステップ406の動作前の状況スタック
(状況スタック601)の状態と状況スタック値書込み
ステップ406の動作後の状況スタック(状況スタック
602)の状態とを示す。
【0131】状況スタック601においては、設定点1
の属性「現在値」は未設定である。
【0132】状況スタック602においては、設定点1
の属性「現在値」に値「9:00」が格納されている。
再度、状況スタック値書込みステップ406が起動され
て設定点1が処理される場合には、属性「現在値」の値
が再び書き換えられる(この場合には、変数値設定ステ
ップ412で求められた値が書き込まれることにな
る)。
【0133】次に、制約検査ステップ407を起動す
る。制約検査ステップ407では、条件検査部9を用い
て、条件格納部4に格納された制約条件群の中で、今回
値を設定した変数(直前の変数初期値バインドステップ
405または後述する変数値設定ステップ412で値
(当該変数に係る設定点内の属性「現在値」の値)を設
定した変数)に関係する制約条件群のチェックを行う。
ここで、チェックした制約条件群が全て満たされている
場合、あるいは値が設定されていない変数が関係するた
めに制約条件をチェックできない場合には、制約検査ス
テップ407の検査結果は「成功」となる。なお、条件
検査部9は、変数を入力として受け取り、条件格納部に
格納された制約条件群から入力変数に関係する制約条件
群を選択し、選択した制約条件群を入力変数に設定され
ている値(入力変数に係る設定点の属性「現在値」の
値)が満足しているか否かを検査する処理を行う。
【0134】制約検査ステップ407の検査結果が「成
功」である場合には、設定点追加ステップ408を起動
する。設定点追加ステップ408では、関数格納部7に
格納された設定点追加関数を用いて、直前に値が設定さ
れた変数(その変数に係る設定点)を基に次の設定点を
生成する。例題3に対する探索において、図3(c)の
設定点追加関数を用いた場合を考えるならば、変数Aに
係る設定点に基づいて変数Gに係る設定点が追加され
る。
【0135】制約検査ステップ407の検査結果が「失
敗」である場合、すなわち違反する制約条件が見つかっ
た場合には、変数検査ステップ409を起動する。変数
検査ステップ409では、その制約違反に関する変数に
おけるバックトラックが可能か否かを検査する。
【0136】例題3に関しては、設定点の属性「探索有
無」に「無」と設定されていた場合には、この設定点に
係る変数では他の値をとることができないためにバック
トラックができず、変数検査ステップ409の検査結果
は「失敗」となる。
【0137】変数検査ステップ409の処理内容は、上
述の「設定点の属性「探索有無」を利用する」という処
理内容に限定されるものではなく、予めバックトラック
ができない変数群を示す情報を格納しておいてその情報
に基づいてバックトラックの可否を判断する手法等のバ
リエーションが考えられる。
【0138】変数検査ステップ409の検査結果が「失
敗」である場合には、変数値解除ステップ413および
状況スタックポップステップ414を順次起動する。変
数値解除ステップ413では当該変数の値を解除し、状
況スタックポップステップ414では状況スタックから
当該変数に係る設定点を取り除く(削除する)。
【0139】状況スタックポップステップ414の処理
が終了したならば、スタック空検査ステップ415を起
動する。スタック空検査ステップ415では、状況スタ
ックが空であるか否かの検査を行う。
【0140】スタック空検査ステップ415の検査結果
が「失敗」、すなわち状況スタックが空でなかった場合
には、処理を続行する(変数検査ステップ409に戻
る)。
【0141】スタック空検査ステップ415の検査結果
が「成功」、すなわち状況スタックが空であった場合に
は、第2異常終了ステップ416を起動する。第2異常
終了ステップ416では、設定点追加関数に問題があっ
た、あるいは設定点初期入力ステップ401で入力した
初期入力の設定点群に問題があったとして異常終了し、
制御部2を介して中央処理装置1にその旨を報告する。
【0142】変数検査ステップ409の検査結果が「成
功」である場合には、値調整ステップ410を起動す
る。値調整ステップ410では、関数格納部7に格納さ
れた値設定関数を起動し、状況スタックの最上部に格納
された設定点に係る変数に対する代替値の計算を行う。
【0143】例題3に対する探索においては、当該設定
点の属性「値設定関数名」に従って、状況スタックの最
上部に格納された変数に対する代替値の計算を行う。例
えば、それまでの変数Aの値が9:00であれば、次の
代替値として10:00を選択(計算)する。
【0144】値調整ステップ410において代替値を得
る手法(処理内容)としては、上述の「設定点の属性
「値設定関数名」を利用する」という処理内容に限定さ
れるものではなく、以下のおよび等のバリエーショ
ンが考えられる。 値設定関数を直接与え、その値設定関数によって代
替値の計算を行う。 設定点の属性「変数名」に基づいてその変数の代替
値を計算する。
【0145】値調整ステップ410の処理が終了する
と、値検査ステップ411を起動する。値検査ステップ
411では、直前の値調整ステップ410で得られた代
替値が変数に設定する値として適当であるか否かを検査
する。適当である場合には値検査ステップ411の検査
結果は「成功」となり、不適当である場合には検査結果
は「失敗」となる。
【0146】例題3に対する探索においては、直前に起
動された値調整ステップ410で計算された代替値が当
該設定点の属性「変更可能域」に含まれる範囲の値であ
るならば値検査ステップ411の検査結果は「成功」と
なり、そうでないならば当該検査結果は「失敗」とな
る。例えば、変数Gの値に12:30が設定されている
状態で値調整ステップ410が起動されて代替値として
12:20が求められた場合には、12:20は「変更
可能域」における範囲外になってしまい、値検査ステッ
プ411の検査結果は「失敗」となる。
【0147】値検査ステップ411の処理内容は、上述
の「設定点の属性「変更可能域」を利用する」という処
理内容に限定されるものではなく、以下のおよび等
のバリエーションが考えられる。 値として有効(適当)な範囲を直接格納しておいて
その情報に基づいて検査する。 過去に試した全ての値を設定点の中に保存していお
いて、その情報に基づいて値の検査を行う。
【0148】値検査ステップ411の検査結果が「成
功」である場合には、変数値設定ステップ412を起動
する。変数値設定ステップ412では、値調整ステップ
410で新規に計算した値(代替値)を当該変数の値
(当該変数に係る設定点内の属性「現在値」の値)に設
定する。例えば、値調整ステップ410で変数Aに設定
されていた値9:00の代替値として10:00を計算
したならば、変数値設定ステップ412で変数Aの新た
な値として10:00を設定する。なお、この値を状況
スタック内の変数Aに係る設定点の属性「現在値」に書
き込むのは、状況スタック値書込みステップ406にお
いてである。
【0149】変数値設定ステップ412の処理が終了し
たならば、次に状況スタック値書込みステップ406に
戻り、新しく設定された値に関して状況スタック値書込
みステップ406から先の一連の処理を行う。
【0150】値検査ステップ411の検査結果が「失
敗」である場合には、変数検査ステップ409の検査結
果が「失敗」である場合と同様の流れで処理を行う。
【0151】なお、終了条件判定ステップ402の検査
結果が「成功」である場合には、終了検査ステップ41
7を起動する。終了検査ステップ417では、変数格納
部5に格納された全ての変数群に値(制約条件群を満た
す値)が設定されているか否かを検査する。
【0152】終了検査ステップ417の検査結果が「成
功」である場合には、正常終了ステップ418を起動す
る。正常終了ステップ418では、対象問題(ここで
は、例題3)に対する探索処理の正常終了と各変数の解
(変数格納部5に格納された全ての変数群の値)とを、
制御部2を介して中央処理装置1に返却する。
【0153】終了検査ステップ417の検査結果が「失
敗」である場合には、第1異常終了ステップ419を起
動する。第1異常終了ステップ419では、対象問題に
対する探索処理の異常終了を、制御部2を介して中央処
理装置1に返却する。
【0154】図13は、例題3に対して本実施例の探索
装置を用いて探索処理を行う場合の探索ツリーの展開の
概念を示す図である。
【0155】本実施例の探索装置では、例題3に対し
て、図13の1301行〜1310行に示すような順序
で探索が行われ、最終的に変数Aが13:00、変数G
が16:40という解にたどり着く。すなわち、以下の
〜に示す順序で探索が行われる。
【0156】 1301行で、変数Aの値(変数Aに
係る設定点の属性「現在値」の値)に9:00が設定さ
れる。
【0157】 1302行〜1304行で、変数Gの
値(変数Gに係る設定点の属性「現在値」の値)として
{12:50 12:40 12:30}の各値が試さ
れるが、全て条件「12:00から13:00までの
間は設備が停止する」を違反する。
【0158】 そこで、1305行で、変数Aにバッ
クトラックし、変数Aの値に10:00が設定される
が、条件を違反する。
【0159】 同様に、1306行〜1307行で、
変数Aの値に11:00および12:00が設定される
が、両方ともに条件を違反する。
【0160】 そこで、1308行で、変数Aの値に
13:00が設定される。
【0161】 次に、変数Gへの値の設定が行われ、
1309行〜1310行で変数Gの値として{16:5
0 16:40}の各値が試され、値16:50では条
件「設備の稼働可能時間は9:00から18:00ま
での間である」を違反し、値16:40で条件が満た
され、この問題(例題3)の解が求められる。
【0162】図16は、例題3に対して本実施例の探索
装置を用いて探索処理を行う際の状況スタックの推移の
概念を示す図である。
【0163】「(1)設定点1の選択、変数Aの値(変
数Aに係る設定点の属性「現在値」の値)への9:00
の代入。(2)設定点2の選択、変数Gの値(変数Gに
係る設定点の属性「現在値」の値)への12:50の代
入。(3)変数Gの値の解除、変数Gの値への12:4
0の代入。(4)変数Gの値の解除、変数Gの値への1
2:30の代入。(5)変数Gの値の解除、変数Gの選
択の解除、変数Aの値の解除、変数Aの値への10:0
0の代入。(6)変数Aの値の解除、変数Aの値への1
1:00の代入。(7)変数Aの値の解除、変数Aの値
への12:00の代入。(8)変数Aの値の解除、変数
Aの値への13:00の代入。(9)変数Gの選択、変
数Gの値への16:50の代入。(10)変数Gの値の
解除、変数Gの値への16:40の代入。」という一連
の流れで探索処理が行われるため、状況スタックの内容
は1601〜1611に示すように推移する。
【0164】初期状態では、1601に示すように状況
スタックは空である。(1)の処理が行われると、16
02に示すように設定点1が格納され、設定点1に変数
Aの値が追加される。(2)の処理が行われると、16
03に示すように設定点2が状況スタックの一番上に積
まれる。以下同様にして、例題3に対する解が得られた
状態である1611に至るまで、処理が継続される。
【0165】図7は、本発明の探索装置の第2の実施例
(請求項2記載の発明に対応する実施例)の構成を示す
ブロック図である。
【0166】本実施例の探索装置は、第2設定点毎探索
処理部703と、条件格納部704と、変数格納部70
5と、状況スタック格納部706と、関数格納部707
と、設定点格納部708と、条件検査部709と、依存
情報格納部710とを含んで構成されている。なお、本
実施例の探索装置は、制御部702を介して、中央処理
装置701と接続されている。
【0167】本実施例の探索装置は、第1の実施例の探
索装置に比べて、依存情報格納部710を付加したこと
と、設定点毎探索処理部3に代えて第2設定点毎探索処
理部703を設けたこととを特徴とする。
【0168】図8は、第2設定点毎探索処理部703の
詳細な処理フローを示す流れ図である。この処理は、設
定点初期入力ステップ801と、終了条件判定ステップ
802と、設定点選択ステップ803と、状況スタック
プッシュステップ804と、変数初期値バインドステッ
プ805と、状況スタック値書込みステップ806と、
制約検査ステップ807と、設定点追加ステップ808
と、依存情報確保ステップ809と、変数検査ステップ
810と、値調整ステップ811と、値検査ステップ8
12と、変数値設定ステップ813と、依存関係保存ス
テップ814と、変数値解除ステップ815と、状況ス
タックポップステップ816と、依存検査ステップ81
7と、スタック空検査ステップ818と、第2異常終了
ステップ819と、終了検査ステップ820と、正常終
了ステップ821と、第1異常終了ステップ822とか
らなる。
【0169】本実施例の探索装置(一般的には、請求項
2記載の発明に係る探索装置)における第2設定点毎探
索処理部703では、第1の実施例の探索装置(一般的
には、請求項1記載の発明に係る探索装置)における設
定点毎探索処理部3に対して、依存情報確保ステップ8
09,依存情報保存ステップ814および依存検査ステ
ップ817の処理が追加されて、より高速な探索処理が
実現される。
【0170】図9は、依存情報格納部710に格納され
る依存情報の一例を示す図である。
【0171】図14は、本実施例の探索装置の動作を説
明するための図である。
【0172】次に、このように構成された本実施例の探
索装置の動作について説明する。ここでは、第1の実施
例の探索装置に対する本実施例(第2の実施例)の探索
装置の追加部分の動作を中心に、本実施例の探索装置の
動作の説明を行う。また、探索対象の問題(対象問題)
として、以下の定義を持つ例題4が与えられた場合を考
える。
【0173】例題4:「自然数である変数A,Bおよび
Cが存在するとき、以下の制約条件群(条件〜)を
満たす変数A,BおよびCの値を求める問題。」 変数Aは10の倍数であり、変数Bは5の倍数であ
る。 A+B>45であり、C≧25である。 変数Bは、変数Aに20を足した値以上であり、4
0を足した値以下である。 変数Cは、変数Aに1を足した値以上であり、10
を足した値以下である。
【0174】変数格納部705には、値として自然数が
設定可能な変数A,BおよびCが格納される。
【0175】条件格納部704には、上述の制約条件群
が格納される。
【0176】設定点格納部708には、設定点群が格納
される。設定点のデータ構造は、第1の実施例における
データ構造(図2参照)と同様であるものとする。した
がって、設定点の属性群は、「変数名」,「初期値」,
「探索有無」,「探索方針」,「変更可能域」,「値設
定関数名」および「現在値」の7つの属性からなる。
【0177】関数格納部707には、3種類の関数(値
設定関数,設定点選択関数および設定点追加関数)が格
納される。
【0178】例題4に関しては、関数格納部707に格
納される3種類の関数の仕様は次の〜に示すように
定義されるものとする。
【0179】 値設定関数として、関数settei
−func2が定義される。この関数は、変数Aの場合
は10単位の加減算を行い、変数Bの場合は5単位の加
減算を行い、変数Cの場合は1単位の加減算を行って、
各変数の値を設定する。
【0180】 設定点選択関数として、例題3に対す
る設定点選択関数と同一のものが定義され用いられる。
【0181】 設定点追加関数として、次のa〜cに
示すような処理を行う関数が定義される。 a.属性「初期値」を変更可能域の最小値とし、属性
「探索有無」を「有」とし、属性「探索方針」を「→」
とし、属性「値設定関数名」を「settei−fun
c2」とする新たな設定点を追加する。 b.変数Aに係る設定点が入力設定点となった場合に、
変数Bに係る設定点と変数Cに係る設定点とを両方生成
してリストにして返却する。 c.変数Bに係る設定点の属性「変更可能域」は変数A
の値(変数Aに係る設定点の属性「現在値」の値)に1
0を足した値から40を足した値までの範囲とし、変数
Cに係る設定点の属性「変更可能域」は変数Aの値に1
を足した値から10を足した値までの範囲とする。
【0182】例題4に関して、中央処理装置701から
制御部702を介して与えられる初期設定点群には、次
のような設定点(設定点11とする)が定義されている
ものとする。設定点11の7つの属性の属性値は、「変
数名」が「A」であり、「初期値」が「10」であり、
「探索有無」が「有」であり、「探索方針」が「→」で
あり、「変更可能域」が「[1..∞]」であり、「値
設定関数名」が「settei−func2」であり、
「現在値」が未定である。
【0183】第2設定点毎探索処理部703は、以上の
ような条件格納部704,変数格納部705,関数格納
部707および設定点格納部708の存在(状況スタッ
ク格納部706および後述する依存情報格納部710の
存在も含む)を前提として、条件検査部709を用い
て、以下に示すような処理を行う(図8参照)。以下で
は、第1の実施例における設定点毎探索処理部3の処理
と異なる点を中心として説明する。
【0184】設定点追加ステップ808の処理の終了後
に、依存情報確保ステップ809を起動する。依存情報
確保ステップ809では、直前の設定点選択ステップ8
03で選択した設定点と直前の設定点追加ステップ80
8で追加した設定点を含むリストとを組み合わせた情報
(依存情報)を依存情報格納部710に格納する。
【0185】図9に示すように、依存情報格納部710
に格納された依存情報は、依存元の設定点を示す依存元
情報901(ここでは、設定点11が記述されている)
と、依存元の設定点を入力として設定点追加ステップ8
08で追加された設定点(依存先の設定点)を含むリス
トが格納される依存先情報902(ここでは、設定点1
2が含まれている)とからなる。
【0186】なお、依存情報格納部710には、複数の
依存情報を格納することができる。
【0187】変数検査ステップ810の検査結果が「失
敗」である場合または値検査ステップ812の検査結果
が「失敗」である場合には、依存関係保存ステップ81
4を起動する。依存関係保存ステップ814では、直前
の設定点選択ステップ803で選択されていた設定点を
依存情報格納部710から抽出して保存する。すなわ
ち、直前の変数検査ステップ810または値検査ステッ
プ812で検査の対象となっていた変数に係る設定点を
含む依存先情報を検出し、その依存先情報に対する依存
元情報中の設定点を保存する。
【0188】例えば、図9に示すような依存情報が存在
し、直前の変数検査ステップ810または値検査ステッ
プ812で設定点12に係る変数が検査の対象であった
場合には、設定点12を含む依存先情報を依存情報保存
部710から検索し、この検索で検出した依存先情報9
02に対する依存元情報901中の設定点11を取得し
て保存する。
【0189】状況スタックポップステップ816の処理
の終了後に、依存検査ステップ817を起動する。依存
検査ステップ817では、状況スタック格納部706内
の状況スタックの最上部に位置する設定点が依存関係保
存ステップ814で保存された設定点と一致するか否か
の検査を行う。
【0190】依存検査ステップ817の検査結果が「成
功」である場合には、それ以上、状況スタックをポップ
する必要がないことを認識し、スタック空検査ステップ
818に処理を進める。
【0191】依存検査ステップ817の検査結果が「失
敗」である場合には、値の設定に失敗した変数(直前の
変数検査ステップ810または値検査ステップ812の
検査の対象であった変数)に係る設定点を含む依存先情
報に対する依存元情報内の設定点まで状況スタックがポ
ップしていないということを認識し、変数値解除ステッ
プ815,状況スタックポップステップ816および依
存検査ステップ817のループ処理を繰り返し、依存検
査ステップ817の検査結果が「成功」となるまで当該
ループ処理を続ける。
【0192】最後に、図14を参照して、第1の実施例
の探索装置と比べた場合の本実施例(第2の実施例)の
探索装置の特有の効果について言及する。
【0193】図14は、例題4に対して第1の実施例お
よび第2の実施例の探索装置を用いて探索処理を行う場
合の探索ツリーの展開の概念を示す図である。
【0194】例題4を第1の実施例の探索装置(一般的
には、請求項1記載の発明に係る探索装置)を用いて解
いた場合には、図14中の1401行〜1416行に示
すような探索ツリーに沿った順序で探索が行われる。
【0195】一方、例題4を第2の実施例の探索装置
(一般的には、請求項2記載の発明に係る探索装置)を
用いて解いた場合には、図14中の1401行〜140
6行および1413行〜1416行に示すような探索ツ
リーに沿った順序で探索が行われる。すなわち、図14
中の破線の四角形で囲まれた処理(1407行〜141
2行に示す処理)を省略することができ、以下の〜
に示す順序で探索が行われる。
【0196】 1401行で、変数Aの値(変数Aに
係る設定点の属性「現在値」の値)に10が設定され
る。
【0197】 1402行〜1403行で、変数Bの
値(変数Bに係る設定点の属性「現在値」の値)に対し
て、30および35の各値が試される。両方とも、条件
中の「A+B>45」が満たされない。
【0198】 1404行で、変数Bの値に40が設
定される。条件中の「A+B>45」が満たされる。
【0199】 1405行〜1406行で、変数C
(変数Cに係る設定点の属性「現在値」)に対して11
〜20の値が試される。全て、条件中の「C≧25」
が満たされない。
【0200】さて、でCについて条件が全て満たさ
れなかった時点で、第1の実施例の探索装置を用いた探
索の場合には、変数Bの次の候補値が試される(140
7行〜1412行参照)。
【0201】しかし、本実施例(第2の実施例)の探索
装置を用いた探索の場合には、依存情報格納部710内
の依存情報を参照することによって「変数Cに係る設定
点が変数Aに係る設定点に基づいて生成されたこと」が
導かれ(変数Cに関する依存先情報に基づいて変数Aに
関する依存元情報が取得される)、変数Aへのバックト
ラックが行われ、以下の〜に示す処理が行われる。
【0202】 1413行で、変数Aにバックトラッ
クし、変数Aの値に20が設定される。
【0203】 1414行で、変数Bの値に対して4
0が設定される。条件中の「A+B>45」が満たさ
れる。
【0204】 1415行〜1416行で、変数Cに
対して21〜25の値が試され、変数Cの値が25のと
きに条件中の「C≧25」が満たされる。これによっ
て、例題4の解が求められる。
【0205】
【発明の効果】以上説明したように、本発明の探索装置
は、設定点というデータ構造(例えば図2参照)を用い
ることと、対象問題に適合する値設定関数,設定点選択
関数および設定点追加関数を対象問題毎に予め定義して
探索処理に用いることとにより、対象問題の内容や変数
の種類に応じて探索に関する各種の方針を変更でき、対
象問題や変数の種類に応じた適切な探索処理を行うこと
が可能となり、探索処理の効率化および処理速度の向上
が可能になるという効果を有する。
【0206】すなわち、対象問題の内容に応じて探索に
関する各種の方針を柔軟に変更することができ、変数毎
に異なる探索戦略を取ること(変数の種類に応じて探索
に関する各種の方針を動的に変更すること)によってい
ろいろな種類の変数が混在している対象問題に対する探
索の場合にも各変数に応じた探索を行うことができると
いう効果がある。
【0207】また、請求項2記載の発明に係る探索装置
では、請求項1記載の発明に係る探索装置の処理に加え
て依存情報の保存を行うことにより、無駄なバックトラ
ックを省き、より高速な探索処理を実現できるという効
果がある。
【0208】以上のように、本発明の探索装置を用いる
ことにより、柔軟でかつ高速な探索処理が可能なシステ
ム(探索装置を含むシステム)の構築が可能となる。
【図面の簡単な説明】
【図1】本発明の探索装置の第1の実施例の構成を示す
ブロック図である。
【図2】図1および図7に示す探索装置で取り扱われる
設定点のデータ構造の一例を示す図である。
【図3】図1中の関数格納部に格納される関数群(値設
定関数,設定点選択関数および設定点追加関数)の記述
例を示す図である。
【図4】図1中の設定点毎探索処理部の処理を示す流れ
図である。
【図5】図1に示す探索装置の動作を説明するための図
(図4中の状況スタックプッシュステップの動作の前後
の状況スタックの状態を示す図)である。
【図6】図1に示す探索装置の動作を説明するための図
(図4中の状況スタック値書込みステップの動作の前後
の状況スタックの状態を示す図)である。
【図7】本発明の探索装置の第2の実施例の構成を示す
ブロック図である。
【図8】図7中の第2設定点毎探索処理部の処理を示す
流れ図である。
【図9】図7中の依存情報格納部に格納される依存情報
の一例を示す図である。
【図10】従来の探索装置の一例の構成を示すブロック
図である。
【図11】図10中の変数毎探索処理部の処理を示す流
れ図である。
【図12】図10に示す探索装置の動作を説明するため
の図(探索履歴の一例を示す図)である。
【図13】図1に示す探索装置の動作を説明するための
図(探索履歴の一例を示す図)である。
【図14】図7に示す探索装置の動作を説明するための
図(探索履歴の一例を示す図)である。
【図15】図10に示す探索装置の動作を説明するため
の図(状況スタックの推移の一例を示す図)である。
【図16】図1に示す探索装置の動作を説明するための
図(状況スタックの推移の一例を示す図)である。
【符号の説明】
1,701 中央処理装置 2,702 制御部 3 設定点毎探索処理部 4,704 条件格納部 5,705 変数格納部 6,706 状況スタック格納部 7,707 関数格納部 8,708 設定点格納部 9,709 条件検査部 703 第2設定点毎探索処理部 710 依存情報格納部 401,801 設定点初期入力ステップ 402,802 終了条件判定ステップ 403,803 設定点選択ステップ 404,804 状況スタックプッシュステップ 405,805 変数初期値バインドステップ 406,806 状況スタック値書込みステップ 407,807 制約検査ステップ 408,808 設定点追加ステップ 409,810 変数検査ステップ 410,811 値調整ステップ 411,812 値検査ステップ 412,813 変数値設定ステップ 413,815 変数値解除ステップ 414,816 状況スタックポップステップ 415,818 スタック空検査ステップ 416,819 第2異常終了ステップ 417,820 終了検査ステップ 418,821 正常終了ステップ 419,822 第1異常終了ステップ 809 依存情報確保ステップ 814 依存関係保存ステップ 817 依存検査ステップ

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 異なる定義の値域を持つ変数が混在しう
    る変数群を持つ対象問題に対する探索処理を行い、与え
    られた制約条件群を満足するように変数の値の設定を行
    う探索装置において、 「変数名」と「現在値」とを属性として含むデータ構造
    であり、探索ツリーの分岐点の候補を表すデータ構造で
    あり、「変数名」および「現在値」以外の属性群として
    対象問題に適合する属性群を有するデータ構造である設
    定点の集合である設定点リストを格納する設定点格納部
    と、 設定点を入力として受け取り入力設定点の属性値を基に
    入力設定点に係る変数に対して次に試すべき値を計算す
    る関数である値設定関数,前記設定点格納部内の設定点
    リストから次に処理べき設定点を選択する関数である設
    定点選択関数,および設定点を入力として受け取り入力
    設定点が表す探索ツリーの分岐点より一段先の分岐点の
    候補群を求めて当該候補群である設定点群を返却する関
    数である設定点追加関数の3種類の関数であり、対象問
    題の内容に適合するように予め定義されている関数群を
    格納する関数格納部と、 対象問題における制約条件群を格納する条件格納部と、 対象問題における変数を格納する変数格納部と、 探索ツリーを探索する際の分岐の状況を「処理した設定
    点の履歴」として管理する状況スタック格納部と、 変数を入力として受け取り、前記条件格納部に格納され
    た制約条件群から入力変数に関係する制約条件群を選択
    し、選択した制約条件群を入力変数に設定されている値
    が満足しているか否か検査する条件検査部と、 前記状況スタック格納部内の状況スタックへの設定点の
    設定および削除を行って探索処理を進め、探索に関する
    各種の方針を前記関数格納部内の関数群および設定点内
    の各属性値に基づいて決定し、前記条件格納部内の制約
    条件群に関する検査を前記条件検査部を用いて行い、前
    記変数格納部に格納されている変数への制約条件群を満
    足する値の設定を試みる探索処理を行う設定点毎探索処
    理部とを有することを特徴とする探索装置。
  2. 【請求項2】 前記関数格納部内の設定点追加関数によ
    って設定点が追加される際の依存元の設定点および依存
    先の設定点を示す情報を含む依存情報を格納する依存情
    報格納部を有することと、 前記設定点毎探索処理部により行われる全ての処理を行
    い、前記関数格納部内の設定点追加関数によって設定点
    が追加される際に前記依存情報格納部への依存情報の設
    定を行い、バックトラックを行う際に前記依存情報格納
    部内の依存情報に基づいて当該バックトラックを行う第
    2設定点毎探索処理部を、前記設定点毎探索処理部の代
    わりに設けることとを特徴とする請求項1記載の探索装
    置。
  3. 【請求項3】 製造業の工場で製品の生産のために必要
    となる各作業の設備利用開始時刻を決める生産スケジュ
    ーリング問題を対象問題とし、設定点の属性が「変数
    名」,「初期値」,「探索有無」,「探索方針」,「変
    更可能域」,「値設定関数」および「現在値」であるこ
    とを特徴とする請求項1または請求項2記載の探索装
    置。
JP7080750A 1995-03-13 1995-03-13 探索装置 Pending JPH08249187A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7080750A JPH08249187A (ja) 1995-03-13 1995-03-13 探索装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7080750A JPH08249187A (ja) 1995-03-13 1995-03-13 探索装置

Publications (1)

Publication Number Publication Date
JPH08249187A true JPH08249187A (ja) 1996-09-27

Family

ID=13727089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7080750A Pending JPH08249187A (ja) 1995-03-13 1995-03-13 探索装置

Country Status (1)

Country Link
JP (1) JPH08249187A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002196927A (ja) * 2000-10-18 2002-07-12 Isac Inc 制約処理システム及びプログラム

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03228175A (ja) * 1990-02-02 1991-10-09 Nippon Telegr & Teleph Corp <Ntt> 計画作成装置
JPH05313896A (ja) * 1992-05-01 1993-11-26 Hitachi Ltd 知識処理システム及び知識表現方法
JPH05342247A (ja) * 1992-06-04 1993-12-24 Agency Of Ind Science & Technol 非線形不等式推論方法
JPH06162037A (ja) * 1992-11-27 1994-06-10 Hitachi Ltd 生産計画の立案方式
JPH06243184A (ja) * 1993-02-12 1994-09-02 Toshiba Corp 配置最適化装置
JPH0728650A (ja) * 1993-07-08 1995-01-31 Nec Corp 計画型エキスパートシステム構築支援装置
JPH0736697A (ja) * 1993-07-19 1995-02-07 Fujitsu Ltd 制約充足装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03228175A (ja) * 1990-02-02 1991-10-09 Nippon Telegr & Teleph Corp <Ntt> 計画作成装置
JPH05313896A (ja) * 1992-05-01 1993-11-26 Hitachi Ltd 知識処理システム及び知識表現方法
JPH05342247A (ja) * 1992-06-04 1993-12-24 Agency Of Ind Science & Technol 非線形不等式推論方法
JPH06162037A (ja) * 1992-11-27 1994-06-10 Hitachi Ltd 生産計画の立案方式
JPH06243184A (ja) * 1993-02-12 1994-09-02 Toshiba Corp 配置最適化装置
JPH0728650A (ja) * 1993-07-08 1995-01-31 Nec Corp 計画型エキスパートシステム構築支援装置
JPH0736697A (ja) * 1993-07-19 1995-02-07 Fujitsu Ltd 制約充足装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002196927A (ja) * 2000-10-18 2002-07-12 Isac Inc 制約処理システム及びプログラム

Similar Documents

Publication Publication Date Title
CN108876121B (zh) 工单处理方法、装置、计算机设备和存储介质
US8386287B2 (en) Resource management using constraint programming with efficient ordering of variables
US6415275B1 (en) Method and system for processing rules using an extensible object-oriented model resident within a repository
US5499331A (en) Method of document layout process and system
US8056012B2 (en) Content aware workflow builder and workflow engine
US20010005849A1 (en) Synchronization of databases using filters
US20150370555A1 (en) Compositing deltas when merging artifacts in a version control system
Onder et al. Conditional, probabilistic planning: A unifying algorithm and effective search control mechanisms
JPH05101072A (ja) エンジニアリング変更の管理を制御する方法とシステム
Erol et al. A critical look at critics in HTN planning
US6104869A (en) Method of controlling a work flow system
US7680813B2 (en) Information management system
JPH08249187A (ja) 探索装置
Białek et al. A paraconsistent approach to actions in informationally complex environments
JPS63237165A (ja) 工程計画支援装置
US20030125816A1 (en) Backtracking resources planning algorithm
CN115934106A (zh) 快速检测apt仓库源依赖完整性的方法
Boussouf A hybrid approach to Feature Selection
JPH04242829A (ja) プログラム更新システム
JPH05127908A (ja) 照合処理の高速化方法
JPH0728645A (ja) 探索制御知識を学習し推論を行なう知識ベースシステムおよび推論方法
Cardoso et al. Linear logic for imprecise firings in object Petri nets
JPH06314198A (ja) 制約型問題解決システム
JPH10143370A (ja) 知識格納・照合方法
CN119721711A (zh) 一种风控决策优化方法、装置、设备及存储介质