JP3170828B2 - 組合せ問題処理装置 - Google Patents
組合せ問題処理装置Info
- Publication number
- JP3170828B2 JP3170828B2 JP29749691A JP29749691A JP3170828B2 JP 3170828 B2 JP3170828 B2 JP 3170828B2 JP 29749691 A JP29749691 A JP 29749691A JP 29749691 A JP29749691 A JP 29749691A JP 3170828 B2 JP3170828 B2 JP 3170828B2
- Authority
- JP
- Japan
- Prior art keywords
- constraint
- value
- condition
- variable
- inequality
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 134
- 238000012545 processing Methods 0.000 claims description 110
- 230000008569 process Effects 0.000 claims description 89
- 230000008859 change Effects 0.000 claims description 58
- 230000006870 function Effects 0.000 claims description 52
- 238000011156 evaluation Methods 0.000 claims description 46
- 238000005457 optimization Methods 0.000 claims description 36
- 230000014509 gene expression Effects 0.000 claims description 13
- 230000007423 decrease Effects 0.000 claims description 10
- 230000000295 complement effect Effects 0.000 claims description 7
- 238000004891 communication Methods 0.000 claims description 5
- 238000003672 processing method Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 44
- 235000009508 confectionery Nutrition 0.000 description 12
- 238000013461 design Methods 0.000 description 11
- 235000011389 fruit/vegetable juice Nutrition 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 238000007689 inspection Methods 0.000 description 4
- 239000002699 waste material Substances 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000008094 contradictory effect Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
Landscapes
- Complex Calculations (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Description
【0001】
【産業上の利用分野】本発明は、計算機により、変数が
離散的な値を取る組合せ制約充足または組合せ最適化問
題を解く組合せ問題処理装置に関する。
離散的な値を取る組合せ制約充足または組合せ最適化問
題を解く組合せ問題処理装置に関する。
【0002】
【従来の技術及び発明が解決しようとする課題】計算機
の応用分野や広がる一方であるが、組合せ制約充足問題
または組合せ最適化問題を計算機によって高速に解くこ
とは、計算機の応用分野における一つの重要な課題にな
っている。組合せ制約充足問題/組合せ最適化問題と
は、次のような問題である。
の応用分野や広がる一方であるが、組合せ制約充足問題
または組合せ最適化問題を計算機によって高速に解くこ
とは、計算機の応用分野における一つの重要な課題にな
っている。組合せ制約充足問題/組合せ最適化問題と
は、次のような問題である。
【0003】今、n個の変数x1,x2,… ,xn につい
て、不等式系 fk ( x1,x2,… ,xn )≦bk (k=0,1, …,m) が与えられており、変数xi の取り得る値は、飛び飛び
のcij (i=1,2,…,n ;j=1,2,3,…) であるとする。この
とき、上の不等式をすべて満たすように各変数の値を決
定(選択)する問題が組合せ制約充足問題である。言い
換えると、 fk ( c1,s(1), c2,s(2), …, cn,s(n)) ≦bk (k=0,1, …,m) を満たす写像s:{1,2,…, n}→{1,2,3,…}を求め
る問題が組合せ制約充足問題である。
て、不等式系 fk ( x1,x2,… ,xn )≦bk (k=0,1, …,m) が与えられており、変数xi の取り得る値は、飛び飛び
のcij (i=1,2,…,n ;j=1,2,3,…) であるとする。この
とき、上の不等式をすべて満たすように各変数の値を決
定(選択)する問題が組合せ制約充足問題である。言い
換えると、 fk ( c1,s(1), c2,s(2), …, cn,s(n)) ≦bk (k=0,1, …,m) を満たす写像s:{1,2,…, n}→{1,2,3,…}を求め
る問題が組合せ制約充足問題である。
【0004】例えば、論理設計において、回路中の各コ
ンポーネントに対応する変数x1,x 2,… ,xn を設け、
b0 をゲート数の上限値、bk (k=0,1,…,m) をk
番目のパス(パスk)に沿った遅延時間の上限値、a
0i=1(i=1,2,…,n) 、パスk(k=1,2,…,m) がi番
目のコンポーネントを通っていればaki=1、それ以外
はaki=0、d0(xi ) はi番目のコンポーネントの
ゲート数、dk ( xi ) (k=1,2,…,m) はパスkに沿
った遅延時間に対するi番目のコンポーネントによる寄
与(パスkがi番目のコンポーネントを通っていなけれ
ば0)として、次の不等式系
ンポーネントに対応する変数x1,x 2,… ,xn を設け、
b0 をゲート数の上限値、bk (k=0,1,…,m) をk
番目のパス(パスk)に沿った遅延時間の上限値、a
0i=1(i=1,2,…,n) 、パスk(k=1,2,…,m) がi番
目のコンポーネントを通っていればaki=1、それ以外
はaki=0、d0(xi ) はi番目のコンポーネントの
ゲート数、dk ( xi ) (k=1,2,…,m) はパスkに沿
った遅延時間に対するi番目のコンポーネントによる寄
与(パスkがi番目のコンポーネントを通っていなけれ
ば0)として、次の不等式系
【0005】
【数1】
【0006】を考える。そうすると、この不等式系は、
回路規模およびスピードに関する制約を表現したものに
なっている。
回路規模およびスピードに関する制約を表現したものに
なっている。
【0007】各変数xi は飛び飛びのcij (i=1,2,…,n
; j=1,2,3, …) をとるから、すなわち、各コンポーネ
ントの実現方法は飛び飛びであるから、組合せ制約充足
問題となる。
; j=1,2,3, …) をとるから、すなわち、各コンポーネ
ントの実現方法は飛び飛びであるから、組合せ制約充足
問題となる。
【0008】一方、組合せ最適化問題は、 fk ( x1,x2,… ,xn )≦bk (k=0,1, …,m) を満たし、かつ、評価関数 f0 ( x1,x2,… ,xn ) を最小にする問題である。
【0009】例えば、紙ロールからいろいろな型紙を裁
断する際や、大きな材木からいくつかの形状の棚を切り
出す際に、無駄を最小にする問題(「カッティング・ス
トック問題」と呼ばれている)において、各材木(紙ロ
ール)に対応する変数x1,x 2,… ,xn を設け、bk (k
=1,2, …,m) をk番目の棚(型紙)の必要最小数、d k
( xi ) (k=1,2, …,m) をi番目の材木(紙ロール)か
ら切り出されるk番目の棚(型紙)の数とすると、制約
は次の不等式系で表現され、
断する際や、大きな材木からいくつかの形状の棚を切り
出す際に、無駄を最小にする問題(「カッティング・ス
トック問題」と呼ばれている)において、各材木(紙ロ
ール)に対応する変数x1,x 2,… ,xn を設け、bk (k
=1,2, …,m) をk番目の棚(型紙)の必要最小数、d k
( xi ) (k=1,2, …,m) をi番目の材木(紙ロール)か
ら切り出されるk番目の棚(型紙)の数とすると、制約
は次の不等式系で表現され、
【0010】
【数2】
【0011】問題は次の評価関数を最小にすることにな
る。
る。
【0012】
【数3】
【0013】ただし、d0(xi ) はi番目の材木(型
紙)から出る無駄(使われない面積)である。各変数x
i は飛び飛びのcij (i=1,2,…,n ; j=1,2,3, …) をと
るから(すなわち、切り出し方は飛び飛び)、組合せ最
適化問題となる。
紙)から出る無駄(使われない面積)である。各変数x
i は飛び飛びのcij (i=1,2,…,n ; j=1,2,3, …) をと
るから(すなわち、切り出し方は飛び飛び)、組合せ最
適化問題となる。
【0014】以上は、不等式、評価関数とも線形の場合
であったが、一般には線形とは限らない。論理設計の例
では、厳密に言うと、一つのコンポーネントのあるパス
に沿った遅延時間は、そん接続先のコンポーネントの実
現方法に依存する。すなわち、コンポーネントCのパス
kに取った遅延時間は、 (Cの基本遅延時間) +(Cの負荷容量依存係数)×[(Cから接続先までの
配線の容量)+Σ{(コンポーネント内配線の容量)+
(入力容量の総和)}] で計算される(ただし、和はパスkに沿ってCの先に接
続しているコンポーネントについて取る)。したがっ
て、不等式には異なる変数の積の項が現れ、非線形とな
る。
であったが、一般には線形とは限らない。論理設計の例
では、厳密に言うと、一つのコンポーネントのあるパス
に沿った遅延時間は、そん接続先のコンポーネントの実
現方法に依存する。すなわち、コンポーネントCのパス
kに取った遅延時間は、 (Cの基本遅延時間) +(Cの負荷容量依存係数)×[(Cから接続先までの
配線の容量)+Σ{(コンポーネント内配線の容量)+
(入力容量の総和)}] で計算される(ただし、和はパスkに沿ってCの先に接
続しているコンポーネントについて取る)。したがっ
て、不等式には異なる変数の積の項が現れ、非線形とな
る。
【0015】このような組合せ制約充足問題や組合せ最
適化問題は、潜在的な解空間が組み合わせ的に大きくな
り、変数が連続値をとる場合の問題に比べて一層難しい
問題であると認識されており、単純な探索方式は適用で
きない。
適化問題は、潜在的な解空間が組み合わせ的に大きくな
り、変数が連続値をとる場合の問題に比べて一層難しい
問題であると認識されており、単純な探索方式は適用で
きない。
【0016】ところが、見かけ上の解空間のなかで求め
る解が存在しない部分を識別できるケースがあり、この
ような構造を有効に利用することにより、効率的に解を
求めることが可能になる場合がある。
る解が存在しない部分を識別できるケースがあり、この
ような構造を有効に利用することにより、効率的に解を
求めることが可能になる場合がある。
【0017】従来の技術としては、組合せ制約充足問題
または組合せ最適化問題を計算機によって解く方式とし
て、(a) 整数計画法、(b) 分岐限定法、(c) 線形計画
法、(d) ATMS等がある。 (a) 整数計画法 飛び飛びの値をとる変数を扱うために、整数値を取る変
数を導入する。特に、0または1を取る変数を導入す
る。ところが、この処理により変数の数が増えるという
問題がある。すなわち、前述した記法に従えば、n個の
変数x1,x2,… ,xn を扱う代わりに、cij (i=1,2,
…,n ; j=1,2,3, …) をすべて変数にする必要がある。
この結果、整数計画法の計算時間は、変数の数について
指数的に増加する傾向にあり、変数の増加により計算時
間が大幅に延びてしまうという問題がある。 (b) 分岐限定法 変数の値を決定(選択)する際、一部の範囲に限定して
制約を満たしているかどうかをチェックし評価関数値を
求める。チェックや評価関数計算ができない(あるい
は、それまでに求まっている評価関数値を下回る可能性
が残っている)なら、さらに範囲を限定する。ある範囲
に限定した場合の評価関数値がそれまでに求まっている
評価関数値を下回る可能性がないなら、その範囲は捨て
る。ところが、この方法では、ある範囲に限定して制約
を満たしているかどうかチェックし、評価関数値を求め
た過程の情報がそれ以降に利用されないため、不適当な
変数値を繰り返し選択する可能性があるという問題を有
する。 (c) 線形計画法 変数が連続値を取りうるとして最適解を求め、それに近
い離散値を解とする。ところが、このように近似した場
合、得られた解が制約を満たすという保証も最適である
という保証もなくなる。これがこの手法の問題点であ
る。 (d) ATMS(assumption based truth maintenance s
ystem) 制約を満たさなかった変数値の組合せを格納しておき、
それを含むような組合せは捨てる。ところが、変数値の
組合せの数が膨大となるため、扱える問題の規模が限ら
れるという問題がある。なお、このATMSに関する参
考文献としては、以下のものがある。
または組合せ最適化問題を計算機によって解く方式とし
て、(a) 整数計画法、(b) 分岐限定法、(c) 線形計画
法、(d) ATMS等がある。 (a) 整数計画法 飛び飛びの値をとる変数を扱うために、整数値を取る変
数を導入する。特に、0または1を取る変数を導入す
る。ところが、この処理により変数の数が増えるという
問題がある。すなわち、前述した記法に従えば、n個の
変数x1,x2,… ,xn を扱う代わりに、cij (i=1,2,
…,n ; j=1,2,3, …) をすべて変数にする必要がある。
この結果、整数計画法の計算時間は、変数の数について
指数的に増加する傾向にあり、変数の増加により計算時
間が大幅に延びてしまうという問題がある。 (b) 分岐限定法 変数の値を決定(選択)する際、一部の範囲に限定して
制約を満たしているかどうかをチェックし評価関数値を
求める。チェックや評価関数計算ができない(あるい
は、それまでに求まっている評価関数値を下回る可能性
が残っている)なら、さらに範囲を限定する。ある範囲
に限定した場合の評価関数値がそれまでに求まっている
評価関数値を下回る可能性がないなら、その範囲は捨て
る。ところが、この方法では、ある範囲に限定して制約
を満たしているかどうかチェックし、評価関数値を求め
た過程の情報がそれ以降に利用されないため、不適当な
変数値を繰り返し選択する可能性があるという問題を有
する。 (c) 線形計画法 変数が連続値を取りうるとして最適解を求め、それに近
い離散値を解とする。ところが、このように近似した場
合、得られた解が制約を満たすという保証も最適である
という保証もなくなる。これがこの手法の問題点であ
る。 (d) ATMS(assumption based truth maintenance s
ystem) 制約を満たさなかった変数値の組合せを格納しておき、
それを含むような組合せは捨てる。ところが、変数値の
組合せの数が膨大となるため、扱える問題の規模が限ら
れるという問題がある。なお、このATMSに関する参
考文献としては、以下のものがある。
【0018】J. de Kleer: An Assumption-based Truth
Maintenance System, ArtificialIntelligence 28 (19
86).以上のように、従来の方式は、それぞれ問題点を有
している。
Maintenance System, ArtificialIntelligence 28 (19
86).以上のように、従来の方式は、それぞれ問題点を有
している。
【0019】本発明は上述した背景のもとになされたも
のであり、変数が離散的な値をとる組合せ制約充足およ
び最適化問題を対象として、処理の途中時点までに得ら
れた失敗情報をそれ以降の処理で最大限に利用すること
により、効率的に組合せ制約充足/最適化問題を解決す
る手段を提供することを目的とする。
のであり、変数が離散的な値をとる組合せ制約充足およ
び最適化問題を対象として、処理の途中時点までに得ら
れた失敗情報をそれ以降の処理で最大限に利用すること
により、効率的に組合せ制約充足/最適化問題を解決す
る手段を提供することを目的とする。
【0020】
【課題を解決するための手段および作用】本発明は、不
等式や等式で与えられた制約を満たすように、各変数の
離散的な値を決定する組合せ制約充足問題、あるいは、
不等式や等式で与えられた制約を満たし、かつ、与えら
れた評価関数の値を最小あるいは最大にするように各変
数の離散的な値を決定する組合せ最適化問題を計算機に
よって解く組合せ問題処理装置を前提とする。
等式や等式で与えられた制約を満たすように、各変数の
離散的な値を決定する組合せ制約充足問題、あるいは、
不等式や等式で与えられた制約を満たし、かつ、与えら
れた評価関数の値を最小あるいは最大にするように各変
数の離散的な値を決定する組合せ最適化問題を計算機に
よって解く組合せ問題処理装置を前提とする。
【0021】そして、まず、計算機内に、外部から指示
される制約である不等式系(不等式や等式)と相反する
制約違反不等式を生成する初期制約違反不等式生成部を
有する。
される制約である不等式系(不等式や等式)と相反する
制約違反不等式を生成する初期制約違反不等式生成部を
有する。
【0022】次に、計算機内に、制約充足を調べる変数
の値を現在の値から他の値に変更する変数値変更部、お
よび、値が未定の変数について、その値を選択する変数
選択部を有する。
の値を現在の値から他の値に変更する変数値変更部、お
よび、値が未定の変数について、その値を選択する変数
選択部を有する。
【0023】さらに、計算機内に、上記変数値変更部お
よび上記変数値選択部の処理においてすべての値が制約
を満たさない(すなわち、制約違反条件のなかで成立す
るものがある)場合に、制約違反不等式または制約違反
不等式から生成された制約違反条件のなかに現れる変数
を数値化することにより、簡略化した不等式の論理積と
して得られる新しい制約違反条件を生成する制約違反条
件生成部を有する。
よび上記変数値選択部の処理においてすべての値が制約
を満たさない(すなわち、制約違反条件のなかで成立す
るものがある)場合に、制約違反不等式または制約違反
不等式から生成された制約違反条件のなかに現れる変数
を数値化することにより、簡略化した不等式の論理積と
して得られる新しい制約違反条件を生成する制約違反条
件生成部を有する。
【0024】たとえば、x1 +x2 +4>14という制
御違反条件があったとする。x1 =7,x2 =5とする
と、これは制約違反条件を成立させるから、それ以降の
評価処理が禁示または省略される。ここでx2 =5の
時、x1 +9>14,x2 =7の時、x1 +11>14
である。したがって制約違反条件は、この2つの論理積
であり、これは、x1 +9>14と論理的に等価であ
る。「変数を数値化する」とはx2 に5,7を代入する
ことと、たとえば5+4=9として定数項をまとめるこ
とを言う。「簡略化した不等式の論理積として得る」と
は、制約違反条件をx1 +9>14とすることである。
御違反条件があったとする。x1 =7,x2 =5とする
と、これは制約違反条件を成立させるから、それ以降の
評価処理が禁示または省略される。ここでx2 =5の
時、x1 +9>14,x2 =7の時、x1 +11>14
である。したがって制約違反条件は、この2つの論理積
であり、これは、x1 +9>14と論理的に等価であ
る。「変数を数値化する」とはx2 に5,7を代入する
ことと、たとえば5+4=9として定数項をまとめるこ
とを言う。「簡略化した不等式の論理積として得る」と
は、制約違反条件をx1 +9>14とすることである。
【0025】また、計算機内あるいは計算機の外部に、
上記制約違反条件生成部で生成した制約違反条件を蓄積
する制約違反条件格納部を有する。以上の本発明の構成
において、変数の値を変更/選択する際には既に上記制
約違反条件格納部に格納されている制約違反条件をどれ
も成立させないように行なう。言い換えれば、制約違反
条件を満足しないように変数の値を変更/選択して、制
約違反条件を満足する変数の組合せの評価を省略してい
くことにより、結果として制約違反条件を満たさない変
数の組合せが残ることとなる。すなわち、このことを集
合論的に言うと、全体集合Uのn個の変数X1 ,…,X
n のあらゆる組合せの中から最適な組合せを求めるため
に、 a)該変数に関しての制約を与える制約条件に相反する
制約違反条件を求め、 b)前記全体集合Uの部分集合Aのみでしかも部分集合
Aの補集合U−Aに含まれる変数の組合せに無関係に前
記制約違反条件を満足することを検出し、 c)前記検出手段で前記部分集合Aのみでしかも部分集
合Aの補集合U−Aに含まれる変数の組合せに無関係に
前記制約違反条件を満足することが検出された場合には
部分集合Aの補集合U−Aに含まれる変数の組合せを省
略し、 d)さらに部分集合Aに含まれる変数のみに関係する新
しい制約違反条件を生成する。
上記制約違反条件生成部で生成した制約違反条件を蓄積
する制約違反条件格納部を有する。以上の本発明の構成
において、変数の値を変更/選択する際には既に上記制
約違反条件格納部に格納されている制約違反条件をどれ
も成立させないように行なう。言い換えれば、制約違反
条件を満足しないように変数の値を変更/選択して、制
約違反条件を満足する変数の組合せの評価を省略してい
くことにより、結果として制約違反条件を満たさない変
数の組合せが残ることとなる。すなわち、このことを集
合論的に言うと、全体集合Uのn個の変数X1 ,…,X
n のあらゆる組合せの中から最適な組合せを求めるため
に、 a)該変数に関しての制約を与える制約条件に相反する
制約違反条件を求め、 b)前記全体集合Uの部分集合Aのみでしかも部分集合
Aの補集合U−Aに含まれる変数の組合せに無関係に前
記制約違反条件を満足することを検出し、 c)前記検出手段で前記部分集合Aのみでしかも部分集
合Aの補集合U−Aに含まれる変数の組合せに無関係に
前記制約違反条件を満足することが検出された場合には
部分集合Aの補集合U−Aに含まれる変数の組合せを省
略し、 d)さらに部分集合Aに含まれる変数のみに関係する新
しい制約違反条件を生成する。
【0026】また、上記制約違反不等式生成部で生成さ
れた制約違反不等式は、生成後、上記制約違反条件格納
部に格納される。また、制約違反条件格納部は、制約違
反条件を格納する際、格納されようとする条件がすでに
格納されている他の条件よりも論理的に弱ければ、言い
換えれば、すでに格納されている他の条件が格納しよう
とする条件を満たしてしまうならば、以前の条件を削除
してから新しい制約違反条件を格納する。こうすること
によって、意味的に同じ制約違反条件を探索する無駄を
省くことができる。
れた制約違反不等式は、生成後、上記制約違反条件格納
部に格納される。また、制約違反条件格納部は、制約違
反条件を格納する際、格納されようとする条件がすでに
格納されている他の条件よりも論理的に弱ければ、言い
換えれば、すでに格納されている他の条件が格納しよう
とする条件を満たしてしまうならば、以前の条件を削除
してから新しい制約違反条件を格納する。こうすること
によって、意味的に同じ制約違反条件を探索する無駄を
省くことができる。
【0027】一方、本発明は、以下のように構成するこ
とも可能である。すなわち、まず、計算機内に、外部か
ら指定された不等式系(不等式や等式)から制約充足を
示す不等式を生成する初期制約充足不等式生成部を有
し、また、計算機内に、制約充足を調べる変数の値を現
在の値から他の値に変更する変数値変更部と、値が未定
の変数についてその値を選択する変数値選択部を有す
る。
とも可能である。すなわち、まず、計算機内に、外部か
ら指定された不等式系(不等式や等式)から制約充足を
示す不等式を生成する初期制約充足不等式生成部を有
し、また、計算機内に、制約充足を調べる変数の値を現
在の値から他の値に変更する変数値変更部と、値が未定
の変数についてその値を選択する変数値選択部を有す
る。
【0028】さらに、計算機内に、上記変数値変更部お
よび上記変数値選択部の処理においてすべての値が制約
を満たさない(すなわち、制約充足条件のなかで成立し
ないものがある)場合に、制約充足条件中に現れる当該
変数を数値化することにより簡略化した不等式の論理和
として得られる制約充足条件を生成する制約充足条件生
成部を有する。
よび上記変数値選択部の処理においてすべての値が制約
を満たさない(すなわち、制約充足条件のなかで成立し
ないものがある)場合に、制約充足条件中に現れる当該
変数を数値化することにより簡略化した不等式の論理和
として得られる制約充足条件を生成する制約充足条件生
成部を有する。
【0029】そして、最後に、計算機内あるいは計算機
の外部に、上記の制約充足条件生成部が生成した制約充
足条件を蓄積する制約充足条件格納部を有する。以上の
本発明の第二の構成において、変数の値を変更/選択す
る際には既に上記制約充足条件格納部に格納されている
制約充足条件をすべて満たすように行なう。また、上記
初期制約充足不等式生成部で生成された制約充足不等式
は、生成後、上記制約充足条件格納部に格納される。
の外部に、上記の制約充足条件生成部が生成した制約充
足条件を蓄積する制約充足条件格納部を有する。以上の
本発明の第二の構成において、変数の値を変更/選択す
る際には既に上記制約充足条件格納部に格納されている
制約充足条件をすべて満たすように行なう。また、上記
初期制約充足不等式生成部で生成された制約充足不等式
は、生成後、上記制約充足条件格納部に格納される。
【0030】また、制約充足条件格納部は、格納しよう
とする条件を既に格納されている他の条件と比較し、他
の条件よりも論理的に強ければ以前の条件を削除してか
ら新しい制約充足条件を格納する。
とする条件を既に格納されている他の条件と比較し、他
の条件よりも論理的に強ければ以前の条件を削除してか
ら新しい制約充足条件を格納する。
【0031】本発明の第一または第二の構成において、
前記初期制約違反不等式生成部または前記初期制約充足
不等式生成部は、外部から指定される不等式系が等式で
ある場合には、制約である等式を等価な二つの不等式に
変更し、それぞれ、制約違反不等式または制約充足不等
式を生成する。
前記初期制約違反不等式生成部または前記初期制約充足
不等式生成部は、外部から指定される不等式系が等式で
ある場合には、制約である等式を等価な二つの不等式に
変更し、それぞれ、制約違反不等式または制約充足不等
式を生成する。
【0032】また、本発明の第一または第二の構成にお
いて、制約を満たし、かつ、与えられた評価関数の値を
最小(最大)にする組合せ最適化問題を解く場合には、
前記初期制約違反不等式生成部または前記初期制約充足
不等式生成部は、制約違反不等式または制約充足不等式
に加えて、評価関数に対応する可変不等式を生成する。
そして、可変不等式を付加した不等式系による制約に対
して組合せ制約充足問題を解き、上記評価関数に対応す
る可変不等式の制約値を、得られた評価関数値から所定
の十分小さな正数を引いた(加えた)値に更新し、組合
せ制約充足問題の処理を繰り返すことにより、組合せ最
適化問題の解を得る。
いて、制約を満たし、かつ、与えられた評価関数の値を
最小(最大)にする組合せ最適化問題を解く場合には、
前記初期制約違反不等式生成部または前記初期制約充足
不等式生成部は、制約違反不等式または制約充足不等式
に加えて、評価関数に対応する可変不等式を生成する。
そして、可変不等式を付加した不等式系による制約に対
して組合せ制約充足問題を解き、上記評価関数に対応す
る可変不等式の制約値を、得られた評価関数値から所定
の十分小さな正数を引いた(加えた)値に更新し、組合
せ制約充足問題の処理を繰り返すことにより、組合せ最
適化問題の解を得る。
【0033】さらに、本発明の第一または第二の構成に
おいて、初めからすべての変数値が既知ではないような
場合であって、新しい変数値が追加になるような場合が
存在する問題を解く場合には、前記制約違反条件生成部
または前記制約充足条件生成部は、生成する制約違反条
件または制約充足条件に、当該変数値がこれ以上ないこ
とを示すフラグ、または、当該変数値がさらにあること
を示すフラグを付加し、制約違反条件格納部または制約
充足条件格納部に格納しておく。そして、実際に当該変
数の新しい変数値を使用する際には、このフラグが付い
ている制約違反条件または制約充足条件を無効にする。
これによって、新しい変数値に対応することが可能とな
る。
おいて、初めからすべての変数値が既知ではないような
場合であって、新しい変数値が追加になるような場合が
存在する問題を解く場合には、前記制約違反条件生成部
または前記制約充足条件生成部は、生成する制約違反条
件または制約充足条件に、当該変数値がこれ以上ないこ
とを示すフラグ、または、当該変数値がさらにあること
を示すフラグを付加し、制約違反条件格納部または制約
充足条件格納部に格納しておく。そして、実際に当該変
数の新しい変数値を使用する際には、このフラグが付い
ている制約違反条件または制約充足条件を無効にする。
これによって、新しい変数値に対応することが可能とな
る。
【0034】さらに、本発明の第一または第二の構成に
おいて、上記変数値変更部と変数値選択部が設定したあ
る変数値の組合せが制約を満たさない(すなわち、制約
違反条件のなかに成立するものがあるか、または、制約
充足条件のなかに成立しないものがある)場合に、前記
制約違反条件生成部または前記制約充足条件生成部は、
不等式の左辺の偏微分係数を利用して制約違反条件また
は制約充足条件を生成する。これによって、不等式の関
数の値が単調に増加あるいは減少するような問題におい
ては、新たな制約違反条件または制約充足条件を生成す
ることができ、効率よく問題を解くことが可能になる。
おいて、上記変数値変更部と変数値選択部が設定したあ
る変数値の組合せが制約を満たさない(すなわち、制約
違反条件のなかに成立するものがあるか、または、制約
充足条件のなかに成立しないものがある)場合に、前記
制約違反条件生成部または前記制約充足条件生成部は、
不等式の左辺の偏微分係数を利用して制約違反条件また
は制約充足条件を生成する。これによって、不等式の関
数の値が単調に増加あるいは減少するような問題におい
ては、新たな制約違反条件または制約充足条件を生成す
ることができ、効率よく問題を解くことが可能になる。
【0035】最後に、本発明の第一または第二の構成に
おいて、複数のプロセサを使用することにより、変数値
変更部/変数値選択部が変更/選択する変数値、あるい
は、制約違反条件または制約充足条件、あるいは、変数
値および制約違反条件または制約充足条件、あるいは、
制約違反条件または制約充足条件が複数の条件の論理積
または論理和となっている場合には該制約違反条件また
は制約充足条件の部分論理式を、各プロセサに振り分け
て分割して持たせることにより、組合せ制約充足あるい
は組合せ制約最適化問題を並列に処理し、処理速度を向
上することが可能である。
おいて、複数のプロセサを使用することにより、変数値
変更部/変数値選択部が変更/選択する変数値、あるい
は、制約違反条件または制約充足条件、あるいは、変数
値および制約違反条件または制約充足条件、あるいは、
制約違反条件または制約充足条件が複数の条件の論理積
または論理和となっている場合には該制約違反条件また
は制約充足条件の部分論理式を、各プロセサに振り分け
て分割して持たせることにより、組合せ制約充足あるい
は組合せ制約最適化問題を並列に処理し、処理速度を向
上することが可能である。
【0036】
【実施例】原理説明 図1及び図2は、本発明の原理構成図である。特に、図
1は、制約違反条件を生成する解法についての原理構成
図、図2は、制約充足条件を生成する解法についての原
理構成図を示している。
1は、制約違反条件を生成する解法についての原理構成
図、図2は、制約充足条件を生成する解法についての原
理構成図を示している。
【0037】本発明は、CPUおよびメモリ等からなる
計算機上に構築し、外部より与えられる制約を表現する
不等式系についての組合せ制約充足問題あるいは組合せ
制約最適化問題を解くことを前提とする。
計算機上に構築し、外部より与えられる制約を表現する
不等式系についての組合せ制約充足問題あるいは組合せ
制約最適化問題を解くことを前提とする。
【0038】図1において、まず、計算機100内に設
けられる初期制約違反不等式生成部102は、外部より
与えられた不等式系101の各不等式からそれに相反す
る不等式を生成する。例えば、左辺≦右辺の不等式に対
して左辺>右辺、左辺≧右辺の不等式に対して左辺<右
辺が制約違反不等式である。
けられる初期制約違反不等式生成部102は、外部より
与えられた不等式系101の各不等式からそれに相反す
る不等式を生成する。例えば、左辺≦右辺の不等式に対
して左辺>右辺、左辺≧右辺の不等式に対して左辺<右
辺が制約違反不等式である。
【0039】また、計算機100に接続された二次記憶
装置内に設けられる制約違反条件格納部103は、初期
制約違反不等式生成部102が生成した制約違反不等式
や、制約充足処理中に生成される制約違反条件を蓄積す
る。制約違反条件格納部103は、計算機100外の二
次記憶装置内に設けることもできるが、また、計算機1
00内のメモリ中に設けることも可能である。
装置内に設けられる制約違反条件格納部103は、初期
制約違反不等式生成部102が生成した制約違反不等式
や、制約充足処理中に生成される制約違反条件を蓄積す
る。制約違反条件格納部103は、計算機100外の二
次記憶装置内に設けることもできるが、また、計算機1
00内のメモリ中に設けることも可能である。
【0040】一方、これも計算機100内に設けられた
変数値変更部104は、変数値の値を現在の値から他の
値に変更する。この変更処理は、制約違反条件格納部1
03に格納されている制約違反条件をどれも成立させな
いように行なう。値が未定の変数を含む制約違反条件は
不成立とみなす。
変数値変更部104は、変数値の値を現在の値から他の
値に変更する。この変更処理は、制約違反条件格納部1
03に格納されている制約違反条件をどれも成立させな
いように行なう。値が未定の変数を含む制約違反条件は
不成立とみなす。
【0041】また、計算機100内に設けられた変数選
択部105は、値が未定の変数についてその値を選択す
る。このとき、制約違反条件格納部103に格納されて
いる制約違反条件をどれも成立させないように選択す
る。値が未定の変数を含む制約違反条件は不成立とみな
す。
択部105は、値が未定の変数についてその値を選択す
る。このとき、制約違反条件格納部103に格納されて
いる制約違反条件をどれも成立させないように選択す
る。値が未定の変数を含む制約違反条件は不成立とみな
す。
【0042】さらに、計算機100内に設けられた制約
違反条件生成部106は、変数変更部104または変数
選択部105の処理で変数値の変更/選択が不可能であ
った場合に、新しい制約違反条件を生成する。生成した
新しい制約違反条件は、制約違反条件格納部103に格
納する。
違反条件生成部106は、変数変更部104または変数
選択部105の処理で変数値の変更/選択が不可能であ
った場合に、新しい制約違反条件を生成する。生成した
新しい制約違反条件は、制約違反条件格納部103に格
納する。
【0043】この結果、制約違反条件格納部103に
は、処理開始直後には初期制約違反不等式生成部102
が設定した初期制約違反不等式のみを格納し、その後、
制約違反条件生成部106が生成した制約違反条件を順
次格納する。
は、処理開始直後には初期制約違反不等式生成部102
が設定した初期制約違反不等式のみを格納し、その後、
制約違反条件生成部106が生成した制約違反条件を順
次格納する。
【0044】図2は、制約充足条件を生成する解法につ
いての原理構成図を示している。図2において、まず、
計算機200内に設けられる初期制約充足不等式生成部
202は、外部より与えられた不等式系201から、制
約充足条件を示す不等式を生成する。
いての原理構成図を示している。図2において、まず、
計算機200内に設けられる初期制約充足不等式生成部
202は、外部より与えられた不等式系201から、制
約充足条件を示す不等式を生成する。
【0045】また、計算機200に接続された二次記憶
装置内に設けられる制約充足条件格納部203は、初期
制約充足不等式生成部202が生成した制約充足不等式
や、制約充足処理中に生成される制約充足条件を蓄積す
る。制約充足条件格納部203は、計算機200外の二
次記憶装置内に設けることもできるが、また、計算機2
00内のメモリ中に設けることも可能である。
装置内に設けられる制約充足条件格納部203は、初期
制約充足不等式生成部202が生成した制約充足不等式
や、制約充足処理中に生成される制約充足条件を蓄積す
る。制約充足条件格納部203は、計算機200外の二
次記憶装置内に設けることもできるが、また、計算機2
00内のメモリ中に設けることも可能である。
【0046】一方、これも計算機200内に設けられた
変数値変更部204は、変数値の値を現在の値から他の
値に変更する。この変更処理は、制約充足条件格納部2
03に格納されている制約充足条件をすべて満たすよう
に行なう。値が未定の変数を含む制約充足条件は成立し
ているとみなす。
変数値変更部204は、変数値の値を現在の値から他の
値に変更する。この変更処理は、制約充足条件格納部2
03に格納されている制約充足条件をすべて満たすよう
に行なう。値が未定の変数を含む制約充足条件は成立し
ているとみなす。
【0047】また、計算機200内に設けられた変数選
択部205は、値が未定の変数についてその値を選択す
る。このとき、制約充足条件格納部203に格納されて
いる制約充足条件をすべて成立させるように選択する。
値が未定の変数を含む制約充足条件は成立しているとみ
なす。
択部205は、値が未定の変数についてその値を選択す
る。このとき、制約充足条件格納部203に格納されて
いる制約充足条件をすべて成立させるように選択する。
値が未定の変数を含む制約充足条件は成立しているとみ
なす。
【0048】さらに、計算機200内に設けられた制約
充足条件生成部206は、変数変更部204または変数
選択部205の処理で変数値の変更/選択が不可能であ
った場合に、新しい制約充足条件を生成する。生成した
新しい制約充足条件は、制約充足条件格納部203に格
納する。
充足条件生成部206は、変数変更部204または変数
選択部205の処理で変数値の変更/選択が不可能であ
った場合に、新しい制約充足条件を生成する。生成した
新しい制約充足条件は、制約充足条件格納部203に格
納する。
【0049】この結果、制約充足条件格納部203に
は、処理開始直後には初期制約充足不等式生成部202
が設定した初期制約充足不等式のみを格納し、その後、
制約充足条件生成部206が生成した制約充足条件を順
次格納する。
は、処理開始直後には初期制約充足不等式生成部202
が設定した初期制約充足不等式のみを格納し、その後、
制約充足条件生成部206が生成した制約充足条件を順
次格納する。
【0050】以上の原理構成の動作を次に説明する。ま
ず、図1の制約違反条件を生成して問題を解く方式の原
理構成の動作を説明する。
ず、図1の制約違反条件を生成して問題を解く方式の原
理構成の動作を説明する。
【0051】最初に、ユーザが解きたい組合せ問題につ
いての不等式系101を計算機100に入力する。計算
機100は、不等式系101の入力を受けて、初期制約
違反不等式生成部102を起動し、入力された不等式系
101と相反する不等式を生成し、初期制約違反不等式
として制約違反条件格納部103に格納する。このと
き、不等式系101に大小関係を示す純粋な不等式だけ
ではなく等式が含まれる場合、与えられた制約である等
式を等価な二つの不等式に変更することにより、等式を
含む制約に対しても、その充足を行なわせることが可能
である。
いての不等式系101を計算機100に入力する。計算
機100は、不等式系101の入力を受けて、初期制約
違反不等式生成部102を起動し、入力された不等式系
101と相反する不等式を生成し、初期制約違反不等式
として制約違反条件格納部103に格納する。このと
き、不等式系101に大小関係を示す純粋な不等式だけ
ではなく等式が含まれる場合、与えられた制約である等
式を等価な二つの不等式に変更することにより、等式を
含む制約に対しても、その充足を行なわせることが可能
である。
【0052】初期制約違反不等式が制約違反条件格納部
103に格納されると、次に、変数値変更部104と変
数値選択部105が起動される。変数値変更部104
は、制約違反条件格納部103に格納されている制約違
反条件をどれも成立させないように変更する。また、変
数値が未定の変数が存在する場合には、変数値選択部1
05が該変数値を選択する。この場合も、制約違反条件
格納部103に格納されている制約違反条件をどれも成
立させないように選択する。
103に格納されると、次に、変数値変更部104と変
数値選択部105が起動される。変数値変更部104
は、制約違反条件格納部103に格納されている制約違
反条件をどれも成立させないように変更する。また、変
数値が未定の変数が存在する場合には、変数値選択部1
05が該変数値を選択する。この場合も、制約違反条件
格納部103に格納されている制約違反条件をどれも成
立させないように選択する。
【0053】この変数値変更/選択処理において、ある
変数の変数値の変更/選択に失敗する(すなわち、すべ
ての変数値について、それぞれ少なくとも一つの制約違
反条件が成立する)と、制約違反条件生成部106が起
動される。制約違反条件生成部106は、各変数値につ
いて成立している制約違反条件をそれぞれ一つ選び、各
々の条件中の当該変数にその変数値を代入して簡略化
し、これらすべての論理積を作り、制約違反条件として
制約違反条件格納部103に格納する。この制約違反条
件には、もはや当該変数は含まれない。
変数の変数値の変更/選択に失敗する(すなわち、すべ
ての変数値について、それぞれ少なくとも一つの制約違
反条件が成立する)と、制約違反条件生成部106が起
動される。制約違反条件生成部106は、各変数値につ
いて成立している制約違反条件をそれぞれ一つ選び、各
々の条件中の当該変数にその変数値を代入して簡略化
し、これらすべての論理積を作り、制約違反条件として
制約違反条件格納部103に格納する。この制約違反条
件には、もはや当該変数は含まれない。
【0054】この制約違反条件は現在成立しているか
ら、これに含まれる変数に対応する現在の変数値の組合
せを禁止する条件となるが、禁止する組合せは現在の組
合せに限定されず、この制約違反条件を満たす組合せは
これ以降すべて禁止される。
ら、これに含まれる変数に対応する現在の変数値の組合
せを禁止する条件となるが、禁止する組合せは現在の組
合せに限定されず、この制約違反条件を満たす組合せは
これ以降すべて禁止される。
【0055】制約違反条件が生成されると、再び変数値
変更部104が起動され、該制約違反条件が成立しない
ように、それに現れる変数の値を変更する。変数変更に
失敗すると、再び制約違反条件生成部106が制約違反
条件を生成し、制約違反条件格納部103に格納する。
一方、変更に成功すると、値が未定の変数が残っている
か否かを調べ、あれば、変数値選択部105が該変数値
を選択する。値が未定の変数が残っていないならば、解
が求まっていることになる。
変更部104が起動され、該制約違反条件が成立しない
ように、それに現れる変数の値を変更する。変数変更に
失敗すると、再び制約違反条件生成部106が制約違反
条件を生成し、制約違反条件格納部103に格納する。
一方、変更に成功すると、値が未定の変数が残っている
か否かを調べ、あれば、変数値選択部105が該変数値
を選択する。値が未定の変数が残っていないならば、解
が求まっていることになる。
【0056】図3は、本発明の作用説明図である。実線
は試行済みの経路、点線は未試行の経路を表している。
×で示す箇所で制約違反が検出されると、制約違反条件 fk ( x1,x2,a3,… ,an )>bk (ただし、a3,
… ,an は定数)が生成される。この制約違反条件を満
たす組合せは、図3に△で示すように、これ以降はすべ
て禁止されることになり、処理の無駄を省くことができ
る。
は試行済みの経路、点線は未試行の経路を表している。
×で示す箇所で制約違反が検出されると、制約違反条件 fk ( x1,x2,a3,… ,an )>bk (ただし、a3,
… ,an は定数)が生成される。この制約違反条件を満
たす組合せは、図3に△で示すように、これ以降はすべ
て禁止されることになり、処理の無駄を省くことができ
る。
【0057】次に、図2の制約充足条件を生成する原理
構成についての動作を説明する。最初に、ユーザが解き
たい組合せ問題についての不等式系201を計算機20
0に入力する。計算機200は、不等式系201の入力
を受けて、初期制約充足不等式生成部202を起動し、
通常は、該不等式をそのまま初期制約充足不等式として
制約充足条件格納部203に格納する。このとき、不等
式系201に大小関係を示す純粋な不等式だけではなく
等式が含まれる場合、与えられた制約である等式を等価
な二つの不等式に変更してから制約充足条件格納部20
3に格納する。
構成についての動作を説明する。最初に、ユーザが解き
たい組合せ問題についての不等式系201を計算機20
0に入力する。計算機200は、不等式系201の入力
を受けて、初期制約充足不等式生成部202を起動し、
通常は、該不等式をそのまま初期制約充足不等式として
制約充足条件格納部203に格納する。このとき、不等
式系201に大小関係を示す純粋な不等式だけではなく
等式が含まれる場合、与えられた制約である等式を等価
な二つの不等式に変更してから制約充足条件格納部20
3に格納する。
【0058】初期制約充足不等式が制約充足条件格納部
203に格納されると、次に、変数値変更部204と変
数値選択部205が起動される。変数値変更部204
は、制約充足条件格納部203に格納されている制約充
足条件をすべて満たすように変更する。また、変数値が
未定の変数が存在する場合には、変数値選択部205が
該変数値を選択する。この場合も、制約充足条件格納部
203に格納されている制約充足条件をすべて満たすよ
うに選択する。
203に格納されると、次に、変数値変更部204と変
数値選択部205が起動される。変数値変更部204
は、制約充足条件格納部203に格納されている制約充
足条件をすべて満たすように変更する。また、変数値が
未定の変数が存在する場合には、変数値選択部205が
該変数値を選択する。この場合も、制約充足条件格納部
203に格納されている制約充足条件をすべて満たすよ
うに選択する。
【0059】この変数値変更/選択処理において、ある
変数の変数値の変更/選択に失敗する(すなわち、すべ
ての変数値について、それぞれ少なくとも一つの制約充
足条件が不成立になる)と、制約充足条件生成部206
が起動される。制約充足条件生成部206は、各変数値
について成立していない制約充足条件をそれぞれ一つ選
び、各々の条件中の当該変数にその変数値を代入して簡
略化し、これらすべての論理和を作り、制約充足条件と
して制約充足条件格納部203に格納する。この制約充
足条件には、もはや当該変数は含まれない。
変数の変数値の変更/選択に失敗する(すなわち、すべ
ての変数値について、それぞれ少なくとも一つの制約充
足条件が不成立になる)と、制約充足条件生成部206
が起動される。制約充足条件生成部206は、各変数値
について成立していない制約充足条件をそれぞれ一つ選
び、各々の条件中の当該変数にその変数値を代入して簡
略化し、これらすべての論理和を作り、制約充足条件と
して制約充足条件格納部203に格納する。この制約充
足条件には、もはや当該変数は含まれない。
【0060】この制約充足条件は現在成立していないか
ら、これに含まれる変数に対応する現在の変数値の組合
せを禁止する条件となるが、禁止する組合せは現在の組
合せに限定されず、この制約充足条件を満たさない組合
せはこれ以降すべて禁止される。
ら、これに含まれる変数に対応する現在の変数値の組合
せを禁止する条件となるが、禁止する組合せは現在の組
合せに限定されず、この制約充足条件を満たさない組合
せはこれ以降すべて禁止される。
【0061】制約充足条件が生成されると、再び変数値
変更部104が起動され、該制約充足条件が成立するよ
うに、それに現れる変数の値を変更する。変数変更に失
敗すると、再び制約充足条件生成部206が制約充足条
件を生成し、制約充足条件格納部203に格納する。一
方、変更に成功すると、値が未定の変数が残っているか
否かを調べ、あれば、変数値選択部205が該変数値を
選択する。値が未定の変数が残っていないならば、解が
求まっていることになる。
変更部104が起動され、該制約充足条件が成立するよ
うに、それに現れる変数の値を変更する。変数変更に失
敗すると、再び制約充足条件生成部206が制約充足条
件を生成し、制約充足条件格納部203に格納する。一
方、変更に成功すると、値が未定の変数が残っているか
否かを調べ、あれば、変数値選択部205が該変数値を
選択する。値が未定の変数が残っていないならば、解が
求まっていることになる。
【0062】一方、図1及び図2の原理構成において、
組合せ制約最適化問題、すなわち、不等式系で与えられ
た制約を満たし、かつ、与えられた評価関数の値を最小
にするように各変数の離散的な値を決定する問題を解く
場合には次のように行なう。
組合せ制約最適化問題、すなわち、不等式系で与えられ
た制約を満たし、かつ、与えられた評価関数の値を最小
にするように各変数の離散的な値を決定する問題を解く
場合には次のように行なう。
【0063】評価関数に対応する不等式(以下、これを
可変不等式という)を設け、与えられた不等式系に可変
不等式を付加した組合せ制約充足問題を図1または図2
に示す原理構成によって解く。そして、可変不等式の制
約値を、 (得られた評価関数値)−ε 〈ここではεは十分小さ
な正数〉 に更新し、組合せ制約充足問題を解く方式を繰り返し適
用することにより、最適値を得る。このとき、変数を含
まない制約違反条件または制約充足条件が生成されたら
処理を停止する。直前に得られた解が最適解である。以
前(制約値が現在の値になる前)に生成した制約違反条
件または制約充足条件を参照しながら制約充足を行な
う。したがって、制約値を更新する前に制約充足に失敗
した際の情報によって、無駄な探索を省くことができる
のである。
可変不等式という)を設け、与えられた不等式系に可変
不等式を付加した組合せ制約充足問題を図1または図2
に示す原理構成によって解く。そして、可変不等式の制
約値を、 (得られた評価関数値)−ε 〈ここではεは十分小さ
な正数〉 に更新し、組合せ制約充足問題を解く方式を繰り返し適
用することにより、最適値を得る。このとき、変数を含
まない制約違反条件または制約充足条件が生成されたら
処理を停止する。直前に得られた解が最適解である。以
前(制約値が現在の値になる前)に生成した制約違反条
件または制約充足条件を参照しながら制約充足を行な
う。したがって、制約値を更新する前に制約充足に失敗
した際の情報によって、無駄な探索を省くことができる
のである。
【0064】また、評価関数値を最大にするような組合
せ制約最適化問題の場合も同様に、評価関数に対応する
不等式を可変不等式として付加して組合せ制約充足問題
を解くが、このとき、 (得られた評価関数値)+ε 〈ここではεは十分小さ
な正数〉 に更新し、組合せ制約充足問題を解く方式を繰り返し適
用することにより、最適値を得る。
せ制約最適化問題の場合も同様に、評価関数に対応する
不等式を可変不等式として付加して組合せ制約充足問題
を解くが、このとき、 (得られた評価関数値)+ε 〈ここではεは十分小さ
な正数〉 に更新し、組合せ制約充足問題を解く方式を繰り返し適
用することにより、最適値を得る。
【0065】初めからすべての変数値が既知でないよう
な場合であって、新しい変数値が追加になるような場合
には、制約違反条件生成部106または制約充足条件生
成部206が生成する制約違反条件または制約充足条件
に、当該変数の値はこれ以上ないことを示すフラグまた
は当該変数の値がこれ以上あることを示すフラグを付加
し、実際に当該変数の新しい変数値を使用する際には、
このフラグが付いている制約違反条件または制約充足条
件を無効にする。これにより、新しい変数値に対応可能
にすることができる。
な場合であって、新しい変数値が追加になるような場合
には、制約違反条件生成部106または制約充足条件生
成部206が生成する制約違反条件または制約充足条件
に、当該変数の値はこれ以上ないことを示すフラグまた
は当該変数の値がこれ以上あることを示すフラグを付加
し、実際に当該変数の新しい変数値を使用する際には、
このフラグが付いている制約違反条件または制約充足条
件を無効にする。これにより、新しい変数値に対応可能
にすることができる。
【0066】このとき、図1の原理構成の場合には、意
味的には当該変数の値がこれ以上ない(フラグを付加す
る時点では真である)ことを示すフラグを、制約違反条
件に対して論理積で付加し、当該変数の新しい変数値を
使用する際には、このフラグを真→偽とすることにより
制約違反条件を無効にする。さらに、この制約違反条件
から生成された制約違反条件も無効にする。それ以外の
制約違反条件は引き続いて参照される。
味的には当該変数の値がこれ以上ない(フラグを付加す
る時点では真である)ことを示すフラグを、制約違反条
件に対して論理積で付加し、当該変数の新しい変数値を
使用する際には、このフラグを真→偽とすることにより
制約違反条件を無効にする。さらに、この制約違反条件
から生成された制約違反条件も無効にする。それ以外の
制約違反条件は引き続いて参照される。
【0067】図2の制約充足条件の原理構成の場合に
は、当該変数の値がこれ以上ある(フラグを付加する時
点では偽である)ことを示すフラグを、制約充足条件に
対して論理和で付加し、当該変数の新しい変数値を使用
する際には、このフラグを偽→真にすることにより制約
充足条件を無効にする。さらに、この制約充足条件から
生成された制約充足条件も無効にする。それ以外の制約
充足条件は引き続き参照される。
は、当該変数の値がこれ以上ある(フラグを付加する時
点では偽である)ことを示すフラグを、制約充足条件に
対して論理和で付加し、当該変数の新しい変数値を使用
する際には、このフラグを偽→真にすることにより制約
充足条件を無効にする。さらに、この制約充足条件から
生成された制約充足条件も無効にする。それ以外の制約
充足条件は引き続き参照される。
【0068】以上のように処理するので、当該変数の変
数値がもうないという仮定から得られた情報だけを取り
消すことになり、新しい変数値に対応できる一方、以前
に生成した制約充足の失敗条件を利用できる。
数値がもうないという仮定から得られた情報だけを取り
消すことになり、新しい変数値に対応できる一方、以前
に生成した制約充足の失敗条件を利用できる。
【0069】不等式の関数の値が単調に増加あるいは減
少するような問題においては、本発明の第一または第二
の構成において、上記変数値変更部と変数値選択部が設
定したある変数値の組合せが制約を満たさない(すなわ
ち、制約違反条件のなかに成立するものがあるか、また
は、制約充足条件のなかに成立しないものがある)場合
に、制約違反条件生成部106または前記制約充足条件
生成部206は、不等式の左辺の偏微分係数を利用して
制約違反条件または制約充足条件を生成する。これによ
って、新たな制約違反条件または制約充足条件を生成す
ることができ、効率よく問題を解くことが可能になる。
少するような問題においては、本発明の第一または第二
の構成において、上記変数値変更部と変数値選択部が設
定したある変数値の組合せが制約を満たさない(すなわ
ち、制約違反条件のなかに成立するものがあるか、また
は、制約充足条件のなかに成立しないものがある)場合
に、制約違反条件生成部106または前記制約充足条件
生成部206は、不等式の左辺の偏微分係数を利用して
制約違反条件または制約充足条件を生成する。これによ
って、新たな制約違反条件または制約充足条件を生成す
ることができ、効率よく問題を解くことが可能になる。
【0070】すなわち、第一の構成においては、初期制
約違反不等式生成部103が作成した不等式系101に
ついての制約違反不等式の左辺をそれぞれの変数に関し
て偏微分し、該変数に関して単調増加もしくは単調減少
の傾向にあるか否かを解析し、傾向がある場合には該解
析結果である偏微分係数を蓄えておく。そして、変数値
変更部104あるいは変数値選択部105による変数値
変更/選択に失敗した場合には、制約違反条件生成部1
06が起動され、制約違反条件生成部106は、格納し
ておいた偏微分係数を利用して新しい制約違反条件を生
成し、制約違反条件格納部103に格納する。偏微分係
数を利用した新たな制約違反条件が付加されるので、問
題解決を効率的に行なうことが可能になる。
約違反不等式生成部103が作成した不等式系101に
ついての制約違反不等式の左辺をそれぞれの変数に関し
て偏微分し、該変数に関して単調増加もしくは単調減少
の傾向にあるか否かを解析し、傾向がある場合には該解
析結果である偏微分係数を蓄えておく。そして、変数値
変更部104あるいは変数値選択部105による変数値
変更/選択に失敗した場合には、制約違反条件生成部1
06が起動され、制約違反条件生成部106は、格納し
ておいた偏微分係数を利用して新しい制約違反条件を生
成し、制約違反条件格納部103に格納する。偏微分係
数を利用した新たな制約違反条件が付加されるので、問
題解決を効率的に行なうことが可能になる。
【0071】一方、第二の構成においても同様である。
初期制約充足不等式生成部203が作成した不等式系2
01についての制約条件不等式の左辺をそれぞれの変数
について偏微分し、該変数に関して単調増加もしくは単
調減少の傾向があるか否かを解析し、傾向がある場合に
は偏微分係数を蓄えておく。そして、変数変更部104
あるいは変数選択部205による変数値変更/選択に失
敗した場合には、制約充足条件生成部206が起動さ
れ、制約充足条件生成部206は、格納しておいた偏微
分係数を利用して新しい制約充足条件を生成し、制約充
足条件格納部203に格納する。
初期制約充足不等式生成部203が作成した不等式系2
01についての制約条件不等式の左辺をそれぞれの変数
について偏微分し、該変数に関して単調増加もしくは単
調減少の傾向があるか否かを解析し、傾向がある場合に
は偏微分係数を蓄えておく。そして、変数変更部104
あるいは変数選択部205による変数値変更/選択に失
敗した場合には、制約充足条件生成部206が起動さ
れ、制約充足条件生成部206は、格納しておいた偏微
分係数を利用して新しい制約充足条件を生成し、制約充
足条件格納部203に格納する。
【0072】最後に、本発明の第一または第二の構成に
おいて、複数のプロセサを使用して動作させることによ
り、処理速度の向上を図ることが可能である。すなわ
ち、複数のプロセサのそれぞれに、変数値、もしくは、
制約違反条件または制約充足条件、もしくは、変数値お
よび制約違反条件または制約充足条件、もしくは、制約
違反条件または制約充足条件が複数の条件の論理積また
は論理和となっている場合には該制約違反条件または制
約充足条件の部分論理式を分割して持たせることにより
並列的に第一あるいは第二の構成の動作を実行するので
ある。好適実施例の説明 以下、図面を参照しながら本発明の好適実施例につき説
明する。
おいて、複数のプロセサを使用して動作させることによ
り、処理速度の向上を図ることが可能である。すなわ
ち、複数のプロセサのそれぞれに、変数値、もしくは、
制約違反条件または制約充足条件、もしくは、変数値お
よび制約違反条件または制約充足条件、もしくは、制約
違反条件または制約充足条件が複数の条件の論理積また
は論理和となっている場合には該制約違反条件または制
約充足条件の部分論理式を分割して持たせることにより
並列的に第一あるいは第二の構成の動作を実行するので
ある。好適実施例の説明 以下、図面を参照しながら本発明の好適実施例につき説
明する。
【0073】図4は、汎用コンピュータ等の計算機シス
テムで実現される本発明の好適実施例のシステム構成図
である。本実施例のシステムは、前述の第一の原理構成
を実現するものであり、制約違反条件を生成しながら組
合せ制約問題を解く。
テムで実現される本発明の好適実施例のシステム構成図
である。本実施例のシステムは、前述の第一の原理構成
を実現するものであり、制約違反条件を生成しながら組
合せ制約問題を解く。
【0074】計算機300は、CPU301およびI/
Oインタフェース302、主記憶303からなる。CP
U301は、主記憶303に格納されているソフトウエ
アに従った処理を実行し、I/Oインタフェース303
は、CPU301の命令に従って入出力装置304や外
部記憶装置305と計算機300間のやりとりを行な
う。
Oインタフェース302、主記憶303からなる。CP
U301は、主記憶303に格納されているソフトウエ
アに従った処理を実行し、I/Oインタフェース303
は、CPU301の命令に従って入出力装置304や外
部記憶装置305と計算機300間のやりとりを行な
う。
【0075】本発明のシステムは主に主記憶303内に
格納されるソフトウエアとして実現される。まず、制御
部310は、組合せ問題解法の全体の制御を行なう。そ
して、この制御部310の要求により、制約充足処理部
320が組合せ制約充足問題を解く処理を実行する。ま
た、変数値変更部330および変数値選択部340は、
制約充足処理部320の要求により変数値を変更/選択
する処理を実行する。
格納されるソフトウエアとして実現される。まず、制御
部310は、組合せ問題解法の全体の制御を行なう。そ
して、この制御部310の要求により、制約充足処理部
320が組合せ制約充足問題を解く処理を実行する。ま
た、変数値変更部330および変数値選択部340は、
制約充足処理部320の要求により変数値を変更/選択
する処理を実行する。
【0076】また、外部記憶装置305には、生成した
制約違反条件を格納する制約違反条件格納部350を設
ける。なお、制約違反条件格納部350は、処理の高速
性が要求される場合には計算機300内の主記憶303
内に設けることが可能である。
制約違反条件を格納する制約違反条件格納部350を設
ける。なお、制約違反条件格納部350は、処理の高速
性が要求される場合には計算機300内の主記憶303
内に設けることが可能である。
【0077】まず、本システムを起動すると、制御部3
10は、ユーザに対して組合せ問題を表現する不等式系
を入力するように要求する。ユーザは、これを受けて入
出力装置304から不等式系を入力する。入力された不
等式系は初期制約違反不等式として制約違反条件格納部
350に格納される。この後、制御部310は制約充足
処理部320を起動し、制約充足処理を実行する。制約
充足処理後、解をI/Oインタフェース302を介して
入出力装置304に出力する。
10は、ユーザに対して組合せ問題を表現する不等式系
を入力するように要求する。ユーザは、これを受けて入
出力装置304から不等式系を入力する。入力された不
等式系は初期制約違反不等式として制約違反条件格納部
350に格納される。この後、制御部310は制約充足
処理部320を起動し、制約充足処理を実行する。制約
充足処理後、解をI/Oインタフェース302を介して
入出力装置304に出力する。
【0078】次に、制約となる不等式が係数がすべて1
の線形不等式(ただし、不等号は≦)の場合についてデ
ータ構造の例を示す。 ◎番号付け 変数番号 :0,1,…,n-agent −1 変数値番号(変数i ):1,2,…,alt i 属性値番号 :1,2,3,… ここで、n-agent は変数の数。alt i については後述す
る。 ◎制約違反不等式テーブル(int dnj DNJ AGENT ) DNJ、AGENTは、それぞれ、初期制約違反不等式
の数の上限、変数の数の上限を示す。ここで、制約違反
条件をNJと呼ぶので、初期制約違反不等式をデフォル
トNJ(dnj)と名付けている。
の線形不等式(ただし、不等号は≦)の場合についてデ
ータ構造の例を示す。 ◎番号付け 変数番号 :0,1,…,n-agent −1 変数値番号(変数i ):1,2,…,alt i 属性値番号 :1,2,3,… ここで、n-agent は変数の数。alt i については後述す
る。 ◎制約違反不等式テーブル(int dnj DNJ AGENT ) DNJ、AGENTは、それぞれ、初期制約違反不等式
の数の上限、変数の数の上限を示す。ここで、制約違反
条件をNJと呼ぶので、初期制約違反不等式をデフォル
トNJ(dnj)と名付けている。
【0079】dnj i j は、初期制約違反不等式iが参
照する変数jの属性値番号である。論理設計の例では、
属性値番号1はゲート数、2以上はコンポーネント内の
パスの遅延時間に対応する。該当なし(不等式に当該変
数が現れない)は0とする。 ◎制約値テーブル(int constr DNJ ) constr i (0≦i≦n-path) は初期制約違反不等式iに
対応する制約値。ここで、n-pathは不等式の総数から1
を引いた数。論理設計の例では遅延制約を付加するパス
の数になる。 ◎データ・テーブル(float des AGENT ALT ATR) ALT,ATRは、それぞれ、変数値の数の上限、属性
値の数の上限を示す。des i j k は、変数iのj+1
番目の変数値の属性値番号k+1の値。 ◎変数値テーブル(int alt AGENT ) alt i ( 0≦i≦n-agent −1)は、変数iの変数値の
総数。 ◎inテーブル(int in AGENT ) in i は変数iのinの変数値。0なら、すべての変数値
がout であることを示す。ただし、現在、変数の取って
いる値をinであるといい、変数の値が未定の場合にはす
べての変数値がout であるという。 ◎out 変数スタック(int out AGENT ) inテーブルのエントリが0となっている(つまりすべて
の変数値がout である) 変数の番号を格納するスタック
である。 ◎conjunct conjunctは制約違反条件の論理積を構成する項
であり、次の構造を持つ。
照する変数jの属性値番号である。論理設計の例では、
属性値番号1はゲート数、2以上はコンポーネント内の
パスの遅延時間に対応する。該当なし(不等式に当該変
数が現れない)は0とする。 ◎制約値テーブル(int constr DNJ ) constr i (0≦i≦n-path) は初期制約違反不等式iに
対応する制約値。ここで、n-pathは不等式の総数から1
を引いた数。論理設計の例では遅延制約を付加するパス
の数になる。 ◎データ・テーブル(float des AGENT ALT ATR) ALT,ATRは、それぞれ、変数値の数の上限、属性
値の数の上限を示す。des i j k は、変数iのj+1
番目の変数値の属性値番号k+1の値。 ◎変数値テーブル(int alt AGENT ) alt i ( 0≦i≦n-agent −1)は、変数iの変数値の
総数。 ◎inテーブル(int in AGENT ) in i は変数iのinの変数値。0なら、すべての変数値
がout であることを示す。ただし、現在、変数の取って
いる値をinであるといい、変数の値が未定の場合にはす
べての変数値がout であるという。 ◎out 変数スタック(int out AGENT ) inテーブルのエントリが0となっている(つまりすべて
の変数値がout である) 変数の番号を格納するスタック
である。 ◎conjunct conjunctは制約違反条件の論理積を構成する項
であり、次の構造を持つ。
【0080】 struct cng { int dnj; int table AGENT ; float value; struct cnj *next; }; メンバdnj は起源である初期制約違反不等式の番号を示
す。メンバtable は変数の情報を示す。table i が0な
ら、変数iはもともと該当なし(起源である初期制約違
反不等式に現れない)か、数値化されてもはや変数では
ない。メンバvalue は数値化された部分の合計値を格納
する。メンバnextは次のconjunct(もしあれば)へのポ
インタを格納する。次のconjunctがなければNULLで
ある。 ◎制約違反条件テーブル(struct cnj *nj NJ ) NJは制約違反条件の数(初期制約違反不等式は除く)
の上限を示す。
す。メンバtable は変数の情報を示す。table i が0な
ら、変数iはもともと該当なし(起源である初期制約違
反不等式に現れない)か、数値化されてもはや変数では
ない。メンバvalue は数値化された部分の合計値を格納
する。メンバnextは次のconjunct(もしあれば)へのポ
インタを格納する。次のconjunctがなければNULLで
ある。 ◎制約違反条件テーブル(struct cnj *nj NJ ) NJは制約違反条件の数(初期制約違反不等式は除く)
の上限を示す。
【0081】図5は、本発明の好適実施例に係る制約充
足システムの処理の流れを示している。この処理は図4
の制御部310のソフトウエアに対応する。まず、入出
力装置304から、制約充足問題を解くための初期値を
ユーザに設定させる(S410)。すなわち、変数の数
(n-agent)、不等式の総数から1を引いた数(n-path)
を設定し、制約違反不等式テーブル(dnj) を完成する。
足システムの処理の流れを示している。この処理は図4
の制御部310のソフトウエアに対応する。まず、入出
力装置304から、制約充足問題を解くための初期値を
ユーザに設定させる(S410)。すなわち、変数の数
(n-agent)、不等式の総数から1を引いた数(n-path)
を設定し、制約違反不等式テーブル(dnj) を完成する。
【0082】次に、データ入力(S420)では、変数
値テーブル(alt) およびデータ・テーブル(des) を完成
させる。すなわち、変数値の総数とデータ(具体的に
は、各変数の各変数値の各属性値)を設定する。また、
inテーブルのエントリをすべて1にする。
値テーブル(alt) およびデータ・テーブル(des) を完成
させる。すなわち、変数値の総数とデータ(具体的に
は、各変数の各変数値の各属性値)を設定する。また、
inテーブルのエントリをすべて1にする。
【0083】この後、制約条件をユーザに入力させる
(S430)。インタラクティブに各不等式の制約値を
入力させ、その結果を制約値テーブル(constr)に書き込
む。以上が組合せ制約充足問題を解く場合にまず行なう
初期処理であり、この後、制約充足処理を実行する(S
440)。これについては、後述する(図6)。この処
理において、制約充足に成功すれば、結果(inテーブル
のエントリ) と各不等式に対応する属性値(論理設計の
例では、ゲート数やパス全体の遅延時間)を出力し、制
約充足に失敗すれば、最終的な制約違反条件(そのすて
のconjunctの左辺が数値になっているもの)を出力す
る。
(S430)。インタラクティブに各不等式の制約値を
入力させ、その結果を制約値テーブル(constr)に書き込
む。以上が組合せ制約充足問題を解く場合にまず行なう
初期処理であり、この後、制約充足処理を実行する(S
440)。これについては、後述する(図6)。この処
理において、制約充足に成功すれば、結果(inテーブル
のエントリ) と各不等式に対応する属性値(論理設計の
例では、ゲート数やパス全体の遅延時間)を出力し、制
約充足に失敗すれば、最終的な制約違反条件(そのすて
のconjunctの左辺が数値になっているもの)を出力す
る。
【0084】この結果を受けて、ユーザに処理を続行す
るか否かを問う(S450)。続行しない場合(N)に
は全処理を終了する。また、続行する場合(Y)には、
NJ(制約違反条件)のクリアが必要か否かをユーザに
判断させる(S460)。必要ない場合(N)には、制
約条件入力処理S430に戻り、それ以下の処理を繰り
返す。一方、クリアが必要な場合(Y)にはS440
(実行)中に蓄積された制約違反条件をすべてクリアし
(S470)、制約条件入力処理S430に戻ってS4
30以下の処理を繰り返す。
るか否かを問う(S450)。続行しない場合(N)に
は全処理を終了する。また、続行する場合(Y)には、
NJ(制約違反条件)のクリアが必要か否かをユーザに
判断させる(S460)。必要ない場合(N)には、制
約条件入力処理S430に戻り、それ以下の処理を繰り
返す。一方、クリアが必要な場合(Y)にはS440
(実行)中に蓄積された制約違反条件をすべてクリアし
(S470)、制約条件入力処理S430に戻ってS4
30以下の処理を繰り返す。
【0085】図6は、図5のS440に示した制約充足
処理の処理フローチャートである。まず、成立している
制約違反条件があるか否かを判定する(S500)。成
立している制約違反条件がある場合(Y)、変数値を変
更する処理を実行する(S501)。すなわち、現在注
目している制約違反条件のconjunct(制約違反
条件の論理積を構成する項)のうち、含む変数の数が最
小(正)のものを一つ選び、そこに現れる変数(すなわ
ち、対応するフィールドの値が非零)のうち現在の属性
値が最も大きいものを選び(iとする)、in i のエン
トリを他の変数値に変更する。ただし、制約違反条件に
よって禁止されているものは選ばない。したがって、注
目している属性値が今より減少しないものは選ばない。
変数値を変更する際、並行して制約違反条件の合成を進
めていき、変更が失敗すると(すなわち、すべての変数
値が禁止される場合)、合成してきた制約違反条件を出
力する。
処理の処理フローチャートである。まず、成立している
制約違反条件があるか否かを判定する(S500)。成
立している制約違反条件がある場合(Y)、変数値を変
更する処理を実行する(S501)。すなわち、現在注
目している制約違反条件のconjunct(制約違反
条件の論理積を構成する項)のうち、含む変数の数が最
小(正)のものを一つ選び、そこに現れる変数(すなわ
ち、対応するフィールドの値が非零)のうち現在の属性
値が最も大きいものを選び(iとする)、in i のエン
トリを他の変数値に変更する。ただし、制約違反条件に
よって禁止されているものは選ばない。したがって、注
目している属性値が今より減少しないものは選ばない。
変数値を変更する際、並行して制約違反条件の合成を進
めていき、変更が失敗すると(すなわち、すべての変数
値が禁止される場合)、合成してきた制約違反条件を出
力する。
【0086】上記の変数選択法は、現在の寄与がもっと
も大きいものを選ぶ方法であるが、変数の選択順を固定
しておくこともできる。変数値の変更処理において変数
値がすべて禁止であったか否かを次に判定する(S50
2)。すべて禁止であった場合(Y)には、変数値変更
処理(S501)で合成した制約違反条件(NJ)の左
辺が数値か否かを判定する(S503)。数値でない場
合(N)には、合成した制約違反条件を制約違反条件テ
ーブルに登録し、このコピーを作る(以後の処理のた
め)(S504)。その後、S501の変数値変更処理
に戻り、同様の処理を繰り返す。S503においてNJ
の左辺が数値の場合(Y)、制約充足処理は失敗したこ
とを示すので、合成された制約違反条件(NJ)を出力
して(S505)処理を終了する。
も大きいものを選ぶ方法であるが、変数の選択順を固定
しておくこともできる。変数値の変更処理において変数
値がすべて禁止であったか否かを次に判定する(S50
2)。すべて禁止であった場合(Y)には、変数値変更
処理(S501)で合成した制約違反条件(NJ)の左
辺が数値か否かを判定する(S503)。数値でない場
合(N)には、合成した制約違反条件を制約違反条件テ
ーブルに登録し、このコピーを作る(以後の処理のた
め)(S504)。その後、S501の変数値変更処理
に戻り、同様の処理を繰り返す。S503においてNJ
の左辺が数値の場合(Y)、制約充足処理は失敗したこ
とを示すので、合成された制約違反条件(NJ)を出力
して(S505)処理を終了する。
【0087】S500において成立している制約違反条
件がない場合(N)、および、変数値変更処理S501
においてすべての変数値変更が禁止であった場合(S5
02のN)、inテーブルのエントリに0があるか否かを
判定する(S506)。すなわち、未定の変数値がある
か(0がある)否か(すべて1)を判定する。未定の変
数値がない場合(N)、制約充足なのでNULLを返し
て処理を終了する(S507)。
件がない場合(N)、および、変数値変更処理S501
においてすべての変数値変更が禁止であった場合(S5
02のN)、inテーブルのエントリに0があるか否かを
判定する(S506)。すなわち、未定の変数値がある
か(0がある)否か(すべて1)を判定する。未定の変
数値がない場合(N)、制約充足なのでNULLを返し
て処理を終了する(S507)。
【0088】一方、inテーブルのエントリに0がある場
合(Y)には、変数値を選択する処理を実行する(S5
08)。すなわち、inテーブルのエントリが0である変
数(out 変数スタックのトップ) を選び、一つの変数値
をinに設定する。ただし、制約違反条件によって禁止さ
れている変数値はinにしない。変数値変更と同様、並行
して制約違反条件の合成を進めていく。変数値選択処理
後S502に戻り、処理を繰り返す。
合(Y)には、変数値を選択する処理を実行する(S5
08)。すなわち、inテーブルのエントリが0である変
数(out 変数スタックのトップ) を選び、一つの変数値
をinに設定する。ただし、制約違反条件によって禁止さ
れている変数値はinにしない。変数値変更と同様、並行
して制約違反条件の合成を進めていく。変数値選択処理
後S502に戻り、処理を繰り返す。
【0089】制約違反条件の合成では、各変数値につい
て成立している制約違反条件をそれぞれ一つ選び、各々
の条件中の当該変数にその変数値の属性値を代入して簡
略化する。例えば、 x1 +x2 +10>13 という制約違反条件(NJ)のx2 にその値c21の属性
値(例えば2)を代入して、 x1 +12>13 とする。また、これらの論理積を作った後も簡略化す
る。例えば、 x1 +12>13∧x1 +11>13 (c22の属性値
(例えば1)を代入したもの)から、 x1 +11>13 と簡略化する。
て成立している制約違反条件をそれぞれ一つ選び、各々
の条件中の当該変数にその変数値の属性値を代入して簡
略化する。例えば、 x1 +x2 +10>13 という制約違反条件(NJ)のx2 にその値c21の属性
値(例えば2)を代入して、 x1 +12>13 とする。また、これらの論理積を作った後も簡略化す
る。例えば、 x1 +12>13∧x1 +11>13 (c22の属性値
(例えば1)を代入したもの)から、 x1 +11>13 と簡略化する。
【0090】図7は、図6の変数値変更処理S501
(S502を含む)の詳細な処理内容を示している。ま
ず、変数値変更処理では、現在の寄与が最も大きい変数
を選ぶ(S601)。なお、変数の選択順を固定にして
おいてもよい。変数の選択順が固定の場合には、あらが
じめ決められた順番で変数を選択する。
(S502を含む)の詳細な処理内容を示している。ま
ず、変数値変更処理では、現在の寄与が最も大きい変数
を選ぶ(S601)。なお、変数の選択順を固定にして
おいてもよい。変数の選択順が固定の場合には、あらが
じめ決められた順番で変数を選択する。
【0091】次に、現在注目している制約違反条件に対
して選択した変数に対応するフィールドに、その変数の
現在の変数値の該当する属性値を書き込む(S60
2)。インプリメンテーション上は、変数をiとする
と、現在注目している制約違反条件についてのtable i
が0でない各conjunctについて、table i に0を代入し
てvalue を変数iの現在の変数値の該当する属性値だけ
増やす。
して選択した変数に対応するフィールドに、その変数の
現在の変数値の該当する属性値を書き込む(S60
2)。インプリメンテーション上は、変数をiとする
と、現在注目している制約違反条件についてのtable i
が0でない各conjunctについて、table i に0を代入し
てvalue を変数iの現在の変数値の該当する属性値だけ
増やす。
【0092】次に、NJの簡略化を行なう(S60
3)。簡略化は、図6で説明した x1 +12>13∧x1 +11>13から x1 +11>13への処理である。 簡略化処理(S603)の後、試していない変数値があ
るか否かを判定する(S604)。ない場合には
(N)、変数値変更に失敗したものとして呼び出し元へ
制御を移す。このときNJを返す(S605)。一方、
試していない変数値がある場合(Y)には、変数値設定
処理を行なう(S606)。すなわち、試していない変
数値を一つ選んで設定する。そして、蓄積されている制
約違反条件が成立するか否かをチェックする(S60
7)。
3)。簡略化は、図6で説明した x1 +12>13∧x1 +11>13から x1 +11>13への処理である。 簡略化処理(S603)の後、試していない変数値があ
るか否かを判定する(S604)。ない場合には
(N)、変数値変更に失敗したものとして呼び出し元へ
制御を移す。このときNJを返す(S605)。一方、
試していない変数値がある場合(Y)には、変数値設定
処理を行なう(S606)。すなわち、試していない変
数値を一つ選んで設定する。そして、蓄積されている制
約違反条件が成立するか否かをチェックする(S60
7)。
【0093】制約違反条件を満たさない場合(N)は、
変数値変更成功であり、NULLを呼び出し元に返す
(S608)。一方、制約違反条件を満たす場合(Y)
は、その制約違反条件に該当する属性値を書き込んだも
のと、その時点までに合成した制約違反条件との論理積
を作る(S609)。そして、S603のNJ簡略化処
理に戻り、以下の処理を繰り返す。
変数値変更成功であり、NULLを呼び出し元に返す
(S608)。一方、制約違反条件を満たす場合(Y)
は、その制約違反条件に該当する属性値を書き込んだも
のと、その時点までに合成した制約違反条件との論理積
を作る(S609)。そして、S603のNJ簡略化処
理に戻り、以下の処理を繰り返す。
【0094】図6のNJストア(S504)では、変数
値変更または変数値選択の結果返された制約違反条件
(NJ)を、制約違反条件テーブルに登録し、そのコピ
ーを作ることになる。そのコピーには、直後の変数値変
更において、図7に示す属性値書き込み(S602)の
処理により属性値が書き込まれることになる。
値変更または変数値選択の結果返された制約違反条件
(NJ)を、制約違反条件テーブルに登録し、そのコピ
ーを作ることになる。そのコピーには、直後の変数値変
更において、図7に示す属性値書き込み(S602)の
処理により属性値が書き込まれることになる。
【0095】以上の処理では、制約違反条件を扱ってい
るが、これとは逆に、制約充足条件の成立/不成立を扱
うことにより、同様に処理目的を達成することが可能で
ある。
るが、これとは逆に、制約充足条件の成立/不成立を扱
うことにより、同様に処理目的を達成することが可能で
ある。
【0096】図8は、図4の好適実施例において組合せ
制約最適化問題を解く最適化システムの処理フローチャ
ートである。なお、ここでは説明を簡単にするために、
データがすべて整数の場合の処理を取り上げる。したが
って、評価関数に対応する可変不等式の制約を、得られ
た評価関数値より小さい(大きい)最大(最小)の整数
とすればよいことになる。データがすべて整数でなくて
も同様に処理することが可能である。
制約最適化問題を解く最適化システムの処理フローチャ
ートである。なお、ここでは説明を簡単にするために、
データがすべて整数の場合の処理を取り上げる。したが
って、評価関数に対応する可変不等式の制約を、得られ
た評価関数値より小さい(大きい)最大(最小)の整数
とすればよいことになる。データがすべて整数でなくて
も同様に処理することが可能である。
【0097】まず、初期設定を行なう(S701)。す
なわち、変数の数(n-agent) 、不等式の総数から1引い
た数(n-path) を設定し、制約違反不等式テーブル(dn
j) を完成する。
なわち、変数の数(n-agent) 、不等式の総数から1引い
た数(n-path) を設定し、制約違反不等式テーブル(dn
j) を完成する。
【0098】次に、データ入力では、変数値テーブル(a
lt) およびデータ・テーブル(des)を完成する(S70
2)。すなわち、変数値の総数とデータ(具体的には、
各変数の各変数値の属性値)を設定する。また、inテー
ブルのエントリをすべて1にする。
lt) およびデータ・テーブル(des)を完成する(S70
2)。すなわち、変数値の総数とデータ(具体的には、
各変数の各変数値の属性値)を設定する。また、inテー
ブルのエントリをすべて1にする。
【0099】次に、評価関数を選択する処理を行なう
(S703)。すなわち、0からn-pathまでの制約条件
のうちどれを最適化の評価関数にするかを選択し、その
(制約値としての)初期値を入力し、制約値テーブル
(constr) に書き込む。
(S703)。すなわち、0からn-pathまでの制約条件
のうちどれを最適化の評価関数にするかを選択し、その
(制約値としての)初期値を入力し、制約値テーブル
(constr) に書き込む。
【0100】そして、組合せ制約の各不等式をインタラ
クティブに入力する(S704)。すなわち、各不等式
(評価関数を除く)の制約値を入力し、その結果を制約
値テーブル(constr) に書き込む。
クティブに入力する(S704)。すなわち、各不等式
(評価関数を除く)の制約値を入力し、その結果を制約
値テーブル(constr) に書き込む。
【0101】以上の処理の後、制約充足処理を実行する
(S705)。実行では、配列in-save(int in-save AG
ENT ) を0に初期化し、制約充足アルゴリズムを実行す
る。制約充足に成功すると、結果(inテーブルのエント
リ) を配列in-save にコピー(上書き)し、評価関数の
値を計算し、その値より小さい(大きい)最大(最小)
の整数を新しい制約値として制約値テーブル(constr)
に書き込み、失敗するまで制約充足処理を繰り返す。最
終的に制約充足に失敗すると、結果(配列in-save のエ
ントリ) および各不等式に対応する属性値(論理設計の
例では、ゲート数やパス全体のディレイ)を出力する。
1回も制約充足に成功しなかった場合は、結果の代わり
に、(評価関数の初期制約値に対する)実行可能解がな
いことを示す最終的な制約違反条件(そのすべてのconj
unctの左辺が数値になっているもの) を出力する。
(S705)。実行では、配列in-save(int in-save AG
ENT ) を0に初期化し、制約充足アルゴリズムを実行す
る。制約充足に成功すると、結果(inテーブルのエント
リ) を配列in-save にコピー(上書き)し、評価関数の
値を計算し、その値より小さい(大きい)最大(最小)
の整数を新しい制約値として制約値テーブル(constr)
に書き込み、失敗するまで制約充足処理を繰り返す。最
終的に制約充足に失敗すると、結果(配列in-save のエ
ントリ) および各不等式に対応する属性値(論理設計の
例では、ゲート数やパス全体のディレイ)を出力する。
1回も制約充足に成功しなかった場合は、結果の代わり
に、(評価関数の初期制約値に対する)実行可能解がな
いことを示す最終的な制約違反条件(そのすべてのconj
unctの左辺が数値になっているもの) を出力する。
【0102】以上の制約充足処理が終了し、制約充足処
理の結果が得られると、以上の処理を繰り返すか否かを
ユーザに問い合わせる(S706)。続行しない場合
(N)には処理を終了する。一方、続行する場合(Y)
には、制約違反条件(NJ)をクリアする必要があるか
否かをユーザに問い合わせる(S707)。そして、必
要がある場合(Y)にはNJのクリアを行ない(S70
8)、必要がない場合(N)にはそのまま、S703の
評価関数選択処理に戻り、以下の処理を繰り返す。
理の結果が得られると、以上の処理を繰り返すか否かを
ユーザに問い合わせる(S706)。続行しない場合
(N)には処理を終了する。一方、続行する場合(Y)
には、制約違反条件(NJ)をクリアする必要があるか
否かをユーザに問い合わせる(S707)。そして、必
要がある場合(Y)にはNJのクリアを行ない(S70
8)、必要がない場合(N)にはそのまま、S703の
評価関数選択処理に戻り、以下の処理を繰り返す。
【0103】次に、組合せ最適化問題の具体例につい
て、本発明を適用した例を説明する。問題としては、
『数理計画(刀根薫著)』に挙げられているナップザッ
ク問題を取り上げる。この問題は以下のようなものであ
る。 〔問題〕『遠足に持っていくナップザックに入れていく
候補の品物が4種類ある。容量の制限を満たして期待さ
れる価値の総和を最大にしたい。
て、本発明を適用した例を説明する。問題としては、
『数理計画(刀根薫著)』に挙げられているナップザッ
ク問題を取り上げる。この問題は以下のようなものであ
る。 〔問題〕『遠足に持っていくナップザックに入れていく
候補の品物が4種類ある。容量の制限を満たして期待さ
れる価値の総和を最大にしたい。
【0104】1番目の品物(以下ではAgent(0)であり、
菓子) の大きさは6で、期待される価値は1である。選
択肢(alternative) は、入れていく(Agent(0)=1)、
入れていかない(Agent(0)=2)の二つである(他の品
物でも同じ)。
菓子) の大きさは6で、期待される価値は1である。選
択肢(alternative) は、入れていく(Agent(0)=1)、
入れていかない(Agent(0)=2)の二つである(他の品
物でも同じ)。
【0105】1番目の品物の大きさに対応する変数を
(0,1) 、期待される価値に対応する変数を(0,2) と書く
(他の品物でも同様)。2番目の品物(Agent(1)であ
り、ジュース) の大きさは8で、期待される価値は3で
ある。
(0,1) 、期待される価値に対応する変数を(0,2) と書く
(他の品物でも同様)。2番目の品物(Agent(1)であ
り、ジュース) の大きさは8で、期待される価値は3で
ある。
【0106】3番目の品物(Agent(2)であり、弁当) の
大きさは5で、期待される価値は7である。4番目の品
物(Agent(3)であり、傘) の大きさは2で、期待される
価値は3である。
大きさは5で、期待される価値は7である。4番目の品
物(Agent(3)であり、傘) の大きさは2で、期待される
価値は3である。
【0107】入れていかないときのその品物の大きさと
期待される価値は0と考える』この問題において、容量
制限を14とし、本発明の好適実施例のシステムによっ
て最適化問題を解くことにする。
期待される価値は0と考える』この問題において、容量
制限を14とし、本発明の好適実施例のシステムによっ
て最適化問題を解くことにする。
【0108】図9乃至図21は、ナップザック問題への
適用説明図である。図9は、各品物の大きさと価値を一
覧表で示している。まず、初期制約不等式を設定する
(図10)。すなわち、 (0,1) +(1,1) +(2,1) +(3,1) ≦constraint(0) である。ただし、constraint(0) はナップザックの容量
制限である。これに対しての初期制約違反不等式は、 (0,1) +(1,1) +(2,1) +(3,1) >constraint(0) …(A) となる。
適用説明図である。図9は、各品物の大きさと価値を一
覧表で示している。まず、初期制約不等式を設定する
(図10)。すなわち、 (0,1) +(1,1) +(2,1) +(3,1) ≦constraint(0) である。ただし、constraint(0) はナップザックの容量
制限である。これに対しての初期制約違反不等式は、 (0,1) +(1,1) +(2,1) +(3,1) >constraint(0) …(A) となる。
【0109】また、評価関数は(0,2) +(1,2) +(2,2)
+(3,2) であり、これを最大にしたい。評価関数を次の
可変不等式として扱う。すなわち、 (0,2) +(1,2) +(2,2) +(3,2) ≧constraint(1) である。これに対して、初期制約違反不等式は、 (0,2) +(1,2) +(2,2) +(3,2) <constraint(1) …(B) となる。 以上の2式(式(A)および式(B))が制約
違反条件格納部に格納される。ここで、初期の価値の下
限値constraint(1) は0として制約充足処理を実行す
る。
+(3,2) であり、これを最大にしたい。評価関数を次の
可変不等式として扱う。すなわち、 (0,2) +(1,2) +(2,2) +(3,2) ≧constraint(1) である。これに対して、初期制約違反不等式は、 (0,2) +(1,2) +(2,2) +(3,2) <constraint(1) …(B) となる。 以上の2式(式(A)および式(B))が制約
違反条件格納部に格納される。ここで、初期の価値の下
限値constraint(1) は0として制約充足処理を実行す
る。
【0110】まず、すべての品物を入れていく(Agent
(0)=1,Agent(1)=1,Agent(2)=1,Agent(3)=1) として制約
充足処理を実行する。すると、容量が21となり容量制
限をオーバーする(図11(イ))。成立する制約違反
条件が存在することになるので(図6S500のY)、
変数値変更処理S501を実行する。
(0)=1,Agent(1)=1,Agent(2)=1,Agent(3)=1) として制約
充足処理を実行する。すると、容量が21となり容量制
限をオーバーする(図11(イ))。成立する制約違反
条件が存在することになるので(図6S500のY)、
変数値変更処理S501を実行する。
【0111】変数値変更処理では、菓子(Agent(0)) に
ついて変数値変更を試みる。すなわち、菓子を入れてい
く(Agent(0)=1)にしても、菓子を入れていかない(Agent
(0)=2)にしても式(A)の制約違反不等式が成り立つ。
変数値をどう変えても制約違反不等式が成り立ってしま
うことになるので(S502の)、新たな制約違反条件
を生成する(S504)。すなわち、制約違反不等式
(A)に菓子を入れていく場合の大きさ6を代入した不
等式と、菓子を入れていかない場合の大きさ0を代入し
た不等式の論理積を取り、制約違反条件(a)を生成す
る(図11(ロ))。このとき、Agent(0)=x (不定), A
gent(1)=1,Agent(2)=1,Agent(3)=1 である。
ついて変数値変更を試みる。すなわち、菓子を入れてい
く(Agent(0)=1)にしても、菓子を入れていかない(Agent
(0)=2)にしても式(A)の制約違反不等式が成り立つ。
変数値をどう変えても制約違反不等式が成り立ってしま
うことになるので(S502の)、新たな制約違反条件
を生成する(S504)。すなわち、制約違反不等式
(A)に菓子を入れていく場合の大きさ6を代入した不
等式と、菓子を入れていかない場合の大きさ0を代入し
た不等式の論理積を取り、制約違反条件(a)を生成す
る(図11(ロ))。このとき、Agent(0)=x (不定), A
gent(1)=1,Agent(2)=1,Agent(3)=1 である。
【0112】新しい制約違反条件の生成後、変数値変更
処理S501に戻る。すなわち、次の変数であるジュー
スについて変数値の変更を試み、ジュースは入れていか
ないことにする(Agent(0)=x (不定), Agent(1)=2,Agen
t(2)=1,Agent(3)=1 )(図12)。すると、この条件で
は制約違反条件格納部に格納されているすべての制約違
反条件((a) および(A) および(B))を満たさないので、
変数値変更に成功したことになる(S502のN)。
処理S501に戻る。すなわち、次の変数であるジュー
スについて変数値の変更を試み、ジュースは入れていか
ないことにする(Agent(0)=x (不定), Agent(1)=2,Agen
t(2)=1,Agent(3)=1 )(図12)。すると、この条件で
は制約違反条件格納部に格納されているすべての制約違
反条件((a) および(A) および(B))を満たさないので、
変数値変更に成功したことになる(S502のN)。
【0113】さらに、変数値が不定の変数が存在する
(菓子)ので(S506のY)、変数値を選択する処理
S508を実行する(図13)。これによると、Agent
(0)=1,Agent(1)=2,Agent(2)=1,Agent(3)=1のとき変数値
選択に成功する(S502のN)。そして、もはや不定
の変数値がないので、制約充足したことになる。このと
き、期待される期待値の総和は11である(S50
7)。
(菓子)ので(S506のY)、変数値を選択する処理
S508を実行する(図13)。これによると、Agent
(0)=1,Agent(1)=2,Agent(2)=1,Agent(3)=1のとき変数値
選択に成功する(S502のN)。そして、もはや不定
の変数値がないので、制約充足したことになる。このと
き、期待される期待値の総和は11である(S50
7)。
【0114】期待される期待値がもっと大きな組合せを
探すために処理を続行することにする(図8S706の
Y)。この場合、制約違反条件格納部に格納した制約違
反条件はクリアしない(S707のN)。そして、新た
な制約値を、今得られた価値の期待値11より大きくて
最小の数値である12に設定して(S703)、制約充
足処理を実行する(S705)。
探すために処理を続行することにする(図8S706の
Y)。この場合、制約違反条件格納部に格納した制約違
反条件はクリアしない(S707のN)。そして、新た
な制約値を、今得られた価値の期待値11より大きくて
最小の数値である12に設定して(S703)、制約充
足処理を実行する(S705)。
【0115】新たに設定した制約値(価値の下限値=1
2)で先の状態Agent(0)=1, Agent(1)=2,Agent(2)=1,Ag
ent(3)=1を再評価すると、価値の総和が12を下回り、
制約違反不等式(B)を満たす(S500のY)。そこ
で変数値変更処理を実行する(S501)。すなわち、
菓子についての変数値変更を試みる(図14)。そし
て、変数値変更に失敗する。Agent(1)=2,Agent(2)=1,Ag
ent(3)=1の状態で、菓子を入れていく(Agent(0)=1) に
しても、菓子を入れていかない(Agent(0)=2)としても制
約違反不等式(B)が成り立つ。そこで、新たに制約違
反条件を生成する。すなわち、制約違反不等式(B)の
左辺の菓子の価値について、菓子を入れていく場合の価
値1を代入した不等式と、菓子を入れていかない場合の
価値0を代入した不等式の論理積を作り、新たな制約違
反条件(b) とする。このとき、Agent(0)=x (不定), Age
nt(1)=2,Agent(2)=1,Agent(3)=1 である。
2)で先の状態Agent(0)=1, Agent(1)=2,Agent(2)=1,Ag
ent(3)=1を再評価すると、価値の総和が12を下回り、
制約違反不等式(B)を満たす(S500のY)。そこ
で変数値変更処理を実行する(S501)。すなわち、
菓子についての変数値変更を試みる(図14)。そし
て、変数値変更に失敗する。Agent(1)=2,Agent(2)=1,Ag
ent(3)=1の状態で、菓子を入れていく(Agent(0)=1) に
しても、菓子を入れていかない(Agent(0)=2)としても制
約違反不等式(B)が成り立つ。そこで、新たに制約違
反条件を生成する。すなわち、制約違反不等式(B)の
左辺の菓子の価値について、菓子を入れていく場合の価
値1を代入した不等式と、菓子を入れていかない場合の
価値0を代入した不等式の論理積を作り、新たな制約違
反条件(b) とする。このとき、Agent(0)=x (不定), Age
nt(1)=2,Agent(2)=1,Agent(3)=1 である。
【0116】新しい制約違反条件の生成後、変数値変更
処理S501に戻る(図15)。すなわち、次の変数で
あるジュースについて変数値の変更を試み、ジュースを
入れていくことにする(Agent(0)=x (不定), Agent(1)=
1,Agent(2)=1,Agent(3)=1 )。すると、制約違反条件
(a) が成立する。また、ジュースを入れていかないこと
にする(Agent(0)=x (不定), Agent(1)=2,Agent(2)=1,A
gent(3)=1 )と制約違反条件(b) が成立する。そこで、
それぞれの制約違反条件に入れていく場合の値と入れて
いかない場合の値を代入し、それらの不等式の論理積を
求める。すると、制約違反条件(c) が得られる。このと
き、Agent(0)=x (不定), Agent(1)=x ( 不定), Agent
(2)=2,Agent(3)=1である。
処理S501に戻る(図15)。すなわち、次の変数で
あるジュースについて変数値の変更を試み、ジュースを
入れていくことにする(Agent(0)=x (不定), Agent(1)=
1,Agent(2)=1,Agent(3)=1 )。すると、制約違反条件
(a) が成立する。また、ジュースを入れていかないこと
にする(Agent(0)=x (不定), Agent(1)=2,Agent(2)=1,A
gent(3)=1 )と制約違反条件(b) が成立する。そこで、
それぞれの制約違反条件に入れていく場合の値と入れて
いかない場合の値を代入し、それらの不等式の論理積を
求める。すると、制約違反条件(c) が得られる。このと
き、Agent(0)=x (不定), Agent(1)=x ( 不定), Agent
(2)=2,Agent(3)=1である。
【0117】さらに、変数値変更処理を試みる(図1
6)。すなわち、次の変数である弁当について変数値を
変更し、弁当を入れていかないことにする(Agent(2)=
2) 。これに対しては、制約違反条件が成り立たないの
で変数値変更に成功したことになる(S502のN)の
で、変数値選択処理S508を実行する。すなわち、ジ
ュースについて変数値を選択する(図17)。すると、
Agent(1)=1にしてもAgent(1)=2にしても制約違反条件
(b) が成立してしまう。そこで、制約違反条件(b)にジ
ュースを入れていく場合の価値3を代入した不等式と入
れていかない場合の価値0を代入した不等式の論理積を
とり新しい制約違反条件(d) を生成する。このとき、Ag
ent(0)=x (不定), Agent(1)=x ( 不定), Agent(2)=2,Ag
ent(3)=1である。
6)。すなわち、次の変数である弁当について変数値を
変更し、弁当を入れていかないことにする(Agent(2)=
2) 。これに対しては、制約違反条件が成り立たないの
で変数値変更に成功したことになる(S502のN)の
で、変数値選択処理S508を実行する。すなわち、ジ
ュースについて変数値を選択する(図17)。すると、
Agent(1)=1にしてもAgent(1)=2にしても制約違反条件
(b) が成立してしまう。そこで、制約違反条件(b)にジ
ュースを入れていく場合の価値3を代入した不等式と入
れていかない場合の価値0を代入した不等式の論理積を
とり新しい制約違反条件(d) を生成する。このとき、Ag
ent(0)=x (不定), Agent(1)=x ( 不定), Agent(2)=2,Ag
ent(3)=1である。
【0118】さらに変数値変更処理を続ける(図1
8)。すなわち、弁当についての変数値をAgent(2)=1に
すると制約違反条件(c) および(d) が成立してしまうの
で、変数値変更に失敗する。そこで、新たな制約違反条
件(e) を生成する。このとき、Agent(0)=x (不定), Age
nt(1)=x ( 不定), Agent(2)=x ( 不定), Agent(3)=1 で
ある。
8)。すなわち、弁当についての変数値をAgent(2)=1に
すると制約違反条件(c) および(d) が成立してしまうの
で、変数値変更に失敗する。そこで、新たな制約違反条
件(e) を生成する。このとき、Agent(0)=x (不定), Age
nt(1)=x ( 不定), Agent(2)=x ( 不定), Agent(3)=1 で
ある。
【0119】また、変数値変更処理を続け(図19)、
傘(Agent(3)) の変数値変更には成功する。すなわち、
Agent(0)=x (不定), Agent(1)=x ( 不定), Agent(2)=x
( 不定), Agent(3)=2 の状態で制約違反条件は満たさな
い。
傘(Agent(3)) の変数値変更には成功する。すなわち、
Agent(0)=x (不定), Agent(1)=x ( 不定), Agent(2)=x
( 不定), Agent(3)=2 の状態で制約違反条件は満たさな
い。
【0120】そこで、次に、変数値選択処理を行なう
(図20)。弁当についての変数値を選択してみると、
制約違反条件(d) を満たすので、変数値選択処理に失敗
する。そして、新たな制約違反条件(f) を生成する。こ
のとき、Agent(0)=x (不定), Agent(1)=x ( 不定), Age
nt(2)=x ( 不定), Agent(3)=2 である。
(図20)。弁当についての変数値を選択してみると、
制約違反条件(d) を満たすので、変数値選択処理に失敗
する。そして、新たな制約違反条件(f) を生成する。こ
のとき、Agent(0)=x (不定), Agent(1)=x ( 不定), Age
nt(2)=x ( 不定), Agent(3)=2 である。
【0121】そして、変数値変更処理をまた行なう(図
21)。傘(Agent(3)) を入れていくことにすると、制
約違反条件(e) が成立し、変数値変更に失敗する。そこ
で、新たな制約違反条件(g) を生成する。このとき、Ag
ent(0)=x (不定), Agent(1)=x ( 不定), Agent(2)=x (
不定), Agent(3)=x ( 不定) である。
21)。傘(Agent(3)) を入れていくことにすると、制
約違反条件(e) が成立し、変数値変更に失敗する。そこ
で、新たな制約違反条件(g) を生成する。このとき、Ag
ent(0)=x (不定), Agent(1)=x ( 不定), Agent(2)=x (
不定), Agent(3)=x ( 不定) である。
【0122】この時点で、制約違反条件の左辺がすべて
数値である条件が生成されたため(S503のY)、制
約充足処理は失敗し、処理を停止する(S505)。以
上の処理により、前に得られたAgent(0)=1, Agent(1)=
2,Agent(2)=1,Agent(3)=1で、価値の総和が11が解と
なる。
数値である条件が生成されたため(S503のY)、制
約充足処理は失敗し、処理を停止する(S505)。以
上の処理により、前に得られたAgent(0)=1, Agent(1)=
2,Agent(2)=1,Agent(3)=1で、価値の総和が11が解と
なる。
【0123】以上の処理を実行したときの出力例は以下
のようなものである。 0 +(1,1) +(2,1) +(3,1) >constraint(0) has been generated.(NJ(a)) 1 +(1,2) +(2,2) +(3,2) <constraint(1) has been generated.(NJ(b)) 1 +(2,2) +(3,2) <constraint(1) & 8+(2,1) +(3,1) >constraint(0) has been generated.(NJ(c)) 4 +(2,2) +(3,2) <constraint(1) has been generated.(NJ(d)) 8 +(3,2) <constraint(1) & 13 +(3,1) >constraint(0) has been generated.(NJ(e)) 11+(3,2) <constraint(1) has been generated.(NJ(f)) 11<constraint(1) & 15 >constraint(0) has been generated.(NJ(g)) Design completed! The alternative of each agent is: Agent(0)=1, Agent(1)=2,Agent(2)=1,Agent(3)=1 以上の探索を図で示すと、図22に示すようになる。同
図中に示す(a) 〜(n)は、(a) が図9,(b) が図10,
(c) が図11(イ),(d) が図11(ロ),(e) が図1
2,(f) が図13,(g) が図14,(h) が図15,(i)
が図16,(j)が図17,(k) が図18,(l) が図1
9,(m) が図20,(n) が図21に対応している。×の
箇所は、制約違反条件によって禁止され、それ以上の探
索が不要になった箇所である。本発明と従来技術とを比
較して考えてみる。 ◎制約論理プログラミング(Dincbas 等) との違い 制約論理プログラミングでは、変数がある変数値を取る
と制約充足(最適化)不可能となる場合に、その変数値
を禁止して、そこから波及する制約を伝搬する。しか
し、複数の変数の変数値の組合せを禁止する手段はな
い。なお、制約論理プログラミングについての参考文献
としては以下のものがある。
のようなものである。 0 +(1,1) +(2,1) +(3,1) >constraint(0) has been generated.(NJ(a)) 1 +(1,2) +(2,2) +(3,2) <constraint(1) has been generated.(NJ(b)) 1 +(2,2) +(3,2) <constraint(1) & 8+(2,1) +(3,1) >constraint(0) has been generated.(NJ(c)) 4 +(2,2) +(3,2) <constraint(1) has been generated.(NJ(d)) 8 +(3,2) <constraint(1) & 13 +(3,1) >constraint(0) has been generated.(NJ(e)) 11+(3,2) <constraint(1) has been generated.(NJ(f)) 11<constraint(1) & 15 >constraint(0) has been generated.(NJ(g)) Design completed! The alternative of each agent is: Agent(0)=1, Agent(1)=2,Agent(2)=1,Agent(3)=1 以上の探索を図で示すと、図22に示すようになる。同
図中に示す(a) 〜(n)は、(a) が図9,(b) が図10,
(c) が図11(イ),(d) が図11(ロ),(e) が図1
2,(f) が図13,(g) が図14,(h) が図15,(i)
が図16,(j)が図17,(k) が図18,(l) が図1
9,(m) が図20,(n) が図21に対応している。×の
箇所は、制約違反条件によって禁止され、それ以上の探
索が不要になった箇所である。本発明と従来技術とを比
較して考えてみる。 ◎制約論理プログラミング(Dincbas 等) との違い 制約論理プログラミングでは、変数がある変数値を取る
と制約充足(最適化)不可能となる場合に、その変数値
を禁止して、そこから波及する制約を伝搬する。しか
し、複数の変数の変数値の組合せを禁止する手段はな
い。なお、制約論理プログラミングについての参考文献
としては以下のものがある。
【0124】M.Dincbas et al. :Solving a Cutting-St
ock Problem in Constraint LogicProgramming, Proc.
of the Fifth International Conference and Symposiu
m on Logic Programming, pp.42-58(1988). ◎知的バックトラック(dependency-directed backtrac
k)との違い 知的バックトラックでは、制約違反の解消に関係ない分
岐点をスキップして、制約解消に有効な分岐点でのみ選
択肢の変更を行なうが、このとき制約を伝播するという
ことは考えない。 ◎整数計画法等との違い 整数計画法等では、すべての変数値が既知でなければな
らない。本発明による手法では、ある変数値を変更する
段になって変数値が列挙されてもよいという利点があ
る。 ◎動的計画法との違い 最適化問題は動的計画法でもm引数関数Gk ( y1,y2,
… ,ym )により定式化できるが、どんな場合でもm個
の引数を具体的な数として持ち回らなければならない。
すなわち、その状況では問題にならない制約に対応する
引数をdon't careにする(その引数の具体的な値をまと
めて扱う)ことができない。本発明による手法では、そ
のような制約に対する制約違反条件(NJ)を生成しな
いことで対応できている。
ock Problem in Constraint LogicProgramming, Proc.
of the Fifth International Conference and Symposiu
m on Logic Programming, pp.42-58(1988). ◎知的バックトラック(dependency-directed backtrac
k)との違い 知的バックトラックでは、制約違反の解消に関係ない分
岐点をスキップして、制約解消に有効な分岐点でのみ選
択肢の変更を行なうが、このとき制約を伝播するという
ことは考えない。 ◎整数計画法等との違い 整数計画法等では、すべての変数値が既知でなければな
らない。本発明による手法では、ある変数値を変更する
段になって変数値が列挙されてもよいという利点があ
る。 ◎動的計画法との違い 最適化問題は動的計画法でもm引数関数Gk ( y1,y2,
… ,ym )により定式化できるが、どんな場合でもm個
の引数を具体的な数として持ち回らなければならない。
すなわち、その状況では問題にならない制約に対応する
引数をdon't careにする(その引数の具体的な値をまと
めて扱う)ことができない。本発明による手法では、そ
のような制約に対する制約違反条件(NJ)を生成しな
いことで対応できている。
【0125】 Gk ( y1,y2,… ,ym ) =max {Gi-1 ( y1 −ci1(1),…, ym −ci1(m))+ci1(0) , Gi-1 ( y1 −ci2(1),…, ym −ci2(m))+ci2(0) , … } ただし、cij(j) は変数xi のj番目の値cijのk番目
の制約に対応する寄与とする。また、cij(k) は変数x
i のj番目の値cijの評価関数に対応する寄与である。
の制約に対応する寄与とする。また、cij(k) は変数x
i のj番目の値cijの評価関数に対応する寄与である。
【0126】前述したナップザック問題の例では、制約
値が14の場合、 G4(14)= max{G3(14),G3(8)+1} G3(14)= max{G2(14),G2(6)+3} G3(8)= max{G2(8),G2(0)+3} G2(14)= max{G1(14),G1(9)+7} G2(8)= max{G1(8),G1(3)+7} G2(6)= max{G1(6),G1(1)+7} G2(0)= max{G1(0),G1(-5) +7}=G1(0) G1(14)= max{G0(14),G0(12) +3}=3 G1(9)= max{G0(9),G0(7)+3}=3 G1(8)= max{G0(8),G0(6)+3}=3 G1(6)= max{G0(6),G0(4)+3}=3 G1(3)= max{G0(3),G0(1)+3}=3 G1(1)= max{G0(1),G0(-1) +3}=0 G1(0)= max{G0(0),G0(-2) +3}=0 となる。
値が14の場合、 G4(14)= max{G3(14),G3(8)+1} G3(14)= max{G2(14),G2(6)+3} G3(8)= max{G2(8),G2(0)+3} G2(14)= max{G1(14),G1(9)+7} G2(8)= max{G1(8),G1(3)+7} G2(6)= max{G1(6),G1(1)+7} G2(0)= max{G1(0),G1(-5) +7}=G1(0) G1(14)= max{G0(14),G0(12) +3}=3 G1(9)= max{G0(9),G0(7)+3}=3 G1(8)= max{G0(8),G0(6)+3}=3 G1(6)= max{G0(6),G0(4)+3}=3 G1(3)= max{G0(3),G0(1)+3}=3 G1(1)= max{G0(1),G0(-1) +3}=0 G1(0)= max{G0(0),G0(-2) +3}=0 となる。
【0127】これによる探索のようすを図23に示す。
同図から分かるように、従来の動的計画法では、ほとん
どの組合せを調べ尽くしていることになる。Dincbas 等
のカッティング・ストック問題では、G4(4,16,4,16,3
2,12)から出発してG3(4,10,4,14,17,-4)、…が生成さ
れるが、G1(・)になって初めて−∞と判明するものが
出てくる。もともとa,b,c,d,e,fのうち正の
ものがあればG0(a,b,c,d,e,f)=−∞である。したがっ
て、かなりの数の無駄なG3,G 2,G1 が生成されてしま
う。
同図から分かるように、従来の動的計画法では、ほとん
どの組合せを調べ尽くしていることになる。Dincbas 等
のカッティング・ストック問題では、G4(4,16,4,16,3
2,12)から出発してG3(4,10,4,14,17,-4)、…が生成さ
れるが、G1(・)になって初めて−∞と判明するものが
出てくる。もともとa,b,c,d,e,fのうち正の
ものがあればG0(a,b,c,d,e,f)=−∞である。したがっ
て、かなりの数の無駄なG3,G 2,G1 が生成されてしま
う。
【0128】なお、各オルタナティブにそれを禁止する
NJ(その変数は数値化されている)を張りつけておく
ことも考えられる。次に、切断問題を例題としての本発
明の好適実施例に関する評価を説明する。図24〜図2
7は、切断問題に本発明を適用した場合の説明図であ
る。
NJ(その変数は数値化されている)を張りつけておく
ことも考えられる。次に、切断問題を例題としての本発
明の好適実施例に関する評価を説明する。図24〜図2
7は、切断問題に本発明を適用した場合の説明図であ
る。
【0129】問題は次のようなものである。『図24に
示すような大きさ2500×1220の板が200 枚あり、これら
から6種類の棚を図に示した要求枚数切りだす際(要求
枚数より多く切りだして構わない)、使えない無駄な面
積を最小にする切り方を選択する。板は50枚ずつ4ロッ
トにし、1つのロットでは皆同じ切り方をするものとす
る』。
示すような大きさ2500×1220の板が200 枚あり、これら
から6種類の棚を図に示した要求枚数切りだす際(要求
枚数より多く切りだして構わない)、使えない無駄な面
積を最小にする切り方を選択する。板は50枚ずつ4ロッ
トにし、1つのロットでは皆同じ切り方をするものとす
る』。
【0130】切り方の例を図25に示す。斜線を施した
部分が使えない無駄な部分である。切断機は、同時に切
ることができる刃の組を水平方向に1組、垂直方向に2
組持っている。切り方は、まず、水平方向に切り、細長
い板にする。次に、細長い板を垂直方向に2組の刃のう
ちどちらかで切って棚を得る。板は多くの切り方が考え
られるが、切り方に制限が加えられ、切り方の総数が抑
えられている。前述のDincbas,M.の文献では、切り方は
72通りであり、ここでは、文献に従った72通りにさらに
20通りの切り方を考慮した92通りの切り方の場合を考え
る。
部分が使えない無駄な部分である。切断機は、同時に切
ることができる刃の組を水平方向に1組、垂直方向に2
組持っている。切り方は、まず、水平方向に切り、細長
い板にする。次に、細長い板を垂直方向に2組の刃のう
ちどちらかで切って棚を得る。板は多くの切り方が考え
られるが、切り方に制限が加えられ、切り方の総数が抑
えられている。前述のDincbas,M.の文献では、切り方は
72通りであり、ここでは、文献に従った72通りにさらに
20通りの切り方を考慮した92通りの切り方の場合を考え
る。
【0131】ロットに対応する4つの変数を設け、棚に
対応する6つの不等式と無駄に対応する評価関数を立て
る。図26は制約違反条件の一例である。そして、図2
7に実行結果を他の解法と比較して示す。専用プログラ
ムとは、Costa,M.C.による文献"Une etude pratique de
decoupes de panneaux de bois"RAIRO Recherche Oper
ationnelle, Vol.18, No.3, pp.211-219(1984) による
方法によって本問題専用のプログラムを作成して実行し
た結果である。また、整数計画法と無矛盾性の技法は、
先のDincbas の文献によるものである。
対応する6つの不等式と無駄に対応する評価関数を立て
る。図26は制約違反条件の一例である。そして、図2
7に実行結果を他の解法と比較して示す。専用プログラ
ムとは、Costa,M.C.による文献"Une etude pratique de
decoupes de panneaux de bois"RAIRO Recherche Oper
ationnelle, Vol.18, No.3, pp.211-219(1984) による
方法によって本問題専用のプログラムを作成して実行し
た結果である。また、整数計画法と無矛盾性の技法は、
先のDincbas の文献によるものである。
【0132】コンピュータの性能差(SPARCstation の性
能はVAX-11/785の約10倍であり、IBM 370/168 はVAX-11
/785より速い) を勘案しても、本発明の手法は他の手法
に比べて10倍以上高速に最適化できる。さらに、板のロ
ット数を増やして20ロットとし、1000枚の板から棚を切
りだす問題でも1分程度で切り方を求めることが可能で
ある。
能はVAX-11/785の約10倍であり、IBM 370/168 はVAX-11
/785より速い) を勘案しても、本発明の手法は他の手法
に比べて10倍以上高速に最適化できる。さらに、板のロ
ット数を増やして20ロットとし、1000枚の板から棚を切
りだす問題でも1分程度で切り方を求めることが可能で
ある。
【0133】次に、LSIの論理設計問題を考える。図
28はLSI論理設計問題の説明図である。コンポーネ
ントAとコンポーネントBを組み合わせたLSIを設計
するものとする。コンポーネントA、Bともに実現方法
は2通りある。そして、全体としての制約条件は 110ゲ
ート以下、遅延時間110ns 以内である。
28はLSI論理設計問題の説明図である。コンポーネ
ントAとコンポーネントBを組み合わせたLSIを設計
するものとする。コンポーネントA、Bともに実現方法
は2通りある。そして、全体としての制約条件は 110ゲ
ート以下、遅延時間110ns 以内である。
【0134】Aのゲート数をd0(x1) 、Aの遅延時間を
d1(x1) 、Bのゲート数をd0(x2)、Aの遅延時間をd1
(x2) と書く。制約条件は次のように書ける。 d0(x1) + d0(x2) ≦110 d1(x1) + d1(x2) ≦110 ここで、初期の制約違反条件として次の条件を設ける。
d1(x1) 、Bのゲート数をd0(x2)、Aの遅延時間をd1
(x2) と書く。制約条件は次のように書ける。 d0(x1) + d0(x2) ≦110 d1(x1) + d1(x2) ≦110 ここで、初期の制約違反条件として次の条件を設ける。
【0135】 (d0(x1) + d0(x2))( d1(x1) + d1(x2))>Constraint (1) このケースでのConstraintの値は12100 である。まず、
AおよびBについて実現法1を試みるが初期制約違反条
件(1) を満たす。そこで、Aの実現法を実現法2に変え
て試みる。しかし、これも初期制約違反条件(1) を満た
すので、次の制約違反条件を生成する。
AおよびBについて実現法1を試みるが初期制約違反条
件(1) を満たす。そこで、Aの実現法を実現法2に変え
て試みる。しかし、これも初期制約違反条件(1) を満た
すので、次の制約違反条件を生成する。
【0136】 (30+d0(x2))( 50+d1(x2))>Constraint ∧ ( 60+d0(x2))( 40+d1(x2))>Constraint これを変形して次の制約違反条件(2) を得る。
【0137】 (30+d0(x2))( 40+d1(x2))+ 300>Constraint (2) 次に、Aの実現法を不定とし、Bの実現法を実現法2に
変えるが、やはり制約違反条件(2) が成立する。そこ
で、次の制約違反条件(3) を生成する。
変えるが、やはり制約違反条件(2) が成立する。そこ
で、次の制約違反条件(3) を生成する。
【0138】 12300>Constraint ∧ 12400 >Constraint 従って、次の制約条件となる。 12300>Constraint (3) これは変数を含まないから制約充足は失敗で終了する。
【0139】以上のように、初期制約違反条件を導入す
ることによって、属性値(例えば、ゲート数と遅延時
間)の間にトレードオフがあるような場合に効率的な制
約充足処理が可能になる。
ることによって、属性値(例えば、ゲート数と遅延時
間)の間にトレードオフがあるような場合に効率的な制
約充足処理が可能になる。
【0140】図29は、偏微分係数を制約条件に使用す
る場合のシステム構成図である。図29に示した制約違
反条件を使用する場合のシステム構成図と同様に、汎用
コンピュータ等の計算機システムで実現でき、当該シス
テムは計算機システム1300のソフトウエアとして主記憶
内に格納される。
る場合のシステム構成図である。図29に示した制約違
反条件を使用する場合のシステム構成図と同様に、汎用
コンピュータ等の計算機システムで実現でき、当該シス
テムは計算機システム1300のソフトウエアとして主記憶
内に格納される。
【0141】ソフトウエアは、組合せ問題を表現する不
等式系1310を初期の制約違反不等式に変換する制約違反
不等式生成部1320と、変数値を変更する変数値変更部13
30、未定の変数値を選択する変数値選択部1340、変数値
の変更/選択に失敗した際に新しい制約違反条件を生成
する制約違反条件生成部1350、初期の制約違反不等式を
偏微分し、偏微分係数を解析する偏微分係数解析部136
0、および、全体の処理を制御する制御部1370からな
る。また、計算機システム1300の二次記憶あるいは主記
憶には、制約違反不等式生成部1320が生成した制約違反
不等式および制約違反条件生成部1350が生成した制約違
反条件を格納する制約違反条件格納部1380と、偏微分係
数解析部1360で解析した偏微分係数の情報を格納する偏
微分係数格納部1390を設ける。
等式系1310を初期の制約違反不等式に変換する制約違反
不等式生成部1320と、変数値を変更する変数値変更部13
30、未定の変数値を選択する変数値選択部1340、変数値
の変更/選択に失敗した際に新しい制約違反条件を生成
する制約違反条件生成部1350、初期の制約違反不等式を
偏微分し、偏微分係数を解析する偏微分係数解析部136
0、および、全体の処理を制御する制御部1370からな
る。また、計算機システム1300の二次記憶あるいは主記
憶には、制約違反不等式生成部1320が生成した制約違反
不等式および制約違反条件生成部1350が生成した制約違
反条件を格納する制約違反条件格納部1380と、偏微分係
数解析部1360で解析した偏微分係数の情報を格納する偏
微分係数格納部1390を設ける。
【0142】制御部1370の処理は、前述した図4のシス
テム構成の場合の処理フローチャート(図5の制約充足
システムの処理フローチャート、あるいは、図8の最適
化システムの処理フローチャート)と同じである。
テム構成の場合の処理フローチャート(図5の制約充足
システムの処理フローチャート、あるいは、図8の最適
化システムの処理フローチャート)と同じである。
【0143】すなわち、制御部1370はまずユーザに対し
て問題を表現する不等式系1310の入力を要求する。入力
された不等式系1310は制約違反不等式生成部1320に入力
され、与えられた各不等式からそれに相反する不等式を
生成して制約違反条件格納部1380に格納し、さらに、偏
微分係数解析部1360に通知する。偏微分係数解析部1360
は、制約違反不等式生成部1320から渡された初期の制約
違反不等式の左辺をそれぞれの変数に関して偏微分し、
該変数に関して単調増加もしくは単調減少の傾向がある
か否かを解析し、ある場合にはその偏微分係数を偏微分
係数格納部1390に格納する。
て問題を表現する不等式系1310の入力を要求する。入力
された不等式系1310は制約違反不等式生成部1320に入力
され、与えられた各不等式からそれに相反する不等式を
生成して制約違反条件格納部1380に格納し、さらに、偏
微分係数解析部1360に通知する。偏微分係数解析部1360
は、制約違反不等式生成部1320から渡された初期の制約
違反不等式の左辺をそれぞれの変数に関して偏微分し、
該変数に関して単調増加もしくは単調減少の傾向がある
か否かを解析し、ある場合にはその偏微分係数を偏微分
係数格納部1390に格納する。
【0144】以上の処理を完了後、制約充足処理のフロ
ーチャート(図6)に沿って処理を進める。変数値変更
部1330あるいは変数値選択部1340の処理はまったく同様
である。変数値変更/選択に失敗した場合に、制約違反
条件生成部1350が起動されるが、制約違反条件生成部13
50は、偏微分係数格納部1390に蓄積されている偏微分係
数を利用して新しい制約違反条件を生成し、制約違反条
件格納部1380に格納する。
ーチャート(図6)に沿って処理を進める。変数値変更
部1330あるいは変数値選択部1340の処理はまったく同様
である。変数値変更/選択に失敗した場合に、制約違反
条件生成部1350が起動されるが、制約違反条件生成部13
50は、偏微分係数格納部1390に蓄積されている偏微分係
数を利用して新しい制約違反条件を生成し、制約違反条
件格納部1380に格納する。
【0145】偏微分係数解析部1360は、初期の制約違反
不等式fk ( x1,x2,… ,xn )>bk の左辺であるf
k ( x1,x2,… ,xn )を各変数xi で偏微分し、その
単調増加傾向あるいは単調減少傾向を解析する。例え
ば、fk がx1,x2,… ,xn の線形結合式であれば∂f
k /∂xi は定数項となるから、その正負を判定するの
は極めて容易である。また、例えば、f(x,y) =x2 +
2xy+y2 のような式の場合でも、他にx>0,y>
0なる条件があれば∂f/∂x=2x+2y>0が比較
的容易に解析できる。
不等式fk ( x1,x2,… ,xn )>bk の左辺であるf
k ( x1,x2,… ,xn )を各変数xi で偏微分し、その
単調増加傾向あるいは単調減少傾向を解析する。例え
ば、fk がx1,x2,… ,xn の線形結合式であれば∂f
k /∂xi は定数項となるから、その正負を判定するの
は極めて容易である。また、例えば、f(x,y) =x2 +
2xy+y2 のような式の場合でも、他にx>0,y>
0なる条件があれば∂f/∂x=2x+2y>0が比較
的容易に解析できる。
【0146】偏微分係数格納部1390に格納される情報
は、行が制約違反不等式であり、列が変数となる表であ
り、各欄には対応する偏微分係数が恒に正ならば+、恒
に負ならば−、恒に0ならば0、不定ならば?のいずれ
かである。
は、行が制約違反不等式であり、列が変数となる表であ
り、各欄には対応する偏微分係数が恒に正ならば+、恒
に負ならば−、恒に0ならば0、不定ならば?のいずれ
かである。
【0147】変数値の変更/選択に失敗したとき、すな
わち、変数が値のある組合せx1=a 1,x2=a2,… ,xn
= an (ただし、ai =φはxi が未定であることを表
すとする)がある制約違反不等式fk ( x1,x2,… ,x
n )>bk を満たしてしまったとき、制約違反条件生成
部1350が新たな制約違反条件を生成する。このとき、偏
微分係数格納部1390に格納されている偏微分係数∂fk
/∂xi の情報を利用して、各変数毎に次のような条件
式Ci を作る。
わち、変数が値のある組合せx1=a 1,x2=a2,… ,xn
= an (ただし、ai =φはxi が未定であることを表
すとする)がある制約違反不等式fk ( x1,x2,… ,x
n )>bk を満たしてしまったとき、制約違反条件生成
部1350が新たな制約違反条件を生成する。このとき、偏
微分係数格納部1390に格納されている偏微分係数∂fk
/∂xi の情報を利用して、各変数毎に次のような条件
式Ci を作る。
【0148】Ci :true (ai =φのとき) Ci :xi ≧ ai ( 偏微分係数表の当該欄が+のと
き) Ci :xi ≦ ai ( 偏微分係数表の当該欄が−のと
き) Ci :true(偏微分係数表の当該欄が0のとき) Ci :xi = ai ( 偏微分係数表の当該欄が?のと
き) そして、これらすべての論理積を作り、制約違反条件と
して制約違反条件格納部1380に格納する。
き) Ci :xi ≦ ai ( 偏微分係数表の当該欄が−のと
き) Ci :true(偏微分係数表の当該欄が0のとき) Ci :xi = ai ( 偏微分係数表の当該欄が?のと
き) そして、これらすべての論理積を作り、制約違反条件と
して制約違反条件格納部1380に格納する。
【0149】ここで、制約違反条件格納部1380に制約違
反条件を登録する際、登録する制約違反条件が既に格納
されている他の条件よりも論理的に弱いか強いかを判断
し、弱ければ、以前の条件を削除したうえで新たな制約
違反条件を登録することもできる。すなわち、例えば、 X1 ≧10 ∧ X2 ≦6 なる制約違反条件を格納する際に、既に、 X1 ≧15 ∧ X2 ≦5 なる制約違反条件が格納されていた場合には、後者の条
件を削除したうえで前者の条件を登録するようにする。
こうすることによって、包含された意味をもつ制約違反
条件を無駄に探索する必要がなくなり、処理効率が上が
る。
反条件を登録する際、登録する制約違反条件が既に格納
されている他の条件よりも論理的に弱いか強いかを判断
し、弱ければ、以前の条件を削除したうえで新たな制約
違反条件を登録することもできる。すなわち、例えば、 X1 ≧10 ∧ X2 ≦6 なる制約違反条件を格納する際に、既に、 X1 ≧15 ∧ X2 ≦5 なる制約違反条件が格納されていた場合には、後者の条
件を削除したうえで前者の条件を登録するようにする。
こうすることによって、包含された意味をもつ制約違反
条件を無駄に探索する必要がなくなり、処理効率が上が
る。
【0150】以上は、制約違反条件を使用するシステム
について説明したが、同様のシステム構成で制約充足条
件を使用するシステムも実現することが可能である。こ
こでは、説明を省略する。
について説明したが、同様のシステム構成で制約充足条
件を使用するシステムも実現することが可能である。こ
こでは、説明を省略する。
【0151】次に、偏微分係数を使用して組合せ制約充
足問題を解く例を説明する。制約違反条件を使用したシ
ステム(図29のシステム)で解くものとする。 〔問題例〕『3×3の魔法陣を考える。3×3の各マス
に1〜9の異なる数字を当てはめ、縦、横、斜めの和が
すべて等しくなるようにする。』各マス目に以下のよう
に変数を割り当てる。
足問題を解く例を説明する。制約違反条件を使用したシ
ステム(図29のシステム)で解くものとする。 〔問題例〕『3×3の魔法陣を考える。3×3の各マス
に1〜9の異なる数字を当てはめ、縦、横、斜めの和が
すべて等しくなるようにする。』各マス目に以下のよう
に変数を割り当てる。
【0152】 A B C D E F G H I すべての数字の和は45であるから、各行、列、対角線
の和は15である。したがって、 C=15−A−B F=15−D−E G=15−A−D H=15−B−E I=15−A−E となるから独立変数をABDEの4つとし、それぞれの
変数値は1〜9である。制約条件不等式は以下のように
なる。
の和は15である。したがって、 C=15−A−B F=15−D−E G=15−A−D H=15−B−E I=15−A−E となるから独立変数をABDEの4つとし、それぞれの
変数値は1〜9である。制約条件不等式は以下のように
なる。
【0153】 A≦9 −A≦−1 B≦9 −B≦−1 15−A−B≦9 −15+A+B≦−1 … ここで、f=15−A−B>9という制約違反不等式の
場合を考える。偏微分係数格納部1390に格納されている
表のf行は変数ABDEに対して−−00になってい
る。いま、例えば、A=3,B=2,D=1,E=9と
いう値の組はこの制約違反不等式を成立させてしまう。
そこで、制約違反条件生成部1350は、各変数に対して、
CA :A≦3,CB :B≦2,CC :true, CD : true
なる条件を生成し、これらの論理積であるA≦3∧B≦
2を新たな制約違反条件として制約違反条件部1380に格
納する。これにより、これ以降、この条件を満たす変数
の値の組(例えば、A=1,B=2やA=2,B=1)
は探索から除かれる。
場合を考える。偏微分係数格納部1390に格納されている
表のf行は変数ABDEに対して−−00になってい
る。いま、例えば、A=3,B=2,D=1,E=9と
いう値の組はこの制約違反不等式を成立させてしまう。
そこで、制約違反条件生成部1350は、各変数に対して、
CA :A≦3,CB :B≦2,CC :true, CD : true
なる条件を生成し、これらの論理積であるA≦3∧B≦
2を新たな制約違反条件として制約違反条件部1380に格
納する。これにより、これ以降、この条件を満たす変数
の値の組(例えば、A=1,B=2やA=2,B=1)
は探索から除かれる。
【0154】以上のように、制約違反不等式に単調減少
あるいは単調増加の傾向がある場合には、偏微分係数を
使用することで制約違反条件を効率的に生成することが
可能になる。
あるいは単調増加の傾向がある場合には、偏微分係数を
使用することで制約違反条件を効率的に生成することが
可能になる。
【0155】一般には、∂fk /∂xi の正負を精密に
判定することは非常に高度な処理を必要とする。後で述
べるように、本発明による処理の効率化はこの正負判定
が精密にできるほど効果が大きい。したがって、偏微分
係数解析部1360がもつ解析能力の大小によって、本発明
が有効に適用できる問題の範囲が定まる。
判定することは非常に高度な処理を必要とする。後で述
べるように、本発明による処理の効率化はこの正負判定
が精密にできるほど効果が大きい。したがって、偏微分
係数解析部1360がもつ解析能力の大小によって、本発明
が有効に適用できる問題の範囲が定まる。
【0156】以上の好適実施例では、組合せ制約充足シ
ステムあるいは組合せ制約最適化システムを一つのプロ
セサをもつ計算機システム上に実現する手法および実行
例を示してきた。しかしながら、変数値あるいは制約違
反条件(制約充足条件)が多くなるような問題では、以
上のような手法のシステムでも計算時間がかなり長くな
る可能性がある。そこで、次に、複数のプロセサをもつ
計算機システムで本発明の組合せ問題装置を構成すると
きの実施例を説明する。
ステムあるいは組合せ制約最適化システムを一つのプロ
セサをもつ計算機システム上に実現する手法および実行
例を示してきた。しかしながら、変数値あるいは制約違
反条件(制約充足条件)が多くなるような問題では、以
上のような手法のシステムでも計算時間がかなり長くな
る可能性がある。そこで、次に、複数のプロセサをもつ
計算機システムで本発明の組合せ問題装置を構成すると
きの実施例を説明する。
【0157】図30は複数のプロセサで組合せ問題処理
装置を構成する場合のシステム構成図である。システム
は複数のプロセサA,B,…(1400A, 1400B, …) で構
成される。これら全体で一つの組合せ問題処理装置を構
成する。各プロセサ内の構成は、図4に示した基本的は
システム構成の場合とほぼ同じである。すなわち、変数
値の変更と選択を行なう変数値管理部1410と、現在有効
な変数値に関して、格納されている制約違反条件のうち
成立するものがあるかどうかの判定を行ない、必要なら
ば新しい制約違反条件を生成し、新しく生成された制約
違反条件を登録する制約違反条件管理部1420が存在す
る。
装置を構成する場合のシステム構成図である。システム
は複数のプロセサA,B,…(1400A, 1400B, …) で構
成される。これら全体で一つの組合せ問題処理装置を構
成する。各プロセサ内の構成は、図4に示した基本的は
システム構成の場合とほぼ同じである。すなわち、変数
値の変更と選択を行なう変数値管理部1410と、現在有効
な変数値に関して、格納されている制約違反条件のうち
成立するものがあるかどうかの判定を行ない、必要なら
ば新しい制約違反条件を生成し、新しく生成された制約
違反条件を登録する制約違反条件管理部1420が存在す
る。
【0158】また、制約違反条件(制約違反のための十
分条件を表現する論理式)を格納する制約違反条件格納
部1430、および、各変数値の属性値情報を格納する変数
値情報格納部1440が各プロセサのメモリ上あるいはファ
イル上に設けられる。なお、変数値情報は、組合せ充足
処理中に必要に応じて生成してもよく、この場合には、
変数値生成部1450が生成処理を行なう。
分条件を表現する論理式)を格納する制約違反条件格納
部1430、および、各変数値の属性値情報を格納する変数
値情報格納部1440が各プロセサのメモリ上あるいはファ
イル上に設けられる。なお、変数値情報は、組合せ充足
処理中に必要に応じて生成してもよく、この場合には、
変数値生成部1450が生成処理を行なう。
【0159】組合せ充足処理の全体の制御は基本システ
ム(図4)と同様に制御部1460が行なうが、この並列処
理システムでは、制御部1460は、他のプロセサから送ら
れてきた情報を考慮しながら処理を実行する。さらに、
並列処理システムに独特の部分として通信部1470があ
る。通信部は、他のプロセサとの間で通信を行ない、自
分の結果を他のプロセサに通知するとともに、他のプロ
セサの結果を受信する。
ム(図4)と同様に制御部1460が行なうが、この並列処
理システムでは、制御部1460は、他のプロセサから送ら
れてきた情報を考慮しながら処理を実行する。さらに、
並列処理システムに独特の部分として通信部1470があ
る。通信部は、他のプロセサとの間で通信を行ない、自
分の結果を他のプロセサに通知するとともに、他のプロ
セサの結果を受信する。
【0160】図3は、本実施例の作用説明図である。制
約違反条件をNJと呼ぶことにする。今、制約違反条件
がNJ0からNJnまであり、変数値の選択肢が変数値
1から変数値mまであるとする。このような場合、制約
違反条件が成立するか否かを判定する検査を行なうと、
図31と図32の2通りのケースが存在する。
約違反条件をNJと呼ぶことにする。今、制約違反条件
がNJ0からNJnまであり、変数値の選択肢が変数値
1から変数値mまであるとする。このような場合、制約
違反条件が成立するか否かを判定する検査を行なうと、
図31と図32の2通りのケースが存在する。
【0161】すなわち、図31に示すケースは、すべて
の変数値1〜mについて、制約違反条件NJ0〜NJn
を順に調べたとき、どの変数値についてもどれかの制約
違反条件が成立する例である。すなわち、すべての変数
値が変更/選択を禁止される場合であり、この結果を次
の処理で利用するために制約違反条件の合成を行なう。
の変数値1〜mについて、制約違反条件NJ0〜NJn
を順に調べたとき、どの変数値についてもどれかの制約
違反条件が成立する例である。すなわち、すべての変数
値が変更/選択を禁止される場合であり、この結果を次
の処理で利用するために制約違反条件の合成を行なう。
【0162】一方、図32のケースでは、変数値iがど
の制約違反条件NJ0〜NJnにも該当しなかった例
で、変数値iで組合せ充足処理に成功している。このよ
うに、多くの変数値について多くの制約違反条件の成立
/不成立を検査するのには一般に非常に時間がかかる。
実際の問題に適用する場合には、制約違反条件の数が極
めて多くなるので、多大な時間を要することになる。例
えば、このような組合せ問題の計算処理時間の94%以
上が制約違反条件の検査に費やされている。
の制約違反条件NJ0〜NJnにも該当しなかった例
で、変数値iで組合せ充足処理に成功している。このよ
うに、多くの変数値について多くの制約違反条件の成立
/不成立を検査するのには一般に非常に時間がかかる。
実際の問題に適用する場合には、制約違反条件の数が極
めて多くなるので、多大な時間を要することになる。例
えば、このような組合せ問題の計算処理時間の94%以
上が制約違反条件の検査に費やされている。
【0163】このような状況のもとで、処理の並列化を
図ることは、組合せ制約充足/最適化の処理をさらに高
速化するうえで有効であると考えられる。並列化の方法
としては4通りが考えられる。図33は並列化方法の説
明図である。
図ることは、組合せ制約充足/最適化の処理をさらに高
速化するうえで有効であると考えられる。並列化の方法
としては4通りが考えられる。図33は並列化方法の説
明図である。
【0164】図33の(a)は、複数のプロセサに変数
値を分担させるものである。今、制約違反条件の検査に
使用できるプロセサが4台あるとすると、各プロセサP
0〜P3に検査対象の変数値を分担させる。各プロセサ
P0〜P3は、自分が担当する変数値についてだけ、そ
れまで生成・格納されている制約違反条件を検査すれば
よく、制約違反条件を成立させない変数値を求める時間
が1プロセサで実行する場合よりも短縮される。
値を分担させるものである。今、制約違反条件の検査に
使用できるプロセサが4台あるとすると、各プロセサP
0〜P3に検査対象の変数値を分担させる。各プロセサ
P0〜P3は、自分が担当する変数値についてだけ、そ
れまで生成・格納されている制約違反条件を検査すれば
よく、制約違反条件を成立させない変数値を求める時間
が1プロセサで実行する場合よりも短縮される。
【0165】一方、図33の(b)は、複数のプロセサ
に制約違反条件を分担して持たせるものである。5台の
プロセサP0〜P4が使用可能であるとすると、5台の
プロセサに制約違反条件を分担して持たせる。これによ
って、各プロセサで行なう検査の対象となる制約違反条
件の数は少なくなり、成立する制約違反条件の有無を調
べる検査の時間が1プロセサで実行する場合よりも短縮
される。
に制約違反条件を分担して持たせるものである。5台の
プロセサP0〜P4が使用可能であるとすると、5台の
プロセサに制約違反条件を分担して持たせる。これによ
って、各プロセサで行なう検査の対象となる制約違反条
件の数は少なくなり、成立する制約違反条件の有無を調
べる検査の時間が1プロセサで実行する場合よりも短縮
される。
【0166】さらに、図33の(c)は、変数値および
制約違反条件の両方を複数プロセサに分担させる方法で
ある。9台のプロセサP0〜P8が使用可能とすると、
それぞれのプロセサに制約違反条件および変数値を分担
する。これによると、各プロセサP0〜P8は、変数の
変更/選択の際、自分が担当する変数値について、自分
が格納している制約違反条件のうちで成立するものがあ
るか否かを判定すればよい。これは図33の(a)と
(b)とを組み合わせた形であり、変数値の変更/選択
の時間が1プロセサで行なう場合よりも短縮される。
制約違反条件の両方を複数プロセサに分担させる方法で
ある。9台のプロセサP0〜P8が使用可能とすると、
それぞれのプロセサに制約違反条件および変数値を分担
する。これによると、各プロセサP0〜P8は、変数の
変更/選択の際、自分が担当する変数値について、自分
が格納している制約違反条件のうちで成立するものがあ
るか否かを判定すればよい。これは図33の(a)と
(b)とを組み合わせた形であり、変数値の変更/選択
の時間が1プロセサで行なう場合よりも短縮される。
【0167】最後に、図33の(d)は、生成した制約
違反条件が複数の条件の論理積となっている場合に、そ
れを部分論理式に分割し、各部分論理式を複数のプロセ
サに分担して持たせるものである。例えば、制約違反条
件が条件Aと条件Bの論理積(A∧B)である場合に、
それを部分論理式に分割し、プロセサP1には制約違反
条件Aを、プロセサP2には制約違反条件Bを検査させ
るようにする。制約違反条件が短く分割されることによ
って検査時間が短縮される。
違反条件が複数の条件の論理積となっている場合に、そ
れを部分論理式に分割し、各部分論理式を複数のプロセ
サに分担して持たせるものである。例えば、制約違反条
件が条件Aと条件Bの論理積(A∧B)である場合に、
それを部分論理式に分割し、プロセサP1には制約違反
条件Aを、プロセサP2には制約違反条件Bを検査させ
るようにする。制約違反条件が短く分割されることによ
って検査時間が短縮される。
【0168】図34は、図30に示した並列処理による
組合せ制約充足/最適化システムの処理の全体の流れの
説明図である。まず、制約違反条件を管理するテーブル
などの初期設定を行ない(S1710)、問題となるデータ
(各変数の各属性値など)を入力する(S1720) 。次
に、ユーザより与えられた不等式系からなる制約違反条
件( または制約充足条件) を入力する(S1730) 。
組合せ制約充足/最適化システムの処理の全体の流れの
説明図である。まず、制約違反条件を管理するテーブル
などの初期設定を行ない(S1710)、問題となるデータ
(各変数の各属性値など)を入力する(S1720) 。次
に、ユーザより与えられた不等式系からなる制約違反条
件( または制約充足条件) を入力する(S1730) 。
【0169】そして、次に、変数値または制約違反不等
式を図33の(a)〜(d)に示すいずれかの方法で複
数のプロセサに分配する(S1740) 。そして、分配され
た変数値または制約違反不等式について、各プロセサで
同時に制約充足処理を実行する(S1750) 。複数のプロ
セサによる処理が終了したなら、その結果の統合を行な
い、出力する(S1760) 。最終的な結果が得られたと判
断された場合(S1770のN)には、それらを求める解と
して出力し、処理を終了する。一方、処理を続行する
(Y)場合には、NJのクリアを行なうか否かをユーザ
に問い(S1780)、必要ならば(Y)NJをクリアし
(S1790) 、必要でないならば(N)そのまま、制約条
件入力処理S1730に戻り、以下の処理を繰り返す。
式を図33の(a)〜(d)に示すいずれかの方法で複
数のプロセサに分配する(S1740) 。そして、分配され
た変数値または制約違反不等式について、各プロセサで
同時に制約充足処理を実行する(S1750) 。複数のプロ
セサによる処理が終了したなら、その結果の統合を行な
い、出力する(S1760) 。最終的な結果が得られたと判
断された場合(S1770のN)には、それらを求める解と
して出力し、処理を終了する。一方、処理を続行する
(Y)場合には、NJのクリアを行なうか否かをユーザ
に問い(S1780)、必要ならば(Y)NJをクリアし
(S1790) 、必要でないならば(N)そのまま、制約条
件入力処理S1730に戻り、以下の処理を繰り返す。
【0170】図35は、並列処理システムにおける変数
値変更/選択処理の処理フローチャートである。今、複
数のプロセサに変数値を分担する場合を考える(図33
の(a))。各プロセサで異なる変数値について同様の
処理を行なうことになる。
値変更/選択処理の処理フローチャートである。今、複
数のプロセサに変数値を分担する場合を考える(図33
の(a))。各プロセサで異なる変数値について同様の
処理を行なうことになる。
【0171】まず、未検査の変数値があるか否かを判定
する(S1800)。未検査の変数値が存在する場合(Y)
には、制約違反条件格納部に格納されいてる各制約違反
条件について制約違反条件の成立/不成立を検査する
(S1810) 。そして、成立する制約違反条件があったか
否かを判定する(S1820) 。成立する制約違反条件が見
つからなかった場合(N)には、他のプロセサへその旨
を通知し(S1830) 、変数値の変更/選択処理に成功し
たとして処理を終了する。一方、制約違反条件が見つか
った場合(Y)には、他のプロセサから通知される検査
結果を受信し、他のプロセサでは成功したか否かを判定
する(S1840) 。他のプロセサでも変数値変更/選択処
理に失敗していたならば(N)、制約違反条件を合成し
(S1850)、次の変数値の検査に移る(S1800の処理に
戻り、以下の処理を繰り返す)。また、他のプロセサで
は変数値変更/選択処理に成功(すなわち、成立する制
約違反条件がない)した場合には、その変数値を受信し
て(S1860) 、変数値変更/選択処理を成功して終了す
る。
する(S1800)。未検査の変数値が存在する場合(Y)
には、制約違反条件格納部に格納されいてる各制約違反
条件について制約違反条件の成立/不成立を検査する
(S1810) 。そして、成立する制約違反条件があったか
否かを判定する(S1820) 。成立する制約違反条件が見
つからなかった場合(N)には、他のプロセサへその旨
を通知し(S1830) 、変数値の変更/選択処理に成功し
たとして処理を終了する。一方、制約違反条件が見つか
った場合(Y)には、他のプロセサから通知される検査
結果を受信し、他のプロセサでは成功したか否かを判定
する(S1840) 。他のプロセサでも変数値変更/選択処
理に失敗していたならば(N)、制約違反条件を合成し
(S1850)、次の変数値の検査に移る(S1800の処理に
戻り、以下の処理を繰り返す)。また、他のプロセサで
は変数値変更/選択処理に成功(すなわち、成立する制
約違反条件がない)した場合には、その変数値を受信し
て(S1860) 、変数値変更/選択処理を成功して終了す
る。
【0172】一方、S1800の処理において未検査の変数
値が残っていない場合(N)には、他のプロセサからの
通知を受信し、他のプロセサで成功しているか否かを判
定する(S1870) 。他のプロセサで成功している場合
(Y)には、変数値を受信し(S1860) 、処理を終了す
る。一方、他のプロセサで成功していない場合(N)、
すなわち、他のプロセサでも成立する制約違反条件があ
り、変数値変更/選択が失敗であれば、その制約違反条
件を受信し(S1880)、制約違反条件を合成して登録す
る(S1890) 。そして処理を終了する。
値が残っていない場合(N)には、他のプロセサからの
通知を受信し、他のプロセサで成功しているか否かを判
定する(S1870) 。他のプロセサで成功している場合
(Y)には、変数値を受信し(S1860) 、処理を終了す
る。一方、他のプロセサで成功していない場合(N)、
すなわち、他のプロセサでも成立する制約違反条件があ
り、変数値変更/選択が失敗であれば、その制約違反条
件を受信し(S1880)、制約違反条件を合成して登録す
る(S1890) 。そして処理を終了する。
【0173】この例では、毎回、他のプロセサの結果を
確かめるようにしているが、他のプロセサからの結果を
受信した場合に、図30の通信部1470が割り込みをかけ
ることにより、他のプロセサの結果を認識するようにし
てもよい。
確かめるようにしているが、他のプロセサからの結果を
受信した場合に、図30の通信部1470が割り込みをかけ
ることにより、他のプロセサの結果を認識するようにし
てもよい。
【0174】図36は、制約違反条件を複数のプロセサ
に分割する場合(図33の(b))の実施例における制
約違反条件の検査のフローチャートである。まず、未検
査の制約違反条件があるか否かを判定する(S1900) 。
ある場合(Y)には評価する(S1910) 。そして成立す
るか否かを判定し(S1920) 、成立していなければ
(N)、さらに未検査の制約違反条件があるか否かを判
定する処理に戻る(S1900) 。すなわち、制約違反条件の
検査を開始すると、成立する制約違反条件が見つからな
いかぎり未検査の制約違反条件を評価する。成立する制
約違反条件があれば(S1920 のY)、それを他のプロセ
サに通知し(S1930) 、次の変数値の処理に移る。このと
き、制約違反条件の合成を行なっておいてもよい。
に分割する場合(図33の(b))の実施例における制
約違反条件の検査のフローチャートである。まず、未検
査の制約違反条件があるか否かを判定する(S1900) 。
ある場合(Y)には評価する(S1910) 。そして成立す
るか否かを判定し(S1920) 、成立していなければ
(N)、さらに未検査の制約違反条件があるか否かを判
定する処理に戻る(S1900) 。すなわち、制約違反条件の
検査を開始すると、成立する制約違反条件が見つからな
いかぎり未検査の制約違反条件を評価する。成立する制
約違反条件があれば(S1920 のY)、それを他のプロセ
サに通知し(S1930) 、次の変数値の処理に移る。このと
き、制約違反条件の合成を行なっておいてもよい。
【0175】すべての制約違反条件を検査しても成立す
るものがない場合(S1900のN)には、他のプロセサから
通知される検査結果を受信し、成立する制約違反条件が
通知されているか否かを判定する(S1940)。成立する制
約違反条件がある場合(Y)には、制約違反条件を受信
し(S1950)、制約違反条件の合成を行ない(S1960) 、次
の変数値の処理へ移る。他のプロセサでも成立する制約
違反条件が見つからなかった場合(N)は、変数値変更
/選択は成功であり、次の処理に移る(値が未定の変数
が残っているか否かをチェックする)。ただし、自分が
格納している制約違反条件をすべて検査しないうちに他
のプロセサから成立する制約違反条件が通知された場合
は、実行中の検査の処理は中断して構わない。
るものがない場合(S1900のN)には、他のプロセサから
通知される検査結果を受信し、成立する制約違反条件が
通知されているか否かを判定する(S1940)。成立する制
約違反条件がある場合(Y)には、制約違反条件を受信
し(S1950)、制約違反条件の合成を行ない(S1960) 、次
の変数値の処理へ移る。他のプロセサでも成立する制約
違反条件が見つからなかった場合(N)は、変数値変更
/選択は成功であり、次の処理に移る(値が未定の変数
が残っているか否かをチェックする)。ただし、自分が
格納している制約違反条件をすべて検査しないうちに他
のプロセサから成立する制約違反条件が通知された場合
は、実行中の検査の処理は中断して構わない。
【0176】変数値および制約違反条件を分割して並列
処理する場合(図33の(c))や、制約違反条件を部
分論理式に分割して並列処理する場合(図33の
(d))でも、同様に各プロセサが連携して、制約違反
条件の検査を並列化して行なうことが可能である。
処理する場合(図33の(c))や、制約違反条件を部
分論理式に分割して並列処理する場合(図33の
(d))でも、同様に各プロセサが連携して、制約違反
条件の検査を並列化して行なうことが可能である。
【0177】
【発明の効果】以上に説明したように本発明によれば、
生成された制約違反条件または制約充足条件は、これに
含まれる変数に対応する現在の変数値の組合せを禁止す
る条件となるが、禁止する組合せは現在の組合せに限定
されず、この制約違反条件を満たす(または制約充足条
件を満たさない)組合せはこれ以降すべて禁止され、例
えば、制約となる不等式が係数がすべて1の線形不等式
(ただし、不等号は≦)なら、和が現在の変数値の和以
上(さらには、制約値から既に数値化された部分の和を
差し引いた値以上(これは現在の変数値の和を上回るこ
とはない))となるすべての組合せが禁止されることに
なり、無駄な探索が省略できると共に、これによって、
制約充足問題の解法時間の短縮が可能になる。
生成された制約違反条件または制約充足条件は、これに
含まれる変数に対応する現在の変数値の組合せを禁止す
る条件となるが、禁止する組合せは現在の組合せに限定
されず、この制約違反条件を満たす(または制約充足条
件を満たさない)組合せはこれ以降すべて禁止され、例
えば、制約となる不等式が係数がすべて1の線形不等式
(ただし、不等号は≦)なら、和が現在の変数値の和以
上(さらには、制約値から既に数値化された部分の和を
差し引いた値以上(これは現在の変数値の和を上回るこ
とはない))となるすべての組合せが禁止されることに
なり、無駄な探索が省略できると共に、これによって、
制約充足問題の解法時間の短縮が可能になる。
【0178】また、ある制約値で制約充足をするとき、
直ちにその制約値で制約充足を行った場合と、その制約
値より大きい制約値から出発して制約値を更新してい
き、最終的にその制約値で制約充足を行った場合を、計
算時間で比較すると、後者は前者に比べて3割前後短縮
することが可能になる。
直ちにその制約値で制約充足を行った場合と、その制約
値より大きい制約値から出発して制約値を更新してい
き、最終的にその制約値で制約充足を行った場合を、計
算時間で比較すると、後者は前者に比べて3割前後短縮
することが可能になる。
【0179】また、前述に示したフラグを用いる方法に
よれば、従来技術で要請される「初めからすべての変数
値が既知でなければならない」という制限がなくなり、
例えば、論理設計の場合のように変数値を知るのに計算
コストがかかる問題であっても容易に対応することが可
能になる。
よれば、従来技術で要請される「初めからすべての変数
値が既知でなければならない」という制限がなくなり、
例えば、論理設計の場合のように変数値を知るのに計算
コストがかかる問題であっても容易に対応することが可
能になる。
【0180】さらに、前述の偏微分係数を利用する構成
では、不等式の関数の値が単調に増加あるいは減少する
ような問題においては、新たな制約違反条件または制約
充足条件を生成することができ、効率よく問題を解くこ
とが可能になる。
では、不等式の関数の値が単調に増加あるいは減少する
ような問題においては、新たな制約違反条件または制約
充足条件を生成することができ、効率よく問題を解くこ
とが可能になる。
【0181】一方、これら本発明の構成を複数のプロセ
サで並列処理することにより、組合せ充足問題あるいは
組合せ最適化問題の処理時間を大きく短縮することが可
能になる。すなわち、変数値または制約違反条件をプロ
セサ間で分割して保持することにより、主に、組合せ問
題処理の殆どの部分を占める制約違反条件の検査に要す
る時間を、プロセサの台数に応じて短縮できるようにな
る。
サで並列処理することにより、組合せ充足問題あるいは
組合せ最適化問題の処理時間を大きく短縮することが可
能になる。すなわち、変数値または制約違反条件をプロ
セサ間で分割して保持することにより、主に、組合せ問
題処理の殆どの部分を占める制約違反条件の検査に要す
る時間を、プロセサの台数に応じて短縮できるようにな
る。
【図1】本発明の制約違反条件を生成する解法について
の原理構成図である。
の原理構成図である。
【図2】本発明の制約充足条件を生成する解法について
の原理構成図である。
の原理構成図である。
【図3】本発明の作用説明図である。
【図4】好適実施例のシステム構成図(制約違反条件を
生成する場合の原理構成図)である。
生成する場合の原理構成図)である。
【図5】制約充足システムの処理フローチャートであ
る。
る。
【図6】制約充足処理説明図である。
【図7】変数値変更処理説明図である。
【図8】最適化システムの処理フローチャートである。
【図9】ナップザック問題への適用説明図(その1)で
ある。
ある。
【図10】ナップザック問題への適用説明図(その2)
である。
である。
【図11】ナップザック問題への適用説明図(その3)
である。
である。
【図12】ナップザック問題への適用説明図(その4)
である。
である。
【図13】ナップザック問題への適用説明図(その5)
である。
である。
【図14】ナップザック問題への適用説明図(その6)
である。
である。
【図15】ナップザック問題への適用説明図(その7)
である。
である。
【図16】ナップザック問題への適用説明図(その8)
である。
である。
【図17】ナップザック問題への適用説明図(その9)
である。
である。
【図18】ナップザック問題への適用説明図(その1
0)である。
0)である。
【図19】ナップザック問題への適用説明図(その1
1)である。
1)である。
【図20】ナップザック問題への適用説明図(その1
2)である。
2)である。
【図21】ナップザック問題への適用説明図(その1
3)である。
3)である。
【図22】本発明による最適化実行例を示す図である。
【図23】従来技術との比較説明図である。
【図24】切断問題に適用した場合の説明図(その1)
である。
である。
【図25】切断問題に適用した場合の説明図(その2)
である。
である。
【図26】切断問題に適用した場合の説明図(その3)
である。
である。
【図27】切断問題に適用した場合の説明図(その4)
である。
である。
【図28】LSI論理設計問題への適用例を示す図であ
る。
る。
【図29】偏微分係数を制約条件に使用する場合のシス
テム構成図である。
テム構成図である。
【図30】一実施例のシステム構成図(並列処理システ
ム)である。
ム)である。
【図31】並列処理の作用説明図(すべての変数値が変
更/選択を禁止される場合)である。
更/選択を禁止される場合)である。
【図32】並列処理の作用説明図(変数値iがどの制約
違反条件にも該当しなかった場合)である。
違反条件にも該当しなかった場合)である。
【図33】並列化方法の説明図である。
【図34】並列処理によるシステムの全体処理の流れ図
である。
である。
【図35】並列処理システムにおける変数値変更/選択
のフローチャートである。
のフローチャートである。
【図36】並列処理システムにおける制約違反条件の検
査のフローチャートである。
査のフローチャートである。
101,201 不等式系 102 初期制約違反不等式生成部 103 制約違反条件格納部 104,204 変数値変更部 105,205 変数値選択部 106 制約違反条件生成部 202 初期制約充足不等式生成部 203 制約充足条件格納部 206 制約充足条件生成部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 澤田 秀穂 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 滝沢 ユカ 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 吉田 裕之 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内
Claims (16)
- 【請求項1】 不等式や等式で与えられた制約を満たす
ように、産業上または技術上の複数の物理的資源を組み
合わせて、各物理的資源に関する各物理的属性データの
離散的な値を決定する組合せ制約充足問題、あるいは/
そして、不等式や等式で与えられた制約を満たし、か
つ、与えられた評価関数の値を最小あるいは最大にする
ように各物理的属性データの離散的な値を決定する組合
せ最適化問題を解く組合せ問題処理装置であって、 制約違反条件テーブルと変数値および属性値のデータテ
ーブルを登録する格納手段と、 外部から指示される制約である不等式系や等式系と相反
する制約違反不等式を生成する初期制約違反不等式生成
手段と、 前記格納手段のデータテーブルに格納された属性値と、
前記格納手段の制約違反条件テーブルに格納された制約
違反条件を参照しながら、制約充足を調べる変数値を現
在の値から他の値に、すべての制約違反条件を成立させ
ないように変更して得られる変更値を求める変数値変更
手段と、 前記格納手段のデータテーブルに格納された属性値と、
前記格納手段の制約違反条件テーブルに格納された制約
違反条件を参照しながら、値が未定の変数値について、
その値をすべての制約違反条件を成立させないように選
択して得られる選択値を求める変数値選択手段と、 すべての前記変更値や選択値に対して少なくとも1つの
制約違反条件が成立する場合に、前記格納手段の制約違
反条件テーブルに格納された制約違反条件を参照し、該
制約違反条件の中に現れる変数値を該変更値や選択値に
基づいて数値化することにより得られる条件の論理積を
簡略化した、新しい制約違反条件を生成し、生成された
制約違反条件を該制約違反条件テーブルに格納する制約
違反条件生成手段と を備えることを特徴とする組合せ問
題処理装置。 - 【請求項2】 前記格納手段は、制約違反条件を格納す
る際、格納されようとする条件がすでに格納されている
他の条件よりも論理的に弱ければ、以前の制約違反条件
を削除してから新しい制約違反条件を格納することを特
徴とする請求 項1記載の組合せ問題処理装置。 - 【請求項3】 前記初期制約違反不等式生成手段は、外
部から指定される制約が等式系である場合には、制約で
ある等式を等価な二つの不等式に変更し、二つの制約違
反不等式を生成することを特徴とする請求項1記載の組
合せ問題処理装置。 - 【請求項4】 前記初期制約違反不等式生成手段は、前
記評価関数の値を最小または最大にする前記組合せ最適
化問題を解く場合には、前記制約違反不等式に加えて、
該評価関数に対応する可変不等式を生成し、該可変不等
式を付加した不等式系による制約に対して組合せ制約充
足問題を解き、該評価関数に対応する可変不等式の制約
値を、得られた評価関数値から所定の十分小さな正数を
引いた値または得られた評価関数値に所定の十分小さな
正数を加えた値に更新し、組合せ制約充足問題の処理を
繰り返すことにより、該組合せ最適化問題の解を得るこ
とを特徴とする請求項1記載の組合せ問題処理装置。 - 【請求項5】 前記制約違反条件生成手段は、初めから
すべての変数値が既知ではないような場合であって、新
しい変数値が追加になるような場合が存在する問題を解
く場合には、生成する制約違反条件に、当該変数値がこ
れ以上ないことを示すフラグを付加して、前記格納手段
の制約違反条件テーブルに格納しておき、実際に当該変
数の新しい変数値を使用する際には、このフラグが付い
ている制約違反条件を無効にすることによって新しい変
数値に対応することを特徴とする請求項1記載の組合せ
問題処理装置。 - 【請求項6】 前記制約違反条件生成手段は、前記変数
値変更手段と変数値選択手段が設定したある変数値の組
合せが制約を満たさない場合に、不等式の左辺の偏微分
係数を利用して制約違反条件を生成し、不等式の関数の
値が単調に増加あるいは減少するような問題を解くこと
を特徴とする請求項1記載の組合せ問題処理装置。 - 【請求項7】 不等式や等式で与えられた制約を満たす
ように、産業上または技術上の複数の物理的資源を組み
合わせて、各物理的資源に関する各物理的属性データの
離散的な値を決定する組合せ制約充足問題、あるいは/
そして、不等式や等式で与えられた制約を満たし、か
つ、与えられた評価関数の値を最小ある いは最大にする
ように各物理的属性データの離散的な値を決定する組合
せ最適化問題を解く組合せ問題処理装置であって、 制約充足条件テーブルと変数値および属性値のデータテ
ーブルを登録する格納手段と、 外部から指示される制約である不等式系や等式系に対応
する制約充足不等式を生成する初期制約充足不等式生成
手段と、 前記格納手段のデータテーブルに格納された属性値と、
前記格納手段の制約充足条件テーブルに格納された制約
充足条件を参照しながら、制約充足を調べる変数値を現
在の値から他の値に、すべての制約充足条件を成立させ
るように変更して得られる変更値を求める変数値変更手
段と、 前記格納手段のデータテーブルに格納された属性値と、
前記格納手段の制約充足条件テーブルに格納された制約
充足条件を参照しながら、値が未定の変数値について、
その値をすべての制約充足条件を成立させるように選択
して得られる選択値を求める変数値選択手段と、 すべての前記変更値や選択値に対して少なくとも1つの
制約充足条件が成立しない場合に、前記格納手段の制約
充足条件テーブルに格納された制約充足条件を参照し、
該制約充足条件の中に現れる変数値を該変更値や選択値
に基づいて数値化することにより得られる条件の論理和
を簡略化した、新しい制約充足条件を生成し、生成され
た制約充足条件を該制約充足条件テーブルに格納する制
約充足条件生成手段と を備えることを特徴とする組合せ
問題処理装置。 - 【請求項8】 前記格納手段は、制約充足条件を格納す
る際、格納されようとする条件がすでに格納されている
他の条件よりも論理的に強ければ、以前の制約充足条件
を削除してから新しい制約充足条件を格納することを特
徴とする請求項7記載の組合せ問題処理装置。 - 【請求項9】 前記初期制約充足不等式生成手段は、外
部から指定される制約が等式系である場合には、制約で
ある等式を等価な二つの不等式に変更し、二つの制約充
足不等式を生成することを特徴とする請求項7記載の組
合せ問題処理装置。 - 【請求項10】 前記初期制約充足不等式生成手段は、
前記評価関数の値を最小または最大にする前記組合せ最
適化問題を解く場合には、前記制約充足不等式に加え
て、該評価関数に対応する可変不等式を生成し、該可変
不等式を付加した不等式系による制約に対して組合せ制
約充足問題を解き、該評価関数に対応する可変不等式の
制約値を、得られた評価関数値から所定の十分小さな正
数を引いた値または得られた評価関数値に所定の十分小
さな正数を加えた値に更新し、組合せ制約充足問題の処
理を繰り返すことにより、該組合せ最適化問題の解を得
ることを特徴とする請求項7記載の組合せ問題処理装
置。 - 【請求項11】 前記制約充足条件生成手段は、初めか
らすべての変数値が既知ではないような場合であって、
新しい変数値が追加になるような場合が存在する問題を
解く場合には、生成する制約充足条件に、当該変数値が
さらにあることを示すフラグを付加して、前記格納手段
の制約充足条件テーブルに格納しておき、実際に当該変
数の新しい変数値を使用する際には、このフラグが付い
ている制約充足条件を無効にすることによって新しい変
数値に対応することを特徴とする請求項7記載の組合せ
問題処理装置。 - 【請求項12】 前記制約充足条件生成手段は、前記変
数値変更手段と変数値選択手段が設定したある変数値の
組合せが制約を満たさない場合に、不等式の左辺の偏微
分係数を利用して制約充足条件を生成し、不等式の関数
の値が単調に増加あるいは減少するような問題を解くこ
とを特徴とする請求項7記載の組合せ問題処理装置。 - 【請求項13】 不等式や等式で与えられた制約を満た
すように、産業上または技術上の複数の物理的資源を組
み合わせて、各物理的資源に関する各物理的属性データ
の離散的な値を決定する組合せ制約充足問題、あるいは
/そして、不等式や等式で与えられた制約を満たし、か
つ、与えられた評価関数の値を最小あるいは最大にする
ように各物理的属性データの離散的な値を決定する組合
せ最適化問題を解く組合せ問題処理システムであって、 前記組合せ問題処理システムは複数のプロセサを有し、
各プロセサは、 制約違反条件テーブルと変数値および属性値のデータテ
ーブルを登録する格納手段と、 外部から指示される制約である不等式系や等式系と相反
する制約違反不等式を生成する初期制約違反不等式生成
手段と、 前記格納手段のデータテーブルに格納された属性値と、
前記格納手段の制約違反条件テーブルに格納された制約
違反条件を参照しながら、制約充足を調べる変数値を現
在の値から他の値に、すべての制約違反条件を成立させ
ないように変更して得られる変更値を求める変数値変更
手段と、 前記格納手段のデータテーブルに格納された属性値と、
前記格納手段の制約違反条件テーブルに格納された制約
違反条件を参照しながら、値が未定の変数値について、
その値をすべての制約違反条件を成立させないように選
択して得られる選択値を求める変数値選択手段と、 すべての前記変更値や選択値に対して少なくとも1つの
制約違反条件が成立する場合に、前記格納手段の制約違
反条件テーブルに格納された制約違反条件を参照し、該
制約違反条件の中に現れる変数値を該変更値や選択値に
基づいて数値化することにより得られる条件の論理積を
簡略化した、新しい制約違反条件を生成し、生成された
制約違反条件を該制約違反条件テーブルに格納する制約
違反条件生成手段と、 他のプロセサと通信する通信手段とを備え、 前記複数のプロセサは、以下のア)、イ)、ウ)または
エ)のいずれかの情報を該複数のプロセサに分割して保
持し、並列に処理を行うことを特徴とする組合せ問題処
理システム。 ア)変数値 イ)制約充足条件 ウ)変数値および制約充足条件の両方 エ)条件の論理積を簡略化して生成された制約充足条件
の部分論理式 - 【請求項14】 不等式や等式で与えられた制約を満た
すように、産業上または技術上の複数の物理的資源を組
み合わせて、各物理的資源に関する各物理的属性データ
の離散的な値を決定する組合せ制約充足問題、あるいは
/そして、不等式や等式で与えられた制約を満たし、か
つ、与えられた評価関数の値を最小あるいは最大にする
ように各物理的属性データの離散的な値を決定する組合
せ最適 化問題を解く組合せ問題処理システムであって、 前記組合せ問題処理システムは複数のプロセサを有し、
各プロセサは、 制約充足条件テーブルと変数値および属性値のデータテ
ーブルを登録する格納手段と、 外部から指示される制約である不等式系や等式系に対応
する制約充足不等式を生成する初期制約充足不等式生成
手段と、 前記格納手段のデータテーブルに格納された属性値と、
前記格納手段の制約充足条件テーブルに格納された制約
充足条件を参照しながら、制約充足を調べる変数値を現
在の値から他の値に、すべての制約充足条件を成立させ
るように変更して得られる変更値を求める変数値変更手
段と、 前記格納手段のデータテーブルに格納された属性値と、
前記格納手段の制約充足条件テーブルに格納された制約
充足条件を参照しながら、値が未定の変数値について、
その値をすべての制約充足条件を成立させるように選択
して得られる選択値を求める変数値選択手段と、 すべての前記変更値や選択値に対して少なくとも1つの
制約充足条件が成立しない場合に、前記格納手段の制約
充足条件テーブルに格納された制約充足条件を参照し、
該制約充足条件の中に現れる変数値を該変更値や選択値
に基づいて数値化することにより得られる条件の論理和
を簡略化した、新しい制約充足条件を生成し、生成され
た制約充足条件を該制約充足条件テーブルに格納する制
約充足条件生成手段と 他のプロセサと通信する通信手段とを備え、 前記複数のプロセサは、以下のア)、イ)、ウ)または
エ)のいずれかの情報を該複数のプロセサに分割して保
持し、並列に処理を行うことを特徴とする組合せ問題処
理システム。 ア)変数値 イ)制約充足条件 ウ)変数値および制約充足条件の両方 エ)条件の論理和を簡略化して生成された制約充足条件
の部分論理式 - 【請求項15】 産業上または技術上の物理的資源に関
する物理的属性デー タの全体集合Uのn個の変数X 1 ,
…,X n のあらゆる組合せの中から、最適な組合せを求
める組合せ問題処理方法であって、 制約違反条件テーブルと変数値および属性値のデータテ
ーブルを計算機に登録し、 前記計算機により、外部から指示される制約である不等
式系や等式系と相反する制約違反不等式を生成し、 前記計算機により、前記制約違反条件テーブルに登録さ
れた制約違反条件と、前記データテーブルに登録された
変数値および属性値を参照しながら、以下のア)、イ)
およびウ)の処理を行うことを特徴とする組合せ問題処
理方法。 ア)前記全体集合Uの部分集合Aに含まれる変数のみ
で、部分集合Aの補集合U−Aに含まれる変数の組合せ
に無関係に、前記制約違反条件が成立するか否かを検出
する処理 イ)前記ア)の処理において前記制約違反条件が成立す
ることが検出された場合に、部分集合Aの補集合U−A
に含まれる変数の組合せを省略する処理 ウ)前記ア)の処理において前記制約違反条件が成立す
ることが検出された場合に、部分集合Aに含まれる変数
のみに関係する新しい制約違反条件を生成する処理 - 【請求項16】 産業上または技術上の物理的資源に関
する物理的属性データの全体集合Uのn個の変数X 1 ,
…,X n のあらゆる組合せの中から、最適な組合せを求
める組合せ問題処理方法であって、 制約充足条件テーブルと変数値および属性値のデータテ
ーブルを計算機に登録し、 前記計算機により、外部から指示される制約である不等
式系や等式系に対応する制約充足不等式を生成し、 前記計算機により、前記制約充足条件テーブルに登録さ
れた制約充足条件と、前記データテーブルに登録された
変数値および属性値を参照しながら、以下のア)、イ)
およびウ)の処理を行うことを特徴とする組合せ問題処
理方法。 ア)前記全体集合Uの部分集合Aに含まれる変数のみ
で、部分集合Aの補集合U−Aに含まれる変数の組合せ
に無関係に、前記制約充足条件が成立するか否か を検出
する処理 イ)前記ア)の処理において前記制約充足条件が成立し
ないことが検出された場合に、部分集合Aの補集合U−
Aに含まれる変数の組合せを省略する処理 ウ)前記ア)の処理において前記制約充足条件が成立し
ないことが検出された場合に、部分集合Aに含まれる変
数のみに関係する新しい制約充足条件を生成する処理
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP29749691A JP3170828B2 (ja) | 1990-11-14 | 1991-11-13 | 組合せ問題処理装置 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP30791590 | 1990-11-14 | ||
JP2-307915 | 1990-11-14 | ||
JP3-21617 | 1991-01-22 | ||
JP2161791 | 1991-01-22 | ||
JP29749691A JP3170828B2 (ja) | 1990-11-14 | 1991-11-13 | 組合せ問題処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0528126A JPH0528126A (ja) | 1993-02-05 |
JP3170828B2 true JP3170828B2 (ja) | 2001-05-28 |
Family
ID=27283492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP29749691A Expired - Fee Related JP3170828B2 (ja) | 1990-11-14 | 1991-11-13 | 組合せ問題処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3170828B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6554946B1 (en) | 1995-12-12 | 2003-04-29 | Canon Kabushiki Kaisha | Method of manufacturing image-forming apparatus |
KR101710090B1 (ko) * | 2015-01-29 | 2017-03-08 | 서강대학교산학협력단 | Uv-led 광원기반의 휴대용 형광 측정 장치 및 uv-led 광원을 이용한 형광 측정 방법 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2989991B2 (ja) * | 1993-05-06 | 1999-12-13 | 日本電気株式会社 | 組合せ最適化初期割付け作成方法 |
JP5966690B2 (ja) * | 2012-07-04 | 2016-08-10 | 富士通株式会社 | サーバ装置、フィルタリング方法、およびフィルタリングプログラム |
-
1991
- 1991-11-13 JP JP29749691A patent/JP3170828B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6554946B1 (en) | 1995-12-12 | 2003-04-29 | Canon Kabushiki Kaisha | Method of manufacturing image-forming apparatus |
KR101710090B1 (ko) * | 2015-01-29 | 2017-03-08 | 서강대학교산학협력단 | Uv-led 광원기반의 휴대용 형광 측정 장치 및 uv-led 광원을 이용한 형광 측정 방법 |
Also Published As
Publication number | Publication date |
---|---|
JPH0528126A (ja) | 1993-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Van Dijk et al. | Sylvan: multi-core framework for decision diagrams | |
US7953778B2 (en) | Efficient support of consistent cyclic search with read-copy update and parallel updates | |
US5987468A (en) | Structure and method for efficient parallel high-dimensional similarity join | |
Chon et al. | GMiner: A fast GPU-based frequent itemset mining method for large-scale data | |
US5307485A (en) | Method and apparatus for merging sorted lists in a multiprocessor shared memory system | |
Hattori et al. | Quantum circuit optimization by changing the gate order for 2D nearest neighbor architectures | |
US5267346A (en) | Combination problem solving apparatus | |
CN107102999B (zh) | 关联分析方法和装置 | |
HU214423B (hu) | Előfeldolgozó processzor gyorsító memóriához | |
JPH04319734A (ja) | ロック管理装置 | |
Huynh et al. | An efficient method for mining frequent sequential patterns using multi-core processors | |
Shiokawa et al. | Scalescan: scalable density-based graph clustering | |
Sun et al. | Learned index: A comprehensive experimental evaluation | |
Ren et al. | VLL: a lock manager redesign for main memory database systems | |
Bringmann et al. | Faster minimization of tardy processing time on a single machine | |
Bloemen et al. | Multi-core SCC-based LTL model checking | |
JP3170828B2 (ja) | 組合せ問題処理装置 | |
Nguyen et al. | Mining inter-sequence patterns with Itemset constraints | |
US6219672B1 (en) | Distributed shared memory system and method of controlling distributed shared memory | |
Farouzi et al. | A scalable randomized algorithm for triangle enumeration on graphs based on SQL queries | |
Liu et al. | A Unified Parallel Framework for LUT Mapping and Logic Optimization | |
Sasak-Okoń | Modifying queries strategy for graph-based speculative query execution for RDBMS | |
El-Hajj et al. | Parallel association rule mining with minimum inter-processor communication | |
Yilmaz et al. | A heuristic for mining association rules in polynomial time | |
Barbay et al. | Dynamic online multiselection in internal and external memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 19960806 |
|
LAPS | Cancellation because of no payment of annual fees |