UNIBRATEC

UNIBRATEC
Desenvolvimento de Sistemas Inteligentes (DSI): 80h
email
:
unibratec@fredbf.com


1. COMPETÊNCIAS
 
  • C1 - Compreender conceitos básicos da computação inteligente
  • C2 - Desenvolver sistemas com comportamento inteligente
  • C3 - Utilizar ferramentas para construção de sistemas inteligentes
2. ANDAMENTO DA DISCIPLINA
 
2.1 - Aulas Presenciais
Aula 1
09/02
Apresentação da disciplina e discussão sobre Inteligência X Inteligência Artificial
(1) O que é IA? - artigo em inglês de John McCarthy, em formato de perguntas e respostas, que discute sobre Inteligência Artificial (em DOC)
(2) Jogo dos sapos - documento excel com jogo de raciocínio lógico. Contribua com o site e envie links de jogos de raciocínio ao professor (unibratec@fredbf.com)
(3) Leitura: Capítulo 1 do AIMA (Artificial Intelligente: a Modern Approach)
Aula 2
11/02
Introdução
(1) Conteúdo: História, Sistemas Inteligentes, Correntes de IA
Aula 3
12/02
Agentes Inteligentes
(1) Conteúdo: definição, agente racional e modelagem usando agentes
Aula 4
16/02
Vídeos sobre agentes e robótica
(1) Obs: veremos nessa aula, agentes inteligentes, pois na aula passada, assistimos aos vídeos
Aula 5
18/02
Atividade 1 - Discussão sobre Inteligência Artificial
(1) Definição: artigo “What s AI?” de John McCarthy, em formato de perguntas e respostas, que discute sobre Inteligência Artificial
Aula 6
19/02
Busca sem Informação (Busca Cega)
(1) Conteúdo: Busca sem Informação, Busca em Largura, Busca por Custo Uniforme, Busca em Profundidade
Aula 7
25/02
Busca sem Informação (continuação)
(1) Conteúdo: Busca com Profundidade Limitada, Busca com Profundidade Interativa, Busca Bidirecional, Comparação entre essas estratégias e Estudos de Caso
Aula8
26/02
Busca com Informação (Busca Informada)
(1) Conteúdo: Busca com Informação, Busca Gulosa, Busca A* e Heurística
(2) Primeira lista de exercícios: ListaExercicios1.pdf
Aula 9
03/03
Criação de Heurísticas e Heurística do Jogo da Velha
(1) Conteúdo: estudando mais sobre heurísticas e implementando heurísticas para o jogo da velha (jogoDaVelha.zip)
(2) Passo a passo para criação da sua heurística (Ativ2.txt)
Aula 10
04/03
Copa do Mundo da Heurística do Jogo da Velha
(1) Conteúdo: demonstração das heurísticas implementadas pelos alunos
(2) Problemas de otimização: motivação inicial
Aula 11
10/03
Avaliação 1
(1) Conteúdo: Agentes (Cap2) + Busca sem Informação (Cap3) + Busca com Informação (Cap4)
Aula 12
11/03
Algoritmos de Busca por Otimização
(1) Conteúdo: Subida da Encosta (Hill Climbing), Simulated Anneling (Têmpera Simulada) e
Algoritmos Genéticos
Aula 13
17/03
Atividade 2 – Implementação para heurística do jogo da velha
(1) Definição: implementar uma heurística do jogo da velha
(2) Deadline: 15/09
Aula 14
18/03
Algoritmos Genéticos (AG)
(1) Conteúdo: Motivação Inicial
Aula 15
24/03
Algoritmos Genéticos (AG)
(1) Conteúdo: Definição e Fases de um AG
(2) Estudo da implementação do problema das 8 Rainhas (8RainhasAGMelhorado.zip)
Aula 16
25/03
Exercício de laboratório sobre AG
(1) Conteúdo: modelagem e implementação do problema de coloração de mapas (ColoracaoComAG.zip)
Aula 17
31/03
Exercício de laboratório sobre AG
(1) Conteúdo: modelagem do problema de alocação de disciplinas
Aula 18
01/04
Atividade 3 – Implementação de um Algoritmo Genético para o problema de alocação de disciplinas
(1) Definição: implementar uma solução para a modelagem apresentada na aula anterior
Aula 19
07/04
Avaliação 2
(1) Algoritmos Genéticos
Aula 20
08/04
Redes Neurais: Motivação
(1) Conteúdo: introdução à redes neurais artificiais, neurônio biológico, resolvendo um problema simples usando uma Rede Neural Artificial simples (Perceptron)
(2) Applet de um Perceptron, que resolve um problemas da tabela verdade, usando várias funções de ativação: clique aqui
(3) Código de implementação de um perceptron, usando função de ativação sigmóide, que reconhece um T e um H: projeto completo no Delphi (Perceptron.zip) e apenas executável (Perceptron.exe)
(4) Leitura: capítulo 3 do livro de Redes Neurais Artificiais
Aula 21
14/04
Redes Neurais: Introdução
(1) Conteúdo: Introdução, Histórico, Redes e Neurônios Biológicos, Neurônios Artificiais
Aula 22
15/04
Redes Neurais: Introdução (continuação)
(1) Conteúdo: Funções de Ativação e Principais Arquiteturas Modelo de Linsker, Regra de Oja, Perceptron e Adaline
Aula 23
22/04
Redes Neurais: Aprendizagem e Perceptron
(1) Conteúdo: Aprendizado, Aprendizado Supervisionado, Aprendizado por Reforço, Aprendizado não Supervisionado, Aprendizado Competitivo, Aprendizado Hebbiano, Modelo de Linsker, Regra de Oja, Perceptron e Adaline
(2) Estudo de caso: realizando treinamento e teste do problema OR
(3) Lista de Exercícios sobre RNA (ListaExerciciosSobreRNA.pdf) e fazer o refinamento do Perceptron (Caracteres.xls)
OBS: ver seção 2.2 do site para maiores explicações sobre a Atividade 4
Aula 24
26/04
Redes MLP e WEKA
(1) Conteúdo: realizando treinamento e teste de um problema da previsão do tempo para jogar tênis usando o WEKA
Aula 25
28/04
Redes MLP e WEKA
(1) Conteúdo: realizando treinamento e teste dos problemas OR e Análise de Crédito usando o WEKA
Aula 26
29/04

