CLP(R)

有理数と実数に対する制約論理プログラミング

CLP(R)は宣言型プログラミング言語です。これは「constraint logic programming (real)」の略で、実数は実数を指します。Prolog実装のスーパーセットまたはアドオンパッケージとして考えられ、一般的にはProlog実装の実装として実装されます。

ルールの例

同時線形方程式

{ 3 × + 4 y 2 z 8 × 5 y + z 10 2 × + 3 y z 20 {\displaystyle {\begin{cases}3x+4y-2z=8\\x-5y+z=10\\2x+3y-z=20\end{cases}}}

CLP(R)では次のように表されます。

3 * X  +  4 * Y  -  2 * Z  =  8 
X  -  5 * Y  +  Z  =  10、2 * 
X + 3 * Y - Z = 20      

典型的な実装の応答は次のようになります。

Z = 35.75
Y = 8.25
X = 15.5

はい

サンプルプログラム

CLP(R) では、再帰的な定義を用いて述語を定義することができます。例えば、住宅ローン関係は、元本 P、ローンの期間数 T、各期間の返済額 R、各期間の金利 I、そしてローン終了時の最終残高 B を関連付ける関係として定義できます。

mg ( P  T  R  I  B )  :-  T  =  0  B  =  P 
mg ( P  T  R  I  B )  :-  T  >=  1  P1  =  P * ( 1 + I )  -  R  mg ( P1  T  -  1  R  I  B ) 。

最初のルールは、期間がゼロのローンの場合、最終残高は当初の元本のみであることを示しています。2番目のルールは、少なくとも1期間のローンの場合、元本に1と金利を乗じ、そこから返済額を差し引くことで、新たな借入額P1を計算できることを示しています。ローンの残額は、新たな元本と期間が1つ短い別の住宅ローンとして扱われます。

これを使って何ができるでしょうか?色々な疑問が湧きます。例えば、1000ドルを10年間、年利10%で借りて、毎年150ドルを返済するとしたら、最終的にいくらの借金が残るでしょうか?

?-  mg ( 1000 ,  10 ,  150 ,  10 / 100 ,  B )。

システムは答えを返す

B  =  203.129 .

10 年間の 10% のローンで毎年 150 ドルを返済し、最終的に借金がなくなる場合、いくら借りられるでしょうか?

?-  mg ( P ,  10 ,  150 ,  10 / 100 ,  0 )。

システムは答えを返す

P  =  921.685 .

10% の利子で 10 年間のローンを組んだ場合、元金、返済額、残高の関係はどのようなものですか?

?-  mg ( P  10  R  10 / 100  B )。

システムは答えを返す

P  =  0.3855 * B  +  6.1446  *  R .

これは、特定の値を取る必要はなく、変数間の関係を示します。

Prolog統合

CLP(R)は1994年に初めてPrologシステム、すなわちSICStus Prologに統合されました。[1]この実装はその後、 Ciao[2]、 SWI-Prolog [3]XSB [4]など、多くの一般的なPrologシステムに移植されています

参照

参考文献

  1. ^ Holzbaur, Christian (1995). 「OEFAI clp(q,r) マニュアル改訂版 1.3.2」. ÖFAI技術レポートオンライン( 95–09 ). 2001年5月20日時点のオリジナルよりアーカイブ。
  2. ^ 「Ciaoシステムv1.22の紹介」ciao-lang.org . 2023年11月6日閲覧
  3. ^ 「SWI-Prologマニュアル」www.swi-prolog.org . 2023年11月6日閲覧
  4. ^ Swift, Theresa (2022年5月13日). 「制約パッケージ」. XSBシステム バージョン5.0 第2巻: インターフェースとパッケージ. p. 71.
  • CLP(R) の使い方 2008年9月14日 アーカイブ済み at the Wayback Machine
  • CLP(R) プログラミングマニュアル 2005年11月3日アーカイブ - Wayback Machine


Retrieved from "https://en.wikipedia.org/w/index.php?title=CLP(R)&oldid=1323896119"