オープンまたはインタラクティブな制約満足度


17

過去に、私はSATと定期的な制約充足をエンジンの中心的な主力製品として使用して調整モデルを実装しました。この作業を続けて、モデルをよりインタラクティブにしたいと思います。これを行う最善の方法は、制約ソルバーを開いてブラックボックスではないようにすることです。

したがって、制約に外部変数述語関数と呼ばれるものがある制約充足について、つまり制約言語になどの述語があり、それがソルバー外部のエージェントに相談し、がグラウンドの場合のみ満足します。これが役立つシナリオは、が制約ソルバーに組み込むことができない外部決定プロセスに対応する場合です。このような制約ソルバーは、オープン(制約が完全にわかっていないため)またはインタラクティブと呼ばれます。PバツバツP (制約の充足を進めるには相互作用が必要です)。

両方を知りたい:

  • この方向で行われた理論的研究
  • 制約解決プロセス中に外界との相互作用を可能にする制約ソルバーを実装するツールまたはライブラリ。

回答:


9

私は、オープンでインタラクティブな制約に関する以前の研究にまったく納得していません。

扱いやすさの問題を調査する試みは次のとおりです。

  • マーティンJ.グリーンおよびクリストファージェファーソン、伝播制約の構造的トラクタビリティ、CP2008。doi10.1007 / 978-3-540-85958-1_25

ただし、このホワイトペーパーでは、いくつかの主要な質問に回答していません。このホワイトペーパーのプロパゲーターによるアプローチは、既存の制約ソルバーの実装と密接に関連しています。

SMT(充足可能性モジュロ理論)の研究もあなたの質問に密接に関係していると思います。SMT理論は、多くの場合、ソフトウェアとハ​​ードウェアの検証に起因する問題に動機付けられていますが、AIフレーバーの理論が存在します。SMTをコアテクノロジーとして構築されたアプリケーションをさらに増やし、SMTからのアイデアを適用する制約により多くの作業を期待しています。


1
その論文は確かに面白そうです。私は、SMTソルバーが必要なことを行うとは考えていませんでした。それは確かに探索する道です。
デイブクラーク

私は最後のコメントに混乱しています。SMTソルバーは、特定の述語ではなく、ロジックおよび理論用です。人々は新しい理論とベンチマークに貢献することを歓迎します。MathSAT開発者がAIと計画の問題を研究したことは知っています。
ヴィジェイD

@Vijay D:あなたは正しい、この文は不当に偏っており、私はそれを修正します。SMT理論としてのINJECTIVEの効率的な実装は、BankovićとMarićによって2010年に公開されました(argo.matf.bg.ac.rs/publications/2010/alldiff-smt2010.pdf)。
アンドラスサラモン

7

あなたの質問を読んで、私はまた、充足可能性モジュロ理論があなたのニーズに密接に関連していると言うことに同意します。私は本「Decision Procedures-An Algorithmic Point of View」を読むことをお勧めします


Aaron R. BradleyとZohar Mannaの著書The Calculus of Computation:Decision Procedures with Application to Verificationへの関連性/価値は?そのコピーが徒歩圏内のどこにあるかを知っています。
デイブクラーク

@Dave:免責事項:SMTでの私の個人的な経験はまだ始まったばかりです;-)私はその本の目次を見たところです。それと私が示したものとの間に大きな交差点があるようです。後者では、ここで外部関数と呼ぶものはそこで解釈されない関数と呼ばれ、広範囲にカバーされます。TOC of Decision Procedures of Applications with Verificationへの未解釈の機能を見つけることができませんでした。しかし、それは非常に良い本のようであり、多分それは有用であることが判明するかもしれません。
ジョルジオカメラニ

@Dave:最近、私は意思決定手順-アルゴリズムの観点を読んでいます解釈されない関数に関する章にはまだ到達していませんが、間違っていない場合、解釈されない関数を含む式は、平等理論の式に変換されます。平等の理論は、検証への適用を伴う決定手順(第9章)で扱われています
ジョルジオカメラニ

1
アマゾンが呼んでいると思う。
デイブクラーク

@デイブ:OK、素晴らしい!;-)
ジョルジオカメラニ


4

インタラクティブという用語について少し混乱しています。他の人と話し合い、SMTソルバーが役立つかもしれないと付け加えます。Walter Bishopのコメントに追加するために、Decision Procedures(Kroening and Strichman)ブックのスライドを利用できます。実践的論理ハンドブックおよび自動推論のハンドブックでのジョン・ハリソンの徹底的な取り扱いもあなたの興味を引くかもしれません。サンプルコードはオンラインで入手できます。

Philipp RuemmerのPrincessは、未解釈の述語を使用した算術演算をサポートしています。Scalaで記述され、定量化の処理にEマッチングを使用し、内挿を提供します。


0

ツールについてはどうでしょうか。選択言語としてPrologを選択した場合、いくつかの実装アプローチを提案できます。

  • GNU PrologはCプログラミングライブラリです。PrologからC関数を呼び出し、CからPrologを呼び出すことができます。これにより、機能を拡張する多くの可能性が開かれます。Pro:Gnu Prologは、無料で入手できる最速のPrologコンパイラーの1つです。注:一部の人々は、いくつかの組み込みの述語の欠如に不満を述べています...実際、それらのほとんどは実装できます。Prolog互換性レイヤー@SOをチェックしてください
  • SWI-Prologには、ネットワーク通信、プロトコルバッファサポートなどを含む興味深いプログラミングライブラリがあり、非常に人気があります。
  • XSB Prologは、相互運用性の面で最も興味深いプロジェクトであると主張しています。

Prologはプログラミング言語であり、多くの種類のソルバーを実行するのに適しています(そして、ほとんどのソルバーには有限領域ソルバーがあります)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.