Prolog "rendimiento" inteligencia artificial

Solo disponible en BuenasTareas
  • Páginas : 26 (6415 palabras )
  • Descarga(s) : 0
  • Publicado : 25 de noviembre de 2010
Leer documento completo
Vista previa del texto
8. Rendimiento

A medida que el tamaño de una base de conocimiento crece, el rendimiento se vuelve más problemática. Los motores de inferencia que hemos visto hasta ahora utilizar un modelo simple correspondiente algoritmo para encontrar las reglas para disparar. Varios esquemas de indexación se puede utilizar para acelerar el proceso de coincidencia de patrones.

El problema de indexación esdiferente para adelante y los sistemas de encadenamiento hacia atrás. los sistemas de encadenamiento hacia atrás necesidad de acceder por el patrón de gol en el lado derecho de la regla. Encadenamiento hacia adelante sistemas deben ser indexados por los patrones más complejos en el lado izquierdo. cuestiones encadenamiento hacia atrás se discuten brevemente en este capítulo, seguido por más deprofundidad en el tratamiento de un algoritmo Rete partido simplificado para la Foops encadenamiento hacia adelante del sistema.

8.1 Encadenamiento hacia atrás los índices

Para obtener un rendimiento en los sistemas de encadenamiento hacia atrás, las reglas son indexados por los patrones de meta en el lado derecho. En particular, si el objetivo es encontrar un valor para un atributo dado,entonces las reglas deben ser indexados por el conjunto de atributos en el lado derecho de la regla. Esto ocurre de forma automática para los puros reglas Prolog en el programa de identificación de aves ya que los atributos son los nombres de predicado Prolog que generalmente se accede a través de algoritmos hash. Los índices, si se desea, debe ser incorporado en el motor de encadenamiento hacia atrásutilizados en Clam. Algunos Prólogos proporcionar la indexación automática en el primer argumento de un predicado. Esta característica podría ser utilizado para proporcionar el rendimiento requerido.

Teniendo en cuenta la indexación por el primer argumento, las normas en Clam estarían representados:

regla (atributo, Val, CF, Nombre, LHS).

De esta manera, la búsqueda de normas queestablezcan los valores para un atributo dado rápidamente encontrar las reglas apropiadas.

Sin esto, cada regla puede ser representada con un funtor basado en el patrón de meta y se accede mediante el (=..) univ predicado en lugar de la concordancia con el modelo actualmente utilizado en la almeja. Los predicados que en un principio, lea las normas puede almacenar utilizando este sistema. Por ejemplo,el formato interno de las normas de almeja sería:

Atributo (Val, CF, Nombre, LHS).

En particular, algunas reglas del sistema de auto diagnóstico sería:

problema (la batería, 100, "artículo 1",
[Av (turn_over, no), av (battery_bad, sí)]).

problema (inundadas, 80, "el artículo 4,
[Av (turn_over, sí), av (smell_gas, sí)]).

battery_bad (sí, 50, "el artículo 3 ', [av (radio_weak,sí)]).

Cuando la inferencia es buscando las normas para establecer los valores para un atributo - patrón de valor, av (A, V), el siguiente código se utiliza:

Artículo =.. [A, V, FC, ID, LHS],

llame al (artículo),

...

Esta estructura permitiría almeja para tomar ventaja de los algoritmos hash integrado en Prolog para acceder a los predicados.

8.2 Algoritmo Rete partido

OPS5 yalgunas conchas de expertos de alto nivel del sistema utiliza el algoritmo Rete partido para optimizar el rendimiento. Es un sistema de indexación que permite ajustar rápida de los cambios en la memoria de trabajo con las reglas. información partido anterior se guarda en cada ciclo, por lo que el sistema evita los cálculos redundantes. Vamos a aplicar una versión simplificada del algoritmo Rete paraFoops.

El algoritmo Rete se diseña para emparejar la mano izquierda contra el lado de los patrones de la regla de trabajo los elementos de almacenamiento. Echemos un vistazo a dos reglas similares del sistema de sala de expertos de colocación.

regla # f3
[Sofá - C con [la posición de la pared / W],
pared - W con [opuesto-OW],
TV - TV con [la posición sin igual, place_on piso]]
==>...
tracking img