否定情報の処理

Download Report

Transcript 否定情報の処理

Hybrid cc with interval
constraint
上田研究室 M2
若槻 聡一郎
2005/06/14
1
発表の流れ


並行制約プログラミングについて
Hybrid ccの定義



処理系の動作




Hybrid ccの構文
Hybrid ccにおける制約
操作的意味論
各フェーズにおける動作
プログラムの実行
Hybrid ccの制約ソルバ


非線形方程式
常微分方程式
2
並行制約プログラミング


エージェント(制約ストアとやりとりを行う計算主体)と制
約ストア(制約の集合)で構成
エージェントには2種類ある


X = 10
tell : 制約ストアに制約を追加
ask : 制約ストアにおいて制約が満たされているかを調べる
X’ = 0
if x>0 then
x’’=-10
if x>0 then
x’’=-10
x’’=-10
エージェントの集合
tell
ask
x’ = 0, x = 10
tell
x’ = 0, x = 10
x’ = 0, x =10,
x’’ = -10
制約ストア
3
Hybrid ccとは?
Hybrid cc
= 並行制約プログラミング
+ defaults (否定情報を扱う機能 : else)
+ continuous combinator
(連続的な変化を表す構文 : hence A)
4
Hybrid ccの主な構文
c
if d then A
if d else A
A, B
new V in A
forall C(X) do A
hence A
X(T1, … , Tk)
cを制約ストアに追加
dが成り立つときAを適用
dが成り立たないときAを適用
A, Bが並行
VはA内のローカル変数
クラスCの全てのインスタンス
についてAを適用
以後常にAを実行
T1, … Tkを引数としてXを実行
5
Hybrid ccにおける制約

以下のものからなる





Arithmetic constraints
String and atomic constraints
Closure constraints
Class constraints
Ask constraints
6
Arithmetic constraints

以下の2つのうちいずれかの形からなる


t1 = t2
t1 < t2 (t1, t2は項)
※項(terms) は以下のように定義される
var : 数値変数。小文字で始まる名前
t’ : tの導関数
prev(t) : tの左極限値
例: x’=5, prev(y)>0
7
String and atomic constraints

String constraints
X=“…”
例:Switch = “on”


Atomic constraints
X
例:ChangeX

X : 変数。大文字で始まる名前
8
Closure constraints


X = (V1, … , Vk)A の形で定義される
X(V1, … , Vk)の形で呼び出される
V1, … Vk : 引数
例:階乗を求めるプログラム
P = (n, m, Q){if n>0 then new m1 in {Q(n-1, m1, Q), m=m1*n},
if n=0 then m=1},
P(10, x, P)
x = 10!
9
Class constraints


C = (V1, … , Vk)[P1, … , Pk]Aで定義
C(I, V1, … , Vk)でオブジェクト生成
(定義の引数の個数 + 1) 個の引数が必要
I : インスタンス名。大文字で始まる
P1, … , Pk : A内の変数
10
Ask constraints

以下の3つのうちいずれかの形



t1 < t2 (値の比較)
d1 & d2 (論理積)
d1 | d2 (論理和)
11
Hybrid cc の計算モデル
1.
2.
3.
まずpoint phaseにおいて制約伝播を行う
制約の解がない場合は中断、解がある場合
はinterval phaseに移行
制約ストアの状態が変わったら再びpoint
phaseに移行
12
Statement




Γ : エージェントストア
σ : 制約ストア
next : 次のphaseで実行されるプログラムの集合
else : else文の集合
13
Operational semantics

主なものを以下に示す
14
各phaseでのアルゴリズム
point phase, interval phase共に同じ
①
に対してリダクションを行う
② σが矛盾 ⇒ return 0
③ elseが空 ⇒ return 1
④ elseから1つのelse文(if c else A)をとってくる。
⇒ ③へ
⑤ Γ→(Γ, A)としてインタプリタを実行。
結果が1 かつ
⇒ return 1
否定情報の処理
⑥ バックトラックによって⑤を実行する前の状態まで戻り、
Γのままでインタプリタを実行。
結果が1かつ
⇒ return 1
上記以外の場合 ⇒ return 0

15
Hybrid ccプログラムの実行
状態
におけるプログラムAの実行
① Γ= A, σ・next・elseは空にして実行
結果が0なら中断 (point phase)
② Γ = next, σ・next・elseは再び空にして実行
結果が0なら中断 (interval phase)
※このphaseで用いたtell・ask制約は全て記憶
③ ②においてtellされた算術制約を用いて積分を行う
状態が変わったら(ask制約のうちひとつでもfalseでなくなったら)
①へ戻る
16
The constraint solver


非線形方程式
常微分方程式
17
Nonlinear equations

非線形制約
(
)の解法は以下
の4つの方法で実装されている




indexcal法
interval splitting
Newton-Raphson法
Simplex法
18
indexcal法


を
x の範囲を
の形に直す
にする
x + y = 0, x ∈ [0, 3], y ∈ [-1, -2]
x = -y, x ∈ [1, 2]
⇒範囲を求めるのが速い
19
interval splitting

を満たす最小のa1が
求まるまでxの範囲を狭めながら再帰的に
計算(b1についても同様)
?
a1は左優先(b1は右優先)
Y
N
時間かか
る?
x^2 = 1, x ∈ [-∞, ∞]
a1 ∈ [-∞, 0]
a1 ∈ [-100, 0]
…
a1 ∈ [-1, -1]
⇒大まかな範囲を求めるのに向いている
20
Newton-Raphson法


,
,
(=Iの範囲にただ一
つの解を持つ) を前提とする
となるまで
を繰り返す
(
)
⇒ある程度狭い範囲から正確な解を求めるのに
向いている
21
Simplex法


制約の集合 C = {C1, … , を、線形制約
の集合 L = {l1=0, … , lk に置き換える
(例:非線形項xy→変数zに置き換える )
を
に置き換えて
の最小化問題を考える。=0になればLは
成立
22
Telling a point or interval
phase


point phaseにおいてx’が定義されている⇒xは
連続でかつその値
⇒xは直前のinterval phaseの極限値
interval phaseにおいてt’が定義されているとき
に制約t=0を追加
⇒t’=0も追加
⇒これらの冗長な制約によって伝播やentailment
checkingが改善される
23
Entailment checking

point phase
t=0 が含まれる
- ⇔σにおいてt ∈ [0, 0]と評価
(t < 0, t ≦ 0に付いても同様)
-

interval phase
直前のpoint phaseにおいてt=0が真 かつ σにおい
てt’<0
- ⇒σにおいてt < 0が成り立つ
(n階微分についても同様)
-
24
Ordinary differencial equations


導関数の積分には4次のルンゲ・クッタ法
を用いている
積分の初期値は直前のpoint phaseのスト
アによって与えられる
25
ルンゲ・クッタ法 in Hybrid cc

3つの変更点



値にintervalを使用(初期値与えなくてもよいと
いう利点があるが、値が発散する恐れがある)
積分の各時点で伝播を利用(あらゆる形の連
立方程式を解けるようにするため)
少なくとも一つの制約が初期状態から変化し
たら、すぐに積分を中断する(このように積分
器が止まる時点をbreakpointという)
26
標準的なルンゲ・クッタ法の問題点

ステップサイズによってはbreakpointを飛
び越えてしまうこともある


チェックすべき制約を記憶して、積分の各ス
テップで制約の状態が変わったかをチェック
飛び越えを見つけたらバックトラックし、積分
のステップサイズを小さくして実行してみる
27