Atividade 4 – Implementação de um um reconhecedor de caracteres
(1) Definição: implementar um reconhecedor de caracteres

Aula 27
05/05
Avaliação 3
(1) Conteúdo: cap1, cap2 e cap3 do Livro de Redes Neurais
(2) Essa avaliação deveria ter sido realizada no dia 29/10, porém os alunos pediram o adiamento de um dia
Aula 28
06/05
Agentes Baseados em Conhecimento (BC)
(1) Conteúdo: Conhecimento e Raciocínio, Agentes BC, Arquitetura, Ciclo de Vida, Engenharia de Conhecimento, Linguagens de Representação do Conhecimento e Sistemas BC
Aula 29
12/05
Raciocínio e Representação do Conhecimento: introdução
(1) Conteúdo: Definição de Raciocínio e de Representação do Conhecimento, Resolução do problema das 8-rainhas usando o JEOPS
(2) JEOPS (The Java Embedded Object Production System)- site oficial, aula em português sobre a ferramenta (clique aqui), download do JEOPS (clique aqui)
(3) Código-fonte para resolução do problema das 8 rainhas: OitoRainhas.rules, Rainha.java e TesteRainhas.java. Procedimento: (a) crie um projeto no Eclipse; (b) crie uma pasta de nome 'aula'; (c) copie os 3 arquivos-fonte para essa pasta; (d) copie e descompacte o JEOPS (download no tópico 4 abaixo) para essa mesma pasta; (e) adicione os dois JAR no seu projeto; (f) compile o arquivo de regras com o comando "jeops.compiler.Main aula/OitoRainhas.rules"; e finamente (g) execute o arquivo TestaRainhas.
(4) Errata no JEOPS: a partir da versão JDK 1.4.1 em diante, o JEOPS troca o método assert() por tell(), para não gerar erro de sintaxe. Portanto, faça o donwload da versão corrigida (JEOPS_TELL.zip), e em seguida modifique o arquivo TesteRainhas.java
(5) Ler: capítulo 7 do AIMA
JEOPS: resolvendo o problema da coloração de mapas
(1) Conteúdo: aqui estão os 3 arquivos (Bloco.java, RegrasBlocos.rules e TestaBlocos.java) que devem ser criados dentro do pacote "alocacao", a partir da raiz. Já estou trabalhando com JEOPS_TELL aqui.
Aula 31
19/05
JEOPS: resolvendo o problema de alocação de disciplinas
(1) Problema a ser resolvido: alocação de disciplinas
(2) Solução: SisAloc.rules, Disciplina.java, Horario.java, Professor.java e SisAlocTeste.java que devem ser criados dentro do pacote "sisaloc", a partir da raiz. Já estou trabalhando com JEOPS_TELL aqui.
Aula 32
20/05
JEOPS: trabalhando com mais de uma regra e regras encadeadas
(1) Problema a ser resolvido: classificação de meios de transporte segundo Bigus & Bigus, "Constructing Intelligent Agents with Java". Pegue as regras aqui.
(2) Usar o comando modified() do JEOPS, quando modificar um objeto dentro da base de conhecimento. Em outras palavras, quando você modificar o conteúdo do objeto t, use o método modified(t), para que outras regras-encadeadas possam ser disparadas. Ex:
	rule Automovel {
		declarations
			Transporte t;
		conditions
			t.getNumeroRodas() == 4;
			t.getMotor();
		actions
			t.setTipoTransporte("automovel");
			modified(t);
	}

(3) Pegue os arquivos Transporte.java e Tamanho.java, abra um projeto qualquer, e salve-os dentro do pacote "aulas". Codifique o arquivo de regras, com nome ClassificacaoTransportesBase.rules, e com a regra base (ruleBase) de mesmo nome .
(4) Execute o exemplo, para testar o tipo e modelo do transporte, no arquivo Exemplo1.java. Por que o arquivo entra num laço infinito? Clique aqui para resposta
(5) Importe a classe jeops.conflict.OneShotConflictSet, e use a política de executar apenas uma vez, cada regra, new OneShotConflictSet(), na hora de criar sua base de dados Exemplo1_modificado.java
(6) Dia 12 não teve aula (professor faltou) e dia 13 faltou luz na UNIBRATEC
Aula 33
26/05
JEOPS: construindo um agente inteligente
(1) Conhecendo o Mundo do Wumpus através de applets: Exemplo1 e Exemplo2
(2) Projeto completo de um agente para o Mundo do Wumpus, usando o JEOPS: wumpus.zip
(3) Construa regras para o problema acima, de modo a embutir o máximo de conhecimento ao agente
(4) Ações interessantes:
     (a) pegar pepita, se ela estiver disponível;
     (b) voltar pra casa, se tem pepita e está no início;
     (c) andar na direção contrária, caso perceba um buraco;
     (d) atirar flecha precisa usar o método setFireMode(), para preparar o arco, e setFireDir(DIRECAO)
     (e) atirar uma flecha, caso perceba o Wumpus;
     (f) construa mais regras...

(5) Essa é atividade 5, e quanto mais inteligente seu agente for, maior será o conceito que você irá receber nessa atividade
Aula 34
27/05
JEOPS: trabalhando exemplo com estouro de memória
(1) Problema a ser resolvido: criptaritmética
(2) Definição do problema: atribua um valor (de 0 a 9) a cada letra, de forma que a soma de SEND e MORE dê igual a MONEY, seguindo uma soma normal. Lembrando que letras iguais devem ter valores iguais.
(3) Para ver a Implementação em prolog, clique aqui
(4) Código-fonte para resolução do problema: criptoRegras.rules, Letra.java e criptoTeste.java.
Aula 35
02/06
Avaliação 4
(1) Conteúdo: Sistemas Baseados em Conhecimento
(2) Prova Prática, para resolução de problemas usando JEOPS
Aula 36
03/06
Acompanhamento dos seminários e projetos
(1) Definição: aula reservada para tirar dúvidas finais sobre o projeto e o seminário
Aula 37
09/06

Apresentação dos seminários e projetos

Aula 38
10/06
Apresentação dos seminários e projetos
Aula 39
16/06
Apresentação dos seminários e projetos
Aula 40
17/06
Avaliação FINAL

2.2 - Atividades à Distância
Ativ 1
Discussão e tarefa do Artigo "What is AI?"
(1) Data limite: ??
Ativ 2
Implementação para heurística do jogo da velha
(1) Data limite: ??
(2) Definição: implementar uma heurística do jogo da velha
Ativ 3
Implementação de um Algoritmo Genético para o problema de alocação de disciplinas
(1) Data limite:??
(1) Definição: implementar uma solução para a modelagem apresentada na aula anterior
Ativ 4
Refinando o Perceptron para Reconhecimento de Caracteres
(1) Data limite: ??
(2) Aumentar o número de pixels para representação de um caractere. Abrir o arquivo Caracteres.xls para criação de suas letras correspondentes (procure seu nome nesse arquivo).
(3) Abrir o projeto em delphi (Perceptron.zip), e estender um caractere para ser representado por uma matriz de 8x8 elementos. O roteiro passo-a-passo do que deve ser feito encontra-se no arquivo Caracteres.xls (acima).
Ativ 5
Implementação de um agente no Mundo do Wumpus usando o JEOPS
(1) Data limite: ??
(2) Definição: implementar um agente no mundo do Wumpus, que seja capaz de pegar uma pepita de ouro e voltar pro início
Ativ 6
Artigo sobre o assunto do seminário
(1) Data limite: ??
(2) Nº de páginas: mínimo de 2, máximo de 4
(3) Estrutura sugerida: resumo, palavras-chave, abstract, introdução, estado da arte/trabalhos relacionados, metodologia,
resultados e conclusão
Ativ 7
Seminário
(1) Data limite: ??
(2) Critérios: (a) trabalho individual;
(b) duração: 30min; (c) explicação clara e objetiva do assunto abordado: slides ou quadro branco; (d) demonstração de uso da ferramenta usada; (e) demonstração de um protótipo executando
Ativ 8
Protótipo simples sobre o assunto do seminário
(1) Data limite: ??
(2) Definição: Código fonte comentado


3. PROJETO
 
  • Utilização de alguma ferramenta de IA para resolver um problema real
  • Usar alguma técnica estudada em sala para embutir comportamento inteligente em algum código já existente
  • Desenvolver uma aplicação inteligente para um problema real
    • Projeto Integrado para o 4º período?
  • Implementar um jogo em interface gráfica (dominó, forca, etc), permitindo que os usuários possam criar heurísticas facilmente

4. FERRAMENTAS
 
  • JEOPS - http://www.di.ufpe.br/~jeops/
  • WEKA - http://www.cs.waikato.ac.nz/ml/weka/
  • EXPERT SINTA - http://www.lia.ufc.br/~bezerra/exsinta/

5. LISTAS DE EXERCÍCIOS
 

6. BIBLIOGRAFIA
 
  • Russell, S, Norvig, P., Inteligência Artificial, Editora Campus, 2004.
  • Braga, A. de P., Ludermir, T. B., Carvalho, A. C. P. de L., Redes Neurais Artificiais – Teoria e Aplicações – Editora LTC, 2000  
  • Linden, Ricardo, Algoritmos Genéticos – Uma Importante Ferramenta da Inteligência Computacional, Editora Brasport, 2006

7. AVALIAÇÕES
 
LEGENDA:
 
=
Bom rendimento, continue assim
 
=
Rendimento satisfatório
 
=
Precisa melhorar
 
?
=
Entregue, mas não corrigido
 
-
=
Não realizado ou não entregue


Competência C1
Alunos
Av 1
Av 2
Av 3
Ativ 6
Ativ 7
Média Parcial
Av Final
Média Final
Conc.
Rep.
Conc.
Rep.
Conc.
Rep.
Conc.
Atraso Conc. Atraso
Conc.
Conc.
Conc.
                 


Competência C2
Alunos
Ativ 2
Ativ 3
Ativ 8
Média Parcial
Av Final
Média Final
Conc.
Atraso
Conc.
Atraso
Conc.
Atraso
Conc.
Conc.
Conc.
           


Competência C3
Alunos
Av 4
Ativ 4
Ativ 5
Média Parcial
Av Final
Média Final
Conc.
Rep.
Conc.
Atraso
Conc.
Atraso
Conc.
Conc.
Conc.