Está en la página 1de 7

PRÁCTICA 3

Arquitecturas cognitivas
Objetivos de la práctica

• Conocer los aspectos generales de la arquitectura Soar


• Introducir elementos de visualización de la arquitectura Soar
• Estudiar los elementos básicos de programación de Soar
• Evaluar distintos ejemplos de sistemas cognitivos en Soar

Introducción
Una arquitectura cognitiva es el conjunto de componentes esenciales de un sistema que permite
el análisis exhaustivo, en múltiples niveles y en múltiples dominios de sus cogniciones y sus
conductas. En otras palabras, una arquitectura cognitiva permite resolver tareas de una manera
similar al comportamiento de un ser humano.
En esta práctica se introduce una de las arquitecturas cognitivas más utilizadas: la arquitectura
Soar. Soar es una arquitectura híbrida que se basa en el principio de que todo comportamiento
con un objetivo puede generarse como una aplicación de operadores a un estado. En el Tema 1.2
se introducen los conceptos básicos de esta arquitectura. Esta práctica permite aproximarse a la
programación de Soar a través de un tutorial inicial que tratará los aspectos básicos necesarios
para la comprensión y generación de códigos en Soar.

Instalando Soar
En primer lugar, es necesario instalar los componentes necesarios para la ejecución del software
de Soar. En la siguiente página web se puede descargar la última versión del sistema:
https://soar.eecs.umich.edu/articles/downloads/soar-suite/228-soar-tutorial-9-6-0
En la sección Downloads, se puede descargar el paquete multiplataforma (para Windows, Linux y
Mac) y el tutorial de la última versión. Una vez descargado se descomprime la carpeta en cualquier
ubicación tratando de que la ruta no sea demasiado larga, puesto que puede dar errores de
ejecución.
Nota importante: para que Soar funcione correctamente es necesario disponer de la última versión de Java
Runtime Environment que puede descargarse del siguiente link:

http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

Si todo se ha hecho de forma correcta se dispondrá de una carpeta que incluye varios ejecutables
*.bat, varios agentes y ejemplos ya programados y una serie de tutoriales en pdf.

Robótica de Servicios Práctica 3 – Arquitecturas Cognitivas


Grado de Ingeniería Robótica Página 1
Visualizador de Soar
Los programas Soar se pueden visualizar o bien por ventana de comandos (ejecutar SoarCLI.bat) o
bien mediante una interfaz gráfica basada en Java (ejecutar SoarJavaDebugger). En esta práctica
se va a utilizar la versión gráfica de visualización. A continuación, se muestra el aspecto de la
pantalla inicial tras su ejecución:

Este programa permite ejecutar agentes Soar de forma sencilla. Para ello, basta con seleccionar
File-->Load Source File y cargar un archivo de tipo *.soar.
Ejecución de una regla
Vamos a cargar un ejemplo sencillo llamado “hello-world-rule”. Este programa ejecuta una única
regla:
hello-world:
If I exist, then write “Hello World” and halt.

En otras palabras, si yo existo, entonces escribe “Hello World”.


Una vez cargado, el agente se puede ejecutar pulsando el botón Run o escribiendo Run en el cuadro
de texto. El resultado de ejecución se muestra a continuación:

Robótica de Servicios Práctica 3 – Arquitecturas Cognitivas


Grado de Ingeniería Robótica Página 2
Como se puede observar, se ha ejecutado una única regla. Dada que la condición es “si yo existo”,
es decir, si existe un estado (estado inicial), la condición siempre se cumple y esta regla siempre se
aplica y el agente entra en modo parada. Vamos a analizar cuál es el código de esta regla:

Como se puede observar, cualquier regla tiene una misma estructura que corresponde a la
sentencia if-->then de cualquier arquitectura cognitiva. De forma más general, la estructura de una
regla es la siguiente:

Dentro del visualizador de Soar se pueden realizar diversas opciones de ejecución y visualización.
A continuación, se muestran algunas opciones importante disponibles en el menú:
• Run: crea un agente
• Step: ejecuta un paso del proceso
• Stop: para la ejecución si ésta se encuentra en proceso
• Clear: limpia la pantalla
• Watch: establece distintos niveles de visualización
• Init-soar: reinicia Soar
• Excise-all: elimina todas las reglas de la memoria y reinicia Soar

Nota importante: cada vez que se desee reiniciar completamente un agente se debe pulsar Init-Soar y
después cargar de nuevo el *.soar

Robótica de Servicios Práctica 3 – Arquitecturas Cognitivas


Grado de Ingeniería Robótica Página 3
Ejecución de un operador
En la sección anterior hemos visto un ejemplo sencillo en el que no es necesario la utilización de
un operador. Los agentes Soar, no obstante, hacen uso de operadores cuando se dispone de
distintas reglas a aplicar ante determinado estado. El proceso es siempre el mismo: primero se
propone un operador y después se aplica. A continuación, se muestra un ejemplo de sintaxis que
define la anterior regla dentro de un operador:

Como se puede observar, este operador es muy sencillo y siempre se propone al inicio de la
ejecución. Durante la práctica, se estudiarán operadores más complejos.

