Inteligência Artificial para iniciantes.

Para a grande maioria das pessoas, inclusive muitos programadores experientes, a Inteligência Artificial é um tema futurista, complexo, e restrito a ficção. Uma questão polêmica no meio acadêmico é definir quais são as características que determinam se um software possui ou não algum resquício de IA. Também existe uma barreira de entrada para os interessados pelo assunto, ligada a falta de referencias para exercitar o tema.

Tratando da questão levantada sobre as características que definem a existência da IA, na minha opinião existem alguns níveis que ajudam a responder esta pergunta. Em cada um dos níveis listados abaixo o algoritmo deve ser capaz de:

básico – tomar decisões em tempo real, baseando-se em premissas existentes na sua base de conhecimento e/ou lógica de programação, exemplo: a grande maioria dos jogos de videogame implementam esse nível.

intermediário – avaliar o resultado obtido por uma determinada decisão atribuindo um peso/ranking para ela a fim de responder melhor futuras situações semelhantes. Alguém conhece o Google!?

avançado – aprender novos padrões de comportamento consultando outras fontes de conhecimento ou até mesmo outros algoritmos com comportamentos diferentes dos seus. Talvez a Web Semântica seja o caminho.

utópico – um algoritmo projetado para receber informações semelhantes aos 5 sentidos de um ser humano (saiba mais) que tenha uma programação básica instintiva, semelhante ao instinto de sobrevivência por exemplo, e a partir do seu “nascimento” passe a aprender interagindo com o mundo ao seu redor. * Uma dica: deixe este nível para os filmes de ficção e conversas de bar.

Confesso que nunca consegui ir muito além do nível básico, arranhando o intermediário. Mas também nunca me dediquei massivamente ao tema, ou seja, quem estiver disposto a aprender e se focar profissionalmente, saiba que não será um desafio fora do comum como ser astronauta da NASA :)

Mudando para a questão prática do assunto, gostaria de indicar um software muito simples e ao mesmo tempo divertido para o exercício de IA:
Obs. esta dica se destina para quem já possui algum conhecimento em programação.

Robocode (Java)

Este aplicativo é uma plataforma para desenvolvimento de batalhas/disputa entre tanques/robôs construídos através de uma biblioteca Java pré-definida com todos os objetos e métodos comportamentais do robô prontos. A partir desses objetos você começa a desenvolver o seu algoritmo de comportamento e tomada de decisões.

Existe uma semelhança interessante ao se aventurar nestas batalhas épicas com o jogo de xadrez. Você vai precisar prever e programar com antecedência todas as suas jogadas com base nas ações do seu adversário. Se você entende a dinâmica do xadrez isso será muito útil. Porém, esqueça a parte onde cada um tem a sua vez de jogar, no Robocode tudo acontece em tempo real, sem interrupções para cada robô efetuar sua jogada. Isso gera um dilema na hora de criar o algoritmo, cálculos muito complexos são demorados, e contra um adversário mais simples, porém mais rápido, pode ser um fator determinante para a derrota.

Seguem as fontes para começar a desenvolver:

Robocode: http://robocode.sourceforge.net/

Robocode Repository: http://robocoderepository.com/Categories.jsp

JGAP é um pacote/biblioteca Java que implementa IA para mapeamento genético. No entanto, parece que os envolvidos na criação desse projeto gostam de se aventurar com Robocode também. Veja o projeto Robocode JGAP: http://jgap.sourceforge.net/doc/robocode/robocode.html

Acredito que tenha sido válido o exercício sobre os níveis de IA antes de indicar esse programa para vocês, espero que gostem. Uma ressalva, se você nunca desenvolveu nada em Java pode ser uma barreira para começar, nada que algumas horas dedicadas ao estudo da sintaxe e estrutura básica do Java não resolva. Imagine que com esse esforço ao final do desafio, além de ver seu robô “inteligênte” em ação, você terá conhecimento prático de uma nova linguagem de programação.

abs.
Juliano

Você pode seguir todas as respostas através do feed RSS 2.0. Você pode deixar uma resposta, ou trackback do seu site.

Deixe seu comentário

XHTML: Você pode usar as tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">