制約処理パッケージにより、資源割り当ての課題が、より容易に処理できるようになりました。...
移動
次へ 前へ
上へ 最上
参考
制約処理パッケージ仕様
応用分野
例題プログラム
イフコンピュータ > IF/Prolog > 制約処理パッケージ > 制約処理パッケージ仕様

制約処理パッケージ仕様

MINERVA superseeded IF/Prolog. Please see http://www.ifcomputer.co.jp/MINERVA for details.

We discontinued to sell IF/Prolog Dec 31. 2003. For current customers, we continue to provide professional support for IF/Prolog until Dec 31, 2008.

制約処理パッケージにより、資源割り当ての課題が、より容易に処理できるようになりました。

IF/Prologを使用して制約問題解決

IF/PrologV5.0制約処理パッケージ(オプション)は、IF/Prologに最新の「制約に基づ いた問題解決」パラダイムを導入しました。これにより、従来「複雑す ぎて扱えない」とされてきた拡張的な領域の問題も、IF/Prologを使用 して解決することができるようになりました。 例えば、航空・鉄道での運航計画、生産計画、乗務員などの人員配置 計画を始めとするほぼすべての資源割り当ての課題が、効果的な宣言的 方法で処理できるようになりました。

制約処理パッケージでは、異なる制約クラスを、異なるPrologの モジュールに分割しています。モジュール化はIF/Prologの非常に 重要な特長であり、産業分野でのアプリケーションでも使用され実証 されてきました。既存のアプリケーションのコードとの互換性もあり ます。

現実のアプリケーションでの使用

現在、様々な分野で、制約処理パッケージを使用したアプリケーシ ョンの開発が進んでいます。また、すでに以下に挙げるような本格 的なアプリケーション開発中に制約処理技術の改良も行なわれ、 この技術自体もすでに実証されています。

  • 鉄道信号および交通制御: リアルタイムデータに基づいて、鉄道時刻表を再スケジューリング するために開発された、プロトタイプシステム。
  • 設計制御ソフトウェア: シンボリックモデルチェック方式を利用して、幅広い分野の複雑な 技術システムを検証する。システムの記述、特性の仕様を入力する と、自動的にシステムの特性をチェックする。
  • 回路検証環境 新規に開発された回路が論理的に正確なものかどうかを検証する システム。 デジタル回路の出力と入力を論理関数として計算し、それをシンボリ ックに回路仕様の対応する関数と比較している。ASICの検証に使用 されている。

機能および利点

新しい計算領域

制約処理パッケージは、Prologが提供する計算領域に加えて、さら に5つの計算領域を備えています。

・長精度整数と有理数: 任意の長さを持つ整数と有理数の正確な計算。 ・コルーチン: 変数の具体化に伴って活性化されるデータ駆動型計算。 ・数値的制約: 累積、論理和、最小化、最大化などの高レベル述語を 含む有理数の線形方程式、不等式を解くシステム。 ・有限領域: 変数に結びつけられた値の領域を能動的に狭める。この 技術により、有効な値の可能な組合せのみを考慮し、探索空間を非常 に小さくすることができる。 ・論理制約: ブール式として形式化される関係を使用し、効率の良い 決定木の操作を行なう。

統合された開発環境

IF/Prologの開発環境は、制約ベースのアプリケーションを簡単に デバッグやトレースできるように拡張されました。 デバッガと トレーサは、制約の一時停止や活性化を分かりやすく示すために、 従来の4ポートから10ポートのセマンティックモデルになりました。 この環境は文字ベースおよびMotifの両方のバージョンで使用する ことができます。これにより、ランタイムの操作を容易に制御でき るようになりました。さらに、オンラインでのハイパーテキスト マニュアルも用意されており、この開発環境を使用することにより プログラマの生産性を飛躍的に改善することができます。

制約処理パッケージは、IF/Prologの他のデータベースインタフェ ース、プログラミング言語インタフェース、文字セット、グラフィ カルウィンドウシステムとの互換性を持っています。このパッケー ジは、IF/Prologがサポートしているすべてのハードウェアプラット フォーム上で使うことができるオプションとして提供されています。

プログラマの生産性の向上

制約処理パッケージの第1の利点として、プログラマの生産性の向上 が挙げられます。制約処理パッケージにより、プログラムをより 宣言的に書くことができるようになりました。これにより、複雑な 問題をより単純に解決することが可能です。さらに、上に挙げたよ うな使いやすい開発環境ができたことで、より効率的にプログラミ ングができるようになりました。

プログラム実行効率の向上

第2に、プログラム実行に必要な時間が短縮されました。 制約処理のために必要であるとして追加された内部データエリアは すべて、ユーザアプリケーションから透明な形で、自動的にリサイ ズされ、ガーベッジコレクションが行なわれているために、プログ ラム実行に必要な時間が短縮されました。制約処理パッケージは、 システムカーネルの中心的な部分となり、最新の制約技術の実装形 となっています。

制約処理パッケージにより、問題解決の速度がいかに向上したかを 示すのが次の表です。Sun SPARCstation IPX上のIF/Prolog V4.1と IF/Prolog V5.0とで書かれたサンプルプログラムの実行速度を比較 しています。 IF/Prolog V5.0を使った場合については、制約処理 パッケージを使った場合と使わない場合の解決を比較しています。 制約処理パッケージを利用した場合の処理速度がいかに速いかがわ かります。

