任意数の制約階層化 2007/10/31 上田研究室 M2 西村 光弘.

Slides:



Advertisements
Similar presentations
木探索によるCSPの解法 (Tree search algorithms for solving CSPs) 認知システム論 制約充足( 2 ) 制約をみたす組合せを探すエージェント バックトラック法 フォワードチェック 動的変数順序.
Advertisements

正規表現からのDFA直接構成.
JavaScript プログラミング入門 2006/11/10 神津.
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
4章 制御の流れ-3.
Shimatterシステムの 初期モデルの正規化
知的インタフェース 例示によるプログラミング 予測インタフェース 制約インタフェース.
ファジィ論理と ファジィ構造モデリング 北海道工業大学 情報デザイン学科 三田村 保.
班紹介 描画班一同.
言語処理系(4) 金子敬一.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
6/26 前回復習 for文、while文による繰り返し計算
アルゴリズムイントロダクション第5章( ) 確率論的解析
情報工学概論 (アルゴリズムとデータ構造)
人工知能特論2011 資料No.6 東京工科大学大学院 担当教員 亀田弘之.
条件式 (Conditional Expressions)
Hybrid ccにおけるアニメーションが破綻しないための処理系の改良
システム開発実験No.7        解 説       “論理式の簡略化方法”.
2007/1/11 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
CSP記述によるモデル設計と ツールによる検証
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
ハイブリッド並行制約プログラミング における制約の階層化
テキストボックス、チェックボックス×2、コマンドボタンを配置する。 コマンドボタンに機能を与える
大域的データフロー解析 流れグラフ 開始ブロック 基本ブロックをnodeとし、 基本ブロック間の制御関係をedgeとするグラフを、
第7回 条件による繰り返し.
第6章 連立方程式モデル ー 計量経済学 ー.
実例で学ぶプログラミング VBAを用いて簡単なゲームを作ろう 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
プログラム依存グラフを利用した 情報漏洩解析手法の提案と実現
動的依存グラフの3-gramを用いた 実行トレースの比較手法
関数の定義.
第10回関数 Ⅱ (ローカル変数とスコープ).
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
プログラミング入門 電卓を作ろう・パートIV!!.
第7回 条件による繰り返し.
論文紹介: Time Limited Model Checking
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
 型推論1(単相型) 2007.
情報基礎Ⅱ (第11回) 月曜4限 担当:北川 晃.
ファジィ制約充足問題への 連続領域の導入 Introducing continuous domains to
プログラムの制御構造 配列・繰り返し.
電機情報工学専門実験 6. 強化学習シミュレーション
プログラミング 4 探索と計算量.
アルゴリズム論 (第12回) 佐々木研(情報システム構築学講座) 講師 山田敬三
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
記号表の検索と登録 長谷川啓
パターンマイニング技術を 用いた実時間プログラムの コーディングパターン検出
プログラムの基本構造と 構造化チャート(PAD)
北海道情報大学 情報メディア学部 情報メディア学科 新井山ゼミ 金子拓磨
アルゴリズムとデータ構造 2011年7月8日課題の復習
コンパイラ 2011年10月20日
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
第6回レポート解説 条件1 条件2 条件3 月の入力 月、日、曜日の表示 日の入力 曜日の入力
情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
C#プログラミング実習 第2回.
情報処理Ⅱ 第7回 2004年11月16日(火).
プログラミング基礎演習 第4回.
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
Inline 展開のアルゴリズム 長谷川啓
PROGRAMMING IN HASKELL
情報数理Ⅱ 第10章 オートマトン 平成28年12月21日.
:: の扱い 長谷川啓.
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
情報処理Ⅱ 2005年11月25日(金).
プログラミング入門2 第5回 配列 変数宣言、初期化について
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
情報とコンピュータ 静岡大学工学部 安藤和敏
Presentation transcript:

任意数の制約階層化 2007/10/31 上田研究室 M2 西村 光弘

背景 強い制約(必ず満たされなければならない)のみで記述し、期待される挙動をするモデルを作るのは容易でない デバグのための有用な情報を得るのに 手間がかかる 情報はあるがあまり有用でない

書き換え規則に基づく制約階層の導入 書き換え 処理系 HCC 処理系 制約階層の 概念を含む ファイル 計算結果 HCC ファイル 書き換え (ユーザ記述)

書き換え規則 強い制約と弱い制約が両方存在 片方しか制約がない C1, if S(C1)≠φ then { Strong C1 if S(C1)∩S(C2)≠φ then S(H)=S(C1)∩S(C2) else S(H)=S(C1) } S(H)=S(C2) Strong C1 Weak C2 強い制約と弱い制約が両方存在 強い制約を残す 弱い制約を削除 片方しか制約がない その制約を適用

問題点 3階層以上に同様の概念を適用した ↓ 元のHCC処理系でエラーなく動くソースに書き換えるのは難しい 理由 制約の強弱を判定する部分の外部に判定する制約を置かない限り、判定が不可能だから つまり、HCCファイル上から消し去れない制約が2つ以上あるとこの書き換えは不可能

階層化の別アプローチ HCC処理系を動かす 階層化したHCC +サンプルをとる ファイルを読み込む 制約の強弱をはずす 初期値を最終値に設定 初期値はエラーの 起こる直前のフェーズ 最終値 階層化の別アプローチ HCC処理系を動かす +サンプルをとる 階層化したHCC ファイルを読み込む 制約の強弱をはずす 初期値を最終値に設定 制約を元の状態に戻す HCC処理系を動かす +サンプルをとる エラーを検出した フェーズで制約の 強弱を見に行き、 弱い制約を削除 NO エラーを検出 YES

