Você está na página 1de 8

Índice

AGENTE TERMÓSTATO.......................................................................................................2
1.1 – CARACTERIZAÇÃO DO AGENTE (AGENTE, AMBIENTE)..............................2

2. AGENTE PARQUE DE ESTACIONAMENTO.................................................................4


2.1 – CARACTERIZAÇÃO DO AGENTE (AGENTE, AMBIENTE)....................................4
AGENTE TERMÓSTATO

Considere um agente termóstato. Por cada percepção, o agente recebe o valor da temperatura
ambiente pretendida. A acção devolvida poderá ser AQUECER ou ARREFECER em função
da temperatura ambiente actual.

1.1 – CARACTERIZAÇÃO DO AGENTE (AGENTE, AMBIENTE)


 DESEMPENHO
Temperatura estável
 AMBIENTE
Arca, Ar Condicionado, …
 ACTUADORES
Ventilador
 SENSORES
Termómetro

 TIPOS DE AMBIENTES

Ambiente Observável Determinístico Episódico Estática Discreto Agentes


Parcialmente
Termóstato Determinístico Episódico Estática Discreto Único
Observável

1.2 QUANTO AO TIPO DE AGENTE:

É um Agente de reflexo simples com estado interno (temperatura).

1.3 ESTRUTURA DE PERCEPÇÃO

 PERCEPÇÃO
- Temperatura
 ACÇÃO
- Aquecer
-Arrefecer

Algoritmo (Agente Termóstato)


procedimento obtervalor ()
var x : inteiro
inicio
escreva("Digite a temperatura actual: ")
leia(x)
valor <- x
fimprocedimento

// *******************************************************
funcao percep (v:inteiro): inteiro
inicio
retorne v
fimfuncao

// *******************************************************
funcao act (a:inteiro):caracter
inicio

se percep(a)>25 entao
retorne "Arrefecer"
senao se percep(b)<25 entao
retorne "Aquecer"
fimse

fimfuncao
// *******************************************************

var
valor: inteiro
inicio
escreval("********** AGENTE TERMOSTATO *************")
obtervalor ()
escreva(act(percep(valor)))

fimalgoritmo

Prolog

perc:-
write('********* Agente Termostato ***********'),
nl,write('Digite a temperatura.: '),
nl, read(X),act(X).

act(X):-
max(X>=25,arrefecer,
max(X<25,aquecer)).

/* Predicados para definer se a temperatura está up-or-down a nível estável


max(X,Y,Z):- X,!,Z.
max(X,Y,Z):- Y,Z.

aquecer:-
write('***************************\n'),
write('Aquecer'),nl,
write('***************************').

arrefecer:-
write('***************************\n'),
write('Arrefecer'),nl,
write('***************************').

2. AGENTE PARQUE DE ESTACIONAMENTO


Considere um agente que faz a gestão de um parque de estacionamento. O sensor detecta
quando entra um carro e quando sai um carro. A acção devolvida poderá ser
LEVANTAR_ENTRADA, LEVANTAR_SAIDA, LEVANTAR_ENTRADA_SAIDA (entra
um carro e sai outro ao mesmo tempo), ESPERAR (não há lugar) ou NAO_FAZ_NADA.

2.1 – CARACTERIZAÇÃO DO AGENTE (AGENTE, AMBIENTE)


 DESEMPENHO
Segurança, fácil
 AMBIENTE
Parque de estacionamento
 ACTUADORES
Cancela
 SENSORES
Câmaras, sensor de movimentação, guarda

TIPOS DE AMBIENTES

Ambiente Observável Determinístico Episódico Estática Discreto Agentes


Parque de
Completament
estacionament Determinístico Episódico Estática Discreto Único
e
o

2.2 QUANTO AO TIPO DE AGENTE:

É um Agente de reflexo simples com estado interno (Capacidade ou numero


determinado de carros).

1.3 ESTRUTURA DE PERCEPÇÃO

 PERCEPÇÃO
- Temperatura
 ACÇÃO
- Aquecer
-Arrefecer

*************************************************************************
algoritmo "ParkEstacionamento"
// Função :
// Autor :
// Data : 28/05/2011
// Seção de Declarações
//****************************************************
// Procedimento Obterdados
//****************************************************
procedimento obterdados ()
var b : caracter
inicio
escreva("Digite a percepção: ")
leia(b)
percp <- b
fimprocedimento
//****************************************************
// Função Percepção
//****************************************************

funcao percep(per:caracter):caracter
inicio
retorne per;
fimfuncao
//****************************************************
// Função Actuador (Acção)
//****************************************************

funcao act (a: caracter):caracter


var
MAX,MIN: inteiro
inicio
MAX <- 2
MIN <- 1
escolha a
caso "a"
se (cont <= MAX) entao
cont<-cont+1
retorne "Levantar_Entrada"
senao se(cont > MAX) entao
retorne "Espera"
fimse

caso "b"
se (cont >= MIN) entao
cont<-cont-1
retorne "Levantar_Saida"
senao se(cont = 0) entao
retorne "Não faz nada"
fimse

caso "c"
retorne "Levantar_Entrada_Saida"
fimescolha
fimfuncao
//****************************************************
// Procedimento Menu
//****************************************************
procedimento menu()
inicio
escreval("----------------------------------------")
escreval("--------- Menu de Percepções ----------")
escreval("--------- a. entra_carro ----------")
escreval("--------- b. sai_carro ----------")
escreval("--------- c. entra_sai ----------")
escreval("----------------------------------------")
escreval("--------- digite 'x' para sair ---------")
escreval("")
fimprocedimento
//****************************************************
var
sair,percp: caracter
cont: inteiro
inicio
// Seção de Comandos
cont <- 0
escreval("********** AGENTE PARQUE DE ESTACIONAMENTO *************")
repita
menu()
obterdados ()
escreval(act(percep(percp)))
ate(percp="x")
fimrepita
fimalgoritmo
nada:-
write('-------------------------'),
nl,write(' Nao faz nada '),
nl,write('-------------------------').

entra:-
write('-------------------------'),
nl,write(' Levanta Entrada '),
nl,write('-------------------------').

saida:-
write('-------------------------'),
nl,write(' Levanta Saida '),
nl,write('-------------------------').

entraIsaida:-
write('----------------------------------'),
nl,write(' Levanta Entrada e Saida '),
nl,write('----------------------------------').

menuP:-
nl,write(' ----------------------------------------------------------------- '),
nl,write(' MENU DE PERCEPÇÕES - P.E '),
nl,write(' 1- entra_carro '),
nl,write(' 2- sai_carro '),
nl,write(' 3- entra_sai '),
nl,write(' ----------------------------------------------------------------- '),opcc.

opcc:-
nl,write(' digite uma opçao: '),
readln(X),
if_then_else(X == 1,entra,
if_then_else(X == 2,saida,
if_then_else(X == 3,entraIsaida,
if_then_else(X == 4,nada)))),menuP.

% predicado para implementar a estrutura condicional if-then-else.


if_then_else(P,Q,R):-P,!,Q.
if_then_else(P,Q,R):-Q,R.

BIBLIOGRAFIA
 Apostila de Inteligência Artificial elaborado pelo Dr. Vicente docente de UAN
faculdade de ciências
 Introdução a Programação Prolog – Editora da Universidade Católica de Pelotas,
Luis A. M. Palazzo

Você também pode gostar