Inteligência Artificial Exercícios da aula prática de Agentes 2011/12 1. Considere um agente num mundo em que existem 4 posições dispostas numa quadrícula 2X2. O agente tem dois sensores: um que indica a existência de lixo e outro que indica que bateu na parede no instante anterior. Dada uma percepção p, (percepcao-lixo-p p) retorna T se de acordo com a percepção houver lixo e NIL caso contrário e (percepcao-toque-p p) retorna T se tiver batido ao tentar andar em frente no instante anterior e NIL caso contrário. O agente pode executar as acções andar (em frente), rodar (90 o no sentido horário), esperar e aspirar. Suponha que o objectivo do seu agente é limpar o ambiente. Desenhe um agente de reflexos simples para este ambiente. 2. Considere um agente num mundo em que existem 4 posições dispostas numa quadrícula 2X2. O agente tem um sensor que indica se há ou não lixo na posição actual. Dada uma percepção p, (percepcao-lixo-p p) retorna T se de acordo com a percepção houver lixo na posição actual e NIL caso contrário. O agente pode executar as acções esperar, andar (em frente), rodar (90 o para a sua direita) e aspirar. Suponha que o objectivo do seu agente é manter o ambiente limpo gastando tão pouca energia quanto possível (só a acção esperar é que não gasta energia) e que ao ser ligado o agente está no canto superior esquerdo virado para a direita. Desenhe um agente de reflexos com modelo para este ambiente. 3. Considere um agente num mundo em que existem 9 posições dispostas numa quadrícula 3X3. O agente tem dois sensores: um que indica a existência de lixo e outro que indica que bateu na parede no instante anterior. Dada uma percepção p, (percepcao-lixo-p p) retorna T se de acordo com a percepção houver lixo e NIL caso contrário e (percepcao-toque-p p) retorna T se tiver batido ao tentar andar em frente no instante anterior e NIL caso contrário. O agente pode executar as acções andar (em frente), rodar (90 o no sentido horário), esperar e aspirar. Suponha que o objectivo do seu agente é limpar o ambiente. Desenhe um agente de reflexos simples para este ambiente. 1
4. Considere um agente cujo objectivo é encher sacos com moedas de 1 Euro que estão a passar numa esteira rolante. Dada uma percepção p, a expressão (percepcao-moeda p) é T se o agente tiver uma moeda em frente e NIL caso contrário. O agente pode ESPERAR ou, tendo uma moeda em frente, pegar na moeda e pô-la num saco, executando a acção ENSACA, ou, caso já tenha colocado 50 moedas no saco, executar a acção TROCA-SACO-E-ENSACA, que corresponde a fechar o saco, preparar-se para encher outro saco e colocar a moeda nesse saco. (a) Implemente este agente. (b) De que tipo de agente se trata? 5. Considere um agente cujo objectivo é encher sacos com moedas de 1 Euro que estão a passar numa esteira rolante. Dada uma percepção p, a expressão (percepcao-moeda p) é T se o agente tiver uma moeda em frente e NIL caso contrário e a expressão (percepcao-numero-moedas p) tem como valor o número de moedas guardadas no saco. Relativamente a acções, o agente pode executar a acção ESPERAR ou, se o agente tiver uma moeda à frente e se o saco tiver lugar para por moedas, o agente pode pegar a moeda e pô-la num saco, executanto a acção ENSACA, ou, caso já tenha colocado 50 moedas no saco, executar a acção TROCA-SACO-E-ENSACA, que corresponde a fechar o saco, preparar-se para encher outro saco e colocar a moeda nesse saco. (a) Implemente este agente. (b) De que tipo de agente se trata? 6. Considere um agente que vive num mundo que é um anel com um determinado número de posições. Este agente sabe executar a acção andar, que faz com que passe da posição actual para a posição ao lado, no sentido dos ponteiros do relógio, e a acção esperar, que não muda a posição do agente. Relativamente às percepções, em cada instante pode ser dado ao agente um número maior que 0, por exemplo n, que fixa o objectivo que o agente deve procurar atingir de ir para a posição que está à distância de n casas no sentido do ponteiro dos relógios. Alternativamente, é dado o número 0. Neste caso, se não estiver a ir para nenhuma casa, fica parado. (a) De que tipo é este agente? (b) Implemente este agente. 7. Considere um agente num mundo em que existem 8 posições dispostas num anel e que em algumas dessas posições existe lixo. O agente tem um sensor que indica a existência de lixo na posição actual. Dada uma percepção p, (percepcao-lixo-p p) retorna T se de acordo com a percepção houver lixo e NIL caso contrário. O agente pode executar as acções andar (que muda a posição do agente para a próxima posição do anel em sentido horário) e aspirar, que limpa o lixo que eventualmente exista na posição em que se encontra o agente, e esperar, que contrariamente às acções andar e aspirar não gasta energia (as outras acções gastam uma unidade de energia cada vez que são executadas). Suponha que o objectivo do seu agente é manter o ambiente limpo gastando tão pouca energia quanto possível. 2
(a) Defina, se possivel, um agente de reflexos simples para este ambiente que satisfaça o objectivo. Caso não seja possível, justifique. (b) Defina, se possivel, um agente de reflexos com modelo (também conhecido como agente de reflexos com estado interno) para este ambiente que satisfaça o objectivo. Caso não seja possível, justifique. 8. Considere um agente que vive num anel com 10 posições, numeradas de 0 a 9. Cada posição do anel está ligada a duas posições: a posição n esta ligada à posição mod(n+9,10) e mod(n+11,10) (o mod é o resto da divisão inteira). O agente dispõe de três acções: anda+ que desloca o agente da posição n para a posição mod(n+11,10), anda- que desloca o agente da posição n para a posição mod(n+9,10), e espera que não altera a posição do agente. O agente recebe como percepção a cada instante a posição objectivo para onde quer ir e retorna a acção que o faz ficar mais próximo desse objectivo e no começo está na posição 0. (a) De que tipo é o agente referido? Justifique. (b) Implemente este agente. 9. Considere um agente que vive num mundo que é um corredor com 8 posições numeradas sucessivamente de 1 a 8 e que no início se encontra na posição 1. Este agente sabe executar a acção esperar, que não altera a posição do agente, a acção andar+, que muda a posição para a posição vizinha de maior número, e a acção andar-, que muda a posição para a posição vizinha de menor número (as acções andar+ e andar- não produzem efeitos se estiverem, respectivamente, nas posições 1 e 8). Relativamente às percepções, em cada instante pode ser dado ao agente um número maior que 0, por exemplo n, que indica a posição que o agente passa a ter por objectivo atingir. Alternativamente, pode ser dado o número 0. Neste caso, se não estiver a ir para nenhuma casa, fica parado. Admita que o agente quer minimizar o número de acções que quer executar. (a) De que tipo é este agente? (b) Implemente este agente. 3
10. Considere um agente que vive numa casa com infinitos quartos, em que os quartos estão numerados. Os quartos normalmente têm três portas. Se o quarto for o quarto n, a porta esquerda dá acesso ao quarto 2 n, a porta direita dá acesso ao quarto 2 n + 1 e a porta de trás dá acesso ao quarto div(n, 2) (divisão inteira de n por 2). O quarto 1 tem apenas a porta esquerda e direita. No início, o agente é colocado no quarto 1. O agente recebe como percepção a cada instante o quarto para onde quer ir e retorna a acção que o faz ficar mais próximo do objectivo. As acções possíveis são: :atravessa-porta-esquerda, se quiser passar do quarto n para o quarto 2 n; :atravessa-porta-direita, se quiser passar do quarto n para o quarto 2 n + 1; :atravessa-porta-tras, se quiser passar do quarto n para o quarto div(n, 2); e :espera, se não quiser mudar de quarto. (a) De que tipo é o agente referido? Justifique. (b) Implemente este agente. Sugestão: Se o agente está no quarto n e quer ir para o quarto m, com m diferente de n, divida m por 2, 4, 8, 16, etc, até obter n ou até obter 1. Se obtiver n, a porta a atravessar vai depender do valor que foi dividido para obter n. Caso contrário, vai ser a porta de trás. 11. Uma conhecida marca multinacional produtora de videogravadores pretende desenvolver um rebobinador de cassetes de vídeo topo de gama baseado na tecnologia de agentes estudada na cadeira. O comportamento pretendido do agente é o seguinte: Existe um teclado que permite escrever números inteiros representando minutos. Quando um número, por exemplo n, é seguido de um enter, o número é passado ao agente e o agente não faz nada se n for 0, rebobina n minutos se n for negativo ou avança a cassete n minutos se o n for positivo. Note-se que o agente recebe do teclado duas percepções: o número de minutos e a indicação de se carregou na tecla enter ou não. Este agente deve ser implementado num hardware que recebe os comandos do agente. O hardware tem o seguinte comportamento: ao ser dado o comando espera, não faz nada; ao ser dado o comando avança, avança um minuto a posição da cassete (se tiver chegado ao fim da cassete, permanece no fim e não faz mais nada); ao ser dado o comando recua, recua um minuto a posição da cassete (se tiver chegado ao princípio da cassete, permanece no princípio e não faz mais nada). As acções espera, avança e recua executam os comandos descritos acima e devem ser retornadas pelo agente quando apropriado. Para a seguinte sequência de percepções, o agente devolve as seguintes acções (o ponto de interrogação significa que o valor lido pode ser qualquer): 4
Percepções Acções Observações 2 e true avança Ordem para avançar 2 posições? e false avança Falta avançar uma posição? e false espera Acaba de executar a ordem anterior -2 e true recua Ordem para recuar duas posições 0 e true espera Ordem para ficar na posição em que está (pára de executar a ordem anteriormente dada)? e false espera Acaba de executar a ordem anterior 12. Com a chegada do verão, foi desenvolvido um robot para matar melgas. No entanto, este robot precisa ser devidamente programado, razão pela qual se solicita que demonstre os seus conhecimentos adquiridos na cadeira de IA. Ao ligar-se o robot, este encontra-se num dos cantos do quarto, na posição (0. 0) (as posições são representadas por pares de inteiros não negativos), e a melga numa posição desconhecida. O quarto onde se desenrola a acção pode ser modelado como um quadrado com N linhas e N colunas. O agente MataMelga dispõe de 5 sensores que lhe vão permitir detectar a posição da melga de forma a proceder a sua eliminação. (a) O primeiro sensor serve para identificar o zumbido da melga. Dada a percepção p, (percepcao-zumbido? p) é T ou NIL consoante a melga esteja a voar (e produzir o zumbido) ou não. (b) Estando a melga a voar, o agente MataMelga pode utilizar um segundo sensor que, embora bastante grosseiro, lhe permite distinguir, de entre as quatro orientações possíveis (aumentar ou diminuir a linha ou a coluna da posição actual), uma das orientações mais importantes para levar o agente para uma posição mais próxima da posição em que está a melga naquele instante. Por exemplo, se o agente estiver na posição (2. 2) e se a melga estiver na posição (0. 5), dada a percepção p, (percepcao-orientacao p) retorna o par (0. 1). Nota: Admita que se a melga está a voar, nunca passa pela posição onde está o agente e que se alterar a sua posição, a nova posição é uma posição adjacente. (c) Um terceiro sensor permite verificar se, estando o agente numa posição junto a uma parede, a melga está ou não pousada na parede nessa posição ou numa posição adjacente. Nessas circunstâncias, dada a percepção p, (percepcao-melga-a-vista? p) é T e o agente pode aplicar-lhe uma palmada, que em 34% dos casos elimina a melga. No entanto, nos restantes 66% dos casos, a palmada faz com que a melga a voe. Se a melga não estiver na posição do agente ou nas posições adjacentes, o valor correspondente é NIL. (d) Um quarto sensor permite identificar as situações em que se matou a melga ao aplicar uma palmada à melga. Se a tiver matado, dada a percepção p, (percepcao-matou? p) é T. C aso contrário, o valor correspondente é NIL. (e) Para simplificar a codificação do agente, acrescentou-se um quinto sensor que retorna uma lista de orientações que identificam as paredes junto à posição do agente, se as houver. Cada parede é identificada pela orientação (tal como descrita acima) em que é necessário caminhar para a atingir. Por exemplo, se o agente estiver na posição (0. 0), dada a percepção p, 5
(percepcao-paredes p) retorna as paredes (0. -1) e (-1. 0). Se o agente estiver na posição (0. 2) e admitindo que N > 2, o sensor retornaria apenas a parede (-1. 0). O agente pode executar alternativamente as seguintes acções: acção (1. 0), acção (-1. 0), acção (0. 1), acção (0. -1), acção PALMADA, a acção ESPERAR e acção DORMIR. As quatro primeiras acções têm como efeito mudar a posição do agente para a posição adjacente mais próxima da respectiva parede, a acção PALMADA tenta matar a melga e a acção DORMIR desliga o agente. Se a certa altura o agente deixou de ouvir a melga, deve dirigir-se à posição da parede que está na direcção em que ouviu a melga pela última vez e começar por procurá-la a partir dessa posição. (a) Descreva o tipo percepcao que representa a percepção do agente MataMelga. (b) Defina uma função que não recebe argumentos e implementa o agente. 13. O Demolidor está à procura da sua amiga Electra, que ficou presa numa posição de um caminho com 10 posições, numeradas de 1 a 10, para a salvar. O Demolidor encontra-se inicialmente na posição 5 e como é cego usa as suas superpoderosas percepções auditivas para a procurar. Dada uma percepção p, (percepcaoruido p) devolve: :FRENTE, se ecoa um grito de Electra de uma posição do caminho à sua frente; :ATRAS, se ecoa um grito de Electra de uma posição do caminho mais atrás; :SILENCIO, se não se ouve nenhum ruído; :SUSPIRO, se se ouve um suspiro de alívio de Electra (ouve-se o suspiro quando o Demolidor está na mesma posição que ELECTRA, ainda presa). Na sua missão de salvamento, o Demolidor vai fazer o seguinte: Enquanto não tiver informação sobre a posição da Electra, retorna a acção :ESPERA; Se tiver ouvido um grito, dirige-se para a fonte do grito. Se o grito provier de uma posição do caminho à sua frente usa a acção :AVANCA, que avança uma posição (por exemplo, se estiver na posição 6 passa para a posição 7); Se o grito provier de uma posição do caminho atrás, usa a acção :RECUA, que recua uma posição (por exemplo, se estiver na posição 3 passa para a posição 2); Se ouve um suspiro de alívio é porque está na mesma posição que a Electra, pelo que pode soltar a Electra usando o comando :SOLTA; Quando a Electra estiver solta, passa a querer deslocar-se com a ELECTRA para o extremo do caminho mais próximo (usando a acção :RECUA ou :AVANCA, como apropriado, que os faz mudar para a posição vizinha correspondente); Se o Demolidor e Electra estiverem num extremo do caminho e a Electra estiver solta, as acções :RECUA e :AVANCA não têm efeitos. Implemente o agente demolidor. Nota: Como a Electra está presa no princípio, não muda de posição até ser solta. Assim, se o grito ecoar de uma direcção jamais se ouvirá um grito da direcção contrária. 6