Articulo de referencia

CLP(R)

CLP(R) es un lenguaje de programación declarativo . Significa programación lógica de restricciones (real), donde real se refiere a los números reales . Se puede considerar y gen...

CLP(R) es un lenguaje de programación declarativo . Significa programación lógica de restricciones (real), donde real se refiere a los números reales . Se puede considerar y generalmente se implementa como un superconjunto o paquete adicional para una implementación de Prolog .

Regla de ejemplo

Las ecuaciones lineales simultáneas :

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

se expresan en CLP(R) como:

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

y la respuesta de una implementación típica sería:

Z = 35,75
Y = 8,25
X = 15,5


Programa de ejemplo

CLP(R) permite la definición de predicados mediante definiciones recursivas. Por ejemplo, una relación hipotecaria puede definirse como la que relaciona el capital P, el número de períodos de tiempo del préstamo T, el pago de cada período R, la tasa de interés por período I y el saldo final adeudado al final del préstamo B.

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

La primera regla expresa que, para un préstamo de período 0, el saldo adeudado al final es simplemente el capital original. La segunda regla expresa que, para un préstamo de al menos un período de tiempo, podemos calcular el nuevo monto adeudado P1 multiplicando el capital por 1 más la tasa de interés y restando el pago. El resto del préstamo se considera como otra hipoteca por el nuevo capital y un período de tiempo menos.

¿Qué se puede hacer con él? Se pueden plantear muchas preguntas. Si pido prestados 1000$ a 10 años al 10% anual y devuelvo 150$ al año, ¿cuánto deberé al final?

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

El sistema responde con la respuesta

B  =  203,129 .

¿Cuánto puedo pedir prestado con un préstamo a 10 años al 10% pagando $150 cada año para no deber nada al final?

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

El sistema responde con la respuesta

P  =  921,685 .

¿Cuál es la relación entre el capital, el pago y el saldo de un préstamo a 10 años al 10% de interés?

?  -mg ( P ,  10 ,  R ,  10 / 100 ,  B ).

El sistema responde con la respuesta

P  =  0,3855 * B  +  6,1446  *  R .

Esto muestra la relación entre las variables, sin requerir que ninguna tome un valor particular.

Integración de Prolog

CLP(R) se integró por primera vez en un sistema Prolog en 1994, concretamente en SICStus Prolog . [1] Desde entonces, esta implementación se ha trasladado a muchos sistemas Prolog populares, incluidos Ciao , [2] SWI-Prolog [3] y XSB . [4]

Véase también

Referencias

  1. ^ Holzbaur, Christian (1995). "OEFAI clp(q,r) Manual Revisión 1.3.2". Informes técnicos en línea de la ÖFAI (95–09).
  2. ^ "Introducción: el sistema Ciao v1.22". ciao-lang.org . Consultado el 6 de noviembre de 2023 .
  3. ^ "Manual de SWI-Prolog". www.swi-prolog.org . Consultado el 6 de noviembre de 2023 .
  4. ^ Swift, Theresa (13 de mayo de 2022). "Paquetes de restricciones". El sistema XSB, versión 5.0, volumen 2: Interfaces y paquetes . pág. 71.
  • Cómo utilizar CLP(R) Archivado el 14 de septiembre de 2008 en Wayback Machine.
  • Manual de programación CLP(R) Archivado el 3 de noviembre de 2005 en Wayback Machine


Obtenido de "https://es.wikipedia.org/w/index.php?title=CLP(R)&oldid=1213780083"