Case-based Reasoning
IARTI
2010-11
Monday, March 28, 2011
Exemplo de Aplicação
Considere um sistema RBC baseado na aplicação Prolog Case usado para auxiliar
na escolha de sugestões de pacotes de viagens numa agência turística. Considere
ainda os seguintes casos como exemplo:
Viagem 1
Viagem 2
Viagem 3
Preço
2000
1350
2900
Interesse Cultural
Baixo
Alto
Médio
Sim
Não
Sim
Baixa
Alta
Média
12
3
7
Praias
Segurança
Tempo de Viagem
a) Descreva os casos de acordo com o formato usado pelo Prolog Case,
identificando os predicados necessários.
António Silva, Março de 2011
Monday, March 28, 2011
Base de Casos
:- dynamic case/2.
case(
[
case(
[
culture(medium),
beaches(yes),
security(medium),
travelTime(7)
culture(low),
beaches(yes),
security(low),
travelTime(12)
],
[
]
).
case(
[
culture(high),
beaches(no),
security(high),
travelTime(3)
],
[
price(2, 1350)
).
António Silva, Março de 2011
Monday, March 28, 2011
price(3,2900)
]
price(1, 2000)
]
],
[
).
Exemplo de Aplicação
b) Considere que as preferências de um dado cliente são as seguintes:
Interesse cultural Baixo
Praias Sim
Segurança Alta
Tempo de Viagem 5
Qual será a sugestão que o sistema fará? Pressuponha que o cálculo de
similaridade usará os seguintes parâmetros:
1.Interesse Cultural: iguais => 1; baixo e médio ou médio e alto => 0.5;
outros => 0;
2.Praias: iguais => 1; diferentes => 0;
3.Segurança: iguais => 1; baixo e médio ou médio e alto => 0.5; outros =>
0;
4.Tempo de viagem: ( diferença <= 2 ) => 1; ( 2 < diferença <= 5 ) => 0.5 ;
( diferença > 5 ) => 0;
O peso dos parâmetros 2 e 4 é de 2, o dos restantes é 1.
António Silva, Março de 2011
Monday, March 28, 2011
Exemplo de Aplicação
Interesse cultural
Praias Segurança Tempo de Viagem
Baixo
Sim
Alta
5
1.IC: iguais => 1; baixo/médio ou médio/alto => 0.5; outros => 0;
2.Praias: iguais => 1; diferentes => 0;
3.Seg.: iguais => 1; baixo/médio ou médio/alto => 0.5; outros => 0;
4.TV: ( dif. <= 2 ) => 1; ( 2 < dif. <= 5 ) => 0.5 ; ( dif. > 5 ) => 0;
Peso
Atributo
1
Interesse Cultural
2
Praias
1
Segurança
2
Tempo de Viagem
Peso total = 6
António Silva, Março de 2011
Monday, March 28, 2011
Viagem 1
Viagem 2
Viagem 3
Baixo
1
Alto
0
Médio
0.5
Sim
1
Não
0
Sim
1
Baixa
0
Alta
1
Média
0.5
12
0
3
1
7
1
3/6
3/6
5/6
Exemplo de Aplicação
c) Considerando que a descrição duma viagem se
encontra armazenada numa estrutura do tipo
viagem(Id, Preço, IntCult,Praias,Seg, T_viagem)
elabore um predicado em Prolog que devolva o
preço da viagem que melhor corresponda aos
desejos do cliente. Use apenas os parâmetros
“Praias” e “Tempo de Viagem”.
António Silva, Março de 2011
Monday, March 28, 2011
Exemplo de Aplicação
viagem(1,2000,low,yes,low,10).
viagem(2,2200,medium,yes,medium,13).
viagem(3,1800,high,no,medium,5).
escolhe(Pr,TV,Id1,Preco,S):compara(1,Pr,TV,0,S,Id,Id1),
viagem(Id1,Preco,_,_,_,_).
compara(N,Praias,TV,S,S2,Id,Id1):viagem(N,Preco,_,X,_,Y),
similPr(Praias,X,Sp),
similTV(TV,Y,St),
S1 is Sp + St,
N1 is N + 1,
(
(S1 > S, compara(N1,Praias,TV,S1,S2,N,Id1))
;
compara(N1,Praias,TV,S,S2,Id,Id1)
).
compara(_,_,_,S,S,Id,Id).
António Silva, Março de 2011
Monday, March 28, 2011
similPr(X,Y,S):(X==Y, S is 1); S is 0.
similTV(X,Y,S):D is abs(X-Y),
(
(D =< 2, S is 1)
;
(D =< 5, S is 1/2)
;
S is 0
).
Download

IARTI 2010-11