Editor de Soar
La sección anterior muestra como ejecutar programas o agentes Soar y visualizar su
comportamiento. Para poder generar nuestros propios programas Soar es necesario utilizar un
editor. Aunque muchos editores de texto son compatibles con Soar, en esta sección se presenta el
editor VisualSoar también disponible en la librería Soar descargada.

Robótica de Servicios Práctica 3 – Arquitecturas Cognitivas


Grado de Ingeniería Robótica Página 4
VisualSoar es un editor especialmente adaptado para programar agentes Soar que dispone de una
estructura específica llamada Datamap para gestionar la memoria de trabajo. Además,
proporciona plantillas base para implementar operadores y reglas.
Para ejecutar VisualSoar basta con pinchar en el ejecutable correspondiente y se mostrará una
ventana similar a la de la figura anterior. En la primera actividad propuesta se describirá en más
detalle el funcionamiento de este software.

Robótica de Servicios Práctica 3 – Arquitecturas Cognitivas


Grado de Ingeniería Robótica Página 5
Actividades
Actividad 1 – The Water-Jug Problem
En esta primera actividad se va a realizar un ejemplo en Soar que se programará paso a paso
siguiendo las indicaciones del primer tutorial (desde la página 21) disponible en la instalación de
Soar llamado Soar Tutorial Part 1 – Simple Agents. Se recomienda seguir paso a paso las
instrucciones del tutorial haciendo especial hincapié en las partes marcadas en verde (dónde se
describen las acciones a realizar por el alumno).
La actividad a realizar es el famoso problema de las jarras de agua (water-jug problem):

El problema de las jarras de agua


Se proporcionan dos jarras vacías. Una puede contener 5 litros de agua y la otra puede contener 3
litros de agua. Se dispone de agua ilimitada para llenar las jarras. También se puede llenar una jarra
vertiendo el agua de la otra en ella. No hay marcas en las jarras para niveles intermedios. El objetivo
es llenar la jarra de 3 litros con un único litro de agua.
En este caso, el espacio del problema está determinado por la presencia de dos objetos (jarras) y
los posibles valores de llenado (0-5 litros para la jarra 1 y 0-3 litros para la jarra 2). Se pueden definir
tres operadores básicos: llenar la jarra, vaciar la jarra o traspasar el contenido de una jarra a otra.
Teniendo en cuenta el objetivo final y los operadores disponibles el espacio del problema con todos
sus posibles cambios de estado tiene el siguiente aspecto:

Robótica de Servicios Práctica 3 – Arquitecturas Cognitivas


Grado de Ingeniería Robótica Página 6
Como se puede observar se establece una notación que indica básicamente la forma de
representar un estado y que comprende:

• La cantidad máxima de agua (primer número) que cada jarra puede contener (^volume).
• La cantidad de agua (segundo número) que cada jarra contiene (^contents).
A su vez podemos definir una estructura más:

• La cantidad de espacio disponible en cada jarra (^empty).


Para definir un objeto jarra podemos usar otra estructura que llamaremos ^jug.
En la figura anterior se muestran las dos posibles soluciones (estados objetivo) del espacio del
problema marcadas en verde. Para llegar hasta ellas el camino más corto es el siguiente:
1. (5:0,3:0) Llenar la jarra de 3 litros
2. (5:0,3:3) Verter el contenido de la jarra de 3 litros en la de 5 litros
3. (5:3,3:0) Llenar la jarra de 3 litros
4. (5:3,3:3) Verter el contenido de la jarra de 3 litros en la de 5 litros
5. (5:5,3:1)
Para tareas que implican la interacción con el mundo exterior, la mayor parte de la estructura de
los estados viene determinada por lo que se percibe. En el caso del problema de las jarras de agua,
se podría vincular el programa Soar a un simulador gráfico o incluso a un entorno robótico real
donde se realizar la tarea. En este caso, para simplificar el aprendizaje, el problema Soar se
resolverá únicamente a través de la manipulación de estructuras de datos internas.
En esta actividad se pide:
1. Ejecutar el agente water_jug_simple disponible entre los agentes predefinidos mediante la
herramienta SoarJavaDebugger y observar su funcionamiento.
2. Seguir los pasos del tutorial disponible en el documento Soar Tutorial Part 1 – Simple Agents
a partir de la página 21, para desarrollar desde 0 un agente que resuelva el problema de las
jarras de agua. Utilizar para ello la herramienta VisualSoar.
3. Ejecutar el agente programado mediante la herramienta SoarJavaDebugger y observar su
funcionamiento.

Actividad 2 – Otros agentes de Soar


En esta actividad se pide ejecutar y observar el comportamiento de algunos de los ejemplos de
agente proporcionados por las librerías Soar (Towers of Hanoi, Eaters, etc)
Se pide:

• Analizar cuál es el estado inicial y el estado objetivo del agente.


• Analizar que elementos definen el estado actual del agente.
• Analizar que operadores y reglas utiliza el agente.

Robótica de Servicios Práctica 3 – Arquitecturas Cognitivas


Grado de Ingeniería Robótica Página 7

También podría gustarte