(1) (2) (3)
Eight-Queens 30.13 18.01 4.19
Farmer 4.50 3.42 0.98
SEND MORE MONEY 65.50 53.47 0.85

(1) IF/Prolog V4.1での測定 (2) IF/Prolog V5.0での測定 (3) IF/PrologV5.0 および制約処理パッケージでの測定

CPU時間の単位は秒。100回測定の結果

標準

制約処理パッケージは、ANSI標準互換Cにより書かれています。こ の中にある述語は、ISO Prolog標準に定義されたものと同じスタイ ルであり、この標準と同じように厳しく定義されています。

開発の経緯

この新しい制約処理パッケージは学術研究用のシステムCHIPを土台 にしています。CHIPはECRC(European Computer Research Centre)が 開発したシステムです。 シーメンス(IF/Prolog5.0の開発元)は、 CHIPで試験的に開発された制約処理技術に、新しい技術を加え、 SNI Prolog 3.1を開発しました。 この度、これらの技術がより 改良されモジュール化されIF/Prolog5.0に統合され、製品化され ました。

各制約クラスの特長およびプログラミング例

制約処理パッケージではコルーチン、数値的制約、有限領域、論理 制約の4つの制約クラスを提供しています。このすべてのクラスに 対して、Prologモジュールは様々な内蔵述語を提供しています。 ここで、制約クラスに内蔵されたすべての述語を説明することはでき ませんが、下の例ではその一部を紹介しています。

高精度計算を可能にする長精度整数及び有理数

IF/Prologの中で数字として解釈実行される範囲が拡張され、長精度 整数や有理数も扱うようになりました。長精度整数では小数点以上 約三十万桁までの数字の処理が可能です。(ほとんど任意の整数を 扱うことができます。 有理数は、2つの長精度整数の約分されない部分として表現され、 これにより高精度な計算式を処理することができます。

宣言型プログラミングを促進するコルーチン

コルーチンは、データ制御下のゴールの数値を与え始める基礎的な メカニズムであり、これを用いて、より宣言的にPrologプログラム を書くことができます。内蔵述語を使用して、数個の変数に値が 与えられるまでゴールの数値を与えることを遅延させることも 可能です。

しかし、一般的な制約メカニズムとしては、コルーチンのみでは十分 ではありません。なぜならば、従来型のPrologと同様に、コルーチンは 一貫性条件を受身的にテストしているからです。より効率的な方法は、 予め変数の領域を限定し、一貫性条件を能動的に処理することです。 いずれにせよ、コルーチンはより複雑な制約を定義するのに役立ちます。

以下の例では、コールーチンを使用することにより、いかにうまく 宣言型プログラミングができるかを示しています。この例の場合、 Prologは左から右へと手続きを踏んでサブゴールを証明しますので、 宣言的観点からは正しくありません。

[user] ?- A \= a, A = b.
no
[user] ?- A = b, A \= a.
          A = b
yes

論理的な観点から見ると、サブゴールの順序はどちらが先でもかま いません。このような場合、制約処理パッケージのコルーチンクラスの 内蔵述語であるfreeze/2を使用して、"A"の変数に値が与えられるまで、 最初のゴールである "A \ = a" の証明を遅らせることができます。

[user] ?- freeze(A, A \= a), A = b.
A       = b
yes

数値最適化のための数値的制約

数値的制約を使用して、解答が無限にあり「値が連続している」 最適化問題を解決することができます。数値的制約は、等式、 不等式の組合せを増分アルゴリズムによって解きます。 (別ページのプログラミング例を御覧下さい。)

不連続の問題解決をする有限領域

有限領域という制約クラスは、不連続の問題を解決するのに有効で す。「不連続」とは、ここで、有限領域の制約によって表現された 条件を満足する数値が有限であるという意味です。この場合、従来の Prologでは「値を生成してみてテストする」というプログラミン グのパラダイムが使われていましたが、可能な値のみを生成する というパラダイムになりました。

有限領域の変数は、例えば、間隔、列挙、数列などで制限された整数 です。変数は、限られた領域で値をとることができます。有限領域用 の制約のクラスの中では、変数間を、数学的な制約、記号的制約で 特定することができます。さらに、累積制約も提供されます。 (別ページのプログラミング例を御覧下さい。)

スケジューリングのための論理制約

論理制約は、量的な測定を必要としないスケジューリングや決定 支援の分野でのアプリケーションに非常に適した手法です。 バイナリ領域で真の値を演算し、条件値を効果的に決定するために 用いられます。

実行中に、真の値が、多くの「論理」内蔵述語に伝えられます。 論理単一化アルゴリズムが、決定を容易に組合せることができる ように真の領域を越えて動作します。 (別ページのプログラミング例を御覧下さい。)

続く..
IF/Prolog by Siemens
言語
English
Japanese
German
サーバー
USA
Japan
サイトマップ
索引
目次
全体目次
全体索引
印刷向き
imode
PDA
探索
document: http://www.ifcomputer.co.jp/IFProlog/Constraints/Specifications/home_jp.html
published 2008/5/12 update 2001/5/28 (c) 1996-2006 IF Computer Japan
IF Computer 〒113-0022 Tel 03-5814-3352 ifcj@ifcomputer.co.jp
Customer Support 東京都文京区千駄木5-28-2   http://www.ifcomputer.co.jp
冒頭へ managed with ubiCMS