Angel "Java" Lopez

NET, Java, PHP y Desarrollo de Software

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

.NET

ASP.NET

Windows Form

VB.NET

C#

Sitios

Blogs

Inteligencia Artifical en C# (1) Primeros Agentes

Ayer comencé a implementar ejemplos del libro Artificial Intelligence: A Modern Approach, de Stuart Russell y Peter Norvig. Ver el sitio del libro

http://aima.cs.berkeley.edu/

Hay implementaciones en distintos lenguajes:

http://aima.cs.berkeley.edu/code.html (hay en Python, Java, C#, Prolog, Lisp, … )

Mi implementación en

https://github.com/ajlopez/SharpAima

Quiero ir armándola con TDD. Por ahora me baso en la versión en Python, pero puede que también vea la versión en Java, debido a las diferencias de los lenguajes: C# y Java son lenguajes tipados.

La versión que presento hoy es la 0.0.1

https://github.com/ajlopez/SharpAima/tree/0.0.1

Por cada post iré “taggeando” una nueva versión. Mi primer código trata de implementar los primeros agentes descriptos en el capítulo 2. Me basé en el código de:

http://aima-python.googlecode.com/svn/trunk/agents.py

Tengo una solución con dos proyectos: uno de clases y otro de tests:

La idea es tener agentes en un ambiente:

(Adaptado de la figura 2.1 del libro)

El agente recibe percepciones y genera acciones. La primera implementación es:

public abstract class Agent<TLocation, TPerception, TAction>
{
	public TLocation Location { get; set; }

	public int Performance { get; set; }

	public abstract TAction GetAction(TPerception perception);
}

Y las implementaciones en concreto son de un agente robot máquina aspiradora (VacuumAgent y variantes).

Vean la historia del proyecto, cómo fue evolucionando desde TDD. Primero implementé un agente concreto, y luego fue surgiendo la abstracción de arriba. Noten que en C# tenemos que apelar a algo tipado, y de ahí el uso de tipos genéricos: un tipo de agente concreto se define dando el tipo de lugares (location) que maneja (por ejemplo, una posición X, Y, a implementar en la próxima versión), el tipo de percepciones que recibe (ej: “estoy en lugar A y el lugar está limpio”), y el tipo de acciones (“Limpiar”, “Ir a la Derecha”, … ). En Python es más simple, por no tener tipos.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Published Sun, Apr 21 2013 10:04 by lopez

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: