You are on page 1of 288

Inteligncia Artificial

Alexandre Carlos Brando Ramos

Objetivos
Expor ao aluno conceitos bsicos sobre mtodos, tcnicas e ferramentas de Inteligncia Artificial e sua aplicao na rea de Educao

Programa
Introduo O que IA, reas da IA, IA em controle e automao; Representao do conhecimento, tipos de representao, propriedades de uma base de conhecimento, esquemas de representao; Aquisio de conhecimento, fases de familiarizao e conceituao, projeto e implementao, interao com o especialista;

Programa
Sistemas Especialistas, definio, utilizao, sistemas baseados em regras Tpicos suplementares, aprendizado, redes neurais

Bibliografia
Cardozo, E. Inteligncia Artificial. UNICAMP. 1993. Rich, E. e K. Knight. Inteligncia Artificial, Segunda edio, McGraw Hill do Brasil.1993. Winston, P.H.Artificial Intelligence. 3 edio. Addison-Wesley, 1992.

Introduo

Computadores e Educao
A viso da utilizao de computadores na educao tem uma longa histria. As aplicaes educacionais utilizandose desta tecnologia so desenvolvidas desde os anos 60.

CAI Computer Aided Instruction


Ou Instruo Assistida por Computador, utiliza o paradigma da instruo programada, cujos mtodos educacionais apresentam uma forma expositiva centrada no professor, ou seja:


Primeiramente o estudante deve compreender a lio dada pelo professor; e Posteriormente responder alguma questo e, com isso, reforar a sua compreenso.

CAI - Condicionamento
Esta abordagem centrada no professor foi fortemente influenciada pela Teoria Comportamentalista de Skinner e tem suas razes na psicologia do condicionamento operante (ou seja, o princpio no qual as mudanas de comportamento - consideradas aqui como sinnimo de ensino - podem ser mais facilmente provocadas atravs de programaes de reforo, isto , compensando o comportamento desejado em dados momentos).

Evoluo da CAI
Existe uma crescente tendncia de incorporar princpios e estratgias cognitivas no processo de desenvolvimento destes sistemas CAI, medida que as perspectivas tericas dos psiclogos educacionais tendem a migrar para a psicologia cognitiva.

CAI + IA = ICAI
Com a evoluo das tcnicas de Inteligncia Artificial (IA) e das pesquisas no campo das cincias cognitivas, aumentou-se o grau de inteligncia dos sistemas educacionais e antigas dificuldades esto sendo aos poucos superadas. Chamados ICAI para inteligente CAI, estes sistemas apresentam uma representao de seu domnio permitindo utilizar seus conhecimentos de maneira no diretamente explicitados pelo projetista.

Motivaes
Uma das principais motivaes para as pesquisas em Inteligncia Artificial na Educao (AI-ED do ingls Artificial Intelligence in Education), o desenvolvimento de ambientes de aprendizagem computacionais onde os estudantes possam ter experincias de aprendizagem individualizadas, isto , experincias que sejam fundamentais e benficas para eles, sem importar suas diferenas individuais, experincias anteriores, ou outras situaes cognitivas.

Instruo personalizada
Assim, pela modelagem do estudante, os sistemas AI-ED, podem personalizar a instruo, compatibilizando a apresentao com o nvel de conhecimento do estudante e com o seu ndice de aprendizagem. A maioria destes sistemas apresenta mtodos educacionais que proporcionam uma forma de descoberta centrada no estudante, e os dilogos tutoriais so basicamente determinados pelo conhecimento conceitual e pelo comportamento de aprendizagem do estudante.

De CAI para ICAI para STI


Atualmente aceito que qualquer sistema que tenha como objetivo principal a funo de ensinar, deve incorporar princpios de IA. O nome ICAI evoluiu de CAI para denotar a pesquisa educacional envolvendo tais princpios. Recentemente, os programas de computador que utilizam estas tcnicas de IA para auxiliar as pessoas no processo de aprendizagem so chamados STIs para abreviar Sistemas Tutoriais Inteligentes.

O que Inteligncia Artificial

O que Inteligncia Artificial-IA


O termo IA est associado a questo levantada ainda nos primrdios da cincia da computao relativa possibilidade dos computadores digitais exibirem caractersticas associadas inteligncia humana (cognitivas) tais como capacidade de aprendizado, raciocnio dedutivo, percepo, comunicao em alto nvel etc.

Definio
Convenciona-se chamar IA o estudo de processos cognitivos artificiais, ou seja, que se manifestam em autmatos.

Processos Cognitivos
Muitos processos cognitivos humanos podem ser reproduzidos em computador quando dotamos a mquina de, por exemplo: 1. Capacidade de resoluo de problemas num domnio; 2. Capacidade de aprendizado, ou seja, aprimoramento constante do desempenho em tempo de execuo;

Processos Cognitivos
3. Capacidade de se comunicar em alto nvel, por exemplo, atravs de linguagem natural escrita ou falada; 4. Capacidade de percepo (sentir o meio ao redor) obtida atravs de processamento de dados oriundos de sensores de viso, voz, proximidade etc. 5. Capacidade de simular um ser humano na execuo de determinada tarefa

Comportamento Inteligente
Para fazer com que o computador exiba certo comportamento inteligente, necessrio habilita-lo a processar grandes quantidades de informao relacionadas ao domnio em questo e tambm certos procedimentos (heursticas) se mostram eficazes na maioria dos casos, mas que podem falhar frente a situaes imprevistas.

Conhecimento
So verdades universais e heursticas que implementamos em computador com o objetivo de dota-lo de capacidade de executar esta tarefa.

Resoluo de Problemas
Podemos identificar duas grandes estratgias de resoluo de problemas: 1. Estratgias algortmicas, generalistas, por exemplo, os mtodos numricos, os sistemas de bancos de dados, as planilhas etc. 2. Estratgias baseadas em conhecimento (especialistas) por exemplo, sistemas especialistas, sistemas de reconhecimento de voz, tutores

Exerccios
Represente algoritmicamente a soluo dos seguintes problemas:
1. Sejam 2 vasilhames d gua, um de 4 litros e outro de 3 litros. Nenhum deles possui qualquer marcao de medida. H uma torneira que pode ser utilizada para encher os vasilhames de gua. Como voc poder colocar exatamente 2 litros d gua dentro do vasilhame de 4 litros?

Exerccios
2. Trs missionrios e trs canibais se encontram em um lado do rio. Todos concordam que precisam chegar do outro lado. Mas os missionrios no confiam nos canibais. Assim, os missionrios querem atravessar o rio de modo tal que o nmero de missionrios em qualquer das margens nunca seja inferior ao nmero de canibais que estiver do mesmo lado. O nico barco disponvel s carrega 2 pessoas por vez. Como todos podero chegar ao outro lado, sem que os missionrios arrisquem suas vidas?

Exerccios
Prximo de Hani h um monastrio cujos monges devotam suas vidas a uma tarefa muito importante. Em seu ptio h trs postes altos. Nestes postes h um conjunto de sessenta e quatro discos, cada um deles com um furo no centro e de tamanhos diferentes. Quando o monastrio foi fundado, todos os discos estavam em um dos postes, cada disco repousando sobre o imediatamente maior que ele. A tarefa dos monges deslocar todos os discos para um dos outros postes. Apenas um

Exerccios
nico disco pode ser deslocado de cada vez e todos os demais discos devero estar em um dos postes. Alm disso, em nenhuma ocasio durante o processo de transferncia, um disco maior poder ser colocado em cima de um menor. Pode-se utilizar o terceiro poste como local de repouso temporrio para os discos. Segundo a lenda, o mundo terminar quando eles houverem terminado a tarefa.

Onde Usar as Tcnicas de IA?


1. Processamento simblico intenso, isto , a manipulao de grandezas no quantificveis numericamente; 2. O problema no possui metodologia concisa de resoluo, isto , no existe (ou existe, mas computacionalmente invivel) um procedimento que sempre leve a soluo; 3. O problema complexo o suficiente para justificar o investimento na soluo;

Onde Usar as Tcnicas de IA?


4. O domnio do conhecimento necessrio soluo do problema bem delimitado; 5. O conhecimento necessrio para a soluo do problema se encontra disponvel; 6. Uma soluo sub-tima aceitvel; e 7. Caso haja uma falha na soluo no deve levar a perdas irreparveis.

Onde no usar IA?


1. Para resolver um sistema de equaes lineares (infringe o item 2); 2. Desenvolver um programa de xadrez que vena qualquer adversrio (infringe 3) 3. Ministrar drogas anestsicas em pacientes durante cirurgias, sem a interveno humana (infringe 7)

reas da IA
IA uma rea fortemente interdisciplinar, exigindo de seus especialistas cera especializao em determinadas reas, tais como: Resoluo de problemas, formulao e aprimoramento de procedimentos gerais de manipulao de conhecimento para problemas no algortmicos

reas da IA
Representao do conhecimento e aprimoramento de formalismos, linguagens e sistemas para a codificao, anlise e manipulao do conhecimento Sistemas Especialistas, simulao em computador dos mecanismos de resoluo de problemas empregados por especialistas humanos num domnio bem especfico

reas da IA
Aprendizado, elaborao de tcnicas que permitem melhorar o desempenho do software em tempo de execuo Percepo artificial, dotar o computador de capacidade sensitiva atravs de viso artificial, processamento de linguagem natural escrita ou falada

reas da IA
Redes neurais, concepo de estruturas computacionais que modelam os neurnios e sinapses do crtex cerebral IA distribuda, estudo da forma de comunicao entre diferentes agentes, em geral, distribudos por um certo n de processadores

Impactos na Utilizao de IA
A medida em que aumenta a utilizao do computador, deparamos com problemas intratveis, aparentemente, se nos limitarmos s tcnicas de resoluo habituais (notadamente algortmicas). Normalmente estes problemas so bem especficos, e por isso, no existe algoritmo de soluo, exemplo:  processamento de alarmes  diagnose de falhas


treinamento em controle de processos etc.

Impactos na Utilizao de IA
Nestes casos tcnicas de IA so imprescindveis para a implementao de automatismos avanados, cuja implantao depende da disponibilidade de recursos para o projeto (SW, HW e PW)

IA em Controle de Processos
Vrias tarefas relativas ao controle e automao de processos necessitam procedimentos corretos de soluo devido aos seguintes fatores: 1. Ausncia de modelos simples e precisos para a descrio de sua dinmica ou da inter-relao para a descrio de seus componentes;

IA em Controle de Processos
2. Complexidade do problema; 3. Rudos externos ao processo; 4. Emulao de aes tomadas por operadores experientes; e 5. Adaptao de procedimentos empregados em situaes semelhantes.

Controle Inteligente
uma filosofia de controle de sistemas dinmicos que combina tcnicas tradicionais de controle de processos (identificao, controle avanado etc.) com mtodos baseados no conhecimento atuando num nvel mais elevado, de modo a poder monitorar a prpria estratgia de controle.

Auxlio Inteligente Operao de Processos


So sistemas inteligentes que monitoram os valores das variveis de um processo e que a partir de uma base de conhecimento fornecida por um operador experiente propiciam uma melhora e padronizao no tratamento das instabilidades e operaes do processo.

Treinamento Assistido por Computador


No sentido de melhorar e agilizar a eficincia das atitudes tomadas por um operador menos experiente a partir de um treinamento especfico em instabilidades do processo realizado offline;

Projeto Assistido por Computador


Sistemas CAD para a engenharia de controle so ambientes de SW que agregam de forma harmoniosa uma srie de ferramentas utilizadas no projeto de sistemas de controle, exemplos Matlab e Simulink

Controladores Neurais, Genticos e Fuzzy


Que empregam tcnicas de IA baseadas em analogias com o funcionamento de certos processos biolgicos, no caso processos cerebrais e genticos Controladores fuzzy empregam o formalismo da lgica nebulosa e definem diferentes polticas de controle para diferentes regies do espao de estados do processo, que so delimitadas atravs de conjuntos

Mtodos bsicos de soluo de problemas

Raciocnio Forward x Backward


Um procedimento de busca visa descobrir um caminho atravs de um espao do problema, a partir de uma configurao inicial at um estado final, isso pode ser feito a partir de duas direes:  Para frente (forward), a partir dos estados iniciais; ou  Para trs (backward), a partir dos estados finais.

Raciocnio Forward x Backward


Trs fatores influenciam a opo de raciocinar para frente ou para trs: 1. Existem mais estados iniciais ou estados finais? ( melhor comear do conjunto menor para o maior). 2. Em que direo o nmero mdio de ns que podem ser alcanados a partir de um nico n maior (fator de ramificao - FR)? O ideal seguir na direo do FR mais baixo).

Raciocnio Forward x Backward


3. Ser necessrio justificar o processo de raciocnio? Se for deve-se prosseguir na direo que mais se assemelha forma do usurio pensar.

rvores x Grafos
A travessia de uma rvore um modo simples de implementar uma estratgia de busca, onde cada n expandido para gerar um conjunto de sucessores, que por sua vez, podem ser expandidos at que uma soluo seja encontrada. Este mtodo pode fazer com que o mesmo n seja gerado vrias vezes em vrios caminhos diferentes.

rvores x Grafos
Grafos direcionados diferem de rvores no sentido de que diversos caminhos podero se reunir em um n. Procedimentos de busca em rvore podem ser convertidos para busca em grafo.

Converso de rvore em grafo


1. Examine o conjunto de ns criados at agora para ver se o novo n j existe. 2. Se no existir, acrescente-o ao grafo. 3. Se j existir, faa: 3.1. Fixe o n que estiver sendo expandido para apontar para o n j existente correspondente ao seu sucessor, em vez de apontar para o novo n. O n pode simplesmente ser descartado. 3.2. Se voc estiver mantendo o controle do melhor caminho (mais curto ou mais barato) para cada n, ento confira para ver se o novo caminho melhor ou pior do que o antigo. Se pior, nada faa. Se melhor, registre o novo caminho como o correto a utilizar para chegar ao novo n e propague a mudana correspondente no custo, para baixo, atravs de ns sucessores, conforme necessrio.

Funes heursticas
A funo heurstica a funo que mapeia as descries do estado do problema para medidas de desejabilidade, normalmente representadas com nmeros. Portanto o valor da funo heurstica num dado n de um processo de busca nos fornece uma estimativa to boa quanto possvel no sentido de se o n est no melhor caminho da soluo.

Funes heursticas
Para que as funes heursticas normalmente precisam estar unidas a algum mtodo heurstico de finalidade especial, apropriado para aquele domnio,estes mtodos so normalmente chamados mtodos fracos, quais sejam: Gerar-e-testar Subida de encosta

Funes heursticas
Busca em amplitude Busca pela melhor escolha Reduo do problema Satisfao de restries A escolha da estratgia correta para um problema em particular depende muito das caractersticas do problema.

Gerar-e-testar
Corresponde a estratgia mais simples de todos os mtodos de busca. Gerar-e-testar um algoritmo de busca em profundidade, j que solues completas devero ser testadas antes de serem testadas. Tambm considerado uma busca exaustiva do espao do problema, caso opere produzindo solues aleatoriamente, no existe garantia de encontrar uma soluo. Nesta forma, tambm conhecido como o algoritmo do Museu Britnico, uma referncia ao fato de que, se um nmero suficiente de macacos forem colocados em frente a um conjunto de mquinas de escrever e deixados sozinhos o tempo suficiente, ento sua implementao neste algoritmo geraria todos os livros contidos no museu.

Gerar-e-testar

- algoritmo

1. Gerar uma soluo possvel. Para alguns problemas, isto significa gerar um ponto em particular no espao do problema. Para outros, significa gerar um caminho a partir de um estado inicial. 2. Testar para ver se ela uma soluo, comparando o ponto escolhido ou o ponto final do caminho escolhido com o conjunto de estados meta aceitveis. 3. Se uma soluo tiver sido encontrada, parar; Caso contrrio, retornar ao passo 1.

Subida de encosta
Subida de encosta uma variao do gerar-e-testar em que a retroalimentao do procedimento de teste utilizada para ajudar o gerador a decidir em que direo se deslocar no espao de busca. Num procedimento de gerar-e-testar, a funo de teste responde apenas com um sim ou no. Se a funo de teste for ampliada com uma funo heurstica que fornea uma estimativa do quo prximo um dado estado est de um estado meta, o procedimento de gerar pode explor-lo ampliando sua eficincia.

Subida de encosta - algoritmo


1. Forme uma fila de um elemento consistindo do n raiz. 2. At que a fila esteja vazia ou que o destino tenha sido alcanado, determine se o primeiro elemento da fila o n destino. 2.1. Se o primeiro elemento o n destino, no faa nada. 2.2. Seno, remova o primeiro elemento da fila, coloque os filhos do primeiro elemento, se existentes, ordenados segundo a distncia restante estimada, e adicione os filhos do primeiro elemento, se existentes, na frente da fila. 3. Se o n destino tiver sido encontrado, proclame susseo; caso contrrio, proclame fracasso.

Subida de encosta - algoritmo


4. Pegue o melhor elemento encontrado acima e utilizeo como a prxima soluo proposta. Este passo corresponde a um movimento atravs do espao do problema na direo que parece estar levando o mais rapidamente no sentido de uma meta. 5. Volte ao passo 2.

Busca em amplitude
Tanto gerar-e-testar quanto a subida de encosta so procedimentos de busca em profundidade. Estes so muitas vezes fceis de implementar e podero atingir uma boa soluo rapidamente. Entretanto gastam muito tempo explorando caminhos inteis. A busca em amplitude uma alternativa mais simples, onde todos os ns de um nvel da rvore so examinados antes dos ns seguintes. Este procedimento garante encontrar uma soluo, desde que haja um nmero finito de ramos da rvore.

Busca em amplitude

- algoritmo

1. Forme uma fila de um elemento consistindo do n raiz. 2. At que a fila esteja vazia ou que o destino tenha sido alcanado, determine se o primeiro elemento da fila o n destino. 2.1. Se o primeiro elemento o n destino, no faa nada. 2.2. Seno, remova o primeiro elemento da fila, coloque os filhos do primeiro elemento, se existentes, no fim da fila. 3. Se o n destino tiver sido encontrado, proclame sucesso; caso contrrio anote fracasso.

Busca pela melhor escolha


Se uma soluo no for encontrada, aquele ramo parecer menos promissor do que um dos ramos do nvel mais alto que havia sido ignorado. Nesse ponto, o ramo anteriormente ignorado, e agora mais promissor, ser explorado. O ramo antigo no esquecido. Seu ltimo n permanece no conjunto de ns gerados e no expandidos e a busca pode retornar a ele sempre que os demais fiquem suficientemente ruins e ele seja novamente o caminho promissor. A busca pela melhor escolha pode ser feita tambm em um grafo, de modo a evitar caminhos em duplicata, isso pode ser realizado atravs do Algoritmo A*.

Busca pela melhor escolha A*


1. Forme uma fila de vias parciais; Faa a fila inicial consistir de via de comprimento zero, passo zero, desde o n raiz at lugar nenhum. 2.At que a fila esteja vazia ou que o destino tenha sido alcanado, determine se a primeira via na fila alcana o n destino. 2.1. Se a primeira via alcanar o n destino, no faa nada. 2.2. Se a primeira via no alcanar o n destino: 2.2.1. Remova a primeira via da fila. 2.2.2. Forme novas vias a partir da via removida pela extenso de um passo.

2.2.3. Acrescente as novas vias fila. 2.3.4. Ordene a fila pela soma de custos acumulados at este ponto, com as vias de menor custo na frente. 2.3.5. Se duas ou mais vias alcanarem um n comum, apague todas as vias, exceto a que alcana o n comum com o custo mnimo 3. Se o n destino foi achado, proclame sucesso; seno proclame fracasso.

Reduo do problema
As estratgias de busca vistas at o momento utilizam grafos OU, para encontrar um nico caminho para uma meta. Outro tipo de estrutura, o grafo E-OU, til para soluo de problemas resolvveis pela decomposio do problema em problemas menores, esta decomposio gera arcos (arcos E) que pode apontar para qualquer nmero de ns sucessores, devendo ser todos resolvidos para que o arco aponte para uma soluo. Neste caso utiliza-se o algoritmo AO*, semelhante ao A*.

Satisfao de restries
Em IA muitos mtodos podem ser vistos como satisfao de restries, em que a meta descobrir algum estado de problema que satisfaa um dado conjunto de restries, por exemplo, quebra-cabeas de criptografia. Entretanto, a estrutura desses problemas requer o aumento da descrio do estado de problema, a partir de uma lista de restries que se modifica medida que peas sejam resolvidas e a ampliao do mecanismo de busca para manipular essa lista.

Satisfao de restries algoritmo


1. At que uma soluo completa seja encontrada, ou que todos os caminhos tenham levado a becos sem sada, faa: 1.1. Escolha um n no expandido do grafo de busca. 1.2. Aplique as regras de inferncia de restries ao n escolhido a fim de gerar as novas restries possveis. 1.3. Se um conjunto de restries contiver uma contradio, reporte este caminho como um beco sem sada. 1.4. Se o conjunto de restries descrever uma soluo completa, reporte sucesso. 1.5. Se no encontrar, nem contradio, nem soluo completa, aplique as regras de espao de problema para gerar novas solues parciais que sejam compatveis com o conjunto atual de restries. Insira essas solues parciais dentro do grafo de busca.

Representao do Conhecimento

Representao do Conhecimento
A representao do conhecimento em computador primordial para o desenvolvimento de programas que empregam tcnicas de IA. Considerando o estado da arte atual, as quantidades de conhecimento que conseguimos manipular em computador fica muito aqum daquela que o ser humano utiliza em seu cotidiano.

Representao do Conhecimento
Portanto a aplicao de tcnicas de IA demanda uma anlise criteriosa do esforo computacional requerido.

Conceitos Bsicos
Base de Conhecimento  repositrio de procedimentos, heursticas, dados etc. que compe o conhecimento; Necessita de manuteno constante (atualizaes, inseres, delees etc.) para manter-se eficaz:

Conceitos Bsicos
Mquina de Inferncia  a parte da base de conhecimento que abriga os mecanismos (algoritmos e heursticas) que processam a inferncia (processo pelo qual deduzimos novas informaes a partir das existentes na base de conhecimento)

Conceitos Bsicos
Engenheiro do Conhecimento  o profissional de cincia da computao responsvel pela implantao da base de conhecimento Especialista do Domnio  um profissional altamente capacitado para o qual est-se desenvolvendo a aplicao

Estrutura Geral
Base de Conhecimento

Interface Mquina de Inferncia

Fatos

Tipos de Representao do Conhecimento


Baseado em Regras  a representao do conhecimento se d atravs de estruturas denominadas regras de produo, estas compem-se de 2 partes:
 Premissas  Concluso

SE ENTO

Tipos de Representao do Conhecimento


Baseado em Hierarquias  a representao se d atravs de estruturas de dados organizadas hierarquicamente, descrevendo conceitos em diferentes nveis de detalhes (abstraes). A inferncia se processa atravs da busca e atualizao nestas estruturas

Tipos de Representao do Conhecimento


Orientado a procedimentos  o conhecimento estruturado num conjunto de sub-rotinas de vrios nveis de especificidade. A inferncia se processa atravs da evocao destes procedimentos numa ordem adequada

Tipos de Representao do Conhecimento


Orientado a objetos  o conhecimento encapsulado em estruturas autnomas (objetos) que se comunicam pelo envio de mensagens. A inferncia se processa atravs da interao entre objetos;

Tipos de Representao do Conhecimento


Baseado em lgica  estruturas inspiradas nos formalismos lgicos (axiomas, relaes, predicados etc.) armazenam o conhecimento. A inferncia se processa atravs de algoritmos que testam a veracidade ou no de asseres

Prolog

Prolog
uma linguagem de computao inventada em 1970 por Alain Colmerauer e seus colegas da Universit de Marseille, significa PROgramming LOGig (lgica programada) No havia muito interesse em Prolog at o momento em que os cientistas de computao japoneses lanaram seu projeto de quinta gerao, coma finalidade de desenvolver novos computadores com software que reinaria supremo na dcada de 90 e alm.

Para que serve o Prolog


Linguagens de computao especficas raramente so boas para todos os tipos de problemas: FORTRAN: utilizado principalmente por cientistas e matemticos para desenvolvimento de programas para tratar de problemas numericamente complicados; COBOL: utilizado principalmente no mundo dos negcios PROLOG: foi projetado para cuidar de problemas lgicos , isto , problemas para os quais uma deciso tem de ser tomada de uma forma ordenada. Prolog tenta fazer com que o computador raciocine ao encontro de uma soluo

Lgica
Prolog depende de manipulao lgica e no a nica! Linguagens que operam com lgica de proposio (ou lgica de predicados ou clculo proposicional), por exemplo: As seguintes declaraes so fatos: Pessoas com tnis para futebol jogam futebol. A pessoa #1 tem tnis para futebol. O que pode ser deduzido, determinado, calculado, computado e determinado desses fatos que a pessoa #1 joga futebol.

Prolog faz com que o computador cuide da parte dedutiva, visto que possui uma mquina de deduo interna que automaticamente percorre os fatos e constri ou testa concluses lgicas. O exemplo anterior parece trivial, mas se tivssemos um banco de dados tcnico, carregado com milhares de fatos e regras, no seria prtico passar esta lista para uma pessoa e solicitar uma resposta rpida.

Resoluo e unificao
Resoluo uma regra de deduo - permite ao computador dizer que proposies seguem de uma forma lgica de outras proposies. O software que emprega o princpio da resoluo opera com clusulas lgicas. Unificao o ato de combinar os lados direito e esquerdo das clusulas de uma forma lgica pela investigao dos valores variveis que permitem uma concordncia adequada, as bases tericas do Prolog esto descritas em Programing in Prolog, de W.F.Clocksin e C.S.Melish.

Linguagem procedural x declarativa


Prolog uma linguagem declarativa, isto , ela exige que sejam declaradas regras e fatos a respeito de determinados smbolos, para depois perguntar-lhe se uma determinada meta segue de uma forma lgica destas regras e fatos, a deduo destes fatos parte do prprio Prolog. Pascal, BASIC e outras linguagens de programao so linguagens procedurais, nestas alm de declarar fatos e regras necessrio utilizar a linguagem para informar ao compilador como procurar uma soluo, onde olhar, quando parar etc. Poucas linhas de uma linguagem declarativa podem fazer tanto trabalho como muitas linhas de uma linguagem procedural.

Objetos e relacionamentos
Prolog cuida de objetos e do relacionamento entre eles, sendo inclusive chamada de linguagem orientada a objetos. Um objeto no ser necessariamente algo tangvel, pode ser qualquer coisa que possamos representar simbolicamente no computador, exemplos de objetos e relacionamentos: Objetos Relacionamentos vaca animal bananeira vegetal ibmpc computador basalto mineral alface vegetal

Fatos
A primeira maneira de combinar um objeto e um relacionamento utilizando-os para definir um fato, a forma geral de definio de fatos em Prolog : relao (objeto) exemplo: mamfero(morcego) mineral(ferro) _um_vegetal(bananeira)

Prolog

Prolog
uma linguagem de computao inventada em 1970 por Alain Colmerauer e seus colegas da Universit de Marseille, significa PROgramming LOGig (lgica programada) No havia muito interesse em Prolog at o momento em que os cientistas de computao japoneses lanaram seu projeto de quinta gerao, coma finalidade de desenvolver novos computadores com software que reinaria supremo na dcada de 90 e alm.

Para que serve o Prolog?


Linguagens de computao especficas raramente so boas para todos os tipos de problemas: FORTRAN: utilizado principalmente por cientistas e matemticos para desenvolvimento de programas para tratar de problemas numericamente complicados; COBOL: utilizado principalmente no mundo dos negcios PROLOG: foi projetado para cuidar de problemas lgicos , isto , problemas para os quais uma deciso tem de ser tomada de uma forma ordenada. Prolog tenta fazer com que o computador raciocine ao encontro de uma soluo

Lgica
Prolog depende de manipulao lgica e no a nica! Linguagens que operam com lgica de proposio (ou lgica de predicados ou clculo proposicional), por exemplo: As seguintes declaraes so fatos: Pessoas com tnis para futebol jogam futebol. A pessoa #1 tem tnis para futebol. O que pode ser deduzido, determinado, calculado, computado e determinado desses fatos que a pessoa #1 joga futebol.

Prolog e a deduo
Prolog faz com que o computador cuide da parte dedutiva, visto que possui uma mquina de deduo interna que automaticamente percorre os fatos e constri ou testa concluses lgicas. O exemplo anterior parece trivial, mas se tivssemos um banco de dados tcnico, carregado com milhares de fatos e regras, no seria prtico passar esta lista para uma pessoa e solicitar uma resposta rpida.

Resoluo e unificao
Resoluo uma regra de deduo - permite ao computador dizer que proposies seguem de uma forma lgica de outras proposies. O software que emprega o princpio da resoluo opera com clusulas lgicas. Unificao o ato de combinar os lados direito e esquerdo das clusulas de uma forma lgica pela investigao dos valores variveis que permitem uma concordncia adequada, as bases tericas do Prolog esto descritas em Programing in Prolog, de W.F.Clocksin e C.S.Melish.

Linguagem procedural x declarativa


Prolog uma linguagem declarativa, isto , ela exige que sejam declaradas regras e fatos a respeito de determinados smbolos, para depois perguntar-lhe se uma determinada meta segue de uma forma lgica destas regras e fatos, a deduo destes fatos parte do prprio Prolog. Pascal, BASIC e outras linguagens de programao so linguagens procedurais, nestas alm de declarar fatos e regras necessrio utilizar a linguagem para informar ao compilador como procurar uma soluo, onde olhar, quando parar etc. Poucas linhas de uma linguagem declarativa podem fazer tanto trabalho como muitas linhas de uma linguagem procedural.

Objetos e relacionamentos
Prolog cuida de objetos e do relacionamento entre eles, sendo inclusive chamada de linguagem orientada a objetos. Um objeto no ser necessariamente algo tangvel, pode ser qualquer coisa que possamos representar simbolicamente no computador, exemplos de objetos e relacionamentos: Objetos Relacionamentos vaca animal bananeira vegetal ibmpc computador basalto mineral alface vegetal

Fatos
A primeira maneira de combinar um objeto e um relacionamento utilizando-os para definir um fato, a forma geral de definio de fatos em Prolog : relao (objeto) exemplo: mamfero(morcego) mineral(ferro) _um_vegetal(bananeira)

Utilizando o Turbo Prolog

Utilizando o Turbo Prolog


O ambiente do Turbo Prolog muito parecido com os ambientes do Turbo Pascal e Turbo C, sendo vlidos a maioria dos comandos de edio de programas, no ambiente de desenvolvimento existem 4 janelas principais: 1. Editor: onde so escritos os programas Prolog; 2. Dilogo: utilizada para interagir com os programas em Prolog (onde so feitas perguntas e obtidas respostas); 3. Mensagem: apresenta informaes sobre programas carregados, compilao erros etc.; e 4.Trace: para acompanhar a execuo do programa passo a passo.

Partes de um programa
A maioria dos programas Turbo Prolog ser organizada em quatro partes principais: 1. Clusulas: os fatos que voc constri a partir de seus objetivos e relacionamentos; 2. Predicados: so os relacionamentos; 3. Domnios: informa os tipos (como no Pascal) de coisa um argumento pode ser; e 4. Meta: informa o que se quer descobrir ou o que queremos que o computador faa com as informaes fornecidas nas trs sees anteriores.

Primeiro exemplo de programa


Disparar o Turbo Prolog, ir at o editor e digitar a primeira linha: /* Exemplo 1 - animal, vegetal ou computador */ domains coisa = symbol predicates animal (coisa) vegetal (coisa) goal clauses animal (vaca). animal (morcego).

Gravando e compilando
Utilize o menu para gravar o programa, teclar F e depois write to: EX1.pro para guarda-lo num local apropriado. Tecle C para compilar e, caso no encontre nenhum erro, tecle R para rodar o programa. Na janela Dialog aparecer a palavra Goal:_ Ento voc poder fazer uma pergunta ao Turbo Prolog, por exemplo: Um morcego um animal? , utilizando o comando: animal(morcego) e ver a resposta Yes .

Variveis
Caso conhea o relacionamento mas no o objeto, pode-se utilizar variveis. Qualquer palavra-objeto que inicie com letra maiscula considerada, uma varivel. A maneira mais rpida de ver o que uma varivel pode fazer interrogando o programa. Tente animal(X) como uma meta, e veja o resultado. Turbo Prolog toma a meta com a varivel e a compara s clusulas. Primeiro verifica se o predicado o mesmo da primeira clusula. Se , ento testa para ver se a meta e o predicado tm o mesmo nmero de argumentos.

Varivel annima ou vazia


A varivel annima utilizada nos mesmos moldes das variveis-padro, mas nunca inicializada com um valor padro e representada por um travesso _ , exemplo:


ve(claudia,_)

e que significaria, verificar se claudia ve algum. Nesse caso Prolog apenas procura um fato que tem o predicado ve , dois argumentos ( claudia como primeiro e qualquer coisa como segundo argumento) e s devolver yes pois ele no precisa saber mais, caso tente a meta:


ve(_,_)

ser possvel saber se algum observa algum

Um programa mais complexo

Aridade
o nmero de argumentos que aquele predicado tem, exemplo:
  

filho(tiago) aridade 1 pai(joao,maria) aridade 2 bebe(jose,pinga,guaran) aridade 3

Metas compostas - o operador and


Caso seja proposta a meta: ve(joao,maria) and ve(pedro,ana) estar se perguntando: verdade pelas clusulas que Joo ve Maria e Pedro ve Ana?
esta meta ser considerada verdadeira apenas se as duas metas individuais forem verdadeiras a meta composta acima poder tambm utilizar uma vrgula , no lugar do and assim esta poderia ser escrita como:
ve(joao,maria),ve(pedro,ana)

Metas compostas - o operador or


Metas compostas que utilizam o operador or so tambm chamadas conjunes . Da mesma forma que uma vrgula , pode substituir o operador and , um ponto e vrgula ; pode substituir o operador or , exemplo:  ve(joao,maria) or ve(joao,pedro) A outra meta individual poder ser verdadeira ou falsa que no afetar a verdade da meta composta.  ve(joao,maria);ve(joao,pedro)

21/08

O operador - not
Utilizado para garantir a no existncia de uma clusula, por exemplo: acrescentar ao programa a regra:


feliz(joao) if not (ve(joao,maria)) feliz(alexandre) if ve(maria,alexandre)

depois a clausula:


Regras
Na seo clauses tambm pode-se colocar regras. Uma regra tpica diz que alguma coisa verdadeira (uma meta ser bem sucedida) se algumas outras coisas so verdadeiras. Pode-se utilizar tanto o operador if quanto o sinal :- para representar uma regra, exemplo:
   

feliz(paulo) if ve(paula,paulo) que significa: Paulo est feliz se ele estiver sendo observado por Paula triste(Alguem) :- ve(tiago,Alguem) que significa: Alguem est triste se estiver sendo observado por Tiago

Exemplo de regra

Retrocesso (backtraking)
Sempre que uma submeta tem de ser satisfeita, Prolog retrocede pelo banco de dados, sempre procurando de cima para baixo e da esquerda para a direita, para encontrar uma concordncia. O retrocesso poder, facilmente, ficar complexo quando as regras e as metas forem complexas. A partir do goal:feliz(paulo) , Prolog sai procurando pelos fatos e encontra o fato ve(paula,paulo). Aplica a submeta quele fato e volta regra feliz(paulo) if ve(paula,paulo) , onde sabe que o lado esquerdo da regra, feliz paulo , pode ser utilizado para concordar com a meta original, porque o lado direito da regra era yes (verdadeiro).

Instanciamento e ligao
Ao tentar a meta: feliz(Quem) obteremos a resposta paulo depois de uma pesquisa muito parecida. A nica diferena que a varivel Quem tem de sofrer instanciamento para paulo . Prolog vai encontrar o predicado feliz , verificar a aridade, fazer o instanciamento da varivel Quem constante paulo , recolocar a meta do lado direito da regra, combinar a nova meta e voltar regra. Depois vai colocar o lado esquerdo da regra em yes , aplicar o lado esquerdo meta, informar que a meta foi bem sucedida, e mostrar o valor ligado da varivel.

Exemplo de instanciamento

Acompanhamento - tracing
Pode-se acompanhar o progresso passo a passo de um programa, utilizando o comando trace acima da linha domains A seguir disparar o programa com alt + r Tentar a meta feliz(Quem) Continuar a execuo pressionando a tecla F10

Exemplo de tracing

Entrada de dados
O Turbo Prolog fornece ao programador os seguintes predicados para a entrada e sada de dados: WRITE: usado para escrever uma mensagem no dispositivo padro de sada, geralmente a janela de dilogo. O argumento do write pode ser tanto uma varivel como um objeto (smbolo, inteiro, string, etc.). Exemplo:
 

write(Que dia lindo!!!). write(Nome).

Sada de dados
READLN: usado para ler uma string ou um smbolo do dispositivo padro de entrada e guard-lo em uma varivel. O Turbo Prolog possui vrios predicados de leitura, um para cada tipo de objeto a ser lido os mais usados so: READINT: para a leitura de um nmero inteiro. READCHAR: para a leitura de um caracter. READREAL: le de um nmero em ponto flutuante. Exemplo:
 

readln (Nome). readint (Dia).

Exemplo

Grficos
Prolog possui dois mtodos para manipulao de grficos:  Predicados de ponto e linha, que permitem traar linhas e pontos em qualquer uma das cores oferecidas pelo PC;  Grficos da tartaruga, que permite utilizar predicados que movimentam uma tartaruga imaginria na tela.

Grficos de linhas e pontos


So os seguintes os predicados padro para a construo de grficos de linhas e pontos na tela:
graphics(ModeParam,Palette,BackGround) text dot(Row,Column,Color) line(Row 1,Col 1, Row 2, Col 2, Color)

Modos grficos

Modos grficos

Exemplo

Grficos tartaruga
A idia de uma tartaruga para a gerao de grficos representa os fundamentos da linguagem de computao Logo e foi adotada por vrias outras linguagens. A tartaruga um rob imaginrio para traados na tela. Ele pega suas instrues do programa na forma de predicados. Os predicados lhe informam se deve se movimentar para frente (forward) ou para trs (back), virar esquerda (left) ou direita (right), pressionar uma pena contra a tela (pendown) (como se a tela fosse papel de desenho) ou levantar a pena (penup), e finalmente, escolhe a cor da pena a utilizar (pencolor).

Exemplo - tartaruga

Sons
Existem 2 predicados:


beep, emite um rpido parecido com o som de tecla errada sound(durao,frequencia), permite tocar notas musicais. Durao e frequncia so nmeros inteiros, sendo que durao dado em centsimos de segundo e frequencia interpretado como Hz (ciclos por segundo) podendo ir de 41 at 17500 Hz.

Exemplo

Janelas
Turbo Prolog contm predicados que permitem ao usurio formar suas prprias janelas para entrada e sada de programas. Predicados da janela padro: makewindow(WindowNo,ScrAtt,FrameAtt,Header,Row,Col ,Height,Width), onde:
WindowNo: int, nmero de identificao da janela; ScrAtt: int, determina o tipo de janela (em termos de cores); FrameAtt: int, determina a existncia e estilo para a moldura da janela; Header: string, nome dajanela; Row: int,0 a 25, nmero de linha da janela; Col: int, 0 a 80, nmero de coluna da janela; Height: int, nmero de linhas da janela; e Width: int, nmero de colunas da janela.

Janelas - atributos
window_attr(Attr): altera o estilo da tela ou a cor da janela aberta, sem retroceder ao predicado makewindow; removewindow: remove a janela ativa da tela; shiftwindow(WindowNo): permite trocar entre mltiplas janelas que podem estar na tela; e clearwindow: retira todos os caracteres da janela.

Cursores - atributos
cursor(row,Column): determina as posies atuais do cursor na janela ativa ou na tela; cursorform(Starline,Endline): na rea de um caractere, se estabelce a posio do cursor X-Y; Cada caractere ocupa 14 linhas de varredura da tela ento Starline e Endline devem estar ligados a valores enre 1 e 14 (inclusive); window_str(ScreenString): escreve o valor de ScreenString na janela ativa

Exemplo

LISP List Processing

Lisp - Introduo
A linguagem Lisp j existe h mais de 30 anos, seu principal uso tem sido para escrever programas na res de IA. Os crticos de Lisp tambm a denominam Lista Interminvel de eStpidos Parnteses.

Tipos de Dados
Em Lisp existem somente dois blocos constituintes:  tomo: que possui ainda dois tipos: numrico e no numrico; e  Lista, ou par interno.

tomo
Numrico: que corresponde ao valor numrico em Pascal e um nmero qualquer, por exemplo: 15 666 +3.2 No numrico: correspondem s variveis em Pascal, para reconhecer um tomo no numrico basta utilizar a regra:


eles devem comear por letras e somente possurem letras ou nmeros

Exemplos: istoeumatomo, istoeumatomotambem tomo isto e um atomo p 1 atomo isto e um atomo p 4 atomos +22opa p +22 tomo numrico

p1

Resumo
Um nmero deve comear com um algarismo (ou sinal seguido de algarismo), sendo usualmente terminado por espao ou um parntese. Um tomo no numrico pode comear com um no algarismo (letra) podendo ser seguindo de letras ou nmeros.

Lista
Tambm chamada par interno simplesmente um parntese esquerdo, uma sequncia de tomos ou de outras listas e um parntese direito, exemplo: (+15 A -3) uma lista composta por 3 tomos: o nmero 15, o tomo A e o nmero negativo -3. parecido com o array de 3 elementos do Pascal, sendo que este no necessitamos declarar explicitamente e o contedo dos seus elementos pode ser diferente, exemplos: (+15 (A) -3) nesta lista: 15 o primeiro elemento -3 o ltimo elemento (A) outra lista

Funes bsicas
CAR
uma funo do Lisp, que retorna o primeiro elemento de uma lista, exemplo: Seja (+15 A -3) ento (CAR (+15 A -3)) devolve: +15 (CAR ((A) 5 D)) p (A) (CAR ((A (B (C)) (D) 5)) p (A B(C))

Funes bsicas
CDR
uma funo do Lisp que devolve o corpo da lista menos seu primeiro elemento, exemplo: (CDR (5 (B) C)) p ((B) C) (CDR ((A) 5 D)) p (5 D) (CDR (((A B (C)) (D) %)) p ((D) 5)

Nem CDR nem CAR destroem ou alteram nada nas listas as quais forem aplicadas.

Funes bsicas
CONS
uma abreviao de CONStruo, e usada para construir pares internos como elementos de listas (e, portanto, construir listas), exemplo: (CONS A NIL) o que mostra na tela a lista (A) (CONS B (A)) p (B A) (CONS B (CONS A NIL) p (B A)

Estruturas complexas
Vetores
Representar o vetor: ( 1 2 3 4 5 ) p (CONS (1 2 3 4 5) NIL) pedindo (CAR (1 2 3 4 5) p 1 como conseguir o primeiro elemento? pedir (CAR (CDR (1 2 3 4 5) ) ) p 2 e o terceiro? Pedir (CAR (CDR (CDR (1 2 3 4 5) ) ) ) p 3

Estruturas complexas
1 2 3 4 A= 5 6 7 8 9 10 11 12 Solicitando: (CAR ((1 2 3 4) (5 6 7 8) (9 10 11 12)) NIL) vem (1 2 3 4) (5 6 7 8) (9 10 11 12) Para saber a11: (CAR (CAR ((1 2 3 4) (5 6 7 8) (9 10 11 12)) )) p 1 Para saber a12: (CAR (CDR (CAR ((1 2 3 4) (5 6 7 8) (9 10 11 12)) ) p 2 Para saber a21: (CAR (CAR (CDR ((1 2 3 4) (5 6 7 8) (9 10 11 12)) ) p 5

Matrizes

Estruturas complexas
Registros
Seja: (CONS (ALEX 18 4 59) NIL) Para a impresso do nome: (CAR (ALEX(18 4 59))) p ALEX Para imprimir a data completa: (CAR (CDR (ALEX (18 4 59) )) ) p 18 4 59 e o ms? e o ano?

Variveis
Lisp usa a notao polonesa ou do tipo prefixo, onde a operao a ser executada colocada antes de seus operandos, exemplo: (= X 1) SQR(5) (* 3 (SQR 9))

Operadores
Pode ser que o exemplo anterior no funcione pois nem sempre Lisp utiliza * , + , - , / e = para as operaes normais e sim TIMES, PLUS, DIFFERENCE, QUOTIENT E SETQ, exemplos: (* 3 5) ou (TIMES 3 5) (+ 2 3) ou (PLUS 2 3) (- 2 3 4) ou (DIFFERENCE 2 3 4) resposta -1 (talvez!) Para fazer: x = 1 p (SETQ X 1) X = 3 * (5 + 6) p (SETQ X (TIMES 3 (PLUS 5 6) )) Y = X - 5 p (SETQ Y (DIFFERENCE X 5))

Entrada e sada
Entrada de dados: Em Pascal read (A,B); em Lisp (PLUS (READ) (READ)) write(A+B); Sada de dados: Em Pascal X:= 33; em Lisp (SETQ X 33) write (X); (PRINT X) Exerccio: Testar o comando: (PLUS (PRINT(READ)) (PRINT (READ)) )

Programas
Um programa em Lisp, consiste em uma ou mais funes, chamadas em sequencia. Assim como o Pascal, o Lisp aguarda uma srie de declaraes definindo uma funo, entretanto diferentes verses de Lisp possuem mtodos diferentes de definir as funes.

Funes e parmetros
Em Lisp definir uma funo significa estabelecer 3 coisas:
o nome da funo; os parmetros; e um conjunto de instrues que so executadas quando a funo chamada.

Algumas verses de Lisp utilizam para definir uma funo a palavra reservada DEFUN, outras verses DEF ou ainda DE.

Definio com parmetros


Pascal Function F42 (x,y:integer):integer; begin F42:= x * (y + 3); end;

Lisp (DEFUN F42 (x y )

(times x (plus y 3 )) )

Definio sem parmetros


Pascal Function 43: integer; var i,j: integer; begin read (i,j); F43:= i+j; end;

Lisp (DEFUN F43 NIL (plus (read) (read)) )

Chamando funes em Lisp


Tendo definido as funes, como chama-las? Simplesmente:  para a funo com parmetro: (F42 3 5)  para a funo sem parmetro: (F43)

Funes com variveis locais


As funes vistas anteriormente so muito simples, com cada funo consistindo em apenas uma declarao, entretanto muitas funes precisam ser formadas por vrias declaraes, e no apenas uma. Em Lisp o valor devolvido pela funo o valor da ltima declarao, entretanto pode-se retornar qualquer valor interno.

Exemplo
Pascal Function F44: integer; var i,j: integer; begin read (i,j); write (j-i); F44:= j-i; end;

Lisp (DEFUN F44 ((i) (j)) (setq i (read)) (setq j (read)) (print (difference j i )) )

Exemplo
Outra forma de declarar variveis locais (adotada por Supersoft Lisp): o operador prog define as variveis locais e sua forma geral : (prog <lista de variveis locais> <s1> <s2> ...<sn>) onde si so declaraes executadas em sequencia.

(DEFUN F45 NIL (prog (I J) (setq I (read)) (setq J (read)) (print (difference J I)) ) )

Retornando valores de funes


Deve-se utilizar a declarao return para devolver o resultado (DEFUN F46 NIL (prog (I J) (setq I (read)) (setq J (read)) (return (print (- J I ))) ) )

Obtendo um elemento de vetor


Primeiro Segundo elemento: elemento: (Second (1 2 3 4 5)) (First (1 2 3 4 5)) (DEFUN Second (x) (DEFUN First (x) (Prog (T1) car(x) Ou (setq T1 (cdr x)) tambm: ) (DEFUN Second (x) (return (car T1)) (cdr x)) (car ) )

Obtendo um elemento de vetor


3. Terceiro elemento: (DEFUN Third (x) (car (cdr (cdr x ))) )

Obtendo elementos de matrizes


Pode-se utilizar as funes descritas anteriormente em matrizes, por exemplo: Primeira fila da matriz: (First ((1 2 3 4) (5 6 7 8) ( 9 10 11 12) )) Segunda fila da matriz: (Second ((1 2 3 4) (5 6 7 8) (9 10 11 12) )) Primeiro elemento da segunda fila: (First (Second ((1 2 3 4) (5 6 7 8) (9 10 11 12) ))

Seleo de campos de registros


Foram vistos anteriormente alguns exemplos de registros do tipo (Benedita (22 03 75)), podemos escrever as seguintes funes: 1. Seleciona o campo nome do registro: (DEFUN nome (rec) (First rec) ) 2. Seleciona a data do registro: (DEFUN data (rec) (Second rec) )

Seleo de campos do registro


3. Seleciona o dia: (DEFUN dia (rec) (First (data rec)) )

4. Seleciona o ms (DEFUN mes (rec) (Second (data rec)) )

5. Seleciona o ano?

Criando novos registros


A funo list pega todos os seus argumentos e os insere numa lista, exemplo: (list A B C) forma como valor a lista: (A B C) e a declarao: (list (First (1 2 3 4)) (Third (1 2 3 4))) ter como seu valor a lista (1 3)

O comando list
List s vezes mais conveniente que cons para construir listas, por exemplo: (DEFUN novoreg (nome dia mes ano) (list nome (list dia mes ano)) ) assim fazendo: (setq rec1 (novoreg Smith 6 8 79)) temos: (Smith (6 8 79)) e para imprimir o ms: (ms rec1)

Estruturas de comparao
(defun Menor nil (setq x (read)) (setq y (read)) (cond ( (< x y) (print "o primeiro e menor") ) (T (print "o segundo e menor") ) ) ) Essa funo verifica qual o menor de dois nmeros digitados pelo teclado imprimindo na tela qual o menor digitado

Criando um menu
(defun menu nil (print "1.Soma") (print "2.Subtracao") (print "3.Multiplicacao") (print "4.Divisao") (print "Escolha sua opo ") (setq op (read)) (cond ( (= op 1) (print "Soma de dois numeros") ) ) (cond ( (= op 2) (print "Subtracao de dois numeros") )) )

Sistemas Especialistas

Sistemas Especialistas
Sistemas especialistas, uma aplicao da inteligncia artificial, so programas de computador planejados para adquirir e disponibilizar o conhecimento operacional de um especialista humano. So tradicionalmente vistos como sistemas de suporte deciso, pois so capazes de tomar decises como especialistas em diversas reas.

IV. Sistemas Especialistas


Sua estrutura reflete a maneira como o especialista humano arranja e faz inferncia sobre o seu conhecimento.

Estrutura de um Sist. Especialista


Um modelo bsico da arquitetura dos sistemas especialistas pode ser apresentado com trs componentes bsicos: a base de conhecimento, a mquina de inferncia, e a interface com o usurio.

A Base de Conhecimento
A marca principal de um sistema especialista o uso do conhecimento especfico de seu domnio de aplicao atravs de um programa de raciocnio relativamente simples. Neste sentido utiliza-se o termo base de conhecimento para representar a coleo de conhecimento do domnio, ou seja, as informaes do especialista, necessrias para resolver problemas de

A Base de Conhecimento
Portanto, este conhecimento precisa ser organizado de uma maneira adequada para que a mquina de inferncia consiga trata-lo convenientemente.

Fatos e Heursticas
O conhecimento em um sistema especialista consiste de fatos e heursticas. Os fatos constituem as informaes que estaro sempre disponveis para serem compartilhadas e atualizadas pelo especialista do domnio.

Fatos e Heursticas
As heursticas so regras prticas que caracterizam o nvel de tomada de deciso do especialista em um domnio. Portanto, uma base de conhecimento pode ser vista como um conjunto de regras, cada qual podendo ser validada independentemente de estrutura de controle.

Problemas
Um dos problemas mais srios, e ao mesmo tempo muito comum, encontrado na implementao de sistemas especialistas, que usualmente parece impossvel fornecer um conhecimento completo sobre o qual o sistema vai operar. Portanto , o nvel de desempenho de um sistema especialista est relacionado ao tamanho e a qualidade de sua base de

A Mquina de Inferncia
Tenta imitar os tipos de pensamento que o especialista humano emprega quando resolve um problema, ou seja, ele pode comear com uma concluso e procurar uma evidncia que a comprove, ou p ode iniciar com uma evidncia para chegar a uma concluso. Em sistemas especialistas, estes dois mtodos so chamados de backward chaining e forward chaining respectivamente.

A Mquina de Inferncia
Nem todos os sistemas utilizam a mesma abordagem para a representao do seu conhecimento, portanto, a mquina de inferncia deve ser projetada para trabalhar com a representao de conhecimento especfica utilizada.

Interface com o Usurio


A interface com o usurio visa facilitar a comunicao entre o sistema especialista e o usurio. Permite a interao com o sistema atravs da entrada de fatos e dados e atravs da sada em forma de perguntas , concluses e explicaes.

Interface com o Usurio


Muitos princpios baseados nas teorias cognitivas tm sido propostos para projetos de interface, como resultado de pesquisas na rea de interao homem-mquina. Uma das consideraes principais no projeto de qual quer interface homem-mquina deve ser a facilidade de uso, reduzindo ao mximo a carga cognitiva sobre o usurio.

Consideraes Sobre SE
Nos tempos atuais, as organizaes tm no conhecimento acumulado de seu quadro de pessoal, um patrimnio muito importante para seus empreendimentos futuros e para sua prpria sobrevivncia face s constantes concorrncias de mercado. Processos como downsizing , reengenharia e aposentadorias prematuras tm sido utilizados constantemente pelas grandes instituies, comprometendo a memria institucional da empresa

Evaso de pessoal
Funcionrios experientes aposentam-se ou deixam as organizaes, resultando em uma perda incalculvel. O conhecimento de vrios anos de experincia e treinamentos destes indivduos sero perdidos, a menos que haja uma maneira de captar e preservar estas experincias dentro da empresa.

Evaso de pessoal
A tecnologia dos sistemas especialistas ideal para atingir estes propsitos. Os processos e experincias funcionais da organizao podem ser documentados atravs do uso de sistemas especialistas. A tecnologia do conhecimento poder ser utilizada para capitalizar o conhecimento como um produto estratgico para as corporaes.

Desenvolvendo um SE
Utilizao da linguagem OPS5

Passo 1 - Especificar o Sistema


Uma empresa que desenvolve cafeteiras eltricas deseja, embarcar em suas mquinas um Sistema Especialista para auxiliar os clientes usurios de seu produto, na preparao do caf, para tanto levar em considerao as seguintes informaes: 1. Fora eltrica (ligada, desligada) 2. Nvel de gua no reservatrio (repor, bom, demais)

Passo 1 - Especificar o Sistema


3. Nvel de p de caf no reservatrio (repor, bom, demais) 4. Nvel de gros de caf para a moenda (repor, bom, demais) 5. Quantidade de acar no reservatrio (repor, bom, demais) 6. Temperatura da gua (fria, quente, vapor)

Passo 1 - Especificar o Sistema


7. Tipo de caf desejado (amargo, meio a meio, forte) 8. Quantidade de caf desejado (1 copinho, 2 copinhos ou 1 copo grande)

Passo 2 - Contextualizar
Sero definidos 3 contextos de funcionamento do Sistema Especialista: 1. Hibernao, onde so avaliadas as condies de energia para a operao da cafeteira; 2. Pr-Preparo, onde usurio informa a quantidade de caf desejado e avaliada se a cafeteira possui ingredientes em quantidade suficiente; e

Passo 2 - Contextualizar
3. Preparo, onde a cafeteira efetivamente produz o caf e o fornece ao usurio.

Passo 3 - Definir as Classes


Exemplo de classes: Contexto: define o estado e fase de operao da cafeteira (hibernao, prepreparo, preparo) Ingrediente: define se a quantidade de material para a produo do caf est OK! (gua, caf e acar) Dose: define a quantidade de caf exigido pelo usurio (1 ou 2 copinhos ou 1 copo grande)

Passo 4 - Definir os Atributos


Para cada classe definir os atributos a serem utilizados na base de conhecimento, por exemplo:
; EXEMPLO CAFE ;INGREDIENTES: GUA,CAF,ACAR ;EQUIPAMENTOS: CAFETEIRA ;DOSE: 1 OU 2 COPINHOS OU 1 COPO GRANDE (literalize CONTEXTO FASE ESTADO) (literalize INGREDIENTE AGUA CAFE ACUCAR) (literalize EQUIPAMENTO CAFETEIRA) (literalize DOSE COPO)

Passo 5 - Definir as Regras


Procurar ser o mais sistemtico (lgico) possvel. Exemplos de regras:
; No estado de hibernacao, verifica se a cafeteira no esta energizada (p cafe01 (CONTEXTO ^FASE HIBERNACAO ^ESTADO OK) (EQUIPAMENTO ^CAFETEIRA OFF ) --> (make CONTEXTO ^FASE PREPREPARO ^ESTADO OFF) ) ; No estado de hibernacao, verifica se a cafeteira esta energizada ; caso positivo a habilita para a proxima fase (p cafe02 (CONTEXTO ^FASE HIBERNACAO ^ESTADO OK) (EQUIPAMENTO ^CAFETEIRA ON ) --> (write |OK! POSSO FAZER O CAFE! | (crlf)) (make CONTEXTO ^FASE PREPREPARO ^ESTADO OK) )

Passo 6 - Testar as Regras


Utilizar as premissas das regras acrescidas do comando make, colocando-as na memria de trabalho, por exemplo: ; MEMORIA DE TRABALHO (make CONTEXTO ^FASE HIBERNACAO ^ESTADO OK) (make EQUIPAMENTO ^CAFETEIRA ON) (make DOSE ^COPO 1) (make INGREDIENTE ^AGUA OK ^CAFE OK ^ACUCAR OK) ; COMANDOS DE GERENCIAMENTO DO PROGRAMA (wm) ; mostra o conteudo da memoria de trabalho (watch 1) ; mostra quais premissas foram satisfeitas (run) ; roda o programa

Passo 7 - Implantao
Entregar para o usurio realizar testes beta Acompanhar os testes FIM!

OPS5 - Ciclo de execuo


O ciclo de execuo de um sistema de regras de produes consiste, normalmente, de trs fases: 1. Casamento ( matching ): para todas as produes, seus lados esquerdos so comparados aos dados armazenados (fatos, conjecturas e objetivos) para determinao se o lado esquerdo satisfeito por um conjunto de dados (um lado esquerdo pode ser satisfeito por vrios conjuntos de dados e um mesmo conjunto de dados pode satisfazer vrios lados esquerdos); 2. Resoluo de conflito: escolhe-se uma instncia , ou seja, uma produo e um conjunto de dados que a satisfaa; se no houver uma produo nessas condies, o ciclo pra; 3. disparo ( firing ): as aes do lado direito da produo escolhida so executadas para os dados da instncia.

Ciclo de execuo
A caracterstica mais importante da linguagem OPS5 a eficincia de execuo, conseguida atravs do uso do algoritmo Rete (Forgy 1983). A cada ciclo, os dados armazenados que compem a memria de trabalho so alterados muito pouco. O algoritmo Rete deriva sua eficincia por no casar todos os dados a cada ciclo (s os elementos alterados so recomputados) e por compartilhar testes iguais mesmo entre regras diferentes.

Resoluo de conflito
Um conjunto de regras para a ordenao do conjunto de conflito chamado de estratgia de resoluo de conflito. OPS5 prov duas regras: a LEX e a MEA. Alem disto, uma instncia que disparou num ciclo retirada do conjunto de conflito para que no dispare de novo. Este mecanismo chamado de refrao. Os princpios gerais destas estratgias so: 1. As estratgias do preferncia a dados mais recentemente introduzidos ou modificados, ou seja, com marcas-de-tempo maiores. 2. Se duas instncias tm os mesmos elementos, dada preferncia produo com mais testes, isto , produo mais especfica.

Estratgia LEX
A regra LEX ordena as instncias de acordo com os critrios seguintes: 1. Entre duas regras, dada preferncia quela que tenha elemento mais recente; 2. Se houver empate no dado mais recente, examina-se o dado seguinte quanto antiguidade, dando preferncia ao mais recente; 3. Aps o critrio (2), a preferncia decidida pelo nmero de testes necessrios para casar uma regra, contadas em todas as condies: a regra com mais testes preferida. 4. Se o empate continuar, uma instncia qualquer escolhida.

Estratgia MEA
A regra MEA ordena as instncias de acordo com os critrios seguintes: 1. Entre duas regras, dada preferncia quela que tenha elemento que casa a primeira condio mais recente; 2. Se houver empate no dado mais recente, examina-se os elementos que casam as demais condio; d-se preferncia instncia que possuir um dado mais recente. 3. Se persistir empate no dado mais recente, examina-se o dado seguinte quanto antiguidade, dando preferncia ao mais recente. 4. Aps o critrio (3), a preferncia decidida pelo nmero de testes necessrios para casar uma regra, contadas em todas as condies: a regra com mais testes preferida. 5. Se o empate continuar, uma instncia qualquer escolhida.

OPS5

Arquivo de inicializao

A ferramenta OPS5 fornece vrios modos de utilizao, que devem ser utilizados de acordo com a necessidade do projeto, por exemplo: 1. Interpretador de comandos, utilizado durante o aprendizado da ferramenta e tambm na fase de testes de regras. 2. Linha de comando, utilizado durante a fase de desenvolvimento e implantao do sistema especialista. 3. Arquivo de inicializao, utilizado na fase de implantao do sistema e entrega do produto. 4. Embarcado dentro de um aplicativo em linguagem C++, utilizado na fase de implantao do sistema e entrega do produto.

Modos de execuo
1. Interpretador de comandos, nesse caso usamos os comandos do OPS5 interativamente a partir do prompt de comando da ferramenta: ops5: (load teste.ops) os comandos so executados linha a linha pelo projetista. 2. Linha de comando, neste modo executamos o OPS5 a partir da tela do sistema operacional, a partir do comando: ops5 teste.ops sendo que todos os comandos necessrios para o funcionamento da mquina de inferncia devero estar colocados no arquivo teste.ops logo apos a descrio de todas as regras da base de conhecimento. Nesse caso os comandos para a maquina de inferencia sero executados um a um at o seu trmino

Modos de execuo
3. Arquivo de inicializao, muitas vezes interessante que o usurio a quem se destina uma dada aplicao no interaja diretamente com o interpretador OPS5. Por exemplo, para se executar um programa preciso carreg-lo, fornecer dados iniciais para a memria de trabalho e executar o comando run. Para deixar o interpretador, preciso, tambm, fornecer o comando exit. Para que estas aes sejam feitas automaticamente, estes comandos podem ser colocados num arquivo especial e chamado na linha de comando que ativa o interpretador. Por exemplo, se a linha de comando for: ops5 teste.ini

Modos de execuo
e se nesse caso teste.ini contiver os comandos: (strategy mea) (load teste.ops) (make testcase ^type general ^name start) (run) (exit) ento a estratgia trocada para mea, o programa ( teste.ops ) carregado, um elemento de memria criado, o programa executado e deixado o interpretador sem que o programador precise interagir com o OPS5. 4. Embarcado, esse modo no ser estudado nesse curso, maiores informaes podem ser obtidas no manual da ferramenta.

Integrando com VB
Para fazer o OPS5 funcionar em conjunto com o MSVisualBasic, utilizamos Trs artifcios: 1. Utilizamos a interface grfica para criar um arquivo de inicializao do OPS5, por exemplo, o arquivo teste.in, contendo todos os comandos necessrios para a execuo dos comandos da mquina de inferncia, como representado a seguir: 'Escreve os dados no arquivo Call mTxtStream.WriteLine("(load c:\vbops5\selec.ops)") Call mTxtStream.WriteLine("(strategy lex)") Call mTxtStream.WriteLine("(make ingrediente ^nome " & Nome.Text & " ^nivel " & nivel.Text & ")") Call mTxtStream.WriteLine("(run)") Call mTxtStream.WriteLine("(exit)")

Integrando com VB
2. Utilizamos um arquivo em lotes, por exemplo, teste.bat contendo comandos para garantir a execuo do arquivo de inicializao do OPS5, ou seja, o comando: ops5 teste.ini 3. Utilizamos o comando Shell de execuo de programas externos do MSVisual Basic, como apresentado a seguir: 'Executa o programa DOS Shell ("c:\vbops5\selec.bat") Para que o comando Shell funcione corretamente preciso: 1. Escolher a opo Project da barra de menu 2. Marcar a checkbox Microsoft scripting runtime na janela References

Temas para Trabalho Individual


Cada tema dever ser escolhido por dois alunos, que devero desenvolver o trabalho em conjunto

Tema 1 Uma grande rede de supermercados deseja automatizar o processo de ensacar as compras dos clientes, para tanto deseja desenvolver um SE, que dever seguir os seguintes passos: 1. Verifique o que o fregus selecionou, dando uma olhadela nas mercadorias para ver se alguma coisa pode estar faltando, tendo em vista sugerir acrscimos ao fregs; 2. Ensaque os itens grandes, com especial ateno ao colocar os volumes grandes primeiro; 3. Ensaque os itens mdios, tomando o cuidado de colocar os congelados em sacos anti-descongelantes; e 4. Ensaque os itens pequenos por ltimo, colocando-os em qualquer lugar onde haja espao.

Exemplo de regra
Passo: Verificar a nota Saco 1: No ensacado: Po, suco de frutas, massa, sorvete, batata frita Informaes acerca do tamanho e outras propriedades dos vrios itens:
Item Tipo de embalagem Po Saco plstico Suco de frutas Vidro Massa Caixa de papelo Sorvete Caixa de papelo Refrigerante Garrafa Batata frita Saco plstico Tamanho mdio pequeno grande Mdio Grande Mdio Congelado no no no sim no no

Tema 2 Uma empresa deseja desenvolver um SE para configurar computadores e com ele ajudar seus clientes na escolha da melhor configurao. Quando uma empresa compra um computador, ela compra uma UCP, memria, terminal de vdeo, unidades de disco, unidades de fita, vrios controladores perifricos etc. de acordo com a utilizao futura do computador (provedor web, servidor de rede local, servidor de banco de dados, estao de trabalho CAD, estao de trabalho para clculos matemticos. Para tanto o SE dever seguir os seguintes passos: 1. Verifique o tipo de tarefa para o computador 2. Escolha o tipo de microprocessador 3. Especifique a placa me e os componentes de memria de massa e voltil 4. Especifique os perifricos necessrios 5. Monte os componentes 6. Teste o computador e verifique a comunicao com os perifricos

Tema 3Um zoolgico, ao invs de utilizar de placas em frente as jaulas, deseja desenvolver um SE especialista para, a partir de respostas dos visitantes ajuda-los a identificar os animais. Para tanto dever efetuar perguntas com respeito a aparncia dos animais e inferir caractersticas especficas para cada um, por exemplo: regra ID1 Se o animal tem plos ID2 Se o animal tem penas Ento um mamfero Ento um pssaro ID3 Se o animal mamfero ID3 Se o animal tem escamas tem caninos vive rastejando tem garras Ento uma serpente olha para frente Ento carnvoro

Tema 4 Um clube de futebol deseja desenvolver um SE de modo a inovar no processo de seleo dos futuros jogadores. Este SE dever selecionar os candidatos para cada posio de acordo com sua aptido fsica e mental, os seguintes itens devero ser avaliandos: 1. Altura e peso do candidato 2. Sade fsica do candidato 3. Habilidade com a bola dos ps 4. Habilidade com a bola nas mos 5. Mdia geral das notas escolares

Tema 5Uma grande montadora deseja desenvolver um SE para analisar os defeitos em seus veculos e informar aos proprietrios, para tanto sero avaliados: 1. Temperatura da gua 2. Nvel de leo do motor 3. Nvel de leo do cmbio 4. Nvel do tanque de combustvel 5. Percentual de carga da bateria 6. Presso de calibragem dos pneus 7. Fluxo de combustvel para o motor 8. Presso dos amortecedores 9. Carga do alternador

Tema 6 Uma empresa de segurana deseja desenvolver um SE para embarcar no sistema de monitorao ambiental que ela produz, para tanto o sero monitorados os seguintes itens: 1. Temperatura ambiente 2. Abertura/fechamento de janelas 3. Abertura/fechamento de portas 4. Ocorrncia de fumaa no ambiente 5. Humidade do ar no ambiente 6. Ocorrncia de vibraes no ambiente 7. Sensores de movimento

-- XOR utilizando rede Neural To handle buttonUp -- Argumentos : -- ReLV : valor entrada 1 -- DTp : valor entrada 2 -- Retorno : valor XOR de saida system Yin1,Yin2 system Xout1, Xout2, Xout3, Xout4, Xout5, Xout6, Xout7, Xout8, Xout9, Xout10 system Xsum1, Xsum2, Xsum3, Xsum4, Xsum5, Xsum6, Xsum7, Xsum8, Xsum9, Xsum10 system Yout -- recebe o valor da entrada da rede get the text of field X1 of this page put it into Yin1 get the text of field X2 of this page put it into Yin2 Xout1 = Yin1 Xout2 = Yin2 -! Generating code for PE 0 in layer 1 */ Xsum0 = (4.681568) + (-3.682379) * Xout1 + (3.679287) * Xout2 -! ! /* Generating code for PE 1 in layer 1 */ Xsum1 = (-1.443177) + (-4.406851) * Xout1 + (4.352833) * Xout2 -! ! /* Generating code for PE 2 in layer 3 */ Xsum2 = (-3.500513) + (-2.403626) * Xout1 + (7.551652) * Xout2 -! ! /* Generating code for PE 0 in layer 3 */ Xout0 = 1.0 / (1.0 + exp (- Xsum0) ) -! ! /* Generating code for PE 1 in layer 3 */ Xout1 = 1.0 / (1.0 + exp (- Xsum1) ) -! /* Generating code for PE 2 in layer 3 */ Xout2 = 1.0 / (1.0 + exp (- Xsum2) ) -! /* Generating code for PE 0 in layer 5 */ Xsum0F = (-2.840431) + (6.428875 ) * Xout0 + (-2.143907) * Xout1 + (-6.406175) * Xout2 Xout0F = 1.0 / (1.0 + exp (-Xsum0F) ) -! /* De-scale and write output from network */ Yout = Xout0F XOR = Yout put XOR after text of field Y of this page

Lgica Nebulosa

Fuzzy Sets

Lgica Nebulosa
Quando as leis da Matemtica referemse realidade elas no esto certas. Quando estas leis esto certas elas no se referem a realidade . Albert Einstein No se imagina como tudo vago at que se tenta faze-lo de maneira precisa . Bertrand Russel

Lgica Aristotlica
Caractersticas:


 

Os objetos so classificados em categorias muito bem definidas Um objeto pertence a uma categoria ou no. Uma figura geomtrica ou um quadrado ou no. O se ou no. Serve para separar os objetos em categorias bem definidas.

Lgica Aristotlica
Como classificar exatamente?
   

O carro est andando muito rpido. Ele uma pessoa muito feliz. Esta sala pequena. Nesta cidade a temperatura freqentemente est abaixo de zero.

Paradoxos
Bertrand Russel, ao tentar formalizar a Matemtica encontrou a possibilidade de ser e no ser ao mesmo tempo nos paradoxos, exemplo:


O filsofo Cretense: Um filsofo Cretense dizia que todos os Cretenses mentem . O filsofo est mentindo? O barbeiro de Sevilha: Em Sevilha existe um barbeiro que s faz a barba de quem no barbeia a si prprio . Quem barbeia o barbeiro? O conjunto de todos os conjuntos que no so membros de si mesmo, um membro de si mesmo? Se ele membro ento no , se ele ento

Pensamento Fuzzy (Nebuloso)




Se a taxa de juros subir muito e o dficit for alto teremos uma recesso moderada. Se estamos na hora do rush aumente muito a freqncia dos trens. Se temos muita roupa na mquina de lavar aumente o tempo de lavagem. Se a terra est muito seca e a temperatura est alta regue durante mais tempo. Se Xi ento Yj

Teorema da Aproximao
sempre possvel cobrir uma curva com um nmero finito de remendos . Bart Kosko. Remendos so pedaos de conhecimento sobre o problema. Cada remendo corresponde a uma regra, ou proposio da forma: if... then...

Sistema Fuzzy
Fuzzy: transforma a entrada em um conjunto nebuloso. Defuzzy: transforma o valor nebuloso de sada em um valor ntido. Mquina de inferncia: faz todos os clculos. Gerente de informaes: obtm da base de conhecimentos, informaes sobre como regras devem ser resolvidas. Base de conhecimentos: contm definies sobre as regras, conjuntos e operadores.

Construo do Sistema Fuzzy


1. Definir entradas e sadas (Variveis
nebulosas de E/S)
1.

2.

3.

2. Construir a base de regras 3. Simular o sistema 4. Testar o sistema

Definir faixas de valores (Universo de discurso das variveis) Dividir o universo de discurso em conjuntos nebulosos (rtulos) Definir a semntica dos conjuntos (funes de incluso)

Vantagens do Sistema Fuzzy


Utilizam regras que conseguem expressar as imprecises e aproximaes dos mtodos de decises dos especialistas. Assim so mais fceis de construir, entender, manter e testar. Podem ser prototipados em menos tempo. So mais robustos e conseguem trabalhar com falta de regras. Necessitam menos regras. Podem trabalhar com informaes imprecisas Podem chegar a concluses de maneira paralela. Acumulam evidncias contra e a favor de proposies.

Desvantagens
Verificao e validao: embora sejam mais fceis de construir e prototipar que sistemas convencionais, eles necessitam que sejam executadas mais simulaes e necessitam mais sintonia antes de serem definitivamente aprovados. Formalismo: no tem uma definio matemtica precisa e ntida como os sistemas tradicionais. Capacidade de aprendizado: no aprendem com a experincia. Sistemas hbridos so utilizados para diminuirem esta desvantagem. Determinao das funes e regras: difcil o estabelecimento de regras nebulosas corretas.

Produtos Comerciais
Villares: elevador inteligente. Hitachi: sistema de controle de trfego do Metro Sendai com 16 estaes e 13,5 Km de trilhos. Continental: lavadora de roupas. Sony: Filmadoras, mquinas fotogrficas, fornos de microondas.

Incio
Lofty Zadeh, Fuzzy Sets. Information and Control. 1965. Princpio da Incompatibilidade:


A medida que a complexidade de um sistema aumenta, nossa habilidade para fazer afirmaes precisas e que sejam significativas acerca desse sistema diminui at que um limiar atingido alm do qual preciso e significncia (ou relevncia) tornam-se quase que caractersticas mutuamente exclusivas.

Representao da Informao
1. Tipo Nominal: no h relaes de ordem e o nico
teste possvel se elemento pertencente ao conjunto ou no, ex.:
Times = {Vasco, Fluminense, Santos,...}

2. Tipo Ordinal: identifica a posio de uma entidade


ou evento em uma hierarquia cujos intervalos no so definidos exatamente. Os dados podem ser comparados quanto a igualdade, superioridade e inferioridade, ex:
Inteligente = {Paulo, Maria, Carlos, Ana} intelig(Paulo)<intelig(Maria)<intelig(Carlos)<intelig(Ana)

Representao da Informao
3. Tipo Intervalo: dados cujos intervalos podem ser definidos com exatido. No entanto, no h um ponto zero claramente definido. Podem ser comparados quanto a igualdade, superioridade e podem ser subtrados um dos outros, ex.:
Calendrio. Graus Celsius intelig(Maria)-intelig(Paulo)<intelig(Ana)<intelig(Carlos)

4. Tipo Proporcional: semelhantes aos do tipo intervalo, mas h um zero absoluto, ex.:
Graus Kelvin

Conjuntos Clssicos
Universo de Discurso
Corresponde ao espao onde so definidos os elementos do conjunto, ex.:
0m <= altura <= 3,0m

Funo de Incluso
Define se um elemento pertence ou no ao conjunto, ex.:

Problemas de Representao
Com os Conjuntos Clssicos
Embora conjuntos clssicos sejam a base de toda a teoria matemtica moderna, eles apresentam problemas quando aplicados uma enorme classe de problemas do mundo real O problema da escolha do limiar entre dois conjuntos (alto/baixo) denominado de paradoxo Sorites, atribudo ao filsofo, Eubulides de Mileto, adversrio de Aristteles: Quando um monte de areia deixa de ser um monte de areia, caso retiremos um gro de areia de cada vez?

Tipos de Incluso
1. Incluso com grau:


Um elemento pertence a um conjunto com m determinado grau de certeza. Alguns elementos do conjunto so mais representativos da idia geral do conjunto do que outros, ex.:
alunos excelentes = {Pedro, Ana, Paulo, Marta}  muito altos = {Oscar, Tande, Jnior Baiano}


Tipos de Incluso
2. Incluso em diversos conjuntos:


Um elemento pode ser membro parcial de mais de um conjunto, ex.:


Crianas = {Rita,Manoel,Adriana,Marta}  Adolescentes = {Rita,Mateus,Pedro,Felipe}


Crianas(Rita) = 0,2  Adolescentes(Rita) = 0,8




Funo de Incluso
A funo de incluso de um conjunto A caracterizada pela funo
(.): Xp[0,1] Que mapeia cada elemento de X em um nmero real no intervalo [0,1].

Para um elemento em particular, a funo representa o grau de incluso do elemento no conjunto, ex.:

Representao dos Conjuntos


Pares Ordenados:


Um conjunto fuzzy pode ser representado como um conjunto ordenado de pares, sendo que o primeiro elemento denota o elemento do conjunto propriamente dito e o segundo o grau de incluso deste elemento no conjunto. Universo de Discurso de Notas:

X={0,0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10}  Conjunto Fuzzy A dos bons alunos: A={(6,0),(6.5,0.25),(7,0.5),(7.5,0.75),(8,1),(8.5,0.75),(9,0.5),(9.5 ,0.25),(10,0)}

Exerccios
Representar em termos de universo de discurso e pares ordenados os conjuntos:
  

Meses do ano Temperatura C entre 0 e 100 Notas dos alunos da classe Estaes do ano Estados da gua Reprovaes, exame e aprovaes

Representar graficamente estes valores com:


  

Representao dos Conjuntos


Funo de Incluso:


Uma classificao por altura inclui as seguintes categorias para a estatura: baixa, mdia e alta. A equao caracterstica do conjunto estatura mdia :
0 se altura <= 1,50 se 1,50<altura<1,70 se 1,70<altura<1,90 se altura >= 1,90
media(altura)

5*altura-7.5

-5*altura+9.5
0

Funes de Incluso
Representao Linear:


Este um dos conjuntos nebulosos mais simples

Funes de Incluso
Funes Triangulares e Trapezoidais:


Funes empregadas freqentemente devido a simplicidade de representao e utilizao. Podem ser representadas usando-se apenas 4 valores: dois para pontos em cada uma das retas e os dois ngulos de inclinao.

Funo Trapezoidal

Funes de Incluso (cont.2)


Funo Sigmide
parmetros:
  

definida usando-se trs

Seu valor 0 de incluso ( ), Seu valor 1 de incluso (K) E o ponto de inflexo (F), que o ponto onde o valor da funo de incluso vale 0.5. 0

x =
2

S (x, , F, K) =

2* X 1
1

KX-K K2

=x =F F = x =K x =K

2*

Funes de Incluso (cont.3)


Funo Beta
definida com dois parmetros, o valor em torno do qual construda (K) e um valor que indica a metade da largura da curva no ponto de inflexo (F).
B (x, K, F ) = 1+ 1
X-K F
2

Terminologia de Conjuntos - Suporte


Suporte de um Conjunto Nebuloso : um conjunto ntido definido da seguinte maneira: = {x ' | A (x) > 0}

Suporte Compacto de um Conjunto Nebuloso


O suporte compacto quando seu tamanho menor que o Universo de Discurso original. Caso a funo no seja compacta vrias regras sero ativadas por cada entrada causando que o sistema seja sobrecarregado.

Terminologia de Conjuntos Corte Alfa


Conjunto corte que pertencem menos o grau conjunto corte : O conjunto ntido de elementos ao conjunto nebuloso A at pelo chamado de conjunto corte . O ento definido como:

A = {x ' A (x) > } A = {x ' A (x) > }

O conjunto A chamado de conjunto corte forte.

Terminologia de Conjuntos Cardinalidade


A cardinalidade de um conjunto nebuloso finito |A| definida como:

|A| = 7
x
'

(x)

e a cardinalidade relativa de A definida como:

||A|| =

|A| |'|

Exemplo
A cardinalidade do conjunto A = { (6,0), (6.5, 0.25), (7, 0.5), (7.5, 0.75), (8,1),

(8.5, 0.75), (9, 0.5), (9.5, 0.25), (10,0) } vale e a cardinalidade relativa : ||A|| = 4.00 = 0.20
20

|A| = 0+0.25+0.5+0.75+1.0+0.75+0.5+0.25+0 = 4.0

Para conjuntos X a cardinalidade : A = x

A(x)dx

Terminologia de Conjuntos - Altura


Altura de um conjunto nebuloso A definida como: HA = maxxX {QA (x)} Um conjunto definido como normal se HA = 1 e sub-normal no caso contrrio.

Terminologia de Conjuntos Distncia


Mede a distncia que um valor est da definio ideal do conjunto e definida como: g se QA (x)=0 d(A,x) = 1 - 1 caso contrrio QA (x)

Distncia entre um ponto e a definio ideal

Exerccios
Calcular a cardinalidade |A| e a cardinalidade relativa ||A|| dos conjuntos definidos no exerccio anterior.

Lgica Fuzzy na Prtica

Exemplo Prtico
Uma ONG deseja implementar um sistema Fuzzy-especialista para selecionar atletas para as seguintes modalidades esportivas:
   

Ginstica de Solo; Vlei; Futebol; e Jud.

Os atletas devem ser selecionados de acordo com as seguintes caractersticas:


 

Altura: baixo, mdio e alto. Personalidade: individualista, pluralista e agressivo.

Passo 1
Definio de regras fuzzy a partir do conhecimento do especialista:


Se o atleta muito baixo e um pouco individualista Ento est apto para a ginstica Se o atleta muito alto e bastante pluralista Ento est apto para o vlei Se o atleta de estatura media e muito agressivo Ento est apto para o jud

Exerccio
Continuar a definio de regras fuzzy para os atletas

Passo 2
As regras so definidas de acordo com o bom senso e escritas em termos de variveis lingsticas. Para um sistema de duas entradas e uma sada pode-se definir a seguinte matriz antecedente 1 (altura) e antecedente 2 (personalidade):
Altura Personalidade Individualista Muito Baixo Ginstica Baixo Mdio Alto Muito Alto

Ginstica

Jud

Futebol

Futebol

Pluralista

Ginstica

Jud

Futebol

Futebol ou Vlei Jud

Vlei

Agressivo

Ginstica

Jud

Jud

Vlei

Passo 3
Definir o grau de relevncia de cada antecedente traando, a partir de uma determinada altura do atleta, uma linha perpendicular ao eixo x at encontrar o valor de y onde esta intercepta as funes membros.

Exerccio
Definir o grau de relevncia para o antecedente personalidade

Passo 4
Uma vez definidos os graus de relevncia dos antecedentes deve-se definir o grau de certeza (a firmeza da regra) para cada regra. Se os antecedentes estiverem ligados pela condio e a certeza da regra assume o menor valor de relevncia dos antecedentes. Se os antecedentes estiverem ligados pela condio ou a certeza da regra assume o maior valor de relevncia dos antecedentes. Sempre melhor utilizar operadores e sempre que possvel. Se o antecedente possuir o operador no a certeza da regra assumir o valor = 1 relevncia ( ex.: not muito baixo (0.9) dever ser muito baixo (0.1) ) Ento a regra fica: Regra 2: Se o atleta de estatura baixa (0.20) E agressivo (.75) Ento est apto para a Ginstica (0.20) Regra 3: Se o atleta de estatura media (0.75) E agressivo (.70) Ento est apto para o jud (0.70)

Exerccio
Definir os graus de certeza para todas as regras definidas anteriormente.

Finalmente
Considerando apenas a altura dos candidatos, podemos montar o seguinte grfico de fuzzyficao :
Entrada 1,25 1,35 1,45 1,55 1,65 1,75 1,85 Sada Ginstica=0 Ginstica=0,5 Ginstica=0,27 Jud=0,30 Jud=0,40 Futebol=0,30 Futebol=0,5 Futebol=0,6 Futebol=0,20 Vlei=0,35

Exerccio
Definir o grfico de incluso para a personalidade dos candidatos.

Algoritmos Genticos
Cleber Miranda Barboza cleberc@linux.ime.usp.br http://www.linux.ime.usp.br/~cleberc

Introduo
Um Algoritmo Gentico (AG), conceitualmente, segue passos inspirados no processo biolgico de evoluo natural segundo a teoria de Darwin Algoritmos Genticos seguem a idia de SOBREVIVNCIA DO MAIS FORTE (melhores solues a cada gerao)

Background
Cromossomos


Todo organismo vivo consiste de clulas. Em cada clula, existe o mesmo conjunto de cromossomos Cromossomos consistem de genes seqncias de DNA- que servem para determinar as caractersticas de um indivduo

Background (Cont.)
Reproduo


Durante o processo de reproduo ocorre-se a recombinao (ou crossover cruzamento-). Genes dos pais se combinam para formar novos cromossomos. Os descendentes criados podem sofrer mutaes, ou seja, os elementos do DNA podem ser trocados A adaptao de um organismo pode ser medida pelo sucesso do mesmo em sua vida

Idia bsica
Comear com um conjunto de solues (representado por cromossomos) chamado populao Solues de uma populao so escolhidas e usadas para formar uma nova populao (reproduo) Espera-se que a nova populao seja melhor que a anterior

Idia bsica (Cont.)


Solues que so escolhidas para formar novas solues (descendentes) so escolhidas de acordo com uma funo de adaptao (funo objetiva - custo) O processo repetido at que uma condio seja satisfeita

Questes importantes
Como criar cromossomos e qual tipo de codificao usar? Como escolher os pais para a realizao do crossover? A gerao de uma populao a partir de duas solues pode causar a perda da melhor soluo. O que fazer?

Esboo do algoritmo
[Incio] Gerao aleatria de uma populao de n cromossomos [Adaptao] Verificar a funo objetiva f(x) de cada cromossomo x [Populao] Cria-se uma nova populao pela repetio a seguir: 1. [Seleo] Selecione um par de cromossomos da populao de acordo com a adaptao de cada um (os mais bem adaptados tem maior chance de serem escolhidos) 2. [Crossover] Produza dois descendentes (filhos) realizando crossover com os cromossomos dos pais. O ponto para a realizao do crossover deve ser aleatrio. 3. [Mutao] Com uma certa probabilidade, o descendente sofre mutao em cada locus (posio no cromossomo). 4. [Aceitao] Coloque os descendentes em uma nova populao, juntamente com a melhor soluo da gerao velha

Esboo do algoritmo (Cont.)


[Troca] Substitua a populao velha pela nova [Teste] Se a condio de finalizao satisfeita, pare, e retorne a melhor soluo da populao atual [Adaptao] [Lao] Volte ao passo 1

Codificao
Como realizar a codificao de cromossomos? a primeira pergunta que deve ser feita ao resolver um problema com AG A codificao depender fortemente do problema

Codificao binria
a mais comum devido a sua simplicidade Cada cromossomo uma string de bits 0 ou 1
 

Crom: A = 1 0 1 1 0 0 1 0 1 1 Crom: B = 1 1 1 1 1 1 0 0 0 0

Exemplo de uso: problema da mochila Codificao: Cada bit diz se um elemento est ou no na mochila

Codificao por permutao


Mais usado em problemas de ordenao Cada cromossomo uma string de nmeros que representa uma posio numa seqncia  Crom A: 1 5 3 2 6 4 7 9 8  Crom B: 8 5 6 7 2 3 1 4 9 Exemplo de uso: problema do caxeiro viajante Codificao: os cromossomos descrevem a ordem em que o caxeiro ir visitar as cidades

Codificao por valor


Usado em problemas onde valores mais complicados so necessrios Cada cromossomo uma seqncia de valores


 

Crom A: 1.2324 5.3243 0.4556 2.3293 2.4545 Crom B: ABDJEIFJDHDIERJFDLDFLFEGT Crom C: (back), (back), (right), (forward), (left)

Codificao por valor (Cont.)


Exemplo de uso: dada uma estrutura, encontrar pesos para uma rede neural Codificao: Valores reais num cromossomo representam pesos em uma rede neural

Crossover
Aps decidir qual codificao usar, procedese com a operao crossover A operao deve ser realizada sobre os cromossomos dos pais para a criao de descendentes
   

Crom1: 11010 Crom2: 11011 Filho 1: 11010 Filho 2: 11011

| | | |

00100110110 11000011110 11000011110 00100110110

Mutao
O objetivo da mutao evitar que as solues na populao fiquem apenas num mnimo local Filho1 antes : 1101111000011110 Filho2 antes : 1101100100110110 Filho1 depois : 1100111000011110 Filho2 depois : 1101101100110110

Problema da grade horria


Escalonar salas, professores e classes em um nmero fixo de perodos de tal maneira que nenhum professor, classe ou sala sejam usados mais de uma vez num mesmo perodo Suposies para resolver o problema


Uma classe consiste de um certo nmero de estudantes As classes so disjuntas, ou seja, no h estudantes em comum

Problema da grade horria (Cont.)




Em cada perodo uma matria lecionada a uma classe possvel que uma matria aparea mais de uma vez em um perodo Uma combinao particular de (professor, matria, sala, classe) chamada de tupla A tarefa de realizar a combinao (professor, matria, sala, classe) para formar uma tupla feita parte

Problema da grade horria (Cont.)

Problema da grade horria (Cont.)


Para medir a qualidade da grade horria (funo objetiva - custo), calcular o nmero de colises em qualquer grade. A grade aceitvel tem custo 0 O custo de cada perodo pode ser dado pela soma dos trs componentes: custo da classe, custo do professor e custo da sala

Problema da grade horria (Cont.)


O custo das classes o nmero de vezes em que cada classe aparece num perodo menos 1. Se uma classe no aparece em nenhum perodo seu custo 0 A mesma idia se aplica para os professores e salas Assim, o custo da grade a soma dos custos de cada perodo

Problema da grade horria (Cont.)


Como fazer o mapeamento entre a grade e os cromossomos? Representao do problema usando tuplas:

Problema da grade horria (Cont.)


Mapeamento das tuplas em perodos (representao de uma grade indivduo):

Problema da grade horria (Cont.)


Representao de tuplas usando cromossomos:

Problema da grade horria (Cont.)


Reproduo:

Problema da grade horria (Cont.)


Mutao:

Problema da grade horria (Cont.)


Problema causado pela perda de tuplas:

283

Problema da grade horria (Cont.) - Algoritmo Enquanto nmero de geraes < limite e no houver indivduo perfeito faa


Para cada filho a ser gerado faa


 Escolha dois indivduos aleatrios da populao

velha  Crie um filho vazio  Para cada perodo dos pais faa


Realize os crossover dos perodos correspondentes, produzindo um novo perodo Copie o novo perodo para a posio correspondente do filho

Problema da grade horria (Cont.) - Algoritmo


 Arrumar a perda e duplicao de tuplas  Aplicar mutao selecionando aleatriamente um

perodo e uma tupla  Medir o custo do indivduo

 Se custo < mnimo permitido  Matar o filho  Se no  Colocar o filho na populao nova


Populao velha = Populao nova

Problema da grade horria (Cont.)


Resultados:

Problema da grade horria (Cont.)


Paralelizando a reproduo:

Referncias
H.Firas. Handwritten Numeral Recognition Using Neural Networks, em: http://ise.stanford.edu/class/ee368a_proj00/project2/node4.ht ml GENETIC ALGORITHMS, em: http://cs.felk.cvut.cz/~xobitko/ga/main.html D.Abramson, J.Abela. A Parallel Genetic Algorithm for Solving the School Timetabling Problem, em: http://citeseer.nj.nec.com/abramson92parallel.html D. Abramson. Constructing School Timetables using Simulated Annealing: Sequential and Parallel Algorithms, em: http://citeseer.nj.nec.com/abramson91constructing.html J.E.Boggess. USING GENETIC ALGORITHMS FOR SCHEDULING ENGINEERING MISSIONS, em: http://citeseer.nj.nec.com/55397.html