例 x=10, always { weak x'=10, if(x>20) then medium x'=5, 30 20 10 x=10, always { weak x'=10, if(x>20) then medium x'=5, when(x=30) do{ do strong always x'=-5 watching(x=10) } 初期値 x’ -5 5 10

エラーではなくinfになるため、ポイントフェーズ 期待どおりに動かない例1 x=10, always { if(x<10) then medium x’=20, weak x'=10, if(x>20) then medium x'=5, when(x=30) do{ do strong always x'=-5 watching(x=5) } エラーではなくinfになるため、ポイントフェーズ にはいる点をエラーのみでは判断できない

期待どおりに動かない例2 ポイントフェーズで制約エラーになり、 変数の値が書き換わるモデル x=10, y=20, y'=0,x'=1, always{ cont(y), cont(x), weak y''=-9.8, weak x''=0, if(y=0) then{ if(prev(y')>-0.00001) then always y'=0 else storng y'=-0.8*prev (y') }, if(x=>20) then strong x'=-prev(x') ポイントフェーズで制約エラーになり、 変数の値が書き換わるモデル

縮小プログラム y=20, y'=0, always{ cont(y), weak y''=-9.8, if(y=0) then storng y'=-0.8*prev (y') } 初期値のprevは設定できない y=-2.664535e-15, prev(y')=-1.979899e+01, always{ cont(y), if(y=0) then storng y'=-0.8*prev (y') }

考察 エラーがでるまでHCCを走らせるだけでは制約の強弱が捉えきれない ポイントフェーズから値を引き継いで新たに始めることができない →フェーズごとに制約をチェックする ポイントフェーズから値を引き継いで新たに始めることができない →フェーズごとに区切って、異なるソースを動かすことが難しいので、キューもしくはストアから制約の強弱を判定して、計算されるまでに削除する必要がある

階層化の別アプローチ(その2) HCC処理系内部の変更 一度全ての制約をstoreにtellする エラーが起こると 衝突する制約を判定 制約の強弱を識別 弱いほうの制約から削除する(キューから?) storeを初期化する もう一度、制約をstoreにtellする エラーが起こらなくなるかor制約が1つになるまで繰り返す

Point phase処理(笹嶋論文参照) a1, a2, … at∈A  :エージェントの集合 ct :エージェントat で追加される制約 σ :Tell 操作で追加された制約の集合である制約ストア。 初期制約ストアをσ0 とする。 エージェントat によって制約ct が追加されたときの制約ストアをσt で表すと、σ0 とσt の差分の列< c0, c1,…ct > を制約トレースと呼ぶ。 S :この制約トレース内の制約と, それに対応したエージェントの列P の集合 point phaseでは、A が空になるまで処理が続けられる。 制約ストアσt に制約ct がTell される。ここで制約の矛盾が返されると制約エラーを返し処理を中断する。 size(σt) > size(σt-1) で先の制約ct が制約ストアに追加されたことを確認して制約トレースにPt が追加される。

Point phaseアルゴリズム S ← {}; t ← 0; while A do tell ct to σt; if Constraint Error then break; if size(σt) > size(σt-1) then { Pt← Pt∪<at, ct>; S ← S∪Pt; σt←σt-1; t ← t + 1; } end while エージェントの集合:a1, a2・・・at∈A 制約ストア: σt 制約: ct Pt = <at, ct> 集合S : P1, P2,・・・∈S

Queue有り S ← {}; t ← 0; end while while q do at ← dequeue(q); エージェントの集合:a1, a2・・・at∈A 制約ストア: σt 制約: ct Pt = <at, ct> 集合S : P1, P2,・・・∈S S ← {}; t ← 0; while a∈A do enqueue(q, a); end while while q do at ← dequeue(q); tell ct to σt; if Constraint Error then break; if size(σt) > size(σt-1) then Pt← Pt∪<at, ct>; S ← S∪Pt;σt←σt-1; t ← t + 1;

階層化別アプローチ2・アルゴリズム キュー: q エージェントの集合:a1, a2・・・at∈A 制約ストア: σt 制約: ct S ← {}; t ← 0; while all a∈A do enqueue(q, a); end while :here while q do at ← dequeue(q); tell ct to σt; if Constraint Error then{ for(i=1…t) σi ← {}; q = NULL; while A do enqueue(q, at); remove checkconst(aconfl,variable name) from qt; goto here;} if size(σt) > size(σt-1) then Pt← Pt∪<at, ct>; S ← S∪Pt;σt←σt-1; t ← t + 1; キュー: q エージェントの集合:a1, a2・・・at∈A 制約ストア: σt 制約: ct Pt = <at, ct> 集合S : P1, P2,・・・∈S 集合∑:σ1,σ2・・・σt∈∑

Checkconst関数 checkconst(aconfl,variable name){ 極小部分集合を求めるアルゴリズム 最後にtellして衝突した 制約をもつエージェント checkconst(aconfl,variable name){ 極小部分集合を求めるアルゴリズム →aconflのcconflと衝突する制約集合C 各制約の強さを識別番号として保持しておくとして、最弱のものをとってreturn 1つしかなければ→エラー }

今後の予定 極小部分集合を求めるアルゴリズム 制約の強さの型を決める Checkconst関数を実装

参考文献 細部博史:ユーザーインターフェースにおける制約解消法の研究動向http://research.nii.ac.jp/~hosobe/cs00tut/index.html 笹嶋唯: 「ハイブリッド並行制約プログラミングにおける制約エラー説明機能の設計と実装」2006 Bjorn Carlson and Vineet Gupta:The hcc Programmer's Manual,1999