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 ).