TRANSPARENCIAS TEMA 1


Dirección del proceso de resolución de una meta

 

Construcción de Bases de Conocimientos en PROLOG

Consultas sobre la Base de Conocimientos

predicado1(arg1, ..., argN).

predicado2(arg1, ..., argN).

...

predicadoM(arg1, ..., argN).

Objetivo:

predicado2(arg1, ..., argN).

 

pred1(arg1).

pred2(arg2).

pred3(arg1, arg2, arg3):-

pred1(arg1),

Aux is "operación sobre arg1",

pred2(aux),

arg3 is "operación entre arg1 y aux".

Objetivo:

"pred3(arg1, arg2, arg3)."

Cuando en la base de conocimientos hay hechos y reglas de inferencia recursivas

mcd(A,B,R):-A==B, R is A.

mcd(A,B,R):-A>B, Aux is A-B, mcd(Aux,B,R).

mcd(A,B,R):-A<B, Aux is B-A, mcd(A,Aux,R).

mcd(A,Aux,R):-mcd(B,A,R).

Objetivo:

"mcd(7, 5, R)."

EJEMPLO:

Construcción de una base de conocimientos para resolver objetivos o preguntas relacionadas con el código de la circulación de vehículos.

La aplicación va a permitir especificar un tipo de vehículo y las características de la vía por la que circula y nos informará sobre la velocidad máxima genérica que dicho vehículo puede alcanzar.

Características de la vía

Nombre de la vía

Vía interurbana señalizada con la señal S-1

Autopista

Vía interurbana señalizada con la señal S-1a

Autovía

Vía interurbana señalizada con la señal S-1b

Vía Rápida

Vía interurbana con dos o más carriles para cada sentido ó carril para facilitar el adelantamiento ó arcén pavimentado de, al menos, 1,5 metros de longitud

Carretera Convencional Buena

Vía interurbana que no cumple los requisitos de una carretera convencional buena.

Carretera Convencional Mala

Vía urbana

Vía Urbana

Vía interurbana que discurre por suelo urbano

Travesía

 

 

 

Autopistas y Autovías

Vías Rápidas y Carreteras Convencionales Buenas

Carreteras Convencionales Malas

Vías Urbanas y Travesías

Turismos y Motocicletas

120

100

90

50

Autobuses y Vehículos Mixtos

100

90

80

50

Camiones y Vehículos Articulados

90

80

70

50

Automóviles con Remolque

80

80

70

50

Noveles

80

80

80

50

Experto de Autoescuela

predicates

maximo(string, string, integer)

via(integer, integer, string, string)

velocidad(string, integer, integer, string, integer)

nondeterm repeat

nondeterm pedirdatos

clauses

/* Definición de las velocidades genéricas de vehículos según la vía */

maximo("novel", "autopista", 80):-!.

maximo("novel", "autovia", 80):-!.

maximo("novel", "via_rapida", 80):-!.

maximo("novel", "ccb", 80):-!.

maximo("novel", "ccm", 80):-!.

maximo("turismo", "autopista", 120):-!.

maximo("motocicleta", "autopista", 120):-!.

maximo("vehiculomixto", "autopista", 100):-!.

maximo("autobus", "autopista", 100):-!.

maximo("camion", "autopista", 90):-!.

maximo("vehiculoarticulado", "autopista", 90):-!.

maximo("conjuntovehiculos", "autopista", 80):-!.

maximo(Veh, "autovia", R):-maximo(Veh, "autopista", R), !.

maximo("turismo", "ccb", 100):-!.

maximo("motocicleta", "ccb", 100):-!.

maximo("vehiculomixto", "ccb", 90):-!.

maximo("autobus", "ccb", 90):-!.

maximo("camion", "ccb", 80):-!.

maximo("vehiculoarticulado", "ccb", 80):-!.

maximo("conjuntovehiculos", "ccb", 80):-!.

maximo(Veh, "via_rapida", R):-maximo(Veh, "ccb", R),!.

maximo(Veh, "ccm", R):-maximo(Veh, "ccb", Auxi), R=Auxi-10, !.

maximo(Veh, "via_urbana", _):-

Veh<>"turismo",

Veh<>"motocicleta",

Veh<>"vehiculomixto",

Veh<>"autobus",

Veh<>"camion",

Veh<>"vehiculoarticulado",

Veh<>"conjuntovehiculos",

Veh<>"novel",

fail, !.

maximo(_, "via_urbana", 50):-!.

maximo(Veh, "travesia", R):-maximo(Veh, "via_urbana", R).

/* Definición de vía en función de sus características */

via(_, _, "autopista", "autopista"):-!.

via(_, _, Senal, Tipo):-Senal="autovia", Tipo="autovia", !.

via(_, _, Senal, Tipo):-Senal="viarapida", Tipo="via_rapida", !.

via(_, _, Senal, Tipo):-Senal="de_via_urbana", Tipo="via_urbana", !.

via(_, _, Senal, Tipo):-Senal="de_travesia", Tipo="travesia", !.

via(Arcen, _, "nohay", "ccb"):-Arcen >=150, !.

via(_, Carriles, "nohay", "ccb"):-Carriles>=2, !.

via(_, -1, "nohay", "ccb"):-!.

via(_, _, "nohay", "ccm").

/* Predicado de cálculo de velocidad en función del vehículo y las características

de la vía */

velocidad(Vehiculo, A, C, S , V):-via(A, C, S, Carretera),

maximo(Vehiculo, Carretera, V).

repeat.

repeat:-repeat.

pedirdatos:-repeat,

write("PETICIÓN DE DATOS (nohay=no hay dato concreto)"),

nl,

nl,

nl,

write("Especifica el tipo de vehículo, (turismo, motocicleta,

vehiculomixto, autobus, camion)"), nl,

write("(vehiculoarticulado, conjuntovehiculos, novel): "),

readln(V),

nl,

write("Especifica el tamaño del arcen: "), readint(A),

nl,

write("Especifica el número de carriles

(-1 para adelantamiento): "), readint(C),

nl,

write("Especifica señal (autopista, autovia, via_rapida): "),

readln(S),

velocidad(V, A, C, S , Velocidad), nl,

write("La velocidad máxima es: "), write(Velocidad), nl,

write("Continuar=Cualquier tecla, Salir=1"), nl,

readint(Tecla), nl, nl, nl,

Tecla=1.

goal

pedirdatos.

Definición y funcionamiento de la Máquina PROLOG

Unificación

Backtracking

Bibliografía

[Adarraga, 1994] Adarraga, Pablo. Zaccagnini José Luis. "Psicología e Inteligencia Artificial". Editorial Trotta. 1994.

[Giannesini, 1986] PROLOG. Addison-Wesley Iberoamericana, 1986.

[Russell, 1996] Russell, Stuart. Norvig, Peter. "Inteligencia Artificial. Un enfoque moderno". Editorial Prentice Hall. 1996.