[pyar] Inteligencia Artificial con python
Cesar Ballardini
cesar en ballardini.com.ar
Mie Sep 12 07:09:25 ART 2012
El día 12 de septiembre de 2012 02:51, fisa <fisadev en gmail.com> escribió:
> Con Rafa Carrascosa y Santi Romero estuvimos dedicando algunas horas
> machinalicas a armar una lib de inteligencia artificial con python.
> Implementa los algoritmos de AIMA (el libro más conocido de IA, de
> Peter Norvig, director de investigación en Google y profesor de IA en
> Stanford).
> Ya existía una lib en python de aima hecha por Norvig mismo
> (aima-python), pero de hace muchos años, no terminada del todo, y muy
> abandonada. Además el código era un poco caótico y no tan simple de
> saber lo que estaba hecho y lo que estaba a medias, sin tests, etc.
> Era más fácil hacer una nueva que forkear.
>
> Ya tenemos implementado lo que queríamos para la primer etapa:
> algoritmos de búsqueda de solución, informada, no informada, y local,
> incluyendo algoritmos genéticos. Para las siguientes etapas quedan por
> implementar CSP (satisfacción de restricciones), y cosas como NLP,
> aprendizaje, planeamiento, etc.
> Todo con tests, código bien pythónico, y ya es instalable desde pypi.
> Y con Ariel Rossanigo la vamos a estar usando para dar clases de IA en
> la universidad, así que también va a tener un poco de castigo de casos
> más reales.
>
> El código está en https://github.com/fisadev/simpleai , y también
> pueden instalarla con pip:
>
> pip install simpleai
>
> Una pizca como para que saboreen, un "HELLO WORLD" que parte de un
> string vacío y busca la solución con algoritmo A*:
>
> from simpleai.models import Problem
> from simpleai.search import astar
>
> GOAL = 'HELLO WORLD'
>
> class HelloProblem(Problem):
> def actions(self, state):
> if len(state) < len(GOAL):
> return [c for c in ' ABCDEFGHIJKLMNOPQRSTUVWXYZ']
> else:
> return []
>
> def result(self, state, action):
> return state + action
>
> def is_goal(self, state):
> return state == GOAL
>
> def heuristic(self, state):
> # how far are we from the goal?
> wrong = sum([1 if state[i] != GOAL[i] else 0
> for i in range(len(state))])
> missing = len(GOAL) - len(state)
> return wrong + missing
>
>
> problem = HelloProblem(initial_state='')
> result = astar(problem)
>
> print result.state
> print result.path()
>
¡Excelente!
Felicitaciones a los que estuvieron trabajando en ello.
Nos leemos...
--
It's not enough to teach students to surf the Net, we must teach them to
make waves. My pedagogical theory is relate, create, donate, which
suggests that students work in teams, create ambitious projects and then
donate these to people who can use and build upon them. --Ben Shneiderman
More information about the pyar
mailing list