António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF...

133
“WEXSYS - Web Expert System” Por António Jorge de Almeida Vaz Dissertação de Mestrado Instituto Superior de Engenharia do Porto Porto, Novembro de 2010

Transcript of António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF...

Page 1: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System

ldquoWEXSYS - Web Expert Systemrdquo

Por

Antoacutenio Jorge de Almeida Vaz

Dissertaccedilatildeo de Mestrado

Instituto Superior de Engenharia do Porto

Porto Novembro de 2010

Instituto Superior de Engenharia do PortoDepartamento de Engenharia Informaacutetica

Antoacutenio Jorge de Almeida Vaz

ldquoWEXSYS - Web Expert Systemrdquo

Trabalho apresentado ao Departamento de Engenharia

Informaacutetica do Instituto Superior de Engenharia do Porto

como requisito parcial para obtenccedilatildeo do grau de Mestre

em Engenharia Informaacutetica com a aacuterea de especializaccedilatildeo

ldquoTecnologias do Conhecimento e Decisatildeordquo

OrientadorDoutor Luiz Felipe Rocha de Faria

JuacuteriDoutor Joseacute Antoacutenio Reis Tavares (Presidente)

Doutor Nuno Filipe Teixeira Malheiro

Doutor Luiz Felipe Rocha de Faria

Porto Novembro de 2010

Agradecimentos

Gostaria de agradecer a todas as pessoas que directa ou indirectamente ajudaram narealizaccedilatildeo deste trabalho

Comeccedilo por agradecer ao meu orientador Dr Luiz Faria pela disponibilidade quesempre demonstrou e pelas vaacuterias conversas construtivas que tivemos

Agrave Dra Faacutetima Rodrigues pela compreensatildeo demonstradaAo meu antigo colega e chefe de sector Antoacutenio Pinto pela cedecircncia do trabalho que

deu origem a esta dissertaccedilatildeoAo meu colega de curso Antoacutenio Mota pelo companheirismo pela amizade e em

especial por todo o apoioAos meus amigos em especial ao pessoal dos Kruppa pela amizade e pelo incentivo

que sempre me deramAgrave minha famiacutelia pela compreensatildeo e pela forccedila sempre demonstradasPor fim quero agradecer a uma pessoa muito especial agrave Clara pela compreensatildeo

incentivo e carinho nos momentos mais importantes

v

Resumo

Desde o iniacutecio que os sistemas periciais natildeo foram vistos apenas como sistemas quepoderiam substituir os peritos Os peritos por sua vez independentemente da aacuterea em queoperam eram tidos como indiviacuteduos que atingiram a excelecircncia atraveacutes da experiecircnciaestudo e total dedicaccedilatildeo por vezes durante anos

Hoje mais do que assumir o papel de um perito na excelecircncia de uma aacuterea de actuaccedilatildeoos sistemas periciais sobressaem pela disponibilidade contiacutenua acessos facilitados custosreduzidos estabilidade de funcionamento e coerecircncia de raciociacutenio Empurrados pelosavanccedilos actuais das redes em termos de velocidade e propagaccedilatildeo global estes sistemassatildeo hoje disponibilizados de forma mais simples e acessiacutevel

Este trabalho eacute realizado com o propoacutesito de evoluir o actual sistema para umaversatildeo mais apelativa funcional e fiaacutevel Um dos objectivos passa pela evoluccedilatildeo doactual modo de funcionamento utilizaccedilatildeo local e apenas um utilizador para um modode funcionamento que permita uma disponibilizaccedilatildeo num ambiente de acesso globalacessiacutevel a qualquer hora e em qualquer local

Palavras-chave GISPSA sistema pericial manutenccedilatildeo base de conhecimento anaacute-lise graacutefica de base de conhecimento

vii

Abstract

From the begining that the expert systems were not treated solely as systems intendedto replace experts Experts in turn regardless of their operating area were seen asindividuals that achieved excellence through experience study and total dedicationsometimes over many years

Today more than just assuming the part of an expert in a given area expert systemsstand for their continuous availability easy access reduced costs operating stability andconsistency of reasoning Pushed by todays advances in networks regarding speed andglobal spread these systems are now available in a more simple and accessible way

This work is carried out in order to evolve the current system to a more appealingfunctional and reliable One of the objectives is the evolution of the current mode ofoperation local and single user to a mode globally accessible regardless the time or theplace where its intervention is necessary

Keywords GISPSA expert system knowledge base maintenance knowledge basegraphical analysis

ix

Conteuacutedo

Lista de Figuras xv

Lista de Tabelas xvii

Lista de Coacutedigo xix

Lista de Algoritmos xxi

Lista de Acroacutenimos xxiii

1 Introduccedilatildeo 111 Enquadramento 2

12 Objectivos 2

13 Planeamento 3

14 Estruturaccedilatildeo da dissertaccedilatildeo 3

2 Estado da arte 521 Sistemas periciais 5

211 Arquitectura 7

212 Base de conhecimento 9

2121 Regras 10

2122 Frames 12

2123 Redes semacircnticas 13

2124 Mecanismos de inferecircncia 14

2125 Manutenccedilatildeo de uma base de conhecimento 15

213 Raciociacutenio sobre incerteza 16

2131 Factores de certeza 16

214 Vantagens e desvantagens 17

22 GISPSA - GIS Problem Solver Advisor 20

221 Arquitectura 20

222 Funcionamento 21

223 Limitaccedilotildees 22

23 Web Expert Systems 23

231 Casos de estudo 25

2311 LOMA - Landfill Operation Management Advisor 26

xi

2312 MDSS - Medical Diagnosis Support System 30

2313 Whale watcher 31

3 Ferramentas utilizadas 3331 Ambiente de desenvolvimento 33

32 Motor de inferecircncia 35

321 Fase I - Recolha de candidatos 35

322 Fase II - Requisitos base 37

323 Fase III - Viabilidade econoacutemica 38

324 Fase IV - Viabilidade teacutecnica 38

325 Fase V - Prova de conceito 39

326 Conclusatildeo e fundamentaccedilatildeo da escolha 40

4 Wexsys 4341 Arquitectura global 43

411 Moacutedulo pWexsysEAR 44

412 Moacutedulo WexsysEAR 45

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos 46

4131 Camada de acesso puacuteblico 46

4132 Camada de acesso protegido 48

4133 Camada de acesso privado 48

4134 Fluxo de invocaccedilatildeo 49

414 Portal 50

4141 Templates 51

415 Suporte multi-liacutengua 53

42 Motor de inferecircncia 54

421 Multi-utilizador 54

422 Base de conhecimento inicial 55

423 Protoacutetipo do motor de inferecircncia 56

4231 Formato das regras 56

4232 Formato das questotildees 57

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas 57

4234 Estrutura da base de conhecimento 58

4235 Algoritmos a utilizar 60

424 Resultado final 62

4241 Arranque da execuccedilatildeo 62

xii

4242 Mecanismo de respostas 654243 Conclusatildeo final encontrada 674244 Explicaccedilotildees 67

43 Base de conhecimento 71431 Leitura da base de conhecimento 72432 Conclusatildeo final a encontrar 73433 Factos iniciais 74434 Regras 74

4341 CriarAlterar uma regra 744342 Questotildees 764343 Verificaccedilatildeo 77

435 Gravaccedilatildeo da base de conhecimento 77436 Conversatildeo GISPSA 78

44 Anaacutelise graacutefica 79441 Implementaccedilatildeo 79442 Funcionamento 79443 Limitaccedilotildees 82

5 Conclusotildees 8351 Contributos da soluccedilatildeo desenvolvida 8452 Limitaccedilotildees e trabalho futuro 87

Bibliografia 92

Anexos 93

A Coacutedigo do motor de inferecircncia 95

B Base de conhecimento do protoacutetipo 103

C Base de conhecimento GISPSA 105

xiii

Lista de Figuras

1 Arquitectura de um sistema pericial 82 GISPSA menu inicial 213 GISPSA interacccedilatildeo inicial 224 GISPSA exemplo de interacccedilatildeo pergunta-resposta 225 Arquitectura do LOMA 276 Paacutegina inicial do sistema pericial LOMA 287 Sub-moacutedulo extra 288 Sugestatildeo de problemas do sub-moacutedulo extra 299 Sub-moacutedulo especializado 2910 Paacutegina principal do sistema pericial Whale Watcher 3111 Paacutegina final do sistema pericial Whale Watcher 31

12 Arquitectura da soluccedilatildeo 4413 Arquitectura do moacutedulo visual 4414 Arquitectura do moacutedulo de negoacutecio 4515 Wexsys - Integraccedilatildeo dos componentes 4616 Diagrama de classes principais 4917 Diagrama de sequecircncia do fluxo de invocaccedilatildeo 5018 Wexsys - Paacutegina inicial 5119 Paacutegina inicial do motor de inferecircncia 6220 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia 6321 Fluxo de invocaccedilatildeo de resposta a uma questatildeo 6622 Conclusatildeo da inferecircncia 6723 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo 6824 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia 6925 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final 6926 Paacutegina inicial da gestatildeo da base de conhecimento 7227 Processo de carregamento das regras 7328 Introduzir uma nova regra 7529 Apresentaccedilatildeo de valores configurados na questatildeo 7630 Formulaacuterio de introduccedilatildeo de uma questatildeo 7631 Verificaccedilatildeo da base de conhecimento 7732 Processo de gravaccedilatildeo da base de conhecimento 7833 Paacutegina inicial da anaacutelise graacutefica 80

xv

34 Exemplo de grafo totalmente expandido 8135 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto 82

xvi

Lista de Tabelas

1 Listagem de produtos da Fase I 362 Listagem de produtos excluiacutedos na Fase II 383 Listagem de produtos excluiacutedos na Fase III 384 Listagem de produtos excluiacutedos na Fase IV 395 JClips - Vantagens e desvantagens 396 Prova - Vantagens e desvantagens 407 YProlog - Vantagens e desvantagens 40

xvii

Lista de Coacutedigo

1 Excerto da classe RuleView 472 Excerto da classe Rule 473 Coacutedigo do template principal do portal 514 Coacutedigo da paacutegina inicial do portal 535 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo 546 Representaccedilatildeo da base de conhecimento do protoacutetipo 587 Predicados principais do motor de inferecircncia 638 Predicados principais do sistema de explicaccedilotildees 70

xix

Lista de Algoritmos

1 Algoritmo principal do motor de inferecircncia 602 Verifica se uma premissa eacute verdadeira 613 Dispara as regras que possam ser disparadas 614 Algoritmo responsaacutevel pelo desenho da applet 805 Algoritmo para construccedilatildeo dos dados do grafo 81

xxi

Lista de Acroacutenimos

AI Artificial Intelligence ou Inteligecircncia Artificial

BRMS Business Rule Management System

CF Certainty Factors ou Factores de Certeza

CLIPS C Language Integrated Production System

DTO Data Transfer Object

ES Expert System

GIS Gestatildeo Integrada de Seguros

GISPSA GIS Problem Solver Advisor

IDE Integrated Development Environment

JEOPS Java Embedded Object Production System

JSF JavaServer Faces

LHS Left-Handed Side

LOMA Landfill Operation Management Advisor

MDSS Medical Diagnosis Support System

ODBC Open Data Base Connectivity

OO Object Oriented

RHS Right-Handed Side

SP Sistema Pericial

SDK Software Development Kit

xxiii

1Introduccedilatildeo

Este trabalho eacute desenvolvido no acircmbito do Mestrado em Engenharia Informaacutetica ramode Tecnologias do Conhecimento e Decisatildeo e teve a sua origem a partir de um sistemadoravante designado por sistema base desenvolvido por Pinto Este sistema base foidesenvolvido durante a realizaccedilatildeo de um trabalho acadeacutemico (Pinto (1998)) cujo principalobjectivo era a construccedilatildeo de um sistema pericial

Na altura da sua criaccedilatildeo o sistema base apenas estava preparado para uma utilizaccedilatildeodo tipo mono-posto Ficava assim estabelecida a condiccedilatildeo de apenas um utilizador decada vez ter acesso ao sistema base Natildeo era exigiacutevel nem sequer necessaacuterio que outrocenaacuterio fosse equacionado dado tratar-se de um trabalho acadeacutemico O sistema ficoudesta forma limitado

Assim somos remetidos a um dos objectivos iniciais que levaram ao desenvolvimentodo trabalho que agora aqui se apresenta Proceder agrave evoluccedilatildeo do sistema base garantindoque o mesmo possa ser acedido por muacuteltiplos utilizadores de forma simultacircnea e a suadisponibilizaccedilatildeo num ambiente de acesso global mediante a utilizaccedilatildeo de redes sendoque a preferecircncia recai sobre a rede mais global que existe a internet Referindo-nos aeste tipo de disponibilizaccedilatildeo com todas as vantagens que lhe estatildeo afectas o proacuteximopasso loacutegico seria a integraccedilatildeo do novo sistema num portal

Eacute tambeacutem um objectivo inicial proceder agrave alteraccedilatildeo da actual forma de manutenccedilatildeo doconhecimento Pretende-se desenvolver um mecanismo de manutenccedilatildeo de conhecimentoque simplifique a interacccedilatildeo com o utilizador

Por uacuteltimo os objectivos deste trabalho passam igualmente pelo melhoramento dosistema base tentando eliminar alguns erros que foram detectados ao longo do tempo eacrescentando algumas caracteriacutesticas que entretanto surgiram e que foram consideradasnecessaacuterias

1

CAPIacuteTULO 1 INTRODUCcedilAtildeO

11 Enquadramento

O sistema a desenvolver embora tenha como ponto de partida um sistema base criado parautilizaccedilatildeo mono-posto faraacute parte de um portal onde seraacute integrado como uma ferramentade apoio na resoluccedilatildeo de problemas operacionais

Para aleacutem de actualmente fazer muito mais sentido a disponibilizaccedilatildeo do sistemanum ambiente de acesso globalizado e com a possibilidade de vaacuterios utilizadores emsimultacircneo a grande vantagem reside no facto de poder utilizar a mesma base de conhe-cimento que alimenta o sistema pericial independentemente do local onde se realizem osacessos Fica assim garantida a uniformidade a fiabilidade e a estabilidade do sistema

Por uacuteltimo a globalizaccedilatildeo do sistema garante igualmente que sempre que este eacuteutilizado natildeo para consulta ou apoio na resoluccedilatildeo de problemas mas para acrescentarnovos factos e dados agrave base de conhecimento estes estejam imediatamente disponiacuteveispara novas consultas ou para resoluccedilotildees de problemas de forma mais eficaz

12 Objectivos

O objectivo principal deste trabalho passa pela integraccedilatildeo do GIS Problem SolverAdvisor (GISPSA) (sistema base) num portal Aleacutem deste outros objectivos podemser considerados como de eventual ou relevante importacircncia podendo ser caracterizadosda seguinte forma

bull Objectivos globais

ndash Desenvolvimento de um sistema pericial rArr Pretende-se desenvolver umcandidato agrave substituiccedilatildeo do GISPSA

ndash Manutenccedilatildeo da base de conhecimento rArr Gerir a base de conhecimentorelativamente agrave inserccedilatildeo e actualizaccedilatildeo de regras de conhecimento bem comoimplementaccedilatildeo de mecanismos de verificaccedilatildeo das regras

bull Objectivos especiacuteficos

ndash Adaptar o motor de inferecircncia existente ou desenvolver novorArr Desenvolvi-mento de um motor de inferecircncia que se enquadre com os objectivos definidos

ndash Alterar o mecanismo de interacccedilatildeo do utilizador com a base de conheci-mentorArr Facilitar a manipulaccedilatildeo da base de conhecimento de forma a evitarproblemas na alteraccedilatildeo da base de conhecimento

2

13 PLANEAMENTO

ndash Verificar e detectar inconsistecircncias na base de conhecimentorArr Implementarmecanismos de verificaccedilatildeo das regras existentes para minimizar problemas

13 Planeamento

O planeamento deste trabalho foi estruturado em quatro fases A composiccedilatildeo dessas faseseacute a seguinte

1 Requisitos

bull Levantamento de requisitos

bull Estado da arte

bull Ferramentas existentes

2 Protoacutetipo

bull Protoacutetipo do motor de inferecircncia

bull Implementaccedilatildeo do gestor da base de conhecimento

3 Verificaccedilatildeo

bull Implementaccedilatildeo de meacutetodos de verificaccedilatildeo e detecccedilatildeo de inconsistecircncias

4 Elaboraccedilatildeo da dissertaccedilatildeo

bull Redacccedilatildeo final da dissertaccedilatildeo

14 Estruturaccedilatildeo da dissertaccedilatildeo

Nesta secccedilatildeo eacute apresentada a estrutura da dissertaccedilatildeo composta por cinco capiacutetulosNo primeiro capiacutetulo ldquoIntroduccedilatildeordquo eacute apresentado o problema actual quais os objec-

tivos a alcanccedilar e qual o planeamento para a prossecuccedilatildeo desses objectivosNo segundo capiacutetulo ldquoEstado da Arterdquo eacute apresentado a soluccedilatildeo GISPSA e tambeacutem o

estado da arte na aacuterea dos sistemas periciaisNo terceiro capiacutetulo ldquoFerramentas utilizadasrdquo eacute apresentado o estudo efectuado sobre

as ferramentas utilizadas e quais as conclusotildees do mesmoNo quarto capiacutetulo ldquoWexsysrdquo eacute descrita a soluccedilatildeo proposta e implementadaNo quinto e uacuteltimo capiacutetulo ldquoConclusotildeesrdquo satildeo apresentadas as conclusotildees finais bem

como os objectivos alcanccedilados e as actuais limitaccedilotildees

3

2Estado da arte

Num estado da arte pretende-se essencialmente fazer o enquadramento do estaacutegio deevoluccedilatildeo e eventuais casos de estudo relacionados com as tecnologias sistemas oupropostas que satildeo utilizadas ou apresentadas ao longo de um trabalho

Para o nosso caso em concreto vamos focalizar esse enquadramento sobre os sistemaspericiais no seu sentido mais abstracto e ainda sobre o sistema base jaacute indicado oGISPSA Apesar de o sistema base ser por si soacute um sistema pericial e como tal poderser apresentado como um caso de estudo inserido nos sistemas periciais generalizados ofacto de servir como ponto de partida para este trabalho em concreto confere-lhe umaimportacircncia muito superior sendo quase obrigatoacuteria a reserva de uma secccedilatildeo proacutepria parao mesmo

21 Sistemas periciais

Os sistemas periciais pertencem a um dos ramos da Artificial Intelligence ou InteligecircnciaArtificial (AI) e surgiram a partir da necessidade que alguns investigadores sentiram emcriar um software que demonstrasse raciociacutenio e comportamento inteligente durante aresoluccedilatildeo de problemas

Um Sistema Pericial (SP) tambeacutem conhecido como Expert System (ES) caracteriza-se como sendo um programa que permite a consulta e utilizaccedilatildeo de conhecimento extraiacutedode um ou mais peritos em determinada aacuterea Esse conhecimento estaacute normalmenteguardado naquilo que eacute mais habitualmente designado por base de conhecimento e agrave qualo programa tem o devido acesso

Na criaccedilatildeo de um SP o ideal seraacute sempre consultar os melhores peritos dentro daaacuterea pretendida e ainda que estes estejam disponiacuteveis para partilhar e disponibilizar oseu conhecimento Tal seria efectivamente a situaccedilatildeo ideal mas que nem sempre se

5

CAPIacuteTULO 2 ESTADO DA ARTE

aproxima da realidade Aliaacutes o verdadeiro sucesso de um sistema pericial reside naqualidade da sua base de conhecimento

Antes de mais devemos considerar que algueacutem que eacute perito em algo certamente oseraacute por uma seacuterie de factores conjugados Experiecircncia adquirida ao longo de vaacuteriosanos formaccedilatildeo especiacutefica dedicaccedilatildeo e estudo profundo seratildeo alguns desses factoresSempre que um indiviacuteduo se encontra numa posiccedilatildeo de excelecircncia em que eacute consideradoum verdadeiro perito encontra-se tambeacutem numa posiccedilatildeo em que lhe eacute bastante difiacutecilencontrar o tempo necessaacuterio para se submeter a uma extracccedilatildeo do conhecimento quedeteacutem Se a isto juntar-mos o facto do objectivo pelo qual se procede agrave extracccedilatildeo deconhecimento eacute a criaccedilatildeo de um programa que seraacute equiparado ao proacuteprio perito emtermos de conhecimento certamente que haveraacute algum desconforto

Aqui surgem as primeiras duacutevidas Seraacute que o sistema pericial tomaraacute o lugar deum ou mais peritos Apesar desta e de outras preocupaccedilotildees os peritos normalmentecontribuem de forma positiva para o enriquecimento de um sistema pericial tornando-odesta forma num sistema com maior qualidade e do qual eles proacuteprios poderatildeo usufruirjaacute que quando eacute possiacutevel agregar o conhecimento de muacuteltiplas pessoas obteacutem-se umconhecimento global superior ao individual

Para aleacutem disto o sistema pericial tende a proceder a um raciociacutenio mais linear loacutegicoe coerente quando comparado com um ser humano que poderaacute deixar que factores comopor exemplo o cansaccedilo ou os sentimentos o influenciem

Merritt define um sistema pericial como sendo um programa que utiliza conhecimentoe meacutetodos de inferecircncia para resolver problemas que satildeo suficientemente complexos pararequerer um especialista para a sua resoluccedilatildeo

ldquo an intelligent computer program that uses knowledge and inference procedures to

solve problems that are difficult enough to require significant human expertise for their

solutionsrdquo Merritt (1989)

A definiccedilatildeo de Giarratano et al eacute mais relacionada com o tipo de problemas tratadospor um sistema pericial

ldquo computer application wich embody some non-algorithmic expertise for solving certain

types of problemsrdquo Giarratano et al (1998)

Esta definiccedilatildeo enquadra de uma forma global as definiccedilotildees reconhecidas aos siste-mas periciais ldquoum sistema pericial pretende emular um perito na identificaccedilatildeo de umdeterminado problema cuja resoluccedilatildeo envolva conhecimento natildeo algoriacutetmicordquo

Existe uma clara separaccedilatildeo entre conhecimento e raciociacutenio o conhecimento eacute obtidocomo jaacute foi referido recorrendo a um ou mais peritos na aacuterea Os dados obtidos satildeo depois

6

21 SISTEMAS PERICIAIS

codificados atraveacutes de um determinado esquema de representaccedilatildeo No passo seguinteeacute adicionada a capacidade de raciociacutenio ao sistema pericial recorrendo a estrateacutegiasheuriacutesticas na tentativa de fornecer um resultado semelhante ao que um perito forneceriae aqui uma vez mais o papel do perito eacute fundamental para o sucesso do sistema pericial

Para aleacutem de contribuir com o conhecimento o perito deveraacute igualmente contribuircom o raciociacutenio utilizado para o manuseamento desse mesmo conhecimento Isto porquea resoluccedilatildeo de um problema poderaacute em determinadas situaccedilotildees necessitar de pequenosajustes que fogem agrave linearidade de um processamento computacional mas que podemperfeitamente ser simuladas e recriadas na construccedilatildeo do raciociacutenio do programa

Eacute necessaacuterio compreender que um perito para aleacutem de ser algueacutem que eacute consideradoum especialista na sua aacuterea eacute habitualmente algueacutem com pouco ou nenhum tempodisponiacutevel o que dificulta bastante a realizaccedilatildeo da recolha do conhecimento O seutempo eacute dispendioso e tem por norma poucos espaccedilos de manobra devido agraves muitassolicitaccedilotildees que lhe satildeo dirigidas Aqui impera o factor de resistecircncia ora porque o peritonatildeo acredita que o sistema seja tatildeo eficaz como ele ora porque existe o receio de sersubstituiacutedo ou passar a ter menos solicitaccedilotildees Quanto maior a colaboraccedilatildeo do ou dosperitos envolvidos na criaccedilatildeo de um qualquer sistema pericial melhor e mais eficaz seraacuteesse sistema pericial

211 Arquitectura

As duas grandes componentes do sistema pericial e que permitem a separaccedilatildeo referidaentre conhecimento e raciociacutenio satildeo a base de conhecimento (depende do domiacutenio ou daaacuterea abrangida) e o bloco de raciociacutenio (natildeo depende do domiacutenio) Este uacuteltimo eacute aindadividido em trecircs partes distintas o motor de inferecircncia o sistema de explicaccedilotildees e ainterface com o utilizador

Um sistema pericial deve ser estruturado de forma a que possa ser actualizado facil-mente sem que seja necessaacuteria qualquer alteraccedilatildeo ao niacutevel funcional do programa

7

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 1 Arquitectura de um sistema pericial

A figura 1 mostra a composiccedilatildeo de um sistema pericial e que mais detalhadamente eacutea seguinte

bull Interface com o utilizador

um sistema pericial deveraacute permitir a interacccedilatildeo com o utilizador Nos casosmais habituais os utilizadores que usufruem dos benefiacutecios destes sistemas natildeosatildeo peritos da aacuterea e pretendem aconselhamento ou ajuda na resoluccedilatildeo de umproblema Noutros casos o utilizador poderaacute ser um perito da aacuterea que apenaspretende testar o sistema pericial ou confrontar as conclusotildees deste com as suasproacuteprias conclusotildees para perceber se sendo diferentes qual o motivo para queisso aconteccedila Isto poderaacute permitir que um perito aprofunde ou corrija o seuproacuteprio conhecimento ou que por outro lado se procedam a correcccedilotildees agrave base deconhecimento do sistema pericial mediante se trate de erro por parte de um ou deoutro

De qualquer forma a interface com o utilizador deveraacute permitir a interacccedilatildeo entreo sistema pericial e o utilizador (qualquer que este seja) para que o utilizadorresponda agraves questotildees que lhe satildeo colocadas e peccedila explicaccedilotildees para os passos econclusotildees que percorre e descobre ao longo da utilizaccedilatildeo do programa

bull Base de conhecimento

o conhecimento extraiacutedo de um ou mais peritos eacute armazenado e mantido aquiDurante a execuccedilatildeo do programa o sistema pericial acede a esta base para consultaros dados disponiacuteveis Eacute sempre possiacutevel em qualquer altura retirar acrescentarou corrigir factos na base de conhecimento Isto contribui para uma evoluccedilatildeo damesma no sentido de melhorar sempre o funcionamento do proacuteprio sistema pericial

8

21 SISTEMAS PERICIAIS

bull Motor de inferecircncia

este bloco eacute o grande responsaacutevel por interpretar o conhecimento e colocarde uma forma estruturada questotildees ao utilizador O raciociacutenio extraiacutedo do ou dosperitos eacute aqui consultado para que mediante as questotildees que satildeo colocadas aoutilizador e as consultas que satildeo efectuadas agrave base de conhecimento este motor deinferecircncia determine qual a proacutexima questatildeo a colocar qual a proacutexima consulta arealizar ou qual a conclusatildeo a apresentar

bull Sistema de explicaccedilotildees

sempre que o utilizador pretende que lhe seja dada uma explicaccedilatildeo para aquestatildeo que estaacute a ser colocada ou para a conclusatildeo que foi determinada este blocoseraacute o responsaacutevel por dar essa mesma explicaccedilatildeo

Esta divisatildeo permite que os moacutedulos funcionais do programa possam ser isoladoscomo podemos observar na figura 1 de forma a facilitar futuras correcccedilotildees e actualizaccedilotildeesda base de conhecimento contribuindo positivamente para a evoluccedilatildeo da mesma eevitando assim que o sistema pericial fique obsoleto

212 Base de conhecimento

Uma base de conhecimento eacute um conjunto de informaccedilatildeo representada de forma a quepossa ser processada pelo motor de inferecircncia Existem vaacuterias formas de representa-ccedilatildeo de conhecimento no entanto as mais conhecidas satildeo a representaccedilatildeo por regrasrepresentaccedilatildeo por ldquoframesrdquo e ainda as redes semacircnticas

Ao representar conhecimento um dos factores determinantes para o meacutetodo necessaacute-rio a essa representaccedilatildeo eacute o domiacutenio do problema ou aacuterea a modelar A tiacutetulo de exemplose um problema segue um padratildeo ou algum tipo de linearidade na busca da soluccedilatildeonecessaacuteria ou ainda se a soluccedilatildeo puder ser obtida atraveacutes de questotildees cujas respostassatildeo maioritariamente simples (sim natildeo valores numeacutericos etc) a representaccedilatildeo doconhecimento eacute feita utilizando os meacutetodos de regras ou ldquoframesrdquo

Como jaacute foi referido o papel de um perito natildeo estaacute limitado apenas agrave contribuiccedilatildeocom o conhecimento para a base necessaacuteria Este exerce um outro papel igualmenteimportante que tem a ver mais com o aspecto de raciociacutenio Desta forma ao consultar abase de conhecimento satildeo tomadas algumas decisotildees tais como verificaccedilatildeo de eventuaissoluccedilotildees jaacute possiacuteveis em pontos intermeacutedios ou qual a proacutexima questatildeo a colocar Estemeacutetodo de interacccedilatildeo com a base de conhecimento poderaacute eventualmente entrar em

9

CAPIacuteTULO 2 ESTADO DA ARTE

conflito com a independecircncia de domiacutenio que foi referida na arquitectura de um sistemapericial No entanto este aspecto fundamental da criaccedilatildeo de um sistema pericial contribuilargamente para o bom funcionamento do mesmo

Para aleacutem disto a base de conhecimento deveraacute sempre contemplar as funcionalidadesnecessaacuterias que permitam ao utilizador em qualquer altura proceder agrave adiccedilatildeo de novosfactos agrave correcccedilatildeo dos jaacute existentes ou ainda agrave eliminaccedilatildeo dos mesmos Isto permitemanter uma base de conhecimento sempre actualizada fiaacutevel e consistente Estas razotildeescontribuem para a resoluccedilatildeo cada vez mais eficaz dos problemas que satildeo colocadosPara novos problemas que surgem poderatildeo ser necessaacuterias novas soluccedilotildees ou novosmeacutetodos para as encontrar Para problemas jaacute conhecidos poderatildeo ser encontradas novasformas ou novas soluccedilotildees de os resolver eventualmente consideradas mais eficazes ou deimplementaccedilatildeo mais simples

Por tudo isto considera-se que a base de conhecimento apesar de natildeo ser o verdadeiromotor de um sistema pericial poderaacute ser encarada como o verdadeiro combustiacutevelque o move e sem o qual natildeo seria possiacutevel qualquer tipo de evoluccedilatildeo pelo que a natildeocontribuiccedilatildeo para o seu melhoramento estagna o proacuteprio sistema provocando mais cedoou mais tarde o abandono do mesmo por parte dos utilizadores que entretanto podemperder a confianccedila que lhe depositaram

Os meacutetodos de representaccedilatildeo de conhecimento podem ser seleccionados de acordocom as caracteriacutesticas que lhes estatildeo inerentes e que se descrevem de seguida

2121 Regras

Uma das teacutecnicas de representaccedilatildeo de conhecimento mais utilizadas eacute a representaccedilatildeopor regras Estas satildeo utilizadas para representar heuriacutesticas e caracterizam-se por umconjunto de premissas que desencadeiam ou conduzem a uma soluccedilatildeo

As regras tecircm o formato ltidentificaccedilatildeogt Se ltLeft-Handed Side (LHS)gt EntatildeoltRight-Handed Side (RHS)gt

Onde

ltidentificaccedilatildeogt - identificaccedilatildeo da regra

ltLHSgt ndash ldquoLeft-Handed Siderdquo define as premissas que teratildeo que ser satisfeitas deforma a que a regra possa ser disparada

ltRHSgt ndash ldquoRight-Handed Siderdquo define as acccedilotildees ou conclusotildees que seratildeo verificadascom o disparo da regra

As premissas satildeo definidas recorrendo a factos que podem ser previamente conhecidosou inferidos a partir de outras regras A utilizaccedilatildeo de regras promove uma separaccedilatildeo

10

21 SISTEMAS PERICIAIS

entre a parte loacutegica e a funcional isto eacute permite-nos uma abstracccedilatildeo de implementaccedilatildeofocando-se na loacutegica

Vantagens

bull expressividade - as regras satildeo normalmente representadas de uma forma naturalque pode mesmo chegar a ser declarativa Eacute perfeitamente normal uma regra estarescrita num vocabulaacuterio que pode ser lido e compreendido por algueacutem que natildeo sejao programador o perito ou algueacutem com formaccedilatildeo na aacuterea em questatildeo

bull modularidade - as regras satildeo independentes entre si o que possibilita uma maisfaacutecil manutenccedilatildeo da base de conhecimento Isto permite e facilita a remoccedilatildeo deregras a adiccedilatildeo de outras ou a alteraccedilatildeo das jaacute existentes

bull separaccedilatildeo loacutegica - as regras satildeo independentes do motor de inferecircncia e estenatildeo carece de alteraccedilotildees ou actualizaccedilotildees quando as regras satildeo modificadas Ofuncionamento do sistema natildeo eacute alterado quando as regras o satildeo apenas as soluccedilotildeesque o sistema obteacutem eacute que poderatildeo ser diferentes (normalmente para melhor)

bull gramaacutetica riacutegida - as regras obedecem a estruturas que estatildeo perfeitamente defi-nidas agrave partida Isto implica que as mesmas possam ser validadas ou ateacute mesmoconstruiacutedas recorrendo a outros sistemas

bull execuccedilatildeo loacutegica - eacute sempre possiacutevel em qualquer altura do funcionamento dosistema pericial solicitar o desencadeamento ou disparo de uma sucessatildeo deregras A isto chama-se uma explosatildeo combinatoacuteria das regras e permite quesejam contemplados vaacuterios cenaacuterios possiacuteveis utilizando apenas uma execuccedilatildeoEsta execuccedilatildeo loacutegica tem sempre o mesmo resultado desde que se mantenham osparacircmetros iniciais

bull sistema de explicaccedilotildees - ao proceder a disparos de regras eacute possiacutevel dar indicaccedilatildeode qual a loacutegica utilizada para disparar uma determinada regra Isto permite de umaforma didaacutectica e simples justificar a razatildeo dos disparos auxiliando o utilizador nacompreensatildeo da evoluccedilatildeo que o sistema segue para atingir determinada soluccedilatildeo

Desvantagens

bull explicaccedilotildees - se um utilizador natildeo conhecer as regras ou natildeo as aceitar o sistemade explicaccedilotildees natildeo seraacute uma mais valia Poderaacute ateacute eventualmente tornar-se emalgo que confunde mais do que aquilo que auxilia

11

CAPIacuteTULO 2 ESTADO DA ARTE

bull gramaacutetica riacutegida - apesar de o meacutetodo de utilizaccedilatildeo de estruturas poder ser con-siderado importante porque estabelece um padratildeo a ser seguido pode conduzir aproblemas de expressividade quando utilizado em domiacutenios complexos

bull inconsistecircncia - um dos maiores problemas que podem surgir num sistema queutiliza a representaccedilatildeo do conhecimento atraveacutes de regras tem a ver com a possibi-lidade da existecircncia de inconsistecircncias e incoerecircncias nas regras Isto reduz-se ouevita-se atraveacutes da utilizaccedilatildeo exaustiva do sistema numa fase de testes em que satildeoequacionados o maior nuacutemero de casos ou cenaacuterios que possam despoletar todas asregras existentes na base de conhecimento

2122 Frames

Uma frame representa um conceito e eacute composta por slots que que natildeo satildeo mais do que adefiniccedilatildeo de um conjunto ltatributo valorgt Um valor pode ser um elemento uacutenico ouuma lista de valores e em termos de dados pode conter um tipo de dados primitivo ouuma referecircncia a outra frame

Esta representaccedilatildeo tem uma ligaccedilatildeo muito forte com o paradigma da programaccedilatildeoorientada a objectos jaacute que a ideia eacute a mesma representar objectos e conceitos do mundoreal utilizando a descriccedilatildeo a composiccedilatildeo e a heranccedila

Como vantagens temos

bull associaccedilatildeo - as frames definem e representam o conhecimento de uma formaassociativa (associaccedilatildeo normal de conceitos)

Desvantagens

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as frames podem representar um espaccedilo que natildeo estaacuterestringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

12

21 SISTEMAS PERICIAIS

2123 Redes semacircnticas

Uma rede semacircntica eacute um modelo formal em que satildeo descritos conceitos e relaccedilotildeesrecorrendo a um grafo dirigido Os conceitos satildeo representados por noacutes as relaccedilotildees porarcos e existe uma heranccedila de conceitos agrave medida que se procede agrave navegaccedilatildeo pelas vaacuteriasrelaccedilotildees

Como vantagens temos

bull exploraccedilatildeo graacutefica - a representaccedilatildeo de conhecimento atraveacutes de redes semacircnticaspermite a um utilizador explorar um domiacutenio graficamente Isto facilita a interacccedilatildeoe utilizaccedilatildeo do sistema

bull facilidade na adiccedilatildeo de clusters relacionados - utilizando o modo graacutefico de repre-sentaccedilatildeo torna-se mais faacutecil adicionar novos clusters em que existam conceitosrelacionados

bull faacutecil assimilaccedilatildeo - os seres humanos relacionam-se bem com ambientes graacuteficose tecircm uma tendecircncia a natildeo soacute aceitaacute-los melhor como tambeacutem a proceder a umautilizaccedilatildeo mais atractiva simples e de raacutepida aprendizagem com um miacutenimo deformaccedilatildeo

Como desvantagens temos

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as redes semacircnticas podem representar um espaccedilo que natildeoestaacute restringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

bull falta de estrutura e formalidade - natildeo existe uma semacircntica formal para a represen-taccedilatildeo simboacutelica das ligaccedilotildees o que deixa demasiado espaccedilo para a criatividade eeventualmente para o surgimento de problemas associados ao facto de poderemexistir muacuteltiplas formas de representaccedilatildeo

13

CAPIacuteTULO 2 ESTADO DA ARTE

2124 Mecanismos de inferecircncia

A base de conhecimento representa o caminho para encontrar uma determinada soluccedilatildeomas o motor de inferecircncia eacute a entidade que efectivamente percorre esse caminho Ummotor de inferecircncia pode utilizar diferentes estrateacutegias de raciociacutenio para a obtenccedilatildeode respostas As mais conhecidas satildeo a estrateacutegia de encadeamento directo e a deencadeamento inverso Contudo eacute possiacutevel combinar as duas no mesmo sistema naquiloque eacute vulgarmente conhecido como uma estrateacutegia de encadeamento misto

Encadeamento directo (Forward Chaining) ndash Um ser humano no seu dia a dia utilizaesta estrateacutegia para processamento de raciociacutenio Consoante assistimos a acontecimentoso ceacuterebro processa-os e analisa-os decidindo o que fazer de seguida De igual modo aestrateacutegia de raciociacutenio por encadeamento directo comeccedila por percorrer os factos baacutesicosque vatildeo originar o disparo de regras o que levaraacute agrave obtenccedilatildeo de conclusotildees intermeacutediasque por sua vez iratildeo originar o disparo de mais regras e assim sucessivamente Oprocesso continua ateacute que se obtenham conclusotildees finais se tal for possiacutevel ou natildeo hajamais lugar agrave possibilidade de disparo de novas regras

Devido agraves suas caracteriacutesticas esta estrateacutegia eacute mais apropriada para planeamentomonitorizaccedilatildeo controlo e interpretaccedilatildeo

Encadeamento inverso (Backward Chaining) ndash No encadeamento inverso o motorde inferecircncia tenta provar as conclusotildees finais que aparecem no lado direito das regras(RHS) Essas conclusotildees finais tambeacutem satildeo designadas como objectivos e eacute normaldizer-se que o motor de inferecircncia com encadeamento inverso eacute orientado aos objectivos(goal driven)

Para provarmos uma dada conclusatildeo teremos que provar as condiccedilotildees que aparecemno lado esquerdo da regra (LHS) que poderatildeo ser suportadas por conclusotildees intermeacutediasde outras regras ou por factos baacutesicos Sendo assim o mecanismo de encadeamentoinverso assume um caraacutecter essencialmente recursivo (para provar uma conclusatildeo vamoster que provar as condiccedilotildees)

Este tipo de estrateacutegia eacute mais apropriada para diagnoacutesticos jaacute que temos uma hipoacuteteseque necessita de ser provada de forma a chegar a uma conclusatildeo

Eacute importante salientar que a forma de representaccedilatildeo das regras eacute independente daestrateacutegia utilizada pelo motor de inferecircncia No entanto eacute possiacutevel melhorar a eficaacuteciado sistema se adaptarmos essa representaccedilatildeo consoante o encadeamento utilizado

14

21 SISTEMAS PERICIAIS

2125 Manutenccedilatildeo de uma base de conhecimento

A manutenccedilatildeo de uma base de conhecimento embora seja considerada vital para asobrevivecircncia do sistema pericial eacute um processo bastante complexo no sentido emque implica cuidados que nem sempre satildeo tidos ou considerados Eacute habitual existiremproblemas de validaccedilatildeo verificaccedilatildeo redundacircncia e contradiccedilotildees

De forma a garantir que a base de conhecimento se mantenha fiaacutevel e bem definidadevem ser desenvolvidos mecanismos que evitem a ocorrecircncia deste tipo de problemas

Redundacircncia - Considera-se aplicaccedilatildeo de redundacircncia a uma base de conhecimentoquando ao inserir uma regra estamos a adicionar conhecimento que jaacute estava contido nabase de conhecimento Podemos observar o seguinte exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X tem_barbatanas entatildeo X nada

regra3 se X nada E X tem_barbatanas entatildeo X eacute_peixe

Neste exemplo eacute possiacutevel verificar que esta base de conhecimento manteacutem-se idecircntica(o conhecimento eacute o mesmo) se removermos a regra3 considerada redundante Esta regranatildeo trouxe nenhum conhecimento novo ao sistema e pode ser descartada

Contradiccedilatildeo - Considera-se regra contraditoacuteria toda a regra que contradiz conheci-mento jaacute existente na base de conhecimento Por exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X nada entatildeo X natildeo_eacute_peixe

A regra2 contradiz claramente a regra1 pelo que eacute considerada contraditoacuteria Um dosgrandes problemas na anaacutelise de duas ou mais regras contraditoacuterias passa por determinarquais as que correspondem ao conhecimento correcto

Verificaccedilatildeo - acccedilatildeo desencadeada ainda na fase de implementaccedilatildeo inicial da base deconhecimento onde se pretende minimizar problemas essencialmente de redundacircncia e decontradiccedilatildeo que possam ser provocados pelo programador Toda a base de conhecimentoeacute verificada e confrontada com as notas apontamentos e indicaccedilotildees a que o programadorteve acesso e que serviram de alicerce para a construccedilatildeo da mesma

Validaccedilatildeo - a acccedilatildeo preventiva de erros iniciais levada a cabo logo apoacutes a implementa-ccedilatildeo da base de conhecimento precede a acccedilatildeo seguinte que consiste em validar a referidabase atraveacutes da intervenccedilatildeo de um perito o qual utiliza vaacuterios cenaacuterios de testes ondetenta obter as respostas ao mesmo tempo que vai consultando as explicaccedilotildees disponiacuteveisao longo do percurso

Apesar de ser habitual proceder a esta validaccedilatildeo com o perito que contribuiu como conhecimento eacute igualmente habitual e ateacute beneacutefico utilizar outros peritos da mesma

15

CAPIacuteTULO 2 ESTADO DA ARTE

aacuterea que para aleacutem de validarem a base de conhecimento em causa poderatildeo inclusiveconfrontar o seu proacuteprio conhecimento com o do perito original procedendo a correcccedilotildeesa eles proacuteprios ou agrave base per si Quanto maior a taxa de intervenccedilatildeo construtiva por partede peritos numa base de conhecimento melhor seraacute a qualidade associada agrave mesma

213 Raciociacutenio sobre incerteza

Raciociacutenio sobre incerteza eacute o nome dado ao processo de formulaccedilatildeo de conhecimentobaseado em fontes de informaccedilatildeo que detenham algum tipo de incerteza na sua especifi-caccedilatildeo

O conhecimento que detemos natildeo se limita a observaccedilotildees loacutegicas do tipo ldquose Obser-vaccedilatildeo_A entatildeo conclusatildeo_Brdquo Em vaacuterias situaccedilotildees necessitamos de lidar com informaccedilatildeoincompleta incorrecta ou ateacute mesmo ausente

Quando lidamos com conhecimento de peritos num determinado domiacutenio surge aindaoutro tipo de conhecimento este originado atraveacutes da observaccedilatildeo e experiecircncia

Existe entatildeo a necessidade de representaccedilatildeo de conhecimento e respectivo grau decerteza Para este efeito existem algumas teacutecnicas tais como loacutegica Fuzzy teorias deprobabilidades tais como Bayes ou Dempster-Shafer factores de certeza entre outros

Os seguintes autores podem ser consultados para referecircncia das teacutecnicas acima men-cionadas

bull Loacutegica Fuzzy - Drakopoulos (1994)

bull Bayes - Lucas (2001)

bull Dempster-Shafer - Wilson (2000) e Barnett (1991)

De seguida vai ser descrita a teacutecnica dos factores de certeza que foi a teacutecnica adoptadapara o desenvolvimento da soluccedilatildeo

2131 Factores de certeza

A teacutecnica dos Certainty Factors ou Factores de Certeza (CF) eacute um do meacutetodos detratamento de incertezas num sistema pericial A teacutecnica foi desenvolvida por Shortliffeand Buchanan para o projecto MYCIN um sistema pericial de diagnoacutestico e tratamentode meningite e tratamento do sangue Desde entatildeo que esta teacutecnica eacute o padratildeo seguido nodesenvolvimento de sistemas periciais baseados em regras Heckerman (1992)

16

21 SISTEMAS PERICIAIS

De um ponto de vista funcional caracteriza-se pela atribuiccedilatildeo de um nuacutemero o graude certeza a factos e regras Esse grau de certeza eacute uma medida relativa probabiliacutesticaque pode ser positiva ou negativa sendo normalmente usados valores no intervalo de -1 a1

A sua definiccedilatildeo original baseou-se na seguinte foacutermula FC [HE] = MC [HE]minusMD [HE]

O factor de certeza da hipoacutetese H dado uma evidecircncia E eacute dado pela diferenccedila entre

bull a medida de certeza de H dado Erarr MC [HE]

bull a medida de descrenccedila de H dado Erarr MD [HE]

O CF final de uma regra com uma premissa baseada num facto ou noutra regra eacute dadopela foacutermula 21

Quando as premissas estatildeo associadas atraveacutes do operador conjunccedilatildeo eacute aplicada afoacutermula 22

Quando existe mais do que uma regra a suportar uma determinada conclusatildeo o CFfinal eacute o resultado da foacutermula 23

CFf inal =CFpremissatimesCFregra 21

CFf inal = min[CFpremissa1 CFpremissan

]timesCFregra

22

X Y gt 0CF (X Y ) = X +Y (100˘X)100 23a

X ou Y lt 0CF (X Y ) = X +Y(1˘min(X Y)) 23b

X Y lt 0CF (X Y ) =minusCF (minusX minusY ) 23c

214 Vantagens e desvantagens

Apesar de tudo o que foi descrito um sistema pericial natildeo representa de forma alguma aferramenta mais apropriada para resolver todos os problemas com recurso a conhecimentoque de outra forma estaria reservado apenas a peritos das vaacuterias aacutereas Ao utilizarmosum sistema pericial estamos sujeitos a aspectos positivos e negativos cabendo a noacutes opapel de determinar se quando confrontados com um determinado problema a utilizaccedilatildeodeste tipo de ferramenta eacute a mais apropriada

17

CAPIacuteTULO 2 ESTADO DA ARTE

Para observar quais as principais vantagens de um sistema pericial podemos consultaras opiniotildees partilhadas por Giarratano et al (1998) CoAJRA (1997)

bull Elevada disponibilidaderArr um sistema pericial estaacute sempre disponiacutevel em termosde tempo e local pronto a funcionar sob qualquer condiccedilatildeo enquanto que umperito natildeo dispotildee dessa total disponibilidade

bull Baixo risco de utilizaccedilatildeorArr pode ser utilizado em ambientes considerados perigo-sos e hostis para um ser humano

bull Baixo custo rArr o custo de providenciar conhecimento por utilizador eacute bastantereduzido

bull DurabilidaderArr o conhecimento eacute permanente ao contraacuterio de um especialista queestaacute sujeito a ausecircncias

bull Conhecimento de vaacuterios especialistasrArr quando agregado o conhecimento reco-lhido a partir de vaacuterios especialistas poderaacute conduzir a resultados mais adequadose considerados melhores quando confrontados com o conhecimento individual e osresultados que daiacute advecircm

bull Capacidade de explicaccedilatildeorArr um sistema pericial consegue explicar detalhadamenteos passos que levaram agrave resposta dada enquanto que um ser humano pode natildeo tera disponibilidade nem a vontade de explicar todo o processo de raciociacutenio seguido

bull EmotividaderArr um sistema pericial natildeo estaacute sujeito a emoccedilotildees o seu funciona-mento e as respostas que providencia natildeo satildeo influenciadas pelo meio em que estaacuteinserido como por exemplo situaccedilotildees de stress ou situaccedilotildees de perigo iminente (aqueda de um aviatildeo ou uma central nuclear em risco)

bull Natildeo influenciaacutevelrArr acontecimentos mais actuais tecircm o mesmo peso na tomada dedecisatildeo evitando assim o fenoacutemeno de ldquoviciaccedilatildeordquo da base de conhecimento

No entanto um sistema pericial comporta tambeacutem algumas desvantagens das quaisse salientam

bull Emotividade rArr o facto de natildeo ser emotivo tambeacutem pode ser visto como umadesvantagem jaacute que natildeo recorrer a emoccedilotildees pode ser problemaacutetico por exemploem situaccedilotildees que necessitem de senso comum

18

21 SISTEMAS PERICIAIS

bull ManutenccedilatildeorArr se natildeo for devidamente mantido e actualizado um sistema pericialcorre o risco de ldquoenvelhecerrdquo no sentido em que deixa de ser um sistema fiaacutevel aque possamos recorrer e que corre o risco de abandono

bull CriatividaderArr um sistema pericial natildeo tem capacidade de reagir de forma diferentea problemas colocados seguindo sempre uma linha estaacutevel de raciociacutenio

bull Adaptaccedilatildeo sensorial rArr um sistema pericial natildeo consegue reagir a informaccedilatildeosensorial do meio que o rodeia entenda-se sensorial como sentidos humanos taiscomo o cheiro o tacto e a visatildeo

19

CAPIacuteTULO 2 ESTADO DA ARTE

22 GISPSA - GIS Problem Solver Advisor

O Gestatildeo Integrada de Seguros (GIS) eacute um Sistema de Informaccedilatildeo vocacionado para aactividade seguradora residente na plataforma AS400 da IBM Umas das caracteriacutesticasmais interessantes deste sistema acabou por ser tambeacutem um dos grandes proporciona-dores de eventuais problemas O GIS possui uma grande capacidade de configuraccedilatildeo oque sendo muito uacutetil para a adaptabilidade deste a cenaacuterios situaccedilotildees ou utilizadoresdiferentes acaba por originar vaacuterios problemas operacionais atraveacutes de inconsistecircnciasna proacutepria configuraccedilatildeo

Dada esta facilidade aparente de ocorrecircncia de problemas e a falta de sensibilidadee formaccedilatildeo teacutecnica dos utilizadores para os resolver a equipa de assistecircncia teacutecnicaafecta ao GIS estava muitas vezes com sobrecarga de pedidos por parte dos clientes quepretendem estes problemas solucionados Existiam periacuteodos de especial relevacircncia noque toca a estas sobrecargas tais como os fechos de ano das empresas

A partir daqui surge a ideia e a necessidade da criaccedilatildeo do GISPSA com o intuito dealiviar a sobrecarga da equipa de assistecircncia teacutecnica mas essencialmente com o grandeobjectivo de assegurar que um cliente natildeo fica sem soluccedilatildeo para os problemas com que sedepara apenas porque natildeo estatildeo teacutecnicos disponiacuteveis A grande vantagem de um sistemapericial foi e seraacute sempre essa poder substituir um perito sem ter que enfrentar questotildeescomo a disponibilidade custos ou tempo

Assim surge o GISPSA que mais natildeo eacute que um projecto criado por Pinto no acircmbito deum projecto acadeacutemico cujo objectivo inicial passava por criar um Sistema Pericial paradiagnoacutestico de problemas operacionais do GIS Este sistema teve por base o conhecimentoe o respectivo raciociacutenio extraiacutedos de um perito da aacuterea Administrativa-Financeira doGIS

No caso de problemas mais complexos em que o Sistema Pericial natildeo consiga determi-nar os factores de erro eacute remetida a resoluccedilatildeo para um teacutecnico da empresa comunicandoesse facto ao utilizador Pinto (1998)

221 Arquitectura

Sendo um sistema pericial o GISPSA teria que ser desenvolvido utilizando uma lingua-gem que tivesse uma seacuterie de caracteriacutesticas A existecircncia de uma base de conhecimento apossibilidade de consultar factos adicionar novos factos ou ainda de remover factos nessamesma base e aspectos como o backtracking na realizaccedilatildeo de raciociacutenio ao inferir sobreesses mesmos factos natildeo permitia um leque muito alargado na escolha da linguagem de

20

22 GISPSA - GIS PROBLEM SOLVER ADVISOR

desenvolvimento

Desta forma ficou decidido que o GISPSA seria desenvolvido em prolog (maisespecificamente winprolog) Devido agrave simplicidade de utilizaccedilatildeo e extensa documentaccedilatildeode apoio o LPAProlog foi usado como motor de inferecircncia e o LPAFlex foi usado paraestabelecer a declaraccedilatildeo de regras

Como jaacute foi referido anteriormente o GISPSA eacute uma aplicaccedilatildeo standalone desenhadae desenvolvida para uma execuccedilatildeo local em mono-posto e sujeita agrave obtenccedilatildeo de umalicenccedila de utilizaccedilatildeo para garantir o seu funcionamento

Figura 2 GISPSA menu inicial

A aplicaccedilatildeo dispotildee de uma interface graacutefica tambeacutem criada em winprolog que utilizarecursos especiacuteficos do sistema operativo Windows

A base de conhecimento eacute armazenada num uacutenico ficheiro ksl e o seu carregamentonatildeo eacute parcial O mesmo seraacute dizer que toda a base de conhecimento eacute passada paramemoacuteria de trabalho assim que o programa arranca

222 Funcionamento

Em termos funcionais a aplicaccedilatildeo permite mudar o tipo de linguagem a ser empreguenas conversaccedilotildees estabelecidas com o utilizador consoante esta esteja a ser utilizadapor um teacutecnico (habitualmente os teacutecnicos com formaccedilatildeo na aacuterea) ou um utilizadornormal (o cliente que adquiriu a aplicaccedilatildeo e cuja formaccedilatildeo eacute mais reduzida ou ateacute mesmoinexistente)

Apoacutes a definiccedilatildeo da linguagem de interacccedilatildeo a utilizar o sistema inicia entatildeo o pedidode assistecircncia apresentando a mensagem ldquoSeleccione a aplicaccedilatildeordquo (figura 3) que permitenuma primeira instacircncia direccionar o raciociacutenio face agrave resposta do utilizador

21

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 3 GISPSA interacccedilatildeo inicial

Figura 4 GISPSA exemplo de interacccedilatildeo pergunta-resposta

223 Limitaccedilotildees

Apesar de ser inovadora na aacuterea esta aplicaccedilatildeo foi no iniacutecio bastante utilizada por algunsclientes tendo sofrido algum abandono de forma gradual ao longo do tempo de vida quejaacute leva Apoacutes uma anaacutelise chegou-se agrave conclusatildeo que as principais causas na origemdesse abandono seriam as seguintes

bull Adicionar regras implicava o conhecimento da sintaxe das mesmas Verificou-se que esta tarefa era demasiado complexa para um utilizador sem formaccedilatildeo esensibilidade suficientes na aacuterea da programaccedilatildeo

bull O acto de proceder agrave ediccedilatildeo de regras existentes na base de conhecimento traduz-senuma tarefa que para aleacutem de morosa eacute essencialmente de risco no sentido em

22

23 WEB EXPERT SYSTEMS

que natildeo existe uma verdadeira noccedilatildeo do impacto que estas alteraccedilotildees possam vir ater no comportamento global do sistema

bull O sistema apenas pode ser instalado em mono-posto o que obriga agrave obtenccedilatildeo deuma licenccedila por cada instalaccedilatildeo que se pretende realizar

bull O sistema natildeo permite a integraccedilatildeo com ambientes baseados em redes e sistemasdistribuiacutedos

bull Natildeo existe nenhum mecanismo de verificaccedilatildeo da base de conhecimento

bull O aspecto visual da aplicaccedilatildeo estaacute ultrapassado e eacute pouco apelativo

23 Web Expert Systems

Actualmente uma grande maioria dos sistemas periciais desenvolvidos satildeo desenhadospara um funcionamento em ambientes web As razotildees apontadas para esta orientaccedilatildeo satildeovaacuterias destacando-se a evoluccedilatildeo da proacutepria tecnologia as velocidades de transmissatildeode dados em redes a possibilidade de acesso em muacuteltiplas localizaccedilotildees geograacuteficas(desde que assegurado o necessaacuterio acesso agrave rede) e ainda o desenvolvimento de novasferramentas que possibilitam maior facilidade na criaccedilatildeo destes novos sistemas

Algumas das ferramentas que permitem actualmente o desenvolvimento de um sistemapericial baseado em ambientes web satildeo as seguintes

1 WebFlex - LPA Flex

2 EXSYS CORVID

3 WebCLIPS

4 JCLIPS

5 JESS

6 Acquire

WebFlex - Esta ferramenta permite a publicaccedilatildeo de um sistema pericial desenvolvidoem ldquoLPA Prologrdquo Os sistemas periciais desenvolvidos a partir deste meacutetodo necessitamainda de outra ferramenta para garantir o funcionamento o ldquoLPA ProWeb Serverrdquo Eacute

23

CAPIacuteTULO 2 ESTADO DA ARTE

possiacutevel adaptar um sistema pericial jaacute desenvolvido para ser disponibilizado numarede sem ser necessaacuterio efectuar qualquer tipo de alteraccedilatildeo No entanto se for pretendidoalgum tipo de configuraccedilatildeo extra por exemplo incluir imagens ou alterar a aparecircncia dealguns controlos eacute uma alteraccedilatildeo extremamente morosa e complexa

WebFlex allows you to deliver your flex-based expert systems onto Intranets

and Extranets easily Just create your rules and frames and questions as per normal

in flex and WebFlex will construct a web server-based solution using ProWeb where

all the questions are sent automatically configured for a standard HTMLJavascript

browserLogic Programming Associaties Ltd (2010)

Eacute possiacutevel alterar o HTML de saiacuteda que o webflex utiliza por defeito no entanto estaconfiguraccedilatildeo natildeo eacute tatildeo simples quanto poderaacute parecer agrave partida e obriga agrave alteraccedilatildeo dosistema pericial

Esta ferramenta funciona apenas em sistemas windows e eacute necessaacuteria a obtenccedilatildeo deuma licenccedila de utilizaccedilatildeo (natildeo eacute gratuita)

EXSYS CORVID - Eacute uma ferramenta composta por dois moacutedulos Exsys CORVID

Knowledge Automation Expert System Software e Exsys Servlet Runtime EXSYS (2010)

Natildeo foi possiacutevel encontrar nenhum sistema desenvolvido por esta ferramenta pormotivos de confidencialidade eou vantagem competitiva Estatildeo no entanto disponiacuteveisaplicaccedilotildees de demonstraccedilatildeo na paacutegina oficial da empresa Verificou-se que nenhumadas aplicaccedilotildees de demonstraccedilatildeo disponiacuteveis possui capacidades de dar explicaccedilotildees oujustificaccedilotildees

De acordo com EXSYS as aplicaccedilotildees construiacutedas com esta ferramenta podem seracedidas por Servlet Applet ou standalone e esta ferramenta necessita da obtenccedilatildeo deuma licenccedila de desenvolvimento

WebCLIPS - Segundo Michael Giordano o WebCLIPS eacute uma implementaccedilatildeo CGI

que envolve o C Language Integrated Production System (CLIPS) como aplicaccedilatildeo internaO CLIPS eacute uma ferramenta de desenvolvimento de sistemas periciais

Esta ferramenta foi desenvolvida em linguagem C o que significa que em termos deportabilidade desde que se possua o coacutedigo fonte este poderaacute ser compilado em qualquersistema operativo jaacute que o compilador para a linguagem estaacute disponiacutevel para todas as

24

23 WEB EXPERT SYSTEMS

versotildees existentes no mercado No entanto o WebCLIPS apenas foi desenvolvido parafuncionamento em sistemas windows e linux

O CLIPS eacute uma ferramenta livre que permite o desenvolvimento de sistemas baseadosem regras Pode ser integrado com algumas linguagens das quais se destacam C Java

(JCLIPS) FORTRAN entre outras Esta eacute provavelmente a ferramenta mais utilizada nodesenvolvimento de sistemas periciais devido agrave sua rapidez eficiecircncia e pelo facto de sergratuita

JCLIPS - Eacute uma biblioteca que permite integraccedilatildeo com Java e permite igualmentea utilizaccedilatildeo do motor do CLIPS a partir de uma classe Java Esta interligaccedilatildeo eacute feitaatraveacutes da importaccedilatildeo do ficheiro (dll ou so consoante o sistema operativo) e permite aexecuccedilatildeo de uma instacircncia ou seja permite ter apenas uma sessatildeo de um sistema pericialde cada vez Maarten Menken (2010)

JESS - O JESS eacute uma extensatildeo do CLIPS em JAVA Eacute basicamente uma bibliotecacujo objectivo natildeo passa por gerar uma aplicaccedilatildeo web mas sim servir de base para quepossa ser integrada ou utilizada para esse efeito Ernest Friedman-Hill (2010)

Utiliza uma linguagem especiacutefica designada JESS language equivalente ao CLIPSmas com novos componentes que a tornam uma linguagem complexa e de difiacutecil utilizaccedilatildeopor algueacutem sem conhecimentos de inteligecircncia artificial

Acquire - Eacute um produto bastante avanccedilado do ponto de vista tecnoloacutegico face aosconcorrentes no sentido em que permite uma separaccedilatildeo evidente entre a camada aplicaci-onal e a camada de apresentaccedilatildeo Promove uma separaccedilatildeo cliente-servidor e disponibilizaum Software Development Kit (SDK) que permite a integraccedilatildeo com outras aplicaccedilotildees

De acordo com Acquired Intelligence o produto estaacute sujeito a uma licenccedila de utilizaccedilatildeoe eacute disponibilizado ainda um serviccedilo online de alojamento de sistemas periciais omyAcquire disponiacutevel mediante uma subscriccedilatildeo semestral

231 Casos de estudo

Os sistemas periciais mais especificamente aqueles que satildeo baseados em sistemas webtecircm conhecido nos uacuteltimos anos uma evoluccedilatildeo gradual e consistente devido em grandeparte agrave simplicidade e disponibilidade que possibilitam Podem ser acedidos a partir dequalquer local no mundo 24 horas por dia e sem qualquer tipo de limitaccedilatildeo bastando

25

CAPIacuteTULO 2 ESTADO DA ARTE

apenas que se garanta o acesso agrave rede onde o sistema pericial estaacute colocado

As interfaces satildeo mais apelativas e chegam a fazer uso de imagens e outros meiosgraacuteficos ou de multimeacutedia cujo objectivo natildeo eacute apenas o de tornar os sistemas maisinteressantes mas tambeacutem mais eficazes jaacute que auxiliam de forma mais simples eesclarecida Os controlos utilizados as caixas de interacccedilatildeo e ateacute mesmo as explicaccedilotildees ejustificaccedilotildees (nos sistemas que o permitam) ajudam a ter uma ideia cada vez mais clarasobre o funcionamento dos sistemas obtendo-se assim melhores resultados

Alguns dos casos de estudo de sistemas periciais baseados em sistemas web existentesactualmente tecircm como um dos seus maiores objectivos a disponibilidade global dosmesmos (satildeo disponibilizados normalmente atraveacutes da internet) e os mais conhecidossatildeo

bull Landfill Operation Management Advisor (LOMA)

bull Medical Diagnosis Support System (MDSS)

bull Whale watcher

2311 LOMA - Landfill Operation Management Advisor

O LOMA eacute um sistema pericial online que analisa problemas operacionais falhas eacidentes em aterros comuns Aleacutem disso o LOMA fornece conselhos sobre como umgestor pode evitar esses problemas e em caso de ocorrecircncia sobre como diminuir oimpacto das suas consequecircncias Encontra-se disponiacutevel em httplomacivil

duthgr e eacute de utilizaccedilatildeo puacuteblica

O sistema pericial foi desenvolvido por Dokas recorrendo agraves ferramentas WebFlex eLPA ProWeb Server

A arquitectura da aplicaccedilatildeo web pode ser visualizada na figura 5 e consiste nosseguintes moacutedulos Dokas (2005)

bull Sistema pericial LOMA

bull Moacutedulo de aconselhamento

bull Moacutedulo operacional de problemas-causa

bull Eventos inicias

bull Problemas operacionais

26

23 WEB EXPERT SYSTEMS

bull Moacutedulo de explicaccedilotildees

bull Moacutedulo de submissatildeo de conhecimento e informaccedilatildeo

Figura 5 Arquitectura do LOMA

O moacutedulo mais relevante para o acircmbito desta dissertaccedilatildeo eacute o ldquoSistema pericial LOMArdquoe eacute tambeacutem o moacutedulo mais importante para a aplicaccedilatildeo LOMA

Eacute composto por vinte e quatro sub-moacutedulos cada um deles responsaacutevel por analisarum tipo especiacutefico de problema e ainda por um sub-moacutedulo extra que eacute responsaacutevel pelocontrolo do sistema

O sub-moacutedulo extra questiona o utilizador que descreve o problema (ver 6 e 7) ecom base na sua descriccedilatildeo apresenta uma lista de possiacuteveis problemas (ver 8) Quandoo utilizador selecciona um problema da lista de resultados eacute activado o respectivo sub-moacutedulo que por sua vez iraacute fornecer informaccedilatildeo de como prevenir o problema ou nocaso de este jaacute ter acontecido como minimizar as suas consequecircncias (ver 9)

27

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 6 Paacutegina inicial do sistema pericial LOMA

Figura 7 Sub-moacutedulo extra

28

23 WEB EXPERT SYSTEMS

Figura 8 Sugestatildeo de problemas do sub-moacutedulo extra

Figura 9 Sub-moacutedulo especializado

29

CAPIacuteTULO 2 ESTADO DA ARTE

2312 MDSS - Medical Diagnosis Support System

O MDSS eacute um sistema pericial utilizado na aacuterea da medicina e foi desenvolvido paraajudar no diagnoacutestico e tratamento da diabetes A diabetes pode afectar vaacuterias partes docorpo provocando diversos sintomas e complicaccedilotildees Quando detectada atempadamenteeacute mais facilmente controlaacutevel e menos perigosa Por todos estes motivos foi criado umsistema pericial online o MDSS que permite inferir sobre uma seacuterie de sintomas parachegar a um diagnoacutestico

Na opiniatildeo de Filho uma das vantagens deste sistema pericial eacute que possibilita quemeacutedicos em ambientes rurais ou perigosos e de difiacutecil acesso com recursos limitadospossam aceder ao sistema pericial de forma a terem uma ajuda no diagnoacutestico destadoenccedila O que comeccedilou como um sistema pericial vocacionado e orientado para adiabetes rapidamente cresceu e tornou-se algo mais do que isso sendo hoje utilizadocomo sistema de diagnoacutestico para vaacuterias doenccedilas

No que diz respeito agrave sua arquitectura o MDSS foi desenvolvido em LPA Prolog

recorrendo aos moacutedulos ProWeb e ProData e utilizando Open Data Base Connectivity

(ODBC) para acesso agrave base de dados Utiliza loacutegica fuzzy para raciociacutenio sobre incertezaspara lidar com conhecimento parcial

O sistema eacute composto por trecircs moacutedulos No primeiro moacutedulo eacute possiacutevel um es-pecialista definir sintomas exames cliacutenicos exames de laboratoacuterio e exames relativosa uma ou mais doenccedilas Eacute ainda possiacutevel a atribuiccedilatildeo de valores (pesos estatiacutesticos)ou de resultados que definem uma doenccedila Isso permite por exemplo que a pressatildeoarterial possa estar associada ao diagnoacutestico de pressatildeo alta diabetes gravidez de riscoou insuficiecircncia renal entre outros Informaccedilotildees de consultas anteriores e exames satildeoautomaticamente ligadas e analisadas sob fundamentaccedilatildeo loacutegico temporal

No segundo moacutedulo o sistema permite consultas atraveacutes do qual os dados relevantespara o paciente satildeo registados e relacionados com outros exames correlacionados Durantea fase de diagnoacutestico o sistema pode sugerir outros testes ou procedimentos para entatildeoinferir se haacute outros riscos e doenccedilas a serem investigados

No terceiro moacutedulo eacute efectuado o diagnoacutestico O sistema iraacute localizar automatica-mente os diagnoacutesticos jaacute registados noutras consultas incluindo aquelas feitas por outrosmeacutedicos Aleacutem disso o sistema pesquisa niacuteveis de doenccedilas de acordo com os resultadosdos exames Pode tambeacutem sugerir uma investigaccedilatildeo mais aprofundada sempre que osdados natildeo sejam suficientes para garantir um diagnoacutestico preciso

30

23 WEB EXPERT SYSTEMS

2313 Whale watcher

O sistema pericial Whale watcher eacute um sistema de demonstraccedilatildeo da plataforma AcquireEste e outros sistemas periciais similares estatildeo disponiacuteveis na paacutegina da Acquire (httpwwwaiinccademos)

Figura 10 Paacutegina principal do sistema pericial Whale Watcher

Figura 11 Paacutegina final do sistema pericial Whale Watcher

Atraveacutes das demonstraccedilotildees facultadas pela Acquire natildeo eacute possiacutevel concluir se existealgum tipo de sistema de explicaccedilotildees No entanto no final de cada sessatildeo do sistemapericial eacute possiacutevel consultar um resumo (ver 11) que funciona como uma explicaccedilatildeomuito baacutesica da inferecircncia realizada pelo sistema pericial jaacute que se limita apenas amostrar os factos que foram respondidos durante a sessatildeo

31

3Ferramentas utilizadas

Durante o desenvolvimento deste trabalho foi necessaacuterio decidir sobre quais as ferramen-tas a utilizar para a criaccedilatildeo do novo sistema pericial Atendendo a algumas caracteriacutesticasproacuteprias e objectivos traccedilados era necessaacuterio utilizar alguma especificidade na escolhapara garantir a exclusividade do resultado Desenvolvimento web capacidade de pro-ceder a inferecircncia sobre conhecimento representado atraveacutes de regras simplicidade deutilizaccedilatildeo actualidade da tecnologia entre outras caracteriacutesticas influenciaram significa-tivamente nesta escolha

Entre os vaacuterios ambientes de desenvolvimento disponiacuteveis a opccedilatildeo recaiu sobre umque para aleacutem de simples e eficiente era utilizado regularmente em situaccedilatildeo profissi-onal pelo criador deste projecto pelo que aqui foi relativamente simples chegar a umaconclusatildeo

Indo de encontro agraves razotildees que levaram agrave escolha da linguagem do motor de inferecircnciautilizada no projecto que deu origem a este trabalho tambeacutem aqui foi escolhida umalinguagem que possibilita o backtracking de forma eficaz e simplificada caracteriacutesticaessencial para o bom funcionamento do motor de inferecircncia e que contribui largamentepara o sucesso do sistema pericial

31 Ambiente de desenvolvimento

O ambiente de desenvolvimento e respectiva linguagem de programaccedilatildeo utilizados para acriaccedilatildeo do interface do sistema pericial foram seleccionados levando em conta algunsrequisitos e factores considerados necessaacuterios e ateacute mesmo essenciais para a soluccedilatildeo finalA listagem dessas caracteriacutesticas eacute a seguinte

bull Baixo custo de disponibilizaccedilatildeo

33

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

bull Independecircncia do sistema operativo

bull Simples escalabilidade

bull Visual apelativo

Com base nesta lista de caracteriacutesticas consideradas desejaacuteveis ou ateacute mesmo essen-ciais para a soluccedilatildeo final e considerando tambeacutem a jaacute longa experiecircncia de utilizaccedilatildeonesta plataforma foi escolhida a linguagem Java J2EE utilizando a framework Icefaces eo portal Glassfish Podemos considerar para esta escolha uma seacuterie de paracircmetros paraaleacutem dos jaacute evidenciados

bull O J2EE eacute uma linguagem independente do sistema operativo

bull O J2EE caracteriza-se pela sua modularidade

bull Glassfish eacute um portal open source com suporte para J2EE

bull Icefaces eacute uma framework JavaServer Faces (JSF) compatiacutevel com o Glassfish

bull Icefaces permite a criaccedilatildeo de interfaces graacuteficos de uma forma simples

bull Existecircncia de boa documentaccedilatildeo relativamente a todos os produtos

Para aleacutem disto podemos ainda considerar e referir outros produtos e componentesque natildeo sendo menos importantes tambeacutem foram utilizados durante o desenvolvimentodeste trabalho A lista completa de ferramentas eacute a seguinte

bull Java J2EE 60

bull Eclipse Galileo (com plugins para Glassfish e svn) - Integrated Development

Environment (IDE) para Java

bull Icefaces 182

bull GlassFish - portal

bull Visual SVN Server e Tortoise - controlo de versotildees

bull MikTeX - latex

bull TexnicCenter - IDE para latex

34

32 MOTOR DE INFEREcircNCIA

32 Motor de inferecircncia

Em qualquer sistema pericial o motor de inferecircncia eacute o cerne do mesmo O seu desenvol-vimento obriga habitualmente a um esforccedilo e concentraccedilatildeo maiores porque aqui residea forma como o sistema iraacute percorrer as vaacuterias etapas necessaacuterias para alcanccedilar umasoluccedilatildeo

Tambeacutem neste trabalho o motor de inferecircncia eacute um ponto essencial e a sua implemen-taccedilatildeo teve um papel destacado no processo de anaacutelise realizado Actualmente existemalguns produtos que podem ser utilizados integral ou parcialmente como motor deinferecircncia de um sistema pericial esses produtos podem ser frameworks ou shells ouainda Business Rule Management System (BRMS)

Os termos framework e shell satildeo muitas vezes utilizados como sinoacutenimo umaframework eacute uma abstracccedilatildeo que permite agregar formas de resoluccedilatildeo de problemascomuns uma shell eacute similar no sentido em que disponibiliza uma camada de abstracccedilatildeouma ldquoconchardquo que encapsula os serviccedilos

No sentido de tentar reutilizar um produto jaacute existente foi elaborado um estudo acercados actuais produtos e das suas caracteriacutesticas A abordagem seguida para esse estudo foiuma abordagem por fases em que gradualmente se foi estreitando o conjunto de soluccedilotildeesaceitaacuteveis mediante a utilizaccedilatildeo de alguns criteacuterios

Foram consideradas cinco fases

bull Fase I - Recolha de candidatos

bull Fase II - Requisitos base

bull Fase III - Viabilidade econoacutemica

bull Fase IV - Viabilidade teacutecnica

bull Fase V - Prova de conceito

321 Fase I - Recolha de candidatos

A fase I teve como objectivo recolher alguns dos actuais produtos que possuam caracteriacutes-ticas desejadas para um sistema deste geacutenero Natildeo foram considerados alguns produtosque satisfaziam os requisitos mas que natildeo permitem uma integraccedilatildeo com Java Foramidentificados os seguintes produtos como potenciais integradores do projecto

35

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

Produto BRMS FrameworkDrools X XHammurapi Rules XILog XJCLIPS XJESS XJEOPS XJRuleEngine XOpenL Tablets XOpenRules XProva language XYprolog XZilonis X

Tabela 1 Listagem de produtos da Fase I

Drools - ou JBoss Rules eacute um produto open source da RedHat (2010) Define umalinguagem especiacutefica para as regras Eacute desenvolvido em Java e utiliza um mecanismo deencadeamento directo baseado em regras natildeo implementa justificaccedilotildees

Hammurapi Rules - eacute um produto desenvolvido em Java por Hammurapi GroupEste motor de inferecircncia utiliza a sintaxe da linguagem Java para definiccedilatildeo de regras Eacutepossiacutevel definir grupos de regras em XML e estaacute disponiacutevel um plug-in para Eclipse quepermite a ediccedilatildeo destes grupos Suporta encadeamento directo e indirecto

ILOG - WebSphere ILOG Business Rule Management Systems eacute como o nome indicaum BRMS eacute um produto da IBM (2010) que requer licenciamento adequado Eacute necessaacuteriaa instalaccedilatildeo e configuraccedilatildeo de alguns componentes de forma a que o produto possa serutilizado por exemplo Rule Team Server Rule Execution Server Http server entreoutros

JCLIPS - eacute um produto open source mantido por uma comunidade e permite aintegraccedilatildeo entre Java e CLIPS O CLIPS ldquoC Language Integrated Production Systemrdquo eacuteum sistema pericial desenvolvido em linguagem C Maarten Menken (2010)

JESS - eacute um produto comercial da Sandia National Laboratories desenvolvidoem Java Eacute necessaacuterio adquirir licenccedilas para efectivar a utilizaccedilatildeo do mesmo ErnestFriedman-Hill (2010)

JEOPS - Java Embedded Object Production System (JEOPS) eacute uma framework open

source desenvolvida num acircmbito acadeacutemico por Carlos Figueira Filho

36

32 MOTOR DE INFEREcircNCIA

JRuleEngine - eacute um produto open source desenvolvido em Java e mantido porMcarniel (2010) As regras satildeo compiladas para classes Java

OpenL Tablets - eacute um BRMS open source cuja principal vantagem eacute a integraccedilatildeocom a folhas de caacutelculo Excel Permite a utilizaccedilatildeo de tabelas de decisatildeo no formatoExcel OpenL (2010)

OpenRules - eacute um produto da OpenRules Inc sujeito a licenccedila de utilizaccedilatildeo Eacutetotalmente orientado para a folha de caacutelculo Excel da Microsoft

Prova language - eacute um produto open source desenvolvido em Java por KozlenkovAlex and Paschke Disponibiliza uma linguagem muito semelhante ao prolog Eacute umproduto bastante direccionado para a comunicaccedilatildeo entre agentes expondo inclusiveacute umsistema multi-agente

Yprolog - eacute um produto open source desenvolvido em Java por Boris van SchootenEacute uma reacuteplica do prolog desenvolvida totalmente em Java Foi evoluindo ao longo dotempo a partir de produtos como o WProlog e o XProlog

Zilonis - eacute um produto desenvolvido em Java por Elie Levy O formato das regras eacutesemelhante ao CLIPS

322 Fase II - Requisitos base

A fase II teve como objectivo filtrar a lista de candidatos no sentido de excluir produtosque natildeo se enquadrem directamente com os requisitos do sistema a desenvolver Assimsendo foram excluiacutedos alguns dos candidatos jaacute indicados e os principais motivos daexclusatildeo satildeo

bull Natildeo permitirem a integraccedilatildeo com um portal

bull Formato das regras eacute fechado natildeo possibilitando possiacuteveis e futuras evoluccedilotildees

bull Natildeo disponibilizaccedilatildeo de acesso aos serviccedilos internos mais concretamente natildeofornecem uma framework de controlo Desta forma natildeo eacute possiacutevel reutilizar partesdo motor de inferecircncia ou do sistema de gestatildeo de regras sem que este seja feitoatraveacutes do proacuteprio produto

Candidatos excluiacutedos pelas razotildees atraacutes expostas

37

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProdutoILogOpenRulesOpenL Tablets

Tabela 2 Listagem de produtos excluiacutedos na Fase II

323 Fase III - Viabilidade econoacutemica

Sendo um paracircmetro com importacircncia relativa dada a possiacutevel aplicaccedilatildeo comercial deum produto baseado neste trabalho natildeo deixa de ser importante para o estudo realizadoDesta forma a fase III teve como objectivo filtrar a lista de resultados no sentido de excluirprodutos que natildeo sejam economicamente viaacuteveis quer por motivos de licenciamentocomercial quer por motivos de licenccedilas de utilizaccedilatildeo

Foram entatildeo considerados os produtos constantes da tabela 3 como natildeo viaacuteveis nosentido em que existem produtos open source similares para o efeito pretendido

ProdutoDroolsJESS

Tabela 3 Listagem de produtos excluiacutedos na Fase III

324 Fase IV - Viabilidade teacutecnica

Esta fase teve por objectivo filtrar a lista de resultados de forma a que os produtos natildeoviaacuteveis do ponto de vista teacutecnico natildeo sejam considerados para a escolha final

Os produtos que natildeo foram considerados viaacuteveis por questotildees teacutecnicas satildeo

38

32 MOTOR DE INFEREcircNCIA

Produto RazatildeoJEOPS Documentaccedilatildeo disponiacutevel bastante vaga projecto desconti-

nuado e natildeo estaacutevelJRuleEngine As regras satildeo compiladas para Java natildeo permite escalabili-

dade sem compilar o projectoZilonis Natildeo estaacute preparado para ser utilizado como framework ape-

nas permite uma aplicaccedilatildeo stand-alone

Hammurapi Rules As regras satildeo compiladas para Java natildeo permite escalabili-dade sem compilar o projecto

Tabela 4 Listagem de produtos excluiacutedos na Fase IV

325 Fase V - Prova de conceito

Nesta uacuteltima fase restaram trecircs produtos JClips Prova e YProlog Apoacutes a realizaccedilatildeode uma prova de conceito com estes produtos foram encontradas algumas vantagens edesvantagens Esta anaacutelise pode ser consultada nas tabelas 5 6 e 7

JClipsVantagens Desvantagens

bull Linguagem CLIPS bull Apenas permite 1 execuccedilatildeo deforma a permitir vaacuterias utilizaccedilotildeesdo motor de inferecircncia eacute necessaacuterioimplementar loacutegica especiacutefica

bull Ausecircncia de documentaccedilatildeo

Tabela 5 JClips - Vantagens e desvantagens

39

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProvaVantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza exemplos de uti-lizaccedilatildeo

bull Uacuteltima actualizaccedilatildeo em 10 deJunho de 2010

bull Instaacutevel

bull Bastante ocupaccedilatildeo de recursos(CPU e memoacuteria)

bull Disponibilizaccedilatildeo de pouca docu-mentaccedilatildeo

bull Ao invocar um predicado natildeo ins-tancia apenas as variaacuteveis na pri-meira vez mas devolve uma lista detodos os resultados possiacuteveis simi-lar ao predicado findall do LPA Pro-log

Tabela 6 Prova - Vantagens e desvantagens

YProlog

Vantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza documentaccedilatildeo eexemplos de utilizaccedilatildeo

bull Operaccedilotildees baacutesicas do Prologtecircm o mesmo comportamento

bull Uacuteltima actualizaccedilatildeo em 21 de Abrilde 2006

Tabela 7 YProlog - Vantagens e desvantagens

326 Conclusatildeo e fundamentaccedilatildeo da escolha

Tratando-se do nuacutecleo do sistema pericial e sabendo que natildeo existe actualmente ummotor de inferecircncia que corresponda totalmente aos requisitos necessaacuterios foi decidido

40

32 MOTOR DE INFEREcircNCIA

desenvolver um motor de inferecircncia de raiz recorrendo a um produto que permitisse umdesenvolvimento raacutepido e com uma curva de aprendizagem pouco acentuada Para tale depois do estudo realizado perante as vaacuterias hipoacuteteses disponiacuteveis foi decidido optarpelo YProlog

Na uacuteltima fase do estudo apresentado entre os candidatos disponiacuteveis este aparececomo o mais viaacutevel quer pelos aspectos de adaptabilidade funcionamento e facilidadede utilizaccedilatildeo quer ainda pelo nuacutemero reduzido de desvantagens encontradas face aosrestantes

41

4Wexsys

Este trabalho baseia-se na criaccedilatildeo de um sistema pericial baseado no GISPSA e oobjectivo principal passa pela integraccedilatildeo do novo sistema num ambiente de acesso globalou mais especificamente num portal web Para atingir tal meta foi descrito nos capiacutetulosanteriores quais as ferramentas a utilizar sendo que agora vamos compreender como eacuteque a soluccedilatildeo em si foi desenvolvida

O sistema que nasceu a partir desta implementaccedilatildeo foi baptizado com o nome wexsys- ldquoWeb Expert Systemrdquo Partindo da base do GISPSA o wexsys possui um motor deinferecircncia totalmente novo criado especificamente no acircmbito deste trabalho e ainda umabase de conhecimento Foi decidido adoptar o princiacutepio de utilizaccedilatildeo de regras para arepresentaccedilatildeo da base de conhecimento

De referir ainda que o raciociacutenio utilizado no motor de inferecircncia segue uma filosofiado tipo backward chaining princiacutepio jaacute descrito nos capiacutetulos anteriores

Detentor de uma interface considerada actual para os paracircmetros utilizados nos diasque correm este novo sistema pericial foi criado atraveacutes da utilizaccedilatildeo de J2EE e Icefaces

que lhe conferem um aspecto renovado e extremamente apelativo aos utilizadores Satildeoutilizadas teacutecnicas tais como Ajax que providenciam uma dinacircmica de funcionamentomuito interessante do ponto de vista da utilizaccedilatildeo

41 Arquitectura global

A soluccedilatildeo foi projectada de acordo com a arquitectura J2EE ou seja utilizando uma sepa-raccedilatildeo em moacutedulos ou componentes Foram criados dois moacutedulos principais pWexsysEAR

e WexsysEAR estes moacutedulos satildeo a separaccedilatildeo da aplicaccedilatildeo em duas grandes camadas acamada web e a camada de negoacutecio

Esta separaccedilatildeo permite a instalaccedilatildeo da aplicaccedilatildeo num uacutenico servidor ou uma instala-

43

CAPIacuteTULO 4 WEXSYS

ccedilatildeo distribuiacuteda por vaacuterios servidores possibilitando tambeacutem a utilizaccedilatildeo de clusters Estaseparaccedilatildeo torna-se bastante uacutetil se pretendermos expandir a aplicaccedilatildeo para uma utilizaccedilatildeomais intensa ao niacutevel dos acessos A possibilidade de instalaccedilatildeo em muacuteltiplas maacutequinaspermite a obtenccedilatildeo de melhores resultados quando confrontada com a utilizaccedilatildeo de umambiente com apenas um uacutenico servidor

Figura 12 Arquitectura da soluccedilatildeo

411 Moacutedulo pWexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente visual da soluccedilatildeo tambeacutem conhecida porPresentation Layer Este moacutedulo eacute composto pelos componentes descritos na figura 13

Figura 13 Arquitectura do moacutedulo visual

bull pWexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

44

41 ARQUITECTURA GLOBAL

bull wWexsysGUI - componente principal que conteacutem as JSPrsquos servlet e managed

beans

bull jWexsysWebClient - classes utilizadas na camada visual

bull TGGraphLayout - componente externo que disponibiliza um controlo que permitea definiccedilatildeo de um grafo este componente vai ser descrito na secccedilatildeo 4133

bull jWexsysLog - permite o registo da ocorrecircncia de erros

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

412 Moacutedulo WexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente de negoacutecio da aplicaccedilatildeo tambeacutem conhecidapor Business Layer eacute o centro de controlo de toda a soluccedilatildeo Este moacutedulo eacute compostopor alguns componentes como podemos ver na figura 14

Figura 14 Arquitectura do moacutedulo de negoacutecio

bull WexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

bull eWexsys - componente principal responsaacutevel pela criaccedilatildeo dos serviccedilos

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

bull jWexsysUtils - classes utilitaacuterias internas

45

CAPIacuteTULO 4 WEXSYS

bull jWexsysLog - componente auxiliar para permitir o tratamento de erros

bull jWexsysEngine - responsaacutevel pela implementaccedilatildeo do motor de inferecircncia

bull YProlog - permite a interpretaccedilatildeo de coacutedigo prolog Este componente vai serdescrito na secccedilatildeo 4133

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos

Como jaacute foi referido o wexsys foi desenvolvido respeitando a arquitectura J2EE como talos componentes que integram a aplicaccedilatildeo foram tambeacutem criados seguindo esse conceitoTodos os componentes foram estruturados de forma a poderem ser reutilizados com omiacutenimo de dependecircncias e toda a aplicaccedilatildeo foi projectada de forma a retirar o maacuteximopartido desta divisatildeo

Podemos ver na figura 15 um diagrama que permite verificar de que forma os compo-nentes estatildeo a ser utilizados O diagrama tem trecircs agrupamentos que pretendem descreverutilizando uma linguagem Object Oriented (OO) a sua visibilidade Os temos publicprotected e private satildeo utilizados como analogias aos respectivos conceitos na linguagemOO

4131 Camada de acesso puacuteblico

A camada de acesso puacuteblico expotildee os meacutetodos de interacccedilatildeo com a aplicaccedilatildeo sendocomposta por trecircs componentes wWexsysGUI jWexsysWebClient e eWexsysClient

Figura 15 Wexsys - Integraccedilatildeo dos componentes

46

41 ARQUITECTURA GLOBAL

Os componentes eWexsysClient e jWexsysWebClient contecircm interfaces de ligaccedilatildeoentre a camada visual e a camada de negoacutecio

eWexsysClient - disponibiliza as classes designadas Data Transfer Object (DTO) eainda o interface para os serviccedilos disponibilizados pelo wexsys

jWexsysWebClient - disponibiliza classes que caracterizam os conceitos de negoacuteciomas que contecircm atributos adicionais A razatildeo da existecircncia deste componente justificandashsecom a eventual expansatildeo da aplicaccedilatildeo para uma nova camada visual Os exemplos decoacutedigo 1 e 2 permitem-nos observar uma utilizaccedilatildeo de atributos extra na classe visualpara controlo de ocorrecircncia de erros

1 p u b l i c c l a s s RuleView

3 p r i v a t e i n t l e v e l = 0

5 Rule i d e n t i f i e r

7 p r i v a t e S t r i n g i d e n t i f i e r = n u l l

9 p r i v a t e S t r i n g i d e n t i f i e r E r r = n u l l

11 p r i v a t e b o o l e a n i d e n t i f i e r I n E r r = f a l s e

13

Rule d e s c r i p t i o n

15

p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

17

p r i v a t e S t r i n g d e s c r i p t i o n E r r = n u l l

19

p r i v a t e b o o l e a n d e s c r i p t i o n I n E r r = f a l s e

21

Coacutedigo 1 Excerto da classe RuleView

p u b l i c c l a s s Rule implemen t s S e r i a l i z a b l e

47

CAPIacuteTULO 4 WEXSYS

2

p r i v a t e i n t l e v e l = 0

4

Rule i d e n t i f i e r

6

p r i v a t e S t r i n g i d e n t i f i e r = n u l l

8

10 Rule d e s c r i p t i o n

12 p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

14 Coacutedigo 2 Excerto da classe Rule

O outro componente envolvido na camada puacuteblica o wWexsysGUI eacute o responsaacute-vel pela interacccedilatildeo com aplicaccedilatildeo Eacute o componente que disponibiliza as paacuteginas e oresponsaacutevel pela coordenaccedilatildeo de todo o processo web

4132 Camada de acesso protegido

A camada de acesso protegido disponibiliza componentes que podem ser utilizados pelosdois moacutedulos mas que natildeo estatildeo disponiacuteveis para o exterior Neste caso existe apenas umcomponente nestas condiccedilotildees o jWexsysLog cuja funccedilatildeo eacute assegurar o registo de erros

jWexsysLog - componente responsaacutevel pelo registo de erros utiliza internamente aframework log4j

4133 Camada de acesso privado

A camada de acesso privado incluiacute todos os componentes responsaacuteveis por processa-mento interno Os componentes responsaacuteveis pelo processamento interno satildeo eWexsysjWexsysEngine e jWexsysUtils Tambeacutem incluiacutedos no conceito de processamento internoestatildeo os componentes TGGraphLayout e YProlog

eWexsys - eacute o componente responsaacutevel pela implementaccedilatildeo do interface de negoacuteciodelegando as funcionalidades em classes especializadas ou no componente responsaacutevelpela integraccedilatildeo com o nuacutecleo da aplicaccedilatildeo o jWexsysEngine

48

41 ARQUITECTURA GLOBAL

jWexsysEngine - eacute o componente responsaacutevel pelo nuacutecleo da aplicaccedilatildeo ou sejaeacute o responsaacutevel pela integraccedilatildeo do java com o prolog e vice-versa Eacute o componenteresponsaacutevel pelo mapeamento das classes de java para as classes de comunicaccedilatildeo com oprolog

jWexsysUtils - eacute um componente auxiliar que disponibiliza e encapsula utilitaacuteriospara uma melhor organizaccedilatildeo interna da aplicaccedilatildeo

TGGraphLayout - eacute um componente tambeacutem conhecido por TouchGraph eacute umprojecto mantido por uma comunidade e estaacute disponiacutevel no sourceforge AlexanderShapiro (2010)

YProlog - este componente foi o escolhido durante a fase de estudo da implementaccedilatildeopara ser a base do motor de inferecircncia (321)

4134 Fluxo de invocaccedilatildeo

A aplicaccedilatildeo foi desenvolvida de forma a que todos os pedidos seguissem um mesmo fluxode invocaccedilatildeo de forma a uniformizar o processo Na figura 16 temos uma relaccedilatildeo dasclasses principais da aplicaccedilatildeo

Figura 16 Diagrama de classes principais

O fluxo de invocaccedilatildeo inicia-se atraveacutes do WexsysBean no caso de funcionalidades

49

CAPIacuteTULO 4 WEXSYS

do motor de inferecircncia ou atraveacutes do WexsysKBBean no caso de funcionalidades dabase de conhecimento Ambos os managed beans delegam no WexsysViewManager querecorrendo agrave classe WexsysViewHelper converte as classes view para classes DTO Aclasse WexsysViewManager por sua vez delega no session bean WexsysSessionBean quemediante o tipo de pedido delega nas classes de validaccedilatildeo ou nas classes do motor deinferecircncia WexsysEngineImpl

Este processo pode ser observado na figura 17 que representa um diagrama de sequecircn-cia exemplificativo do fluxo de invocaccedilatildeo geneacuterico

Figura 17 Diagrama de sequecircncia do fluxo de invocaccedilatildeo

414 Portal

O wexsys tem como ponto de entrada na aplicaccedilatildeo uma paacutegina inicial que permite aidentificaccedilatildeo do utilizador no sistema pericial Como se trata de um trabalho acadeacutemico aparte de validaccedilatildeo e autenticaccedilatildeo de utilizadores natildeo foi contemplada como tal eacute possiacutevelautenticar-se com qualquer utilizador Para aleacutem da autenticaccedilatildeo eacute ainda possiacutevel indicarpara a sessatildeo actual qual o miacutenimo grau de confianccedila para a apresentaccedilatildeo de uma resposta

50

41 ARQUITECTURA GLOBAL

O endereccedilo da aplicaccedilatildeo respeita o seguinte formato httpservidorportawWexsysGUI onde servidor e porta satildeo os dados de configuraccedilatildeo do Portal Server

Figura 18 Wexsys - Paacutegina inicial

Quando o utilizador inicia a utilizaccedilatildeo do sistema ficam disponiacuteveis trecircs funcionali-dades que seratildeo referidas nas secccedilotildees seguintes

4141 Templates

Um dos aspectos comuns a toda a aplicaccedilatildeo eacute o aspecto graacutefico tendo este sido imple-mentado recorrendo a Facelets Um template facelets define-se pela criaccedilatildeo de umapaacutegina modelo em que existem zonas dinacircmicas Este conceito eacute conhecido de outrastecnologias por exemplo Web Parts ou Master Pages desenvolvidos pela Microsoft

O coacutedigo 3 permite ver como foi desenvolvido o template principal

lthtml

2 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

4 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

6

lt i c e o u t p u t D e c l a r a t i o n

8 doc typeRoo t =HTML

d o c t y p e P u b l i c =minus W3C DTD XHTML 1 0 S t r i c t EN

10 doc typeSys tem = h t t p www w3 org TR xhtml1 DTD xhtml1minus s t r i c t

d t d gt

51

CAPIacuteTULO 4 WEXSYS

12 lthead gt

lt t i t l e gtwexsys minus p a g e T i t l e lt t i t l e gt

14 [ meta t a g s e l i n k t o c s s f i l e s ]

lt head gt

16 ltbody gt

lt f view l o c a l e = f a c e s C o n t e x t e x t e r n a l C o n t e x t r e q u e s t L o c a l e gt

18 lt i c e l o a d B u n d l e basename =com wexsys g u i r e s o u r c e s bund leRes

v a r = bund leRes gt

lt i c e form p a r t i a l S u b m i t = t r u e gt

20 lt d i v i d = wrapper gt

lt d i v i d = logo gt

22 lth1gtlta h r e f = gtWExSys lt a gt lt h1gt

lth2gtweb e x p e r t system lt h2gt

24 lt div gt

lt d i v i d = h e a d e r gt

26 lt d i v i d =menugt

[ Menu c o n t e n t ]

28 lt div gt

lt div gt

30 lt div gt

lt d i v i d = page gt

32 lt d i v i d = c o n t e n t gt

lt u i i n s e r t name= c o n t e n t gt

34 D e f a u l t C o n t e n t

lt u i i n s e r t gt

36 lt div gt

lt d i v i d = s i d e b a r gt

38 lt u i i n s e r t name= s i d e b a r gt

S i d e b a r c o n t e n t

40 lt u i i n s e r t gt

lt div gt

42 lt d i v s t y l e = c l e a r bo th gt

lt div gt

44 lt div gt

lt d i v i d = f o o t e r gt

46 F o o t e r c o n t e n t

lt div gt

48 lt i c e form gt

52

41 ARQUITECTURA GLOBAL

lt f view gt

50 lt body gt

lt html gt Coacutedigo 3 Coacutedigo do template principal do portal

Na listagem de coacutedigo 3 podemos ver a vermelho as aacutereas que foram definidas comodinacircmicas no coacutedigo 4 tambeacutem a vermelho podemos ver as respectivas aacutereas num cenaacuteriode implementaccedilatildeo de uma paacutegina

1 lt u i c o m p o s i t i o n

t e m p l a t e =WEBminusINF incminust e m p l a t e s mainminust e m p l a t e j s p x

3 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

5 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

7

9 lt u i d e f i n e name= c o n t e n t gt

[ ]

11 lt u i d e f i n e gt

13 lt u i d e f i n e name= s i d e b a r gt

[ ]

15 lt u i d e f i n e gt

17 lt u i c o m p o s i t i o n gt Coacutedigo 4 Coacutedigo da paacutegina inicial do portal

415 Suporte multi-liacutengua

O wexsys foi desenvolvido considerando um factor bastante relevante numa aplicaccedilatildeoactual o suporte multi-liacutengua Este suporte eacute uma das vantagens do sistema e foiimplementado recorrendo a ficheiros de recursos (properties) de forma a exteriorizartodos os textos de saiacuteda

Desta forma para dar suporte a uma nova liacutengua apenas teremos que traduzir os textosnos ficheiros de recursos e de alterar a aplicaccedilatildeo de forma a permitir seleccionar o idioma

53

CAPIacuteTULO 4 WEXSYS

A alteraccedilatildeo a ser efectuada na aplicaccedilatildeo eacute muito simples jaacute que basta passar o valor doatributo ldquolocalerdquo da tag ldquofviewrdquo como sendo a liacutengua pretendida

42 Motor de inferecircncia

Para este trabalho foi definida a criaccedilatildeo de um motor de inferecircncia de raiz que pudesseefectivamente substituir o utilizado no sistema base O novo motor desenvolvido teraacute quesuportar uma seacuterie de especificaccedilotildees a comeccedilar pela capacidade de operar num ambientemulti-utilizador

O motor de inferecircncia deve estar preparado para lidar com conhecimento incerto foiescolhido a teacutecnica dos factores de certeza por ser uma teacutecnica simples de reproduzir eeficaz na sua utilizaccedilatildeo

Para aleacutem disto e tratando-se um sistema pericial o motor de inferecircncia deveraacuteser independente da base de conhecimento utilizada e deveraacute idealmente suportar umsistema de explicaccedilotildees que responda a eventuais pedidos por parte dos utilizadores quepretendam ver mais detalhadamente quais as regras que conduziram agrave conclusatildeo obtidaTambeacutem seraacute possiacutevel saber porque eacute que determinada questatildeo eacute colocada (explicaccedilotildeesvulgarmente denominadas de como e porquecirc)

421 Multi-utilizador

Quando se pretende que um sistema pericial tenha uma utilizaccedilatildeo mono-posto (comoera o caso do GISPSA) apenas eacute criada uma instacircncia por cada vez que eacute chamado omotor de inferecircncia No nosso caso tendo sido estabelecido que o novo sistema teriaque permitir uma utilizaccedilatildeo multi-utilizador eacute necessaacuterio desenvolver os mecanismosnecessaacuterios para permitir execuccedilotildees de vaacuterias instacircncias para o novo motor de inferecircncia

A classe WexsysEngineFactory5 eacute a responsaacutevel por criar uma instacircncia do motorde inferecircncia por cada utilizador que inicia a utilizaccedilatildeo do sistema Esta classe tem ummeacutetodo do tipo static o meacutetodo getInferenceEngine que tem como paracircmetros de entradaum utilizador e devolve uma instacircncia do motor de inferecircncia As instacircncias activas satildeoguardadas internamente e sempre que eacute invocado o meacutetodo eacute obtida a respectiva instacircnciaNo caso de ainda natildeo existir uma instacircncia entatildeo eacute criada uma nova e guardada

1

C r e a t e s an i n s t a n c e o f I n f e r e n c e E n g i n e

54

42 MOTOR DE INFEREcircNCIA

3

param usernameKey

5 The usernameKey t o use

7 return I n f e r e n c e E n g i n e i n s t a n c e

throws WexsysArgumen tExcep t ion

9

p u b l i c s t a t i c WexsysEngineImpl g e t I n f e r e n c e E n g i n e ( S t r i n g

usernameKey )

11 throws WexsysArgumentExcept ion

i f ( g e t R u l e U r l ( ) == n u l l | | g e t R u l e U r l ( ) l e n g t h ( ) == 0)

13 throw new WexsysArgumentExcept ion ( mainKnowledgeBaseUrl

r u l e U r l )

15 WexsysEngineImpl i n f e r e n c e E n g i n e = n u l l

17 Have we a l r e a d y c r e a t e d an i n s t a n c e

i f ( g e t I n f e r e n c e E n g i n e s ( ) c o n t a i n s K e y ( usernameKey ) )

19 Obta in t h e i n s t a n c e a s s o c i a t e d t o t h e s p e c i f i e d key

i n f e r e n c e E n g i n e = g e t I n f e r e n c e E n g i n e s ( ) g e t ( usernameKey )

21 e l s e

Cr ea t e a new i n s t a n c e and s t o r e i t i n t h e h o l d e r

23 i n f e r e n c e E n g i n e = new WexsysEngineImpl ( usernameKey

r u l e U r l kb sUr l )

g e t I n f e r e n c e E n g i n e s ( ) p u t ( usernameKey i n f e r e n c e E n g i n e )

25

27 re turn i n f e r e n c e E n g i n e

Coacutedigo 5 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo

422 Base de conhecimento inicial

Ao partir para o desenvolvimento de um sistema pericial eacute necessaacuterio adoptar uma basede conhecimento inicial simples que sirva de suporte ao desenvolvimento do mesmo

55

CAPIacuteTULO 4 WEXSYS

A base de conhecimento inicial foi adoptada a partir do estudo de Merritt (1989) Foiseleccionada devido a duas caracteriacutesticas principais

bull simplicidade - no sentido em que as regras satildeo pequenas e simples de interligar

bull abrangecircncia - existem alguns cenaacuterios possiacuteveis de serem testados com o protoacutetipocomo por exemplo raciociacutenio sobre incerteza e conclusotildees intermeacutedias

A base de conhecimento inicial escolhida tem a seguinte estrutura

bull rule 1 if not turn_over and battery_bad then problem is battery cf 100

bull rule 2 if lights_weak then battery_bad cf 50

bull rule 3 if radio_weak then battery_bad cf 50

bull rule 4 if turn_over and smell_gas then problem is flooded cf 80

bull rule 5 if turn_over and gas_gauge is empty then problem is out_of_gas cf 90

bull rule 6 if turn_over and gas_gauge is low then problem is out_of_gas cf 30

423 Protoacutetipo do motor de inferecircncia

Para o desenvolvimento do protoacutetipo inicial do motor de inferecircncia foi necessaacuterio definiralguns aspectos essenciais tais como

1 Formato da regras

2 Formato das questotildees

3 Interacccedilatildeo assiacutencrona de questotildees e respostas

4 Algoritmos a utilizar

4231 Formato das regras

O formato das regras foi definido tendo em conta alguns pressupostos Entre elessalientam-se a necessidade da utilizaccedilatildeo de graus de confianccedila e a capacidade de guardaruma descriccedilatildeo para cada regra

O formato escolhido para a representaccedilatildeo de uma regra foi o seguinte

56

42 MOTOR DE INFEREcircNCIA

rule(

ltcodigogt rsquoDescriccedilatildeo da regrarsquo

lhs([

ev(ltpremissagt ltvalor da premissagt)

ev(ltpremissa_ngt ltvalor da premissa_ngt)

])

rhs(ev(ltsoluccedilatildeogt ltvalor da soluccedilatildeogt) CF)

)

Na definiccedilatildeo do ltLHSgt eacute possiacutevel definir uma lista de premissas e respectivos valoresno caso da regra conter mais do que uma premissa Um aspecto relevante relacionado coma lista de premissas eacute que esta considera apenas o operador conjunccedilatildeo entre premissas

4232 Formato das questotildees

O formato das questotildees foi tambeacutem definido assumindo alguns princiacutepios tais como apossibilidade de respostas muacuteltiplas e ainda a atribuiccedilatildeo de um texto quer agrave questatildeo a serapresentada quer agraves hipoacuteteses colocadas

O formato escolhido para a representaccedilatildeo de uma questatildeo foi o seguinte

question(

turn_over

rsquoO carro ligarsquo

[

answer(ltvalorgt ltdescriccedilatildeo do valorgt)

answer(ltvalor_ngt ltdescriccedilatildeo do valor_ngt)

]

ltescolha_multipla = 1 0gt

)

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas

Numa qualquer execuccedilatildeo de um software instalado e executado localmente numa maacutequinao funcionamento normal seraacute a execuccedilatildeo de um conjunto de instruccedilotildees ateacute ao ponto emque seja necessaacuteria a interacccedilatildeo com um utilizador Quando isso acontece o programafica suspenso ateacute que o utilizador responda ao que lhe foi solicitado continuando depoiscom a sua execuccedilatildeo a partir do ponto onde parou

57

CAPIacuteTULO 4 WEXSYS

No caso de um programa desenvolvido em prolog e mais especificamente um sistemapericial o conceito atraacutes descrito eacute exactamente o mesmo jaacute que o programa apenassuspende a execuccedilatildeo quando eacute necessaacuterio colocar uma questatildeo que o utilizador teraacute queforccedilosamente responder para dar continuidade ao programa

Se no entanto considerarmos a realidade de uma aplicaccedilatildeo web este princiacutepio jaacutenatildeo seraacute tatildeo linear porque um servidor web recebe um pedido executa-o e devolve umresultado O mesmo seraacute dizer que numa execuccedilatildeo de um componente prolog a partirde um servidor web a pilha de execuccedilatildeo eacute interrompida quando eacute necessaacuterio questionaro utilizador mas natildeo eacute possiacutevel continuar a execuccedilatildeo da mesma a partir do ponto ondeparou Em vez disso seraacute necessaacuterio desfazer a pilha de execuccedilatildeo criada e assim queexistir a resposta do utilizador (eacute feito novo pedido ao servidor) a execuccedilatildeo eacute realizadanovamente desde o iniacutecio mas desta vez considerando a resposta recebida

As razotildees para este comportamento justificam-se pela utilizaccedilatildeo do protocolo HTTPem que eacute necessaacuterio existir um pedido e uma resposta O que obriga a que a colocaccedilatildeoda pergunta e a resposta sejam assiacutencronos podendo existir entre as duas acccedilotildees vaacuteriospedidos (pedidos de explicaccedilotildees por exemplo)

Este ldquoproblemardquo levou agrave necessidade do desenvolvimento de um mecanismo quepermita um funcionamento coerente num programa que utilize (como neste caso) oprolog simulando o comportamento que este teria numa situaccedilatildeo de execuccedilatildeo local

O mecanismo proposto foi a alteraccedilatildeo do predicado responsaacutevel pelo processo re-cursivo especificando um atributo auxiliar de controlo que acompanha a execuccedilatildeo dopredicado Esse atributo auxiliar quando detectada a necessidade de colocaccedilatildeo de umaquestatildeo eacute instanciado e impede a prossecuccedilatildeo do predicado retornando a execuccedilatildeo paraa web com a respectiva questatildeo

Este mecanismo permite uma comunicaccedilatildeo assiacutencrona com a parte web mantendo asvantagens da recursividade do prolog

4234 Estrutura da base de conhecimento

A base de conhecimento apoacutes a definiccedilatildeo do formato de representaccedilatildeo das regras e dasquestotildees eacute a seguinte

q u e s t i o n ( t u r n _ o v e r rsquoO c a r r o l i g a rsquo

2 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

4 q u e s t i o n ( l i g h t s _ w e a k rsquoAs l u z e s e s t a o f r a c a s rsquo

58

42 MOTOR DE INFEREcircNCIA

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

6

q u e s t i o n ( rad io_weak rsquoO r a d i o e s t a f r a c o rsquo

8 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

10 q u e s t i o n ( s m e l l _ g a s rsquo C h e i r a a g a s o l i n a rsquo

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

12

q u e s t i o n ( gas_gauge rsquoO que marca o p o n t e i r o do d e p o s i t o da

g a s o l i n a rsquo

14 [ answer ( empty rsquo Vazio rsquo ) answer ( high rsquo S u f i c i e n t e rsquo ) answer

( low rsquo Rese rva rsquo ) ] 0 )

16 r u l e ( r u l e _ 1 rsquo Rule 1 rsquo

l h s ( [ ev ( t u r n _ o v e r no ) ev ( b a t t e r y _ b a d yes ) ] ) r h s ( ev (

problem b a t t e r y ) 100) )

18

r u l e ( r u l e _ 2 rsquo Rule 2 rsquo

20 l h s ( [ ev ( l i g h t s _ w e a k yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

22 r u l e ( r u l e _ 3 rsquo Rule 3 rsquo

l h s ( [ ev ( rad io_weak yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

24

r u l e ( r u l e _ 4 rsquo Rule 4 rsquo

26 l h s ( [ ev ( s m e l l _ g a s yes ) ev ( t u r n _ o v e r yes ) ] ) r h s ( ev ( problem

f l o o d e d ) 80) )

28 r u l e ( r u l e _ 5 rsquo Rule 5 rsquo

l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge empty ) ] ) r h s ( ev (

problem o u t _ o f _ g a s ) 90) )

30

r u l e ( r u l e _ 6 rsquo Rule 6 rsquo

32 l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge low ) ] ) r h s ( ev ( problem

o u t _ o f _ g a s ) 30) ) Coacutedigo 6 Representaccedilatildeo da base de conhecimento do protoacutetipo

59

CAPIacuteTULO 4 WEXSYS

4235 Algoritmos a utilizar

Um dos paracircmetros mais relevantes para o funcionamento do algoritmo inicial eacute o graumiacutenimo de confianccedila que eacute indicado no iniacutecio da utilizaccedilatildeo do sistema na paacutegina inicialSe o valor indicado para este paracircmetro for demasiado elevado poderaacute inibir algumasregras impedindo o seu disparo no caso de natildeo ser atingido o grau de confianccedila necessaacuterioPor outro lado se o valor introduzido for demasiado baixo permitiraacute que qualquer regradispare independentemente do seu grau de confianccedila traduzindo-se numa maior aacutervorede pesquisa

O motor de inferecircncia eacute executado mediante o recurso a um predicado principal Estepredicado seraacute o responsaacutevel pelo iniacutecio do processo de inferecircncia De seguida seratildeoapresentados alguns dos algoritmos considerados mais relevantes Os algoritmos 1 2 e 3representam atraveacutes da utilizaccedilatildeo de pseudo-coacutedigo alguma da loacutegica implementada nomotor de inferecircncia

Algoritmo 1 Algoritmo principal do motor de inferecircnciabegin tryToProve

while empty ControlObj doobtemRegra (r)disparoPremissaslarr truefor premissa isin LHS do

ControlObjdisparoularr verificaPremissa (p)disparoPremissaslarr disparoPremissas ampamp disparouif not empty ControlObj then

termina o algoritmoend

endif empty ControlObj then

if disparoTodasPremissas thenfireRules

endend

endend

60

42 MOTOR DE INFEREcircNCIA

Algoritmo 2 Verifica se uma premissa eacute verdadeirainput Premissa poutput ControlObj disparoubegin verificaPremissa

disparoularr false ControlObjlarr nullif checkExistFact (p) ou checkExistQuestionFact (p) oucheckExistRuleFact (pControlObj) then

disparoularr true exitend

end

Algoritmo 3 Dispara as regras que possam ser disparadasbegin fireRules

for regra isin basedeconhecimento doif regra not fired then

if regra pode disparar thencalcula grau de confianccediladispara regraif regra dispara soluccedilatildeo final then

termina execuccedilatildeo preenchendo ControlObjendif regra natildeo dispara soluccedilatildeo final then

continuaend

endend

endend

61

CAPIacuteTULO 4 WEXSYS

424 Resultado final

Apoacutes a implementaccedilatildeo do protoacutetipo inicial do motor de inferecircncia e dos testes necessaacuteriosagrave verificaccedilatildeo do bom funcionamento do mesmo chegamos ao resultado final que foiutilizado no wexsys

Este novo motor de inferecircncia foi desenvolvido levando em consideraccedilatildeo todasas caracteriacutesticas consideradas essenciais tanto para a execuccedilatildeo num ambiente multi-utilizador como para a execuccedilatildeo num servidor web e que foram jaacute descritas nas secccedilotildeesanteriores De referir ainda que face ao motor de inferecircncia do sistema base esteapresenta uma seacuterie de melhorias tais como rapidez de funcionamento e abstracccedilatildeo dabase de conhecimento utilizada

4241 Arranque da execuccedilatildeo

Como jaacute referido o motor de inferecircncia segue os algoritmos descritos na secccedilatildeo 4235 enesta secccedilatildeo seraacute abordado o processo utilizado desde o arranque do motor de inferecircnciaateacute agrave apresentaccedilatildeo dos dados como podemos ver na figura 19

Figura 19 Paacutegina inicial do motor de inferecircncia

O utilizador comeccedila na paacutegina inicial e selecciona a opccedilatildeo ldquoMotor de InferecircnciardquoDepois eacute apresentada uma paacutegina que permite iniciar o motor de inferecircncia utilizando a

62

42 MOTOR DE INFEREcircNCIA

opccedilatildeo ldquoiniciarrdquo Isto despoleta o mecanismo de inferecircncia como podemos verificar nafigura 20

Figura 20 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia

A classe YProlog invoca o predicado top_goals que mais natildeo eacute que o ponto de entradano motor de inferecircncia A sua funccedilatildeo seraacute obter qual a ldquoconclusatildeo final a procurarrdquo (estetoacutepico seraacute descrito na secccedilatildeo 432) para se poder iniciar o algoritmo propriamentedito Na listagem de coacutedigo 7 eacute possiacutevel consultar os predicados responsaacuteveis pelaimplementaccedilatildeo dos algoritmos Apenas estatildeo listados os predicados principais

Eacute possiacutevel consultar o coacutedigo do motor de inferecircncia no anexo A

t o p _ g o a l s ( Con t ro lOb j MinCF ) minus

2 t o p _ g o a l ( TopGoal )

t o p ( TopGoal Con t ro lOb j MinCF )

63

CAPIacuteTULO 4 WEXSYS

4

t o p ( TopGoal Con t ro lOb j MinCF ) minus6 r e t r a c t a l l ( h i s t 2 ) s e t ( l en 0 )

g e t R u l e M o r e R e l e v a n t ( TopGoal Rule )

8 t r y T o P r o v e ( Rule Con t ro lOb j MinCF )

10 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) minusr u l e ( Rule _ l h s (LHS) _ )

12 p r o v e L i s t H y p (LHS Con t ro lOb j MinCF )

g e t ( l en LEN) LEN1 i s LEN + 1

14 a s s e r t ( h i s t ( LEN1 Rule ) )

s e t ( l en LEN1)

16 (

check i f r u l e has re turn c o n t r o l o b j e c t

18 ( v a r ( C o n t r o l O b j ) ) minusgt(

no c o n t r o l o b j e c t found check i f o t h e r r u l e s needs t o

be f i r e d

20 f i r e R u l e s ( Con t ro lOb j MinCF )

) (

22 c o n t r o l o b j e c t found

t rue24 )

)

26

p r o v e L i s t H y p ( [ ] Con t ro lOb j MinCF )

28 p r o v e L i s t H y p ( [H | T ] Con t ro lOb j MinCF ) minusproveHyp (H Con t ro lOb j MinCF )

30 (

( v a r ( C o n t r o l O b j ) ) minusgt (

32 p r o v e L i s t H y p ( T Con t ro lOb j MinCF )

) (

34 t rue)

36 )

38

f a c t a l r e a d y known

40 proveHyp (H Con t ro lOb j MinCF ) minus

64

42 MOTOR DE INFEREcircNCIA

H = ev (X Y) f a c t (X Y _ )

42

t h e r e i s a q u e s t i o n t h a t can l e a d t o a f a c t

44 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

n o t ( f a c t (X _ _ ) )

46 q u e s t i o n (X _ _ _ )

n o t ( n o t _ q u e s t i o n (X) )

48 C o n t r o l O b j = ask (X)

50 t h e r e i s a c o n c l u s i o n t h a t can

l e a d t o a q u e s t i o n t h a t can l e a d t o a f a c t

52 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

r u l e ( Rule _ l h s (LHS) r h s ( ev (X _ ) V) )

54 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) Coacutedigo 7 Predicados principais do motor de inferecircncia

4242 Mecanismo de respostas

O mecanismo de respostas eacute algo similar ao processo descrito anteriormente A suafunccedilatildeo seraacute guardar a resposta que foi seleccionada pelo utilizador e prosseguir com oalgoritmo de forma a que uma nova questatildeo seja colocada ou a soluccedilatildeo final alcanccedilada

Um paracircmetro considerado obrigatoacuterio na submissatildeo de uma resposta eacute o grau deconfianccedila Este valor serviraacute para realizar o caacutelculo do grau de confianccedila da regra quandoa mesma puder ser disparada

Podemos ver na figura 21 o processo de resposta a uma questatildeo

65

CAPIacuteTULO 4 WEXSYS

Figura 21 Fluxo de invocaccedilatildeo de resposta a uma questatildeo

Eacute ainda possiacutevel natildeo responder agrave questatildeo colocada utilizando a opccedilatildeo ldquonatildeo sei natildeoresponderrdquo Esta opccedilatildeo iraacute guardar internamente uma indicaccedilatildeo para natildeo voltar a colocara questatildeo ignorada evitando entrar em ciclos

Agrave medida que o processo avanccedila eacute possiacutevel acompanhar o estado actual do motor deinferecircncia Este acompanhamento eacute realizado mediante a anaacutelise da zona situada do ladodireito da paacutegina e que vai sendo actualizada a cada interacccedilatildeo com o motor de inferecircnciaA zona referida permite obter informaccedilotildees acerca de

bull Regras que jaacute foram disparadas

bull Factos que foram inferidos pelo disparo das regras

bull Factos que foram facultados pelo utilizador ao responder agraves questotildees

bull Factos conhecidos antes do iniacutecio do processo de inferecircncia

66

42 MOTOR DE INFEREcircNCIA

Estes factos satildeo obtidos atraveacutes do predicado ldquoinf_sys((L_Rules L_Inf_Facts L_Know_FactsL_Init_Facts)rdquo Este predicado eacute invocado apoacutes cada interacccedilatildeo com o motor de inferecircnciae desta forma os dados estatildeo sempre actualizados

4243 Conclusatildeo final encontrada

Quando o disparo de uma regra leva a que seja adicionado um facto que corresponde auma soluccedilatildeo final o motor de inferecircncia termina a sua execuccedilatildeo devolvendo a conclusatildeofinal a que chegou bem como o respectivo grau de confianccedila Na figura 22 podemos ver afase final do processo de inferecircncia O grau de confianccedila da conclusatildeo final eacute atribuiacutedocom recurso agrave foacutermula seguinte

Dada uma regra X com premissas P1 a Pn e CF =CF (X) entatildeo temos

CF(X P1 Pn) = min [CF(P1) CF(Pn)]timesCF(X)

Figura 22 Conclusatildeo da inferecircncia

4244 Explicaccedilotildees

Eacute possiacutevel em qualquer altura colocar a questatildeo ldquoporquecircrdquo antes de submetermos umaresposta ou a questatildeo ldquocomordquo apoacutes uma conclusatildeo final Este tipo de explicaccedilotildeescontribui para a fase de validaccedilatildeo do sistema pericial colocando-as ao dispor do perito

67

CAPIacuteTULO 4 WEXSYS

responsaacutevel pela validaccedilatildeo expondo desta forma o raciociacutenio seguido no decorrer dainferecircncia Exemplos da solicitaccedilatildeo de explicaccedilotildees podem ser consultados atraveacutes dasfiguras 23 24 e 25

Figura 23 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo

68

42 MOTOR DE INFEREcircNCIA

Figura 24 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia

Figura 25 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final

69

CAPIacuteTULO 4 WEXSYS

As explicaccedilotildees ldquoporquecircrdquo foram implementadas recorrendo a predicados temporaacuterios(hist) que acompanham o desenrolar do motor de inferecircncia Eacute possiacutevel em qualqueraltura consultar esses predicados para obter de uma forma imediata a explicaccedilatildeo doporquecirc da questatildeo estar a ser feita

As explicaccedilotildees ldquocomordquo jaacute seguem um mecanismo mais complexo Quando umaregra eacute disparada origina conclusotildees intermeacutedias ou finais essas conclusotildees natildeo satildeo maisdo que simples factos O motor de inferecircncia sempre que dispara uma regra associa aofacto a regra que o originou por intermeacutedio do predicado inf_exp_how

Desta forma basta algum coacutedigo para que seja possiacutevel a obtenccedilatildeo de ambas asexplicaccedilotildees Esse coacutedigo pode ser consultado na listagem 8 em que os predicados why ehow se referem agraves explicaccedilotildees ldquoporquecircrdquo e ldquocomordquo respectivamente

why ( L ) minus

2 f i n d a l l ( r (OX) h i s t (OX) L )

4 how ( A t t r Value R e s u l t ) minusin f_exp_how ( A t t r Value Ru le s )

6 explainHow ( Rules E x p l a n a t i o n )

append ( Rules E x p l a n a t i o n R e s u l t )

8

explainHow ( [ ] [ ] )

10 explainHow ( [H | T ] R e s u l t ) minusi n n e r E x p l a i n (H E x p l a n a t i o n H )

12 explainHow ( T E x p l a n a t i o n R u l e s )

append ( Explana t ionH E x p l a n a t i o n R u l e s R e s u l t )

14

16 i n n e r E x p l a i n ( Rule E x p l a n a t i o n ) minusr u l e ( Rule _ l h s (LHS) _ )

18 expla inLHS (LHS E x p l a n a t i o n )

20 expla inLHS ( [ ] [ ] )

expla inLHS ( [ ev ( A t t r Value ) | T ] E x p l a n a t i o n A ) minus22 n o t ( inf_exp_how ( A t t r Value _ ) )

f a c t ( A t t r Value _ )

24 expla inLHS ( T E x p l a n a t i o n A )

70

43 BASE DE CONHECIMENTO

26 expla inLHS ( [ ev ( A t t r Value ) | T ] Resu l tA ) minushow ( A t t r Value E x p l a n a t i o n A )

28 expla inLHS ( T E x p l a n a t i o n )

append ( Explana t ionA E x p l a n a t i o n Resu l tA ) Coacutedigo 8 Predicados principais do sistema de explicaccedilotildees

43 Base de conhecimento

A base de conhecimento armazena o conhecimento extraiacutedo de um ou mais peritos e con-siste numa seacuterie de factos e regras acerca de um determinado domiacutenio Sendo dependenteda aacuterea que se pretende abranger com o sistema pericial a base de conhecimento eacute deconstruccedilatildeo especiacutefica para cada situaccedilatildeo em que seja necessaacuterio desenvolver este tipo desistema

Os procedimentos de inserccedilatildeo actualizaccedilatildeo e remoccedilatildeo dos factos e regras que com-potildeem a base de conhecimento (gestatildeo da base de conhecimento) teratildeo que ser na medidado possiacutevel procedimentos simples que sejam facilmente compreendidos pelos utilizado-res

As funcionalidades de gestatildeo da base de conhecimento estatildeo disponiacuteveis na opccedilatildeoldquoBase de Conhecimentordquo da paacutegina inicial como podemos observar na figura 26

71

CAPIacuteTULO 4 WEXSYS

Figura 26 Paacutegina inicial da gestatildeo da base de conhecimento

431 Leitura da base de conhecimento

Ao iniciar a execuccedilatildeo a base de conhecimento eacute carregada para memoacuteria a partir de umficheiro Este processo eacute realizado de forma iterativa e de acordo com uma determinadasequecircncia regras questotildees conclusatildeo final e por uacuteltimo os factos iniciais

Por sua vez o carregamento das regras eacute efectuado em duas fases sendo que primeirosatildeo obtidas as regras existentes (ldquoretrieve_rules(L)rdquo) e depois para cada regra eacute construiacutedaa sua estrutura (ldquobuildRuleObjectrdquo) Podemos observar a descriccedilatildeo deste processo nafigura 27

72

43 BASE DE CONHECIMENTO

Figura 27 Processo de carregamento das regras

Quanto ao carregamento das questotildees eacute similar ao das regras jaacute que eacute efectuadoigualmente em duas fases Primeiro obtecircm-se todas as questotildees (ldquoretrieve_questions(L)rdquo)e depois para cada questatildeo eacute preenchida a sua estrutura (ldquobuildQuestionObjectrdquo)

Jaacute o carregamento da conclusatildeo final eacute realizado atraveacutes do predicado ldquotop_goal(L)rdquoEste predicado vai devolver a conclusatildeo final guardada

Por fim os factos iniciais satildeo obtidos reutilizando um processo de obtenccedilatildeo de factos(ldquoinf_sys((L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)rdquo) Este processo jaacute foireferido na secccedilatildeo que descreve o motor de inferecircncia (4242)

432 Conclusatildeo final a encontrar

A conclusatildeo final a encontrar representa o predicado que vai ser considerado comoobjectivo no decorrer do motor de inferecircncia Soacute vatildeo ser consideradas soluccedilotildees queconvergem para uma soluccedilatildeo final que contenha o predicado especificado no RHS

Para definir uma conclusatildeo final basta especificar o nome do predicado da soluccedilatildeoque pretendemos encontrar com o motor de inferecircncia

73

CAPIacuteTULO 4 WEXSYS

433 Factos iniciais

Os factos iniciais permitem adicionar conhecimento preacutevio a uma base de conhecimentoPara adicionaacute-los eacute necessaacuterio utilizar o botatildeo ldquoAdicionar facto inicialrdquo e preencher oscampos necessaacuterios Para remover um facto inicial previamente inserido eacute utilizado obotatildeo ldquoRemover facto inicialrdquo e eacute necessaacuterio confirmar a acccedilatildeo que se estaacute a efectuar deforma a evitar uma remoccedilatildeo acidental

434 Regras

As regras satildeo o ponto essencial da gestatildeo da base de conhecimento As regras satildeo osdados disponiacuteveis para a aplicaccedilatildeo e como tal quanto melhor forem definidas melhorqualidade a aplicaccedilatildeo teraacute no sentido em que os resultados seratildeo mais correctos e fiaacuteveis

4341 CriarAlterar uma regra

O processo de criaccedilatildeo de uma nova regra foi simplificado Jaacute natildeo eacute necessaacuterio conhecera sintaxe das regras e tambeacutem jaacute natildeo eacute necessaacuterio conhecer os factos a utilizar comopremissas

Para adicionar uma regra apenas temos que arrastar questotildees eou conclusotildees inter-meacutedias de forma a construir a regra que pretendemos inserir

No caso de estarmos a alterar uma regra ou no caso de termos adicionado uma questatildeoou conclusatildeo intermeacutedia incorrectamente podemos eliminar essa premissa simplesmenteseleccionando a ldquocheckboxrdquo respectiva e utilizar a opccedilatildeo ldquoRemover seleccionadosrdquo

74

43 BASE DE CONHECIMENTO

Figura 28 Introduzir uma nova regra

Apoacutes termos arrastado todas as questotildees eou conclusotildees intermeacutedias para a lista depremissas temos que indicar os respectivos valores Este processo estaacute simplificado nosentido em que apenas temos que utilizar a caixa de selecccedilatildeo agrave frente de cada controlo eseleccionar o respectivo valor

Os valores apresentados satildeo obtidos de forma diferente quer se trate de uma questatildeo oude uma conclusatildeo intermeacutedia No caso das questotildees os valores obtidos satildeo os indicadosaquando da sua inserccedilatildeo No caso das conclusotildees intermeacutedias satildeo obtidos todos os valoresutilizados nas regras ateacute ao momento Sempre que uma regra eacute inserida ou actualizadaeacute despoletado um processo que actualiza os valores das conclusotildees intermeacutedias com osnovos valores introduzidos

75

CAPIacuteTULO 4 WEXSYS

Figura 29 Apresentaccedilatildeo de valores configurados na questatildeo

4342 Questotildees

As questotildees acabam por ser o ponto de contacto da aplicaccedilatildeo com o utilizador Sempreque eacute necessaacuterio suspender o processamento para questionar o utilizador este teraacute ahipoacutetese de intervir na execuccedilatildeo Atraveacutes das questotildees colocadas vai ser possiacutevel inferiroutros factos que no final e numa situaccedilatildeo ideal conduzem a uma soluccedilatildeo possiacutevel

Uma questatildeo eacute identificada por um coacutedigo por uma descriccedilatildeo e ainda por um conjuntode valores possiacuteveis as respostas Quando inserimos uma nova regra podemos criar novasquestotildees utilizando a opccedilatildeo ldquoAdicionar uma questatildeordquo Surge entatildeo o formulaacuterio deintroduccedilatildeo de uma questatildeo como podemos ver na figura 30

Figura 30 Formulaacuterio de introduccedilatildeo de uma questatildeo

As respostas configuradas no formulaacuterio de introduccedilatildeo seratildeo as respostas que iratildeoaparecer quando inserirmos uma nova regra e arrastarmos a questatildeo para a lista depremissas

76

43 BASE DE CONHECIMENTO

4343 Verificaccedilatildeo

Apoacutes a introduccedilatildeo ou alteraccedilatildeo das regras deve ser realizado o processo de verificaccedilatildeoda base de conhecimento De uma forma quase imperceptiacutevel na fase de introduccedilatildeode regras estamos a activar este processo jaacute que eacute garantido que as regras introduzidasestatildeo coerentes e que os valores das premissas efectivamente existem Podemos dizerque estamos perante a primeira fase do processo de verificaccedilatildeo designado por verificaccedilatildeoproacute-activa

Para este trabalho foi considerado a verificaccedilatildeo de dois tipos de anomalia na base deregras redundacircncia e regras duplicadas A inclusatildeo de novos mecanismos de verificaccedilatildeoeacute possiacutevel bastando para isso a alteraccedilatildeo do predicado ldquoverification(L)rdquo

A grande diferenccedila entre os dois meacutetodos implementados eacute que uma regra redundanteadiciona conhecimento desnecessaacuterio agrave base de conhecimento enquanto que uma regraduplicada como o nome indica eacute apenas uma duplicaccedilatildeo do conhecimento

Na figura 31 podemos verificar o mecanismo de verificaccedilatildeo implementado que permiteidentificar que regra estaacute em conflito com que outra regra e qual o tipo de conflito

Figura 31 Verificaccedilatildeo da base de conhecimento

435 Gravaccedilatildeo da base de conhecimento

O processo de gravaccedilatildeo da base de conhecimento eacute similar ao processo de leitura com adiferenccedila de natildeo ser iterativo O processo de gravaccedilatildeo da base de conhecimento iniciacom a acccedilatildeo do utilizador na opccedilatildeo ldquoFinalizarrdquo que invoca o meacutetodo ldquosaveAll()rdquo doWexsysKBBean O resto do processo pode ser observado na figura 32

77

CAPIacuteTULO 4 WEXSYS

Figura 32 Processo de gravaccedilatildeo da base de conhecimento

436 Conversatildeo GISPSA

A conversatildeo da base de conhecimento do GISPSA para o formato wexsys foi efectuada emduas fases Na primeira fase foi feita uma migraccedilatildeo sintaacutectica da forma de representaccedilatildeode regras utilizada para a forma utilizada pelo wexsys Na segunda fase foi efectuadoum processo manual de conversatildeo

O sistema anterior delegava nas regras alguns predicados utilizados unicamente parao sistema de explicaccedilotildees Esta caracteriacutestica tornou a migraccedilatildeo algo morosa jaacute que eranecessaacuterio proceder agrave anaacutelise regra a regra de quais os predicados necessaacuterios e quais osdescartaacuteveis

78

44 ANAacuteLISE GRAacuteFICA

44 Anaacutelise graacutefica

Para aleacutem do motor de inferecircncia e da gestatildeo da base de conhecimento foi implemen-tado como prova de conceito um sistema graacutefico que permite observar facilmente arepresentaccedilatildeo de uma base de conhecimento sob a forma de um grafo

Este sistema permite visualizar e consultar a explosatildeo combinatoacuteria das regras edas premissas que as compotildeem Este tipo de ferramenta pode ser bastante uacutetil quandoutilizado nas tarefas de validaccedilatildeo por parte do perito Desta forma o perito consegue deuma forma visual e simples verificar o relacionamento entre as conclusotildees e as premissas

441 Implementaccedilatildeo

Esta funcionalidade foi implementada recorrendo agrave utilizaccedilatildeo de um controlo externodesignado por TGGraphLayout e desenvolvido por Alexander Shapiro (2010) O controlodisponibiliza uma applet que encapsula funcionalidades que permitem a interacccedilatildeo graacuteficacom a representaccedilatildeo de um grafo

Por se tratar de uma applet a comunicaccedilatildeo com os managed beans torna-se tecnica-mente mais difiacutecil de implementar Esse motivo levou agrave necessidade de criaccedilatildeo de umaservlet para simplificar o processo de interacccedilatildeo entre a aplicaccedilatildeo e a applet do controlovisual

A servlet WexsysServlet foi criada para dar suporte agrave comunicaccedilatildeo com o mana-

ged bean WexsysKBBean sendo este responsaacutevel pela obtenccedilatildeo dos dados no formatoreconhecido pelo controlo

O controlo teve que ser alterado de forma a permitir a interacccedilatildeo com a servlet bemcomo efectuar o tratamento dos dados no formato especificado ou seja criar uma espeacuteciede protocolo de comunicaccedilatildeo

O algoritmo 4 resume a implementaccedilatildeo efectuada ao niacutevel da applet e o algoritmo 5demonstra de que forma esses dados satildeo obtidos

442 Funcionamento

O grafo resultante eacute construiacutedo a partir de uma posiccedilatildeo inicial designada por ponto departida Eacute utilizada a designaccedilatildeo ldquordquo para simplificar a identificaccedilatildeo no grafo eeacute possiacutevel ver o resultado da paacutegina inicial na figura 33

As conclusotildees satildeo representadas por rectacircngulos com um fundo branco e as premissassatildeo identificadas por rectacircngulos com fundo azul

79

CAPIacuteTULO 4 WEXSYS

Algoritmo 4 Algoritmo responsaacutevel pelo desenho da appletinput graphPaths graphConclusionsbegin drawGraph

initializeNodes ()for path isin graphPaths do

init oldfor step isin path do

if nodes do not contain step thenbuildNode (step)

endif step is first then

oldlarr stepelse

addEdge (old step)oldlarr step

endend

endcreateStartNode ()linkUnlinkedNodesToStartNode ()

end

O ponto de partida liga-se entatildeo agraves regras que apenas contenham premissas quesejam questotildees construindo o grafo de possibilidades Apoacutes identificar as regras quesatildeo representadas com ligaccedilatildeo ao ponto de partida satildeo tratadas as restantes regrasconstruindo o resto do grafo agrave medida que as regras satildeo avaliadas

Eacute possiacutevel centrar o grafo numa premissa ou numa conclusatildeo Ao centrarmos ografo satildeo mantidos apenas os noacutes que se ligam directamente ao noacute que seleccionaacutemosNo entanto eacute possiacutevel expandir um noacute sem este tipo de comportamento bastando paraisso utilizar as funcionalidades disponiacuteveis ao pressionar a tecla direita do rato sobre o

Figura 33 Paacutegina inicial da anaacutelise graacutefica

80

44 ANAacuteLISE GRAacuteFICA

Algoritmo 5 Algoritmo para construccedilatildeo dos dados do grafooutput graphPaths and grapConclusionsbegin retrieveGraphPathAndConclusions

questionslarr gatherQuestionfor rule isin rules do

isFinalRulelarr conclusaoFinal igual RHS de ruleif isFinalRule then

add rule to grapConclusionssimpleRulelarr truegraphPathslarr nullfor premissa isin ruleLHS do

isConditionAskablelarr questions contains premissaif isConditionAskable then

add premissa and value to graphPathselse

simpleRulelarr falseretrieveGraphFromAtom (premissa)add result to graphPaths

endend

endend

end

respectivo noacute As funcionalidades disponiacuteveis satildeo expandir colapsar esconder e centrare satildeo auto-descritivas pelo que dispensam qualquer explicaccedilatildeo do seu funcionamento

Figura 34 Exemplo de grafo totalmente expandido

Eacute possiacutevel utilizar esta funcionalidade para identificarmos um cenaacuterio especiacuteficopor exemplo para consultar quais as premissas necessaacuterias para a obtenccedilatildeo de umadeterminada soluccedilatildeo

81

CAPIacuteTULO 4 WEXSYS

Figura 35 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto

443 Limitaccedilotildees

Esta funcionalidade no seu estado actual apresenta algumas limitaccedilotildees Conveacutem referirantes de mais que esta soluccedilatildeo natildeo eacute uma alternativa ao motor de inferecircncia mas sim umaferramenta de apoio visual auxiliar ao mesmo

Das limitaccedilotildees existentes salientam-se as seguintes

bull a utilizaccedilatildeo deste controlo obriga a que o utilizador esteja familiarizado com aspremissas e os seus valores Natildeo estatildeo disponiacuteveis os textos de apoio para aspremissas da mesma forma que satildeo mostrados no motor de inferecircncia Umapossiacutevel soluccedilatildeo passaria pela interacccedilatildeo da applet com a servlet para atraveacutes domecanismo de ajax push despoletar a actualizaccedilatildeo da JSP mostrando o texto doelemento seleccionado

bull o tamanho dos noacutes eacute grande quando comparado com o espaccedilo disponiacutevel nocontrolo o que por vezes obriga a algumas sobreposiccedilotildees dos noacutes tornado-oimperceptiacutevel Este problema pode ser observado na figura 34 Para atenuar esteproblema existem controlos que permitem modificar o factor de ampliaccedilatildeo rodar ocontrolo e controlar o grau de visualizaccedilatildeo hiperboacutelica

bull apoacutes a navegaccedilatildeo no grafo perde-se de alguma forma o contexto que o originouEste problema pode ser observado na figura 35

82

5Conclusotildees

Ateacute que ponto eacute que um software consegue efectivamente substituir um ser humanoquando estamos a falar de raciociacutenio Se esse raciociacutenio for estritamente linear seguindoum determinado percurso com alguns desvios ao longo do mesmo que acabam por ditarum desfecho diferente consoante as decisotildees que vatildeo sendo tomadas a substituiccedilatildeo podemesmo ser efectiva e ateacute mesmo melhor em alguns casos

Um perito natildeo eacute no entanto algueacutem que se limita a dizer sim ou natildeo ou algueacutem queapenas decide se eacute necessaacuterio seguir por este caminho ou aquele Um perito normalmenteobserva dados e factos e infere sobre os mesmos tendo a sensibilidade para em muitasocasiotildees conseguir ateacute mesmo obter a soluccedilatildeo final muito antes de terminar a anaacutelise detodos os paracircmetros A isso chama-se conhecimento heuriacutestico natildeo linear afectada poruma enormidade de factores que apenas eacute possiacutevel encontrar num ser humano

Estes factores podem ter tanto de beneacutefico como de nocivo Ao natildeo analisar atotalidade dos dados um perito poderaacute incorrer num erro ou mesmo tendo-os analisadoateacute ao fim poderaacute natildeo ter estado completamente atento ou compenetrado no que estavaa fazer pelo mero facto de poder estar cansado ou indisposto para executar tal tarefanaquele preciso momento

Um sistema pericial pode realmente ser uma mais valia no sentido em que estaacutetotalmente desprovido de emoccedilotildees e fadiga ao contraacuterio de um ser humano Paraaleacutem disto natildeo eacute necessaacuterio temer que o sistema pericial se desloque a uma qualquerlocalizaccedilatildeo remota e de difiacutecil acesso ou que chegue fora do horaacuterio previsto limitadopelos atrasos de uma simples viagem

Todos estes factos podem realmente ser considerados quando analisamos o funciona-mento do GISPSA Efectivamente trata-se de um sistema pericial estaacute sempre disponiacutevele totalmente desprovido de caracteriacutesticas humanas que poderiam eventualmente toldaro raciociacutenio do mesmo No entanto este sistema carecia de algo muito importante a

83

CAPIacuteTULO 5 CONCLUSOtildeES

acessibilidade a partir de qualquer local em qualquer hora e por parte de vaacuterios utilizado-res em simultacircneo de modo imediato e sem preacute-aviso Antes de mais o GISPSA eacute umaaplicaccedilatildeo de execuccedilatildeo local e natildeo foi de todo desenvolvida para funcionamento em redeComo tal o acesso agrave mesma estava agrave partida bastante limitado Depois cada instalaccedilatildeoapenas permitia a interacccedilatildeo com um utilizador de cada vez Existem ainda algumaslimitaccedilotildees identificadas no GISPSA que foram ultrapassadas com o desenvolvimento dowexsys tais como manutenccedilatildeo da base de conhecimento capacidade de raciocinar sobreconhecimento incerto e a implementaccedilatildeo de meacutetodos de verificaccedilatildeo

Hoje em dia eacute possiacutevel aceder a uma rede global (a internet) a partir de qualquer pontodo planeta e isto torna igualmente possiacutevel disponibilizar uma aplicaccedilatildeo de forma a quequalquer pessoa a consiga utilizar a qualquer hora e a partir de qualquer local O wexsysaplica essa transformaccedilatildeo ao GISPSA e leva-o ao proacuteximo patamar evolutivo

Como qualquer evoluccedilatildeo tambeacutem esta pretende natildeo soacute dotar a nova versatildeo comfuncionalidades que a anterior natildeo possuiacutea como tambeacutem pretende melhorar e corrigiros problemas que eventualmente foram encontrados Ao longo do tempo de utilizaccedilatildeodo GISPSA verificaram-se algumas coisas que podiam e deviam ser substituiacutedas Aleacutemdisto a proacutepria evoluccedilatildeo dos sistemas graacuteficos e de interacccedilatildeo colocaram o GISPSAcomo uma aplicaccedilatildeo de visual jaacute algo ultrapassado aspecto que tambeacutem carecia de umarevisatildeo para a realidade mais actual

A opccedilatildeo pela incorporaccedilatildeo do wexsys num portal teve a ver com as grandes capacida-des que este tipo de infra-estuturas tem hoje em dia Impulsionados por empresas comoa IBM os portais web representam janelas de negoacutecio com ligaccedilatildeo ao mundo e com aspotencialidades que daiacute advecircm Caracteriacutesticas como a facilidade de acesso sistemas debackup manutenccedilatildeo de tempos de uptime elevados rapidez de funcionamento facilidadede funcionamento e leitura entre muitas outras representam uma mais valia para estetipo de alojamento de aplicaccedilotildees

51 Contributos da soluccedilatildeo desenvolvida

O grande objectivo a que este trabalho se propunha foi alcanccedilado e consistia na criaccedilatildeode um sistema pericial baseado no GISPSA mas que pudesse ser acedido a partir deuma rede tornando-o global Os restantes objectivos foram igualmente alcanccedilados e oresultado final mostra-se soacutelido e fiaacutevel para candidato efectivo agrave substituiccedilatildeo do sistemaque lhe daacute a base No entanto existem outros pontos positivos na soluccedilatildeo encontradaquando comparada com outros sistemas periciais jaacute referidos nos capiacutetulos anteriores

84

51 CONTRIBUTOS DA SOLUCcedilAtildeO DESENVOLVIDA

Esses sistemas satildeo o LOMA o MDSS e o Whale watcherAo proceder a uma comparaccedilatildeo com estes sistemas a soluccedilatildeo desenvolvida neste

trabalho apresenta algumas vantagens Desde logo estamos a falar de aplicaccedilotildees web

com periacuteodos de desenvolvimento diferentes o que implica a utilizaccedilatildeo de tecnologiasdiferentes A vantagem da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo mais recentes dinacircmi-cas eficazes e visualmente mais apelativas coloca o wexsys num patamar efectivamentesuperior Para aleacutem disso o wexsys pode (como resultado da utilizaccedilatildeo dessas mesmastecnologias) ser facilmente integrado noutras aplicaccedilotildees como webservices ou portaisenquanto que os outros sistemas natildeo

Outra das particularidades dos sistemas estudados eacute que natildeo possuem (de acordocom as respectivas documentaccedilotildees) mecanismos de verificaccedilatildeo de regras e sempre queeacute necessaacuterio proceder a alteraccedilotildees a essas mesmas regras o utilizador teraacute que ter umconhecimento profundo acerca da sintaxe utilizada (gramaacutetica riacutegida) Para aleacutem distotambeacutem natildeo possuem (com excepccedilatildeo do MDSS) suporte a vaacuterias liacutenguas

Jaacute quanto agrave questatildeo da capacidade de funcionamento multi-utilizador apesar deestarmos a falar de aplicaccedilotildees web os sistemas estudados neste documento natildeo estatildeopreparados para cargas de processamento demasiado elevadas porque natildeo foi contempladaa possibilidade de um funcionamento distribuiacutedo o que permitiria aliviar a carga deprocessos e aumentar o nuacutemero maacuteximo de utilizadores

Para descrever mais em detalhe os objectivos alcanccedilados com a soluccedilatildeo propostapassamos a enunciaacute-los

bull Criaccedilatildeo de uma aplicaccedilatildeo web - Ao criar a nova aplicaccedilatildeo a questatildeo da distribuiccedilatildeodessa mesma aplicaccedilatildeo atraveacutes de uma rede era fulcral jaacute que permitiria uma seacuteriede factores que ateacute aqui natildeo estavam disponiacuteveis A possibilidade de utilizaccedilatildeo deuma base de conhecimento global onde todos os utilizadores pudessem contribuirpara o seu melhoramento facilidade de acesso a partir de qualquer localizaccedilatildeodisponibilidade a qualquer hora e dia capacidade de realizaccedilatildeo de backups paragarantir a continuidade dos dados e muacuteltiplos acessos simultacircneos foram questotildeesque ficaram resolvidas com a concretizaccedilatildeo deste objectivo

bull Verificaccedilatildeo das regras - Uma das lacunas do sistema base o GISPSA era a faltade capacidade para realizar a verificaccedilatildeo das regras que era colocadas na basede conhecimento Era possiacutevel chegar a cenaacuterios de inconsistecircncia atraveacutes dacontradiccedilatildeo de regras podendo chegar a cenaacuterios em que simplesmente natildeo erapossiacutevel prosseguir com a inferecircncia das regras nem tatildeo pouco chegar a umaconclusatildeo ou soluccedilatildeo possiacutevel

85

CAPIacuteTULO 5 CONCLUSOtildeES

Ao adicionar um mecanismo de verificaccedilatildeo de regras como o foi neste caso assisti-mos natildeo soacute ao cumprimento de mais um objectivo mas tambeacutem a uma evoluccedilatildeosignificativa do novo sistema pericial que com esta caracteriacutestica se torna maisfiaacutevel e eficaz

bull Manutenccedilatildeo da base de conhecimento - Neste novo sistema eacute mais simples procederagrave actualizaccedilatildeo da base de conhecimento quer para adicionar alterar ou removerfactos na mesma Jaacute natildeo eacute necessaacuterio ter formaccedilatildeo sobre a sintaxe necessaacuteria pararealizar estas operaccedilotildees deixando de lado a rigidez que era necessaacuteria aplicarno sistema base Isto permite alargar o leque de utilizaccedilatildeo do sistema a outrosutilizadores que na versatildeo anterior natildeo teriam oportunidade para o fazer

bull Melhor usabilidade - Uma das grandes transformaccedilotildees para quem conhecia osistema anterior e encontra a nova versatildeo passa pelo aspecto visual Quando umutilizador eacute confrontado com uma aplicaccedilatildeo aquilo com que se depara eacute a parte deinteracccedilatildeo responsaacutevel por mediar o diaacutelogo entre o utilizador e a aplicaccedilatildeo per si

Quando uma aplicaccedilatildeo qualquer que ela seja possui um visual pouco atraente eapelativo para o utilizador com bototildees e janelas pouco interessantes componentesmal colocados atalhos escondidos e de difiacutecil percepccedilatildeo ou ateacute mesmo comcores pouco agradaacuteveis o utilizador acaba por seja de forma gradual ou imediataabandonar a aplicaccedilatildeo e mostra pouco interesse em voltar a utilizaacute-la a natildeo ser queseja efectivamente obrigado a fazecirc-lo

Neste trabalho atraveacutes da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo web tais comoJavascript e Ajax e ainda atraveacutes da utilizaccedilatildeo do Icefaces foi possiacutevel chegar aum visual considerado por muitos utilizadores como interessante e actual o que vaiplenamente de encontro ao objectivo proposto para este ponto

bull Multi-utilizador - Uma das grandes criacuteticas do sistema base tinha efectivamente aver com o facto de natildeo ser possiacutevel colocar mais do que um utilizador a trabalharao mesmo tempo Para tal ser possiacutevel seria necessaacuterio proceder agrave instalaccedilatildeo dosistema noutro computador e consequentemente adquirir outra licenccedila comercialde utilizaccedilatildeo

Ao adicionar a capacidade de vaacuterios utilizadores poderem estar a trabalhar nosistema em simultacircneo este objectivo verifica-se como estando cumprido na to-talidade pois natildeo apenas isso jaacute eacute possiacutevel neste novo sistema pericial como acapacidade de processamento natildeo eacute afectada jaacute que eacute possiacutevel proceder agrave colocaccedilatildeo

86

52 LIMITACcedilOtildeES E TRABALHO FUTURO

da aplicaccedilatildeo num sistema de clustering em caso de deacutefices ou carga excessiva deprocessamento

bull Sistema de explicaccedilotildees - A soluccedilatildeo proposta conteacutem um sistema de explicaccedilotildees quepode ser utilizado para obter explicaccedilotildees a perguntas do tipo ldquocomordquo e ldquoporquecircrdquoEste ponto natildeo representa uma melhoria mas sim a manutenccedilatildeo de uma funcionali-dade que o GISPSA jaacute disponibilizava

bull Anaacutelise graacutefica - Este moacutedulo eacute uma nova abordagem agrave anaacutelise de uma base deconhecimento que natildeo eacute normalmente utilizado nos sistemas periciais conhecidos eque possibilita uma anaacutelise visual facilitadora do comportamento e funcionamentoda nova soluccedilatildeo

bull Suporte a vaacuterias liacutenguas - A soluccedilatildeo proposta permite de uma forma bastantesimples a implementaccedilatildeo de novas linguagens A parte da soluccedilatildeo que envolveo sistema pericial e a parte da aplicaccedilatildeo web estatildeo preparados para esta tipo desuporte contudo a base de conhecimento natildeo contempla este mecanismo e teriaque ser implementado

bull Arquitectura - O tipo de arquitectura da soluccedilatildeo proposta permite uma simplesintegraccedilatildeo com outros tipos de aplicaccedilatildeo web como por exemplo webservices ouportais Possibilita ainda como jaacute referido a separaccedilatildeo da aplicaccedilatildeo de uma formamodular permitindo uma distribuiccedilatildeo ao niacutevel do processamento

bull Migraccedilatildeo - No processo de migraccedilatildeo da base de conhecimento foram detectados ecorrigidos alguns problemas Regras inconsistentes regras repetidas e regras quenatildeo trazem novo conhecimento foram adaptadas e resolvidas evoluindo a novabase de conhecimento para uma entidade mais fiaacutevel e consistente

52 Limitaccedilotildees e trabalho futuro

Este trabalho representa um esforccedilo no sentido de apresentar uma versatildeo melhorada dosistema GISPSA e apesar de o conseguir em muitos aspectos e essencialmente em todosaqueles que foram inicialmente propostos ficam alguns aspectos que ainda poderatildeo serimplementados futuramente e que certamente contribuiratildeo para um sistema ainda melhor

Assim apresentam-se as limitaccedilotildees identificadas e as perspectivas de trabalho futuro

87

CAPIacuteTULO 5 CONCLUSOtildeES

bull Validaccedilatildeo de regras - Apesar de ser jaacute possiacutevel neste novo sistema pericial procederagrave verificaccedilatildeo de regras como mecanismo de prevenccedilatildeo de redundacircncias e contradi-ccedilotildees ainda natildeo eacute possiacutevel a validaccedilatildeo por parte de um perito dessas mesmas regrasa natildeo ser que essa validaccedilatildeo seja feita em modo ad hoc

Seria importante a criaccedilatildeo de um modo lsquosupervisorrsquo ou modo lsquoperitorsquo paraque a aplicaccedilatildeo pudesse adoptar uma postura natildeo soacute de linguagem adaptada aum utilizador com maior formaccedilatildeo na aacuterea (como seraacute o caso de perito) mastambeacutem pudesse assumir uma postura de simulaccedilatildeo em que seriam apresentadosnatildeo soacute os passos tomados como eventuais cenaacuterios em caso de respostas diferentesIsto permitiria a um perito confrontar o seu proacuteprio conhecimento com o sistemapericial realizando desta forma uma validaccedilatildeo do funcionamento do sistema e dabase de conhecimento

Para aleacutem disto sendo uma aplicaccedilatildeo web o modo lsquosupervisorrsquo ou modo lsquope-ritorsquo poderia ser acedido a partir de qualquer siacutetio e a qualquer hora Se o responsaacute-vel pela validaccedilatildeo da base de conhecimento (normalmente o perito que contribuiucom o conhecimento) natildeo estiver disponiacutevel para o fazer por motivos de ausecircnciaou incompatibilidade de horaacuterios poderaacute sempre realizar o acesso agrave aplicaccedilatildeoa partir de um outro local agrave hora que mais lhe aprouver sem qualquer tipo deprejuiacutezo quer para o perito quer para o proacuteprio sistema

bull Muacuteltiplas conclusotildees - Com o trabalho desenvolvido apenas eacute possiacutevel atraveacutesdo disparo de uma regra final chegar a uma uacutenica conclusatildeo Deveria ser possiacutevelchegar a muacuteltiplas conclusotildees pelo que natildeo tendo sido implementado nesta versatildeoconsidera-se como uma possibilidade de trabalho futuro

Aparentemente sem qualquer relaccedilatildeo a necessidade evidenciada no ponto anteriorde criar um modo lsquosupervisorrsquo ou modo lsquoperitorsquo poderaacute levar um futurodesenvolvimento no sentido de criar as muacuteltiplas conclusotildees aqui referidas jaacute queao permitir este modo de funcionamento tambeacutem deveraacute ser possiacutevel inferir sobrevaacuterios cenaacuterios possiacuteveis e respectivas conclusotildees

bull Negaccedilatildeo de premissas - Nesta versatildeo do trabalho apenas eacute possiacutevel criar regrassem negaccedilatildeo Por exemplo num cenaacuterio em que uma pergunta ao utilizador tem aforma

Qual a cor (Vermelho Azul Verde)

e as regras que satildeo candidatas a disparo forem

88

52 LIMITACcedilOtildeES E TRABALHO FUTURO

R1 - SE cor Vermelho R2 - SE cor Azul R3 SE cor Verde

entatildeo natildeo eacute possiacutevel caso seja necessaacuterio ter uma regra do tipo

Rx - SE cor NOT XXXXX

Isso apenas seria possiacutevel se a pergunta inicial fosse

Qual NAtildeO Eacute a cor (Vermelho Azul Verde)

para assim permitir regras do tipo

Rx - SE NAtildeO Eacute cor XXXXX

Assim sendo aponta-se como uma limitaccedilatildeo e eventual trabalho futuro a desenvol-ver para outras versotildees da aplicaccedilatildeo a criaccedilatildeo de um sistema que permita a negaccedilatildeode premissas para que o exemplo atraacutes indicado seja de possiacutevel implementaccedilatildeo

bull Contemplar factos iniciais nas regras - A versatildeo actual do sistema natildeo permite ainclusatildeo de factos inicias nas premissas das regras

bull Pesquisa de muacuteltiplas soluccedilotildees finais - Actualmente soacute eacute permitido executar omotor de inferecircncia com uma soluccedilatildeo final como objectivo Seria uma evidentemais valia a inclusatildeo da capacidade de pesquisa por muacuteltiplas soluccedilotildees

bull Metaconhecimento - ao ser adicionado metaconhecimento podemos aumentar odesempenho do motor de inferecircncia nos cenaacuterios em que temos bases de conheci-mento consideravelmente grandes

bull Regra mais relevante para iniciar o motor de inferecircncia - desenvolver um algoritmopara obter uma regra que tenha uma maior probabilidade de sucesso de forma aminimizar iteraccedilotildees desnecessaacuterias

bull Validaccedilatildeo automaacutetica - quando as questotildees satildeo apagadas deve ser realizada arespectiva verificaccedilatildeo de utilizaccedilatildeo dessas questotildees como condiccedilotildees de regras paraprevenir possiacuteveis inconsistecircncias

bull Suporte a vaacuterias liacutenguas - a base de conhecimento natildeo foi projectada para imple-mentar esta funcionalidade

89

Bibliografia

Acquired Intelligence (2010) Acquire httpwwwaiincca Junho de 201025

Alexander Shapiro (2010) Tggraphlayout httpsourceforgenet

projectstouchgraph Julho de 2010 49 79

Barnett J A (1991) Calculating dempster-shafer plausibility IEEE Transactions on

Pattern Analysis and Machine Intelligence 13 599ndash602 16

Boris van Schooten (2005) Yprolog httpwwwvfutwentenl

~schootenyprolog Junho de 2010 37

Carlos Figueira Filho (2010) JEOPS - Integraccedilatildeo entre Objetos e Regras de Produccedilatildeoem Java httpwwwcinufpebr~jeops Julho de 2010 36

CoAJRA J (1997) The basics of expert (knowledge based) systems 18

Dokas I M (2005) Developing web sites for web based expert systems A webengineering approach In In Proceedings of the Second International ICSC Symposium

on Information Technologies in Environmental Engineering (Magdeburg pages 202ndash217 Shaker Verlag 26

Drakopoulos J (1994) Probabilities possibilities and fuzzy sets Fuzzy Sets and

Systems 75 1ndash15 16

Elie Levy (2010) Zilonis httpwwwzilonisorgindexphp Junho de2010 37

Ernest Friedman-Hill (2010) Jess httpwwwjessrulescom Julho de 201025 36

EXSYS (2010) Exsys corvid httpwwwexsyscom Junho de 2010 24

Filho A R (2010) Mdss medical diagnosis support system LPA - Logic ProgrammingAssociates Ltd 30

Giarratano C J Riley and D G (1998) Expert Systems - Principles and Programming

Thirds Edition Principles and Programing Course Technology 3ed edition 6 18

91

BIBLIOGRAFIA

Hammurapi Group (2010) Hammurapi rules httpwwwhammurapicom

dokuwikidokuphp Junho de 2010 36

Heckerman D (1992) The certainty-factor model 16

IBM (2010) Jlog httpwww-01ibmcomsoftwarewebsphere

productsbusiness-rule-management Junho de 2010 36

Kozlenkov Alex and Paschke (2010) Prova rule language httpprovaws

indexhtml Junho de 2010 37

Logic Programming Associaties Ltd (2010) Lpa webflex httpwwwlpacouk Abril de 2010 24

Lucas P (2001) Certainty-factor-like structures in bayesian belief networks Knowledge-

Based Systems 14 327ndash335 16

Maarten Menken (2010) Jclips httpsourceforgenetprojects

jclips Julho de 2010 25 36

Mcarniel (2010) Jruleengine httpjruleenginesourceforgenet

indexhtml Junho de 2010 37

Merritt D (1989) Building expert systems in Prolog 6 56

Michael Giordano (2010) Webclips httpclipsinterfacesourceforgenetWebCLIPSwchomehtm 28 de Julho de 2003 24

OpenL (2010) Openl tablets httpopenl-tabletssourceforgenetJulho de 2010 37

OpenRules Inc (2010) Open rules engine httpopenrulescomindex

htm Julho de 2010 37

Pinto A (1998) GISPSA - GIS problem solver adviser 1 20

RedHat (2010) Drools httpwwwjbossorgdroolsdrools-experthtml Junho de 2010 36

Shortliffe E H and Buchanan B G (1990) A model of inexact reasoning in medicinepages 259ndash275 16

Wilson N (2000) Algorithms for dempster-shafer theory In Algorithms for Uncertainty

and Defeasible Reasoning pages 421ndash475 Kluwer Academic Publishers 16

92

Anexos

93

ACoacutedigo do motor de inferecircncia

Iniacutecio do motor de inferencia

init_inference- retractall(hist2) consult(rsquokbsyplrsquo)

top_goals(ControlObj MinCF) - top_goal(TopGoal) top(TopGoal ControlObj MinCF)

top(TopGoal ControlObj MinCF) - retractall(hist2) set(len 0)

getRuleMoreRelevant(TopGoal Rule) tryToProove(Rule ControlObj MinCF)

tryToProove(Rule ControlObj MinCF)- rule(Rule _ lhs(LHS) _)

proveListHyp(LHS ControlObj MinCF)get(len LEN)println(LEN)

LEN1 is LEN + 1assert(hist(LEN1Rule))println(LEN1)

set(len LEN1)

(

check if rule has return control object

(var(ControlObj)) -gt(

no control object found check if other rules needs to be fired

fireRules(ControlObj MinCF)

)(

control object found

true

)

)

proveListHyp([] ControlObj MinCF)

proveListHyp([H|T] ControlObj MinCF)-proveHyp(H ControlObj MinCF)

((var(ControlObj)) -gt (proveListHyp(T ControlObj MinCF))(true))

fact already known

proveHyp(H ControlObj MinCF)- H = ev(X Y) fact(X Y_ )

there is a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _)

not(fact(X _ _))question(X _ _ _)

not(not_question(X))ControlObj = ask(X)

95

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

there is a conclusion that can lead to a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _) rule(Rule _ lhs(LHS)

rhs(ev(X_) V))

tryToProove(Rule ControlObj MinCF)

ADD A FACT

av(Attr Value Confidence ControlObj MinCF) - retractall(hist2)set(len 0)

saveFact(Attr Value Confidence 1 CF_FINAL _)

fireRules(ControlObj MinCF)

nav(Attr)-assert(not_question(Attr))

fireRules(ControlObj MinCF)- rule(X _ lhs(LHS) rhs(ev(Y R) Conf))

not(inf_rules_fired(X_)) evaluate(LHS ConfLhs 1)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF)

get(len LEN) LEN1 is LEN + 1 assert(hist(LEN1Rule))

set(len LEN1)

(

(var(ControlObj)) -gt(

(top_goal(Y)) -gt (

ControlObj = answerFound(Y R ConfRet)

)(

true fireRules(ControlObj MinCF)

))(

true

)

)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF) -

calculateConfidence(ConfLhs Conf ConfRet)

ConfRet gt MinCF

saveFact(Y R ConfRet 2 CF_FINAL X)

assert(inf_rules_fired(X ConfRet))

evaluate([] [] 1)- true

evaluate([H|T] [FactConf|LConf] RetCode)-

H = ev(X Ans)fact(X Ans FactConf)

evaluate(T LConf RetCode)

calculateConfidence(ConfLhs RuleCF ResultCF)-min_in_list(ConfLhs MinLHSCF)

ResultCF is MinLHSCF RuleCF 100

min_in_list([Min]Min)

min_in_list([HK|T]M) - H lt= K min_in_list([H|T]M)

min_in_list([HK|T]M) - H gt K min_in_list([K|T]M)

1 - fornecido 2 - inferido

we have a fact saved with the same conclusion already

96

saveFact(Attr Value Confidence Mode CF_Final Rule)-

fact(Attr Value OldConfidence)

combine(OldConfidence Confidence CF_Final)

retract(fact(Attr Value OldConfidence))

retract(inf_sys_fact(Attr Value OldConfidence _))

assert(fact(Attr Value CF_Final))

assert(inf_sys_fact(Attr Value CF_Final Mode))

linkFactToRule(Rule Attr Value Mode)

we donrsquot have any fact saved

saveFact(Attr Value Confidence Mode Confidence Rule)-

assert(fact(Attr Value Confidence))

assert(inf_sys_fact(Attr Value Confidence Mode))

linkFactToRule(Rule Attr Value Mode)

linkFactToRule(___1)

linkFactToRule(RuleAttrValue2)-

inf_exp_how(Attr Value oldRules)

retract(inf_exp_how(Attr Value oldRules))

assert(inf_exp_how(Attr Value [Rule|oldRules]))

linkFactToRule(RuleAttrValue2)-

assert(inf_exp_how(Attr Value [Rule]))

println(rsquosaved line with information on explanation howrsquo) listing

combine(CF1 CF2 CF) - CF1 gt= 0 CF2 gt= 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CF is CF1 + Calc

combine(CF1 CF2 CF) - CF1 lt 0 CF2 lt 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CFAux is CF1 + Calc CF is 0-CFAux

combine(CF1 CF2 CF) - (CF1 lt 0 CF2 lt 0) (CF1 gt 0 CF2 gt 0)

SumCFs is CF1 + CF2 abs_minimum(CF1 CF2 MCF)

Rest is 100 - MCFCF is 100 SumCFs Rest

abs_minimum(ABX) - absolute(A AA) absolute(B BB)minimum(AABBX)

absolute(X X) -X gt= 0

absolute(X Y) -X lt 0Y is 0-X

minimum(XYX) -X lt= Y

minimum(XYY) -Y lt= X

Rule verification

verification(L)-retractall(validation_fired1)

retractall(verification_error4)set(nextid 0)

findall(IDverification_rule_1(ID _ _ _)L)

verification_rule_1(ID RuleInError RuleRelated Result)-

rule(A _ lhs(CA) RA)rule(B _ lhs(CB) RB)

not( B = A)not(validation_fired(B))

checkConditionsSimilar(CA CB FullMatch)

checkResultSimilar(FullMatch RA RB Result)

assert(validation_fired(B))

97

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

get(nextid CURR_ID)ID is CURR_ID + 1

set(nextid ID)

assert(verification_error(ID B A Result))

RuleInError = B RuleRelated = A

checkConditionsSimilar(CA CB FullMatch)-checkConditionsSimilar_1(CACB)

lent(CA X) lent(CB Y) testCheck(X Y FullMatch)

testCheck(X X 1)

testCheck(X Y 0)- not(X = Y)

checkConditionsSimilar_1([] L)

checkConditionsSimilar_1([H|R] L)- member(H L) checkConditionsSimilar_1(R L)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueB) CFB) 2)-

not(ValueA = ValueB)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueA) CFB) 2)

checkResultSimilar(0 rhs(ev(Atom Value) CFA) rhs(ev(Atom Value) CFB) 1)-

CFB lt= CFA

lent([] 0)

lent([_|R] SizeT)- lent(R Size)SizeT is Size + 1

Rule verification

retrieve_rules(L)-

findall(X rule(X _ __) L)

retrieve_questions(L)-

findall(X question(X ___) L)

Information predicates

inf_sys(L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)-

i_sys_rules(L_Rules)i_sys_inf_fact(L_Inf_Facts)

i_sys_know_fact(L_Know_Facts) i_sys_init_fact(L_Init_Facts)

i_sys_rules(L)-

findall(r(Rule Conf) inf_rules_fired(Rule Conf) L) member(C L)

i_sys_rules([])

i_sys_inf_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 2) L) member(C L)

i_sys_inf_fact([])

i_sys_know_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 1) L) member(C L)

i_sys_know_fact([])

98

i_sys_init_fact(L)-

findall(f(Attr Value Conf) condition_init(Attr Value Conf) L) member(C L)

i_sys_init_fact([])

condition_init(Attr Value Conf)-fact(Attr Value Conf)

not(inf_sys_fact(Attr _ _ _))

explanations

why(L)-findall(r(OX) hist(OX) L)

how(Attr Value Result)- inf_exp_how(Attr Value Rules)

explainHow(Rules Explanation)append(Rules Explanation Result)

explainHow([] [])

explainHow([H|T] Result)- innerExplain(H ExplanationH)

explainHow(T ExplanationRules) append(ExplanationH ExplanationRules Result)

innerExplain(Rule Explanation)- rule(Rule _ lhs(LHS) _)

explainLHS(LHS Explanation)

explainLHS([] [])

explainLHS([ev(Attr Value)|T] ExplanationA)-

not(inf_exp_how(Attr Value _))

fact(Attr Value _) print(rsquoinitial factrsquo)

explainLHS(T ExplanationA)

explainLHS([ev(Attr Value)|T] ResultA)-

how(Attr Value ExplanationA)

explainLHS(T Explanation)

append(ExplanationA Explanation ResultA)

append([] L L)

append(L [] L)

append([H|T] M [H|N])-append(L M N)

Map methods

buildValidationReport(Id RErr RRel ErrType)-

verification_error(Id RErr RRel ErrType)

buildQuestionObject(ask(X) X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

buildQuestionObject_by_code(X X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

99

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

buildSolutionObject(answerFound(Y R Found) Y R Found)

buildRuleObject(Rule Descr LHS RHS CF)-

rule(Rule Descr lhs(I_LHS) rhs(I_RHS CF))

lhs_flatten(I_LHS LHS)

rhs_flatten(I_RHS RHS)

flatten(L LO)- iflatten(L LO)

iflatten([] [])

iflatten([H|R] [AD|L])- H = answer(A D) iflatten(R L)

lhs_flatten(L LO)- ilhs_iflatten(L LO)

ilhs_iflatten([] [])

ilhs_iflatten([H|R] [[ADCB]|L])-H = ev(A D)question(A C LL _)

findMember(LLDB)ilhs_iflatten(R L)

ilhs_iflatten([H|R] [[ADAD]|L])-H = ev(A D)not(question(A _ _ _))

ilhs_iflatten(R L)

rhs_flatten(ev(AB) [AB])

findMember([] D D)-

findMember([H|T] D B)-H = answer(D B)

findMember([H|T] D B)-findMember(T D B)

attempt to Get more relevant rule

getRuleMoreRelevant(TopGoal Rule)-

rule(Rule_ _ rhs(ev(P V) X)) top_goal(P)

find the rules that contains a direct solution

findall(X rule(X lhs(LLHS) rhs(ev(TopGoal _)_)) LX)

debugLine(trc1rsquogtrsquo)debugList(LX)

For the main rules apply the algorithm

fillMainRules(LX LOUT)

bubble_sort(LOUT LREALLYOUT)

LREALLYOUT = [ score_table(Rule _ _ _) | _ ]

debugLine(trc1rsquogtrsquo)debugList(LREALLYOUT)

fillMainRules([] [])-

fillMainRules([HIN|RIN] [HOUT|LOUT])- calculateCurrentRule(HIN HOUT)

fillMainRules(RIN LOUT)

calculateCurrentRule(HIN HOUT)-rule(HIN _ lhs(LHS) rhs(_ Confidence))

calculateScoreBasedOnLHS(LHS 0 Score)

OrderIndice is Score Confidence

HOUT = score_table(HIN Score Confidence OrderIndice)

calculateScoreBasedOnLHS([] ScoreResult ScoreResult)-

100

calculateScoreBasedOnLHS([HLHS|RLHS] Score ScoreResult)-

calculateScoreBasedOnLHSCurrent(HLHS Score ScoreAfter)

calculateScoreBasedOnLHS(RLHS ScoreAfter ScoreResult)

calculateScoreBasedOnLHSCurrent(ev(X _) Score ScoreAfter)-

question(X _ _ _) not(fact(X _ _))

ScoreAfter is Score + 1

calculateScoreBasedOnLHSCurrent(ev(X _) Score Score)-

helper methods

bubble_sort(ListSorted)-b_sort(List[]Sorted)

b_sort([]AccAcc)

b_sort([H|T]AccSorted)-bubble(HTNTMax)b_sort(NT[Max|Acc]Sorted)

bubble(X[][]X)

bubble(X[Y|T][Y|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C lt= D bubble(XTNTMax)

bubble(X[Y|T][X|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C gt Dbubble(YTNTMax)

bubble_sort2(ListSorted)-b_sort2(List[]Sorted)

b_sort2([]AccAcc)

b_sort2([H|T]AccSorted)-bubble2(HTNTMax)b_sort2(NT[Max|Acc]Sorted)

bubble2(X[][]X)

bubble2(X[Y|T][Y|NT]Max)- X = r(D _) Y = r(C _) C lt= D bubble(XTNTMax)

bubble2(X[Y|T][X|NT]Max)- X = r(D _) Y = r(C _) C gt Dbubble(YTNTMax)

Allows to get a Bag of all the X that makes Goal evaluate to true

Bag can contain duplicated X

findall(XGoalBag) - post_it(XGoal) gather([]Bag)

Aux

post_it(XGoal) - call(Goal) asserta(data999(X)) fail

post_it(__)

gather(BBag) - data999(X) retract(data999(X)) gather([X|B]Bag)

gather(SS)

member(X[X|_])-

member(X[_|Y]) - member(XY)

101

BBase de conhecimento do protoacutetipo

question(turn_over rsquoO carro ligarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(lights_weak rsquoAs luzes estatildeo fracasrsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(radio_weak rsquoO raacutedio estaacute fracorsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(smell_gas rsquoCheira a gasolinarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(gas_gauge rsquoO que marca o ponteiro do depoacutesito da gasolinarsquo

[ answer(empty rsquoVaziorsquo) answer(high rsquoSuficientersquo) answer(low rsquoReservarsquo)]0)

rule(rule_1 rsquoRule 1rsquolhs([ev(turn_over no) ev(battery_bad yes)])

rhs(ev(problem battery) 100))

rule(rule_2 rsquoRule 2rsquolhs([ev(lights_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_3 rsquoRule 3rsquolhs([ev(radio_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_4 rsquoRule 4rsquolhs([ev(smell_gas yes) ev(turn_over yes)])

rhs(ev(problem flooded) 80))

rule(rule_5 rsquoRule 5rsquolhs([ev(turn_over yes) ev(gas_gauge empty)])

rhs(ev(problem out_of_gas) 90))

rule(rule_6 rsquoRule 6rsquolhs([ev(turn_over yes) ev(gas_gauge low)])

rhs(ev(problem out_of_gas) 30))

rule(rule_7 rsquoRule 7rsquolhs([ev(gas_gauge low)ev(turn_over yes)])

rhs(ev(problem out_of_gas) 30))

103

ANEXO B BASE DE CONHECIMENTO DO PROTOacuteTIPO

rule(rule_8 rsquoRule 8rsquo

lhs([ev(turn_over yes) ev(gas_gauge low) ev(smell_gas no)])

rhs(ev(problem out_of_gas) 30))

top_goal(problem)

104

CBase de conhecimento GISPSA

question(qs_tema_ger rsquoQual o tipo de Problemarsquo

[ answer(c_ger_map rsquoMapas Configuraacuteveisrsquo) answer(c_ger_inq rsquoInqueacuteritos e Listagensrsquo)

answer(c_ger_mov rsquoCGMOVIGrsquo) answer(c_ger_pla rsquoCGDCGERrsquo)

answer(c_ger_acm rsquoCGVACUMCGTACUMrsquo)]0)

question(qs_plareg rsquoA Conta tem regra de construcccedilatildeo associada rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipr rsquoExiste Conta Pai do Tipo R no Planorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaent rsquoConta aberta por entidadesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipa rsquoConta do Tipo Arsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plalim rsquoEntidade encontra-se nos limitesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaexis rsquoEntidade Existentersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plamix rsquoContas Valor entre Contas Movimentorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acumul rsquoQual o problema de acumuladosrsquo

[ answer(c_acm_avm rsquoCGVACUM ltgt CGMOVIGrsquo)

answer(c_acm_si rsquoSaldos Iniciaisrsquo)

answer(c_acm_cna rsquoContas Nao Acumulamrsquo)

answer(c_acm_avat rsquoCGVACUM ltgt CGTACUMrsquo)]0)

question(qs_incmov rsquoInconsistecircncias no CGMOVIGrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

105

ANEXO C BASE DE CONHECIMENTO GISPSA

question(qs_incpla rsquoInconsistecircncias no CGDCGERrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acmsia rsquoSaldos Iniciais Alteradosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movi rsquoQual o problema dos movimentosrsquo

[ answer(c_mov_lan rsquoLanccedilamentos nao balanceadosrsquo)

answer(c_mov_con rsquoProblema de Contasrsquo)

answer(c_mov_cgca rsquoMovimentos CG ltgt CArsquo)]0)

question(qs_movvdif rsquoValores CG gt CArsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlgca rsquoCC Ligados a Analiticarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlg100 rsquoTodas as Ligacoes a 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movm100 rsquoDiferencas Correspondem a CC com Mais de 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcna rsquoLancamento em Contas nao Existentesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movci rsquoLancamento em Contas Invalidasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcdf rsquoContas correctasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_inquer rsquoInqueacuterito ou listagemrsquo

[ answer(c_inq_bal rsquoBalancetersquo) answer(c_inq_dia rsquoExtractoDiariorsquo)]0)

question(qs_inqsal rsquoProblema de saldosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapa rsquoProblema dos mapasrsquo

[ answer(c_map_imp rsquoErro na Impressaorsquo) answer(c_map_cal rsquoErro no Calculorsquo)

answer(c_map_mic rsquoErro na Transferencia P Microrsquo)]0)

question(qs_mapcol0 rsquoA ultima linha calculada tem a coluna 0 configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapfunc

rsquoA ultima linha calculada apresenta colunas com funcoes invalidas ou sintaxe erradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin0 rsquoA Linha 000 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin9 rsquoA Linha 999 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

106

question(qs_map2alg rsquoTodos os Valores da Linha 999 tem 2 Algarismosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_map198 rsquoA Soma dos Valores da Linha 999 Ultrapassa 198rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapsys rsquoO Sistema Permite a Utilizacao de Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapuser rsquoO Utilizador Tem Acesso a Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapflr rsquoO Folder Existersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

rule(r_pla_1 r_pla_1lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plareg c_sim)])

rhs(ev(dominio d_pla_reg) 100)

)

rule(r_pla_2 r_pla_2lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plaent c_sim)])

rhs(ev(dominio d_pla_ent) 100)

)

rule(r_pla_3 r_pla_3lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plamix c_sim)])

rhs(ev(correccao cr_pla_mix) 100)

)

rule(r_pla_11 r_pla_11lhs([ev(dominio d_pla_reg) ev(qs_platipr c_nao)])

rhs(ev(correccao cr_pla_tipr) 100)

)

rule(r_pla_21 r_pla_21lhs([ev(dominio d_pla_ent) ev(qs_platipa c_nao)])

rhs(ev(correccao cr_pla_tipa) 100)

)

rule(r_pla_22 r_pla_22lhs([ev(dominio d_pla_ent) ev(qs_plalim c_nao)])

rhs(ev(correccao cr_pla_lim) 100)

)

rule(r_pla_23 r_pla_23lhs([ev(dominio d_pla_ent) ev(qs_plaexis c_nao)])

rhs(ev(correccao cr_pla_exis) 100)

)

rule(r_acm_1 r_acm_1

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_2 r_acm_2

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_3 r_acm_3

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_4 r_acm_4

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_5 r_acm_5

107

ANEXO C BASE DE CONHECIMENTO GISPSA

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_6 r_acm_6

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_7 r_acm_7

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_si) ev(qs_acmsia c_nao)])

rhs(ev(correccao cr_acm_si) 100)

)

rule(r_mov_1 r_mov_1lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_lan)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_2 r_mov_2lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_cgca)])

rhs(ev(dominio d_mov_cgca) 100)

)

rule(r_mov_21 r_mov_21lhs([ev(dominio d_mov_cgca) ev(qs_movvdif c_sim)])

rhs(ev(subdominio d_mov_cgca_1) 100)

)

rule(r_mov_22 r_mov_22lhs([ev(dominio d_mov_cgca) ev(qs_movm100 c_sim)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_23 r_mov_23lhs([ev(dominio d_mov_cgca)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_3 r_mov_3lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_con)])

rhs(ev(dominio d_mov_con) 100)

)

rule(r_mov_31 r_mov_31lhs([ev(dominio d_mov_con) ev(qs_movcna c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_32 r_mov_32lhs([ev(dominio d_mov_con) ev(qs_movci c_nao)])

rhs(ev(correccao cr_mov_inc_soft) 100)

)

rule(r_mov_33 r_mov_33lhs([ev(dominio d_mov_con) ev(qs_movcdf c_nao)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_34 r_mov_34lhs([ev(dominio d_mov_con)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_211 r_mov_211lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlgca c_nao)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_212 r_mov_212lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlg100 c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_213 r_mov_213lhs([ev(subdominio d_mov_cgca_1)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_inq_1 r_inq_1lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inquer c_inq_bal)])

rhs(ev(correccao cr_inq_bal) 100)

)

rule(r_inq_2 r_inq_2lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inqsal c_sim)])

108

rhs(ev(correccao cr_inq_dia) 100)

)

rule(r_map_1 r_map_1lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_cal)])

rhs(ev(dominio d_map_cal) 100)

)

rule(r_map_2 r_map_2lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_imp)])

rhs(ev(dominio d_map_imp) 100)

)

rule(r_map_3 r_map_3lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_mic)])

rhs(ev(dominio d_map_mic) 100)

)

rule(r_map_11 r_map_11lhs([ev(dominio d_map_cal) ev(qs_mapcol0 c_sim)])

rhs(ev(correccao cr_map_cal_col0) 100)

)

rule(r_map_12 r_map_12lhs([ev(dominio d_map_cal) ev(qs_mapfunc c_sim)])

rhs(ev(correccao cr_map_cal_func) 100)

)

rule(r_map_13 r_map_13lhs([ev(dominio d_map_cal)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_21 r_map_21lhs([ev(dominio d_map_imp) ev(qs_maplin0 c_nao)])

rhs(ev(correccao cr_map_imp_lin0) 100)

)

rule(r_map_22 r_map_22lhs([ev(dominio d_map_imp) ev(qs_maplin9 c_nao)])

rhs(ev(correccao cr_map_imp_lin9) 100)

)

rule(r_map_23 r_map_23lhs([ev(dominio d_map_imp) ev(qs_map2alg c_nao)])

rhs(ev(correccao cr_map_imp_2alg) 100)

)

rule(r_map_24 r_map_24lhs([ev(dominio d_map_imp) ev(qs_map198 c_nao)])

rhs(ev(correccao cr_map_imp_198) 100)

)

rule(r_map_25 r_map_25lhs([ev(dominio d_map_imp)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_31 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapsys c_nao)])

rhs(ev(correccao cr_map_sys) 100)

)

rule(r_map_32 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapuser c_nao)])

rhs(ev(correccao cr_map_user) 100)

)

rule(r_map_33 r_map_33lhs([ev(dominio d_map_mic) ev(qs_mapflr c_nao)])

rhs(ev(correccao cr_map_mic_flr) 100)

)

rule(r_map_34 r_map_34lhs([ev(dominio d_map_mic)])

rhs(ev(correccao cr_map_soft) 100)

)

top_goal(correccao)

109

  • Lista de Figuras
  • Lista de Tabelas
  • Lista de Coacutedigo
  • Lista de Algoritmos
  • Lista de Acroacutenimos
  • Introduccedilatildeo
    • Enquadramento
    • Objectivos
    • Planeamento
    • Estruturaccedilatildeo da dissertaccedilatildeo
      • Estado da arte
        • Sistemas periciais
          • Arquitectura
          • Base de conhecimento
            • Regras
            • Frames
            • Redes semacircnticas
            • Mecanismos de inferecircncia
            • Manutenccedilatildeo de uma base de conhecimento
              • Raciociacutenio sobre incerteza
                • Factores de certeza
                  • Vantagens e desvantagens
                    • GISPSA - GIS Problem Solver Advisor
                      • Arquitectura
                      • Funcionamento
                      • Limitaccedilotildees
                        • Web Expert Systems
                          • Casos de estudo
                            • LOMA - Landfill Operation Management Advisor
                            • MDSS - Medical Diagnosis Support System
                            • Whale watcher
                              • Ferramentas utilizadas
                                • Ambiente de desenvolvimento
                                • Motor de inferecircncia
                                  • Fase I - Recolha de candidatos
                                  • Fase II - Requisitos base
                                  • Fase III - Viabilidade econoacutemica
                                  • Fase IV - Viabilidade teacutecnica
                                  • Fase V - Prova de conceito
                                  • Conclusatildeo e fundamentaccedilatildeo da escolha
                                      • Wexsys
                                        • Arquitectura global
                                          • Moacutedulo pWexsysEAR
                                          • Moacutedulo WexsysEAR
                                          • Interligaccedilatildeo e integraccedilatildeo dos moacutedulos
                                            • Camada de acesso puacuteblico
                                            • Camada de acesso protegido
                                            • Camada de acesso privado
                                            • Fluxo de invocaccedilatildeo
                                              • Portal
                                                • Templates
                                                  • Suporte multi-liacutengua
                                                    • Motor de inferecircncia
                                                      • Multi-utilizador
                                                      • Base de conhecimento inicial
                                                      • Protoacutetipo do motor de inferecircncia
                                                        • Formato das regras
                                                        • Formato das questotildees
                                                        • Interacccedilatildeo assiacutencrona de questotildees e respostas
                                                        • Estrutura da base de conhecimento
                                                        • Algoritmos a utilizar
                                                          • Resultado final
                                                            • Arranque da execuccedilatildeo
                                                            • Mecanismo de respostas
                                                            • Conclusatildeo final encontrada
                                                            • Explicaccedilotildees
                                                                • Base de conhecimento
                                                                  • Leitura da base de conhecimento
                                                                  • Conclusatildeo final a encontrar
                                                                  • Factos iniciais
                                                                  • Regras
                                                                    • CriarAlterar uma regra
                                                                    • Questotildees
                                                                    • Verificaccedilatildeo
                                                                      • Gravaccedilatildeo da base de conhecimento
                                                                      • Conversatildeo GISPSA
                                                                        • Anaacutelise graacutefica
                                                                          • Implementaccedilatildeo
                                                                          • Funcionamento
                                                                          • Limitaccedilotildees
                                                                              • Conclusotildees
                                                                                • Contributos da soluccedilatildeo desenvolvida
                                                                                • Limitaccedilotildees e trabalho futuro
                                                                                  • Bibliografia
                                                                                  • Anexos
                                                                                  • Coacutedigo do motor de inferecircncia
                                                                                  • Base de conhecimento do protoacutetipo
                                                                                  • Base de conhecimento GISPSA
Page 2: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System

Instituto Superior de Engenharia do PortoDepartamento de Engenharia Informaacutetica

Antoacutenio Jorge de Almeida Vaz

ldquoWEXSYS - Web Expert Systemrdquo

Trabalho apresentado ao Departamento de Engenharia

Informaacutetica do Instituto Superior de Engenharia do Porto

como requisito parcial para obtenccedilatildeo do grau de Mestre

em Engenharia Informaacutetica com a aacuterea de especializaccedilatildeo

ldquoTecnologias do Conhecimento e Decisatildeordquo

OrientadorDoutor Luiz Felipe Rocha de Faria

JuacuteriDoutor Joseacute Antoacutenio Reis Tavares (Presidente)

Doutor Nuno Filipe Teixeira Malheiro

Doutor Luiz Felipe Rocha de Faria

Porto Novembro de 2010

Agradecimentos

Gostaria de agradecer a todas as pessoas que directa ou indirectamente ajudaram narealizaccedilatildeo deste trabalho

Comeccedilo por agradecer ao meu orientador Dr Luiz Faria pela disponibilidade quesempre demonstrou e pelas vaacuterias conversas construtivas que tivemos

Agrave Dra Faacutetima Rodrigues pela compreensatildeo demonstradaAo meu antigo colega e chefe de sector Antoacutenio Pinto pela cedecircncia do trabalho que

deu origem a esta dissertaccedilatildeoAo meu colega de curso Antoacutenio Mota pelo companheirismo pela amizade e em

especial por todo o apoioAos meus amigos em especial ao pessoal dos Kruppa pela amizade e pelo incentivo

que sempre me deramAgrave minha famiacutelia pela compreensatildeo e pela forccedila sempre demonstradasPor fim quero agradecer a uma pessoa muito especial agrave Clara pela compreensatildeo

incentivo e carinho nos momentos mais importantes

v

Resumo

Desde o iniacutecio que os sistemas periciais natildeo foram vistos apenas como sistemas quepoderiam substituir os peritos Os peritos por sua vez independentemente da aacuterea em queoperam eram tidos como indiviacuteduos que atingiram a excelecircncia atraveacutes da experiecircnciaestudo e total dedicaccedilatildeo por vezes durante anos

Hoje mais do que assumir o papel de um perito na excelecircncia de uma aacuterea de actuaccedilatildeoos sistemas periciais sobressaem pela disponibilidade contiacutenua acessos facilitados custosreduzidos estabilidade de funcionamento e coerecircncia de raciociacutenio Empurrados pelosavanccedilos actuais das redes em termos de velocidade e propagaccedilatildeo global estes sistemassatildeo hoje disponibilizados de forma mais simples e acessiacutevel

Este trabalho eacute realizado com o propoacutesito de evoluir o actual sistema para umaversatildeo mais apelativa funcional e fiaacutevel Um dos objectivos passa pela evoluccedilatildeo doactual modo de funcionamento utilizaccedilatildeo local e apenas um utilizador para um modode funcionamento que permita uma disponibilizaccedilatildeo num ambiente de acesso globalacessiacutevel a qualquer hora e em qualquer local

Palavras-chave GISPSA sistema pericial manutenccedilatildeo base de conhecimento anaacute-lise graacutefica de base de conhecimento

vii

Abstract

From the begining that the expert systems were not treated solely as systems intendedto replace experts Experts in turn regardless of their operating area were seen asindividuals that achieved excellence through experience study and total dedicationsometimes over many years

Today more than just assuming the part of an expert in a given area expert systemsstand for their continuous availability easy access reduced costs operating stability andconsistency of reasoning Pushed by todays advances in networks regarding speed andglobal spread these systems are now available in a more simple and accessible way

This work is carried out in order to evolve the current system to a more appealingfunctional and reliable One of the objectives is the evolution of the current mode ofoperation local and single user to a mode globally accessible regardless the time or theplace where its intervention is necessary

Keywords GISPSA expert system knowledge base maintenance knowledge basegraphical analysis

ix

Conteuacutedo

Lista de Figuras xv

Lista de Tabelas xvii

Lista de Coacutedigo xix

Lista de Algoritmos xxi

Lista de Acroacutenimos xxiii

1 Introduccedilatildeo 111 Enquadramento 2

12 Objectivos 2

13 Planeamento 3

14 Estruturaccedilatildeo da dissertaccedilatildeo 3

2 Estado da arte 521 Sistemas periciais 5

211 Arquitectura 7

212 Base de conhecimento 9

2121 Regras 10

2122 Frames 12

2123 Redes semacircnticas 13

2124 Mecanismos de inferecircncia 14

2125 Manutenccedilatildeo de uma base de conhecimento 15

213 Raciociacutenio sobre incerteza 16

2131 Factores de certeza 16

214 Vantagens e desvantagens 17

22 GISPSA - GIS Problem Solver Advisor 20

221 Arquitectura 20

222 Funcionamento 21

223 Limitaccedilotildees 22

23 Web Expert Systems 23

231 Casos de estudo 25

2311 LOMA - Landfill Operation Management Advisor 26

xi

2312 MDSS - Medical Diagnosis Support System 30

2313 Whale watcher 31

3 Ferramentas utilizadas 3331 Ambiente de desenvolvimento 33

32 Motor de inferecircncia 35

321 Fase I - Recolha de candidatos 35

322 Fase II - Requisitos base 37

323 Fase III - Viabilidade econoacutemica 38

324 Fase IV - Viabilidade teacutecnica 38

325 Fase V - Prova de conceito 39

326 Conclusatildeo e fundamentaccedilatildeo da escolha 40

4 Wexsys 4341 Arquitectura global 43

411 Moacutedulo pWexsysEAR 44

412 Moacutedulo WexsysEAR 45

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos 46

4131 Camada de acesso puacuteblico 46

4132 Camada de acesso protegido 48

4133 Camada de acesso privado 48

4134 Fluxo de invocaccedilatildeo 49

414 Portal 50

4141 Templates 51

415 Suporte multi-liacutengua 53

42 Motor de inferecircncia 54

421 Multi-utilizador 54

422 Base de conhecimento inicial 55

423 Protoacutetipo do motor de inferecircncia 56

4231 Formato das regras 56

4232 Formato das questotildees 57

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas 57

4234 Estrutura da base de conhecimento 58

4235 Algoritmos a utilizar 60

424 Resultado final 62

4241 Arranque da execuccedilatildeo 62

xii

4242 Mecanismo de respostas 654243 Conclusatildeo final encontrada 674244 Explicaccedilotildees 67

43 Base de conhecimento 71431 Leitura da base de conhecimento 72432 Conclusatildeo final a encontrar 73433 Factos iniciais 74434 Regras 74

4341 CriarAlterar uma regra 744342 Questotildees 764343 Verificaccedilatildeo 77

435 Gravaccedilatildeo da base de conhecimento 77436 Conversatildeo GISPSA 78

44 Anaacutelise graacutefica 79441 Implementaccedilatildeo 79442 Funcionamento 79443 Limitaccedilotildees 82

5 Conclusotildees 8351 Contributos da soluccedilatildeo desenvolvida 8452 Limitaccedilotildees e trabalho futuro 87

Bibliografia 92

Anexos 93

A Coacutedigo do motor de inferecircncia 95

B Base de conhecimento do protoacutetipo 103

C Base de conhecimento GISPSA 105

xiii

Lista de Figuras

1 Arquitectura de um sistema pericial 82 GISPSA menu inicial 213 GISPSA interacccedilatildeo inicial 224 GISPSA exemplo de interacccedilatildeo pergunta-resposta 225 Arquitectura do LOMA 276 Paacutegina inicial do sistema pericial LOMA 287 Sub-moacutedulo extra 288 Sugestatildeo de problemas do sub-moacutedulo extra 299 Sub-moacutedulo especializado 2910 Paacutegina principal do sistema pericial Whale Watcher 3111 Paacutegina final do sistema pericial Whale Watcher 31

12 Arquitectura da soluccedilatildeo 4413 Arquitectura do moacutedulo visual 4414 Arquitectura do moacutedulo de negoacutecio 4515 Wexsys - Integraccedilatildeo dos componentes 4616 Diagrama de classes principais 4917 Diagrama de sequecircncia do fluxo de invocaccedilatildeo 5018 Wexsys - Paacutegina inicial 5119 Paacutegina inicial do motor de inferecircncia 6220 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia 6321 Fluxo de invocaccedilatildeo de resposta a uma questatildeo 6622 Conclusatildeo da inferecircncia 6723 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo 6824 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia 6925 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final 6926 Paacutegina inicial da gestatildeo da base de conhecimento 7227 Processo de carregamento das regras 7328 Introduzir uma nova regra 7529 Apresentaccedilatildeo de valores configurados na questatildeo 7630 Formulaacuterio de introduccedilatildeo de uma questatildeo 7631 Verificaccedilatildeo da base de conhecimento 7732 Processo de gravaccedilatildeo da base de conhecimento 7833 Paacutegina inicial da anaacutelise graacutefica 80

xv

34 Exemplo de grafo totalmente expandido 8135 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto 82

xvi

Lista de Tabelas

1 Listagem de produtos da Fase I 362 Listagem de produtos excluiacutedos na Fase II 383 Listagem de produtos excluiacutedos na Fase III 384 Listagem de produtos excluiacutedos na Fase IV 395 JClips - Vantagens e desvantagens 396 Prova - Vantagens e desvantagens 407 YProlog - Vantagens e desvantagens 40

xvii

Lista de Coacutedigo

1 Excerto da classe RuleView 472 Excerto da classe Rule 473 Coacutedigo do template principal do portal 514 Coacutedigo da paacutegina inicial do portal 535 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo 546 Representaccedilatildeo da base de conhecimento do protoacutetipo 587 Predicados principais do motor de inferecircncia 638 Predicados principais do sistema de explicaccedilotildees 70

xix

Lista de Algoritmos

1 Algoritmo principal do motor de inferecircncia 602 Verifica se uma premissa eacute verdadeira 613 Dispara as regras que possam ser disparadas 614 Algoritmo responsaacutevel pelo desenho da applet 805 Algoritmo para construccedilatildeo dos dados do grafo 81

xxi

Lista de Acroacutenimos

AI Artificial Intelligence ou Inteligecircncia Artificial

BRMS Business Rule Management System

CF Certainty Factors ou Factores de Certeza

CLIPS C Language Integrated Production System

DTO Data Transfer Object

ES Expert System

GIS Gestatildeo Integrada de Seguros

GISPSA GIS Problem Solver Advisor

IDE Integrated Development Environment

JEOPS Java Embedded Object Production System

JSF JavaServer Faces

LHS Left-Handed Side

LOMA Landfill Operation Management Advisor

MDSS Medical Diagnosis Support System

ODBC Open Data Base Connectivity

OO Object Oriented

RHS Right-Handed Side

SP Sistema Pericial

SDK Software Development Kit

xxiii

1Introduccedilatildeo

Este trabalho eacute desenvolvido no acircmbito do Mestrado em Engenharia Informaacutetica ramode Tecnologias do Conhecimento e Decisatildeo e teve a sua origem a partir de um sistemadoravante designado por sistema base desenvolvido por Pinto Este sistema base foidesenvolvido durante a realizaccedilatildeo de um trabalho acadeacutemico (Pinto (1998)) cujo principalobjectivo era a construccedilatildeo de um sistema pericial

Na altura da sua criaccedilatildeo o sistema base apenas estava preparado para uma utilizaccedilatildeodo tipo mono-posto Ficava assim estabelecida a condiccedilatildeo de apenas um utilizador decada vez ter acesso ao sistema base Natildeo era exigiacutevel nem sequer necessaacuterio que outrocenaacuterio fosse equacionado dado tratar-se de um trabalho acadeacutemico O sistema ficoudesta forma limitado

Assim somos remetidos a um dos objectivos iniciais que levaram ao desenvolvimentodo trabalho que agora aqui se apresenta Proceder agrave evoluccedilatildeo do sistema base garantindoque o mesmo possa ser acedido por muacuteltiplos utilizadores de forma simultacircnea e a suadisponibilizaccedilatildeo num ambiente de acesso global mediante a utilizaccedilatildeo de redes sendoque a preferecircncia recai sobre a rede mais global que existe a internet Referindo-nos aeste tipo de disponibilizaccedilatildeo com todas as vantagens que lhe estatildeo afectas o proacuteximopasso loacutegico seria a integraccedilatildeo do novo sistema num portal

Eacute tambeacutem um objectivo inicial proceder agrave alteraccedilatildeo da actual forma de manutenccedilatildeo doconhecimento Pretende-se desenvolver um mecanismo de manutenccedilatildeo de conhecimentoque simplifique a interacccedilatildeo com o utilizador

Por uacuteltimo os objectivos deste trabalho passam igualmente pelo melhoramento dosistema base tentando eliminar alguns erros que foram detectados ao longo do tempo eacrescentando algumas caracteriacutesticas que entretanto surgiram e que foram consideradasnecessaacuterias

1

CAPIacuteTULO 1 INTRODUCcedilAtildeO

11 Enquadramento

O sistema a desenvolver embora tenha como ponto de partida um sistema base criado parautilizaccedilatildeo mono-posto faraacute parte de um portal onde seraacute integrado como uma ferramentade apoio na resoluccedilatildeo de problemas operacionais

Para aleacutem de actualmente fazer muito mais sentido a disponibilizaccedilatildeo do sistemanum ambiente de acesso globalizado e com a possibilidade de vaacuterios utilizadores emsimultacircneo a grande vantagem reside no facto de poder utilizar a mesma base de conhe-cimento que alimenta o sistema pericial independentemente do local onde se realizem osacessos Fica assim garantida a uniformidade a fiabilidade e a estabilidade do sistema

Por uacuteltimo a globalizaccedilatildeo do sistema garante igualmente que sempre que este eacuteutilizado natildeo para consulta ou apoio na resoluccedilatildeo de problemas mas para acrescentarnovos factos e dados agrave base de conhecimento estes estejam imediatamente disponiacuteveispara novas consultas ou para resoluccedilotildees de problemas de forma mais eficaz

12 Objectivos

O objectivo principal deste trabalho passa pela integraccedilatildeo do GIS Problem SolverAdvisor (GISPSA) (sistema base) num portal Aleacutem deste outros objectivos podemser considerados como de eventual ou relevante importacircncia podendo ser caracterizadosda seguinte forma

bull Objectivos globais

ndash Desenvolvimento de um sistema pericial rArr Pretende-se desenvolver umcandidato agrave substituiccedilatildeo do GISPSA

ndash Manutenccedilatildeo da base de conhecimento rArr Gerir a base de conhecimentorelativamente agrave inserccedilatildeo e actualizaccedilatildeo de regras de conhecimento bem comoimplementaccedilatildeo de mecanismos de verificaccedilatildeo das regras

bull Objectivos especiacuteficos

ndash Adaptar o motor de inferecircncia existente ou desenvolver novorArr Desenvolvi-mento de um motor de inferecircncia que se enquadre com os objectivos definidos

ndash Alterar o mecanismo de interacccedilatildeo do utilizador com a base de conheci-mentorArr Facilitar a manipulaccedilatildeo da base de conhecimento de forma a evitarproblemas na alteraccedilatildeo da base de conhecimento

2

13 PLANEAMENTO

ndash Verificar e detectar inconsistecircncias na base de conhecimentorArr Implementarmecanismos de verificaccedilatildeo das regras existentes para minimizar problemas

13 Planeamento

O planeamento deste trabalho foi estruturado em quatro fases A composiccedilatildeo dessas faseseacute a seguinte

1 Requisitos

bull Levantamento de requisitos

bull Estado da arte

bull Ferramentas existentes

2 Protoacutetipo

bull Protoacutetipo do motor de inferecircncia

bull Implementaccedilatildeo do gestor da base de conhecimento

3 Verificaccedilatildeo

bull Implementaccedilatildeo de meacutetodos de verificaccedilatildeo e detecccedilatildeo de inconsistecircncias

4 Elaboraccedilatildeo da dissertaccedilatildeo

bull Redacccedilatildeo final da dissertaccedilatildeo

14 Estruturaccedilatildeo da dissertaccedilatildeo

Nesta secccedilatildeo eacute apresentada a estrutura da dissertaccedilatildeo composta por cinco capiacutetulosNo primeiro capiacutetulo ldquoIntroduccedilatildeordquo eacute apresentado o problema actual quais os objec-

tivos a alcanccedilar e qual o planeamento para a prossecuccedilatildeo desses objectivosNo segundo capiacutetulo ldquoEstado da Arterdquo eacute apresentado a soluccedilatildeo GISPSA e tambeacutem o

estado da arte na aacuterea dos sistemas periciaisNo terceiro capiacutetulo ldquoFerramentas utilizadasrdquo eacute apresentado o estudo efectuado sobre

as ferramentas utilizadas e quais as conclusotildees do mesmoNo quarto capiacutetulo ldquoWexsysrdquo eacute descrita a soluccedilatildeo proposta e implementadaNo quinto e uacuteltimo capiacutetulo ldquoConclusotildeesrdquo satildeo apresentadas as conclusotildees finais bem

como os objectivos alcanccedilados e as actuais limitaccedilotildees

3

2Estado da arte

Num estado da arte pretende-se essencialmente fazer o enquadramento do estaacutegio deevoluccedilatildeo e eventuais casos de estudo relacionados com as tecnologias sistemas oupropostas que satildeo utilizadas ou apresentadas ao longo de um trabalho

Para o nosso caso em concreto vamos focalizar esse enquadramento sobre os sistemaspericiais no seu sentido mais abstracto e ainda sobre o sistema base jaacute indicado oGISPSA Apesar de o sistema base ser por si soacute um sistema pericial e como tal poderser apresentado como um caso de estudo inserido nos sistemas periciais generalizados ofacto de servir como ponto de partida para este trabalho em concreto confere-lhe umaimportacircncia muito superior sendo quase obrigatoacuteria a reserva de uma secccedilatildeo proacutepria parao mesmo

21 Sistemas periciais

Os sistemas periciais pertencem a um dos ramos da Artificial Intelligence ou InteligecircnciaArtificial (AI) e surgiram a partir da necessidade que alguns investigadores sentiram emcriar um software que demonstrasse raciociacutenio e comportamento inteligente durante aresoluccedilatildeo de problemas

Um Sistema Pericial (SP) tambeacutem conhecido como Expert System (ES) caracteriza-se como sendo um programa que permite a consulta e utilizaccedilatildeo de conhecimento extraiacutedode um ou mais peritos em determinada aacuterea Esse conhecimento estaacute normalmenteguardado naquilo que eacute mais habitualmente designado por base de conhecimento e agrave qualo programa tem o devido acesso

Na criaccedilatildeo de um SP o ideal seraacute sempre consultar os melhores peritos dentro daaacuterea pretendida e ainda que estes estejam disponiacuteveis para partilhar e disponibilizar oseu conhecimento Tal seria efectivamente a situaccedilatildeo ideal mas que nem sempre se

5

CAPIacuteTULO 2 ESTADO DA ARTE

aproxima da realidade Aliaacutes o verdadeiro sucesso de um sistema pericial reside naqualidade da sua base de conhecimento

Antes de mais devemos considerar que algueacutem que eacute perito em algo certamente oseraacute por uma seacuterie de factores conjugados Experiecircncia adquirida ao longo de vaacuteriosanos formaccedilatildeo especiacutefica dedicaccedilatildeo e estudo profundo seratildeo alguns desses factoresSempre que um indiviacuteduo se encontra numa posiccedilatildeo de excelecircncia em que eacute consideradoum verdadeiro perito encontra-se tambeacutem numa posiccedilatildeo em que lhe eacute bastante difiacutecilencontrar o tempo necessaacuterio para se submeter a uma extracccedilatildeo do conhecimento quedeteacutem Se a isto juntar-mos o facto do objectivo pelo qual se procede agrave extracccedilatildeo deconhecimento eacute a criaccedilatildeo de um programa que seraacute equiparado ao proacuteprio perito emtermos de conhecimento certamente que haveraacute algum desconforto

Aqui surgem as primeiras duacutevidas Seraacute que o sistema pericial tomaraacute o lugar deum ou mais peritos Apesar desta e de outras preocupaccedilotildees os peritos normalmentecontribuem de forma positiva para o enriquecimento de um sistema pericial tornando-odesta forma num sistema com maior qualidade e do qual eles proacuteprios poderatildeo usufruirjaacute que quando eacute possiacutevel agregar o conhecimento de muacuteltiplas pessoas obteacutem-se umconhecimento global superior ao individual

Para aleacutem disto o sistema pericial tende a proceder a um raciociacutenio mais linear loacutegicoe coerente quando comparado com um ser humano que poderaacute deixar que factores comopor exemplo o cansaccedilo ou os sentimentos o influenciem

Merritt define um sistema pericial como sendo um programa que utiliza conhecimentoe meacutetodos de inferecircncia para resolver problemas que satildeo suficientemente complexos pararequerer um especialista para a sua resoluccedilatildeo

ldquo an intelligent computer program that uses knowledge and inference procedures to

solve problems that are difficult enough to require significant human expertise for their

solutionsrdquo Merritt (1989)

A definiccedilatildeo de Giarratano et al eacute mais relacionada com o tipo de problemas tratadospor um sistema pericial

ldquo computer application wich embody some non-algorithmic expertise for solving certain

types of problemsrdquo Giarratano et al (1998)

Esta definiccedilatildeo enquadra de uma forma global as definiccedilotildees reconhecidas aos siste-mas periciais ldquoum sistema pericial pretende emular um perito na identificaccedilatildeo de umdeterminado problema cuja resoluccedilatildeo envolva conhecimento natildeo algoriacutetmicordquo

Existe uma clara separaccedilatildeo entre conhecimento e raciociacutenio o conhecimento eacute obtidocomo jaacute foi referido recorrendo a um ou mais peritos na aacuterea Os dados obtidos satildeo depois

6

21 SISTEMAS PERICIAIS

codificados atraveacutes de um determinado esquema de representaccedilatildeo No passo seguinteeacute adicionada a capacidade de raciociacutenio ao sistema pericial recorrendo a estrateacutegiasheuriacutesticas na tentativa de fornecer um resultado semelhante ao que um perito forneceriae aqui uma vez mais o papel do perito eacute fundamental para o sucesso do sistema pericial

Para aleacutem de contribuir com o conhecimento o perito deveraacute igualmente contribuircom o raciociacutenio utilizado para o manuseamento desse mesmo conhecimento Isto porquea resoluccedilatildeo de um problema poderaacute em determinadas situaccedilotildees necessitar de pequenosajustes que fogem agrave linearidade de um processamento computacional mas que podemperfeitamente ser simuladas e recriadas na construccedilatildeo do raciociacutenio do programa

Eacute necessaacuterio compreender que um perito para aleacutem de ser algueacutem que eacute consideradoum especialista na sua aacuterea eacute habitualmente algueacutem com pouco ou nenhum tempodisponiacutevel o que dificulta bastante a realizaccedilatildeo da recolha do conhecimento O seutempo eacute dispendioso e tem por norma poucos espaccedilos de manobra devido agraves muitassolicitaccedilotildees que lhe satildeo dirigidas Aqui impera o factor de resistecircncia ora porque o peritonatildeo acredita que o sistema seja tatildeo eficaz como ele ora porque existe o receio de sersubstituiacutedo ou passar a ter menos solicitaccedilotildees Quanto maior a colaboraccedilatildeo do ou dosperitos envolvidos na criaccedilatildeo de um qualquer sistema pericial melhor e mais eficaz seraacuteesse sistema pericial

211 Arquitectura

As duas grandes componentes do sistema pericial e que permitem a separaccedilatildeo referidaentre conhecimento e raciociacutenio satildeo a base de conhecimento (depende do domiacutenio ou daaacuterea abrangida) e o bloco de raciociacutenio (natildeo depende do domiacutenio) Este uacuteltimo eacute aindadividido em trecircs partes distintas o motor de inferecircncia o sistema de explicaccedilotildees e ainterface com o utilizador

Um sistema pericial deve ser estruturado de forma a que possa ser actualizado facil-mente sem que seja necessaacuteria qualquer alteraccedilatildeo ao niacutevel funcional do programa

7

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 1 Arquitectura de um sistema pericial

A figura 1 mostra a composiccedilatildeo de um sistema pericial e que mais detalhadamente eacutea seguinte

bull Interface com o utilizador

um sistema pericial deveraacute permitir a interacccedilatildeo com o utilizador Nos casosmais habituais os utilizadores que usufruem dos benefiacutecios destes sistemas natildeosatildeo peritos da aacuterea e pretendem aconselhamento ou ajuda na resoluccedilatildeo de umproblema Noutros casos o utilizador poderaacute ser um perito da aacuterea que apenaspretende testar o sistema pericial ou confrontar as conclusotildees deste com as suasproacuteprias conclusotildees para perceber se sendo diferentes qual o motivo para queisso aconteccedila Isto poderaacute permitir que um perito aprofunde ou corrija o seuproacuteprio conhecimento ou que por outro lado se procedam a correcccedilotildees agrave base deconhecimento do sistema pericial mediante se trate de erro por parte de um ou deoutro

De qualquer forma a interface com o utilizador deveraacute permitir a interacccedilatildeo entreo sistema pericial e o utilizador (qualquer que este seja) para que o utilizadorresponda agraves questotildees que lhe satildeo colocadas e peccedila explicaccedilotildees para os passos econclusotildees que percorre e descobre ao longo da utilizaccedilatildeo do programa

bull Base de conhecimento

o conhecimento extraiacutedo de um ou mais peritos eacute armazenado e mantido aquiDurante a execuccedilatildeo do programa o sistema pericial acede a esta base para consultaros dados disponiacuteveis Eacute sempre possiacutevel em qualquer altura retirar acrescentarou corrigir factos na base de conhecimento Isto contribui para uma evoluccedilatildeo damesma no sentido de melhorar sempre o funcionamento do proacuteprio sistema pericial

8

21 SISTEMAS PERICIAIS

bull Motor de inferecircncia

este bloco eacute o grande responsaacutevel por interpretar o conhecimento e colocarde uma forma estruturada questotildees ao utilizador O raciociacutenio extraiacutedo do ou dosperitos eacute aqui consultado para que mediante as questotildees que satildeo colocadas aoutilizador e as consultas que satildeo efectuadas agrave base de conhecimento este motor deinferecircncia determine qual a proacutexima questatildeo a colocar qual a proacutexima consulta arealizar ou qual a conclusatildeo a apresentar

bull Sistema de explicaccedilotildees

sempre que o utilizador pretende que lhe seja dada uma explicaccedilatildeo para aquestatildeo que estaacute a ser colocada ou para a conclusatildeo que foi determinada este blocoseraacute o responsaacutevel por dar essa mesma explicaccedilatildeo

Esta divisatildeo permite que os moacutedulos funcionais do programa possam ser isoladoscomo podemos observar na figura 1 de forma a facilitar futuras correcccedilotildees e actualizaccedilotildeesda base de conhecimento contribuindo positivamente para a evoluccedilatildeo da mesma eevitando assim que o sistema pericial fique obsoleto

212 Base de conhecimento

Uma base de conhecimento eacute um conjunto de informaccedilatildeo representada de forma a quepossa ser processada pelo motor de inferecircncia Existem vaacuterias formas de representa-ccedilatildeo de conhecimento no entanto as mais conhecidas satildeo a representaccedilatildeo por regrasrepresentaccedilatildeo por ldquoframesrdquo e ainda as redes semacircnticas

Ao representar conhecimento um dos factores determinantes para o meacutetodo necessaacute-rio a essa representaccedilatildeo eacute o domiacutenio do problema ou aacuterea a modelar A tiacutetulo de exemplose um problema segue um padratildeo ou algum tipo de linearidade na busca da soluccedilatildeonecessaacuteria ou ainda se a soluccedilatildeo puder ser obtida atraveacutes de questotildees cujas respostassatildeo maioritariamente simples (sim natildeo valores numeacutericos etc) a representaccedilatildeo doconhecimento eacute feita utilizando os meacutetodos de regras ou ldquoframesrdquo

Como jaacute foi referido o papel de um perito natildeo estaacute limitado apenas agrave contribuiccedilatildeocom o conhecimento para a base necessaacuteria Este exerce um outro papel igualmenteimportante que tem a ver mais com o aspecto de raciociacutenio Desta forma ao consultar abase de conhecimento satildeo tomadas algumas decisotildees tais como verificaccedilatildeo de eventuaissoluccedilotildees jaacute possiacuteveis em pontos intermeacutedios ou qual a proacutexima questatildeo a colocar Estemeacutetodo de interacccedilatildeo com a base de conhecimento poderaacute eventualmente entrar em

9

CAPIacuteTULO 2 ESTADO DA ARTE

conflito com a independecircncia de domiacutenio que foi referida na arquitectura de um sistemapericial No entanto este aspecto fundamental da criaccedilatildeo de um sistema pericial contribuilargamente para o bom funcionamento do mesmo

Para aleacutem disto a base de conhecimento deveraacute sempre contemplar as funcionalidadesnecessaacuterias que permitam ao utilizador em qualquer altura proceder agrave adiccedilatildeo de novosfactos agrave correcccedilatildeo dos jaacute existentes ou ainda agrave eliminaccedilatildeo dos mesmos Isto permitemanter uma base de conhecimento sempre actualizada fiaacutevel e consistente Estas razotildeescontribuem para a resoluccedilatildeo cada vez mais eficaz dos problemas que satildeo colocadosPara novos problemas que surgem poderatildeo ser necessaacuterias novas soluccedilotildees ou novosmeacutetodos para as encontrar Para problemas jaacute conhecidos poderatildeo ser encontradas novasformas ou novas soluccedilotildees de os resolver eventualmente consideradas mais eficazes ou deimplementaccedilatildeo mais simples

Por tudo isto considera-se que a base de conhecimento apesar de natildeo ser o verdadeiromotor de um sistema pericial poderaacute ser encarada como o verdadeiro combustiacutevelque o move e sem o qual natildeo seria possiacutevel qualquer tipo de evoluccedilatildeo pelo que a natildeocontribuiccedilatildeo para o seu melhoramento estagna o proacuteprio sistema provocando mais cedoou mais tarde o abandono do mesmo por parte dos utilizadores que entretanto podemperder a confianccedila que lhe depositaram

Os meacutetodos de representaccedilatildeo de conhecimento podem ser seleccionados de acordocom as caracteriacutesticas que lhes estatildeo inerentes e que se descrevem de seguida

2121 Regras

Uma das teacutecnicas de representaccedilatildeo de conhecimento mais utilizadas eacute a representaccedilatildeopor regras Estas satildeo utilizadas para representar heuriacutesticas e caracterizam-se por umconjunto de premissas que desencadeiam ou conduzem a uma soluccedilatildeo

As regras tecircm o formato ltidentificaccedilatildeogt Se ltLeft-Handed Side (LHS)gt EntatildeoltRight-Handed Side (RHS)gt

Onde

ltidentificaccedilatildeogt - identificaccedilatildeo da regra

ltLHSgt ndash ldquoLeft-Handed Siderdquo define as premissas que teratildeo que ser satisfeitas deforma a que a regra possa ser disparada

ltRHSgt ndash ldquoRight-Handed Siderdquo define as acccedilotildees ou conclusotildees que seratildeo verificadascom o disparo da regra

As premissas satildeo definidas recorrendo a factos que podem ser previamente conhecidosou inferidos a partir de outras regras A utilizaccedilatildeo de regras promove uma separaccedilatildeo

10

21 SISTEMAS PERICIAIS

entre a parte loacutegica e a funcional isto eacute permite-nos uma abstracccedilatildeo de implementaccedilatildeofocando-se na loacutegica

Vantagens

bull expressividade - as regras satildeo normalmente representadas de uma forma naturalque pode mesmo chegar a ser declarativa Eacute perfeitamente normal uma regra estarescrita num vocabulaacuterio que pode ser lido e compreendido por algueacutem que natildeo sejao programador o perito ou algueacutem com formaccedilatildeo na aacuterea em questatildeo

bull modularidade - as regras satildeo independentes entre si o que possibilita uma maisfaacutecil manutenccedilatildeo da base de conhecimento Isto permite e facilita a remoccedilatildeo deregras a adiccedilatildeo de outras ou a alteraccedilatildeo das jaacute existentes

bull separaccedilatildeo loacutegica - as regras satildeo independentes do motor de inferecircncia e estenatildeo carece de alteraccedilotildees ou actualizaccedilotildees quando as regras satildeo modificadas Ofuncionamento do sistema natildeo eacute alterado quando as regras o satildeo apenas as soluccedilotildeesque o sistema obteacutem eacute que poderatildeo ser diferentes (normalmente para melhor)

bull gramaacutetica riacutegida - as regras obedecem a estruturas que estatildeo perfeitamente defi-nidas agrave partida Isto implica que as mesmas possam ser validadas ou ateacute mesmoconstruiacutedas recorrendo a outros sistemas

bull execuccedilatildeo loacutegica - eacute sempre possiacutevel em qualquer altura do funcionamento dosistema pericial solicitar o desencadeamento ou disparo de uma sucessatildeo deregras A isto chama-se uma explosatildeo combinatoacuteria das regras e permite quesejam contemplados vaacuterios cenaacuterios possiacuteveis utilizando apenas uma execuccedilatildeoEsta execuccedilatildeo loacutegica tem sempre o mesmo resultado desde que se mantenham osparacircmetros iniciais

bull sistema de explicaccedilotildees - ao proceder a disparos de regras eacute possiacutevel dar indicaccedilatildeode qual a loacutegica utilizada para disparar uma determinada regra Isto permite de umaforma didaacutectica e simples justificar a razatildeo dos disparos auxiliando o utilizador nacompreensatildeo da evoluccedilatildeo que o sistema segue para atingir determinada soluccedilatildeo

Desvantagens

bull explicaccedilotildees - se um utilizador natildeo conhecer as regras ou natildeo as aceitar o sistemade explicaccedilotildees natildeo seraacute uma mais valia Poderaacute ateacute eventualmente tornar-se emalgo que confunde mais do que aquilo que auxilia

11

CAPIacuteTULO 2 ESTADO DA ARTE

bull gramaacutetica riacutegida - apesar de o meacutetodo de utilizaccedilatildeo de estruturas poder ser con-siderado importante porque estabelece um padratildeo a ser seguido pode conduzir aproblemas de expressividade quando utilizado em domiacutenios complexos

bull inconsistecircncia - um dos maiores problemas que podem surgir num sistema queutiliza a representaccedilatildeo do conhecimento atraveacutes de regras tem a ver com a possibi-lidade da existecircncia de inconsistecircncias e incoerecircncias nas regras Isto reduz-se ouevita-se atraveacutes da utilizaccedilatildeo exaustiva do sistema numa fase de testes em que satildeoequacionados o maior nuacutemero de casos ou cenaacuterios que possam despoletar todas asregras existentes na base de conhecimento

2122 Frames

Uma frame representa um conceito e eacute composta por slots que que natildeo satildeo mais do que adefiniccedilatildeo de um conjunto ltatributo valorgt Um valor pode ser um elemento uacutenico ouuma lista de valores e em termos de dados pode conter um tipo de dados primitivo ouuma referecircncia a outra frame

Esta representaccedilatildeo tem uma ligaccedilatildeo muito forte com o paradigma da programaccedilatildeoorientada a objectos jaacute que a ideia eacute a mesma representar objectos e conceitos do mundoreal utilizando a descriccedilatildeo a composiccedilatildeo e a heranccedila

Como vantagens temos

bull associaccedilatildeo - as frames definem e representam o conhecimento de uma formaassociativa (associaccedilatildeo normal de conceitos)

Desvantagens

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as frames podem representar um espaccedilo que natildeo estaacuterestringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

12

21 SISTEMAS PERICIAIS

2123 Redes semacircnticas

Uma rede semacircntica eacute um modelo formal em que satildeo descritos conceitos e relaccedilotildeesrecorrendo a um grafo dirigido Os conceitos satildeo representados por noacutes as relaccedilotildees porarcos e existe uma heranccedila de conceitos agrave medida que se procede agrave navegaccedilatildeo pelas vaacuteriasrelaccedilotildees

Como vantagens temos

bull exploraccedilatildeo graacutefica - a representaccedilatildeo de conhecimento atraveacutes de redes semacircnticaspermite a um utilizador explorar um domiacutenio graficamente Isto facilita a interacccedilatildeoe utilizaccedilatildeo do sistema

bull facilidade na adiccedilatildeo de clusters relacionados - utilizando o modo graacutefico de repre-sentaccedilatildeo torna-se mais faacutecil adicionar novos clusters em que existam conceitosrelacionados

bull faacutecil assimilaccedilatildeo - os seres humanos relacionam-se bem com ambientes graacuteficose tecircm uma tendecircncia a natildeo soacute aceitaacute-los melhor como tambeacutem a proceder a umautilizaccedilatildeo mais atractiva simples e de raacutepida aprendizagem com um miacutenimo deformaccedilatildeo

Como desvantagens temos

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as redes semacircnticas podem representar um espaccedilo que natildeoestaacute restringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

bull falta de estrutura e formalidade - natildeo existe uma semacircntica formal para a represen-taccedilatildeo simboacutelica das ligaccedilotildees o que deixa demasiado espaccedilo para a criatividade eeventualmente para o surgimento de problemas associados ao facto de poderemexistir muacuteltiplas formas de representaccedilatildeo

13

CAPIacuteTULO 2 ESTADO DA ARTE

2124 Mecanismos de inferecircncia

A base de conhecimento representa o caminho para encontrar uma determinada soluccedilatildeomas o motor de inferecircncia eacute a entidade que efectivamente percorre esse caminho Ummotor de inferecircncia pode utilizar diferentes estrateacutegias de raciociacutenio para a obtenccedilatildeode respostas As mais conhecidas satildeo a estrateacutegia de encadeamento directo e a deencadeamento inverso Contudo eacute possiacutevel combinar as duas no mesmo sistema naquiloque eacute vulgarmente conhecido como uma estrateacutegia de encadeamento misto

Encadeamento directo (Forward Chaining) ndash Um ser humano no seu dia a dia utilizaesta estrateacutegia para processamento de raciociacutenio Consoante assistimos a acontecimentoso ceacuterebro processa-os e analisa-os decidindo o que fazer de seguida De igual modo aestrateacutegia de raciociacutenio por encadeamento directo comeccedila por percorrer os factos baacutesicosque vatildeo originar o disparo de regras o que levaraacute agrave obtenccedilatildeo de conclusotildees intermeacutediasque por sua vez iratildeo originar o disparo de mais regras e assim sucessivamente Oprocesso continua ateacute que se obtenham conclusotildees finais se tal for possiacutevel ou natildeo hajamais lugar agrave possibilidade de disparo de novas regras

Devido agraves suas caracteriacutesticas esta estrateacutegia eacute mais apropriada para planeamentomonitorizaccedilatildeo controlo e interpretaccedilatildeo

Encadeamento inverso (Backward Chaining) ndash No encadeamento inverso o motorde inferecircncia tenta provar as conclusotildees finais que aparecem no lado direito das regras(RHS) Essas conclusotildees finais tambeacutem satildeo designadas como objectivos e eacute normaldizer-se que o motor de inferecircncia com encadeamento inverso eacute orientado aos objectivos(goal driven)

Para provarmos uma dada conclusatildeo teremos que provar as condiccedilotildees que aparecemno lado esquerdo da regra (LHS) que poderatildeo ser suportadas por conclusotildees intermeacutediasde outras regras ou por factos baacutesicos Sendo assim o mecanismo de encadeamentoinverso assume um caraacutecter essencialmente recursivo (para provar uma conclusatildeo vamoster que provar as condiccedilotildees)

Este tipo de estrateacutegia eacute mais apropriada para diagnoacutesticos jaacute que temos uma hipoacuteteseque necessita de ser provada de forma a chegar a uma conclusatildeo

Eacute importante salientar que a forma de representaccedilatildeo das regras eacute independente daestrateacutegia utilizada pelo motor de inferecircncia No entanto eacute possiacutevel melhorar a eficaacuteciado sistema se adaptarmos essa representaccedilatildeo consoante o encadeamento utilizado

14

21 SISTEMAS PERICIAIS

2125 Manutenccedilatildeo de uma base de conhecimento

A manutenccedilatildeo de uma base de conhecimento embora seja considerada vital para asobrevivecircncia do sistema pericial eacute um processo bastante complexo no sentido emque implica cuidados que nem sempre satildeo tidos ou considerados Eacute habitual existiremproblemas de validaccedilatildeo verificaccedilatildeo redundacircncia e contradiccedilotildees

De forma a garantir que a base de conhecimento se mantenha fiaacutevel e bem definidadevem ser desenvolvidos mecanismos que evitem a ocorrecircncia deste tipo de problemas

Redundacircncia - Considera-se aplicaccedilatildeo de redundacircncia a uma base de conhecimentoquando ao inserir uma regra estamos a adicionar conhecimento que jaacute estava contido nabase de conhecimento Podemos observar o seguinte exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X tem_barbatanas entatildeo X nada

regra3 se X nada E X tem_barbatanas entatildeo X eacute_peixe

Neste exemplo eacute possiacutevel verificar que esta base de conhecimento manteacutem-se idecircntica(o conhecimento eacute o mesmo) se removermos a regra3 considerada redundante Esta regranatildeo trouxe nenhum conhecimento novo ao sistema e pode ser descartada

Contradiccedilatildeo - Considera-se regra contraditoacuteria toda a regra que contradiz conheci-mento jaacute existente na base de conhecimento Por exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X nada entatildeo X natildeo_eacute_peixe

A regra2 contradiz claramente a regra1 pelo que eacute considerada contraditoacuteria Um dosgrandes problemas na anaacutelise de duas ou mais regras contraditoacuterias passa por determinarquais as que correspondem ao conhecimento correcto

Verificaccedilatildeo - acccedilatildeo desencadeada ainda na fase de implementaccedilatildeo inicial da base deconhecimento onde se pretende minimizar problemas essencialmente de redundacircncia e decontradiccedilatildeo que possam ser provocados pelo programador Toda a base de conhecimentoeacute verificada e confrontada com as notas apontamentos e indicaccedilotildees a que o programadorteve acesso e que serviram de alicerce para a construccedilatildeo da mesma

Validaccedilatildeo - a acccedilatildeo preventiva de erros iniciais levada a cabo logo apoacutes a implementa-ccedilatildeo da base de conhecimento precede a acccedilatildeo seguinte que consiste em validar a referidabase atraveacutes da intervenccedilatildeo de um perito o qual utiliza vaacuterios cenaacuterios de testes ondetenta obter as respostas ao mesmo tempo que vai consultando as explicaccedilotildees disponiacuteveisao longo do percurso

Apesar de ser habitual proceder a esta validaccedilatildeo com o perito que contribuiu como conhecimento eacute igualmente habitual e ateacute beneacutefico utilizar outros peritos da mesma

15

CAPIacuteTULO 2 ESTADO DA ARTE

aacuterea que para aleacutem de validarem a base de conhecimento em causa poderatildeo inclusiveconfrontar o seu proacuteprio conhecimento com o do perito original procedendo a correcccedilotildeesa eles proacuteprios ou agrave base per si Quanto maior a taxa de intervenccedilatildeo construtiva por partede peritos numa base de conhecimento melhor seraacute a qualidade associada agrave mesma

213 Raciociacutenio sobre incerteza

Raciociacutenio sobre incerteza eacute o nome dado ao processo de formulaccedilatildeo de conhecimentobaseado em fontes de informaccedilatildeo que detenham algum tipo de incerteza na sua especifi-caccedilatildeo

O conhecimento que detemos natildeo se limita a observaccedilotildees loacutegicas do tipo ldquose Obser-vaccedilatildeo_A entatildeo conclusatildeo_Brdquo Em vaacuterias situaccedilotildees necessitamos de lidar com informaccedilatildeoincompleta incorrecta ou ateacute mesmo ausente

Quando lidamos com conhecimento de peritos num determinado domiacutenio surge aindaoutro tipo de conhecimento este originado atraveacutes da observaccedilatildeo e experiecircncia

Existe entatildeo a necessidade de representaccedilatildeo de conhecimento e respectivo grau decerteza Para este efeito existem algumas teacutecnicas tais como loacutegica Fuzzy teorias deprobabilidades tais como Bayes ou Dempster-Shafer factores de certeza entre outros

Os seguintes autores podem ser consultados para referecircncia das teacutecnicas acima men-cionadas

bull Loacutegica Fuzzy - Drakopoulos (1994)

bull Bayes - Lucas (2001)

bull Dempster-Shafer - Wilson (2000) e Barnett (1991)

De seguida vai ser descrita a teacutecnica dos factores de certeza que foi a teacutecnica adoptadapara o desenvolvimento da soluccedilatildeo

2131 Factores de certeza

A teacutecnica dos Certainty Factors ou Factores de Certeza (CF) eacute um do meacutetodos detratamento de incertezas num sistema pericial A teacutecnica foi desenvolvida por Shortliffeand Buchanan para o projecto MYCIN um sistema pericial de diagnoacutestico e tratamentode meningite e tratamento do sangue Desde entatildeo que esta teacutecnica eacute o padratildeo seguido nodesenvolvimento de sistemas periciais baseados em regras Heckerman (1992)

16

21 SISTEMAS PERICIAIS

De um ponto de vista funcional caracteriza-se pela atribuiccedilatildeo de um nuacutemero o graude certeza a factos e regras Esse grau de certeza eacute uma medida relativa probabiliacutesticaque pode ser positiva ou negativa sendo normalmente usados valores no intervalo de -1 a1

A sua definiccedilatildeo original baseou-se na seguinte foacutermula FC [HE] = MC [HE]minusMD [HE]

O factor de certeza da hipoacutetese H dado uma evidecircncia E eacute dado pela diferenccedila entre

bull a medida de certeza de H dado Erarr MC [HE]

bull a medida de descrenccedila de H dado Erarr MD [HE]

O CF final de uma regra com uma premissa baseada num facto ou noutra regra eacute dadopela foacutermula 21

Quando as premissas estatildeo associadas atraveacutes do operador conjunccedilatildeo eacute aplicada afoacutermula 22

Quando existe mais do que uma regra a suportar uma determinada conclusatildeo o CFfinal eacute o resultado da foacutermula 23

CFf inal =CFpremissatimesCFregra 21

CFf inal = min[CFpremissa1 CFpremissan

]timesCFregra

22

X Y gt 0CF (X Y ) = X +Y (100˘X)100 23a

X ou Y lt 0CF (X Y ) = X +Y(1˘min(X Y)) 23b

X Y lt 0CF (X Y ) =minusCF (minusX minusY ) 23c

214 Vantagens e desvantagens

Apesar de tudo o que foi descrito um sistema pericial natildeo representa de forma alguma aferramenta mais apropriada para resolver todos os problemas com recurso a conhecimentoque de outra forma estaria reservado apenas a peritos das vaacuterias aacutereas Ao utilizarmosum sistema pericial estamos sujeitos a aspectos positivos e negativos cabendo a noacutes opapel de determinar se quando confrontados com um determinado problema a utilizaccedilatildeodeste tipo de ferramenta eacute a mais apropriada

17

CAPIacuteTULO 2 ESTADO DA ARTE

Para observar quais as principais vantagens de um sistema pericial podemos consultaras opiniotildees partilhadas por Giarratano et al (1998) CoAJRA (1997)

bull Elevada disponibilidaderArr um sistema pericial estaacute sempre disponiacutevel em termosde tempo e local pronto a funcionar sob qualquer condiccedilatildeo enquanto que umperito natildeo dispotildee dessa total disponibilidade

bull Baixo risco de utilizaccedilatildeorArr pode ser utilizado em ambientes considerados perigo-sos e hostis para um ser humano

bull Baixo custo rArr o custo de providenciar conhecimento por utilizador eacute bastantereduzido

bull DurabilidaderArr o conhecimento eacute permanente ao contraacuterio de um especialista queestaacute sujeito a ausecircncias

bull Conhecimento de vaacuterios especialistasrArr quando agregado o conhecimento reco-lhido a partir de vaacuterios especialistas poderaacute conduzir a resultados mais adequadose considerados melhores quando confrontados com o conhecimento individual e osresultados que daiacute advecircm

bull Capacidade de explicaccedilatildeorArr um sistema pericial consegue explicar detalhadamenteos passos que levaram agrave resposta dada enquanto que um ser humano pode natildeo tera disponibilidade nem a vontade de explicar todo o processo de raciociacutenio seguido

bull EmotividaderArr um sistema pericial natildeo estaacute sujeito a emoccedilotildees o seu funciona-mento e as respostas que providencia natildeo satildeo influenciadas pelo meio em que estaacuteinserido como por exemplo situaccedilotildees de stress ou situaccedilotildees de perigo iminente (aqueda de um aviatildeo ou uma central nuclear em risco)

bull Natildeo influenciaacutevelrArr acontecimentos mais actuais tecircm o mesmo peso na tomada dedecisatildeo evitando assim o fenoacutemeno de ldquoviciaccedilatildeordquo da base de conhecimento

No entanto um sistema pericial comporta tambeacutem algumas desvantagens das quaisse salientam

bull Emotividade rArr o facto de natildeo ser emotivo tambeacutem pode ser visto como umadesvantagem jaacute que natildeo recorrer a emoccedilotildees pode ser problemaacutetico por exemploem situaccedilotildees que necessitem de senso comum

18

21 SISTEMAS PERICIAIS

bull ManutenccedilatildeorArr se natildeo for devidamente mantido e actualizado um sistema pericialcorre o risco de ldquoenvelhecerrdquo no sentido em que deixa de ser um sistema fiaacutevel aque possamos recorrer e que corre o risco de abandono

bull CriatividaderArr um sistema pericial natildeo tem capacidade de reagir de forma diferentea problemas colocados seguindo sempre uma linha estaacutevel de raciociacutenio

bull Adaptaccedilatildeo sensorial rArr um sistema pericial natildeo consegue reagir a informaccedilatildeosensorial do meio que o rodeia entenda-se sensorial como sentidos humanos taiscomo o cheiro o tacto e a visatildeo

19

CAPIacuteTULO 2 ESTADO DA ARTE

22 GISPSA - GIS Problem Solver Advisor

O Gestatildeo Integrada de Seguros (GIS) eacute um Sistema de Informaccedilatildeo vocacionado para aactividade seguradora residente na plataforma AS400 da IBM Umas das caracteriacutesticasmais interessantes deste sistema acabou por ser tambeacutem um dos grandes proporciona-dores de eventuais problemas O GIS possui uma grande capacidade de configuraccedilatildeo oque sendo muito uacutetil para a adaptabilidade deste a cenaacuterios situaccedilotildees ou utilizadoresdiferentes acaba por originar vaacuterios problemas operacionais atraveacutes de inconsistecircnciasna proacutepria configuraccedilatildeo

Dada esta facilidade aparente de ocorrecircncia de problemas e a falta de sensibilidadee formaccedilatildeo teacutecnica dos utilizadores para os resolver a equipa de assistecircncia teacutecnicaafecta ao GIS estava muitas vezes com sobrecarga de pedidos por parte dos clientes quepretendem estes problemas solucionados Existiam periacuteodos de especial relevacircncia noque toca a estas sobrecargas tais como os fechos de ano das empresas

A partir daqui surge a ideia e a necessidade da criaccedilatildeo do GISPSA com o intuito dealiviar a sobrecarga da equipa de assistecircncia teacutecnica mas essencialmente com o grandeobjectivo de assegurar que um cliente natildeo fica sem soluccedilatildeo para os problemas com que sedepara apenas porque natildeo estatildeo teacutecnicos disponiacuteveis A grande vantagem de um sistemapericial foi e seraacute sempre essa poder substituir um perito sem ter que enfrentar questotildeescomo a disponibilidade custos ou tempo

Assim surge o GISPSA que mais natildeo eacute que um projecto criado por Pinto no acircmbito deum projecto acadeacutemico cujo objectivo inicial passava por criar um Sistema Pericial paradiagnoacutestico de problemas operacionais do GIS Este sistema teve por base o conhecimentoe o respectivo raciociacutenio extraiacutedos de um perito da aacuterea Administrativa-Financeira doGIS

No caso de problemas mais complexos em que o Sistema Pericial natildeo consiga determi-nar os factores de erro eacute remetida a resoluccedilatildeo para um teacutecnico da empresa comunicandoesse facto ao utilizador Pinto (1998)

221 Arquitectura

Sendo um sistema pericial o GISPSA teria que ser desenvolvido utilizando uma lingua-gem que tivesse uma seacuterie de caracteriacutesticas A existecircncia de uma base de conhecimento apossibilidade de consultar factos adicionar novos factos ou ainda de remover factos nessamesma base e aspectos como o backtracking na realizaccedilatildeo de raciociacutenio ao inferir sobreesses mesmos factos natildeo permitia um leque muito alargado na escolha da linguagem de

20

22 GISPSA - GIS PROBLEM SOLVER ADVISOR

desenvolvimento

Desta forma ficou decidido que o GISPSA seria desenvolvido em prolog (maisespecificamente winprolog) Devido agrave simplicidade de utilizaccedilatildeo e extensa documentaccedilatildeode apoio o LPAProlog foi usado como motor de inferecircncia e o LPAFlex foi usado paraestabelecer a declaraccedilatildeo de regras

Como jaacute foi referido anteriormente o GISPSA eacute uma aplicaccedilatildeo standalone desenhadae desenvolvida para uma execuccedilatildeo local em mono-posto e sujeita agrave obtenccedilatildeo de umalicenccedila de utilizaccedilatildeo para garantir o seu funcionamento

Figura 2 GISPSA menu inicial

A aplicaccedilatildeo dispotildee de uma interface graacutefica tambeacutem criada em winprolog que utilizarecursos especiacuteficos do sistema operativo Windows

A base de conhecimento eacute armazenada num uacutenico ficheiro ksl e o seu carregamentonatildeo eacute parcial O mesmo seraacute dizer que toda a base de conhecimento eacute passada paramemoacuteria de trabalho assim que o programa arranca

222 Funcionamento

Em termos funcionais a aplicaccedilatildeo permite mudar o tipo de linguagem a ser empreguenas conversaccedilotildees estabelecidas com o utilizador consoante esta esteja a ser utilizadapor um teacutecnico (habitualmente os teacutecnicos com formaccedilatildeo na aacuterea) ou um utilizadornormal (o cliente que adquiriu a aplicaccedilatildeo e cuja formaccedilatildeo eacute mais reduzida ou ateacute mesmoinexistente)

Apoacutes a definiccedilatildeo da linguagem de interacccedilatildeo a utilizar o sistema inicia entatildeo o pedidode assistecircncia apresentando a mensagem ldquoSeleccione a aplicaccedilatildeordquo (figura 3) que permitenuma primeira instacircncia direccionar o raciociacutenio face agrave resposta do utilizador

21

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 3 GISPSA interacccedilatildeo inicial

Figura 4 GISPSA exemplo de interacccedilatildeo pergunta-resposta

223 Limitaccedilotildees

Apesar de ser inovadora na aacuterea esta aplicaccedilatildeo foi no iniacutecio bastante utilizada por algunsclientes tendo sofrido algum abandono de forma gradual ao longo do tempo de vida quejaacute leva Apoacutes uma anaacutelise chegou-se agrave conclusatildeo que as principais causas na origemdesse abandono seriam as seguintes

bull Adicionar regras implicava o conhecimento da sintaxe das mesmas Verificou-se que esta tarefa era demasiado complexa para um utilizador sem formaccedilatildeo esensibilidade suficientes na aacuterea da programaccedilatildeo

bull O acto de proceder agrave ediccedilatildeo de regras existentes na base de conhecimento traduz-senuma tarefa que para aleacutem de morosa eacute essencialmente de risco no sentido em

22

23 WEB EXPERT SYSTEMS

que natildeo existe uma verdadeira noccedilatildeo do impacto que estas alteraccedilotildees possam vir ater no comportamento global do sistema

bull O sistema apenas pode ser instalado em mono-posto o que obriga agrave obtenccedilatildeo deuma licenccedila por cada instalaccedilatildeo que se pretende realizar

bull O sistema natildeo permite a integraccedilatildeo com ambientes baseados em redes e sistemasdistribuiacutedos

bull Natildeo existe nenhum mecanismo de verificaccedilatildeo da base de conhecimento

bull O aspecto visual da aplicaccedilatildeo estaacute ultrapassado e eacute pouco apelativo

23 Web Expert Systems

Actualmente uma grande maioria dos sistemas periciais desenvolvidos satildeo desenhadospara um funcionamento em ambientes web As razotildees apontadas para esta orientaccedilatildeo satildeovaacuterias destacando-se a evoluccedilatildeo da proacutepria tecnologia as velocidades de transmissatildeode dados em redes a possibilidade de acesso em muacuteltiplas localizaccedilotildees geograacuteficas(desde que assegurado o necessaacuterio acesso agrave rede) e ainda o desenvolvimento de novasferramentas que possibilitam maior facilidade na criaccedilatildeo destes novos sistemas

Algumas das ferramentas que permitem actualmente o desenvolvimento de um sistemapericial baseado em ambientes web satildeo as seguintes

1 WebFlex - LPA Flex

2 EXSYS CORVID

3 WebCLIPS

4 JCLIPS

5 JESS

6 Acquire

WebFlex - Esta ferramenta permite a publicaccedilatildeo de um sistema pericial desenvolvidoem ldquoLPA Prologrdquo Os sistemas periciais desenvolvidos a partir deste meacutetodo necessitamainda de outra ferramenta para garantir o funcionamento o ldquoLPA ProWeb Serverrdquo Eacute

23

CAPIacuteTULO 2 ESTADO DA ARTE

possiacutevel adaptar um sistema pericial jaacute desenvolvido para ser disponibilizado numarede sem ser necessaacuterio efectuar qualquer tipo de alteraccedilatildeo No entanto se for pretendidoalgum tipo de configuraccedilatildeo extra por exemplo incluir imagens ou alterar a aparecircncia dealguns controlos eacute uma alteraccedilatildeo extremamente morosa e complexa

WebFlex allows you to deliver your flex-based expert systems onto Intranets

and Extranets easily Just create your rules and frames and questions as per normal

in flex and WebFlex will construct a web server-based solution using ProWeb where

all the questions are sent automatically configured for a standard HTMLJavascript

browserLogic Programming Associaties Ltd (2010)

Eacute possiacutevel alterar o HTML de saiacuteda que o webflex utiliza por defeito no entanto estaconfiguraccedilatildeo natildeo eacute tatildeo simples quanto poderaacute parecer agrave partida e obriga agrave alteraccedilatildeo dosistema pericial

Esta ferramenta funciona apenas em sistemas windows e eacute necessaacuteria a obtenccedilatildeo deuma licenccedila de utilizaccedilatildeo (natildeo eacute gratuita)

EXSYS CORVID - Eacute uma ferramenta composta por dois moacutedulos Exsys CORVID

Knowledge Automation Expert System Software e Exsys Servlet Runtime EXSYS (2010)

Natildeo foi possiacutevel encontrar nenhum sistema desenvolvido por esta ferramenta pormotivos de confidencialidade eou vantagem competitiva Estatildeo no entanto disponiacuteveisaplicaccedilotildees de demonstraccedilatildeo na paacutegina oficial da empresa Verificou-se que nenhumadas aplicaccedilotildees de demonstraccedilatildeo disponiacuteveis possui capacidades de dar explicaccedilotildees oujustificaccedilotildees

De acordo com EXSYS as aplicaccedilotildees construiacutedas com esta ferramenta podem seracedidas por Servlet Applet ou standalone e esta ferramenta necessita da obtenccedilatildeo deuma licenccedila de desenvolvimento

WebCLIPS - Segundo Michael Giordano o WebCLIPS eacute uma implementaccedilatildeo CGI

que envolve o C Language Integrated Production System (CLIPS) como aplicaccedilatildeo internaO CLIPS eacute uma ferramenta de desenvolvimento de sistemas periciais

Esta ferramenta foi desenvolvida em linguagem C o que significa que em termos deportabilidade desde que se possua o coacutedigo fonte este poderaacute ser compilado em qualquersistema operativo jaacute que o compilador para a linguagem estaacute disponiacutevel para todas as

24

23 WEB EXPERT SYSTEMS

versotildees existentes no mercado No entanto o WebCLIPS apenas foi desenvolvido parafuncionamento em sistemas windows e linux

O CLIPS eacute uma ferramenta livre que permite o desenvolvimento de sistemas baseadosem regras Pode ser integrado com algumas linguagens das quais se destacam C Java

(JCLIPS) FORTRAN entre outras Esta eacute provavelmente a ferramenta mais utilizada nodesenvolvimento de sistemas periciais devido agrave sua rapidez eficiecircncia e pelo facto de sergratuita

JCLIPS - Eacute uma biblioteca que permite integraccedilatildeo com Java e permite igualmentea utilizaccedilatildeo do motor do CLIPS a partir de uma classe Java Esta interligaccedilatildeo eacute feitaatraveacutes da importaccedilatildeo do ficheiro (dll ou so consoante o sistema operativo) e permite aexecuccedilatildeo de uma instacircncia ou seja permite ter apenas uma sessatildeo de um sistema pericialde cada vez Maarten Menken (2010)

JESS - O JESS eacute uma extensatildeo do CLIPS em JAVA Eacute basicamente uma bibliotecacujo objectivo natildeo passa por gerar uma aplicaccedilatildeo web mas sim servir de base para quepossa ser integrada ou utilizada para esse efeito Ernest Friedman-Hill (2010)

Utiliza uma linguagem especiacutefica designada JESS language equivalente ao CLIPSmas com novos componentes que a tornam uma linguagem complexa e de difiacutecil utilizaccedilatildeopor algueacutem sem conhecimentos de inteligecircncia artificial

Acquire - Eacute um produto bastante avanccedilado do ponto de vista tecnoloacutegico face aosconcorrentes no sentido em que permite uma separaccedilatildeo evidente entre a camada aplicaci-onal e a camada de apresentaccedilatildeo Promove uma separaccedilatildeo cliente-servidor e disponibilizaum Software Development Kit (SDK) que permite a integraccedilatildeo com outras aplicaccedilotildees

De acordo com Acquired Intelligence o produto estaacute sujeito a uma licenccedila de utilizaccedilatildeoe eacute disponibilizado ainda um serviccedilo online de alojamento de sistemas periciais omyAcquire disponiacutevel mediante uma subscriccedilatildeo semestral

231 Casos de estudo

Os sistemas periciais mais especificamente aqueles que satildeo baseados em sistemas webtecircm conhecido nos uacuteltimos anos uma evoluccedilatildeo gradual e consistente devido em grandeparte agrave simplicidade e disponibilidade que possibilitam Podem ser acedidos a partir dequalquer local no mundo 24 horas por dia e sem qualquer tipo de limitaccedilatildeo bastando

25

CAPIacuteTULO 2 ESTADO DA ARTE

apenas que se garanta o acesso agrave rede onde o sistema pericial estaacute colocado

As interfaces satildeo mais apelativas e chegam a fazer uso de imagens e outros meiosgraacuteficos ou de multimeacutedia cujo objectivo natildeo eacute apenas o de tornar os sistemas maisinteressantes mas tambeacutem mais eficazes jaacute que auxiliam de forma mais simples eesclarecida Os controlos utilizados as caixas de interacccedilatildeo e ateacute mesmo as explicaccedilotildees ejustificaccedilotildees (nos sistemas que o permitam) ajudam a ter uma ideia cada vez mais clarasobre o funcionamento dos sistemas obtendo-se assim melhores resultados

Alguns dos casos de estudo de sistemas periciais baseados em sistemas web existentesactualmente tecircm como um dos seus maiores objectivos a disponibilidade global dosmesmos (satildeo disponibilizados normalmente atraveacutes da internet) e os mais conhecidossatildeo

bull Landfill Operation Management Advisor (LOMA)

bull Medical Diagnosis Support System (MDSS)

bull Whale watcher

2311 LOMA - Landfill Operation Management Advisor

O LOMA eacute um sistema pericial online que analisa problemas operacionais falhas eacidentes em aterros comuns Aleacutem disso o LOMA fornece conselhos sobre como umgestor pode evitar esses problemas e em caso de ocorrecircncia sobre como diminuir oimpacto das suas consequecircncias Encontra-se disponiacutevel em httplomacivil

duthgr e eacute de utilizaccedilatildeo puacuteblica

O sistema pericial foi desenvolvido por Dokas recorrendo agraves ferramentas WebFlex eLPA ProWeb Server

A arquitectura da aplicaccedilatildeo web pode ser visualizada na figura 5 e consiste nosseguintes moacutedulos Dokas (2005)

bull Sistema pericial LOMA

bull Moacutedulo de aconselhamento

bull Moacutedulo operacional de problemas-causa

bull Eventos inicias

bull Problemas operacionais

26

23 WEB EXPERT SYSTEMS

bull Moacutedulo de explicaccedilotildees

bull Moacutedulo de submissatildeo de conhecimento e informaccedilatildeo

Figura 5 Arquitectura do LOMA

O moacutedulo mais relevante para o acircmbito desta dissertaccedilatildeo eacute o ldquoSistema pericial LOMArdquoe eacute tambeacutem o moacutedulo mais importante para a aplicaccedilatildeo LOMA

Eacute composto por vinte e quatro sub-moacutedulos cada um deles responsaacutevel por analisarum tipo especiacutefico de problema e ainda por um sub-moacutedulo extra que eacute responsaacutevel pelocontrolo do sistema

O sub-moacutedulo extra questiona o utilizador que descreve o problema (ver 6 e 7) ecom base na sua descriccedilatildeo apresenta uma lista de possiacuteveis problemas (ver 8) Quandoo utilizador selecciona um problema da lista de resultados eacute activado o respectivo sub-moacutedulo que por sua vez iraacute fornecer informaccedilatildeo de como prevenir o problema ou nocaso de este jaacute ter acontecido como minimizar as suas consequecircncias (ver 9)

27

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 6 Paacutegina inicial do sistema pericial LOMA

Figura 7 Sub-moacutedulo extra

28

23 WEB EXPERT SYSTEMS

Figura 8 Sugestatildeo de problemas do sub-moacutedulo extra

Figura 9 Sub-moacutedulo especializado

29

CAPIacuteTULO 2 ESTADO DA ARTE

2312 MDSS - Medical Diagnosis Support System

O MDSS eacute um sistema pericial utilizado na aacuterea da medicina e foi desenvolvido paraajudar no diagnoacutestico e tratamento da diabetes A diabetes pode afectar vaacuterias partes docorpo provocando diversos sintomas e complicaccedilotildees Quando detectada atempadamenteeacute mais facilmente controlaacutevel e menos perigosa Por todos estes motivos foi criado umsistema pericial online o MDSS que permite inferir sobre uma seacuterie de sintomas parachegar a um diagnoacutestico

Na opiniatildeo de Filho uma das vantagens deste sistema pericial eacute que possibilita quemeacutedicos em ambientes rurais ou perigosos e de difiacutecil acesso com recursos limitadospossam aceder ao sistema pericial de forma a terem uma ajuda no diagnoacutestico destadoenccedila O que comeccedilou como um sistema pericial vocacionado e orientado para adiabetes rapidamente cresceu e tornou-se algo mais do que isso sendo hoje utilizadocomo sistema de diagnoacutestico para vaacuterias doenccedilas

No que diz respeito agrave sua arquitectura o MDSS foi desenvolvido em LPA Prolog

recorrendo aos moacutedulos ProWeb e ProData e utilizando Open Data Base Connectivity

(ODBC) para acesso agrave base de dados Utiliza loacutegica fuzzy para raciociacutenio sobre incertezaspara lidar com conhecimento parcial

O sistema eacute composto por trecircs moacutedulos No primeiro moacutedulo eacute possiacutevel um es-pecialista definir sintomas exames cliacutenicos exames de laboratoacuterio e exames relativosa uma ou mais doenccedilas Eacute ainda possiacutevel a atribuiccedilatildeo de valores (pesos estatiacutesticos)ou de resultados que definem uma doenccedila Isso permite por exemplo que a pressatildeoarterial possa estar associada ao diagnoacutestico de pressatildeo alta diabetes gravidez de riscoou insuficiecircncia renal entre outros Informaccedilotildees de consultas anteriores e exames satildeoautomaticamente ligadas e analisadas sob fundamentaccedilatildeo loacutegico temporal

No segundo moacutedulo o sistema permite consultas atraveacutes do qual os dados relevantespara o paciente satildeo registados e relacionados com outros exames correlacionados Durantea fase de diagnoacutestico o sistema pode sugerir outros testes ou procedimentos para entatildeoinferir se haacute outros riscos e doenccedilas a serem investigados

No terceiro moacutedulo eacute efectuado o diagnoacutestico O sistema iraacute localizar automatica-mente os diagnoacutesticos jaacute registados noutras consultas incluindo aquelas feitas por outrosmeacutedicos Aleacutem disso o sistema pesquisa niacuteveis de doenccedilas de acordo com os resultadosdos exames Pode tambeacutem sugerir uma investigaccedilatildeo mais aprofundada sempre que osdados natildeo sejam suficientes para garantir um diagnoacutestico preciso

30

23 WEB EXPERT SYSTEMS

2313 Whale watcher

O sistema pericial Whale watcher eacute um sistema de demonstraccedilatildeo da plataforma AcquireEste e outros sistemas periciais similares estatildeo disponiacuteveis na paacutegina da Acquire (httpwwwaiinccademos)

Figura 10 Paacutegina principal do sistema pericial Whale Watcher

Figura 11 Paacutegina final do sistema pericial Whale Watcher

Atraveacutes das demonstraccedilotildees facultadas pela Acquire natildeo eacute possiacutevel concluir se existealgum tipo de sistema de explicaccedilotildees No entanto no final de cada sessatildeo do sistemapericial eacute possiacutevel consultar um resumo (ver 11) que funciona como uma explicaccedilatildeomuito baacutesica da inferecircncia realizada pelo sistema pericial jaacute que se limita apenas amostrar os factos que foram respondidos durante a sessatildeo

31

3Ferramentas utilizadas

Durante o desenvolvimento deste trabalho foi necessaacuterio decidir sobre quais as ferramen-tas a utilizar para a criaccedilatildeo do novo sistema pericial Atendendo a algumas caracteriacutesticasproacuteprias e objectivos traccedilados era necessaacuterio utilizar alguma especificidade na escolhapara garantir a exclusividade do resultado Desenvolvimento web capacidade de pro-ceder a inferecircncia sobre conhecimento representado atraveacutes de regras simplicidade deutilizaccedilatildeo actualidade da tecnologia entre outras caracteriacutesticas influenciaram significa-tivamente nesta escolha

Entre os vaacuterios ambientes de desenvolvimento disponiacuteveis a opccedilatildeo recaiu sobre umque para aleacutem de simples e eficiente era utilizado regularmente em situaccedilatildeo profissi-onal pelo criador deste projecto pelo que aqui foi relativamente simples chegar a umaconclusatildeo

Indo de encontro agraves razotildees que levaram agrave escolha da linguagem do motor de inferecircnciautilizada no projecto que deu origem a este trabalho tambeacutem aqui foi escolhida umalinguagem que possibilita o backtracking de forma eficaz e simplificada caracteriacutesticaessencial para o bom funcionamento do motor de inferecircncia e que contribui largamentepara o sucesso do sistema pericial

31 Ambiente de desenvolvimento

O ambiente de desenvolvimento e respectiva linguagem de programaccedilatildeo utilizados para acriaccedilatildeo do interface do sistema pericial foram seleccionados levando em conta algunsrequisitos e factores considerados necessaacuterios e ateacute mesmo essenciais para a soluccedilatildeo finalA listagem dessas caracteriacutesticas eacute a seguinte

bull Baixo custo de disponibilizaccedilatildeo

33

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

bull Independecircncia do sistema operativo

bull Simples escalabilidade

bull Visual apelativo

Com base nesta lista de caracteriacutesticas consideradas desejaacuteveis ou ateacute mesmo essen-ciais para a soluccedilatildeo final e considerando tambeacutem a jaacute longa experiecircncia de utilizaccedilatildeonesta plataforma foi escolhida a linguagem Java J2EE utilizando a framework Icefaces eo portal Glassfish Podemos considerar para esta escolha uma seacuterie de paracircmetros paraaleacutem dos jaacute evidenciados

bull O J2EE eacute uma linguagem independente do sistema operativo

bull O J2EE caracteriza-se pela sua modularidade

bull Glassfish eacute um portal open source com suporte para J2EE

bull Icefaces eacute uma framework JavaServer Faces (JSF) compatiacutevel com o Glassfish

bull Icefaces permite a criaccedilatildeo de interfaces graacuteficos de uma forma simples

bull Existecircncia de boa documentaccedilatildeo relativamente a todos os produtos

Para aleacutem disto podemos ainda considerar e referir outros produtos e componentesque natildeo sendo menos importantes tambeacutem foram utilizados durante o desenvolvimentodeste trabalho A lista completa de ferramentas eacute a seguinte

bull Java J2EE 60

bull Eclipse Galileo (com plugins para Glassfish e svn) - Integrated Development

Environment (IDE) para Java

bull Icefaces 182

bull GlassFish - portal

bull Visual SVN Server e Tortoise - controlo de versotildees

bull MikTeX - latex

bull TexnicCenter - IDE para latex

34

32 MOTOR DE INFEREcircNCIA

32 Motor de inferecircncia

Em qualquer sistema pericial o motor de inferecircncia eacute o cerne do mesmo O seu desenvol-vimento obriga habitualmente a um esforccedilo e concentraccedilatildeo maiores porque aqui residea forma como o sistema iraacute percorrer as vaacuterias etapas necessaacuterias para alcanccedilar umasoluccedilatildeo

Tambeacutem neste trabalho o motor de inferecircncia eacute um ponto essencial e a sua implemen-taccedilatildeo teve um papel destacado no processo de anaacutelise realizado Actualmente existemalguns produtos que podem ser utilizados integral ou parcialmente como motor deinferecircncia de um sistema pericial esses produtos podem ser frameworks ou shells ouainda Business Rule Management System (BRMS)

Os termos framework e shell satildeo muitas vezes utilizados como sinoacutenimo umaframework eacute uma abstracccedilatildeo que permite agregar formas de resoluccedilatildeo de problemascomuns uma shell eacute similar no sentido em que disponibiliza uma camada de abstracccedilatildeouma ldquoconchardquo que encapsula os serviccedilos

No sentido de tentar reutilizar um produto jaacute existente foi elaborado um estudo acercados actuais produtos e das suas caracteriacutesticas A abordagem seguida para esse estudo foiuma abordagem por fases em que gradualmente se foi estreitando o conjunto de soluccedilotildeesaceitaacuteveis mediante a utilizaccedilatildeo de alguns criteacuterios

Foram consideradas cinco fases

bull Fase I - Recolha de candidatos

bull Fase II - Requisitos base

bull Fase III - Viabilidade econoacutemica

bull Fase IV - Viabilidade teacutecnica

bull Fase V - Prova de conceito

321 Fase I - Recolha de candidatos

A fase I teve como objectivo recolher alguns dos actuais produtos que possuam caracteriacutes-ticas desejadas para um sistema deste geacutenero Natildeo foram considerados alguns produtosque satisfaziam os requisitos mas que natildeo permitem uma integraccedilatildeo com Java Foramidentificados os seguintes produtos como potenciais integradores do projecto

35

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

Produto BRMS FrameworkDrools X XHammurapi Rules XILog XJCLIPS XJESS XJEOPS XJRuleEngine XOpenL Tablets XOpenRules XProva language XYprolog XZilonis X

Tabela 1 Listagem de produtos da Fase I

Drools - ou JBoss Rules eacute um produto open source da RedHat (2010) Define umalinguagem especiacutefica para as regras Eacute desenvolvido em Java e utiliza um mecanismo deencadeamento directo baseado em regras natildeo implementa justificaccedilotildees

Hammurapi Rules - eacute um produto desenvolvido em Java por Hammurapi GroupEste motor de inferecircncia utiliza a sintaxe da linguagem Java para definiccedilatildeo de regras Eacutepossiacutevel definir grupos de regras em XML e estaacute disponiacutevel um plug-in para Eclipse quepermite a ediccedilatildeo destes grupos Suporta encadeamento directo e indirecto

ILOG - WebSphere ILOG Business Rule Management Systems eacute como o nome indicaum BRMS eacute um produto da IBM (2010) que requer licenciamento adequado Eacute necessaacuteriaa instalaccedilatildeo e configuraccedilatildeo de alguns componentes de forma a que o produto possa serutilizado por exemplo Rule Team Server Rule Execution Server Http server entreoutros

JCLIPS - eacute um produto open source mantido por uma comunidade e permite aintegraccedilatildeo entre Java e CLIPS O CLIPS ldquoC Language Integrated Production Systemrdquo eacuteum sistema pericial desenvolvido em linguagem C Maarten Menken (2010)

JESS - eacute um produto comercial da Sandia National Laboratories desenvolvidoem Java Eacute necessaacuterio adquirir licenccedilas para efectivar a utilizaccedilatildeo do mesmo ErnestFriedman-Hill (2010)

JEOPS - Java Embedded Object Production System (JEOPS) eacute uma framework open

source desenvolvida num acircmbito acadeacutemico por Carlos Figueira Filho

36

32 MOTOR DE INFEREcircNCIA

JRuleEngine - eacute um produto open source desenvolvido em Java e mantido porMcarniel (2010) As regras satildeo compiladas para classes Java

OpenL Tablets - eacute um BRMS open source cuja principal vantagem eacute a integraccedilatildeocom a folhas de caacutelculo Excel Permite a utilizaccedilatildeo de tabelas de decisatildeo no formatoExcel OpenL (2010)

OpenRules - eacute um produto da OpenRules Inc sujeito a licenccedila de utilizaccedilatildeo Eacutetotalmente orientado para a folha de caacutelculo Excel da Microsoft

Prova language - eacute um produto open source desenvolvido em Java por KozlenkovAlex and Paschke Disponibiliza uma linguagem muito semelhante ao prolog Eacute umproduto bastante direccionado para a comunicaccedilatildeo entre agentes expondo inclusiveacute umsistema multi-agente

Yprolog - eacute um produto open source desenvolvido em Java por Boris van SchootenEacute uma reacuteplica do prolog desenvolvida totalmente em Java Foi evoluindo ao longo dotempo a partir de produtos como o WProlog e o XProlog

Zilonis - eacute um produto desenvolvido em Java por Elie Levy O formato das regras eacutesemelhante ao CLIPS

322 Fase II - Requisitos base

A fase II teve como objectivo filtrar a lista de candidatos no sentido de excluir produtosque natildeo se enquadrem directamente com os requisitos do sistema a desenvolver Assimsendo foram excluiacutedos alguns dos candidatos jaacute indicados e os principais motivos daexclusatildeo satildeo

bull Natildeo permitirem a integraccedilatildeo com um portal

bull Formato das regras eacute fechado natildeo possibilitando possiacuteveis e futuras evoluccedilotildees

bull Natildeo disponibilizaccedilatildeo de acesso aos serviccedilos internos mais concretamente natildeofornecem uma framework de controlo Desta forma natildeo eacute possiacutevel reutilizar partesdo motor de inferecircncia ou do sistema de gestatildeo de regras sem que este seja feitoatraveacutes do proacuteprio produto

Candidatos excluiacutedos pelas razotildees atraacutes expostas

37

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProdutoILogOpenRulesOpenL Tablets

Tabela 2 Listagem de produtos excluiacutedos na Fase II

323 Fase III - Viabilidade econoacutemica

Sendo um paracircmetro com importacircncia relativa dada a possiacutevel aplicaccedilatildeo comercial deum produto baseado neste trabalho natildeo deixa de ser importante para o estudo realizadoDesta forma a fase III teve como objectivo filtrar a lista de resultados no sentido de excluirprodutos que natildeo sejam economicamente viaacuteveis quer por motivos de licenciamentocomercial quer por motivos de licenccedilas de utilizaccedilatildeo

Foram entatildeo considerados os produtos constantes da tabela 3 como natildeo viaacuteveis nosentido em que existem produtos open source similares para o efeito pretendido

ProdutoDroolsJESS

Tabela 3 Listagem de produtos excluiacutedos na Fase III

324 Fase IV - Viabilidade teacutecnica

Esta fase teve por objectivo filtrar a lista de resultados de forma a que os produtos natildeoviaacuteveis do ponto de vista teacutecnico natildeo sejam considerados para a escolha final

Os produtos que natildeo foram considerados viaacuteveis por questotildees teacutecnicas satildeo

38

32 MOTOR DE INFEREcircNCIA

Produto RazatildeoJEOPS Documentaccedilatildeo disponiacutevel bastante vaga projecto desconti-

nuado e natildeo estaacutevelJRuleEngine As regras satildeo compiladas para Java natildeo permite escalabili-

dade sem compilar o projectoZilonis Natildeo estaacute preparado para ser utilizado como framework ape-

nas permite uma aplicaccedilatildeo stand-alone

Hammurapi Rules As regras satildeo compiladas para Java natildeo permite escalabili-dade sem compilar o projecto

Tabela 4 Listagem de produtos excluiacutedos na Fase IV

325 Fase V - Prova de conceito

Nesta uacuteltima fase restaram trecircs produtos JClips Prova e YProlog Apoacutes a realizaccedilatildeode uma prova de conceito com estes produtos foram encontradas algumas vantagens edesvantagens Esta anaacutelise pode ser consultada nas tabelas 5 6 e 7

JClipsVantagens Desvantagens

bull Linguagem CLIPS bull Apenas permite 1 execuccedilatildeo deforma a permitir vaacuterias utilizaccedilotildeesdo motor de inferecircncia eacute necessaacuterioimplementar loacutegica especiacutefica

bull Ausecircncia de documentaccedilatildeo

Tabela 5 JClips - Vantagens e desvantagens

39

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProvaVantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza exemplos de uti-lizaccedilatildeo

bull Uacuteltima actualizaccedilatildeo em 10 deJunho de 2010

bull Instaacutevel

bull Bastante ocupaccedilatildeo de recursos(CPU e memoacuteria)

bull Disponibilizaccedilatildeo de pouca docu-mentaccedilatildeo

bull Ao invocar um predicado natildeo ins-tancia apenas as variaacuteveis na pri-meira vez mas devolve uma lista detodos os resultados possiacuteveis simi-lar ao predicado findall do LPA Pro-log

Tabela 6 Prova - Vantagens e desvantagens

YProlog

Vantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza documentaccedilatildeo eexemplos de utilizaccedilatildeo

bull Operaccedilotildees baacutesicas do Prologtecircm o mesmo comportamento

bull Uacuteltima actualizaccedilatildeo em 21 de Abrilde 2006

Tabela 7 YProlog - Vantagens e desvantagens

326 Conclusatildeo e fundamentaccedilatildeo da escolha

Tratando-se do nuacutecleo do sistema pericial e sabendo que natildeo existe actualmente ummotor de inferecircncia que corresponda totalmente aos requisitos necessaacuterios foi decidido

40

32 MOTOR DE INFEREcircNCIA

desenvolver um motor de inferecircncia de raiz recorrendo a um produto que permitisse umdesenvolvimento raacutepido e com uma curva de aprendizagem pouco acentuada Para tale depois do estudo realizado perante as vaacuterias hipoacuteteses disponiacuteveis foi decidido optarpelo YProlog

Na uacuteltima fase do estudo apresentado entre os candidatos disponiacuteveis este aparececomo o mais viaacutevel quer pelos aspectos de adaptabilidade funcionamento e facilidadede utilizaccedilatildeo quer ainda pelo nuacutemero reduzido de desvantagens encontradas face aosrestantes

41

4Wexsys

Este trabalho baseia-se na criaccedilatildeo de um sistema pericial baseado no GISPSA e oobjectivo principal passa pela integraccedilatildeo do novo sistema num ambiente de acesso globalou mais especificamente num portal web Para atingir tal meta foi descrito nos capiacutetulosanteriores quais as ferramentas a utilizar sendo que agora vamos compreender como eacuteque a soluccedilatildeo em si foi desenvolvida

O sistema que nasceu a partir desta implementaccedilatildeo foi baptizado com o nome wexsys- ldquoWeb Expert Systemrdquo Partindo da base do GISPSA o wexsys possui um motor deinferecircncia totalmente novo criado especificamente no acircmbito deste trabalho e ainda umabase de conhecimento Foi decidido adoptar o princiacutepio de utilizaccedilatildeo de regras para arepresentaccedilatildeo da base de conhecimento

De referir ainda que o raciociacutenio utilizado no motor de inferecircncia segue uma filosofiado tipo backward chaining princiacutepio jaacute descrito nos capiacutetulos anteriores

Detentor de uma interface considerada actual para os paracircmetros utilizados nos diasque correm este novo sistema pericial foi criado atraveacutes da utilizaccedilatildeo de J2EE e Icefaces

que lhe conferem um aspecto renovado e extremamente apelativo aos utilizadores Satildeoutilizadas teacutecnicas tais como Ajax que providenciam uma dinacircmica de funcionamentomuito interessante do ponto de vista da utilizaccedilatildeo

41 Arquitectura global

A soluccedilatildeo foi projectada de acordo com a arquitectura J2EE ou seja utilizando uma sepa-raccedilatildeo em moacutedulos ou componentes Foram criados dois moacutedulos principais pWexsysEAR

e WexsysEAR estes moacutedulos satildeo a separaccedilatildeo da aplicaccedilatildeo em duas grandes camadas acamada web e a camada de negoacutecio

Esta separaccedilatildeo permite a instalaccedilatildeo da aplicaccedilatildeo num uacutenico servidor ou uma instala-

43

CAPIacuteTULO 4 WEXSYS

ccedilatildeo distribuiacuteda por vaacuterios servidores possibilitando tambeacutem a utilizaccedilatildeo de clusters Estaseparaccedilatildeo torna-se bastante uacutetil se pretendermos expandir a aplicaccedilatildeo para uma utilizaccedilatildeomais intensa ao niacutevel dos acessos A possibilidade de instalaccedilatildeo em muacuteltiplas maacutequinaspermite a obtenccedilatildeo de melhores resultados quando confrontada com a utilizaccedilatildeo de umambiente com apenas um uacutenico servidor

Figura 12 Arquitectura da soluccedilatildeo

411 Moacutedulo pWexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente visual da soluccedilatildeo tambeacutem conhecida porPresentation Layer Este moacutedulo eacute composto pelos componentes descritos na figura 13

Figura 13 Arquitectura do moacutedulo visual

bull pWexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

44

41 ARQUITECTURA GLOBAL

bull wWexsysGUI - componente principal que conteacutem as JSPrsquos servlet e managed

beans

bull jWexsysWebClient - classes utilizadas na camada visual

bull TGGraphLayout - componente externo que disponibiliza um controlo que permitea definiccedilatildeo de um grafo este componente vai ser descrito na secccedilatildeo 4133

bull jWexsysLog - permite o registo da ocorrecircncia de erros

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

412 Moacutedulo WexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente de negoacutecio da aplicaccedilatildeo tambeacutem conhecidapor Business Layer eacute o centro de controlo de toda a soluccedilatildeo Este moacutedulo eacute compostopor alguns componentes como podemos ver na figura 14

Figura 14 Arquitectura do moacutedulo de negoacutecio

bull WexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

bull eWexsys - componente principal responsaacutevel pela criaccedilatildeo dos serviccedilos

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

bull jWexsysUtils - classes utilitaacuterias internas

45

CAPIacuteTULO 4 WEXSYS

bull jWexsysLog - componente auxiliar para permitir o tratamento de erros

bull jWexsysEngine - responsaacutevel pela implementaccedilatildeo do motor de inferecircncia

bull YProlog - permite a interpretaccedilatildeo de coacutedigo prolog Este componente vai serdescrito na secccedilatildeo 4133

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos

Como jaacute foi referido o wexsys foi desenvolvido respeitando a arquitectura J2EE como talos componentes que integram a aplicaccedilatildeo foram tambeacutem criados seguindo esse conceitoTodos os componentes foram estruturados de forma a poderem ser reutilizados com omiacutenimo de dependecircncias e toda a aplicaccedilatildeo foi projectada de forma a retirar o maacuteximopartido desta divisatildeo

Podemos ver na figura 15 um diagrama que permite verificar de que forma os compo-nentes estatildeo a ser utilizados O diagrama tem trecircs agrupamentos que pretendem descreverutilizando uma linguagem Object Oriented (OO) a sua visibilidade Os temos publicprotected e private satildeo utilizados como analogias aos respectivos conceitos na linguagemOO

4131 Camada de acesso puacuteblico

A camada de acesso puacuteblico expotildee os meacutetodos de interacccedilatildeo com a aplicaccedilatildeo sendocomposta por trecircs componentes wWexsysGUI jWexsysWebClient e eWexsysClient

Figura 15 Wexsys - Integraccedilatildeo dos componentes

46

41 ARQUITECTURA GLOBAL

Os componentes eWexsysClient e jWexsysWebClient contecircm interfaces de ligaccedilatildeoentre a camada visual e a camada de negoacutecio

eWexsysClient - disponibiliza as classes designadas Data Transfer Object (DTO) eainda o interface para os serviccedilos disponibilizados pelo wexsys

jWexsysWebClient - disponibiliza classes que caracterizam os conceitos de negoacuteciomas que contecircm atributos adicionais A razatildeo da existecircncia deste componente justificandashsecom a eventual expansatildeo da aplicaccedilatildeo para uma nova camada visual Os exemplos decoacutedigo 1 e 2 permitem-nos observar uma utilizaccedilatildeo de atributos extra na classe visualpara controlo de ocorrecircncia de erros

1 p u b l i c c l a s s RuleView

3 p r i v a t e i n t l e v e l = 0

5 Rule i d e n t i f i e r

7 p r i v a t e S t r i n g i d e n t i f i e r = n u l l

9 p r i v a t e S t r i n g i d e n t i f i e r E r r = n u l l

11 p r i v a t e b o o l e a n i d e n t i f i e r I n E r r = f a l s e

13

Rule d e s c r i p t i o n

15

p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

17

p r i v a t e S t r i n g d e s c r i p t i o n E r r = n u l l

19

p r i v a t e b o o l e a n d e s c r i p t i o n I n E r r = f a l s e

21

Coacutedigo 1 Excerto da classe RuleView

p u b l i c c l a s s Rule implemen t s S e r i a l i z a b l e

47

CAPIacuteTULO 4 WEXSYS

2

p r i v a t e i n t l e v e l = 0

4

Rule i d e n t i f i e r

6

p r i v a t e S t r i n g i d e n t i f i e r = n u l l

8

10 Rule d e s c r i p t i o n

12 p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

14 Coacutedigo 2 Excerto da classe Rule

O outro componente envolvido na camada puacuteblica o wWexsysGUI eacute o responsaacute-vel pela interacccedilatildeo com aplicaccedilatildeo Eacute o componente que disponibiliza as paacuteginas e oresponsaacutevel pela coordenaccedilatildeo de todo o processo web

4132 Camada de acesso protegido

A camada de acesso protegido disponibiliza componentes que podem ser utilizados pelosdois moacutedulos mas que natildeo estatildeo disponiacuteveis para o exterior Neste caso existe apenas umcomponente nestas condiccedilotildees o jWexsysLog cuja funccedilatildeo eacute assegurar o registo de erros

jWexsysLog - componente responsaacutevel pelo registo de erros utiliza internamente aframework log4j

4133 Camada de acesso privado

A camada de acesso privado incluiacute todos os componentes responsaacuteveis por processa-mento interno Os componentes responsaacuteveis pelo processamento interno satildeo eWexsysjWexsysEngine e jWexsysUtils Tambeacutem incluiacutedos no conceito de processamento internoestatildeo os componentes TGGraphLayout e YProlog

eWexsys - eacute o componente responsaacutevel pela implementaccedilatildeo do interface de negoacuteciodelegando as funcionalidades em classes especializadas ou no componente responsaacutevelpela integraccedilatildeo com o nuacutecleo da aplicaccedilatildeo o jWexsysEngine

48

41 ARQUITECTURA GLOBAL

jWexsysEngine - eacute o componente responsaacutevel pelo nuacutecleo da aplicaccedilatildeo ou sejaeacute o responsaacutevel pela integraccedilatildeo do java com o prolog e vice-versa Eacute o componenteresponsaacutevel pelo mapeamento das classes de java para as classes de comunicaccedilatildeo com oprolog

jWexsysUtils - eacute um componente auxiliar que disponibiliza e encapsula utilitaacuteriospara uma melhor organizaccedilatildeo interna da aplicaccedilatildeo

TGGraphLayout - eacute um componente tambeacutem conhecido por TouchGraph eacute umprojecto mantido por uma comunidade e estaacute disponiacutevel no sourceforge AlexanderShapiro (2010)

YProlog - este componente foi o escolhido durante a fase de estudo da implementaccedilatildeopara ser a base do motor de inferecircncia (321)

4134 Fluxo de invocaccedilatildeo

A aplicaccedilatildeo foi desenvolvida de forma a que todos os pedidos seguissem um mesmo fluxode invocaccedilatildeo de forma a uniformizar o processo Na figura 16 temos uma relaccedilatildeo dasclasses principais da aplicaccedilatildeo

Figura 16 Diagrama de classes principais

O fluxo de invocaccedilatildeo inicia-se atraveacutes do WexsysBean no caso de funcionalidades

49

CAPIacuteTULO 4 WEXSYS

do motor de inferecircncia ou atraveacutes do WexsysKBBean no caso de funcionalidades dabase de conhecimento Ambos os managed beans delegam no WexsysViewManager querecorrendo agrave classe WexsysViewHelper converte as classes view para classes DTO Aclasse WexsysViewManager por sua vez delega no session bean WexsysSessionBean quemediante o tipo de pedido delega nas classes de validaccedilatildeo ou nas classes do motor deinferecircncia WexsysEngineImpl

Este processo pode ser observado na figura 17 que representa um diagrama de sequecircn-cia exemplificativo do fluxo de invocaccedilatildeo geneacuterico

Figura 17 Diagrama de sequecircncia do fluxo de invocaccedilatildeo

414 Portal

O wexsys tem como ponto de entrada na aplicaccedilatildeo uma paacutegina inicial que permite aidentificaccedilatildeo do utilizador no sistema pericial Como se trata de um trabalho acadeacutemico aparte de validaccedilatildeo e autenticaccedilatildeo de utilizadores natildeo foi contemplada como tal eacute possiacutevelautenticar-se com qualquer utilizador Para aleacutem da autenticaccedilatildeo eacute ainda possiacutevel indicarpara a sessatildeo actual qual o miacutenimo grau de confianccedila para a apresentaccedilatildeo de uma resposta

50

41 ARQUITECTURA GLOBAL

O endereccedilo da aplicaccedilatildeo respeita o seguinte formato httpservidorportawWexsysGUI onde servidor e porta satildeo os dados de configuraccedilatildeo do Portal Server

Figura 18 Wexsys - Paacutegina inicial

Quando o utilizador inicia a utilizaccedilatildeo do sistema ficam disponiacuteveis trecircs funcionali-dades que seratildeo referidas nas secccedilotildees seguintes

4141 Templates

Um dos aspectos comuns a toda a aplicaccedilatildeo eacute o aspecto graacutefico tendo este sido imple-mentado recorrendo a Facelets Um template facelets define-se pela criaccedilatildeo de umapaacutegina modelo em que existem zonas dinacircmicas Este conceito eacute conhecido de outrastecnologias por exemplo Web Parts ou Master Pages desenvolvidos pela Microsoft

O coacutedigo 3 permite ver como foi desenvolvido o template principal

lthtml

2 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

4 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

6

lt i c e o u t p u t D e c l a r a t i o n

8 doc typeRoo t =HTML

d o c t y p e P u b l i c =minus W3C DTD XHTML 1 0 S t r i c t EN

10 doc typeSys tem = h t t p www w3 org TR xhtml1 DTD xhtml1minus s t r i c t

d t d gt

51

CAPIacuteTULO 4 WEXSYS

12 lthead gt

lt t i t l e gtwexsys minus p a g e T i t l e lt t i t l e gt

14 [ meta t a g s e l i n k t o c s s f i l e s ]

lt head gt

16 ltbody gt

lt f view l o c a l e = f a c e s C o n t e x t e x t e r n a l C o n t e x t r e q u e s t L o c a l e gt

18 lt i c e l o a d B u n d l e basename =com wexsys g u i r e s o u r c e s bund leRes

v a r = bund leRes gt

lt i c e form p a r t i a l S u b m i t = t r u e gt

20 lt d i v i d = wrapper gt

lt d i v i d = logo gt

22 lth1gtlta h r e f = gtWExSys lt a gt lt h1gt

lth2gtweb e x p e r t system lt h2gt

24 lt div gt

lt d i v i d = h e a d e r gt

26 lt d i v i d =menugt

[ Menu c o n t e n t ]

28 lt div gt

lt div gt

30 lt div gt

lt d i v i d = page gt

32 lt d i v i d = c o n t e n t gt

lt u i i n s e r t name= c o n t e n t gt

34 D e f a u l t C o n t e n t

lt u i i n s e r t gt

36 lt div gt

lt d i v i d = s i d e b a r gt

38 lt u i i n s e r t name= s i d e b a r gt

S i d e b a r c o n t e n t

40 lt u i i n s e r t gt

lt div gt

42 lt d i v s t y l e = c l e a r bo th gt

lt div gt

44 lt div gt

lt d i v i d = f o o t e r gt

46 F o o t e r c o n t e n t

lt div gt

48 lt i c e form gt

52

41 ARQUITECTURA GLOBAL

lt f view gt

50 lt body gt

lt html gt Coacutedigo 3 Coacutedigo do template principal do portal

Na listagem de coacutedigo 3 podemos ver a vermelho as aacutereas que foram definidas comodinacircmicas no coacutedigo 4 tambeacutem a vermelho podemos ver as respectivas aacutereas num cenaacuteriode implementaccedilatildeo de uma paacutegina

1 lt u i c o m p o s i t i o n

t e m p l a t e =WEBminusINF incminust e m p l a t e s mainminust e m p l a t e j s p x

3 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

5 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

7

9 lt u i d e f i n e name= c o n t e n t gt

[ ]

11 lt u i d e f i n e gt

13 lt u i d e f i n e name= s i d e b a r gt

[ ]

15 lt u i d e f i n e gt

17 lt u i c o m p o s i t i o n gt Coacutedigo 4 Coacutedigo da paacutegina inicial do portal

415 Suporte multi-liacutengua

O wexsys foi desenvolvido considerando um factor bastante relevante numa aplicaccedilatildeoactual o suporte multi-liacutengua Este suporte eacute uma das vantagens do sistema e foiimplementado recorrendo a ficheiros de recursos (properties) de forma a exteriorizartodos os textos de saiacuteda

Desta forma para dar suporte a uma nova liacutengua apenas teremos que traduzir os textosnos ficheiros de recursos e de alterar a aplicaccedilatildeo de forma a permitir seleccionar o idioma

53

CAPIacuteTULO 4 WEXSYS

A alteraccedilatildeo a ser efectuada na aplicaccedilatildeo eacute muito simples jaacute que basta passar o valor doatributo ldquolocalerdquo da tag ldquofviewrdquo como sendo a liacutengua pretendida

42 Motor de inferecircncia

Para este trabalho foi definida a criaccedilatildeo de um motor de inferecircncia de raiz que pudesseefectivamente substituir o utilizado no sistema base O novo motor desenvolvido teraacute quesuportar uma seacuterie de especificaccedilotildees a comeccedilar pela capacidade de operar num ambientemulti-utilizador

O motor de inferecircncia deve estar preparado para lidar com conhecimento incerto foiescolhido a teacutecnica dos factores de certeza por ser uma teacutecnica simples de reproduzir eeficaz na sua utilizaccedilatildeo

Para aleacutem disto e tratando-se um sistema pericial o motor de inferecircncia deveraacuteser independente da base de conhecimento utilizada e deveraacute idealmente suportar umsistema de explicaccedilotildees que responda a eventuais pedidos por parte dos utilizadores quepretendam ver mais detalhadamente quais as regras que conduziram agrave conclusatildeo obtidaTambeacutem seraacute possiacutevel saber porque eacute que determinada questatildeo eacute colocada (explicaccedilotildeesvulgarmente denominadas de como e porquecirc)

421 Multi-utilizador

Quando se pretende que um sistema pericial tenha uma utilizaccedilatildeo mono-posto (comoera o caso do GISPSA) apenas eacute criada uma instacircncia por cada vez que eacute chamado omotor de inferecircncia No nosso caso tendo sido estabelecido que o novo sistema teriaque permitir uma utilizaccedilatildeo multi-utilizador eacute necessaacuterio desenvolver os mecanismosnecessaacuterios para permitir execuccedilotildees de vaacuterias instacircncias para o novo motor de inferecircncia

A classe WexsysEngineFactory5 eacute a responsaacutevel por criar uma instacircncia do motorde inferecircncia por cada utilizador que inicia a utilizaccedilatildeo do sistema Esta classe tem ummeacutetodo do tipo static o meacutetodo getInferenceEngine que tem como paracircmetros de entradaum utilizador e devolve uma instacircncia do motor de inferecircncia As instacircncias activas satildeoguardadas internamente e sempre que eacute invocado o meacutetodo eacute obtida a respectiva instacircnciaNo caso de ainda natildeo existir uma instacircncia entatildeo eacute criada uma nova e guardada

1

C r e a t e s an i n s t a n c e o f I n f e r e n c e E n g i n e

54

42 MOTOR DE INFEREcircNCIA

3

param usernameKey

5 The usernameKey t o use

7 return I n f e r e n c e E n g i n e i n s t a n c e

throws WexsysArgumen tExcep t ion

9

p u b l i c s t a t i c WexsysEngineImpl g e t I n f e r e n c e E n g i n e ( S t r i n g

usernameKey )

11 throws WexsysArgumentExcept ion

i f ( g e t R u l e U r l ( ) == n u l l | | g e t R u l e U r l ( ) l e n g t h ( ) == 0)

13 throw new WexsysArgumentExcept ion ( mainKnowledgeBaseUrl

r u l e U r l )

15 WexsysEngineImpl i n f e r e n c e E n g i n e = n u l l

17 Have we a l r e a d y c r e a t e d an i n s t a n c e

i f ( g e t I n f e r e n c e E n g i n e s ( ) c o n t a i n s K e y ( usernameKey ) )

19 Obta in t h e i n s t a n c e a s s o c i a t e d t o t h e s p e c i f i e d key

i n f e r e n c e E n g i n e = g e t I n f e r e n c e E n g i n e s ( ) g e t ( usernameKey )

21 e l s e

Cr ea t e a new i n s t a n c e and s t o r e i t i n t h e h o l d e r

23 i n f e r e n c e E n g i n e = new WexsysEngineImpl ( usernameKey

r u l e U r l kb sUr l )

g e t I n f e r e n c e E n g i n e s ( ) p u t ( usernameKey i n f e r e n c e E n g i n e )

25

27 re turn i n f e r e n c e E n g i n e

Coacutedigo 5 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo

422 Base de conhecimento inicial

Ao partir para o desenvolvimento de um sistema pericial eacute necessaacuterio adoptar uma basede conhecimento inicial simples que sirva de suporte ao desenvolvimento do mesmo

55

CAPIacuteTULO 4 WEXSYS

A base de conhecimento inicial foi adoptada a partir do estudo de Merritt (1989) Foiseleccionada devido a duas caracteriacutesticas principais

bull simplicidade - no sentido em que as regras satildeo pequenas e simples de interligar

bull abrangecircncia - existem alguns cenaacuterios possiacuteveis de serem testados com o protoacutetipocomo por exemplo raciociacutenio sobre incerteza e conclusotildees intermeacutedias

A base de conhecimento inicial escolhida tem a seguinte estrutura

bull rule 1 if not turn_over and battery_bad then problem is battery cf 100

bull rule 2 if lights_weak then battery_bad cf 50

bull rule 3 if radio_weak then battery_bad cf 50

bull rule 4 if turn_over and smell_gas then problem is flooded cf 80

bull rule 5 if turn_over and gas_gauge is empty then problem is out_of_gas cf 90

bull rule 6 if turn_over and gas_gauge is low then problem is out_of_gas cf 30

423 Protoacutetipo do motor de inferecircncia

Para o desenvolvimento do protoacutetipo inicial do motor de inferecircncia foi necessaacuterio definiralguns aspectos essenciais tais como

1 Formato da regras

2 Formato das questotildees

3 Interacccedilatildeo assiacutencrona de questotildees e respostas

4 Algoritmos a utilizar

4231 Formato das regras

O formato das regras foi definido tendo em conta alguns pressupostos Entre elessalientam-se a necessidade da utilizaccedilatildeo de graus de confianccedila e a capacidade de guardaruma descriccedilatildeo para cada regra

O formato escolhido para a representaccedilatildeo de uma regra foi o seguinte

56

42 MOTOR DE INFEREcircNCIA

rule(

ltcodigogt rsquoDescriccedilatildeo da regrarsquo

lhs([

ev(ltpremissagt ltvalor da premissagt)

ev(ltpremissa_ngt ltvalor da premissa_ngt)

])

rhs(ev(ltsoluccedilatildeogt ltvalor da soluccedilatildeogt) CF)

)

Na definiccedilatildeo do ltLHSgt eacute possiacutevel definir uma lista de premissas e respectivos valoresno caso da regra conter mais do que uma premissa Um aspecto relevante relacionado coma lista de premissas eacute que esta considera apenas o operador conjunccedilatildeo entre premissas

4232 Formato das questotildees

O formato das questotildees foi tambeacutem definido assumindo alguns princiacutepios tais como apossibilidade de respostas muacuteltiplas e ainda a atribuiccedilatildeo de um texto quer agrave questatildeo a serapresentada quer agraves hipoacuteteses colocadas

O formato escolhido para a representaccedilatildeo de uma questatildeo foi o seguinte

question(

turn_over

rsquoO carro ligarsquo

[

answer(ltvalorgt ltdescriccedilatildeo do valorgt)

answer(ltvalor_ngt ltdescriccedilatildeo do valor_ngt)

]

ltescolha_multipla = 1 0gt

)

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas

Numa qualquer execuccedilatildeo de um software instalado e executado localmente numa maacutequinao funcionamento normal seraacute a execuccedilatildeo de um conjunto de instruccedilotildees ateacute ao ponto emque seja necessaacuteria a interacccedilatildeo com um utilizador Quando isso acontece o programafica suspenso ateacute que o utilizador responda ao que lhe foi solicitado continuando depoiscom a sua execuccedilatildeo a partir do ponto onde parou

57

CAPIacuteTULO 4 WEXSYS

No caso de um programa desenvolvido em prolog e mais especificamente um sistemapericial o conceito atraacutes descrito eacute exactamente o mesmo jaacute que o programa apenassuspende a execuccedilatildeo quando eacute necessaacuterio colocar uma questatildeo que o utilizador teraacute queforccedilosamente responder para dar continuidade ao programa

Se no entanto considerarmos a realidade de uma aplicaccedilatildeo web este princiacutepio jaacutenatildeo seraacute tatildeo linear porque um servidor web recebe um pedido executa-o e devolve umresultado O mesmo seraacute dizer que numa execuccedilatildeo de um componente prolog a partirde um servidor web a pilha de execuccedilatildeo eacute interrompida quando eacute necessaacuterio questionaro utilizador mas natildeo eacute possiacutevel continuar a execuccedilatildeo da mesma a partir do ponto ondeparou Em vez disso seraacute necessaacuterio desfazer a pilha de execuccedilatildeo criada e assim queexistir a resposta do utilizador (eacute feito novo pedido ao servidor) a execuccedilatildeo eacute realizadanovamente desde o iniacutecio mas desta vez considerando a resposta recebida

As razotildees para este comportamento justificam-se pela utilizaccedilatildeo do protocolo HTTPem que eacute necessaacuterio existir um pedido e uma resposta O que obriga a que a colocaccedilatildeoda pergunta e a resposta sejam assiacutencronos podendo existir entre as duas acccedilotildees vaacuteriospedidos (pedidos de explicaccedilotildees por exemplo)

Este ldquoproblemardquo levou agrave necessidade do desenvolvimento de um mecanismo quepermita um funcionamento coerente num programa que utilize (como neste caso) oprolog simulando o comportamento que este teria numa situaccedilatildeo de execuccedilatildeo local

O mecanismo proposto foi a alteraccedilatildeo do predicado responsaacutevel pelo processo re-cursivo especificando um atributo auxiliar de controlo que acompanha a execuccedilatildeo dopredicado Esse atributo auxiliar quando detectada a necessidade de colocaccedilatildeo de umaquestatildeo eacute instanciado e impede a prossecuccedilatildeo do predicado retornando a execuccedilatildeo paraa web com a respectiva questatildeo

Este mecanismo permite uma comunicaccedilatildeo assiacutencrona com a parte web mantendo asvantagens da recursividade do prolog

4234 Estrutura da base de conhecimento

A base de conhecimento apoacutes a definiccedilatildeo do formato de representaccedilatildeo das regras e dasquestotildees eacute a seguinte

q u e s t i o n ( t u r n _ o v e r rsquoO c a r r o l i g a rsquo

2 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

4 q u e s t i o n ( l i g h t s _ w e a k rsquoAs l u z e s e s t a o f r a c a s rsquo

58

42 MOTOR DE INFEREcircNCIA

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

6

q u e s t i o n ( rad io_weak rsquoO r a d i o e s t a f r a c o rsquo

8 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

10 q u e s t i o n ( s m e l l _ g a s rsquo C h e i r a a g a s o l i n a rsquo

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

12

q u e s t i o n ( gas_gauge rsquoO que marca o p o n t e i r o do d e p o s i t o da

g a s o l i n a rsquo

14 [ answer ( empty rsquo Vazio rsquo ) answer ( high rsquo S u f i c i e n t e rsquo ) answer

( low rsquo Rese rva rsquo ) ] 0 )

16 r u l e ( r u l e _ 1 rsquo Rule 1 rsquo

l h s ( [ ev ( t u r n _ o v e r no ) ev ( b a t t e r y _ b a d yes ) ] ) r h s ( ev (

problem b a t t e r y ) 100) )

18

r u l e ( r u l e _ 2 rsquo Rule 2 rsquo

20 l h s ( [ ev ( l i g h t s _ w e a k yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

22 r u l e ( r u l e _ 3 rsquo Rule 3 rsquo

l h s ( [ ev ( rad io_weak yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

24

r u l e ( r u l e _ 4 rsquo Rule 4 rsquo

26 l h s ( [ ev ( s m e l l _ g a s yes ) ev ( t u r n _ o v e r yes ) ] ) r h s ( ev ( problem

f l o o d e d ) 80) )

28 r u l e ( r u l e _ 5 rsquo Rule 5 rsquo

l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge empty ) ] ) r h s ( ev (

problem o u t _ o f _ g a s ) 90) )

30

r u l e ( r u l e _ 6 rsquo Rule 6 rsquo

32 l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge low ) ] ) r h s ( ev ( problem

o u t _ o f _ g a s ) 30) ) Coacutedigo 6 Representaccedilatildeo da base de conhecimento do protoacutetipo

59

CAPIacuteTULO 4 WEXSYS

4235 Algoritmos a utilizar

Um dos paracircmetros mais relevantes para o funcionamento do algoritmo inicial eacute o graumiacutenimo de confianccedila que eacute indicado no iniacutecio da utilizaccedilatildeo do sistema na paacutegina inicialSe o valor indicado para este paracircmetro for demasiado elevado poderaacute inibir algumasregras impedindo o seu disparo no caso de natildeo ser atingido o grau de confianccedila necessaacuterioPor outro lado se o valor introduzido for demasiado baixo permitiraacute que qualquer regradispare independentemente do seu grau de confianccedila traduzindo-se numa maior aacutervorede pesquisa

O motor de inferecircncia eacute executado mediante o recurso a um predicado principal Estepredicado seraacute o responsaacutevel pelo iniacutecio do processo de inferecircncia De seguida seratildeoapresentados alguns dos algoritmos considerados mais relevantes Os algoritmos 1 2 e 3representam atraveacutes da utilizaccedilatildeo de pseudo-coacutedigo alguma da loacutegica implementada nomotor de inferecircncia

Algoritmo 1 Algoritmo principal do motor de inferecircnciabegin tryToProve

while empty ControlObj doobtemRegra (r)disparoPremissaslarr truefor premissa isin LHS do

ControlObjdisparoularr verificaPremissa (p)disparoPremissaslarr disparoPremissas ampamp disparouif not empty ControlObj then

termina o algoritmoend

endif empty ControlObj then

if disparoTodasPremissas thenfireRules

endend

endend

60

42 MOTOR DE INFEREcircNCIA

Algoritmo 2 Verifica se uma premissa eacute verdadeirainput Premissa poutput ControlObj disparoubegin verificaPremissa

disparoularr false ControlObjlarr nullif checkExistFact (p) ou checkExistQuestionFact (p) oucheckExistRuleFact (pControlObj) then

disparoularr true exitend

end

Algoritmo 3 Dispara as regras que possam ser disparadasbegin fireRules

for regra isin basedeconhecimento doif regra not fired then

if regra pode disparar thencalcula grau de confianccediladispara regraif regra dispara soluccedilatildeo final then

termina execuccedilatildeo preenchendo ControlObjendif regra natildeo dispara soluccedilatildeo final then

continuaend

endend

endend

61

CAPIacuteTULO 4 WEXSYS

424 Resultado final

Apoacutes a implementaccedilatildeo do protoacutetipo inicial do motor de inferecircncia e dos testes necessaacuteriosagrave verificaccedilatildeo do bom funcionamento do mesmo chegamos ao resultado final que foiutilizado no wexsys

Este novo motor de inferecircncia foi desenvolvido levando em consideraccedilatildeo todasas caracteriacutesticas consideradas essenciais tanto para a execuccedilatildeo num ambiente multi-utilizador como para a execuccedilatildeo num servidor web e que foram jaacute descritas nas secccedilotildeesanteriores De referir ainda que face ao motor de inferecircncia do sistema base esteapresenta uma seacuterie de melhorias tais como rapidez de funcionamento e abstracccedilatildeo dabase de conhecimento utilizada

4241 Arranque da execuccedilatildeo

Como jaacute referido o motor de inferecircncia segue os algoritmos descritos na secccedilatildeo 4235 enesta secccedilatildeo seraacute abordado o processo utilizado desde o arranque do motor de inferecircnciaateacute agrave apresentaccedilatildeo dos dados como podemos ver na figura 19

Figura 19 Paacutegina inicial do motor de inferecircncia

O utilizador comeccedila na paacutegina inicial e selecciona a opccedilatildeo ldquoMotor de InferecircnciardquoDepois eacute apresentada uma paacutegina que permite iniciar o motor de inferecircncia utilizando a

62

42 MOTOR DE INFEREcircNCIA

opccedilatildeo ldquoiniciarrdquo Isto despoleta o mecanismo de inferecircncia como podemos verificar nafigura 20

Figura 20 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia

A classe YProlog invoca o predicado top_goals que mais natildeo eacute que o ponto de entradano motor de inferecircncia A sua funccedilatildeo seraacute obter qual a ldquoconclusatildeo final a procurarrdquo (estetoacutepico seraacute descrito na secccedilatildeo 432) para se poder iniciar o algoritmo propriamentedito Na listagem de coacutedigo 7 eacute possiacutevel consultar os predicados responsaacuteveis pelaimplementaccedilatildeo dos algoritmos Apenas estatildeo listados os predicados principais

Eacute possiacutevel consultar o coacutedigo do motor de inferecircncia no anexo A

t o p _ g o a l s ( Con t ro lOb j MinCF ) minus

2 t o p _ g o a l ( TopGoal )

t o p ( TopGoal Con t ro lOb j MinCF )

63

CAPIacuteTULO 4 WEXSYS

4

t o p ( TopGoal Con t ro lOb j MinCF ) minus6 r e t r a c t a l l ( h i s t 2 ) s e t ( l en 0 )

g e t R u l e M o r e R e l e v a n t ( TopGoal Rule )

8 t r y T o P r o v e ( Rule Con t ro lOb j MinCF )

10 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) minusr u l e ( Rule _ l h s (LHS) _ )

12 p r o v e L i s t H y p (LHS Con t ro lOb j MinCF )

g e t ( l en LEN) LEN1 i s LEN + 1

14 a s s e r t ( h i s t ( LEN1 Rule ) )

s e t ( l en LEN1)

16 (

check i f r u l e has re turn c o n t r o l o b j e c t

18 ( v a r ( C o n t r o l O b j ) ) minusgt(

no c o n t r o l o b j e c t found check i f o t h e r r u l e s needs t o

be f i r e d

20 f i r e R u l e s ( Con t ro lOb j MinCF )

) (

22 c o n t r o l o b j e c t found

t rue24 )

)

26

p r o v e L i s t H y p ( [ ] Con t ro lOb j MinCF )

28 p r o v e L i s t H y p ( [H | T ] Con t ro lOb j MinCF ) minusproveHyp (H Con t ro lOb j MinCF )

30 (

( v a r ( C o n t r o l O b j ) ) minusgt (

32 p r o v e L i s t H y p ( T Con t ro lOb j MinCF )

) (

34 t rue)

36 )

38

f a c t a l r e a d y known

40 proveHyp (H Con t ro lOb j MinCF ) minus

64

42 MOTOR DE INFEREcircNCIA

H = ev (X Y) f a c t (X Y _ )

42

t h e r e i s a q u e s t i o n t h a t can l e a d t o a f a c t

44 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

n o t ( f a c t (X _ _ ) )

46 q u e s t i o n (X _ _ _ )

n o t ( n o t _ q u e s t i o n (X) )

48 C o n t r o l O b j = ask (X)

50 t h e r e i s a c o n c l u s i o n t h a t can

l e a d t o a q u e s t i o n t h a t can l e a d t o a f a c t

52 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

r u l e ( Rule _ l h s (LHS) r h s ( ev (X _ ) V) )

54 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) Coacutedigo 7 Predicados principais do motor de inferecircncia

4242 Mecanismo de respostas

O mecanismo de respostas eacute algo similar ao processo descrito anteriormente A suafunccedilatildeo seraacute guardar a resposta que foi seleccionada pelo utilizador e prosseguir com oalgoritmo de forma a que uma nova questatildeo seja colocada ou a soluccedilatildeo final alcanccedilada

Um paracircmetro considerado obrigatoacuterio na submissatildeo de uma resposta eacute o grau deconfianccedila Este valor serviraacute para realizar o caacutelculo do grau de confianccedila da regra quandoa mesma puder ser disparada

Podemos ver na figura 21 o processo de resposta a uma questatildeo

65

CAPIacuteTULO 4 WEXSYS

Figura 21 Fluxo de invocaccedilatildeo de resposta a uma questatildeo

Eacute ainda possiacutevel natildeo responder agrave questatildeo colocada utilizando a opccedilatildeo ldquonatildeo sei natildeoresponderrdquo Esta opccedilatildeo iraacute guardar internamente uma indicaccedilatildeo para natildeo voltar a colocara questatildeo ignorada evitando entrar em ciclos

Agrave medida que o processo avanccedila eacute possiacutevel acompanhar o estado actual do motor deinferecircncia Este acompanhamento eacute realizado mediante a anaacutelise da zona situada do ladodireito da paacutegina e que vai sendo actualizada a cada interacccedilatildeo com o motor de inferecircnciaA zona referida permite obter informaccedilotildees acerca de

bull Regras que jaacute foram disparadas

bull Factos que foram inferidos pelo disparo das regras

bull Factos que foram facultados pelo utilizador ao responder agraves questotildees

bull Factos conhecidos antes do iniacutecio do processo de inferecircncia

66

42 MOTOR DE INFEREcircNCIA

Estes factos satildeo obtidos atraveacutes do predicado ldquoinf_sys((L_Rules L_Inf_Facts L_Know_FactsL_Init_Facts)rdquo Este predicado eacute invocado apoacutes cada interacccedilatildeo com o motor de inferecircnciae desta forma os dados estatildeo sempre actualizados

4243 Conclusatildeo final encontrada

Quando o disparo de uma regra leva a que seja adicionado um facto que corresponde auma soluccedilatildeo final o motor de inferecircncia termina a sua execuccedilatildeo devolvendo a conclusatildeofinal a que chegou bem como o respectivo grau de confianccedila Na figura 22 podemos ver afase final do processo de inferecircncia O grau de confianccedila da conclusatildeo final eacute atribuiacutedocom recurso agrave foacutermula seguinte

Dada uma regra X com premissas P1 a Pn e CF =CF (X) entatildeo temos

CF(X P1 Pn) = min [CF(P1) CF(Pn)]timesCF(X)

Figura 22 Conclusatildeo da inferecircncia

4244 Explicaccedilotildees

Eacute possiacutevel em qualquer altura colocar a questatildeo ldquoporquecircrdquo antes de submetermos umaresposta ou a questatildeo ldquocomordquo apoacutes uma conclusatildeo final Este tipo de explicaccedilotildeescontribui para a fase de validaccedilatildeo do sistema pericial colocando-as ao dispor do perito

67

CAPIacuteTULO 4 WEXSYS

responsaacutevel pela validaccedilatildeo expondo desta forma o raciociacutenio seguido no decorrer dainferecircncia Exemplos da solicitaccedilatildeo de explicaccedilotildees podem ser consultados atraveacutes dasfiguras 23 24 e 25

Figura 23 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo

68

42 MOTOR DE INFEREcircNCIA

Figura 24 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia

Figura 25 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final

69

CAPIacuteTULO 4 WEXSYS

As explicaccedilotildees ldquoporquecircrdquo foram implementadas recorrendo a predicados temporaacuterios(hist) que acompanham o desenrolar do motor de inferecircncia Eacute possiacutevel em qualqueraltura consultar esses predicados para obter de uma forma imediata a explicaccedilatildeo doporquecirc da questatildeo estar a ser feita

As explicaccedilotildees ldquocomordquo jaacute seguem um mecanismo mais complexo Quando umaregra eacute disparada origina conclusotildees intermeacutedias ou finais essas conclusotildees natildeo satildeo maisdo que simples factos O motor de inferecircncia sempre que dispara uma regra associa aofacto a regra que o originou por intermeacutedio do predicado inf_exp_how

Desta forma basta algum coacutedigo para que seja possiacutevel a obtenccedilatildeo de ambas asexplicaccedilotildees Esse coacutedigo pode ser consultado na listagem 8 em que os predicados why ehow se referem agraves explicaccedilotildees ldquoporquecircrdquo e ldquocomordquo respectivamente

why ( L ) minus

2 f i n d a l l ( r (OX) h i s t (OX) L )

4 how ( A t t r Value R e s u l t ) minusin f_exp_how ( A t t r Value Ru le s )

6 explainHow ( Rules E x p l a n a t i o n )

append ( Rules E x p l a n a t i o n R e s u l t )

8

explainHow ( [ ] [ ] )

10 explainHow ( [H | T ] R e s u l t ) minusi n n e r E x p l a i n (H E x p l a n a t i o n H )

12 explainHow ( T E x p l a n a t i o n R u l e s )

append ( Explana t ionH E x p l a n a t i o n R u l e s R e s u l t )

14

16 i n n e r E x p l a i n ( Rule E x p l a n a t i o n ) minusr u l e ( Rule _ l h s (LHS) _ )

18 expla inLHS (LHS E x p l a n a t i o n )

20 expla inLHS ( [ ] [ ] )

expla inLHS ( [ ev ( A t t r Value ) | T ] E x p l a n a t i o n A ) minus22 n o t ( inf_exp_how ( A t t r Value _ ) )

f a c t ( A t t r Value _ )

24 expla inLHS ( T E x p l a n a t i o n A )

70

43 BASE DE CONHECIMENTO

26 expla inLHS ( [ ev ( A t t r Value ) | T ] Resu l tA ) minushow ( A t t r Value E x p l a n a t i o n A )

28 expla inLHS ( T E x p l a n a t i o n )

append ( Explana t ionA E x p l a n a t i o n Resu l tA ) Coacutedigo 8 Predicados principais do sistema de explicaccedilotildees

43 Base de conhecimento

A base de conhecimento armazena o conhecimento extraiacutedo de um ou mais peritos e con-siste numa seacuterie de factos e regras acerca de um determinado domiacutenio Sendo dependenteda aacuterea que se pretende abranger com o sistema pericial a base de conhecimento eacute deconstruccedilatildeo especiacutefica para cada situaccedilatildeo em que seja necessaacuterio desenvolver este tipo desistema

Os procedimentos de inserccedilatildeo actualizaccedilatildeo e remoccedilatildeo dos factos e regras que com-potildeem a base de conhecimento (gestatildeo da base de conhecimento) teratildeo que ser na medidado possiacutevel procedimentos simples que sejam facilmente compreendidos pelos utilizado-res

As funcionalidades de gestatildeo da base de conhecimento estatildeo disponiacuteveis na opccedilatildeoldquoBase de Conhecimentordquo da paacutegina inicial como podemos observar na figura 26

71

CAPIacuteTULO 4 WEXSYS

Figura 26 Paacutegina inicial da gestatildeo da base de conhecimento

431 Leitura da base de conhecimento

Ao iniciar a execuccedilatildeo a base de conhecimento eacute carregada para memoacuteria a partir de umficheiro Este processo eacute realizado de forma iterativa e de acordo com uma determinadasequecircncia regras questotildees conclusatildeo final e por uacuteltimo os factos iniciais

Por sua vez o carregamento das regras eacute efectuado em duas fases sendo que primeirosatildeo obtidas as regras existentes (ldquoretrieve_rules(L)rdquo) e depois para cada regra eacute construiacutedaa sua estrutura (ldquobuildRuleObjectrdquo) Podemos observar a descriccedilatildeo deste processo nafigura 27

72

43 BASE DE CONHECIMENTO

Figura 27 Processo de carregamento das regras

Quanto ao carregamento das questotildees eacute similar ao das regras jaacute que eacute efectuadoigualmente em duas fases Primeiro obtecircm-se todas as questotildees (ldquoretrieve_questions(L)rdquo)e depois para cada questatildeo eacute preenchida a sua estrutura (ldquobuildQuestionObjectrdquo)

Jaacute o carregamento da conclusatildeo final eacute realizado atraveacutes do predicado ldquotop_goal(L)rdquoEste predicado vai devolver a conclusatildeo final guardada

Por fim os factos iniciais satildeo obtidos reutilizando um processo de obtenccedilatildeo de factos(ldquoinf_sys((L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)rdquo) Este processo jaacute foireferido na secccedilatildeo que descreve o motor de inferecircncia (4242)

432 Conclusatildeo final a encontrar

A conclusatildeo final a encontrar representa o predicado que vai ser considerado comoobjectivo no decorrer do motor de inferecircncia Soacute vatildeo ser consideradas soluccedilotildees queconvergem para uma soluccedilatildeo final que contenha o predicado especificado no RHS

Para definir uma conclusatildeo final basta especificar o nome do predicado da soluccedilatildeoque pretendemos encontrar com o motor de inferecircncia

73

CAPIacuteTULO 4 WEXSYS

433 Factos iniciais

Os factos iniciais permitem adicionar conhecimento preacutevio a uma base de conhecimentoPara adicionaacute-los eacute necessaacuterio utilizar o botatildeo ldquoAdicionar facto inicialrdquo e preencher oscampos necessaacuterios Para remover um facto inicial previamente inserido eacute utilizado obotatildeo ldquoRemover facto inicialrdquo e eacute necessaacuterio confirmar a acccedilatildeo que se estaacute a efectuar deforma a evitar uma remoccedilatildeo acidental

434 Regras

As regras satildeo o ponto essencial da gestatildeo da base de conhecimento As regras satildeo osdados disponiacuteveis para a aplicaccedilatildeo e como tal quanto melhor forem definidas melhorqualidade a aplicaccedilatildeo teraacute no sentido em que os resultados seratildeo mais correctos e fiaacuteveis

4341 CriarAlterar uma regra

O processo de criaccedilatildeo de uma nova regra foi simplificado Jaacute natildeo eacute necessaacuterio conhecera sintaxe das regras e tambeacutem jaacute natildeo eacute necessaacuterio conhecer os factos a utilizar comopremissas

Para adicionar uma regra apenas temos que arrastar questotildees eou conclusotildees inter-meacutedias de forma a construir a regra que pretendemos inserir

No caso de estarmos a alterar uma regra ou no caso de termos adicionado uma questatildeoou conclusatildeo intermeacutedia incorrectamente podemos eliminar essa premissa simplesmenteseleccionando a ldquocheckboxrdquo respectiva e utilizar a opccedilatildeo ldquoRemover seleccionadosrdquo

74

43 BASE DE CONHECIMENTO

Figura 28 Introduzir uma nova regra

Apoacutes termos arrastado todas as questotildees eou conclusotildees intermeacutedias para a lista depremissas temos que indicar os respectivos valores Este processo estaacute simplificado nosentido em que apenas temos que utilizar a caixa de selecccedilatildeo agrave frente de cada controlo eseleccionar o respectivo valor

Os valores apresentados satildeo obtidos de forma diferente quer se trate de uma questatildeo oude uma conclusatildeo intermeacutedia No caso das questotildees os valores obtidos satildeo os indicadosaquando da sua inserccedilatildeo No caso das conclusotildees intermeacutedias satildeo obtidos todos os valoresutilizados nas regras ateacute ao momento Sempre que uma regra eacute inserida ou actualizadaeacute despoletado um processo que actualiza os valores das conclusotildees intermeacutedias com osnovos valores introduzidos

75

CAPIacuteTULO 4 WEXSYS

Figura 29 Apresentaccedilatildeo de valores configurados na questatildeo

4342 Questotildees

As questotildees acabam por ser o ponto de contacto da aplicaccedilatildeo com o utilizador Sempreque eacute necessaacuterio suspender o processamento para questionar o utilizador este teraacute ahipoacutetese de intervir na execuccedilatildeo Atraveacutes das questotildees colocadas vai ser possiacutevel inferiroutros factos que no final e numa situaccedilatildeo ideal conduzem a uma soluccedilatildeo possiacutevel

Uma questatildeo eacute identificada por um coacutedigo por uma descriccedilatildeo e ainda por um conjuntode valores possiacuteveis as respostas Quando inserimos uma nova regra podemos criar novasquestotildees utilizando a opccedilatildeo ldquoAdicionar uma questatildeordquo Surge entatildeo o formulaacuterio deintroduccedilatildeo de uma questatildeo como podemos ver na figura 30

Figura 30 Formulaacuterio de introduccedilatildeo de uma questatildeo

As respostas configuradas no formulaacuterio de introduccedilatildeo seratildeo as respostas que iratildeoaparecer quando inserirmos uma nova regra e arrastarmos a questatildeo para a lista depremissas

76

43 BASE DE CONHECIMENTO

4343 Verificaccedilatildeo

Apoacutes a introduccedilatildeo ou alteraccedilatildeo das regras deve ser realizado o processo de verificaccedilatildeoda base de conhecimento De uma forma quase imperceptiacutevel na fase de introduccedilatildeode regras estamos a activar este processo jaacute que eacute garantido que as regras introduzidasestatildeo coerentes e que os valores das premissas efectivamente existem Podemos dizerque estamos perante a primeira fase do processo de verificaccedilatildeo designado por verificaccedilatildeoproacute-activa

Para este trabalho foi considerado a verificaccedilatildeo de dois tipos de anomalia na base deregras redundacircncia e regras duplicadas A inclusatildeo de novos mecanismos de verificaccedilatildeoeacute possiacutevel bastando para isso a alteraccedilatildeo do predicado ldquoverification(L)rdquo

A grande diferenccedila entre os dois meacutetodos implementados eacute que uma regra redundanteadiciona conhecimento desnecessaacuterio agrave base de conhecimento enquanto que uma regraduplicada como o nome indica eacute apenas uma duplicaccedilatildeo do conhecimento

Na figura 31 podemos verificar o mecanismo de verificaccedilatildeo implementado que permiteidentificar que regra estaacute em conflito com que outra regra e qual o tipo de conflito

Figura 31 Verificaccedilatildeo da base de conhecimento

435 Gravaccedilatildeo da base de conhecimento

O processo de gravaccedilatildeo da base de conhecimento eacute similar ao processo de leitura com adiferenccedila de natildeo ser iterativo O processo de gravaccedilatildeo da base de conhecimento iniciacom a acccedilatildeo do utilizador na opccedilatildeo ldquoFinalizarrdquo que invoca o meacutetodo ldquosaveAll()rdquo doWexsysKBBean O resto do processo pode ser observado na figura 32

77

CAPIacuteTULO 4 WEXSYS

Figura 32 Processo de gravaccedilatildeo da base de conhecimento

436 Conversatildeo GISPSA

A conversatildeo da base de conhecimento do GISPSA para o formato wexsys foi efectuada emduas fases Na primeira fase foi feita uma migraccedilatildeo sintaacutectica da forma de representaccedilatildeode regras utilizada para a forma utilizada pelo wexsys Na segunda fase foi efectuadoum processo manual de conversatildeo

O sistema anterior delegava nas regras alguns predicados utilizados unicamente parao sistema de explicaccedilotildees Esta caracteriacutestica tornou a migraccedilatildeo algo morosa jaacute que eranecessaacuterio proceder agrave anaacutelise regra a regra de quais os predicados necessaacuterios e quais osdescartaacuteveis

78

44 ANAacuteLISE GRAacuteFICA

44 Anaacutelise graacutefica

Para aleacutem do motor de inferecircncia e da gestatildeo da base de conhecimento foi implemen-tado como prova de conceito um sistema graacutefico que permite observar facilmente arepresentaccedilatildeo de uma base de conhecimento sob a forma de um grafo

Este sistema permite visualizar e consultar a explosatildeo combinatoacuteria das regras edas premissas que as compotildeem Este tipo de ferramenta pode ser bastante uacutetil quandoutilizado nas tarefas de validaccedilatildeo por parte do perito Desta forma o perito consegue deuma forma visual e simples verificar o relacionamento entre as conclusotildees e as premissas

441 Implementaccedilatildeo

Esta funcionalidade foi implementada recorrendo agrave utilizaccedilatildeo de um controlo externodesignado por TGGraphLayout e desenvolvido por Alexander Shapiro (2010) O controlodisponibiliza uma applet que encapsula funcionalidades que permitem a interacccedilatildeo graacuteficacom a representaccedilatildeo de um grafo

Por se tratar de uma applet a comunicaccedilatildeo com os managed beans torna-se tecnica-mente mais difiacutecil de implementar Esse motivo levou agrave necessidade de criaccedilatildeo de umaservlet para simplificar o processo de interacccedilatildeo entre a aplicaccedilatildeo e a applet do controlovisual

A servlet WexsysServlet foi criada para dar suporte agrave comunicaccedilatildeo com o mana-

ged bean WexsysKBBean sendo este responsaacutevel pela obtenccedilatildeo dos dados no formatoreconhecido pelo controlo

O controlo teve que ser alterado de forma a permitir a interacccedilatildeo com a servlet bemcomo efectuar o tratamento dos dados no formato especificado ou seja criar uma espeacuteciede protocolo de comunicaccedilatildeo

O algoritmo 4 resume a implementaccedilatildeo efectuada ao niacutevel da applet e o algoritmo 5demonstra de que forma esses dados satildeo obtidos

442 Funcionamento

O grafo resultante eacute construiacutedo a partir de uma posiccedilatildeo inicial designada por ponto departida Eacute utilizada a designaccedilatildeo ldquordquo para simplificar a identificaccedilatildeo no grafo eeacute possiacutevel ver o resultado da paacutegina inicial na figura 33

As conclusotildees satildeo representadas por rectacircngulos com um fundo branco e as premissassatildeo identificadas por rectacircngulos com fundo azul

79

CAPIacuteTULO 4 WEXSYS

Algoritmo 4 Algoritmo responsaacutevel pelo desenho da appletinput graphPaths graphConclusionsbegin drawGraph

initializeNodes ()for path isin graphPaths do

init oldfor step isin path do

if nodes do not contain step thenbuildNode (step)

endif step is first then

oldlarr stepelse

addEdge (old step)oldlarr step

endend

endcreateStartNode ()linkUnlinkedNodesToStartNode ()

end

O ponto de partida liga-se entatildeo agraves regras que apenas contenham premissas quesejam questotildees construindo o grafo de possibilidades Apoacutes identificar as regras quesatildeo representadas com ligaccedilatildeo ao ponto de partida satildeo tratadas as restantes regrasconstruindo o resto do grafo agrave medida que as regras satildeo avaliadas

Eacute possiacutevel centrar o grafo numa premissa ou numa conclusatildeo Ao centrarmos ografo satildeo mantidos apenas os noacutes que se ligam directamente ao noacute que seleccionaacutemosNo entanto eacute possiacutevel expandir um noacute sem este tipo de comportamento bastando paraisso utilizar as funcionalidades disponiacuteveis ao pressionar a tecla direita do rato sobre o

Figura 33 Paacutegina inicial da anaacutelise graacutefica

80

44 ANAacuteLISE GRAacuteFICA

Algoritmo 5 Algoritmo para construccedilatildeo dos dados do grafooutput graphPaths and grapConclusionsbegin retrieveGraphPathAndConclusions

questionslarr gatherQuestionfor rule isin rules do

isFinalRulelarr conclusaoFinal igual RHS de ruleif isFinalRule then

add rule to grapConclusionssimpleRulelarr truegraphPathslarr nullfor premissa isin ruleLHS do

isConditionAskablelarr questions contains premissaif isConditionAskable then

add premissa and value to graphPathselse

simpleRulelarr falseretrieveGraphFromAtom (premissa)add result to graphPaths

endend

endend

end

respectivo noacute As funcionalidades disponiacuteveis satildeo expandir colapsar esconder e centrare satildeo auto-descritivas pelo que dispensam qualquer explicaccedilatildeo do seu funcionamento

Figura 34 Exemplo de grafo totalmente expandido

Eacute possiacutevel utilizar esta funcionalidade para identificarmos um cenaacuterio especiacuteficopor exemplo para consultar quais as premissas necessaacuterias para a obtenccedilatildeo de umadeterminada soluccedilatildeo

81

CAPIacuteTULO 4 WEXSYS

Figura 35 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto

443 Limitaccedilotildees

Esta funcionalidade no seu estado actual apresenta algumas limitaccedilotildees Conveacutem referirantes de mais que esta soluccedilatildeo natildeo eacute uma alternativa ao motor de inferecircncia mas sim umaferramenta de apoio visual auxiliar ao mesmo

Das limitaccedilotildees existentes salientam-se as seguintes

bull a utilizaccedilatildeo deste controlo obriga a que o utilizador esteja familiarizado com aspremissas e os seus valores Natildeo estatildeo disponiacuteveis os textos de apoio para aspremissas da mesma forma que satildeo mostrados no motor de inferecircncia Umapossiacutevel soluccedilatildeo passaria pela interacccedilatildeo da applet com a servlet para atraveacutes domecanismo de ajax push despoletar a actualizaccedilatildeo da JSP mostrando o texto doelemento seleccionado

bull o tamanho dos noacutes eacute grande quando comparado com o espaccedilo disponiacutevel nocontrolo o que por vezes obriga a algumas sobreposiccedilotildees dos noacutes tornado-oimperceptiacutevel Este problema pode ser observado na figura 34 Para atenuar esteproblema existem controlos que permitem modificar o factor de ampliaccedilatildeo rodar ocontrolo e controlar o grau de visualizaccedilatildeo hiperboacutelica

bull apoacutes a navegaccedilatildeo no grafo perde-se de alguma forma o contexto que o originouEste problema pode ser observado na figura 35

82

5Conclusotildees

Ateacute que ponto eacute que um software consegue efectivamente substituir um ser humanoquando estamos a falar de raciociacutenio Se esse raciociacutenio for estritamente linear seguindoum determinado percurso com alguns desvios ao longo do mesmo que acabam por ditarum desfecho diferente consoante as decisotildees que vatildeo sendo tomadas a substituiccedilatildeo podemesmo ser efectiva e ateacute mesmo melhor em alguns casos

Um perito natildeo eacute no entanto algueacutem que se limita a dizer sim ou natildeo ou algueacutem queapenas decide se eacute necessaacuterio seguir por este caminho ou aquele Um perito normalmenteobserva dados e factos e infere sobre os mesmos tendo a sensibilidade para em muitasocasiotildees conseguir ateacute mesmo obter a soluccedilatildeo final muito antes de terminar a anaacutelise detodos os paracircmetros A isso chama-se conhecimento heuriacutestico natildeo linear afectada poruma enormidade de factores que apenas eacute possiacutevel encontrar num ser humano

Estes factores podem ter tanto de beneacutefico como de nocivo Ao natildeo analisar atotalidade dos dados um perito poderaacute incorrer num erro ou mesmo tendo-os analisadoateacute ao fim poderaacute natildeo ter estado completamente atento ou compenetrado no que estavaa fazer pelo mero facto de poder estar cansado ou indisposto para executar tal tarefanaquele preciso momento

Um sistema pericial pode realmente ser uma mais valia no sentido em que estaacutetotalmente desprovido de emoccedilotildees e fadiga ao contraacuterio de um ser humano Paraaleacutem disto natildeo eacute necessaacuterio temer que o sistema pericial se desloque a uma qualquerlocalizaccedilatildeo remota e de difiacutecil acesso ou que chegue fora do horaacuterio previsto limitadopelos atrasos de uma simples viagem

Todos estes factos podem realmente ser considerados quando analisamos o funciona-mento do GISPSA Efectivamente trata-se de um sistema pericial estaacute sempre disponiacutevele totalmente desprovido de caracteriacutesticas humanas que poderiam eventualmente toldaro raciociacutenio do mesmo No entanto este sistema carecia de algo muito importante a

83

CAPIacuteTULO 5 CONCLUSOtildeES

acessibilidade a partir de qualquer local em qualquer hora e por parte de vaacuterios utilizado-res em simultacircneo de modo imediato e sem preacute-aviso Antes de mais o GISPSA eacute umaaplicaccedilatildeo de execuccedilatildeo local e natildeo foi de todo desenvolvida para funcionamento em redeComo tal o acesso agrave mesma estava agrave partida bastante limitado Depois cada instalaccedilatildeoapenas permitia a interacccedilatildeo com um utilizador de cada vez Existem ainda algumaslimitaccedilotildees identificadas no GISPSA que foram ultrapassadas com o desenvolvimento dowexsys tais como manutenccedilatildeo da base de conhecimento capacidade de raciocinar sobreconhecimento incerto e a implementaccedilatildeo de meacutetodos de verificaccedilatildeo

Hoje em dia eacute possiacutevel aceder a uma rede global (a internet) a partir de qualquer pontodo planeta e isto torna igualmente possiacutevel disponibilizar uma aplicaccedilatildeo de forma a quequalquer pessoa a consiga utilizar a qualquer hora e a partir de qualquer local O wexsysaplica essa transformaccedilatildeo ao GISPSA e leva-o ao proacuteximo patamar evolutivo

Como qualquer evoluccedilatildeo tambeacutem esta pretende natildeo soacute dotar a nova versatildeo comfuncionalidades que a anterior natildeo possuiacutea como tambeacutem pretende melhorar e corrigiros problemas que eventualmente foram encontrados Ao longo do tempo de utilizaccedilatildeodo GISPSA verificaram-se algumas coisas que podiam e deviam ser substituiacutedas Aleacutemdisto a proacutepria evoluccedilatildeo dos sistemas graacuteficos e de interacccedilatildeo colocaram o GISPSAcomo uma aplicaccedilatildeo de visual jaacute algo ultrapassado aspecto que tambeacutem carecia de umarevisatildeo para a realidade mais actual

A opccedilatildeo pela incorporaccedilatildeo do wexsys num portal teve a ver com as grandes capacida-des que este tipo de infra-estuturas tem hoje em dia Impulsionados por empresas comoa IBM os portais web representam janelas de negoacutecio com ligaccedilatildeo ao mundo e com aspotencialidades que daiacute advecircm Caracteriacutesticas como a facilidade de acesso sistemas debackup manutenccedilatildeo de tempos de uptime elevados rapidez de funcionamento facilidadede funcionamento e leitura entre muitas outras representam uma mais valia para estetipo de alojamento de aplicaccedilotildees

51 Contributos da soluccedilatildeo desenvolvida

O grande objectivo a que este trabalho se propunha foi alcanccedilado e consistia na criaccedilatildeode um sistema pericial baseado no GISPSA mas que pudesse ser acedido a partir deuma rede tornando-o global Os restantes objectivos foram igualmente alcanccedilados e oresultado final mostra-se soacutelido e fiaacutevel para candidato efectivo agrave substituiccedilatildeo do sistemaque lhe daacute a base No entanto existem outros pontos positivos na soluccedilatildeo encontradaquando comparada com outros sistemas periciais jaacute referidos nos capiacutetulos anteriores

84

51 CONTRIBUTOS DA SOLUCcedilAtildeO DESENVOLVIDA

Esses sistemas satildeo o LOMA o MDSS e o Whale watcherAo proceder a uma comparaccedilatildeo com estes sistemas a soluccedilatildeo desenvolvida neste

trabalho apresenta algumas vantagens Desde logo estamos a falar de aplicaccedilotildees web

com periacuteodos de desenvolvimento diferentes o que implica a utilizaccedilatildeo de tecnologiasdiferentes A vantagem da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo mais recentes dinacircmi-cas eficazes e visualmente mais apelativas coloca o wexsys num patamar efectivamentesuperior Para aleacutem disso o wexsys pode (como resultado da utilizaccedilatildeo dessas mesmastecnologias) ser facilmente integrado noutras aplicaccedilotildees como webservices ou portaisenquanto que os outros sistemas natildeo

Outra das particularidades dos sistemas estudados eacute que natildeo possuem (de acordocom as respectivas documentaccedilotildees) mecanismos de verificaccedilatildeo de regras e sempre queeacute necessaacuterio proceder a alteraccedilotildees a essas mesmas regras o utilizador teraacute que ter umconhecimento profundo acerca da sintaxe utilizada (gramaacutetica riacutegida) Para aleacutem distotambeacutem natildeo possuem (com excepccedilatildeo do MDSS) suporte a vaacuterias liacutenguas

Jaacute quanto agrave questatildeo da capacidade de funcionamento multi-utilizador apesar deestarmos a falar de aplicaccedilotildees web os sistemas estudados neste documento natildeo estatildeopreparados para cargas de processamento demasiado elevadas porque natildeo foi contempladaa possibilidade de um funcionamento distribuiacutedo o que permitiria aliviar a carga deprocessos e aumentar o nuacutemero maacuteximo de utilizadores

Para descrever mais em detalhe os objectivos alcanccedilados com a soluccedilatildeo propostapassamos a enunciaacute-los

bull Criaccedilatildeo de uma aplicaccedilatildeo web - Ao criar a nova aplicaccedilatildeo a questatildeo da distribuiccedilatildeodessa mesma aplicaccedilatildeo atraveacutes de uma rede era fulcral jaacute que permitiria uma seacuteriede factores que ateacute aqui natildeo estavam disponiacuteveis A possibilidade de utilizaccedilatildeo deuma base de conhecimento global onde todos os utilizadores pudessem contribuirpara o seu melhoramento facilidade de acesso a partir de qualquer localizaccedilatildeodisponibilidade a qualquer hora e dia capacidade de realizaccedilatildeo de backups paragarantir a continuidade dos dados e muacuteltiplos acessos simultacircneos foram questotildeesque ficaram resolvidas com a concretizaccedilatildeo deste objectivo

bull Verificaccedilatildeo das regras - Uma das lacunas do sistema base o GISPSA era a faltade capacidade para realizar a verificaccedilatildeo das regras que era colocadas na basede conhecimento Era possiacutevel chegar a cenaacuterios de inconsistecircncia atraveacutes dacontradiccedilatildeo de regras podendo chegar a cenaacuterios em que simplesmente natildeo erapossiacutevel prosseguir com a inferecircncia das regras nem tatildeo pouco chegar a umaconclusatildeo ou soluccedilatildeo possiacutevel

85

CAPIacuteTULO 5 CONCLUSOtildeES

Ao adicionar um mecanismo de verificaccedilatildeo de regras como o foi neste caso assisti-mos natildeo soacute ao cumprimento de mais um objectivo mas tambeacutem a uma evoluccedilatildeosignificativa do novo sistema pericial que com esta caracteriacutestica se torna maisfiaacutevel e eficaz

bull Manutenccedilatildeo da base de conhecimento - Neste novo sistema eacute mais simples procederagrave actualizaccedilatildeo da base de conhecimento quer para adicionar alterar ou removerfactos na mesma Jaacute natildeo eacute necessaacuterio ter formaccedilatildeo sobre a sintaxe necessaacuteria pararealizar estas operaccedilotildees deixando de lado a rigidez que era necessaacuteria aplicarno sistema base Isto permite alargar o leque de utilizaccedilatildeo do sistema a outrosutilizadores que na versatildeo anterior natildeo teriam oportunidade para o fazer

bull Melhor usabilidade - Uma das grandes transformaccedilotildees para quem conhecia osistema anterior e encontra a nova versatildeo passa pelo aspecto visual Quando umutilizador eacute confrontado com uma aplicaccedilatildeo aquilo com que se depara eacute a parte deinteracccedilatildeo responsaacutevel por mediar o diaacutelogo entre o utilizador e a aplicaccedilatildeo per si

Quando uma aplicaccedilatildeo qualquer que ela seja possui um visual pouco atraente eapelativo para o utilizador com bototildees e janelas pouco interessantes componentesmal colocados atalhos escondidos e de difiacutecil percepccedilatildeo ou ateacute mesmo comcores pouco agradaacuteveis o utilizador acaba por seja de forma gradual ou imediataabandonar a aplicaccedilatildeo e mostra pouco interesse em voltar a utilizaacute-la a natildeo ser queseja efectivamente obrigado a fazecirc-lo

Neste trabalho atraveacutes da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo web tais comoJavascript e Ajax e ainda atraveacutes da utilizaccedilatildeo do Icefaces foi possiacutevel chegar aum visual considerado por muitos utilizadores como interessante e actual o que vaiplenamente de encontro ao objectivo proposto para este ponto

bull Multi-utilizador - Uma das grandes criacuteticas do sistema base tinha efectivamente aver com o facto de natildeo ser possiacutevel colocar mais do que um utilizador a trabalharao mesmo tempo Para tal ser possiacutevel seria necessaacuterio proceder agrave instalaccedilatildeo dosistema noutro computador e consequentemente adquirir outra licenccedila comercialde utilizaccedilatildeo

Ao adicionar a capacidade de vaacuterios utilizadores poderem estar a trabalhar nosistema em simultacircneo este objectivo verifica-se como estando cumprido na to-talidade pois natildeo apenas isso jaacute eacute possiacutevel neste novo sistema pericial como acapacidade de processamento natildeo eacute afectada jaacute que eacute possiacutevel proceder agrave colocaccedilatildeo

86

52 LIMITACcedilOtildeES E TRABALHO FUTURO

da aplicaccedilatildeo num sistema de clustering em caso de deacutefices ou carga excessiva deprocessamento

bull Sistema de explicaccedilotildees - A soluccedilatildeo proposta conteacutem um sistema de explicaccedilotildees quepode ser utilizado para obter explicaccedilotildees a perguntas do tipo ldquocomordquo e ldquoporquecircrdquoEste ponto natildeo representa uma melhoria mas sim a manutenccedilatildeo de uma funcionali-dade que o GISPSA jaacute disponibilizava

bull Anaacutelise graacutefica - Este moacutedulo eacute uma nova abordagem agrave anaacutelise de uma base deconhecimento que natildeo eacute normalmente utilizado nos sistemas periciais conhecidos eque possibilita uma anaacutelise visual facilitadora do comportamento e funcionamentoda nova soluccedilatildeo

bull Suporte a vaacuterias liacutenguas - A soluccedilatildeo proposta permite de uma forma bastantesimples a implementaccedilatildeo de novas linguagens A parte da soluccedilatildeo que envolveo sistema pericial e a parte da aplicaccedilatildeo web estatildeo preparados para esta tipo desuporte contudo a base de conhecimento natildeo contempla este mecanismo e teriaque ser implementado

bull Arquitectura - O tipo de arquitectura da soluccedilatildeo proposta permite uma simplesintegraccedilatildeo com outros tipos de aplicaccedilatildeo web como por exemplo webservices ouportais Possibilita ainda como jaacute referido a separaccedilatildeo da aplicaccedilatildeo de uma formamodular permitindo uma distribuiccedilatildeo ao niacutevel do processamento

bull Migraccedilatildeo - No processo de migraccedilatildeo da base de conhecimento foram detectados ecorrigidos alguns problemas Regras inconsistentes regras repetidas e regras quenatildeo trazem novo conhecimento foram adaptadas e resolvidas evoluindo a novabase de conhecimento para uma entidade mais fiaacutevel e consistente

52 Limitaccedilotildees e trabalho futuro

Este trabalho representa um esforccedilo no sentido de apresentar uma versatildeo melhorada dosistema GISPSA e apesar de o conseguir em muitos aspectos e essencialmente em todosaqueles que foram inicialmente propostos ficam alguns aspectos que ainda poderatildeo serimplementados futuramente e que certamente contribuiratildeo para um sistema ainda melhor

Assim apresentam-se as limitaccedilotildees identificadas e as perspectivas de trabalho futuro

87

CAPIacuteTULO 5 CONCLUSOtildeES

bull Validaccedilatildeo de regras - Apesar de ser jaacute possiacutevel neste novo sistema pericial procederagrave verificaccedilatildeo de regras como mecanismo de prevenccedilatildeo de redundacircncias e contradi-ccedilotildees ainda natildeo eacute possiacutevel a validaccedilatildeo por parte de um perito dessas mesmas regrasa natildeo ser que essa validaccedilatildeo seja feita em modo ad hoc

Seria importante a criaccedilatildeo de um modo lsquosupervisorrsquo ou modo lsquoperitorsquo paraque a aplicaccedilatildeo pudesse adoptar uma postura natildeo soacute de linguagem adaptada aum utilizador com maior formaccedilatildeo na aacuterea (como seraacute o caso de perito) mastambeacutem pudesse assumir uma postura de simulaccedilatildeo em que seriam apresentadosnatildeo soacute os passos tomados como eventuais cenaacuterios em caso de respostas diferentesIsto permitiria a um perito confrontar o seu proacuteprio conhecimento com o sistemapericial realizando desta forma uma validaccedilatildeo do funcionamento do sistema e dabase de conhecimento

Para aleacutem disto sendo uma aplicaccedilatildeo web o modo lsquosupervisorrsquo ou modo lsquope-ritorsquo poderia ser acedido a partir de qualquer siacutetio e a qualquer hora Se o responsaacute-vel pela validaccedilatildeo da base de conhecimento (normalmente o perito que contribuiucom o conhecimento) natildeo estiver disponiacutevel para o fazer por motivos de ausecircnciaou incompatibilidade de horaacuterios poderaacute sempre realizar o acesso agrave aplicaccedilatildeoa partir de um outro local agrave hora que mais lhe aprouver sem qualquer tipo deprejuiacutezo quer para o perito quer para o proacuteprio sistema

bull Muacuteltiplas conclusotildees - Com o trabalho desenvolvido apenas eacute possiacutevel atraveacutesdo disparo de uma regra final chegar a uma uacutenica conclusatildeo Deveria ser possiacutevelchegar a muacuteltiplas conclusotildees pelo que natildeo tendo sido implementado nesta versatildeoconsidera-se como uma possibilidade de trabalho futuro

Aparentemente sem qualquer relaccedilatildeo a necessidade evidenciada no ponto anteriorde criar um modo lsquosupervisorrsquo ou modo lsquoperitorsquo poderaacute levar um futurodesenvolvimento no sentido de criar as muacuteltiplas conclusotildees aqui referidas jaacute queao permitir este modo de funcionamento tambeacutem deveraacute ser possiacutevel inferir sobrevaacuterios cenaacuterios possiacuteveis e respectivas conclusotildees

bull Negaccedilatildeo de premissas - Nesta versatildeo do trabalho apenas eacute possiacutevel criar regrassem negaccedilatildeo Por exemplo num cenaacuterio em que uma pergunta ao utilizador tem aforma

Qual a cor (Vermelho Azul Verde)

e as regras que satildeo candidatas a disparo forem

88

52 LIMITACcedilOtildeES E TRABALHO FUTURO

R1 - SE cor Vermelho R2 - SE cor Azul R3 SE cor Verde

entatildeo natildeo eacute possiacutevel caso seja necessaacuterio ter uma regra do tipo

Rx - SE cor NOT XXXXX

Isso apenas seria possiacutevel se a pergunta inicial fosse

Qual NAtildeO Eacute a cor (Vermelho Azul Verde)

para assim permitir regras do tipo

Rx - SE NAtildeO Eacute cor XXXXX

Assim sendo aponta-se como uma limitaccedilatildeo e eventual trabalho futuro a desenvol-ver para outras versotildees da aplicaccedilatildeo a criaccedilatildeo de um sistema que permita a negaccedilatildeode premissas para que o exemplo atraacutes indicado seja de possiacutevel implementaccedilatildeo

bull Contemplar factos iniciais nas regras - A versatildeo actual do sistema natildeo permite ainclusatildeo de factos inicias nas premissas das regras

bull Pesquisa de muacuteltiplas soluccedilotildees finais - Actualmente soacute eacute permitido executar omotor de inferecircncia com uma soluccedilatildeo final como objectivo Seria uma evidentemais valia a inclusatildeo da capacidade de pesquisa por muacuteltiplas soluccedilotildees

bull Metaconhecimento - ao ser adicionado metaconhecimento podemos aumentar odesempenho do motor de inferecircncia nos cenaacuterios em que temos bases de conheci-mento consideravelmente grandes

bull Regra mais relevante para iniciar o motor de inferecircncia - desenvolver um algoritmopara obter uma regra que tenha uma maior probabilidade de sucesso de forma aminimizar iteraccedilotildees desnecessaacuterias

bull Validaccedilatildeo automaacutetica - quando as questotildees satildeo apagadas deve ser realizada arespectiva verificaccedilatildeo de utilizaccedilatildeo dessas questotildees como condiccedilotildees de regras paraprevenir possiacuteveis inconsistecircncias

bull Suporte a vaacuterias liacutenguas - a base de conhecimento natildeo foi projectada para imple-mentar esta funcionalidade

89

Bibliografia

Acquired Intelligence (2010) Acquire httpwwwaiincca Junho de 201025

Alexander Shapiro (2010) Tggraphlayout httpsourceforgenet

projectstouchgraph Julho de 2010 49 79

Barnett J A (1991) Calculating dempster-shafer plausibility IEEE Transactions on

Pattern Analysis and Machine Intelligence 13 599ndash602 16

Boris van Schooten (2005) Yprolog httpwwwvfutwentenl

~schootenyprolog Junho de 2010 37

Carlos Figueira Filho (2010) JEOPS - Integraccedilatildeo entre Objetos e Regras de Produccedilatildeoem Java httpwwwcinufpebr~jeops Julho de 2010 36

CoAJRA J (1997) The basics of expert (knowledge based) systems 18

Dokas I M (2005) Developing web sites for web based expert systems A webengineering approach In In Proceedings of the Second International ICSC Symposium

on Information Technologies in Environmental Engineering (Magdeburg pages 202ndash217 Shaker Verlag 26

Drakopoulos J (1994) Probabilities possibilities and fuzzy sets Fuzzy Sets and

Systems 75 1ndash15 16

Elie Levy (2010) Zilonis httpwwwzilonisorgindexphp Junho de2010 37

Ernest Friedman-Hill (2010) Jess httpwwwjessrulescom Julho de 201025 36

EXSYS (2010) Exsys corvid httpwwwexsyscom Junho de 2010 24

Filho A R (2010) Mdss medical diagnosis support system LPA - Logic ProgrammingAssociates Ltd 30

Giarratano C J Riley and D G (1998) Expert Systems - Principles and Programming

Thirds Edition Principles and Programing Course Technology 3ed edition 6 18

91

BIBLIOGRAFIA

Hammurapi Group (2010) Hammurapi rules httpwwwhammurapicom

dokuwikidokuphp Junho de 2010 36

Heckerman D (1992) The certainty-factor model 16

IBM (2010) Jlog httpwww-01ibmcomsoftwarewebsphere

productsbusiness-rule-management Junho de 2010 36

Kozlenkov Alex and Paschke (2010) Prova rule language httpprovaws

indexhtml Junho de 2010 37

Logic Programming Associaties Ltd (2010) Lpa webflex httpwwwlpacouk Abril de 2010 24

Lucas P (2001) Certainty-factor-like structures in bayesian belief networks Knowledge-

Based Systems 14 327ndash335 16

Maarten Menken (2010) Jclips httpsourceforgenetprojects

jclips Julho de 2010 25 36

Mcarniel (2010) Jruleengine httpjruleenginesourceforgenet

indexhtml Junho de 2010 37

Merritt D (1989) Building expert systems in Prolog 6 56

Michael Giordano (2010) Webclips httpclipsinterfacesourceforgenetWebCLIPSwchomehtm 28 de Julho de 2003 24

OpenL (2010) Openl tablets httpopenl-tabletssourceforgenetJulho de 2010 37

OpenRules Inc (2010) Open rules engine httpopenrulescomindex

htm Julho de 2010 37

Pinto A (1998) GISPSA - GIS problem solver adviser 1 20

RedHat (2010) Drools httpwwwjbossorgdroolsdrools-experthtml Junho de 2010 36

Shortliffe E H and Buchanan B G (1990) A model of inexact reasoning in medicinepages 259ndash275 16

Wilson N (2000) Algorithms for dempster-shafer theory In Algorithms for Uncertainty

and Defeasible Reasoning pages 421ndash475 Kluwer Academic Publishers 16

92

Anexos

93

ACoacutedigo do motor de inferecircncia

Iniacutecio do motor de inferencia

init_inference- retractall(hist2) consult(rsquokbsyplrsquo)

top_goals(ControlObj MinCF) - top_goal(TopGoal) top(TopGoal ControlObj MinCF)

top(TopGoal ControlObj MinCF) - retractall(hist2) set(len 0)

getRuleMoreRelevant(TopGoal Rule) tryToProove(Rule ControlObj MinCF)

tryToProove(Rule ControlObj MinCF)- rule(Rule _ lhs(LHS) _)

proveListHyp(LHS ControlObj MinCF)get(len LEN)println(LEN)

LEN1 is LEN + 1assert(hist(LEN1Rule))println(LEN1)

set(len LEN1)

(

check if rule has return control object

(var(ControlObj)) -gt(

no control object found check if other rules needs to be fired

fireRules(ControlObj MinCF)

)(

control object found

true

)

)

proveListHyp([] ControlObj MinCF)

proveListHyp([H|T] ControlObj MinCF)-proveHyp(H ControlObj MinCF)

((var(ControlObj)) -gt (proveListHyp(T ControlObj MinCF))(true))

fact already known

proveHyp(H ControlObj MinCF)- H = ev(X Y) fact(X Y_ )

there is a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _)

not(fact(X _ _))question(X _ _ _)

not(not_question(X))ControlObj = ask(X)

95

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

there is a conclusion that can lead to a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _) rule(Rule _ lhs(LHS)

rhs(ev(X_) V))

tryToProove(Rule ControlObj MinCF)

ADD A FACT

av(Attr Value Confidence ControlObj MinCF) - retractall(hist2)set(len 0)

saveFact(Attr Value Confidence 1 CF_FINAL _)

fireRules(ControlObj MinCF)

nav(Attr)-assert(not_question(Attr))

fireRules(ControlObj MinCF)- rule(X _ lhs(LHS) rhs(ev(Y R) Conf))

not(inf_rules_fired(X_)) evaluate(LHS ConfLhs 1)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF)

get(len LEN) LEN1 is LEN + 1 assert(hist(LEN1Rule))

set(len LEN1)

(

(var(ControlObj)) -gt(

(top_goal(Y)) -gt (

ControlObj = answerFound(Y R ConfRet)

)(

true fireRules(ControlObj MinCF)

))(

true

)

)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF) -

calculateConfidence(ConfLhs Conf ConfRet)

ConfRet gt MinCF

saveFact(Y R ConfRet 2 CF_FINAL X)

assert(inf_rules_fired(X ConfRet))

evaluate([] [] 1)- true

evaluate([H|T] [FactConf|LConf] RetCode)-

H = ev(X Ans)fact(X Ans FactConf)

evaluate(T LConf RetCode)

calculateConfidence(ConfLhs RuleCF ResultCF)-min_in_list(ConfLhs MinLHSCF)

ResultCF is MinLHSCF RuleCF 100

min_in_list([Min]Min)

min_in_list([HK|T]M) - H lt= K min_in_list([H|T]M)

min_in_list([HK|T]M) - H gt K min_in_list([K|T]M)

1 - fornecido 2 - inferido

we have a fact saved with the same conclusion already

96

saveFact(Attr Value Confidence Mode CF_Final Rule)-

fact(Attr Value OldConfidence)

combine(OldConfidence Confidence CF_Final)

retract(fact(Attr Value OldConfidence))

retract(inf_sys_fact(Attr Value OldConfidence _))

assert(fact(Attr Value CF_Final))

assert(inf_sys_fact(Attr Value CF_Final Mode))

linkFactToRule(Rule Attr Value Mode)

we donrsquot have any fact saved

saveFact(Attr Value Confidence Mode Confidence Rule)-

assert(fact(Attr Value Confidence))

assert(inf_sys_fact(Attr Value Confidence Mode))

linkFactToRule(Rule Attr Value Mode)

linkFactToRule(___1)

linkFactToRule(RuleAttrValue2)-

inf_exp_how(Attr Value oldRules)

retract(inf_exp_how(Attr Value oldRules))

assert(inf_exp_how(Attr Value [Rule|oldRules]))

linkFactToRule(RuleAttrValue2)-

assert(inf_exp_how(Attr Value [Rule]))

println(rsquosaved line with information on explanation howrsquo) listing

combine(CF1 CF2 CF) - CF1 gt= 0 CF2 gt= 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CF is CF1 + Calc

combine(CF1 CF2 CF) - CF1 lt 0 CF2 lt 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CFAux is CF1 + Calc CF is 0-CFAux

combine(CF1 CF2 CF) - (CF1 lt 0 CF2 lt 0) (CF1 gt 0 CF2 gt 0)

SumCFs is CF1 + CF2 abs_minimum(CF1 CF2 MCF)

Rest is 100 - MCFCF is 100 SumCFs Rest

abs_minimum(ABX) - absolute(A AA) absolute(B BB)minimum(AABBX)

absolute(X X) -X gt= 0

absolute(X Y) -X lt 0Y is 0-X

minimum(XYX) -X lt= Y

minimum(XYY) -Y lt= X

Rule verification

verification(L)-retractall(validation_fired1)

retractall(verification_error4)set(nextid 0)

findall(IDverification_rule_1(ID _ _ _)L)

verification_rule_1(ID RuleInError RuleRelated Result)-

rule(A _ lhs(CA) RA)rule(B _ lhs(CB) RB)

not( B = A)not(validation_fired(B))

checkConditionsSimilar(CA CB FullMatch)

checkResultSimilar(FullMatch RA RB Result)

assert(validation_fired(B))

97

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

get(nextid CURR_ID)ID is CURR_ID + 1

set(nextid ID)

assert(verification_error(ID B A Result))

RuleInError = B RuleRelated = A

checkConditionsSimilar(CA CB FullMatch)-checkConditionsSimilar_1(CACB)

lent(CA X) lent(CB Y) testCheck(X Y FullMatch)

testCheck(X X 1)

testCheck(X Y 0)- not(X = Y)

checkConditionsSimilar_1([] L)

checkConditionsSimilar_1([H|R] L)- member(H L) checkConditionsSimilar_1(R L)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueB) CFB) 2)-

not(ValueA = ValueB)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueA) CFB) 2)

checkResultSimilar(0 rhs(ev(Atom Value) CFA) rhs(ev(Atom Value) CFB) 1)-

CFB lt= CFA

lent([] 0)

lent([_|R] SizeT)- lent(R Size)SizeT is Size + 1

Rule verification

retrieve_rules(L)-

findall(X rule(X _ __) L)

retrieve_questions(L)-

findall(X question(X ___) L)

Information predicates

inf_sys(L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)-

i_sys_rules(L_Rules)i_sys_inf_fact(L_Inf_Facts)

i_sys_know_fact(L_Know_Facts) i_sys_init_fact(L_Init_Facts)

i_sys_rules(L)-

findall(r(Rule Conf) inf_rules_fired(Rule Conf) L) member(C L)

i_sys_rules([])

i_sys_inf_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 2) L) member(C L)

i_sys_inf_fact([])

i_sys_know_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 1) L) member(C L)

i_sys_know_fact([])

98

i_sys_init_fact(L)-

findall(f(Attr Value Conf) condition_init(Attr Value Conf) L) member(C L)

i_sys_init_fact([])

condition_init(Attr Value Conf)-fact(Attr Value Conf)

not(inf_sys_fact(Attr _ _ _))

explanations

why(L)-findall(r(OX) hist(OX) L)

how(Attr Value Result)- inf_exp_how(Attr Value Rules)

explainHow(Rules Explanation)append(Rules Explanation Result)

explainHow([] [])

explainHow([H|T] Result)- innerExplain(H ExplanationH)

explainHow(T ExplanationRules) append(ExplanationH ExplanationRules Result)

innerExplain(Rule Explanation)- rule(Rule _ lhs(LHS) _)

explainLHS(LHS Explanation)

explainLHS([] [])

explainLHS([ev(Attr Value)|T] ExplanationA)-

not(inf_exp_how(Attr Value _))

fact(Attr Value _) print(rsquoinitial factrsquo)

explainLHS(T ExplanationA)

explainLHS([ev(Attr Value)|T] ResultA)-

how(Attr Value ExplanationA)

explainLHS(T Explanation)

append(ExplanationA Explanation ResultA)

append([] L L)

append(L [] L)

append([H|T] M [H|N])-append(L M N)

Map methods

buildValidationReport(Id RErr RRel ErrType)-

verification_error(Id RErr RRel ErrType)

buildQuestionObject(ask(X) X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

buildQuestionObject_by_code(X X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

99

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

buildSolutionObject(answerFound(Y R Found) Y R Found)

buildRuleObject(Rule Descr LHS RHS CF)-

rule(Rule Descr lhs(I_LHS) rhs(I_RHS CF))

lhs_flatten(I_LHS LHS)

rhs_flatten(I_RHS RHS)

flatten(L LO)- iflatten(L LO)

iflatten([] [])

iflatten([H|R] [AD|L])- H = answer(A D) iflatten(R L)

lhs_flatten(L LO)- ilhs_iflatten(L LO)

ilhs_iflatten([] [])

ilhs_iflatten([H|R] [[ADCB]|L])-H = ev(A D)question(A C LL _)

findMember(LLDB)ilhs_iflatten(R L)

ilhs_iflatten([H|R] [[ADAD]|L])-H = ev(A D)not(question(A _ _ _))

ilhs_iflatten(R L)

rhs_flatten(ev(AB) [AB])

findMember([] D D)-

findMember([H|T] D B)-H = answer(D B)

findMember([H|T] D B)-findMember(T D B)

attempt to Get more relevant rule

getRuleMoreRelevant(TopGoal Rule)-

rule(Rule_ _ rhs(ev(P V) X)) top_goal(P)

find the rules that contains a direct solution

findall(X rule(X lhs(LLHS) rhs(ev(TopGoal _)_)) LX)

debugLine(trc1rsquogtrsquo)debugList(LX)

For the main rules apply the algorithm

fillMainRules(LX LOUT)

bubble_sort(LOUT LREALLYOUT)

LREALLYOUT = [ score_table(Rule _ _ _) | _ ]

debugLine(trc1rsquogtrsquo)debugList(LREALLYOUT)

fillMainRules([] [])-

fillMainRules([HIN|RIN] [HOUT|LOUT])- calculateCurrentRule(HIN HOUT)

fillMainRules(RIN LOUT)

calculateCurrentRule(HIN HOUT)-rule(HIN _ lhs(LHS) rhs(_ Confidence))

calculateScoreBasedOnLHS(LHS 0 Score)

OrderIndice is Score Confidence

HOUT = score_table(HIN Score Confidence OrderIndice)

calculateScoreBasedOnLHS([] ScoreResult ScoreResult)-

100

calculateScoreBasedOnLHS([HLHS|RLHS] Score ScoreResult)-

calculateScoreBasedOnLHSCurrent(HLHS Score ScoreAfter)

calculateScoreBasedOnLHS(RLHS ScoreAfter ScoreResult)

calculateScoreBasedOnLHSCurrent(ev(X _) Score ScoreAfter)-

question(X _ _ _) not(fact(X _ _))

ScoreAfter is Score + 1

calculateScoreBasedOnLHSCurrent(ev(X _) Score Score)-

helper methods

bubble_sort(ListSorted)-b_sort(List[]Sorted)

b_sort([]AccAcc)

b_sort([H|T]AccSorted)-bubble(HTNTMax)b_sort(NT[Max|Acc]Sorted)

bubble(X[][]X)

bubble(X[Y|T][Y|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C lt= D bubble(XTNTMax)

bubble(X[Y|T][X|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C gt Dbubble(YTNTMax)

bubble_sort2(ListSorted)-b_sort2(List[]Sorted)

b_sort2([]AccAcc)

b_sort2([H|T]AccSorted)-bubble2(HTNTMax)b_sort2(NT[Max|Acc]Sorted)

bubble2(X[][]X)

bubble2(X[Y|T][Y|NT]Max)- X = r(D _) Y = r(C _) C lt= D bubble(XTNTMax)

bubble2(X[Y|T][X|NT]Max)- X = r(D _) Y = r(C _) C gt Dbubble(YTNTMax)

Allows to get a Bag of all the X that makes Goal evaluate to true

Bag can contain duplicated X

findall(XGoalBag) - post_it(XGoal) gather([]Bag)

Aux

post_it(XGoal) - call(Goal) asserta(data999(X)) fail

post_it(__)

gather(BBag) - data999(X) retract(data999(X)) gather([X|B]Bag)

gather(SS)

member(X[X|_])-

member(X[_|Y]) - member(XY)

101

BBase de conhecimento do protoacutetipo

question(turn_over rsquoO carro ligarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(lights_weak rsquoAs luzes estatildeo fracasrsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(radio_weak rsquoO raacutedio estaacute fracorsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(smell_gas rsquoCheira a gasolinarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(gas_gauge rsquoO que marca o ponteiro do depoacutesito da gasolinarsquo

[ answer(empty rsquoVaziorsquo) answer(high rsquoSuficientersquo) answer(low rsquoReservarsquo)]0)

rule(rule_1 rsquoRule 1rsquolhs([ev(turn_over no) ev(battery_bad yes)])

rhs(ev(problem battery) 100))

rule(rule_2 rsquoRule 2rsquolhs([ev(lights_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_3 rsquoRule 3rsquolhs([ev(radio_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_4 rsquoRule 4rsquolhs([ev(smell_gas yes) ev(turn_over yes)])

rhs(ev(problem flooded) 80))

rule(rule_5 rsquoRule 5rsquolhs([ev(turn_over yes) ev(gas_gauge empty)])

rhs(ev(problem out_of_gas) 90))

rule(rule_6 rsquoRule 6rsquolhs([ev(turn_over yes) ev(gas_gauge low)])

rhs(ev(problem out_of_gas) 30))

rule(rule_7 rsquoRule 7rsquolhs([ev(gas_gauge low)ev(turn_over yes)])

rhs(ev(problem out_of_gas) 30))

103

ANEXO B BASE DE CONHECIMENTO DO PROTOacuteTIPO

rule(rule_8 rsquoRule 8rsquo

lhs([ev(turn_over yes) ev(gas_gauge low) ev(smell_gas no)])

rhs(ev(problem out_of_gas) 30))

top_goal(problem)

104

CBase de conhecimento GISPSA

question(qs_tema_ger rsquoQual o tipo de Problemarsquo

[ answer(c_ger_map rsquoMapas Configuraacuteveisrsquo) answer(c_ger_inq rsquoInqueacuteritos e Listagensrsquo)

answer(c_ger_mov rsquoCGMOVIGrsquo) answer(c_ger_pla rsquoCGDCGERrsquo)

answer(c_ger_acm rsquoCGVACUMCGTACUMrsquo)]0)

question(qs_plareg rsquoA Conta tem regra de construcccedilatildeo associada rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipr rsquoExiste Conta Pai do Tipo R no Planorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaent rsquoConta aberta por entidadesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipa rsquoConta do Tipo Arsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plalim rsquoEntidade encontra-se nos limitesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaexis rsquoEntidade Existentersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plamix rsquoContas Valor entre Contas Movimentorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acumul rsquoQual o problema de acumuladosrsquo

[ answer(c_acm_avm rsquoCGVACUM ltgt CGMOVIGrsquo)

answer(c_acm_si rsquoSaldos Iniciaisrsquo)

answer(c_acm_cna rsquoContas Nao Acumulamrsquo)

answer(c_acm_avat rsquoCGVACUM ltgt CGTACUMrsquo)]0)

question(qs_incmov rsquoInconsistecircncias no CGMOVIGrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

105

ANEXO C BASE DE CONHECIMENTO GISPSA

question(qs_incpla rsquoInconsistecircncias no CGDCGERrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acmsia rsquoSaldos Iniciais Alteradosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movi rsquoQual o problema dos movimentosrsquo

[ answer(c_mov_lan rsquoLanccedilamentos nao balanceadosrsquo)

answer(c_mov_con rsquoProblema de Contasrsquo)

answer(c_mov_cgca rsquoMovimentos CG ltgt CArsquo)]0)

question(qs_movvdif rsquoValores CG gt CArsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlgca rsquoCC Ligados a Analiticarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlg100 rsquoTodas as Ligacoes a 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movm100 rsquoDiferencas Correspondem a CC com Mais de 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcna rsquoLancamento em Contas nao Existentesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movci rsquoLancamento em Contas Invalidasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcdf rsquoContas correctasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_inquer rsquoInqueacuterito ou listagemrsquo

[ answer(c_inq_bal rsquoBalancetersquo) answer(c_inq_dia rsquoExtractoDiariorsquo)]0)

question(qs_inqsal rsquoProblema de saldosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapa rsquoProblema dos mapasrsquo

[ answer(c_map_imp rsquoErro na Impressaorsquo) answer(c_map_cal rsquoErro no Calculorsquo)

answer(c_map_mic rsquoErro na Transferencia P Microrsquo)]0)

question(qs_mapcol0 rsquoA ultima linha calculada tem a coluna 0 configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapfunc

rsquoA ultima linha calculada apresenta colunas com funcoes invalidas ou sintaxe erradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin0 rsquoA Linha 000 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin9 rsquoA Linha 999 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

106

question(qs_map2alg rsquoTodos os Valores da Linha 999 tem 2 Algarismosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_map198 rsquoA Soma dos Valores da Linha 999 Ultrapassa 198rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapsys rsquoO Sistema Permite a Utilizacao de Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapuser rsquoO Utilizador Tem Acesso a Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapflr rsquoO Folder Existersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

rule(r_pla_1 r_pla_1lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plareg c_sim)])

rhs(ev(dominio d_pla_reg) 100)

)

rule(r_pla_2 r_pla_2lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plaent c_sim)])

rhs(ev(dominio d_pla_ent) 100)

)

rule(r_pla_3 r_pla_3lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plamix c_sim)])

rhs(ev(correccao cr_pla_mix) 100)

)

rule(r_pla_11 r_pla_11lhs([ev(dominio d_pla_reg) ev(qs_platipr c_nao)])

rhs(ev(correccao cr_pla_tipr) 100)

)

rule(r_pla_21 r_pla_21lhs([ev(dominio d_pla_ent) ev(qs_platipa c_nao)])

rhs(ev(correccao cr_pla_tipa) 100)

)

rule(r_pla_22 r_pla_22lhs([ev(dominio d_pla_ent) ev(qs_plalim c_nao)])

rhs(ev(correccao cr_pla_lim) 100)

)

rule(r_pla_23 r_pla_23lhs([ev(dominio d_pla_ent) ev(qs_plaexis c_nao)])

rhs(ev(correccao cr_pla_exis) 100)

)

rule(r_acm_1 r_acm_1

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_2 r_acm_2

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_3 r_acm_3

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_4 r_acm_4

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_5 r_acm_5

107

ANEXO C BASE DE CONHECIMENTO GISPSA

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_6 r_acm_6

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_7 r_acm_7

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_si) ev(qs_acmsia c_nao)])

rhs(ev(correccao cr_acm_si) 100)

)

rule(r_mov_1 r_mov_1lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_lan)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_2 r_mov_2lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_cgca)])

rhs(ev(dominio d_mov_cgca) 100)

)

rule(r_mov_21 r_mov_21lhs([ev(dominio d_mov_cgca) ev(qs_movvdif c_sim)])

rhs(ev(subdominio d_mov_cgca_1) 100)

)

rule(r_mov_22 r_mov_22lhs([ev(dominio d_mov_cgca) ev(qs_movm100 c_sim)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_23 r_mov_23lhs([ev(dominio d_mov_cgca)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_3 r_mov_3lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_con)])

rhs(ev(dominio d_mov_con) 100)

)

rule(r_mov_31 r_mov_31lhs([ev(dominio d_mov_con) ev(qs_movcna c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_32 r_mov_32lhs([ev(dominio d_mov_con) ev(qs_movci c_nao)])

rhs(ev(correccao cr_mov_inc_soft) 100)

)

rule(r_mov_33 r_mov_33lhs([ev(dominio d_mov_con) ev(qs_movcdf c_nao)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_34 r_mov_34lhs([ev(dominio d_mov_con)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_211 r_mov_211lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlgca c_nao)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_212 r_mov_212lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlg100 c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_213 r_mov_213lhs([ev(subdominio d_mov_cgca_1)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_inq_1 r_inq_1lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inquer c_inq_bal)])

rhs(ev(correccao cr_inq_bal) 100)

)

rule(r_inq_2 r_inq_2lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inqsal c_sim)])

108

rhs(ev(correccao cr_inq_dia) 100)

)

rule(r_map_1 r_map_1lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_cal)])

rhs(ev(dominio d_map_cal) 100)

)

rule(r_map_2 r_map_2lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_imp)])

rhs(ev(dominio d_map_imp) 100)

)

rule(r_map_3 r_map_3lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_mic)])

rhs(ev(dominio d_map_mic) 100)

)

rule(r_map_11 r_map_11lhs([ev(dominio d_map_cal) ev(qs_mapcol0 c_sim)])

rhs(ev(correccao cr_map_cal_col0) 100)

)

rule(r_map_12 r_map_12lhs([ev(dominio d_map_cal) ev(qs_mapfunc c_sim)])

rhs(ev(correccao cr_map_cal_func) 100)

)

rule(r_map_13 r_map_13lhs([ev(dominio d_map_cal)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_21 r_map_21lhs([ev(dominio d_map_imp) ev(qs_maplin0 c_nao)])

rhs(ev(correccao cr_map_imp_lin0) 100)

)

rule(r_map_22 r_map_22lhs([ev(dominio d_map_imp) ev(qs_maplin9 c_nao)])

rhs(ev(correccao cr_map_imp_lin9) 100)

)

rule(r_map_23 r_map_23lhs([ev(dominio d_map_imp) ev(qs_map2alg c_nao)])

rhs(ev(correccao cr_map_imp_2alg) 100)

)

rule(r_map_24 r_map_24lhs([ev(dominio d_map_imp) ev(qs_map198 c_nao)])

rhs(ev(correccao cr_map_imp_198) 100)

)

rule(r_map_25 r_map_25lhs([ev(dominio d_map_imp)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_31 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapsys c_nao)])

rhs(ev(correccao cr_map_sys) 100)

)

rule(r_map_32 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapuser c_nao)])

rhs(ev(correccao cr_map_user) 100)

)

rule(r_map_33 r_map_33lhs([ev(dominio d_map_mic) ev(qs_mapflr c_nao)])

rhs(ev(correccao cr_map_mic_flr) 100)

)

rule(r_map_34 r_map_34lhs([ev(dominio d_map_mic)])

rhs(ev(correccao cr_map_soft) 100)

)

top_goal(correccao)

109

  • Lista de Figuras
  • Lista de Tabelas
  • Lista de Coacutedigo
  • Lista de Algoritmos
  • Lista de Acroacutenimos
  • Introduccedilatildeo
    • Enquadramento
    • Objectivos
    • Planeamento
    • Estruturaccedilatildeo da dissertaccedilatildeo
      • Estado da arte
        • Sistemas periciais
          • Arquitectura
          • Base de conhecimento
            • Regras
            • Frames
            • Redes semacircnticas
            • Mecanismos de inferecircncia
            • Manutenccedilatildeo de uma base de conhecimento
              • Raciociacutenio sobre incerteza
                • Factores de certeza
                  • Vantagens e desvantagens
                    • GISPSA - GIS Problem Solver Advisor
                      • Arquitectura
                      • Funcionamento
                      • Limitaccedilotildees
                        • Web Expert Systems
                          • Casos de estudo
                            • LOMA - Landfill Operation Management Advisor
                            • MDSS - Medical Diagnosis Support System
                            • Whale watcher
                              • Ferramentas utilizadas
                                • Ambiente de desenvolvimento
                                • Motor de inferecircncia
                                  • Fase I - Recolha de candidatos
                                  • Fase II - Requisitos base
                                  • Fase III - Viabilidade econoacutemica
                                  • Fase IV - Viabilidade teacutecnica
                                  • Fase V - Prova de conceito
                                  • Conclusatildeo e fundamentaccedilatildeo da escolha
                                      • Wexsys
                                        • Arquitectura global
                                          • Moacutedulo pWexsysEAR
                                          • Moacutedulo WexsysEAR
                                          • Interligaccedilatildeo e integraccedilatildeo dos moacutedulos
                                            • Camada de acesso puacuteblico
                                            • Camada de acesso protegido
                                            • Camada de acesso privado
                                            • Fluxo de invocaccedilatildeo
                                              • Portal
                                                • Templates
                                                  • Suporte multi-liacutengua
                                                    • Motor de inferecircncia
                                                      • Multi-utilizador
                                                      • Base de conhecimento inicial
                                                      • Protoacutetipo do motor de inferecircncia
                                                        • Formato das regras
                                                        • Formato das questotildees
                                                        • Interacccedilatildeo assiacutencrona de questotildees e respostas
                                                        • Estrutura da base de conhecimento
                                                        • Algoritmos a utilizar
                                                          • Resultado final
                                                            • Arranque da execuccedilatildeo
                                                            • Mecanismo de respostas
                                                            • Conclusatildeo final encontrada
                                                            • Explicaccedilotildees
                                                                • Base de conhecimento
                                                                  • Leitura da base de conhecimento
                                                                  • Conclusatildeo final a encontrar
                                                                  • Factos iniciais
                                                                  • Regras
                                                                    • CriarAlterar uma regra
                                                                    • Questotildees
                                                                    • Verificaccedilatildeo
                                                                      • Gravaccedilatildeo da base de conhecimento
                                                                      • Conversatildeo GISPSA
                                                                        • Anaacutelise graacutefica
                                                                          • Implementaccedilatildeo
                                                                          • Funcionamento
                                                                          • Limitaccedilotildees
                                                                              • Conclusotildees
                                                                                • Contributos da soluccedilatildeo desenvolvida
                                                                                • Limitaccedilotildees e trabalho futuro
                                                                                  • Bibliografia
                                                                                  • Anexos
                                                                                  • Coacutedigo do motor de inferecircncia
                                                                                  • Base de conhecimento do protoacutetipo
                                                                                  • Base de conhecimento GISPSA
Page 3: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System

Agradecimentos

Gostaria de agradecer a todas as pessoas que directa ou indirectamente ajudaram narealizaccedilatildeo deste trabalho

Comeccedilo por agradecer ao meu orientador Dr Luiz Faria pela disponibilidade quesempre demonstrou e pelas vaacuterias conversas construtivas que tivemos

Agrave Dra Faacutetima Rodrigues pela compreensatildeo demonstradaAo meu antigo colega e chefe de sector Antoacutenio Pinto pela cedecircncia do trabalho que

deu origem a esta dissertaccedilatildeoAo meu colega de curso Antoacutenio Mota pelo companheirismo pela amizade e em

especial por todo o apoioAos meus amigos em especial ao pessoal dos Kruppa pela amizade e pelo incentivo

que sempre me deramAgrave minha famiacutelia pela compreensatildeo e pela forccedila sempre demonstradasPor fim quero agradecer a uma pessoa muito especial agrave Clara pela compreensatildeo

incentivo e carinho nos momentos mais importantes

v

Resumo

Desde o iniacutecio que os sistemas periciais natildeo foram vistos apenas como sistemas quepoderiam substituir os peritos Os peritos por sua vez independentemente da aacuterea em queoperam eram tidos como indiviacuteduos que atingiram a excelecircncia atraveacutes da experiecircnciaestudo e total dedicaccedilatildeo por vezes durante anos

Hoje mais do que assumir o papel de um perito na excelecircncia de uma aacuterea de actuaccedilatildeoos sistemas periciais sobressaem pela disponibilidade contiacutenua acessos facilitados custosreduzidos estabilidade de funcionamento e coerecircncia de raciociacutenio Empurrados pelosavanccedilos actuais das redes em termos de velocidade e propagaccedilatildeo global estes sistemassatildeo hoje disponibilizados de forma mais simples e acessiacutevel

Este trabalho eacute realizado com o propoacutesito de evoluir o actual sistema para umaversatildeo mais apelativa funcional e fiaacutevel Um dos objectivos passa pela evoluccedilatildeo doactual modo de funcionamento utilizaccedilatildeo local e apenas um utilizador para um modode funcionamento que permita uma disponibilizaccedilatildeo num ambiente de acesso globalacessiacutevel a qualquer hora e em qualquer local

Palavras-chave GISPSA sistema pericial manutenccedilatildeo base de conhecimento anaacute-lise graacutefica de base de conhecimento

vii

Abstract

From the begining that the expert systems were not treated solely as systems intendedto replace experts Experts in turn regardless of their operating area were seen asindividuals that achieved excellence through experience study and total dedicationsometimes over many years

Today more than just assuming the part of an expert in a given area expert systemsstand for their continuous availability easy access reduced costs operating stability andconsistency of reasoning Pushed by todays advances in networks regarding speed andglobal spread these systems are now available in a more simple and accessible way

This work is carried out in order to evolve the current system to a more appealingfunctional and reliable One of the objectives is the evolution of the current mode ofoperation local and single user to a mode globally accessible regardless the time or theplace where its intervention is necessary

Keywords GISPSA expert system knowledge base maintenance knowledge basegraphical analysis

ix

Conteuacutedo

Lista de Figuras xv

Lista de Tabelas xvii

Lista de Coacutedigo xix

Lista de Algoritmos xxi

Lista de Acroacutenimos xxiii

1 Introduccedilatildeo 111 Enquadramento 2

12 Objectivos 2

13 Planeamento 3

14 Estruturaccedilatildeo da dissertaccedilatildeo 3

2 Estado da arte 521 Sistemas periciais 5

211 Arquitectura 7

212 Base de conhecimento 9

2121 Regras 10

2122 Frames 12

2123 Redes semacircnticas 13

2124 Mecanismos de inferecircncia 14

2125 Manutenccedilatildeo de uma base de conhecimento 15

213 Raciociacutenio sobre incerteza 16

2131 Factores de certeza 16

214 Vantagens e desvantagens 17

22 GISPSA - GIS Problem Solver Advisor 20

221 Arquitectura 20

222 Funcionamento 21

223 Limitaccedilotildees 22

23 Web Expert Systems 23

231 Casos de estudo 25

2311 LOMA - Landfill Operation Management Advisor 26

xi

2312 MDSS - Medical Diagnosis Support System 30

2313 Whale watcher 31

3 Ferramentas utilizadas 3331 Ambiente de desenvolvimento 33

32 Motor de inferecircncia 35

321 Fase I - Recolha de candidatos 35

322 Fase II - Requisitos base 37

323 Fase III - Viabilidade econoacutemica 38

324 Fase IV - Viabilidade teacutecnica 38

325 Fase V - Prova de conceito 39

326 Conclusatildeo e fundamentaccedilatildeo da escolha 40

4 Wexsys 4341 Arquitectura global 43

411 Moacutedulo pWexsysEAR 44

412 Moacutedulo WexsysEAR 45

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos 46

4131 Camada de acesso puacuteblico 46

4132 Camada de acesso protegido 48

4133 Camada de acesso privado 48

4134 Fluxo de invocaccedilatildeo 49

414 Portal 50

4141 Templates 51

415 Suporte multi-liacutengua 53

42 Motor de inferecircncia 54

421 Multi-utilizador 54

422 Base de conhecimento inicial 55

423 Protoacutetipo do motor de inferecircncia 56

4231 Formato das regras 56

4232 Formato das questotildees 57

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas 57

4234 Estrutura da base de conhecimento 58

4235 Algoritmos a utilizar 60

424 Resultado final 62

4241 Arranque da execuccedilatildeo 62

xii

4242 Mecanismo de respostas 654243 Conclusatildeo final encontrada 674244 Explicaccedilotildees 67

43 Base de conhecimento 71431 Leitura da base de conhecimento 72432 Conclusatildeo final a encontrar 73433 Factos iniciais 74434 Regras 74

4341 CriarAlterar uma regra 744342 Questotildees 764343 Verificaccedilatildeo 77

435 Gravaccedilatildeo da base de conhecimento 77436 Conversatildeo GISPSA 78

44 Anaacutelise graacutefica 79441 Implementaccedilatildeo 79442 Funcionamento 79443 Limitaccedilotildees 82

5 Conclusotildees 8351 Contributos da soluccedilatildeo desenvolvida 8452 Limitaccedilotildees e trabalho futuro 87

Bibliografia 92

Anexos 93

A Coacutedigo do motor de inferecircncia 95

B Base de conhecimento do protoacutetipo 103

C Base de conhecimento GISPSA 105

xiii

Lista de Figuras

1 Arquitectura de um sistema pericial 82 GISPSA menu inicial 213 GISPSA interacccedilatildeo inicial 224 GISPSA exemplo de interacccedilatildeo pergunta-resposta 225 Arquitectura do LOMA 276 Paacutegina inicial do sistema pericial LOMA 287 Sub-moacutedulo extra 288 Sugestatildeo de problemas do sub-moacutedulo extra 299 Sub-moacutedulo especializado 2910 Paacutegina principal do sistema pericial Whale Watcher 3111 Paacutegina final do sistema pericial Whale Watcher 31

12 Arquitectura da soluccedilatildeo 4413 Arquitectura do moacutedulo visual 4414 Arquitectura do moacutedulo de negoacutecio 4515 Wexsys - Integraccedilatildeo dos componentes 4616 Diagrama de classes principais 4917 Diagrama de sequecircncia do fluxo de invocaccedilatildeo 5018 Wexsys - Paacutegina inicial 5119 Paacutegina inicial do motor de inferecircncia 6220 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia 6321 Fluxo de invocaccedilatildeo de resposta a uma questatildeo 6622 Conclusatildeo da inferecircncia 6723 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo 6824 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia 6925 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final 6926 Paacutegina inicial da gestatildeo da base de conhecimento 7227 Processo de carregamento das regras 7328 Introduzir uma nova regra 7529 Apresentaccedilatildeo de valores configurados na questatildeo 7630 Formulaacuterio de introduccedilatildeo de uma questatildeo 7631 Verificaccedilatildeo da base de conhecimento 7732 Processo de gravaccedilatildeo da base de conhecimento 7833 Paacutegina inicial da anaacutelise graacutefica 80

xv

34 Exemplo de grafo totalmente expandido 8135 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto 82

xvi

Lista de Tabelas

1 Listagem de produtos da Fase I 362 Listagem de produtos excluiacutedos na Fase II 383 Listagem de produtos excluiacutedos na Fase III 384 Listagem de produtos excluiacutedos na Fase IV 395 JClips - Vantagens e desvantagens 396 Prova - Vantagens e desvantagens 407 YProlog - Vantagens e desvantagens 40

xvii

Lista de Coacutedigo

1 Excerto da classe RuleView 472 Excerto da classe Rule 473 Coacutedigo do template principal do portal 514 Coacutedigo da paacutegina inicial do portal 535 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo 546 Representaccedilatildeo da base de conhecimento do protoacutetipo 587 Predicados principais do motor de inferecircncia 638 Predicados principais do sistema de explicaccedilotildees 70

xix

Lista de Algoritmos

1 Algoritmo principal do motor de inferecircncia 602 Verifica se uma premissa eacute verdadeira 613 Dispara as regras que possam ser disparadas 614 Algoritmo responsaacutevel pelo desenho da applet 805 Algoritmo para construccedilatildeo dos dados do grafo 81

xxi

Lista de Acroacutenimos

AI Artificial Intelligence ou Inteligecircncia Artificial

BRMS Business Rule Management System

CF Certainty Factors ou Factores de Certeza

CLIPS C Language Integrated Production System

DTO Data Transfer Object

ES Expert System

GIS Gestatildeo Integrada de Seguros

GISPSA GIS Problem Solver Advisor

IDE Integrated Development Environment

JEOPS Java Embedded Object Production System

JSF JavaServer Faces

LHS Left-Handed Side

LOMA Landfill Operation Management Advisor

MDSS Medical Diagnosis Support System

ODBC Open Data Base Connectivity

OO Object Oriented

RHS Right-Handed Side

SP Sistema Pericial

SDK Software Development Kit

xxiii

1Introduccedilatildeo

Este trabalho eacute desenvolvido no acircmbito do Mestrado em Engenharia Informaacutetica ramode Tecnologias do Conhecimento e Decisatildeo e teve a sua origem a partir de um sistemadoravante designado por sistema base desenvolvido por Pinto Este sistema base foidesenvolvido durante a realizaccedilatildeo de um trabalho acadeacutemico (Pinto (1998)) cujo principalobjectivo era a construccedilatildeo de um sistema pericial

Na altura da sua criaccedilatildeo o sistema base apenas estava preparado para uma utilizaccedilatildeodo tipo mono-posto Ficava assim estabelecida a condiccedilatildeo de apenas um utilizador decada vez ter acesso ao sistema base Natildeo era exigiacutevel nem sequer necessaacuterio que outrocenaacuterio fosse equacionado dado tratar-se de um trabalho acadeacutemico O sistema ficoudesta forma limitado

Assim somos remetidos a um dos objectivos iniciais que levaram ao desenvolvimentodo trabalho que agora aqui se apresenta Proceder agrave evoluccedilatildeo do sistema base garantindoque o mesmo possa ser acedido por muacuteltiplos utilizadores de forma simultacircnea e a suadisponibilizaccedilatildeo num ambiente de acesso global mediante a utilizaccedilatildeo de redes sendoque a preferecircncia recai sobre a rede mais global que existe a internet Referindo-nos aeste tipo de disponibilizaccedilatildeo com todas as vantagens que lhe estatildeo afectas o proacuteximopasso loacutegico seria a integraccedilatildeo do novo sistema num portal

Eacute tambeacutem um objectivo inicial proceder agrave alteraccedilatildeo da actual forma de manutenccedilatildeo doconhecimento Pretende-se desenvolver um mecanismo de manutenccedilatildeo de conhecimentoque simplifique a interacccedilatildeo com o utilizador

Por uacuteltimo os objectivos deste trabalho passam igualmente pelo melhoramento dosistema base tentando eliminar alguns erros que foram detectados ao longo do tempo eacrescentando algumas caracteriacutesticas que entretanto surgiram e que foram consideradasnecessaacuterias

1

CAPIacuteTULO 1 INTRODUCcedilAtildeO

11 Enquadramento

O sistema a desenvolver embora tenha como ponto de partida um sistema base criado parautilizaccedilatildeo mono-posto faraacute parte de um portal onde seraacute integrado como uma ferramentade apoio na resoluccedilatildeo de problemas operacionais

Para aleacutem de actualmente fazer muito mais sentido a disponibilizaccedilatildeo do sistemanum ambiente de acesso globalizado e com a possibilidade de vaacuterios utilizadores emsimultacircneo a grande vantagem reside no facto de poder utilizar a mesma base de conhe-cimento que alimenta o sistema pericial independentemente do local onde se realizem osacessos Fica assim garantida a uniformidade a fiabilidade e a estabilidade do sistema

Por uacuteltimo a globalizaccedilatildeo do sistema garante igualmente que sempre que este eacuteutilizado natildeo para consulta ou apoio na resoluccedilatildeo de problemas mas para acrescentarnovos factos e dados agrave base de conhecimento estes estejam imediatamente disponiacuteveispara novas consultas ou para resoluccedilotildees de problemas de forma mais eficaz

12 Objectivos

O objectivo principal deste trabalho passa pela integraccedilatildeo do GIS Problem SolverAdvisor (GISPSA) (sistema base) num portal Aleacutem deste outros objectivos podemser considerados como de eventual ou relevante importacircncia podendo ser caracterizadosda seguinte forma

bull Objectivos globais

ndash Desenvolvimento de um sistema pericial rArr Pretende-se desenvolver umcandidato agrave substituiccedilatildeo do GISPSA

ndash Manutenccedilatildeo da base de conhecimento rArr Gerir a base de conhecimentorelativamente agrave inserccedilatildeo e actualizaccedilatildeo de regras de conhecimento bem comoimplementaccedilatildeo de mecanismos de verificaccedilatildeo das regras

bull Objectivos especiacuteficos

ndash Adaptar o motor de inferecircncia existente ou desenvolver novorArr Desenvolvi-mento de um motor de inferecircncia que se enquadre com os objectivos definidos

ndash Alterar o mecanismo de interacccedilatildeo do utilizador com a base de conheci-mentorArr Facilitar a manipulaccedilatildeo da base de conhecimento de forma a evitarproblemas na alteraccedilatildeo da base de conhecimento

2

13 PLANEAMENTO

ndash Verificar e detectar inconsistecircncias na base de conhecimentorArr Implementarmecanismos de verificaccedilatildeo das regras existentes para minimizar problemas

13 Planeamento

O planeamento deste trabalho foi estruturado em quatro fases A composiccedilatildeo dessas faseseacute a seguinte

1 Requisitos

bull Levantamento de requisitos

bull Estado da arte

bull Ferramentas existentes

2 Protoacutetipo

bull Protoacutetipo do motor de inferecircncia

bull Implementaccedilatildeo do gestor da base de conhecimento

3 Verificaccedilatildeo

bull Implementaccedilatildeo de meacutetodos de verificaccedilatildeo e detecccedilatildeo de inconsistecircncias

4 Elaboraccedilatildeo da dissertaccedilatildeo

bull Redacccedilatildeo final da dissertaccedilatildeo

14 Estruturaccedilatildeo da dissertaccedilatildeo

Nesta secccedilatildeo eacute apresentada a estrutura da dissertaccedilatildeo composta por cinco capiacutetulosNo primeiro capiacutetulo ldquoIntroduccedilatildeordquo eacute apresentado o problema actual quais os objec-

tivos a alcanccedilar e qual o planeamento para a prossecuccedilatildeo desses objectivosNo segundo capiacutetulo ldquoEstado da Arterdquo eacute apresentado a soluccedilatildeo GISPSA e tambeacutem o

estado da arte na aacuterea dos sistemas periciaisNo terceiro capiacutetulo ldquoFerramentas utilizadasrdquo eacute apresentado o estudo efectuado sobre

as ferramentas utilizadas e quais as conclusotildees do mesmoNo quarto capiacutetulo ldquoWexsysrdquo eacute descrita a soluccedilatildeo proposta e implementadaNo quinto e uacuteltimo capiacutetulo ldquoConclusotildeesrdquo satildeo apresentadas as conclusotildees finais bem

como os objectivos alcanccedilados e as actuais limitaccedilotildees

3

2Estado da arte

Num estado da arte pretende-se essencialmente fazer o enquadramento do estaacutegio deevoluccedilatildeo e eventuais casos de estudo relacionados com as tecnologias sistemas oupropostas que satildeo utilizadas ou apresentadas ao longo de um trabalho

Para o nosso caso em concreto vamos focalizar esse enquadramento sobre os sistemaspericiais no seu sentido mais abstracto e ainda sobre o sistema base jaacute indicado oGISPSA Apesar de o sistema base ser por si soacute um sistema pericial e como tal poderser apresentado como um caso de estudo inserido nos sistemas periciais generalizados ofacto de servir como ponto de partida para este trabalho em concreto confere-lhe umaimportacircncia muito superior sendo quase obrigatoacuteria a reserva de uma secccedilatildeo proacutepria parao mesmo

21 Sistemas periciais

Os sistemas periciais pertencem a um dos ramos da Artificial Intelligence ou InteligecircnciaArtificial (AI) e surgiram a partir da necessidade que alguns investigadores sentiram emcriar um software que demonstrasse raciociacutenio e comportamento inteligente durante aresoluccedilatildeo de problemas

Um Sistema Pericial (SP) tambeacutem conhecido como Expert System (ES) caracteriza-se como sendo um programa que permite a consulta e utilizaccedilatildeo de conhecimento extraiacutedode um ou mais peritos em determinada aacuterea Esse conhecimento estaacute normalmenteguardado naquilo que eacute mais habitualmente designado por base de conhecimento e agrave qualo programa tem o devido acesso

Na criaccedilatildeo de um SP o ideal seraacute sempre consultar os melhores peritos dentro daaacuterea pretendida e ainda que estes estejam disponiacuteveis para partilhar e disponibilizar oseu conhecimento Tal seria efectivamente a situaccedilatildeo ideal mas que nem sempre se

5

CAPIacuteTULO 2 ESTADO DA ARTE

aproxima da realidade Aliaacutes o verdadeiro sucesso de um sistema pericial reside naqualidade da sua base de conhecimento

Antes de mais devemos considerar que algueacutem que eacute perito em algo certamente oseraacute por uma seacuterie de factores conjugados Experiecircncia adquirida ao longo de vaacuteriosanos formaccedilatildeo especiacutefica dedicaccedilatildeo e estudo profundo seratildeo alguns desses factoresSempre que um indiviacuteduo se encontra numa posiccedilatildeo de excelecircncia em que eacute consideradoum verdadeiro perito encontra-se tambeacutem numa posiccedilatildeo em que lhe eacute bastante difiacutecilencontrar o tempo necessaacuterio para se submeter a uma extracccedilatildeo do conhecimento quedeteacutem Se a isto juntar-mos o facto do objectivo pelo qual se procede agrave extracccedilatildeo deconhecimento eacute a criaccedilatildeo de um programa que seraacute equiparado ao proacuteprio perito emtermos de conhecimento certamente que haveraacute algum desconforto

Aqui surgem as primeiras duacutevidas Seraacute que o sistema pericial tomaraacute o lugar deum ou mais peritos Apesar desta e de outras preocupaccedilotildees os peritos normalmentecontribuem de forma positiva para o enriquecimento de um sistema pericial tornando-odesta forma num sistema com maior qualidade e do qual eles proacuteprios poderatildeo usufruirjaacute que quando eacute possiacutevel agregar o conhecimento de muacuteltiplas pessoas obteacutem-se umconhecimento global superior ao individual

Para aleacutem disto o sistema pericial tende a proceder a um raciociacutenio mais linear loacutegicoe coerente quando comparado com um ser humano que poderaacute deixar que factores comopor exemplo o cansaccedilo ou os sentimentos o influenciem

Merritt define um sistema pericial como sendo um programa que utiliza conhecimentoe meacutetodos de inferecircncia para resolver problemas que satildeo suficientemente complexos pararequerer um especialista para a sua resoluccedilatildeo

ldquo an intelligent computer program that uses knowledge and inference procedures to

solve problems that are difficult enough to require significant human expertise for their

solutionsrdquo Merritt (1989)

A definiccedilatildeo de Giarratano et al eacute mais relacionada com o tipo de problemas tratadospor um sistema pericial

ldquo computer application wich embody some non-algorithmic expertise for solving certain

types of problemsrdquo Giarratano et al (1998)

Esta definiccedilatildeo enquadra de uma forma global as definiccedilotildees reconhecidas aos siste-mas periciais ldquoum sistema pericial pretende emular um perito na identificaccedilatildeo de umdeterminado problema cuja resoluccedilatildeo envolva conhecimento natildeo algoriacutetmicordquo

Existe uma clara separaccedilatildeo entre conhecimento e raciociacutenio o conhecimento eacute obtidocomo jaacute foi referido recorrendo a um ou mais peritos na aacuterea Os dados obtidos satildeo depois

6

21 SISTEMAS PERICIAIS

codificados atraveacutes de um determinado esquema de representaccedilatildeo No passo seguinteeacute adicionada a capacidade de raciociacutenio ao sistema pericial recorrendo a estrateacutegiasheuriacutesticas na tentativa de fornecer um resultado semelhante ao que um perito forneceriae aqui uma vez mais o papel do perito eacute fundamental para o sucesso do sistema pericial

Para aleacutem de contribuir com o conhecimento o perito deveraacute igualmente contribuircom o raciociacutenio utilizado para o manuseamento desse mesmo conhecimento Isto porquea resoluccedilatildeo de um problema poderaacute em determinadas situaccedilotildees necessitar de pequenosajustes que fogem agrave linearidade de um processamento computacional mas que podemperfeitamente ser simuladas e recriadas na construccedilatildeo do raciociacutenio do programa

Eacute necessaacuterio compreender que um perito para aleacutem de ser algueacutem que eacute consideradoum especialista na sua aacuterea eacute habitualmente algueacutem com pouco ou nenhum tempodisponiacutevel o que dificulta bastante a realizaccedilatildeo da recolha do conhecimento O seutempo eacute dispendioso e tem por norma poucos espaccedilos de manobra devido agraves muitassolicitaccedilotildees que lhe satildeo dirigidas Aqui impera o factor de resistecircncia ora porque o peritonatildeo acredita que o sistema seja tatildeo eficaz como ele ora porque existe o receio de sersubstituiacutedo ou passar a ter menos solicitaccedilotildees Quanto maior a colaboraccedilatildeo do ou dosperitos envolvidos na criaccedilatildeo de um qualquer sistema pericial melhor e mais eficaz seraacuteesse sistema pericial

211 Arquitectura

As duas grandes componentes do sistema pericial e que permitem a separaccedilatildeo referidaentre conhecimento e raciociacutenio satildeo a base de conhecimento (depende do domiacutenio ou daaacuterea abrangida) e o bloco de raciociacutenio (natildeo depende do domiacutenio) Este uacuteltimo eacute aindadividido em trecircs partes distintas o motor de inferecircncia o sistema de explicaccedilotildees e ainterface com o utilizador

Um sistema pericial deve ser estruturado de forma a que possa ser actualizado facil-mente sem que seja necessaacuteria qualquer alteraccedilatildeo ao niacutevel funcional do programa

7

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 1 Arquitectura de um sistema pericial

A figura 1 mostra a composiccedilatildeo de um sistema pericial e que mais detalhadamente eacutea seguinte

bull Interface com o utilizador

um sistema pericial deveraacute permitir a interacccedilatildeo com o utilizador Nos casosmais habituais os utilizadores que usufruem dos benefiacutecios destes sistemas natildeosatildeo peritos da aacuterea e pretendem aconselhamento ou ajuda na resoluccedilatildeo de umproblema Noutros casos o utilizador poderaacute ser um perito da aacuterea que apenaspretende testar o sistema pericial ou confrontar as conclusotildees deste com as suasproacuteprias conclusotildees para perceber se sendo diferentes qual o motivo para queisso aconteccedila Isto poderaacute permitir que um perito aprofunde ou corrija o seuproacuteprio conhecimento ou que por outro lado se procedam a correcccedilotildees agrave base deconhecimento do sistema pericial mediante se trate de erro por parte de um ou deoutro

De qualquer forma a interface com o utilizador deveraacute permitir a interacccedilatildeo entreo sistema pericial e o utilizador (qualquer que este seja) para que o utilizadorresponda agraves questotildees que lhe satildeo colocadas e peccedila explicaccedilotildees para os passos econclusotildees que percorre e descobre ao longo da utilizaccedilatildeo do programa

bull Base de conhecimento

o conhecimento extraiacutedo de um ou mais peritos eacute armazenado e mantido aquiDurante a execuccedilatildeo do programa o sistema pericial acede a esta base para consultaros dados disponiacuteveis Eacute sempre possiacutevel em qualquer altura retirar acrescentarou corrigir factos na base de conhecimento Isto contribui para uma evoluccedilatildeo damesma no sentido de melhorar sempre o funcionamento do proacuteprio sistema pericial

8

21 SISTEMAS PERICIAIS

bull Motor de inferecircncia

este bloco eacute o grande responsaacutevel por interpretar o conhecimento e colocarde uma forma estruturada questotildees ao utilizador O raciociacutenio extraiacutedo do ou dosperitos eacute aqui consultado para que mediante as questotildees que satildeo colocadas aoutilizador e as consultas que satildeo efectuadas agrave base de conhecimento este motor deinferecircncia determine qual a proacutexima questatildeo a colocar qual a proacutexima consulta arealizar ou qual a conclusatildeo a apresentar

bull Sistema de explicaccedilotildees

sempre que o utilizador pretende que lhe seja dada uma explicaccedilatildeo para aquestatildeo que estaacute a ser colocada ou para a conclusatildeo que foi determinada este blocoseraacute o responsaacutevel por dar essa mesma explicaccedilatildeo

Esta divisatildeo permite que os moacutedulos funcionais do programa possam ser isoladoscomo podemos observar na figura 1 de forma a facilitar futuras correcccedilotildees e actualizaccedilotildeesda base de conhecimento contribuindo positivamente para a evoluccedilatildeo da mesma eevitando assim que o sistema pericial fique obsoleto

212 Base de conhecimento

Uma base de conhecimento eacute um conjunto de informaccedilatildeo representada de forma a quepossa ser processada pelo motor de inferecircncia Existem vaacuterias formas de representa-ccedilatildeo de conhecimento no entanto as mais conhecidas satildeo a representaccedilatildeo por regrasrepresentaccedilatildeo por ldquoframesrdquo e ainda as redes semacircnticas

Ao representar conhecimento um dos factores determinantes para o meacutetodo necessaacute-rio a essa representaccedilatildeo eacute o domiacutenio do problema ou aacuterea a modelar A tiacutetulo de exemplose um problema segue um padratildeo ou algum tipo de linearidade na busca da soluccedilatildeonecessaacuteria ou ainda se a soluccedilatildeo puder ser obtida atraveacutes de questotildees cujas respostassatildeo maioritariamente simples (sim natildeo valores numeacutericos etc) a representaccedilatildeo doconhecimento eacute feita utilizando os meacutetodos de regras ou ldquoframesrdquo

Como jaacute foi referido o papel de um perito natildeo estaacute limitado apenas agrave contribuiccedilatildeocom o conhecimento para a base necessaacuteria Este exerce um outro papel igualmenteimportante que tem a ver mais com o aspecto de raciociacutenio Desta forma ao consultar abase de conhecimento satildeo tomadas algumas decisotildees tais como verificaccedilatildeo de eventuaissoluccedilotildees jaacute possiacuteveis em pontos intermeacutedios ou qual a proacutexima questatildeo a colocar Estemeacutetodo de interacccedilatildeo com a base de conhecimento poderaacute eventualmente entrar em

9

CAPIacuteTULO 2 ESTADO DA ARTE

conflito com a independecircncia de domiacutenio que foi referida na arquitectura de um sistemapericial No entanto este aspecto fundamental da criaccedilatildeo de um sistema pericial contribuilargamente para o bom funcionamento do mesmo

Para aleacutem disto a base de conhecimento deveraacute sempre contemplar as funcionalidadesnecessaacuterias que permitam ao utilizador em qualquer altura proceder agrave adiccedilatildeo de novosfactos agrave correcccedilatildeo dos jaacute existentes ou ainda agrave eliminaccedilatildeo dos mesmos Isto permitemanter uma base de conhecimento sempre actualizada fiaacutevel e consistente Estas razotildeescontribuem para a resoluccedilatildeo cada vez mais eficaz dos problemas que satildeo colocadosPara novos problemas que surgem poderatildeo ser necessaacuterias novas soluccedilotildees ou novosmeacutetodos para as encontrar Para problemas jaacute conhecidos poderatildeo ser encontradas novasformas ou novas soluccedilotildees de os resolver eventualmente consideradas mais eficazes ou deimplementaccedilatildeo mais simples

Por tudo isto considera-se que a base de conhecimento apesar de natildeo ser o verdadeiromotor de um sistema pericial poderaacute ser encarada como o verdadeiro combustiacutevelque o move e sem o qual natildeo seria possiacutevel qualquer tipo de evoluccedilatildeo pelo que a natildeocontribuiccedilatildeo para o seu melhoramento estagna o proacuteprio sistema provocando mais cedoou mais tarde o abandono do mesmo por parte dos utilizadores que entretanto podemperder a confianccedila que lhe depositaram

Os meacutetodos de representaccedilatildeo de conhecimento podem ser seleccionados de acordocom as caracteriacutesticas que lhes estatildeo inerentes e que se descrevem de seguida

2121 Regras

Uma das teacutecnicas de representaccedilatildeo de conhecimento mais utilizadas eacute a representaccedilatildeopor regras Estas satildeo utilizadas para representar heuriacutesticas e caracterizam-se por umconjunto de premissas que desencadeiam ou conduzem a uma soluccedilatildeo

As regras tecircm o formato ltidentificaccedilatildeogt Se ltLeft-Handed Side (LHS)gt EntatildeoltRight-Handed Side (RHS)gt

Onde

ltidentificaccedilatildeogt - identificaccedilatildeo da regra

ltLHSgt ndash ldquoLeft-Handed Siderdquo define as premissas que teratildeo que ser satisfeitas deforma a que a regra possa ser disparada

ltRHSgt ndash ldquoRight-Handed Siderdquo define as acccedilotildees ou conclusotildees que seratildeo verificadascom o disparo da regra

As premissas satildeo definidas recorrendo a factos que podem ser previamente conhecidosou inferidos a partir de outras regras A utilizaccedilatildeo de regras promove uma separaccedilatildeo

10

21 SISTEMAS PERICIAIS

entre a parte loacutegica e a funcional isto eacute permite-nos uma abstracccedilatildeo de implementaccedilatildeofocando-se na loacutegica

Vantagens

bull expressividade - as regras satildeo normalmente representadas de uma forma naturalque pode mesmo chegar a ser declarativa Eacute perfeitamente normal uma regra estarescrita num vocabulaacuterio que pode ser lido e compreendido por algueacutem que natildeo sejao programador o perito ou algueacutem com formaccedilatildeo na aacuterea em questatildeo

bull modularidade - as regras satildeo independentes entre si o que possibilita uma maisfaacutecil manutenccedilatildeo da base de conhecimento Isto permite e facilita a remoccedilatildeo deregras a adiccedilatildeo de outras ou a alteraccedilatildeo das jaacute existentes

bull separaccedilatildeo loacutegica - as regras satildeo independentes do motor de inferecircncia e estenatildeo carece de alteraccedilotildees ou actualizaccedilotildees quando as regras satildeo modificadas Ofuncionamento do sistema natildeo eacute alterado quando as regras o satildeo apenas as soluccedilotildeesque o sistema obteacutem eacute que poderatildeo ser diferentes (normalmente para melhor)

bull gramaacutetica riacutegida - as regras obedecem a estruturas que estatildeo perfeitamente defi-nidas agrave partida Isto implica que as mesmas possam ser validadas ou ateacute mesmoconstruiacutedas recorrendo a outros sistemas

bull execuccedilatildeo loacutegica - eacute sempre possiacutevel em qualquer altura do funcionamento dosistema pericial solicitar o desencadeamento ou disparo de uma sucessatildeo deregras A isto chama-se uma explosatildeo combinatoacuteria das regras e permite quesejam contemplados vaacuterios cenaacuterios possiacuteveis utilizando apenas uma execuccedilatildeoEsta execuccedilatildeo loacutegica tem sempre o mesmo resultado desde que se mantenham osparacircmetros iniciais

bull sistema de explicaccedilotildees - ao proceder a disparos de regras eacute possiacutevel dar indicaccedilatildeode qual a loacutegica utilizada para disparar uma determinada regra Isto permite de umaforma didaacutectica e simples justificar a razatildeo dos disparos auxiliando o utilizador nacompreensatildeo da evoluccedilatildeo que o sistema segue para atingir determinada soluccedilatildeo

Desvantagens

bull explicaccedilotildees - se um utilizador natildeo conhecer as regras ou natildeo as aceitar o sistemade explicaccedilotildees natildeo seraacute uma mais valia Poderaacute ateacute eventualmente tornar-se emalgo que confunde mais do que aquilo que auxilia

11

CAPIacuteTULO 2 ESTADO DA ARTE

bull gramaacutetica riacutegida - apesar de o meacutetodo de utilizaccedilatildeo de estruturas poder ser con-siderado importante porque estabelece um padratildeo a ser seguido pode conduzir aproblemas de expressividade quando utilizado em domiacutenios complexos

bull inconsistecircncia - um dos maiores problemas que podem surgir num sistema queutiliza a representaccedilatildeo do conhecimento atraveacutes de regras tem a ver com a possibi-lidade da existecircncia de inconsistecircncias e incoerecircncias nas regras Isto reduz-se ouevita-se atraveacutes da utilizaccedilatildeo exaustiva do sistema numa fase de testes em que satildeoequacionados o maior nuacutemero de casos ou cenaacuterios que possam despoletar todas asregras existentes na base de conhecimento

2122 Frames

Uma frame representa um conceito e eacute composta por slots que que natildeo satildeo mais do que adefiniccedilatildeo de um conjunto ltatributo valorgt Um valor pode ser um elemento uacutenico ouuma lista de valores e em termos de dados pode conter um tipo de dados primitivo ouuma referecircncia a outra frame

Esta representaccedilatildeo tem uma ligaccedilatildeo muito forte com o paradigma da programaccedilatildeoorientada a objectos jaacute que a ideia eacute a mesma representar objectos e conceitos do mundoreal utilizando a descriccedilatildeo a composiccedilatildeo e a heranccedila

Como vantagens temos

bull associaccedilatildeo - as frames definem e representam o conhecimento de uma formaassociativa (associaccedilatildeo normal de conceitos)

Desvantagens

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as frames podem representar um espaccedilo que natildeo estaacuterestringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

12

21 SISTEMAS PERICIAIS

2123 Redes semacircnticas

Uma rede semacircntica eacute um modelo formal em que satildeo descritos conceitos e relaccedilotildeesrecorrendo a um grafo dirigido Os conceitos satildeo representados por noacutes as relaccedilotildees porarcos e existe uma heranccedila de conceitos agrave medida que se procede agrave navegaccedilatildeo pelas vaacuteriasrelaccedilotildees

Como vantagens temos

bull exploraccedilatildeo graacutefica - a representaccedilatildeo de conhecimento atraveacutes de redes semacircnticaspermite a um utilizador explorar um domiacutenio graficamente Isto facilita a interacccedilatildeoe utilizaccedilatildeo do sistema

bull facilidade na adiccedilatildeo de clusters relacionados - utilizando o modo graacutefico de repre-sentaccedilatildeo torna-se mais faacutecil adicionar novos clusters em que existam conceitosrelacionados

bull faacutecil assimilaccedilatildeo - os seres humanos relacionam-se bem com ambientes graacuteficose tecircm uma tendecircncia a natildeo soacute aceitaacute-los melhor como tambeacutem a proceder a umautilizaccedilatildeo mais atractiva simples e de raacutepida aprendizagem com um miacutenimo deformaccedilatildeo

Como desvantagens temos

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as redes semacircnticas podem representar um espaccedilo que natildeoestaacute restringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

bull falta de estrutura e formalidade - natildeo existe uma semacircntica formal para a represen-taccedilatildeo simboacutelica das ligaccedilotildees o que deixa demasiado espaccedilo para a criatividade eeventualmente para o surgimento de problemas associados ao facto de poderemexistir muacuteltiplas formas de representaccedilatildeo

13

CAPIacuteTULO 2 ESTADO DA ARTE

2124 Mecanismos de inferecircncia

A base de conhecimento representa o caminho para encontrar uma determinada soluccedilatildeomas o motor de inferecircncia eacute a entidade que efectivamente percorre esse caminho Ummotor de inferecircncia pode utilizar diferentes estrateacutegias de raciociacutenio para a obtenccedilatildeode respostas As mais conhecidas satildeo a estrateacutegia de encadeamento directo e a deencadeamento inverso Contudo eacute possiacutevel combinar as duas no mesmo sistema naquiloque eacute vulgarmente conhecido como uma estrateacutegia de encadeamento misto

Encadeamento directo (Forward Chaining) ndash Um ser humano no seu dia a dia utilizaesta estrateacutegia para processamento de raciociacutenio Consoante assistimos a acontecimentoso ceacuterebro processa-os e analisa-os decidindo o que fazer de seguida De igual modo aestrateacutegia de raciociacutenio por encadeamento directo comeccedila por percorrer os factos baacutesicosque vatildeo originar o disparo de regras o que levaraacute agrave obtenccedilatildeo de conclusotildees intermeacutediasque por sua vez iratildeo originar o disparo de mais regras e assim sucessivamente Oprocesso continua ateacute que se obtenham conclusotildees finais se tal for possiacutevel ou natildeo hajamais lugar agrave possibilidade de disparo de novas regras

Devido agraves suas caracteriacutesticas esta estrateacutegia eacute mais apropriada para planeamentomonitorizaccedilatildeo controlo e interpretaccedilatildeo

Encadeamento inverso (Backward Chaining) ndash No encadeamento inverso o motorde inferecircncia tenta provar as conclusotildees finais que aparecem no lado direito das regras(RHS) Essas conclusotildees finais tambeacutem satildeo designadas como objectivos e eacute normaldizer-se que o motor de inferecircncia com encadeamento inverso eacute orientado aos objectivos(goal driven)

Para provarmos uma dada conclusatildeo teremos que provar as condiccedilotildees que aparecemno lado esquerdo da regra (LHS) que poderatildeo ser suportadas por conclusotildees intermeacutediasde outras regras ou por factos baacutesicos Sendo assim o mecanismo de encadeamentoinverso assume um caraacutecter essencialmente recursivo (para provar uma conclusatildeo vamoster que provar as condiccedilotildees)

Este tipo de estrateacutegia eacute mais apropriada para diagnoacutesticos jaacute que temos uma hipoacuteteseque necessita de ser provada de forma a chegar a uma conclusatildeo

Eacute importante salientar que a forma de representaccedilatildeo das regras eacute independente daestrateacutegia utilizada pelo motor de inferecircncia No entanto eacute possiacutevel melhorar a eficaacuteciado sistema se adaptarmos essa representaccedilatildeo consoante o encadeamento utilizado

14

21 SISTEMAS PERICIAIS

2125 Manutenccedilatildeo de uma base de conhecimento

A manutenccedilatildeo de uma base de conhecimento embora seja considerada vital para asobrevivecircncia do sistema pericial eacute um processo bastante complexo no sentido emque implica cuidados que nem sempre satildeo tidos ou considerados Eacute habitual existiremproblemas de validaccedilatildeo verificaccedilatildeo redundacircncia e contradiccedilotildees

De forma a garantir que a base de conhecimento se mantenha fiaacutevel e bem definidadevem ser desenvolvidos mecanismos que evitem a ocorrecircncia deste tipo de problemas

Redundacircncia - Considera-se aplicaccedilatildeo de redundacircncia a uma base de conhecimentoquando ao inserir uma regra estamos a adicionar conhecimento que jaacute estava contido nabase de conhecimento Podemos observar o seguinte exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X tem_barbatanas entatildeo X nada

regra3 se X nada E X tem_barbatanas entatildeo X eacute_peixe

Neste exemplo eacute possiacutevel verificar que esta base de conhecimento manteacutem-se idecircntica(o conhecimento eacute o mesmo) se removermos a regra3 considerada redundante Esta regranatildeo trouxe nenhum conhecimento novo ao sistema e pode ser descartada

Contradiccedilatildeo - Considera-se regra contraditoacuteria toda a regra que contradiz conheci-mento jaacute existente na base de conhecimento Por exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X nada entatildeo X natildeo_eacute_peixe

A regra2 contradiz claramente a regra1 pelo que eacute considerada contraditoacuteria Um dosgrandes problemas na anaacutelise de duas ou mais regras contraditoacuterias passa por determinarquais as que correspondem ao conhecimento correcto

Verificaccedilatildeo - acccedilatildeo desencadeada ainda na fase de implementaccedilatildeo inicial da base deconhecimento onde se pretende minimizar problemas essencialmente de redundacircncia e decontradiccedilatildeo que possam ser provocados pelo programador Toda a base de conhecimentoeacute verificada e confrontada com as notas apontamentos e indicaccedilotildees a que o programadorteve acesso e que serviram de alicerce para a construccedilatildeo da mesma

Validaccedilatildeo - a acccedilatildeo preventiva de erros iniciais levada a cabo logo apoacutes a implementa-ccedilatildeo da base de conhecimento precede a acccedilatildeo seguinte que consiste em validar a referidabase atraveacutes da intervenccedilatildeo de um perito o qual utiliza vaacuterios cenaacuterios de testes ondetenta obter as respostas ao mesmo tempo que vai consultando as explicaccedilotildees disponiacuteveisao longo do percurso

Apesar de ser habitual proceder a esta validaccedilatildeo com o perito que contribuiu como conhecimento eacute igualmente habitual e ateacute beneacutefico utilizar outros peritos da mesma

15

CAPIacuteTULO 2 ESTADO DA ARTE

aacuterea que para aleacutem de validarem a base de conhecimento em causa poderatildeo inclusiveconfrontar o seu proacuteprio conhecimento com o do perito original procedendo a correcccedilotildeesa eles proacuteprios ou agrave base per si Quanto maior a taxa de intervenccedilatildeo construtiva por partede peritos numa base de conhecimento melhor seraacute a qualidade associada agrave mesma

213 Raciociacutenio sobre incerteza

Raciociacutenio sobre incerteza eacute o nome dado ao processo de formulaccedilatildeo de conhecimentobaseado em fontes de informaccedilatildeo que detenham algum tipo de incerteza na sua especifi-caccedilatildeo

O conhecimento que detemos natildeo se limita a observaccedilotildees loacutegicas do tipo ldquose Obser-vaccedilatildeo_A entatildeo conclusatildeo_Brdquo Em vaacuterias situaccedilotildees necessitamos de lidar com informaccedilatildeoincompleta incorrecta ou ateacute mesmo ausente

Quando lidamos com conhecimento de peritos num determinado domiacutenio surge aindaoutro tipo de conhecimento este originado atraveacutes da observaccedilatildeo e experiecircncia

Existe entatildeo a necessidade de representaccedilatildeo de conhecimento e respectivo grau decerteza Para este efeito existem algumas teacutecnicas tais como loacutegica Fuzzy teorias deprobabilidades tais como Bayes ou Dempster-Shafer factores de certeza entre outros

Os seguintes autores podem ser consultados para referecircncia das teacutecnicas acima men-cionadas

bull Loacutegica Fuzzy - Drakopoulos (1994)

bull Bayes - Lucas (2001)

bull Dempster-Shafer - Wilson (2000) e Barnett (1991)

De seguida vai ser descrita a teacutecnica dos factores de certeza que foi a teacutecnica adoptadapara o desenvolvimento da soluccedilatildeo

2131 Factores de certeza

A teacutecnica dos Certainty Factors ou Factores de Certeza (CF) eacute um do meacutetodos detratamento de incertezas num sistema pericial A teacutecnica foi desenvolvida por Shortliffeand Buchanan para o projecto MYCIN um sistema pericial de diagnoacutestico e tratamentode meningite e tratamento do sangue Desde entatildeo que esta teacutecnica eacute o padratildeo seguido nodesenvolvimento de sistemas periciais baseados em regras Heckerman (1992)

16

21 SISTEMAS PERICIAIS

De um ponto de vista funcional caracteriza-se pela atribuiccedilatildeo de um nuacutemero o graude certeza a factos e regras Esse grau de certeza eacute uma medida relativa probabiliacutesticaque pode ser positiva ou negativa sendo normalmente usados valores no intervalo de -1 a1

A sua definiccedilatildeo original baseou-se na seguinte foacutermula FC [HE] = MC [HE]minusMD [HE]

O factor de certeza da hipoacutetese H dado uma evidecircncia E eacute dado pela diferenccedila entre

bull a medida de certeza de H dado Erarr MC [HE]

bull a medida de descrenccedila de H dado Erarr MD [HE]

O CF final de uma regra com uma premissa baseada num facto ou noutra regra eacute dadopela foacutermula 21

Quando as premissas estatildeo associadas atraveacutes do operador conjunccedilatildeo eacute aplicada afoacutermula 22

Quando existe mais do que uma regra a suportar uma determinada conclusatildeo o CFfinal eacute o resultado da foacutermula 23

CFf inal =CFpremissatimesCFregra 21

CFf inal = min[CFpremissa1 CFpremissan

]timesCFregra

22

X Y gt 0CF (X Y ) = X +Y (100˘X)100 23a

X ou Y lt 0CF (X Y ) = X +Y(1˘min(X Y)) 23b

X Y lt 0CF (X Y ) =minusCF (minusX minusY ) 23c

214 Vantagens e desvantagens

Apesar de tudo o que foi descrito um sistema pericial natildeo representa de forma alguma aferramenta mais apropriada para resolver todos os problemas com recurso a conhecimentoque de outra forma estaria reservado apenas a peritos das vaacuterias aacutereas Ao utilizarmosum sistema pericial estamos sujeitos a aspectos positivos e negativos cabendo a noacutes opapel de determinar se quando confrontados com um determinado problema a utilizaccedilatildeodeste tipo de ferramenta eacute a mais apropriada

17

CAPIacuteTULO 2 ESTADO DA ARTE

Para observar quais as principais vantagens de um sistema pericial podemos consultaras opiniotildees partilhadas por Giarratano et al (1998) CoAJRA (1997)

bull Elevada disponibilidaderArr um sistema pericial estaacute sempre disponiacutevel em termosde tempo e local pronto a funcionar sob qualquer condiccedilatildeo enquanto que umperito natildeo dispotildee dessa total disponibilidade

bull Baixo risco de utilizaccedilatildeorArr pode ser utilizado em ambientes considerados perigo-sos e hostis para um ser humano

bull Baixo custo rArr o custo de providenciar conhecimento por utilizador eacute bastantereduzido

bull DurabilidaderArr o conhecimento eacute permanente ao contraacuterio de um especialista queestaacute sujeito a ausecircncias

bull Conhecimento de vaacuterios especialistasrArr quando agregado o conhecimento reco-lhido a partir de vaacuterios especialistas poderaacute conduzir a resultados mais adequadose considerados melhores quando confrontados com o conhecimento individual e osresultados que daiacute advecircm

bull Capacidade de explicaccedilatildeorArr um sistema pericial consegue explicar detalhadamenteos passos que levaram agrave resposta dada enquanto que um ser humano pode natildeo tera disponibilidade nem a vontade de explicar todo o processo de raciociacutenio seguido

bull EmotividaderArr um sistema pericial natildeo estaacute sujeito a emoccedilotildees o seu funciona-mento e as respostas que providencia natildeo satildeo influenciadas pelo meio em que estaacuteinserido como por exemplo situaccedilotildees de stress ou situaccedilotildees de perigo iminente (aqueda de um aviatildeo ou uma central nuclear em risco)

bull Natildeo influenciaacutevelrArr acontecimentos mais actuais tecircm o mesmo peso na tomada dedecisatildeo evitando assim o fenoacutemeno de ldquoviciaccedilatildeordquo da base de conhecimento

No entanto um sistema pericial comporta tambeacutem algumas desvantagens das quaisse salientam

bull Emotividade rArr o facto de natildeo ser emotivo tambeacutem pode ser visto como umadesvantagem jaacute que natildeo recorrer a emoccedilotildees pode ser problemaacutetico por exemploem situaccedilotildees que necessitem de senso comum

18

21 SISTEMAS PERICIAIS

bull ManutenccedilatildeorArr se natildeo for devidamente mantido e actualizado um sistema pericialcorre o risco de ldquoenvelhecerrdquo no sentido em que deixa de ser um sistema fiaacutevel aque possamos recorrer e que corre o risco de abandono

bull CriatividaderArr um sistema pericial natildeo tem capacidade de reagir de forma diferentea problemas colocados seguindo sempre uma linha estaacutevel de raciociacutenio

bull Adaptaccedilatildeo sensorial rArr um sistema pericial natildeo consegue reagir a informaccedilatildeosensorial do meio que o rodeia entenda-se sensorial como sentidos humanos taiscomo o cheiro o tacto e a visatildeo

19

CAPIacuteTULO 2 ESTADO DA ARTE

22 GISPSA - GIS Problem Solver Advisor

O Gestatildeo Integrada de Seguros (GIS) eacute um Sistema de Informaccedilatildeo vocacionado para aactividade seguradora residente na plataforma AS400 da IBM Umas das caracteriacutesticasmais interessantes deste sistema acabou por ser tambeacutem um dos grandes proporciona-dores de eventuais problemas O GIS possui uma grande capacidade de configuraccedilatildeo oque sendo muito uacutetil para a adaptabilidade deste a cenaacuterios situaccedilotildees ou utilizadoresdiferentes acaba por originar vaacuterios problemas operacionais atraveacutes de inconsistecircnciasna proacutepria configuraccedilatildeo

Dada esta facilidade aparente de ocorrecircncia de problemas e a falta de sensibilidadee formaccedilatildeo teacutecnica dos utilizadores para os resolver a equipa de assistecircncia teacutecnicaafecta ao GIS estava muitas vezes com sobrecarga de pedidos por parte dos clientes quepretendem estes problemas solucionados Existiam periacuteodos de especial relevacircncia noque toca a estas sobrecargas tais como os fechos de ano das empresas

A partir daqui surge a ideia e a necessidade da criaccedilatildeo do GISPSA com o intuito dealiviar a sobrecarga da equipa de assistecircncia teacutecnica mas essencialmente com o grandeobjectivo de assegurar que um cliente natildeo fica sem soluccedilatildeo para os problemas com que sedepara apenas porque natildeo estatildeo teacutecnicos disponiacuteveis A grande vantagem de um sistemapericial foi e seraacute sempre essa poder substituir um perito sem ter que enfrentar questotildeescomo a disponibilidade custos ou tempo

Assim surge o GISPSA que mais natildeo eacute que um projecto criado por Pinto no acircmbito deum projecto acadeacutemico cujo objectivo inicial passava por criar um Sistema Pericial paradiagnoacutestico de problemas operacionais do GIS Este sistema teve por base o conhecimentoe o respectivo raciociacutenio extraiacutedos de um perito da aacuterea Administrativa-Financeira doGIS

No caso de problemas mais complexos em que o Sistema Pericial natildeo consiga determi-nar os factores de erro eacute remetida a resoluccedilatildeo para um teacutecnico da empresa comunicandoesse facto ao utilizador Pinto (1998)

221 Arquitectura

Sendo um sistema pericial o GISPSA teria que ser desenvolvido utilizando uma lingua-gem que tivesse uma seacuterie de caracteriacutesticas A existecircncia de uma base de conhecimento apossibilidade de consultar factos adicionar novos factos ou ainda de remover factos nessamesma base e aspectos como o backtracking na realizaccedilatildeo de raciociacutenio ao inferir sobreesses mesmos factos natildeo permitia um leque muito alargado na escolha da linguagem de

20

22 GISPSA - GIS PROBLEM SOLVER ADVISOR

desenvolvimento

Desta forma ficou decidido que o GISPSA seria desenvolvido em prolog (maisespecificamente winprolog) Devido agrave simplicidade de utilizaccedilatildeo e extensa documentaccedilatildeode apoio o LPAProlog foi usado como motor de inferecircncia e o LPAFlex foi usado paraestabelecer a declaraccedilatildeo de regras

Como jaacute foi referido anteriormente o GISPSA eacute uma aplicaccedilatildeo standalone desenhadae desenvolvida para uma execuccedilatildeo local em mono-posto e sujeita agrave obtenccedilatildeo de umalicenccedila de utilizaccedilatildeo para garantir o seu funcionamento

Figura 2 GISPSA menu inicial

A aplicaccedilatildeo dispotildee de uma interface graacutefica tambeacutem criada em winprolog que utilizarecursos especiacuteficos do sistema operativo Windows

A base de conhecimento eacute armazenada num uacutenico ficheiro ksl e o seu carregamentonatildeo eacute parcial O mesmo seraacute dizer que toda a base de conhecimento eacute passada paramemoacuteria de trabalho assim que o programa arranca

222 Funcionamento

Em termos funcionais a aplicaccedilatildeo permite mudar o tipo de linguagem a ser empreguenas conversaccedilotildees estabelecidas com o utilizador consoante esta esteja a ser utilizadapor um teacutecnico (habitualmente os teacutecnicos com formaccedilatildeo na aacuterea) ou um utilizadornormal (o cliente que adquiriu a aplicaccedilatildeo e cuja formaccedilatildeo eacute mais reduzida ou ateacute mesmoinexistente)

Apoacutes a definiccedilatildeo da linguagem de interacccedilatildeo a utilizar o sistema inicia entatildeo o pedidode assistecircncia apresentando a mensagem ldquoSeleccione a aplicaccedilatildeordquo (figura 3) que permitenuma primeira instacircncia direccionar o raciociacutenio face agrave resposta do utilizador

21

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 3 GISPSA interacccedilatildeo inicial

Figura 4 GISPSA exemplo de interacccedilatildeo pergunta-resposta

223 Limitaccedilotildees

Apesar de ser inovadora na aacuterea esta aplicaccedilatildeo foi no iniacutecio bastante utilizada por algunsclientes tendo sofrido algum abandono de forma gradual ao longo do tempo de vida quejaacute leva Apoacutes uma anaacutelise chegou-se agrave conclusatildeo que as principais causas na origemdesse abandono seriam as seguintes

bull Adicionar regras implicava o conhecimento da sintaxe das mesmas Verificou-se que esta tarefa era demasiado complexa para um utilizador sem formaccedilatildeo esensibilidade suficientes na aacuterea da programaccedilatildeo

bull O acto de proceder agrave ediccedilatildeo de regras existentes na base de conhecimento traduz-senuma tarefa que para aleacutem de morosa eacute essencialmente de risco no sentido em

22

23 WEB EXPERT SYSTEMS

que natildeo existe uma verdadeira noccedilatildeo do impacto que estas alteraccedilotildees possam vir ater no comportamento global do sistema

bull O sistema apenas pode ser instalado em mono-posto o que obriga agrave obtenccedilatildeo deuma licenccedila por cada instalaccedilatildeo que se pretende realizar

bull O sistema natildeo permite a integraccedilatildeo com ambientes baseados em redes e sistemasdistribuiacutedos

bull Natildeo existe nenhum mecanismo de verificaccedilatildeo da base de conhecimento

bull O aspecto visual da aplicaccedilatildeo estaacute ultrapassado e eacute pouco apelativo

23 Web Expert Systems

Actualmente uma grande maioria dos sistemas periciais desenvolvidos satildeo desenhadospara um funcionamento em ambientes web As razotildees apontadas para esta orientaccedilatildeo satildeovaacuterias destacando-se a evoluccedilatildeo da proacutepria tecnologia as velocidades de transmissatildeode dados em redes a possibilidade de acesso em muacuteltiplas localizaccedilotildees geograacuteficas(desde que assegurado o necessaacuterio acesso agrave rede) e ainda o desenvolvimento de novasferramentas que possibilitam maior facilidade na criaccedilatildeo destes novos sistemas

Algumas das ferramentas que permitem actualmente o desenvolvimento de um sistemapericial baseado em ambientes web satildeo as seguintes

1 WebFlex - LPA Flex

2 EXSYS CORVID

3 WebCLIPS

4 JCLIPS

5 JESS

6 Acquire

WebFlex - Esta ferramenta permite a publicaccedilatildeo de um sistema pericial desenvolvidoem ldquoLPA Prologrdquo Os sistemas periciais desenvolvidos a partir deste meacutetodo necessitamainda de outra ferramenta para garantir o funcionamento o ldquoLPA ProWeb Serverrdquo Eacute

23

CAPIacuteTULO 2 ESTADO DA ARTE

possiacutevel adaptar um sistema pericial jaacute desenvolvido para ser disponibilizado numarede sem ser necessaacuterio efectuar qualquer tipo de alteraccedilatildeo No entanto se for pretendidoalgum tipo de configuraccedilatildeo extra por exemplo incluir imagens ou alterar a aparecircncia dealguns controlos eacute uma alteraccedilatildeo extremamente morosa e complexa

WebFlex allows you to deliver your flex-based expert systems onto Intranets

and Extranets easily Just create your rules and frames and questions as per normal

in flex and WebFlex will construct a web server-based solution using ProWeb where

all the questions are sent automatically configured for a standard HTMLJavascript

browserLogic Programming Associaties Ltd (2010)

Eacute possiacutevel alterar o HTML de saiacuteda que o webflex utiliza por defeito no entanto estaconfiguraccedilatildeo natildeo eacute tatildeo simples quanto poderaacute parecer agrave partida e obriga agrave alteraccedilatildeo dosistema pericial

Esta ferramenta funciona apenas em sistemas windows e eacute necessaacuteria a obtenccedilatildeo deuma licenccedila de utilizaccedilatildeo (natildeo eacute gratuita)

EXSYS CORVID - Eacute uma ferramenta composta por dois moacutedulos Exsys CORVID

Knowledge Automation Expert System Software e Exsys Servlet Runtime EXSYS (2010)

Natildeo foi possiacutevel encontrar nenhum sistema desenvolvido por esta ferramenta pormotivos de confidencialidade eou vantagem competitiva Estatildeo no entanto disponiacuteveisaplicaccedilotildees de demonstraccedilatildeo na paacutegina oficial da empresa Verificou-se que nenhumadas aplicaccedilotildees de demonstraccedilatildeo disponiacuteveis possui capacidades de dar explicaccedilotildees oujustificaccedilotildees

De acordo com EXSYS as aplicaccedilotildees construiacutedas com esta ferramenta podem seracedidas por Servlet Applet ou standalone e esta ferramenta necessita da obtenccedilatildeo deuma licenccedila de desenvolvimento

WebCLIPS - Segundo Michael Giordano o WebCLIPS eacute uma implementaccedilatildeo CGI

que envolve o C Language Integrated Production System (CLIPS) como aplicaccedilatildeo internaO CLIPS eacute uma ferramenta de desenvolvimento de sistemas periciais

Esta ferramenta foi desenvolvida em linguagem C o que significa que em termos deportabilidade desde que se possua o coacutedigo fonte este poderaacute ser compilado em qualquersistema operativo jaacute que o compilador para a linguagem estaacute disponiacutevel para todas as

24

23 WEB EXPERT SYSTEMS

versotildees existentes no mercado No entanto o WebCLIPS apenas foi desenvolvido parafuncionamento em sistemas windows e linux

O CLIPS eacute uma ferramenta livre que permite o desenvolvimento de sistemas baseadosem regras Pode ser integrado com algumas linguagens das quais se destacam C Java

(JCLIPS) FORTRAN entre outras Esta eacute provavelmente a ferramenta mais utilizada nodesenvolvimento de sistemas periciais devido agrave sua rapidez eficiecircncia e pelo facto de sergratuita

JCLIPS - Eacute uma biblioteca que permite integraccedilatildeo com Java e permite igualmentea utilizaccedilatildeo do motor do CLIPS a partir de uma classe Java Esta interligaccedilatildeo eacute feitaatraveacutes da importaccedilatildeo do ficheiro (dll ou so consoante o sistema operativo) e permite aexecuccedilatildeo de uma instacircncia ou seja permite ter apenas uma sessatildeo de um sistema pericialde cada vez Maarten Menken (2010)

JESS - O JESS eacute uma extensatildeo do CLIPS em JAVA Eacute basicamente uma bibliotecacujo objectivo natildeo passa por gerar uma aplicaccedilatildeo web mas sim servir de base para quepossa ser integrada ou utilizada para esse efeito Ernest Friedman-Hill (2010)

Utiliza uma linguagem especiacutefica designada JESS language equivalente ao CLIPSmas com novos componentes que a tornam uma linguagem complexa e de difiacutecil utilizaccedilatildeopor algueacutem sem conhecimentos de inteligecircncia artificial

Acquire - Eacute um produto bastante avanccedilado do ponto de vista tecnoloacutegico face aosconcorrentes no sentido em que permite uma separaccedilatildeo evidente entre a camada aplicaci-onal e a camada de apresentaccedilatildeo Promove uma separaccedilatildeo cliente-servidor e disponibilizaum Software Development Kit (SDK) que permite a integraccedilatildeo com outras aplicaccedilotildees

De acordo com Acquired Intelligence o produto estaacute sujeito a uma licenccedila de utilizaccedilatildeoe eacute disponibilizado ainda um serviccedilo online de alojamento de sistemas periciais omyAcquire disponiacutevel mediante uma subscriccedilatildeo semestral

231 Casos de estudo

Os sistemas periciais mais especificamente aqueles que satildeo baseados em sistemas webtecircm conhecido nos uacuteltimos anos uma evoluccedilatildeo gradual e consistente devido em grandeparte agrave simplicidade e disponibilidade que possibilitam Podem ser acedidos a partir dequalquer local no mundo 24 horas por dia e sem qualquer tipo de limitaccedilatildeo bastando

25

CAPIacuteTULO 2 ESTADO DA ARTE

apenas que se garanta o acesso agrave rede onde o sistema pericial estaacute colocado

As interfaces satildeo mais apelativas e chegam a fazer uso de imagens e outros meiosgraacuteficos ou de multimeacutedia cujo objectivo natildeo eacute apenas o de tornar os sistemas maisinteressantes mas tambeacutem mais eficazes jaacute que auxiliam de forma mais simples eesclarecida Os controlos utilizados as caixas de interacccedilatildeo e ateacute mesmo as explicaccedilotildees ejustificaccedilotildees (nos sistemas que o permitam) ajudam a ter uma ideia cada vez mais clarasobre o funcionamento dos sistemas obtendo-se assim melhores resultados

Alguns dos casos de estudo de sistemas periciais baseados em sistemas web existentesactualmente tecircm como um dos seus maiores objectivos a disponibilidade global dosmesmos (satildeo disponibilizados normalmente atraveacutes da internet) e os mais conhecidossatildeo

bull Landfill Operation Management Advisor (LOMA)

bull Medical Diagnosis Support System (MDSS)

bull Whale watcher

2311 LOMA - Landfill Operation Management Advisor

O LOMA eacute um sistema pericial online que analisa problemas operacionais falhas eacidentes em aterros comuns Aleacutem disso o LOMA fornece conselhos sobre como umgestor pode evitar esses problemas e em caso de ocorrecircncia sobre como diminuir oimpacto das suas consequecircncias Encontra-se disponiacutevel em httplomacivil

duthgr e eacute de utilizaccedilatildeo puacuteblica

O sistema pericial foi desenvolvido por Dokas recorrendo agraves ferramentas WebFlex eLPA ProWeb Server

A arquitectura da aplicaccedilatildeo web pode ser visualizada na figura 5 e consiste nosseguintes moacutedulos Dokas (2005)

bull Sistema pericial LOMA

bull Moacutedulo de aconselhamento

bull Moacutedulo operacional de problemas-causa

bull Eventos inicias

bull Problemas operacionais

26

23 WEB EXPERT SYSTEMS

bull Moacutedulo de explicaccedilotildees

bull Moacutedulo de submissatildeo de conhecimento e informaccedilatildeo

Figura 5 Arquitectura do LOMA

O moacutedulo mais relevante para o acircmbito desta dissertaccedilatildeo eacute o ldquoSistema pericial LOMArdquoe eacute tambeacutem o moacutedulo mais importante para a aplicaccedilatildeo LOMA

Eacute composto por vinte e quatro sub-moacutedulos cada um deles responsaacutevel por analisarum tipo especiacutefico de problema e ainda por um sub-moacutedulo extra que eacute responsaacutevel pelocontrolo do sistema

O sub-moacutedulo extra questiona o utilizador que descreve o problema (ver 6 e 7) ecom base na sua descriccedilatildeo apresenta uma lista de possiacuteveis problemas (ver 8) Quandoo utilizador selecciona um problema da lista de resultados eacute activado o respectivo sub-moacutedulo que por sua vez iraacute fornecer informaccedilatildeo de como prevenir o problema ou nocaso de este jaacute ter acontecido como minimizar as suas consequecircncias (ver 9)

27

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 6 Paacutegina inicial do sistema pericial LOMA

Figura 7 Sub-moacutedulo extra

28

23 WEB EXPERT SYSTEMS

Figura 8 Sugestatildeo de problemas do sub-moacutedulo extra

Figura 9 Sub-moacutedulo especializado

29

CAPIacuteTULO 2 ESTADO DA ARTE

2312 MDSS - Medical Diagnosis Support System

O MDSS eacute um sistema pericial utilizado na aacuterea da medicina e foi desenvolvido paraajudar no diagnoacutestico e tratamento da diabetes A diabetes pode afectar vaacuterias partes docorpo provocando diversos sintomas e complicaccedilotildees Quando detectada atempadamenteeacute mais facilmente controlaacutevel e menos perigosa Por todos estes motivos foi criado umsistema pericial online o MDSS que permite inferir sobre uma seacuterie de sintomas parachegar a um diagnoacutestico

Na opiniatildeo de Filho uma das vantagens deste sistema pericial eacute que possibilita quemeacutedicos em ambientes rurais ou perigosos e de difiacutecil acesso com recursos limitadospossam aceder ao sistema pericial de forma a terem uma ajuda no diagnoacutestico destadoenccedila O que comeccedilou como um sistema pericial vocacionado e orientado para adiabetes rapidamente cresceu e tornou-se algo mais do que isso sendo hoje utilizadocomo sistema de diagnoacutestico para vaacuterias doenccedilas

No que diz respeito agrave sua arquitectura o MDSS foi desenvolvido em LPA Prolog

recorrendo aos moacutedulos ProWeb e ProData e utilizando Open Data Base Connectivity

(ODBC) para acesso agrave base de dados Utiliza loacutegica fuzzy para raciociacutenio sobre incertezaspara lidar com conhecimento parcial

O sistema eacute composto por trecircs moacutedulos No primeiro moacutedulo eacute possiacutevel um es-pecialista definir sintomas exames cliacutenicos exames de laboratoacuterio e exames relativosa uma ou mais doenccedilas Eacute ainda possiacutevel a atribuiccedilatildeo de valores (pesos estatiacutesticos)ou de resultados que definem uma doenccedila Isso permite por exemplo que a pressatildeoarterial possa estar associada ao diagnoacutestico de pressatildeo alta diabetes gravidez de riscoou insuficiecircncia renal entre outros Informaccedilotildees de consultas anteriores e exames satildeoautomaticamente ligadas e analisadas sob fundamentaccedilatildeo loacutegico temporal

No segundo moacutedulo o sistema permite consultas atraveacutes do qual os dados relevantespara o paciente satildeo registados e relacionados com outros exames correlacionados Durantea fase de diagnoacutestico o sistema pode sugerir outros testes ou procedimentos para entatildeoinferir se haacute outros riscos e doenccedilas a serem investigados

No terceiro moacutedulo eacute efectuado o diagnoacutestico O sistema iraacute localizar automatica-mente os diagnoacutesticos jaacute registados noutras consultas incluindo aquelas feitas por outrosmeacutedicos Aleacutem disso o sistema pesquisa niacuteveis de doenccedilas de acordo com os resultadosdos exames Pode tambeacutem sugerir uma investigaccedilatildeo mais aprofundada sempre que osdados natildeo sejam suficientes para garantir um diagnoacutestico preciso

30

23 WEB EXPERT SYSTEMS

2313 Whale watcher

O sistema pericial Whale watcher eacute um sistema de demonstraccedilatildeo da plataforma AcquireEste e outros sistemas periciais similares estatildeo disponiacuteveis na paacutegina da Acquire (httpwwwaiinccademos)

Figura 10 Paacutegina principal do sistema pericial Whale Watcher

Figura 11 Paacutegina final do sistema pericial Whale Watcher

Atraveacutes das demonstraccedilotildees facultadas pela Acquire natildeo eacute possiacutevel concluir se existealgum tipo de sistema de explicaccedilotildees No entanto no final de cada sessatildeo do sistemapericial eacute possiacutevel consultar um resumo (ver 11) que funciona como uma explicaccedilatildeomuito baacutesica da inferecircncia realizada pelo sistema pericial jaacute que se limita apenas amostrar os factos que foram respondidos durante a sessatildeo

31

3Ferramentas utilizadas

Durante o desenvolvimento deste trabalho foi necessaacuterio decidir sobre quais as ferramen-tas a utilizar para a criaccedilatildeo do novo sistema pericial Atendendo a algumas caracteriacutesticasproacuteprias e objectivos traccedilados era necessaacuterio utilizar alguma especificidade na escolhapara garantir a exclusividade do resultado Desenvolvimento web capacidade de pro-ceder a inferecircncia sobre conhecimento representado atraveacutes de regras simplicidade deutilizaccedilatildeo actualidade da tecnologia entre outras caracteriacutesticas influenciaram significa-tivamente nesta escolha

Entre os vaacuterios ambientes de desenvolvimento disponiacuteveis a opccedilatildeo recaiu sobre umque para aleacutem de simples e eficiente era utilizado regularmente em situaccedilatildeo profissi-onal pelo criador deste projecto pelo que aqui foi relativamente simples chegar a umaconclusatildeo

Indo de encontro agraves razotildees que levaram agrave escolha da linguagem do motor de inferecircnciautilizada no projecto que deu origem a este trabalho tambeacutem aqui foi escolhida umalinguagem que possibilita o backtracking de forma eficaz e simplificada caracteriacutesticaessencial para o bom funcionamento do motor de inferecircncia e que contribui largamentepara o sucesso do sistema pericial

31 Ambiente de desenvolvimento

O ambiente de desenvolvimento e respectiva linguagem de programaccedilatildeo utilizados para acriaccedilatildeo do interface do sistema pericial foram seleccionados levando em conta algunsrequisitos e factores considerados necessaacuterios e ateacute mesmo essenciais para a soluccedilatildeo finalA listagem dessas caracteriacutesticas eacute a seguinte

bull Baixo custo de disponibilizaccedilatildeo

33

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

bull Independecircncia do sistema operativo

bull Simples escalabilidade

bull Visual apelativo

Com base nesta lista de caracteriacutesticas consideradas desejaacuteveis ou ateacute mesmo essen-ciais para a soluccedilatildeo final e considerando tambeacutem a jaacute longa experiecircncia de utilizaccedilatildeonesta plataforma foi escolhida a linguagem Java J2EE utilizando a framework Icefaces eo portal Glassfish Podemos considerar para esta escolha uma seacuterie de paracircmetros paraaleacutem dos jaacute evidenciados

bull O J2EE eacute uma linguagem independente do sistema operativo

bull O J2EE caracteriza-se pela sua modularidade

bull Glassfish eacute um portal open source com suporte para J2EE

bull Icefaces eacute uma framework JavaServer Faces (JSF) compatiacutevel com o Glassfish

bull Icefaces permite a criaccedilatildeo de interfaces graacuteficos de uma forma simples

bull Existecircncia de boa documentaccedilatildeo relativamente a todos os produtos

Para aleacutem disto podemos ainda considerar e referir outros produtos e componentesque natildeo sendo menos importantes tambeacutem foram utilizados durante o desenvolvimentodeste trabalho A lista completa de ferramentas eacute a seguinte

bull Java J2EE 60

bull Eclipse Galileo (com plugins para Glassfish e svn) - Integrated Development

Environment (IDE) para Java

bull Icefaces 182

bull GlassFish - portal

bull Visual SVN Server e Tortoise - controlo de versotildees

bull MikTeX - latex

bull TexnicCenter - IDE para latex

34

32 MOTOR DE INFEREcircNCIA

32 Motor de inferecircncia

Em qualquer sistema pericial o motor de inferecircncia eacute o cerne do mesmo O seu desenvol-vimento obriga habitualmente a um esforccedilo e concentraccedilatildeo maiores porque aqui residea forma como o sistema iraacute percorrer as vaacuterias etapas necessaacuterias para alcanccedilar umasoluccedilatildeo

Tambeacutem neste trabalho o motor de inferecircncia eacute um ponto essencial e a sua implemen-taccedilatildeo teve um papel destacado no processo de anaacutelise realizado Actualmente existemalguns produtos que podem ser utilizados integral ou parcialmente como motor deinferecircncia de um sistema pericial esses produtos podem ser frameworks ou shells ouainda Business Rule Management System (BRMS)

Os termos framework e shell satildeo muitas vezes utilizados como sinoacutenimo umaframework eacute uma abstracccedilatildeo que permite agregar formas de resoluccedilatildeo de problemascomuns uma shell eacute similar no sentido em que disponibiliza uma camada de abstracccedilatildeouma ldquoconchardquo que encapsula os serviccedilos

No sentido de tentar reutilizar um produto jaacute existente foi elaborado um estudo acercados actuais produtos e das suas caracteriacutesticas A abordagem seguida para esse estudo foiuma abordagem por fases em que gradualmente se foi estreitando o conjunto de soluccedilotildeesaceitaacuteveis mediante a utilizaccedilatildeo de alguns criteacuterios

Foram consideradas cinco fases

bull Fase I - Recolha de candidatos

bull Fase II - Requisitos base

bull Fase III - Viabilidade econoacutemica

bull Fase IV - Viabilidade teacutecnica

bull Fase V - Prova de conceito

321 Fase I - Recolha de candidatos

A fase I teve como objectivo recolher alguns dos actuais produtos que possuam caracteriacutes-ticas desejadas para um sistema deste geacutenero Natildeo foram considerados alguns produtosque satisfaziam os requisitos mas que natildeo permitem uma integraccedilatildeo com Java Foramidentificados os seguintes produtos como potenciais integradores do projecto

35

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

Produto BRMS FrameworkDrools X XHammurapi Rules XILog XJCLIPS XJESS XJEOPS XJRuleEngine XOpenL Tablets XOpenRules XProva language XYprolog XZilonis X

Tabela 1 Listagem de produtos da Fase I

Drools - ou JBoss Rules eacute um produto open source da RedHat (2010) Define umalinguagem especiacutefica para as regras Eacute desenvolvido em Java e utiliza um mecanismo deencadeamento directo baseado em regras natildeo implementa justificaccedilotildees

Hammurapi Rules - eacute um produto desenvolvido em Java por Hammurapi GroupEste motor de inferecircncia utiliza a sintaxe da linguagem Java para definiccedilatildeo de regras Eacutepossiacutevel definir grupos de regras em XML e estaacute disponiacutevel um plug-in para Eclipse quepermite a ediccedilatildeo destes grupos Suporta encadeamento directo e indirecto

ILOG - WebSphere ILOG Business Rule Management Systems eacute como o nome indicaum BRMS eacute um produto da IBM (2010) que requer licenciamento adequado Eacute necessaacuteriaa instalaccedilatildeo e configuraccedilatildeo de alguns componentes de forma a que o produto possa serutilizado por exemplo Rule Team Server Rule Execution Server Http server entreoutros

JCLIPS - eacute um produto open source mantido por uma comunidade e permite aintegraccedilatildeo entre Java e CLIPS O CLIPS ldquoC Language Integrated Production Systemrdquo eacuteum sistema pericial desenvolvido em linguagem C Maarten Menken (2010)

JESS - eacute um produto comercial da Sandia National Laboratories desenvolvidoem Java Eacute necessaacuterio adquirir licenccedilas para efectivar a utilizaccedilatildeo do mesmo ErnestFriedman-Hill (2010)

JEOPS - Java Embedded Object Production System (JEOPS) eacute uma framework open

source desenvolvida num acircmbito acadeacutemico por Carlos Figueira Filho

36

32 MOTOR DE INFEREcircNCIA

JRuleEngine - eacute um produto open source desenvolvido em Java e mantido porMcarniel (2010) As regras satildeo compiladas para classes Java

OpenL Tablets - eacute um BRMS open source cuja principal vantagem eacute a integraccedilatildeocom a folhas de caacutelculo Excel Permite a utilizaccedilatildeo de tabelas de decisatildeo no formatoExcel OpenL (2010)

OpenRules - eacute um produto da OpenRules Inc sujeito a licenccedila de utilizaccedilatildeo Eacutetotalmente orientado para a folha de caacutelculo Excel da Microsoft

Prova language - eacute um produto open source desenvolvido em Java por KozlenkovAlex and Paschke Disponibiliza uma linguagem muito semelhante ao prolog Eacute umproduto bastante direccionado para a comunicaccedilatildeo entre agentes expondo inclusiveacute umsistema multi-agente

Yprolog - eacute um produto open source desenvolvido em Java por Boris van SchootenEacute uma reacuteplica do prolog desenvolvida totalmente em Java Foi evoluindo ao longo dotempo a partir de produtos como o WProlog e o XProlog

Zilonis - eacute um produto desenvolvido em Java por Elie Levy O formato das regras eacutesemelhante ao CLIPS

322 Fase II - Requisitos base

A fase II teve como objectivo filtrar a lista de candidatos no sentido de excluir produtosque natildeo se enquadrem directamente com os requisitos do sistema a desenvolver Assimsendo foram excluiacutedos alguns dos candidatos jaacute indicados e os principais motivos daexclusatildeo satildeo

bull Natildeo permitirem a integraccedilatildeo com um portal

bull Formato das regras eacute fechado natildeo possibilitando possiacuteveis e futuras evoluccedilotildees

bull Natildeo disponibilizaccedilatildeo de acesso aos serviccedilos internos mais concretamente natildeofornecem uma framework de controlo Desta forma natildeo eacute possiacutevel reutilizar partesdo motor de inferecircncia ou do sistema de gestatildeo de regras sem que este seja feitoatraveacutes do proacuteprio produto

Candidatos excluiacutedos pelas razotildees atraacutes expostas

37

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProdutoILogOpenRulesOpenL Tablets

Tabela 2 Listagem de produtos excluiacutedos na Fase II

323 Fase III - Viabilidade econoacutemica

Sendo um paracircmetro com importacircncia relativa dada a possiacutevel aplicaccedilatildeo comercial deum produto baseado neste trabalho natildeo deixa de ser importante para o estudo realizadoDesta forma a fase III teve como objectivo filtrar a lista de resultados no sentido de excluirprodutos que natildeo sejam economicamente viaacuteveis quer por motivos de licenciamentocomercial quer por motivos de licenccedilas de utilizaccedilatildeo

Foram entatildeo considerados os produtos constantes da tabela 3 como natildeo viaacuteveis nosentido em que existem produtos open source similares para o efeito pretendido

ProdutoDroolsJESS

Tabela 3 Listagem de produtos excluiacutedos na Fase III

324 Fase IV - Viabilidade teacutecnica

Esta fase teve por objectivo filtrar a lista de resultados de forma a que os produtos natildeoviaacuteveis do ponto de vista teacutecnico natildeo sejam considerados para a escolha final

Os produtos que natildeo foram considerados viaacuteveis por questotildees teacutecnicas satildeo

38

32 MOTOR DE INFEREcircNCIA

Produto RazatildeoJEOPS Documentaccedilatildeo disponiacutevel bastante vaga projecto desconti-

nuado e natildeo estaacutevelJRuleEngine As regras satildeo compiladas para Java natildeo permite escalabili-

dade sem compilar o projectoZilonis Natildeo estaacute preparado para ser utilizado como framework ape-

nas permite uma aplicaccedilatildeo stand-alone

Hammurapi Rules As regras satildeo compiladas para Java natildeo permite escalabili-dade sem compilar o projecto

Tabela 4 Listagem de produtos excluiacutedos na Fase IV

325 Fase V - Prova de conceito

Nesta uacuteltima fase restaram trecircs produtos JClips Prova e YProlog Apoacutes a realizaccedilatildeode uma prova de conceito com estes produtos foram encontradas algumas vantagens edesvantagens Esta anaacutelise pode ser consultada nas tabelas 5 6 e 7

JClipsVantagens Desvantagens

bull Linguagem CLIPS bull Apenas permite 1 execuccedilatildeo deforma a permitir vaacuterias utilizaccedilotildeesdo motor de inferecircncia eacute necessaacuterioimplementar loacutegica especiacutefica

bull Ausecircncia de documentaccedilatildeo

Tabela 5 JClips - Vantagens e desvantagens

39

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProvaVantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza exemplos de uti-lizaccedilatildeo

bull Uacuteltima actualizaccedilatildeo em 10 deJunho de 2010

bull Instaacutevel

bull Bastante ocupaccedilatildeo de recursos(CPU e memoacuteria)

bull Disponibilizaccedilatildeo de pouca docu-mentaccedilatildeo

bull Ao invocar um predicado natildeo ins-tancia apenas as variaacuteveis na pri-meira vez mas devolve uma lista detodos os resultados possiacuteveis simi-lar ao predicado findall do LPA Pro-log

Tabela 6 Prova - Vantagens e desvantagens

YProlog

Vantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza documentaccedilatildeo eexemplos de utilizaccedilatildeo

bull Operaccedilotildees baacutesicas do Prologtecircm o mesmo comportamento

bull Uacuteltima actualizaccedilatildeo em 21 de Abrilde 2006

Tabela 7 YProlog - Vantagens e desvantagens

326 Conclusatildeo e fundamentaccedilatildeo da escolha

Tratando-se do nuacutecleo do sistema pericial e sabendo que natildeo existe actualmente ummotor de inferecircncia que corresponda totalmente aos requisitos necessaacuterios foi decidido

40

32 MOTOR DE INFEREcircNCIA

desenvolver um motor de inferecircncia de raiz recorrendo a um produto que permitisse umdesenvolvimento raacutepido e com uma curva de aprendizagem pouco acentuada Para tale depois do estudo realizado perante as vaacuterias hipoacuteteses disponiacuteveis foi decidido optarpelo YProlog

Na uacuteltima fase do estudo apresentado entre os candidatos disponiacuteveis este aparececomo o mais viaacutevel quer pelos aspectos de adaptabilidade funcionamento e facilidadede utilizaccedilatildeo quer ainda pelo nuacutemero reduzido de desvantagens encontradas face aosrestantes

41

4Wexsys

Este trabalho baseia-se na criaccedilatildeo de um sistema pericial baseado no GISPSA e oobjectivo principal passa pela integraccedilatildeo do novo sistema num ambiente de acesso globalou mais especificamente num portal web Para atingir tal meta foi descrito nos capiacutetulosanteriores quais as ferramentas a utilizar sendo que agora vamos compreender como eacuteque a soluccedilatildeo em si foi desenvolvida

O sistema que nasceu a partir desta implementaccedilatildeo foi baptizado com o nome wexsys- ldquoWeb Expert Systemrdquo Partindo da base do GISPSA o wexsys possui um motor deinferecircncia totalmente novo criado especificamente no acircmbito deste trabalho e ainda umabase de conhecimento Foi decidido adoptar o princiacutepio de utilizaccedilatildeo de regras para arepresentaccedilatildeo da base de conhecimento

De referir ainda que o raciociacutenio utilizado no motor de inferecircncia segue uma filosofiado tipo backward chaining princiacutepio jaacute descrito nos capiacutetulos anteriores

Detentor de uma interface considerada actual para os paracircmetros utilizados nos diasque correm este novo sistema pericial foi criado atraveacutes da utilizaccedilatildeo de J2EE e Icefaces

que lhe conferem um aspecto renovado e extremamente apelativo aos utilizadores Satildeoutilizadas teacutecnicas tais como Ajax que providenciam uma dinacircmica de funcionamentomuito interessante do ponto de vista da utilizaccedilatildeo

41 Arquitectura global

A soluccedilatildeo foi projectada de acordo com a arquitectura J2EE ou seja utilizando uma sepa-raccedilatildeo em moacutedulos ou componentes Foram criados dois moacutedulos principais pWexsysEAR

e WexsysEAR estes moacutedulos satildeo a separaccedilatildeo da aplicaccedilatildeo em duas grandes camadas acamada web e a camada de negoacutecio

Esta separaccedilatildeo permite a instalaccedilatildeo da aplicaccedilatildeo num uacutenico servidor ou uma instala-

43

CAPIacuteTULO 4 WEXSYS

ccedilatildeo distribuiacuteda por vaacuterios servidores possibilitando tambeacutem a utilizaccedilatildeo de clusters Estaseparaccedilatildeo torna-se bastante uacutetil se pretendermos expandir a aplicaccedilatildeo para uma utilizaccedilatildeomais intensa ao niacutevel dos acessos A possibilidade de instalaccedilatildeo em muacuteltiplas maacutequinaspermite a obtenccedilatildeo de melhores resultados quando confrontada com a utilizaccedilatildeo de umambiente com apenas um uacutenico servidor

Figura 12 Arquitectura da soluccedilatildeo

411 Moacutedulo pWexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente visual da soluccedilatildeo tambeacutem conhecida porPresentation Layer Este moacutedulo eacute composto pelos componentes descritos na figura 13

Figura 13 Arquitectura do moacutedulo visual

bull pWexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

44

41 ARQUITECTURA GLOBAL

bull wWexsysGUI - componente principal que conteacutem as JSPrsquos servlet e managed

beans

bull jWexsysWebClient - classes utilizadas na camada visual

bull TGGraphLayout - componente externo que disponibiliza um controlo que permitea definiccedilatildeo de um grafo este componente vai ser descrito na secccedilatildeo 4133

bull jWexsysLog - permite o registo da ocorrecircncia de erros

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

412 Moacutedulo WexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente de negoacutecio da aplicaccedilatildeo tambeacutem conhecidapor Business Layer eacute o centro de controlo de toda a soluccedilatildeo Este moacutedulo eacute compostopor alguns componentes como podemos ver na figura 14

Figura 14 Arquitectura do moacutedulo de negoacutecio

bull WexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

bull eWexsys - componente principal responsaacutevel pela criaccedilatildeo dos serviccedilos

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

bull jWexsysUtils - classes utilitaacuterias internas

45

CAPIacuteTULO 4 WEXSYS

bull jWexsysLog - componente auxiliar para permitir o tratamento de erros

bull jWexsysEngine - responsaacutevel pela implementaccedilatildeo do motor de inferecircncia

bull YProlog - permite a interpretaccedilatildeo de coacutedigo prolog Este componente vai serdescrito na secccedilatildeo 4133

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos

Como jaacute foi referido o wexsys foi desenvolvido respeitando a arquitectura J2EE como talos componentes que integram a aplicaccedilatildeo foram tambeacutem criados seguindo esse conceitoTodos os componentes foram estruturados de forma a poderem ser reutilizados com omiacutenimo de dependecircncias e toda a aplicaccedilatildeo foi projectada de forma a retirar o maacuteximopartido desta divisatildeo

Podemos ver na figura 15 um diagrama que permite verificar de que forma os compo-nentes estatildeo a ser utilizados O diagrama tem trecircs agrupamentos que pretendem descreverutilizando uma linguagem Object Oriented (OO) a sua visibilidade Os temos publicprotected e private satildeo utilizados como analogias aos respectivos conceitos na linguagemOO

4131 Camada de acesso puacuteblico

A camada de acesso puacuteblico expotildee os meacutetodos de interacccedilatildeo com a aplicaccedilatildeo sendocomposta por trecircs componentes wWexsysGUI jWexsysWebClient e eWexsysClient

Figura 15 Wexsys - Integraccedilatildeo dos componentes

46

41 ARQUITECTURA GLOBAL

Os componentes eWexsysClient e jWexsysWebClient contecircm interfaces de ligaccedilatildeoentre a camada visual e a camada de negoacutecio

eWexsysClient - disponibiliza as classes designadas Data Transfer Object (DTO) eainda o interface para os serviccedilos disponibilizados pelo wexsys

jWexsysWebClient - disponibiliza classes que caracterizam os conceitos de negoacuteciomas que contecircm atributos adicionais A razatildeo da existecircncia deste componente justificandashsecom a eventual expansatildeo da aplicaccedilatildeo para uma nova camada visual Os exemplos decoacutedigo 1 e 2 permitem-nos observar uma utilizaccedilatildeo de atributos extra na classe visualpara controlo de ocorrecircncia de erros

1 p u b l i c c l a s s RuleView

3 p r i v a t e i n t l e v e l = 0

5 Rule i d e n t i f i e r

7 p r i v a t e S t r i n g i d e n t i f i e r = n u l l

9 p r i v a t e S t r i n g i d e n t i f i e r E r r = n u l l

11 p r i v a t e b o o l e a n i d e n t i f i e r I n E r r = f a l s e

13

Rule d e s c r i p t i o n

15

p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

17

p r i v a t e S t r i n g d e s c r i p t i o n E r r = n u l l

19

p r i v a t e b o o l e a n d e s c r i p t i o n I n E r r = f a l s e

21

Coacutedigo 1 Excerto da classe RuleView

p u b l i c c l a s s Rule implemen t s S e r i a l i z a b l e

47

CAPIacuteTULO 4 WEXSYS

2

p r i v a t e i n t l e v e l = 0

4

Rule i d e n t i f i e r

6

p r i v a t e S t r i n g i d e n t i f i e r = n u l l

8

10 Rule d e s c r i p t i o n

12 p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

14 Coacutedigo 2 Excerto da classe Rule

O outro componente envolvido na camada puacuteblica o wWexsysGUI eacute o responsaacute-vel pela interacccedilatildeo com aplicaccedilatildeo Eacute o componente que disponibiliza as paacuteginas e oresponsaacutevel pela coordenaccedilatildeo de todo o processo web

4132 Camada de acesso protegido

A camada de acesso protegido disponibiliza componentes que podem ser utilizados pelosdois moacutedulos mas que natildeo estatildeo disponiacuteveis para o exterior Neste caso existe apenas umcomponente nestas condiccedilotildees o jWexsysLog cuja funccedilatildeo eacute assegurar o registo de erros

jWexsysLog - componente responsaacutevel pelo registo de erros utiliza internamente aframework log4j

4133 Camada de acesso privado

A camada de acesso privado incluiacute todos os componentes responsaacuteveis por processa-mento interno Os componentes responsaacuteveis pelo processamento interno satildeo eWexsysjWexsysEngine e jWexsysUtils Tambeacutem incluiacutedos no conceito de processamento internoestatildeo os componentes TGGraphLayout e YProlog

eWexsys - eacute o componente responsaacutevel pela implementaccedilatildeo do interface de negoacuteciodelegando as funcionalidades em classes especializadas ou no componente responsaacutevelpela integraccedilatildeo com o nuacutecleo da aplicaccedilatildeo o jWexsysEngine

48

41 ARQUITECTURA GLOBAL

jWexsysEngine - eacute o componente responsaacutevel pelo nuacutecleo da aplicaccedilatildeo ou sejaeacute o responsaacutevel pela integraccedilatildeo do java com o prolog e vice-versa Eacute o componenteresponsaacutevel pelo mapeamento das classes de java para as classes de comunicaccedilatildeo com oprolog

jWexsysUtils - eacute um componente auxiliar que disponibiliza e encapsula utilitaacuteriospara uma melhor organizaccedilatildeo interna da aplicaccedilatildeo

TGGraphLayout - eacute um componente tambeacutem conhecido por TouchGraph eacute umprojecto mantido por uma comunidade e estaacute disponiacutevel no sourceforge AlexanderShapiro (2010)

YProlog - este componente foi o escolhido durante a fase de estudo da implementaccedilatildeopara ser a base do motor de inferecircncia (321)

4134 Fluxo de invocaccedilatildeo

A aplicaccedilatildeo foi desenvolvida de forma a que todos os pedidos seguissem um mesmo fluxode invocaccedilatildeo de forma a uniformizar o processo Na figura 16 temos uma relaccedilatildeo dasclasses principais da aplicaccedilatildeo

Figura 16 Diagrama de classes principais

O fluxo de invocaccedilatildeo inicia-se atraveacutes do WexsysBean no caso de funcionalidades

49

CAPIacuteTULO 4 WEXSYS

do motor de inferecircncia ou atraveacutes do WexsysKBBean no caso de funcionalidades dabase de conhecimento Ambos os managed beans delegam no WexsysViewManager querecorrendo agrave classe WexsysViewHelper converte as classes view para classes DTO Aclasse WexsysViewManager por sua vez delega no session bean WexsysSessionBean quemediante o tipo de pedido delega nas classes de validaccedilatildeo ou nas classes do motor deinferecircncia WexsysEngineImpl

Este processo pode ser observado na figura 17 que representa um diagrama de sequecircn-cia exemplificativo do fluxo de invocaccedilatildeo geneacuterico

Figura 17 Diagrama de sequecircncia do fluxo de invocaccedilatildeo

414 Portal

O wexsys tem como ponto de entrada na aplicaccedilatildeo uma paacutegina inicial que permite aidentificaccedilatildeo do utilizador no sistema pericial Como se trata de um trabalho acadeacutemico aparte de validaccedilatildeo e autenticaccedilatildeo de utilizadores natildeo foi contemplada como tal eacute possiacutevelautenticar-se com qualquer utilizador Para aleacutem da autenticaccedilatildeo eacute ainda possiacutevel indicarpara a sessatildeo actual qual o miacutenimo grau de confianccedila para a apresentaccedilatildeo de uma resposta

50

41 ARQUITECTURA GLOBAL

O endereccedilo da aplicaccedilatildeo respeita o seguinte formato httpservidorportawWexsysGUI onde servidor e porta satildeo os dados de configuraccedilatildeo do Portal Server

Figura 18 Wexsys - Paacutegina inicial

Quando o utilizador inicia a utilizaccedilatildeo do sistema ficam disponiacuteveis trecircs funcionali-dades que seratildeo referidas nas secccedilotildees seguintes

4141 Templates

Um dos aspectos comuns a toda a aplicaccedilatildeo eacute o aspecto graacutefico tendo este sido imple-mentado recorrendo a Facelets Um template facelets define-se pela criaccedilatildeo de umapaacutegina modelo em que existem zonas dinacircmicas Este conceito eacute conhecido de outrastecnologias por exemplo Web Parts ou Master Pages desenvolvidos pela Microsoft

O coacutedigo 3 permite ver como foi desenvolvido o template principal

lthtml

2 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

4 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

6

lt i c e o u t p u t D e c l a r a t i o n

8 doc typeRoo t =HTML

d o c t y p e P u b l i c =minus W3C DTD XHTML 1 0 S t r i c t EN

10 doc typeSys tem = h t t p www w3 org TR xhtml1 DTD xhtml1minus s t r i c t

d t d gt

51

CAPIacuteTULO 4 WEXSYS

12 lthead gt

lt t i t l e gtwexsys minus p a g e T i t l e lt t i t l e gt

14 [ meta t a g s e l i n k t o c s s f i l e s ]

lt head gt

16 ltbody gt

lt f view l o c a l e = f a c e s C o n t e x t e x t e r n a l C o n t e x t r e q u e s t L o c a l e gt

18 lt i c e l o a d B u n d l e basename =com wexsys g u i r e s o u r c e s bund leRes

v a r = bund leRes gt

lt i c e form p a r t i a l S u b m i t = t r u e gt

20 lt d i v i d = wrapper gt

lt d i v i d = logo gt

22 lth1gtlta h r e f = gtWExSys lt a gt lt h1gt

lth2gtweb e x p e r t system lt h2gt

24 lt div gt

lt d i v i d = h e a d e r gt

26 lt d i v i d =menugt

[ Menu c o n t e n t ]

28 lt div gt

lt div gt

30 lt div gt

lt d i v i d = page gt

32 lt d i v i d = c o n t e n t gt

lt u i i n s e r t name= c o n t e n t gt

34 D e f a u l t C o n t e n t

lt u i i n s e r t gt

36 lt div gt

lt d i v i d = s i d e b a r gt

38 lt u i i n s e r t name= s i d e b a r gt

S i d e b a r c o n t e n t

40 lt u i i n s e r t gt

lt div gt

42 lt d i v s t y l e = c l e a r bo th gt

lt div gt

44 lt div gt

lt d i v i d = f o o t e r gt

46 F o o t e r c o n t e n t

lt div gt

48 lt i c e form gt

52

41 ARQUITECTURA GLOBAL

lt f view gt

50 lt body gt

lt html gt Coacutedigo 3 Coacutedigo do template principal do portal

Na listagem de coacutedigo 3 podemos ver a vermelho as aacutereas que foram definidas comodinacircmicas no coacutedigo 4 tambeacutem a vermelho podemos ver as respectivas aacutereas num cenaacuteriode implementaccedilatildeo de uma paacutegina

1 lt u i c o m p o s i t i o n

t e m p l a t e =WEBminusINF incminust e m p l a t e s mainminust e m p l a t e j s p x

3 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

5 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

7

9 lt u i d e f i n e name= c o n t e n t gt

[ ]

11 lt u i d e f i n e gt

13 lt u i d e f i n e name= s i d e b a r gt

[ ]

15 lt u i d e f i n e gt

17 lt u i c o m p o s i t i o n gt Coacutedigo 4 Coacutedigo da paacutegina inicial do portal

415 Suporte multi-liacutengua

O wexsys foi desenvolvido considerando um factor bastante relevante numa aplicaccedilatildeoactual o suporte multi-liacutengua Este suporte eacute uma das vantagens do sistema e foiimplementado recorrendo a ficheiros de recursos (properties) de forma a exteriorizartodos os textos de saiacuteda

Desta forma para dar suporte a uma nova liacutengua apenas teremos que traduzir os textosnos ficheiros de recursos e de alterar a aplicaccedilatildeo de forma a permitir seleccionar o idioma

53

CAPIacuteTULO 4 WEXSYS

A alteraccedilatildeo a ser efectuada na aplicaccedilatildeo eacute muito simples jaacute que basta passar o valor doatributo ldquolocalerdquo da tag ldquofviewrdquo como sendo a liacutengua pretendida

42 Motor de inferecircncia

Para este trabalho foi definida a criaccedilatildeo de um motor de inferecircncia de raiz que pudesseefectivamente substituir o utilizado no sistema base O novo motor desenvolvido teraacute quesuportar uma seacuterie de especificaccedilotildees a comeccedilar pela capacidade de operar num ambientemulti-utilizador

O motor de inferecircncia deve estar preparado para lidar com conhecimento incerto foiescolhido a teacutecnica dos factores de certeza por ser uma teacutecnica simples de reproduzir eeficaz na sua utilizaccedilatildeo

Para aleacutem disto e tratando-se um sistema pericial o motor de inferecircncia deveraacuteser independente da base de conhecimento utilizada e deveraacute idealmente suportar umsistema de explicaccedilotildees que responda a eventuais pedidos por parte dos utilizadores quepretendam ver mais detalhadamente quais as regras que conduziram agrave conclusatildeo obtidaTambeacutem seraacute possiacutevel saber porque eacute que determinada questatildeo eacute colocada (explicaccedilotildeesvulgarmente denominadas de como e porquecirc)

421 Multi-utilizador

Quando se pretende que um sistema pericial tenha uma utilizaccedilatildeo mono-posto (comoera o caso do GISPSA) apenas eacute criada uma instacircncia por cada vez que eacute chamado omotor de inferecircncia No nosso caso tendo sido estabelecido que o novo sistema teriaque permitir uma utilizaccedilatildeo multi-utilizador eacute necessaacuterio desenvolver os mecanismosnecessaacuterios para permitir execuccedilotildees de vaacuterias instacircncias para o novo motor de inferecircncia

A classe WexsysEngineFactory5 eacute a responsaacutevel por criar uma instacircncia do motorde inferecircncia por cada utilizador que inicia a utilizaccedilatildeo do sistema Esta classe tem ummeacutetodo do tipo static o meacutetodo getInferenceEngine que tem como paracircmetros de entradaum utilizador e devolve uma instacircncia do motor de inferecircncia As instacircncias activas satildeoguardadas internamente e sempre que eacute invocado o meacutetodo eacute obtida a respectiva instacircnciaNo caso de ainda natildeo existir uma instacircncia entatildeo eacute criada uma nova e guardada

1

C r e a t e s an i n s t a n c e o f I n f e r e n c e E n g i n e

54

42 MOTOR DE INFEREcircNCIA

3

param usernameKey

5 The usernameKey t o use

7 return I n f e r e n c e E n g i n e i n s t a n c e

throws WexsysArgumen tExcep t ion

9

p u b l i c s t a t i c WexsysEngineImpl g e t I n f e r e n c e E n g i n e ( S t r i n g

usernameKey )

11 throws WexsysArgumentExcept ion

i f ( g e t R u l e U r l ( ) == n u l l | | g e t R u l e U r l ( ) l e n g t h ( ) == 0)

13 throw new WexsysArgumentExcept ion ( mainKnowledgeBaseUrl

r u l e U r l )

15 WexsysEngineImpl i n f e r e n c e E n g i n e = n u l l

17 Have we a l r e a d y c r e a t e d an i n s t a n c e

i f ( g e t I n f e r e n c e E n g i n e s ( ) c o n t a i n s K e y ( usernameKey ) )

19 Obta in t h e i n s t a n c e a s s o c i a t e d t o t h e s p e c i f i e d key

i n f e r e n c e E n g i n e = g e t I n f e r e n c e E n g i n e s ( ) g e t ( usernameKey )

21 e l s e

Cr ea t e a new i n s t a n c e and s t o r e i t i n t h e h o l d e r

23 i n f e r e n c e E n g i n e = new WexsysEngineImpl ( usernameKey

r u l e U r l kb sUr l )

g e t I n f e r e n c e E n g i n e s ( ) p u t ( usernameKey i n f e r e n c e E n g i n e )

25

27 re turn i n f e r e n c e E n g i n e

Coacutedigo 5 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo

422 Base de conhecimento inicial

Ao partir para o desenvolvimento de um sistema pericial eacute necessaacuterio adoptar uma basede conhecimento inicial simples que sirva de suporte ao desenvolvimento do mesmo

55

CAPIacuteTULO 4 WEXSYS

A base de conhecimento inicial foi adoptada a partir do estudo de Merritt (1989) Foiseleccionada devido a duas caracteriacutesticas principais

bull simplicidade - no sentido em que as regras satildeo pequenas e simples de interligar

bull abrangecircncia - existem alguns cenaacuterios possiacuteveis de serem testados com o protoacutetipocomo por exemplo raciociacutenio sobre incerteza e conclusotildees intermeacutedias

A base de conhecimento inicial escolhida tem a seguinte estrutura

bull rule 1 if not turn_over and battery_bad then problem is battery cf 100

bull rule 2 if lights_weak then battery_bad cf 50

bull rule 3 if radio_weak then battery_bad cf 50

bull rule 4 if turn_over and smell_gas then problem is flooded cf 80

bull rule 5 if turn_over and gas_gauge is empty then problem is out_of_gas cf 90

bull rule 6 if turn_over and gas_gauge is low then problem is out_of_gas cf 30

423 Protoacutetipo do motor de inferecircncia

Para o desenvolvimento do protoacutetipo inicial do motor de inferecircncia foi necessaacuterio definiralguns aspectos essenciais tais como

1 Formato da regras

2 Formato das questotildees

3 Interacccedilatildeo assiacutencrona de questotildees e respostas

4 Algoritmos a utilizar

4231 Formato das regras

O formato das regras foi definido tendo em conta alguns pressupostos Entre elessalientam-se a necessidade da utilizaccedilatildeo de graus de confianccedila e a capacidade de guardaruma descriccedilatildeo para cada regra

O formato escolhido para a representaccedilatildeo de uma regra foi o seguinte

56

42 MOTOR DE INFEREcircNCIA

rule(

ltcodigogt rsquoDescriccedilatildeo da regrarsquo

lhs([

ev(ltpremissagt ltvalor da premissagt)

ev(ltpremissa_ngt ltvalor da premissa_ngt)

])

rhs(ev(ltsoluccedilatildeogt ltvalor da soluccedilatildeogt) CF)

)

Na definiccedilatildeo do ltLHSgt eacute possiacutevel definir uma lista de premissas e respectivos valoresno caso da regra conter mais do que uma premissa Um aspecto relevante relacionado coma lista de premissas eacute que esta considera apenas o operador conjunccedilatildeo entre premissas

4232 Formato das questotildees

O formato das questotildees foi tambeacutem definido assumindo alguns princiacutepios tais como apossibilidade de respostas muacuteltiplas e ainda a atribuiccedilatildeo de um texto quer agrave questatildeo a serapresentada quer agraves hipoacuteteses colocadas

O formato escolhido para a representaccedilatildeo de uma questatildeo foi o seguinte

question(

turn_over

rsquoO carro ligarsquo

[

answer(ltvalorgt ltdescriccedilatildeo do valorgt)

answer(ltvalor_ngt ltdescriccedilatildeo do valor_ngt)

]

ltescolha_multipla = 1 0gt

)

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas

Numa qualquer execuccedilatildeo de um software instalado e executado localmente numa maacutequinao funcionamento normal seraacute a execuccedilatildeo de um conjunto de instruccedilotildees ateacute ao ponto emque seja necessaacuteria a interacccedilatildeo com um utilizador Quando isso acontece o programafica suspenso ateacute que o utilizador responda ao que lhe foi solicitado continuando depoiscom a sua execuccedilatildeo a partir do ponto onde parou

57

CAPIacuteTULO 4 WEXSYS

No caso de um programa desenvolvido em prolog e mais especificamente um sistemapericial o conceito atraacutes descrito eacute exactamente o mesmo jaacute que o programa apenassuspende a execuccedilatildeo quando eacute necessaacuterio colocar uma questatildeo que o utilizador teraacute queforccedilosamente responder para dar continuidade ao programa

Se no entanto considerarmos a realidade de uma aplicaccedilatildeo web este princiacutepio jaacutenatildeo seraacute tatildeo linear porque um servidor web recebe um pedido executa-o e devolve umresultado O mesmo seraacute dizer que numa execuccedilatildeo de um componente prolog a partirde um servidor web a pilha de execuccedilatildeo eacute interrompida quando eacute necessaacuterio questionaro utilizador mas natildeo eacute possiacutevel continuar a execuccedilatildeo da mesma a partir do ponto ondeparou Em vez disso seraacute necessaacuterio desfazer a pilha de execuccedilatildeo criada e assim queexistir a resposta do utilizador (eacute feito novo pedido ao servidor) a execuccedilatildeo eacute realizadanovamente desde o iniacutecio mas desta vez considerando a resposta recebida

As razotildees para este comportamento justificam-se pela utilizaccedilatildeo do protocolo HTTPem que eacute necessaacuterio existir um pedido e uma resposta O que obriga a que a colocaccedilatildeoda pergunta e a resposta sejam assiacutencronos podendo existir entre as duas acccedilotildees vaacuteriospedidos (pedidos de explicaccedilotildees por exemplo)

Este ldquoproblemardquo levou agrave necessidade do desenvolvimento de um mecanismo quepermita um funcionamento coerente num programa que utilize (como neste caso) oprolog simulando o comportamento que este teria numa situaccedilatildeo de execuccedilatildeo local

O mecanismo proposto foi a alteraccedilatildeo do predicado responsaacutevel pelo processo re-cursivo especificando um atributo auxiliar de controlo que acompanha a execuccedilatildeo dopredicado Esse atributo auxiliar quando detectada a necessidade de colocaccedilatildeo de umaquestatildeo eacute instanciado e impede a prossecuccedilatildeo do predicado retornando a execuccedilatildeo paraa web com a respectiva questatildeo

Este mecanismo permite uma comunicaccedilatildeo assiacutencrona com a parte web mantendo asvantagens da recursividade do prolog

4234 Estrutura da base de conhecimento

A base de conhecimento apoacutes a definiccedilatildeo do formato de representaccedilatildeo das regras e dasquestotildees eacute a seguinte

q u e s t i o n ( t u r n _ o v e r rsquoO c a r r o l i g a rsquo

2 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

4 q u e s t i o n ( l i g h t s _ w e a k rsquoAs l u z e s e s t a o f r a c a s rsquo

58

42 MOTOR DE INFEREcircNCIA

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

6

q u e s t i o n ( rad io_weak rsquoO r a d i o e s t a f r a c o rsquo

8 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

10 q u e s t i o n ( s m e l l _ g a s rsquo C h e i r a a g a s o l i n a rsquo

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

12

q u e s t i o n ( gas_gauge rsquoO que marca o p o n t e i r o do d e p o s i t o da

g a s o l i n a rsquo

14 [ answer ( empty rsquo Vazio rsquo ) answer ( high rsquo S u f i c i e n t e rsquo ) answer

( low rsquo Rese rva rsquo ) ] 0 )

16 r u l e ( r u l e _ 1 rsquo Rule 1 rsquo

l h s ( [ ev ( t u r n _ o v e r no ) ev ( b a t t e r y _ b a d yes ) ] ) r h s ( ev (

problem b a t t e r y ) 100) )

18

r u l e ( r u l e _ 2 rsquo Rule 2 rsquo

20 l h s ( [ ev ( l i g h t s _ w e a k yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

22 r u l e ( r u l e _ 3 rsquo Rule 3 rsquo

l h s ( [ ev ( rad io_weak yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

24

r u l e ( r u l e _ 4 rsquo Rule 4 rsquo

26 l h s ( [ ev ( s m e l l _ g a s yes ) ev ( t u r n _ o v e r yes ) ] ) r h s ( ev ( problem

f l o o d e d ) 80) )

28 r u l e ( r u l e _ 5 rsquo Rule 5 rsquo

l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge empty ) ] ) r h s ( ev (

problem o u t _ o f _ g a s ) 90) )

30

r u l e ( r u l e _ 6 rsquo Rule 6 rsquo

32 l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge low ) ] ) r h s ( ev ( problem

o u t _ o f _ g a s ) 30) ) Coacutedigo 6 Representaccedilatildeo da base de conhecimento do protoacutetipo

59

CAPIacuteTULO 4 WEXSYS

4235 Algoritmos a utilizar

Um dos paracircmetros mais relevantes para o funcionamento do algoritmo inicial eacute o graumiacutenimo de confianccedila que eacute indicado no iniacutecio da utilizaccedilatildeo do sistema na paacutegina inicialSe o valor indicado para este paracircmetro for demasiado elevado poderaacute inibir algumasregras impedindo o seu disparo no caso de natildeo ser atingido o grau de confianccedila necessaacuterioPor outro lado se o valor introduzido for demasiado baixo permitiraacute que qualquer regradispare independentemente do seu grau de confianccedila traduzindo-se numa maior aacutervorede pesquisa

O motor de inferecircncia eacute executado mediante o recurso a um predicado principal Estepredicado seraacute o responsaacutevel pelo iniacutecio do processo de inferecircncia De seguida seratildeoapresentados alguns dos algoritmos considerados mais relevantes Os algoritmos 1 2 e 3representam atraveacutes da utilizaccedilatildeo de pseudo-coacutedigo alguma da loacutegica implementada nomotor de inferecircncia

Algoritmo 1 Algoritmo principal do motor de inferecircnciabegin tryToProve

while empty ControlObj doobtemRegra (r)disparoPremissaslarr truefor premissa isin LHS do

ControlObjdisparoularr verificaPremissa (p)disparoPremissaslarr disparoPremissas ampamp disparouif not empty ControlObj then

termina o algoritmoend

endif empty ControlObj then

if disparoTodasPremissas thenfireRules

endend

endend

60

42 MOTOR DE INFEREcircNCIA

Algoritmo 2 Verifica se uma premissa eacute verdadeirainput Premissa poutput ControlObj disparoubegin verificaPremissa

disparoularr false ControlObjlarr nullif checkExistFact (p) ou checkExistQuestionFact (p) oucheckExistRuleFact (pControlObj) then

disparoularr true exitend

end

Algoritmo 3 Dispara as regras que possam ser disparadasbegin fireRules

for regra isin basedeconhecimento doif regra not fired then

if regra pode disparar thencalcula grau de confianccediladispara regraif regra dispara soluccedilatildeo final then

termina execuccedilatildeo preenchendo ControlObjendif regra natildeo dispara soluccedilatildeo final then

continuaend

endend

endend

61

CAPIacuteTULO 4 WEXSYS

424 Resultado final

Apoacutes a implementaccedilatildeo do protoacutetipo inicial do motor de inferecircncia e dos testes necessaacuteriosagrave verificaccedilatildeo do bom funcionamento do mesmo chegamos ao resultado final que foiutilizado no wexsys

Este novo motor de inferecircncia foi desenvolvido levando em consideraccedilatildeo todasas caracteriacutesticas consideradas essenciais tanto para a execuccedilatildeo num ambiente multi-utilizador como para a execuccedilatildeo num servidor web e que foram jaacute descritas nas secccedilotildeesanteriores De referir ainda que face ao motor de inferecircncia do sistema base esteapresenta uma seacuterie de melhorias tais como rapidez de funcionamento e abstracccedilatildeo dabase de conhecimento utilizada

4241 Arranque da execuccedilatildeo

Como jaacute referido o motor de inferecircncia segue os algoritmos descritos na secccedilatildeo 4235 enesta secccedilatildeo seraacute abordado o processo utilizado desde o arranque do motor de inferecircnciaateacute agrave apresentaccedilatildeo dos dados como podemos ver na figura 19

Figura 19 Paacutegina inicial do motor de inferecircncia

O utilizador comeccedila na paacutegina inicial e selecciona a opccedilatildeo ldquoMotor de InferecircnciardquoDepois eacute apresentada uma paacutegina que permite iniciar o motor de inferecircncia utilizando a

62

42 MOTOR DE INFEREcircNCIA

opccedilatildeo ldquoiniciarrdquo Isto despoleta o mecanismo de inferecircncia como podemos verificar nafigura 20

Figura 20 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia

A classe YProlog invoca o predicado top_goals que mais natildeo eacute que o ponto de entradano motor de inferecircncia A sua funccedilatildeo seraacute obter qual a ldquoconclusatildeo final a procurarrdquo (estetoacutepico seraacute descrito na secccedilatildeo 432) para se poder iniciar o algoritmo propriamentedito Na listagem de coacutedigo 7 eacute possiacutevel consultar os predicados responsaacuteveis pelaimplementaccedilatildeo dos algoritmos Apenas estatildeo listados os predicados principais

Eacute possiacutevel consultar o coacutedigo do motor de inferecircncia no anexo A

t o p _ g o a l s ( Con t ro lOb j MinCF ) minus

2 t o p _ g o a l ( TopGoal )

t o p ( TopGoal Con t ro lOb j MinCF )

63

CAPIacuteTULO 4 WEXSYS

4

t o p ( TopGoal Con t ro lOb j MinCF ) minus6 r e t r a c t a l l ( h i s t 2 ) s e t ( l en 0 )

g e t R u l e M o r e R e l e v a n t ( TopGoal Rule )

8 t r y T o P r o v e ( Rule Con t ro lOb j MinCF )

10 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) minusr u l e ( Rule _ l h s (LHS) _ )

12 p r o v e L i s t H y p (LHS Con t ro lOb j MinCF )

g e t ( l en LEN) LEN1 i s LEN + 1

14 a s s e r t ( h i s t ( LEN1 Rule ) )

s e t ( l en LEN1)

16 (

check i f r u l e has re turn c o n t r o l o b j e c t

18 ( v a r ( C o n t r o l O b j ) ) minusgt(

no c o n t r o l o b j e c t found check i f o t h e r r u l e s needs t o

be f i r e d

20 f i r e R u l e s ( Con t ro lOb j MinCF )

) (

22 c o n t r o l o b j e c t found

t rue24 )

)

26

p r o v e L i s t H y p ( [ ] Con t ro lOb j MinCF )

28 p r o v e L i s t H y p ( [H | T ] Con t ro lOb j MinCF ) minusproveHyp (H Con t ro lOb j MinCF )

30 (

( v a r ( C o n t r o l O b j ) ) minusgt (

32 p r o v e L i s t H y p ( T Con t ro lOb j MinCF )

) (

34 t rue)

36 )

38

f a c t a l r e a d y known

40 proveHyp (H Con t ro lOb j MinCF ) minus

64

42 MOTOR DE INFEREcircNCIA

H = ev (X Y) f a c t (X Y _ )

42

t h e r e i s a q u e s t i o n t h a t can l e a d t o a f a c t

44 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

n o t ( f a c t (X _ _ ) )

46 q u e s t i o n (X _ _ _ )

n o t ( n o t _ q u e s t i o n (X) )

48 C o n t r o l O b j = ask (X)

50 t h e r e i s a c o n c l u s i o n t h a t can

l e a d t o a q u e s t i o n t h a t can l e a d t o a f a c t

52 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

r u l e ( Rule _ l h s (LHS) r h s ( ev (X _ ) V) )

54 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) Coacutedigo 7 Predicados principais do motor de inferecircncia

4242 Mecanismo de respostas

O mecanismo de respostas eacute algo similar ao processo descrito anteriormente A suafunccedilatildeo seraacute guardar a resposta que foi seleccionada pelo utilizador e prosseguir com oalgoritmo de forma a que uma nova questatildeo seja colocada ou a soluccedilatildeo final alcanccedilada

Um paracircmetro considerado obrigatoacuterio na submissatildeo de uma resposta eacute o grau deconfianccedila Este valor serviraacute para realizar o caacutelculo do grau de confianccedila da regra quandoa mesma puder ser disparada

Podemos ver na figura 21 o processo de resposta a uma questatildeo

65

CAPIacuteTULO 4 WEXSYS

Figura 21 Fluxo de invocaccedilatildeo de resposta a uma questatildeo

Eacute ainda possiacutevel natildeo responder agrave questatildeo colocada utilizando a opccedilatildeo ldquonatildeo sei natildeoresponderrdquo Esta opccedilatildeo iraacute guardar internamente uma indicaccedilatildeo para natildeo voltar a colocara questatildeo ignorada evitando entrar em ciclos

Agrave medida que o processo avanccedila eacute possiacutevel acompanhar o estado actual do motor deinferecircncia Este acompanhamento eacute realizado mediante a anaacutelise da zona situada do ladodireito da paacutegina e que vai sendo actualizada a cada interacccedilatildeo com o motor de inferecircnciaA zona referida permite obter informaccedilotildees acerca de

bull Regras que jaacute foram disparadas

bull Factos que foram inferidos pelo disparo das regras

bull Factos que foram facultados pelo utilizador ao responder agraves questotildees

bull Factos conhecidos antes do iniacutecio do processo de inferecircncia

66

42 MOTOR DE INFEREcircNCIA

Estes factos satildeo obtidos atraveacutes do predicado ldquoinf_sys((L_Rules L_Inf_Facts L_Know_FactsL_Init_Facts)rdquo Este predicado eacute invocado apoacutes cada interacccedilatildeo com o motor de inferecircnciae desta forma os dados estatildeo sempre actualizados

4243 Conclusatildeo final encontrada

Quando o disparo de uma regra leva a que seja adicionado um facto que corresponde auma soluccedilatildeo final o motor de inferecircncia termina a sua execuccedilatildeo devolvendo a conclusatildeofinal a que chegou bem como o respectivo grau de confianccedila Na figura 22 podemos ver afase final do processo de inferecircncia O grau de confianccedila da conclusatildeo final eacute atribuiacutedocom recurso agrave foacutermula seguinte

Dada uma regra X com premissas P1 a Pn e CF =CF (X) entatildeo temos

CF(X P1 Pn) = min [CF(P1) CF(Pn)]timesCF(X)

Figura 22 Conclusatildeo da inferecircncia

4244 Explicaccedilotildees

Eacute possiacutevel em qualquer altura colocar a questatildeo ldquoporquecircrdquo antes de submetermos umaresposta ou a questatildeo ldquocomordquo apoacutes uma conclusatildeo final Este tipo de explicaccedilotildeescontribui para a fase de validaccedilatildeo do sistema pericial colocando-as ao dispor do perito

67

CAPIacuteTULO 4 WEXSYS

responsaacutevel pela validaccedilatildeo expondo desta forma o raciociacutenio seguido no decorrer dainferecircncia Exemplos da solicitaccedilatildeo de explicaccedilotildees podem ser consultados atraveacutes dasfiguras 23 24 e 25

Figura 23 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo

68

42 MOTOR DE INFEREcircNCIA

Figura 24 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia

Figura 25 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final

69

CAPIacuteTULO 4 WEXSYS

As explicaccedilotildees ldquoporquecircrdquo foram implementadas recorrendo a predicados temporaacuterios(hist) que acompanham o desenrolar do motor de inferecircncia Eacute possiacutevel em qualqueraltura consultar esses predicados para obter de uma forma imediata a explicaccedilatildeo doporquecirc da questatildeo estar a ser feita

As explicaccedilotildees ldquocomordquo jaacute seguem um mecanismo mais complexo Quando umaregra eacute disparada origina conclusotildees intermeacutedias ou finais essas conclusotildees natildeo satildeo maisdo que simples factos O motor de inferecircncia sempre que dispara uma regra associa aofacto a regra que o originou por intermeacutedio do predicado inf_exp_how

Desta forma basta algum coacutedigo para que seja possiacutevel a obtenccedilatildeo de ambas asexplicaccedilotildees Esse coacutedigo pode ser consultado na listagem 8 em que os predicados why ehow se referem agraves explicaccedilotildees ldquoporquecircrdquo e ldquocomordquo respectivamente

why ( L ) minus

2 f i n d a l l ( r (OX) h i s t (OX) L )

4 how ( A t t r Value R e s u l t ) minusin f_exp_how ( A t t r Value Ru le s )

6 explainHow ( Rules E x p l a n a t i o n )

append ( Rules E x p l a n a t i o n R e s u l t )

8

explainHow ( [ ] [ ] )

10 explainHow ( [H | T ] R e s u l t ) minusi n n e r E x p l a i n (H E x p l a n a t i o n H )

12 explainHow ( T E x p l a n a t i o n R u l e s )

append ( Explana t ionH E x p l a n a t i o n R u l e s R e s u l t )

14

16 i n n e r E x p l a i n ( Rule E x p l a n a t i o n ) minusr u l e ( Rule _ l h s (LHS) _ )

18 expla inLHS (LHS E x p l a n a t i o n )

20 expla inLHS ( [ ] [ ] )

expla inLHS ( [ ev ( A t t r Value ) | T ] E x p l a n a t i o n A ) minus22 n o t ( inf_exp_how ( A t t r Value _ ) )

f a c t ( A t t r Value _ )

24 expla inLHS ( T E x p l a n a t i o n A )

70

43 BASE DE CONHECIMENTO

26 expla inLHS ( [ ev ( A t t r Value ) | T ] Resu l tA ) minushow ( A t t r Value E x p l a n a t i o n A )

28 expla inLHS ( T E x p l a n a t i o n )

append ( Explana t ionA E x p l a n a t i o n Resu l tA ) Coacutedigo 8 Predicados principais do sistema de explicaccedilotildees

43 Base de conhecimento

A base de conhecimento armazena o conhecimento extraiacutedo de um ou mais peritos e con-siste numa seacuterie de factos e regras acerca de um determinado domiacutenio Sendo dependenteda aacuterea que se pretende abranger com o sistema pericial a base de conhecimento eacute deconstruccedilatildeo especiacutefica para cada situaccedilatildeo em que seja necessaacuterio desenvolver este tipo desistema

Os procedimentos de inserccedilatildeo actualizaccedilatildeo e remoccedilatildeo dos factos e regras que com-potildeem a base de conhecimento (gestatildeo da base de conhecimento) teratildeo que ser na medidado possiacutevel procedimentos simples que sejam facilmente compreendidos pelos utilizado-res

As funcionalidades de gestatildeo da base de conhecimento estatildeo disponiacuteveis na opccedilatildeoldquoBase de Conhecimentordquo da paacutegina inicial como podemos observar na figura 26

71

CAPIacuteTULO 4 WEXSYS

Figura 26 Paacutegina inicial da gestatildeo da base de conhecimento

431 Leitura da base de conhecimento

Ao iniciar a execuccedilatildeo a base de conhecimento eacute carregada para memoacuteria a partir de umficheiro Este processo eacute realizado de forma iterativa e de acordo com uma determinadasequecircncia regras questotildees conclusatildeo final e por uacuteltimo os factos iniciais

Por sua vez o carregamento das regras eacute efectuado em duas fases sendo que primeirosatildeo obtidas as regras existentes (ldquoretrieve_rules(L)rdquo) e depois para cada regra eacute construiacutedaa sua estrutura (ldquobuildRuleObjectrdquo) Podemos observar a descriccedilatildeo deste processo nafigura 27

72

43 BASE DE CONHECIMENTO

Figura 27 Processo de carregamento das regras

Quanto ao carregamento das questotildees eacute similar ao das regras jaacute que eacute efectuadoigualmente em duas fases Primeiro obtecircm-se todas as questotildees (ldquoretrieve_questions(L)rdquo)e depois para cada questatildeo eacute preenchida a sua estrutura (ldquobuildQuestionObjectrdquo)

Jaacute o carregamento da conclusatildeo final eacute realizado atraveacutes do predicado ldquotop_goal(L)rdquoEste predicado vai devolver a conclusatildeo final guardada

Por fim os factos iniciais satildeo obtidos reutilizando um processo de obtenccedilatildeo de factos(ldquoinf_sys((L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)rdquo) Este processo jaacute foireferido na secccedilatildeo que descreve o motor de inferecircncia (4242)

432 Conclusatildeo final a encontrar

A conclusatildeo final a encontrar representa o predicado que vai ser considerado comoobjectivo no decorrer do motor de inferecircncia Soacute vatildeo ser consideradas soluccedilotildees queconvergem para uma soluccedilatildeo final que contenha o predicado especificado no RHS

Para definir uma conclusatildeo final basta especificar o nome do predicado da soluccedilatildeoque pretendemos encontrar com o motor de inferecircncia

73

CAPIacuteTULO 4 WEXSYS

433 Factos iniciais

Os factos iniciais permitem adicionar conhecimento preacutevio a uma base de conhecimentoPara adicionaacute-los eacute necessaacuterio utilizar o botatildeo ldquoAdicionar facto inicialrdquo e preencher oscampos necessaacuterios Para remover um facto inicial previamente inserido eacute utilizado obotatildeo ldquoRemover facto inicialrdquo e eacute necessaacuterio confirmar a acccedilatildeo que se estaacute a efectuar deforma a evitar uma remoccedilatildeo acidental

434 Regras

As regras satildeo o ponto essencial da gestatildeo da base de conhecimento As regras satildeo osdados disponiacuteveis para a aplicaccedilatildeo e como tal quanto melhor forem definidas melhorqualidade a aplicaccedilatildeo teraacute no sentido em que os resultados seratildeo mais correctos e fiaacuteveis

4341 CriarAlterar uma regra

O processo de criaccedilatildeo de uma nova regra foi simplificado Jaacute natildeo eacute necessaacuterio conhecera sintaxe das regras e tambeacutem jaacute natildeo eacute necessaacuterio conhecer os factos a utilizar comopremissas

Para adicionar uma regra apenas temos que arrastar questotildees eou conclusotildees inter-meacutedias de forma a construir a regra que pretendemos inserir

No caso de estarmos a alterar uma regra ou no caso de termos adicionado uma questatildeoou conclusatildeo intermeacutedia incorrectamente podemos eliminar essa premissa simplesmenteseleccionando a ldquocheckboxrdquo respectiva e utilizar a opccedilatildeo ldquoRemover seleccionadosrdquo

74

43 BASE DE CONHECIMENTO

Figura 28 Introduzir uma nova regra

Apoacutes termos arrastado todas as questotildees eou conclusotildees intermeacutedias para a lista depremissas temos que indicar os respectivos valores Este processo estaacute simplificado nosentido em que apenas temos que utilizar a caixa de selecccedilatildeo agrave frente de cada controlo eseleccionar o respectivo valor

Os valores apresentados satildeo obtidos de forma diferente quer se trate de uma questatildeo oude uma conclusatildeo intermeacutedia No caso das questotildees os valores obtidos satildeo os indicadosaquando da sua inserccedilatildeo No caso das conclusotildees intermeacutedias satildeo obtidos todos os valoresutilizados nas regras ateacute ao momento Sempre que uma regra eacute inserida ou actualizadaeacute despoletado um processo que actualiza os valores das conclusotildees intermeacutedias com osnovos valores introduzidos

75

CAPIacuteTULO 4 WEXSYS

Figura 29 Apresentaccedilatildeo de valores configurados na questatildeo

4342 Questotildees

As questotildees acabam por ser o ponto de contacto da aplicaccedilatildeo com o utilizador Sempreque eacute necessaacuterio suspender o processamento para questionar o utilizador este teraacute ahipoacutetese de intervir na execuccedilatildeo Atraveacutes das questotildees colocadas vai ser possiacutevel inferiroutros factos que no final e numa situaccedilatildeo ideal conduzem a uma soluccedilatildeo possiacutevel

Uma questatildeo eacute identificada por um coacutedigo por uma descriccedilatildeo e ainda por um conjuntode valores possiacuteveis as respostas Quando inserimos uma nova regra podemos criar novasquestotildees utilizando a opccedilatildeo ldquoAdicionar uma questatildeordquo Surge entatildeo o formulaacuterio deintroduccedilatildeo de uma questatildeo como podemos ver na figura 30

Figura 30 Formulaacuterio de introduccedilatildeo de uma questatildeo

As respostas configuradas no formulaacuterio de introduccedilatildeo seratildeo as respostas que iratildeoaparecer quando inserirmos uma nova regra e arrastarmos a questatildeo para a lista depremissas

76

43 BASE DE CONHECIMENTO

4343 Verificaccedilatildeo

Apoacutes a introduccedilatildeo ou alteraccedilatildeo das regras deve ser realizado o processo de verificaccedilatildeoda base de conhecimento De uma forma quase imperceptiacutevel na fase de introduccedilatildeode regras estamos a activar este processo jaacute que eacute garantido que as regras introduzidasestatildeo coerentes e que os valores das premissas efectivamente existem Podemos dizerque estamos perante a primeira fase do processo de verificaccedilatildeo designado por verificaccedilatildeoproacute-activa

Para este trabalho foi considerado a verificaccedilatildeo de dois tipos de anomalia na base deregras redundacircncia e regras duplicadas A inclusatildeo de novos mecanismos de verificaccedilatildeoeacute possiacutevel bastando para isso a alteraccedilatildeo do predicado ldquoverification(L)rdquo

A grande diferenccedila entre os dois meacutetodos implementados eacute que uma regra redundanteadiciona conhecimento desnecessaacuterio agrave base de conhecimento enquanto que uma regraduplicada como o nome indica eacute apenas uma duplicaccedilatildeo do conhecimento

Na figura 31 podemos verificar o mecanismo de verificaccedilatildeo implementado que permiteidentificar que regra estaacute em conflito com que outra regra e qual o tipo de conflito

Figura 31 Verificaccedilatildeo da base de conhecimento

435 Gravaccedilatildeo da base de conhecimento

O processo de gravaccedilatildeo da base de conhecimento eacute similar ao processo de leitura com adiferenccedila de natildeo ser iterativo O processo de gravaccedilatildeo da base de conhecimento iniciacom a acccedilatildeo do utilizador na opccedilatildeo ldquoFinalizarrdquo que invoca o meacutetodo ldquosaveAll()rdquo doWexsysKBBean O resto do processo pode ser observado na figura 32

77

CAPIacuteTULO 4 WEXSYS

Figura 32 Processo de gravaccedilatildeo da base de conhecimento

436 Conversatildeo GISPSA

A conversatildeo da base de conhecimento do GISPSA para o formato wexsys foi efectuada emduas fases Na primeira fase foi feita uma migraccedilatildeo sintaacutectica da forma de representaccedilatildeode regras utilizada para a forma utilizada pelo wexsys Na segunda fase foi efectuadoum processo manual de conversatildeo

O sistema anterior delegava nas regras alguns predicados utilizados unicamente parao sistema de explicaccedilotildees Esta caracteriacutestica tornou a migraccedilatildeo algo morosa jaacute que eranecessaacuterio proceder agrave anaacutelise regra a regra de quais os predicados necessaacuterios e quais osdescartaacuteveis

78

44 ANAacuteLISE GRAacuteFICA

44 Anaacutelise graacutefica

Para aleacutem do motor de inferecircncia e da gestatildeo da base de conhecimento foi implemen-tado como prova de conceito um sistema graacutefico que permite observar facilmente arepresentaccedilatildeo de uma base de conhecimento sob a forma de um grafo

Este sistema permite visualizar e consultar a explosatildeo combinatoacuteria das regras edas premissas que as compotildeem Este tipo de ferramenta pode ser bastante uacutetil quandoutilizado nas tarefas de validaccedilatildeo por parte do perito Desta forma o perito consegue deuma forma visual e simples verificar o relacionamento entre as conclusotildees e as premissas

441 Implementaccedilatildeo

Esta funcionalidade foi implementada recorrendo agrave utilizaccedilatildeo de um controlo externodesignado por TGGraphLayout e desenvolvido por Alexander Shapiro (2010) O controlodisponibiliza uma applet que encapsula funcionalidades que permitem a interacccedilatildeo graacuteficacom a representaccedilatildeo de um grafo

Por se tratar de uma applet a comunicaccedilatildeo com os managed beans torna-se tecnica-mente mais difiacutecil de implementar Esse motivo levou agrave necessidade de criaccedilatildeo de umaservlet para simplificar o processo de interacccedilatildeo entre a aplicaccedilatildeo e a applet do controlovisual

A servlet WexsysServlet foi criada para dar suporte agrave comunicaccedilatildeo com o mana-

ged bean WexsysKBBean sendo este responsaacutevel pela obtenccedilatildeo dos dados no formatoreconhecido pelo controlo

O controlo teve que ser alterado de forma a permitir a interacccedilatildeo com a servlet bemcomo efectuar o tratamento dos dados no formato especificado ou seja criar uma espeacuteciede protocolo de comunicaccedilatildeo

O algoritmo 4 resume a implementaccedilatildeo efectuada ao niacutevel da applet e o algoritmo 5demonstra de que forma esses dados satildeo obtidos

442 Funcionamento

O grafo resultante eacute construiacutedo a partir de uma posiccedilatildeo inicial designada por ponto departida Eacute utilizada a designaccedilatildeo ldquordquo para simplificar a identificaccedilatildeo no grafo eeacute possiacutevel ver o resultado da paacutegina inicial na figura 33

As conclusotildees satildeo representadas por rectacircngulos com um fundo branco e as premissassatildeo identificadas por rectacircngulos com fundo azul

79

CAPIacuteTULO 4 WEXSYS

Algoritmo 4 Algoritmo responsaacutevel pelo desenho da appletinput graphPaths graphConclusionsbegin drawGraph

initializeNodes ()for path isin graphPaths do

init oldfor step isin path do

if nodes do not contain step thenbuildNode (step)

endif step is first then

oldlarr stepelse

addEdge (old step)oldlarr step

endend

endcreateStartNode ()linkUnlinkedNodesToStartNode ()

end

O ponto de partida liga-se entatildeo agraves regras que apenas contenham premissas quesejam questotildees construindo o grafo de possibilidades Apoacutes identificar as regras quesatildeo representadas com ligaccedilatildeo ao ponto de partida satildeo tratadas as restantes regrasconstruindo o resto do grafo agrave medida que as regras satildeo avaliadas

Eacute possiacutevel centrar o grafo numa premissa ou numa conclusatildeo Ao centrarmos ografo satildeo mantidos apenas os noacutes que se ligam directamente ao noacute que seleccionaacutemosNo entanto eacute possiacutevel expandir um noacute sem este tipo de comportamento bastando paraisso utilizar as funcionalidades disponiacuteveis ao pressionar a tecla direita do rato sobre o

Figura 33 Paacutegina inicial da anaacutelise graacutefica

80

44 ANAacuteLISE GRAacuteFICA

Algoritmo 5 Algoritmo para construccedilatildeo dos dados do grafooutput graphPaths and grapConclusionsbegin retrieveGraphPathAndConclusions

questionslarr gatherQuestionfor rule isin rules do

isFinalRulelarr conclusaoFinal igual RHS de ruleif isFinalRule then

add rule to grapConclusionssimpleRulelarr truegraphPathslarr nullfor premissa isin ruleLHS do

isConditionAskablelarr questions contains premissaif isConditionAskable then

add premissa and value to graphPathselse

simpleRulelarr falseretrieveGraphFromAtom (premissa)add result to graphPaths

endend

endend

end

respectivo noacute As funcionalidades disponiacuteveis satildeo expandir colapsar esconder e centrare satildeo auto-descritivas pelo que dispensam qualquer explicaccedilatildeo do seu funcionamento

Figura 34 Exemplo de grafo totalmente expandido

Eacute possiacutevel utilizar esta funcionalidade para identificarmos um cenaacuterio especiacuteficopor exemplo para consultar quais as premissas necessaacuterias para a obtenccedilatildeo de umadeterminada soluccedilatildeo

81

CAPIacuteTULO 4 WEXSYS

Figura 35 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto

443 Limitaccedilotildees

Esta funcionalidade no seu estado actual apresenta algumas limitaccedilotildees Conveacutem referirantes de mais que esta soluccedilatildeo natildeo eacute uma alternativa ao motor de inferecircncia mas sim umaferramenta de apoio visual auxiliar ao mesmo

Das limitaccedilotildees existentes salientam-se as seguintes

bull a utilizaccedilatildeo deste controlo obriga a que o utilizador esteja familiarizado com aspremissas e os seus valores Natildeo estatildeo disponiacuteveis os textos de apoio para aspremissas da mesma forma que satildeo mostrados no motor de inferecircncia Umapossiacutevel soluccedilatildeo passaria pela interacccedilatildeo da applet com a servlet para atraveacutes domecanismo de ajax push despoletar a actualizaccedilatildeo da JSP mostrando o texto doelemento seleccionado

bull o tamanho dos noacutes eacute grande quando comparado com o espaccedilo disponiacutevel nocontrolo o que por vezes obriga a algumas sobreposiccedilotildees dos noacutes tornado-oimperceptiacutevel Este problema pode ser observado na figura 34 Para atenuar esteproblema existem controlos que permitem modificar o factor de ampliaccedilatildeo rodar ocontrolo e controlar o grau de visualizaccedilatildeo hiperboacutelica

bull apoacutes a navegaccedilatildeo no grafo perde-se de alguma forma o contexto que o originouEste problema pode ser observado na figura 35

82

5Conclusotildees

Ateacute que ponto eacute que um software consegue efectivamente substituir um ser humanoquando estamos a falar de raciociacutenio Se esse raciociacutenio for estritamente linear seguindoum determinado percurso com alguns desvios ao longo do mesmo que acabam por ditarum desfecho diferente consoante as decisotildees que vatildeo sendo tomadas a substituiccedilatildeo podemesmo ser efectiva e ateacute mesmo melhor em alguns casos

Um perito natildeo eacute no entanto algueacutem que se limita a dizer sim ou natildeo ou algueacutem queapenas decide se eacute necessaacuterio seguir por este caminho ou aquele Um perito normalmenteobserva dados e factos e infere sobre os mesmos tendo a sensibilidade para em muitasocasiotildees conseguir ateacute mesmo obter a soluccedilatildeo final muito antes de terminar a anaacutelise detodos os paracircmetros A isso chama-se conhecimento heuriacutestico natildeo linear afectada poruma enormidade de factores que apenas eacute possiacutevel encontrar num ser humano

Estes factores podem ter tanto de beneacutefico como de nocivo Ao natildeo analisar atotalidade dos dados um perito poderaacute incorrer num erro ou mesmo tendo-os analisadoateacute ao fim poderaacute natildeo ter estado completamente atento ou compenetrado no que estavaa fazer pelo mero facto de poder estar cansado ou indisposto para executar tal tarefanaquele preciso momento

Um sistema pericial pode realmente ser uma mais valia no sentido em que estaacutetotalmente desprovido de emoccedilotildees e fadiga ao contraacuterio de um ser humano Paraaleacutem disto natildeo eacute necessaacuterio temer que o sistema pericial se desloque a uma qualquerlocalizaccedilatildeo remota e de difiacutecil acesso ou que chegue fora do horaacuterio previsto limitadopelos atrasos de uma simples viagem

Todos estes factos podem realmente ser considerados quando analisamos o funciona-mento do GISPSA Efectivamente trata-se de um sistema pericial estaacute sempre disponiacutevele totalmente desprovido de caracteriacutesticas humanas que poderiam eventualmente toldaro raciociacutenio do mesmo No entanto este sistema carecia de algo muito importante a

83

CAPIacuteTULO 5 CONCLUSOtildeES

acessibilidade a partir de qualquer local em qualquer hora e por parte de vaacuterios utilizado-res em simultacircneo de modo imediato e sem preacute-aviso Antes de mais o GISPSA eacute umaaplicaccedilatildeo de execuccedilatildeo local e natildeo foi de todo desenvolvida para funcionamento em redeComo tal o acesso agrave mesma estava agrave partida bastante limitado Depois cada instalaccedilatildeoapenas permitia a interacccedilatildeo com um utilizador de cada vez Existem ainda algumaslimitaccedilotildees identificadas no GISPSA que foram ultrapassadas com o desenvolvimento dowexsys tais como manutenccedilatildeo da base de conhecimento capacidade de raciocinar sobreconhecimento incerto e a implementaccedilatildeo de meacutetodos de verificaccedilatildeo

Hoje em dia eacute possiacutevel aceder a uma rede global (a internet) a partir de qualquer pontodo planeta e isto torna igualmente possiacutevel disponibilizar uma aplicaccedilatildeo de forma a quequalquer pessoa a consiga utilizar a qualquer hora e a partir de qualquer local O wexsysaplica essa transformaccedilatildeo ao GISPSA e leva-o ao proacuteximo patamar evolutivo

Como qualquer evoluccedilatildeo tambeacutem esta pretende natildeo soacute dotar a nova versatildeo comfuncionalidades que a anterior natildeo possuiacutea como tambeacutem pretende melhorar e corrigiros problemas que eventualmente foram encontrados Ao longo do tempo de utilizaccedilatildeodo GISPSA verificaram-se algumas coisas que podiam e deviam ser substituiacutedas Aleacutemdisto a proacutepria evoluccedilatildeo dos sistemas graacuteficos e de interacccedilatildeo colocaram o GISPSAcomo uma aplicaccedilatildeo de visual jaacute algo ultrapassado aspecto que tambeacutem carecia de umarevisatildeo para a realidade mais actual

A opccedilatildeo pela incorporaccedilatildeo do wexsys num portal teve a ver com as grandes capacida-des que este tipo de infra-estuturas tem hoje em dia Impulsionados por empresas comoa IBM os portais web representam janelas de negoacutecio com ligaccedilatildeo ao mundo e com aspotencialidades que daiacute advecircm Caracteriacutesticas como a facilidade de acesso sistemas debackup manutenccedilatildeo de tempos de uptime elevados rapidez de funcionamento facilidadede funcionamento e leitura entre muitas outras representam uma mais valia para estetipo de alojamento de aplicaccedilotildees

51 Contributos da soluccedilatildeo desenvolvida

O grande objectivo a que este trabalho se propunha foi alcanccedilado e consistia na criaccedilatildeode um sistema pericial baseado no GISPSA mas que pudesse ser acedido a partir deuma rede tornando-o global Os restantes objectivos foram igualmente alcanccedilados e oresultado final mostra-se soacutelido e fiaacutevel para candidato efectivo agrave substituiccedilatildeo do sistemaque lhe daacute a base No entanto existem outros pontos positivos na soluccedilatildeo encontradaquando comparada com outros sistemas periciais jaacute referidos nos capiacutetulos anteriores

84

51 CONTRIBUTOS DA SOLUCcedilAtildeO DESENVOLVIDA

Esses sistemas satildeo o LOMA o MDSS e o Whale watcherAo proceder a uma comparaccedilatildeo com estes sistemas a soluccedilatildeo desenvolvida neste

trabalho apresenta algumas vantagens Desde logo estamos a falar de aplicaccedilotildees web

com periacuteodos de desenvolvimento diferentes o que implica a utilizaccedilatildeo de tecnologiasdiferentes A vantagem da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo mais recentes dinacircmi-cas eficazes e visualmente mais apelativas coloca o wexsys num patamar efectivamentesuperior Para aleacutem disso o wexsys pode (como resultado da utilizaccedilatildeo dessas mesmastecnologias) ser facilmente integrado noutras aplicaccedilotildees como webservices ou portaisenquanto que os outros sistemas natildeo

Outra das particularidades dos sistemas estudados eacute que natildeo possuem (de acordocom as respectivas documentaccedilotildees) mecanismos de verificaccedilatildeo de regras e sempre queeacute necessaacuterio proceder a alteraccedilotildees a essas mesmas regras o utilizador teraacute que ter umconhecimento profundo acerca da sintaxe utilizada (gramaacutetica riacutegida) Para aleacutem distotambeacutem natildeo possuem (com excepccedilatildeo do MDSS) suporte a vaacuterias liacutenguas

Jaacute quanto agrave questatildeo da capacidade de funcionamento multi-utilizador apesar deestarmos a falar de aplicaccedilotildees web os sistemas estudados neste documento natildeo estatildeopreparados para cargas de processamento demasiado elevadas porque natildeo foi contempladaa possibilidade de um funcionamento distribuiacutedo o que permitiria aliviar a carga deprocessos e aumentar o nuacutemero maacuteximo de utilizadores

Para descrever mais em detalhe os objectivos alcanccedilados com a soluccedilatildeo propostapassamos a enunciaacute-los

bull Criaccedilatildeo de uma aplicaccedilatildeo web - Ao criar a nova aplicaccedilatildeo a questatildeo da distribuiccedilatildeodessa mesma aplicaccedilatildeo atraveacutes de uma rede era fulcral jaacute que permitiria uma seacuteriede factores que ateacute aqui natildeo estavam disponiacuteveis A possibilidade de utilizaccedilatildeo deuma base de conhecimento global onde todos os utilizadores pudessem contribuirpara o seu melhoramento facilidade de acesso a partir de qualquer localizaccedilatildeodisponibilidade a qualquer hora e dia capacidade de realizaccedilatildeo de backups paragarantir a continuidade dos dados e muacuteltiplos acessos simultacircneos foram questotildeesque ficaram resolvidas com a concretizaccedilatildeo deste objectivo

bull Verificaccedilatildeo das regras - Uma das lacunas do sistema base o GISPSA era a faltade capacidade para realizar a verificaccedilatildeo das regras que era colocadas na basede conhecimento Era possiacutevel chegar a cenaacuterios de inconsistecircncia atraveacutes dacontradiccedilatildeo de regras podendo chegar a cenaacuterios em que simplesmente natildeo erapossiacutevel prosseguir com a inferecircncia das regras nem tatildeo pouco chegar a umaconclusatildeo ou soluccedilatildeo possiacutevel

85

CAPIacuteTULO 5 CONCLUSOtildeES

Ao adicionar um mecanismo de verificaccedilatildeo de regras como o foi neste caso assisti-mos natildeo soacute ao cumprimento de mais um objectivo mas tambeacutem a uma evoluccedilatildeosignificativa do novo sistema pericial que com esta caracteriacutestica se torna maisfiaacutevel e eficaz

bull Manutenccedilatildeo da base de conhecimento - Neste novo sistema eacute mais simples procederagrave actualizaccedilatildeo da base de conhecimento quer para adicionar alterar ou removerfactos na mesma Jaacute natildeo eacute necessaacuterio ter formaccedilatildeo sobre a sintaxe necessaacuteria pararealizar estas operaccedilotildees deixando de lado a rigidez que era necessaacuteria aplicarno sistema base Isto permite alargar o leque de utilizaccedilatildeo do sistema a outrosutilizadores que na versatildeo anterior natildeo teriam oportunidade para o fazer

bull Melhor usabilidade - Uma das grandes transformaccedilotildees para quem conhecia osistema anterior e encontra a nova versatildeo passa pelo aspecto visual Quando umutilizador eacute confrontado com uma aplicaccedilatildeo aquilo com que se depara eacute a parte deinteracccedilatildeo responsaacutevel por mediar o diaacutelogo entre o utilizador e a aplicaccedilatildeo per si

Quando uma aplicaccedilatildeo qualquer que ela seja possui um visual pouco atraente eapelativo para o utilizador com bototildees e janelas pouco interessantes componentesmal colocados atalhos escondidos e de difiacutecil percepccedilatildeo ou ateacute mesmo comcores pouco agradaacuteveis o utilizador acaba por seja de forma gradual ou imediataabandonar a aplicaccedilatildeo e mostra pouco interesse em voltar a utilizaacute-la a natildeo ser queseja efectivamente obrigado a fazecirc-lo

Neste trabalho atraveacutes da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo web tais comoJavascript e Ajax e ainda atraveacutes da utilizaccedilatildeo do Icefaces foi possiacutevel chegar aum visual considerado por muitos utilizadores como interessante e actual o que vaiplenamente de encontro ao objectivo proposto para este ponto

bull Multi-utilizador - Uma das grandes criacuteticas do sistema base tinha efectivamente aver com o facto de natildeo ser possiacutevel colocar mais do que um utilizador a trabalharao mesmo tempo Para tal ser possiacutevel seria necessaacuterio proceder agrave instalaccedilatildeo dosistema noutro computador e consequentemente adquirir outra licenccedila comercialde utilizaccedilatildeo

Ao adicionar a capacidade de vaacuterios utilizadores poderem estar a trabalhar nosistema em simultacircneo este objectivo verifica-se como estando cumprido na to-talidade pois natildeo apenas isso jaacute eacute possiacutevel neste novo sistema pericial como acapacidade de processamento natildeo eacute afectada jaacute que eacute possiacutevel proceder agrave colocaccedilatildeo

86

52 LIMITACcedilOtildeES E TRABALHO FUTURO

da aplicaccedilatildeo num sistema de clustering em caso de deacutefices ou carga excessiva deprocessamento

bull Sistema de explicaccedilotildees - A soluccedilatildeo proposta conteacutem um sistema de explicaccedilotildees quepode ser utilizado para obter explicaccedilotildees a perguntas do tipo ldquocomordquo e ldquoporquecircrdquoEste ponto natildeo representa uma melhoria mas sim a manutenccedilatildeo de uma funcionali-dade que o GISPSA jaacute disponibilizava

bull Anaacutelise graacutefica - Este moacutedulo eacute uma nova abordagem agrave anaacutelise de uma base deconhecimento que natildeo eacute normalmente utilizado nos sistemas periciais conhecidos eque possibilita uma anaacutelise visual facilitadora do comportamento e funcionamentoda nova soluccedilatildeo

bull Suporte a vaacuterias liacutenguas - A soluccedilatildeo proposta permite de uma forma bastantesimples a implementaccedilatildeo de novas linguagens A parte da soluccedilatildeo que envolveo sistema pericial e a parte da aplicaccedilatildeo web estatildeo preparados para esta tipo desuporte contudo a base de conhecimento natildeo contempla este mecanismo e teriaque ser implementado

bull Arquitectura - O tipo de arquitectura da soluccedilatildeo proposta permite uma simplesintegraccedilatildeo com outros tipos de aplicaccedilatildeo web como por exemplo webservices ouportais Possibilita ainda como jaacute referido a separaccedilatildeo da aplicaccedilatildeo de uma formamodular permitindo uma distribuiccedilatildeo ao niacutevel do processamento

bull Migraccedilatildeo - No processo de migraccedilatildeo da base de conhecimento foram detectados ecorrigidos alguns problemas Regras inconsistentes regras repetidas e regras quenatildeo trazem novo conhecimento foram adaptadas e resolvidas evoluindo a novabase de conhecimento para uma entidade mais fiaacutevel e consistente

52 Limitaccedilotildees e trabalho futuro

Este trabalho representa um esforccedilo no sentido de apresentar uma versatildeo melhorada dosistema GISPSA e apesar de o conseguir em muitos aspectos e essencialmente em todosaqueles que foram inicialmente propostos ficam alguns aspectos que ainda poderatildeo serimplementados futuramente e que certamente contribuiratildeo para um sistema ainda melhor

Assim apresentam-se as limitaccedilotildees identificadas e as perspectivas de trabalho futuro

87

CAPIacuteTULO 5 CONCLUSOtildeES

bull Validaccedilatildeo de regras - Apesar de ser jaacute possiacutevel neste novo sistema pericial procederagrave verificaccedilatildeo de regras como mecanismo de prevenccedilatildeo de redundacircncias e contradi-ccedilotildees ainda natildeo eacute possiacutevel a validaccedilatildeo por parte de um perito dessas mesmas regrasa natildeo ser que essa validaccedilatildeo seja feita em modo ad hoc

Seria importante a criaccedilatildeo de um modo lsquosupervisorrsquo ou modo lsquoperitorsquo paraque a aplicaccedilatildeo pudesse adoptar uma postura natildeo soacute de linguagem adaptada aum utilizador com maior formaccedilatildeo na aacuterea (como seraacute o caso de perito) mastambeacutem pudesse assumir uma postura de simulaccedilatildeo em que seriam apresentadosnatildeo soacute os passos tomados como eventuais cenaacuterios em caso de respostas diferentesIsto permitiria a um perito confrontar o seu proacuteprio conhecimento com o sistemapericial realizando desta forma uma validaccedilatildeo do funcionamento do sistema e dabase de conhecimento

Para aleacutem disto sendo uma aplicaccedilatildeo web o modo lsquosupervisorrsquo ou modo lsquope-ritorsquo poderia ser acedido a partir de qualquer siacutetio e a qualquer hora Se o responsaacute-vel pela validaccedilatildeo da base de conhecimento (normalmente o perito que contribuiucom o conhecimento) natildeo estiver disponiacutevel para o fazer por motivos de ausecircnciaou incompatibilidade de horaacuterios poderaacute sempre realizar o acesso agrave aplicaccedilatildeoa partir de um outro local agrave hora que mais lhe aprouver sem qualquer tipo deprejuiacutezo quer para o perito quer para o proacuteprio sistema

bull Muacuteltiplas conclusotildees - Com o trabalho desenvolvido apenas eacute possiacutevel atraveacutesdo disparo de uma regra final chegar a uma uacutenica conclusatildeo Deveria ser possiacutevelchegar a muacuteltiplas conclusotildees pelo que natildeo tendo sido implementado nesta versatildeoconsidera-se como uma possibilidade de trabalho futuro

Aparentemente sem qualquer relaccedilatildeo a necessidade evidenciada no ponto anteriorde criar um modo lsquosupervisorrsquo ou modo lsquoperitorsquo poderaacute levar um futurodesenvolvimento no sentido de criar as muacuteltiplas conclusotildees aqui referidas jaacute queao permitir este modo de funcionamento tambeacutem deveraacute ser possiacutevel inferir sobrevaacuterios cenaacuterios possiacuteveis e respectivas conclusotildees

bull Negaccedilatildeo de premissas - Nesta versatildeo do trabalho apenas eacute possiacutevel criar regrassem negaccedilatildeo Por exemplo num cenaacuterio em que uma pergunta ao utilizador tem aforma

Qual a cor (Vermelho Azul Verde)

e as regras que satildeo candidatas a disparo forem

88

52 LIMITACcedilOtildeES E TRABALHO FUTURO

R1 - SE cor Vermelho R2 - SE cor Azul R3 SE cor Verde

entatildeo natildeo eacute possiacutevel caso seja necessaacuterio ter uma regra do tipo

Rx - SE cor NOT XXXXX

Isso apenas seria possiacutevel se a pergunta inicial fosse

Qual NAtildeO Eacute a cor (Vermelho Azul Verde)

para assim permitir regras do tipo

Rx - SE NAtildeO Eacute cor XXXXX

Assim sendo aponta-se como uma limitaccedilatildeo e eventual trabalho futuro a desenvol-ver para outras versotildees da aplicaccedilatildeo a criaccedilatildeo de um sistema que permita a negaccedilatildeode premissas para que o exemplo atraacutes indicado seja de possiacutevel implementaccedilatildeo

bull Contemplar factos iniciais nas regras - A versatildeo actual do sistema natildeo permite ainclusatildeo de factos inicias nas premissas das regras

bull Pesquisa de muacuteltiplas soluccedilotildees finais - Actualmente soacute eacute permitido executar omotor de inferecircncia com uma soluccedilatildeo final como objectivo Seria uma evidentemais valia a inclusatildeo da capacidade de pesquisa por muacuteltiplas soluccedilotildees

bull Metaconhecimento - ao ser adicionado metaconhecimento podemos aumentar odesempenho do motor de inferecircncia nos cenaacuterios em que temos bases de conheci-mento consideravelmente grandes

bull Regra mais relevante para iniciar o motor de inferecircncia - desenvolver um algoritmopara obter uma regra que tenha uma maior probabilidade de sucesso de forma aminimizar iteraccedilotildees desnecessaacuterias

bull Validaccedilatildeo automaacutetica - quando as questotildees satildeo apagadas deve ser realizada arespectiva verificaccedilatildeo de utilizaccedilatildeo dessas questotildees como condiccedilotildees de regras paraprevenir possiacuteveis inconsistecircncias

bull Suporte a vaacuterias liacutenguas - a base de conhecimento natildeo foi projectada para imple-mentar esta funcionalidade

89

Bibliografia

Acquired Intelligence (2010) Acquire httpwwwaiincca Junho de 201025

Alexander Shapiro (2010) Tggraphlayout httpsourceforgenet

projectstouchgraph Julho de 2010 49 79

Barnett J A (1991) Calculating dempster-shafer plausibility IEEE Transactions on

Pattern Analysis and Machine Intelligence 13 599ndash602 16

Boris van Schooten (2005) Yprolog httpwwwvfutwentenl

~schootenyprolog Junho de 2010 37

Carlos Figueira Filho (2010) JEOPS - Integraccedilatildeo entre Objetos e Regras de Produccedilatildeoem Java httpwwwcinufpebr~jeops Julho de 2010 36

CoAJRA J (1997) The basics of expert (knowledge based) systems 18

Dokas I M (2005) Developing web sites for web based expert systems A webengineering approach In In Proceedings of the Second International ICSC Symposium

on Information Technologies in Environmental Engineering (Magdeburg pages 202ndash217 Shaker Verlag 26

Drakopoulos J (1994) Probabilities possibilities and fuzzy sets Fuzzy Sets and

Systems 75 1ndash15 16

Elie Levy (2010) Zilonis httpwwwzilonisorgindexphp Junho de2010 37

Ernest Friedman-Hill (2010) Jess httpwwwjessrulescom Julho de 201025 36

EXSYS (2010) Exsys corvid httpwwwexsyscom Junho de 2010 24

Filho A R (2010) Mdss medical diagnosis support system LPA - Logic ProgrammingAssociates Ltd 30

Giarratano C J Riley and D G (1998) Expert Systems - Principles and Programming

Thirds Edition Principles and Programing Course Technology 3ed edition 6 18

91

BIBLIOGRAFIA

Hammurapi Group (2010) Hammurapi rules httpwwwhammurapicom

dokuwikidokuphp Junho de 2010 36

Heckerman D (1992) The certainty-factor model 16

IBM (2010) Jlog httpwww-01ibmcomsoftwarewebsphere

productsbusiness-rule-management Junho de 2010 36

Kozlenkov Alex and Paschke (2010) Prova rule language httpprovaws

indexhtml Junho de 2010 37

Logic Programming Associaties Ltd (2010) Lpa webflex httpwwwlpacouk Abril de 2010 24

Lucas P (2001) Certainty-factor-like structures in bayesian belief networks Knowledge-

Based Systems 14 327ndash335 16

Maarten Menken (2010) Jclips httpsourceforgenetprojects

jclips Julho de 2010 25 36

Mcarniel (2010) Jruleengine httpjruleenginesourceforgenet

indexhtml Junho de 2010 37

Merritt D (1989) Building expert systems in Prolog 6 56

Michael Giordano (2010) Webclips httpclipsinterfacesourceforgenetWebCLIPSwchomehtm 28 de Julho de 2003 24

OpenL (2010) Openl tablets httpopenl-tabletssourceforgenetJulho de 2010 37

OpenRules Inc (2010) Open rules engine httpopenrulescomindex

htm Julho de 2010 37

Pinto A (1998) GISPSA - GIS problem solver adviser 1 20

RedHat (2010) Drools httpwwwjbossorgdroolsdrools-experthtml Junho de 2010 36

Shortliffe E H and Buchanan B G (1990) A model of inexact reasoning in medicinepages 259ndash275 16

Wilson N (2000) Algorithms for dempster-shafer theory In Algorithms for Uncertainty

and Defeasible Reasoning pages 421ndash475 Kluwer Academic Publishers 16

92

Anexos

93

ACoacutedigo do motor de inferecircncia

Iniacutecio do motor de inferencia

init_inference- retractall(hist2) consult(rsquokbsyplrsquo)

top_goals(ControlObj MinCF) - top_goal(TopGoal) top(TopGoal ControlObj MinCF)

top(TopGoal ControlObj MinCF) - retractall(hist2) set(len 0)

getRuleMoreRelevant(TopGoal Rule) tryToProove(Rule ControlObj MinCF)

tryToProove(Rule ControlObj MinCF)- rule(Rule _ lhs(LHS) _)

proveListHyp(LHS ControlObj MinCF)get(len LEN)println(LEN)

LEN1 is LEN + 1assert(hist(LEN1Rule))println(LEN1)

set(len LEN1)

(

check if rule has return control object

(var(ControlObj)) -gt(

no control object found check if other rules needs to be fired

fireRules(ControlObj MinCF)

)(

control object found

true

)

)

proveListHyp([] ControlObj MinCF)

proveListHyp([H|T] ControlObj MinCF)-proveHyp(H ControlObj MinCF)

((var(ControlObj)) -gt (proveListHyp(T ControlObj MinCF))(true))

fact already known

proveHyp(H ControlObj MinCF)- H = ev(X Y) fact(X Y_ )

there is a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _)

not(fact(X _ _))question(X _ _ _)

not(not_question(X))ControlObj = ask(X)

95

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

there is a conclusion that can lead to a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _) rule(Rule _ lhs(LHS)

rhs(ev(X_) V))

tryToProove(Rule ControlObj MinCF)

ADD A FACT

av(Attr Value Confidence ControlObj MinCF) - retractall(hist2)set(len 0)

saveFact(Attr Value Confidence 1 CF_FINAL _)

fireRules(ControlObj MinCF)

nav(Attr)-assert(not_question(Attr))

fireRules(ControlObj MinCF)- rule(X _ lhs(LHS) rhs(ev(Y R) Conf))

not(inf_rules_fired(X_)) evaluate(LHS ConfLhs 1)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF)

get(len LEN) LEN1 is LEN + 1 assert(hist(LEN1Rule))

set(len LEN1)

(

(var(ControlObj)) -gt(

(top_goal(Y)) -gt (

ControlObj = answerFound(Y R ConfRet)

)(

true fireRules(ControlObj MinCF)

))(

true

)

)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF) -

calculateConfidence(ConfLhs Conf ConfRet)

ConfRet gt MinCF

saveFact(Y R ConfRet 2 CF_FINAL X)

assert(inf_rules_fired(X ConfRet))

evaluate([] [] 1)- true

evaluate([H|T] [FactConf|LConf] RetCode)-

H = ev(X Ans)fact(X Ans FactConf)

evaluate(T LConf RetCode)

calculateConfidence(ConfLhs RuleCF ResultCF)-min_in_list(ConfLhs MinLHSCF)

ResultCF is MinLHSCF RuleCF 100

min_in_list([Min]Min)

min_in_list([HK|T]M) - H lt= K min_in_list([H|T]M)

min_in_list([HK|T]M) - H gt K min_in_list([K|T]M)

1 - fornecido 2 - inferido

we have a fact saved with the same conclusion already

96

saveFact(Attr Value Confidence Mode CF_Final Rule)-

fact(Attr Value OldConfidence)

combine(OldConfidence Confidence CF_Final)

retract(fact(Attr Value OldConfidence))

retract(inf_sys_fact(Attr Value OldConfidence _))

assert(fact(Attr Value CF_Final))

assert(inf_sys_fact(Attr Value CF_Final Mode))

linkFactToRule(Rule Attr Value Mode)

we donrsquot have any fact saved

saveFact(Attr Value Confidence Mode Confidence Rule)-

assert(fact(Attr Value Confidence))

assert(inf_sys_fact(Attr Value Confidence Mode))

linkFactToRule(Rule Attr Value Mode)

linkFactToRule(___1)

linkFactToRule(RuleAttrValue2)-

inf_exp_how(Attr Value oldRules)

retract(inf_exp_how(Attr Value oldRules))

assert(inf_exp_how(Attr Value [Rule|oldRules]))

linkFactToRule(RuleAttrValue2)-

assert(inf_exp_how(Attr Value [Rule]))

println(rsquosaved line with information on explanation howrsquo) listing

combine(CF1 CF2 CF) - CF1 gt= 0 CF2 gt= 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CF is CF1 + Calc

combine(CF1 CF2 CF) - CF1 lt 0 CF2 lt 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CFAux is CF1 + Calc CF is 0-CFAux

combine(CF1 CF2 CF) - (CF1 lt 0 CF2 lt 0) (CF1 gt 0 CF2 gt 0)

SumCFs is CF1 + CF2 abs_minimum(CF1 CF2 MCF)

Rest is 100 - MCFCF is 100 SumCFs Rest

abs_minimum(ABX) - absolute(A AA) absolute(B BB)minimum(AABBX)

absolute(X X) -X gt= 0

absolute(X Y) -X lt 0Y is 0-X

minimum(XYX) -X lt= Y

minimum(XYY) -Y lt= X

Rule verification

verification(L)-retractall(validation_fired1)

retractall(verification_error4)set(nextid 0)

findall(IDverification_rule_1(ID _ _ _)L)

verification_rule_1(ID RuleInError RuleRelated Result)-

rule(A _ lhs(CA) RA)rule(B _ lhs(CB) RB)

not( B = A)not(validation_fired(B))

checkConditionsSimilar(CA CB FullMatch)

checkResultSimilar(FullMatch RA RB Result)

assert(validation_fired(B))

97

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

get(nextid CURR_ID)ID is CURR_ID + 1

set(nextid ID)

assert(verification_error(ID B A Result))

RuleInError = B RuleRelated = A

checkConditionsSimilar(CA CB FullMatch)-checkConditionsSimilar_1(CACB)

lent(CA X) lent(CB Y) testCheck(X Y FullMatch)

testCheck(X X 1)

testCheck(X Y 0)- not(X = Y)

checkConditionsSimilar_1([] L)

checkConditionsSimilar_1([H|R] L)- member(H L) checkConditionsSimilar_1(R L)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueB) CFB) 2)-

not(ValueA = ValueB)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueA) CFB) 2)

checkResultSimilar(0 rhs(ev(Atom Value) CFA) rhs(ev(Atom Value) CFB) 1)-

CFB lt= CFA

lent([] 0)

lent([_|R] SizeT)- lent(R Size)SizeT is Size + 1

Rule verification

retrieve_rules(L)-

findall(X rule(X _ __) L)

retrieve_questions(L)-

findall(X question(X ___) L)

Information predicates

inf_sys(L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)-

i_sys_rules(L_Rules)i_sys_inf_fact(L_Inf_Facts)

i_sys_know_fact(L_Know_Facts) i_sys_init_fact(L_Init_Facts)

i_sys_rules(L)-

findall(r(Rule Conf) inf_rules_fired(Rule Conf) L) member(C L)

i_sys_rules([])

i_sys_inf_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 2) L) member(C L)

i_sys_inf_fact([])

i_sys_know_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 1) L) member(C L)

i_sys_know_fact([])

98

i_sys_init_fact(L)-

findall(f(Attr Value Conf) condition_init(Attr Value Conf) L) member(C L)

i_sys_init_fact([])

condition_init(Attr Value Conf)-fact(Attr Value Conf)

not(inf_sys_fact(Attr _ _ _))

explanations

why(L)-findall(r(OX) hist(OX) L)

how(Attr Value Result)- inf_exp_how(Attr Value Rules)

explainHow(Rules Explanation)append(Rules Explanation Result)

explainHow([] [])

explainHow([H|T] Result)- innerExplain(H ExplanationH)

explainHow(T ExplanationRules) append(ExplanationH ExplanationRules Result)

innerExplain(Rule Explanation)- rule(Rule _ lhs(LHS) _)

explainLHS(LHS Explanation)

explainLHS([] [])

explainLHS([ev(Attr Value)|T] ExplanationA)-

not(inf_exp_how(Attr Value _))

fact(Attr Value _) print(rsquoinitial factrsquo)

explainLHS(T ExplanationA)

explainLHS([ev(Attr Value)|T] ResultA)-

how(Attr Value ExplanationA)

explainLHS(T Explanation)

append(ExplanationA Explanation ResultA)

append([] L L)

append(L [] L)

append([H|T] M [H|N])-append(L M N)

Map methods

buildValidationReport(Id RErr RRel ErrType)-

verification_error(Id RErr RRel ErrType)

buildQuestionObject(ask(X) X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

buildQuestionObject_by_code(X X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

99

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

buildSolutionObject(answerFound(Y R Found) Y R Found)

buildRuleObject(Rule Descr LHS RHS CF)-

rule(Rule Descr lhs(I_LHS) rhs(I_RHS CF))

lhs_flatten(I_LHS LHS)

rhs_flatten(I_RHS RHS)

flatten(L LO)- iflatten(L LO)

iflatten([] [])

iflatten([H|R] [AD|L])- H = answer(A D) iflatten(R L)

lhs_flatten(L LO)- ilhs_iflatten(L LO)

ilhs_iflatten([] [])

ilhs_iflatten([H|R] [[ADCB]|L])-H = ev(A D)question(A C LL _)

findMember(LLDB)ilhs_iflatten(R L)

ilhs_iflatten([H|R] [[ADAD]|L])-H = ev(A D)not(question(A _ _ _))

ilhs_iflatten(R L)

rhs_flatten(ev(AB) [AB])

findMember([] D D)-

findMember([H|T] D B)-H = answer(D B)

findMember([H|T] D B)-findMember(T D B)

attempt to Get more relevant rule

getRuleMoreRelevant(TopGoal Rule)-

rule(Rule_ _ rhs(ev(P V) X)) top_goal(P)

find the rules that contains a direct solution

findall(X rule(X lhs(LLHS) rhs(ev(TopGoal _)_)) LX)

debugLine(trc1rsquogtrsquo)debugList(LX)

For the main rules apply the algorithm

fillMainRules(LX LOUT)

bubble_sort(LOUT LREALLYOUT)

LREALLYOUT = [ score_table(Rule _ _ _) | _ ]

debugLine(trc1rsquogtrsquo)debugList(LREALLYOUT)

fillMainRules([] [])-

fillMainRules([HIN|RIN] [HOUT|LOUT])- calculateCurrentRule(HIN HOUT)

fillMainRules(RIN LOUT)

calculateCurrentRule(HIN HOUT)-rule(HIN _ lhs(LHS) rhs(_ Confidence))

calculateScoreBasedOnLHS(LHS 0 Score)

OrderIndice is Score Confidence

HOUT = score_table(HIN Score Confidence OrderIndice)

calculateScoreBasedOnLHS([] ScoreResult ScoreResult)-

100

calculateScoreBasedOnLHS([HLHS|RLHS] Score ScoreResult)-

calculateScoreBasedOnLHSCurrent(HLHS Score ScoreAfter)

calculateScoreBasedOnLHS(RLHS ScoreAfter ScoreResult)

calculateScoreBasedOnLHSCurrent(ev(X _) Score ScoreAfter)-

question(X _ _ _) not(fact(X _ _))

ScoreAfter is Score + 1

calculateScoreBasedOnLHSCurrent(ev(X _) Score Score)-

helper methods

bubble_sort(ListSorted)-b_sort(List[]Sorted)

b_sort([]AccAcc)

b_sort([H|T]AccSorted)-bubble(HTNTMax)b_sort(NT[Max|Acc]Sorted)

bubble(X[][]X)

bubble(X[Y|T][Y|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C lt= D bubble(XTNTMax)

bubble(X[Y|T][X|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C gt Dbubble(YTNTMax)

bubble_sort2(ListSorted)-b_sort2(List[]Sorted)

b_sort2([]AccAcc)

b_sort2([H|T]AccSorted)-bubble2(HTNTMax)b_sort2(NT[Max|Acc]Sorted)

bubble2(X[][]X)

bubble2(X[Y|T][Y|NT]Max)- X = r(D _) Y = r(C _) C lt= D bubble(XTNTMax)

bubble2(X[Y|T][X|NT]Max)- X = r(D _) Y = r(C _) C gt Dbubble(YTNTMax)

Allows to get a Bag of all the X that makes Goal evaluate to true

Bag can contain duplicated X

findall(XGoalBag) - post_it(XGoal) gather([]Bag)

Aux

post_it(XGoal) - call(Goal) asserta(data999(X)) fail

post_it(__)

gather(BBag) - data999(X) retract(data999(X)) gather([X|B]Bag)

gather(SS)

member(X[X|_])-

member(X[_|Y]) - member(XY)

101

BBase de conhecimento do protoacutetipo

question(turn_over rsquoO carro ligarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(lights_weak rsquoAs luzes estatildeo fracasrsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(radio_weak rsquoO raacutedio estaacute fracorsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(smell_gas rsquoCheira a gasolinarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(gas_gauge rsquoO que marca o ponteiro do depoacutesito da gasolinarsquo

[ answer(empty rsquoVaziorsquo) answer(high rsquoSuficientersquo) answer(low rsquoReservarsquo)]0)

rule(rule_1 rsquoRule 1rsquolhs([ev(turn_over no) ev(battery_bad yes)])

rhs(ev(problem battery) 100))

rule(rule_2 rsquoRule 2rsquolhs([ev(lights_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_3 rsquoRule 3rsquolhs([ev(radio_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_4 rsquoRule 4rsquolhs([ev(smell_gas yes) ev(turn_over yes)])

rhs(ev(problem flooded) 80))

rule(rule_5 rsquoRule 5rsquolhs([ev(turn_over yes) ev(gas_gauge empty)])

rhs(ev(problem out_of_gas) 90))

rule(rule_6 rsquoRule 6rsquolhs([ev(turn_over yes) ev(gas_gauge low)])

rhs(ev(problem out_of_gas) 30))

rule(rule_7 rsquoRule 7rsquolhs([ev(gas_gauge low)ev(turn_over yes)])

rhs(ev(problem out_of_gas) 30))

103

ANEXO B BASE DE CONHECIMENTO DO PROTOacuteTIPO

rule(rule_8 rsquoRule 8rsquo

lhs([ev(turn_over yes) ev(gas_gauge low) ev(smell_gas no)])

rhs(ev(problem out_of_gas) 30))

top_goal(problem)

104

CBase de conhecimento GISPSA

question(qs_tema_ger rsquoQual o tipo de Problemarsquo

[ answer(c_ger_map rsquoMapas Configuraacuteveisrsquo) answer(c_ger_inq rsquoInqueacuteritos e Listagensrsquo)

answer(c_ger_mov rsquoCGMOVIGrsquo) answer(c_ger_pla rsquoCGDCGERrsquo)

answer(c_ger_acm rsquoCGVACUMCGTACUMrsquo)]0)

question(qs_plareg rsquoA Conta tem regra de construcccedilatildeo associada rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipr rsquoExiste Conta Pai do Tipo R no Planorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaent rsquoConta aberta por entidadesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipa rsquoConta do Tipo Arsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plalim rsquoEntidade encontra-se nos limitesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaexis rsquoEntidade Existentersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plamix rsquoContas Valor entre Contas Movimentorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acumul rsquoQual o problema de acumuladosrsquo

[ answer(c_acm_avm rsquoCGVACUM ltgt CGMOVIGrsquo)

answer(c_acm_si rsquoSaldos Iniciaisrsquo)

answer(c_acm_cna rsquoContas Nao Acumulamrsquo)

answer(c_acm_avat rsquoCGVACUM ltgt CGTACUMrsquo)]0)

question(qs_incmov rsquoInconsistecircncias no CGMOVIGrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

105

ANEXO C BASE DE CONHECIMENTO GISPSA

question(qs_incpla rsquoInconsistecircncias no CGDCGERrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acmsia rsquoSaldos Iniciais Alteradosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movi rsquoQual o problema dos movimentosrsquo

[ answer(c_mov_lan rsquoLanccedilamentos nao balanceadosrsquo)

answer(c_mov_con rsquoProblema de Contasrsquo)

answer(c_mov_cgca rsquoMovimentos CG ltgt CArsquo)]0)

question(qs_movvdif rsquoValores CG gt CArsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlgca rsquoCC Ligados a Analiticarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlg100 rsquoTodas as Ligacoes a 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movm100 rsquoDiferencas Correspondem a CC com Mais de 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcna rsquoLancamento em Contas nao Existentesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movci rsquoLancamento em Contas Invalidasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcdf rsquoContas correctasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_inquer rsquoInqueacuterito ou listagemrsquo

[ answer(c_inq_bal rsquoBalancetersquo) answer(c_inq_dia rsquoExtractoDiariorsquo)]0)

question(qs_inqsal rsquoProblema de saldosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapa rsquoProblema dos mapasrsquo

[ answer(c_map_imp rsquoErro na Impressaorsquo) answer(c_map_cal rsquoErro no Calculorsquo)

answer(c_map_mic rsquoErro na Transferencia P Microrsquo)]0)

question(qs_mapcol0 rsquoA ultima linha calculada tem a coluna 0 configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapfunc

rsquoA ultima linha calculada apresenta colunas com funcoes invalidas ou sintaxe erradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin0 rsquoA Linha 000 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin9 rsquoA Linha 999 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

106

question(qs_map2alg rsquoTodos os Valores da Linha 999 tem 2 Algarismosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_map198 rsquoA Soma dos Valores da Linha 999 Ultrapassa 198rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapsys rsquoO Sistema Permite a Utilizacao de Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapuser rsquoO Utilizador Tem Acesso a Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapflr rsquoO Folder Existersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

rule(r_pla_1 r_pla_1lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plareg c_sim)])

rhs(ev(dominio d_pla_reg) 100)

)

rule(r_pla_2 r_pla_2lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plaent c_sim)])

rhs(ev(dominio d_pla_ent) 100)

)

rule(r_pla_3 r_pla_3lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plamix c_sim)])

rhs(ev(correccao cr_pla_mix) 100)

)

rule(r_pla_11 r_pla_11lhs([ev(dominio d_pla_reg) ev(qs_platipr c_nao)])

rhs(ev(correccao cr_pla_tipr) 100)

)

rule(r_pla_21 r_pla_21lhs([ev(dominio d_pla_ent) ev(qs_platipa c_nao)])

rhs(ev(correccao cr_pla_tipa) 100)

)

rule(r_pla_22 r_pla_22lhs([ev(dominio d_pla_ent) ev(qs_plalim c_nao)])

rhs(ev(correccao cr_pla_lim) 100)

)

rule(r_pla_23 r_pla_23lhs([ev(dominio d_pla_ent) ev(qs_plaexis c_nao)])

rhs(ev(correccao cr_pla_exis) 100)

)

rule(r_acm_1 r_acm_1

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_2 r_acm_2

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_3 r_acm_3

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_4 r_acm_4

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_5 r_acm_5

107

ANEXO C BASE DE CONHECIMENTO GISPSA

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_6 r_acm_6

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_7 r_acm_7

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_si) ev(qs_acmsia c_nao)])

rhs(ev(correccao cr_acm_si) 100)

)

rule(r_mov_1 r_mov_1lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_lan)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_2 r_mov_2lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_cgca)])

rhs(ev(dominio d_mov_cgca) 100)

)

rule(r_mov_21 r_mov_21lhs([ev(dominio d_mov_cgca) ev(qs_movvdif c_sim)])

rhs(ev(subdominio d_mov_cgca_1) 100)

)

rule(r_mov_22 r_mov_22lhs([ev(dominio d_mov_cgca) ev(qs_movm100 c_sim)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_23 r_mov_23lhs([ev(dominio d_mov_cgca)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_3 r_mov_3lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_con)])

rhs(ev(dominio d_mov_con) 100)

)

rule(r_mov_31 r_mov_31lhs([ev(dominio d_mov_con) ev(qs_movcna c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_32 r_mov_32lhs([ev(dominio d_mov_con) ev(qs_movci c_nao)])

rhs(ev(correccao cr_mov_inc_soft) 100)

)

rule(r_mov_33 r_mov_33lhs([ev(dominio d_mov_con) ev(qs_movcdf c_nao)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_34 r_mov_34lhs([ev(dominio d_mov_con)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_211 r_mov_211lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlgca c_nao)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_212 r_mov_212lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlg100 c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_213 r_mov_213lhs([ev(subdominio d_mov_cgca_1)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_inq_1 r_inq_1lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inquer c_inq_bal)])

rhs(ev(correccao cr_inq_bal) 100)

)

rule(r_inq_2 r_inq_2lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inqsal c_sim)])

108

rhs(ev(correccao cr_inq_dia) 100)

)

rule(r_map_1 r_map_1lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_cal)])

rhs(ev(dominio d_map_cal) 100)

)

rule(r_map_2 r_map_2lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_imp)])

rhs(ev(dominio d_map_imp) 100)

)

rule(r_map_3 r_map_3lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_mic)])

rhs(ev(dominio d_map_mic) 100)

)

rule(r_map_11 r_map_11lhs([ev(dominio d_map_cal) ev(qs_mapcol0 c_sim)])

rhs(ev(correccao cr_map_cal_col0) 100)

)

rule(r_map_12 r_map_12lhs([ev(dominio d_map_cal) ev(qs_mapfunc c_sim)])

rhs(ev(correccao cr_map_cal_func) 100)

)

rule(r_map_13 r_map_13lhs([ev(dominio d_map_cal)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_21 r_map_21lhs([ev(dominio d_map_imp) ev(qs_maplin0 c_nao)])

rhs(ev(correccao cr_map_imp_lin0) 100)

)

rule(r_map_22 r_map_22lhs([ev(dominio d_map_imp) ev(qs_maplin9 c_nao)])

rhs(ev(correccao cr_map_imp_lin9) 100)

)

rule(r_map_23 r_map_23lhs([ev(dominio d_map_imp) ev(qs_map2alg c_nao)])

rhs(ev(correccao cr_map_imp_2alg) 100)

)

rule(r_map_24 r_map_24lhs([ev(dominio d_map_imp) ev(qs_map198 c_nao)])

rhs(ev(correccao cr_map_imp_198) 100)

)

rule(r_map_25 r_map_25lhs([ev(dominio d_map_imp)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_31 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapsys c_nao)])

rhs(ev(correccao cr_map_sys) 100)

)

rule(r_map_32 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapuser c_nao)])

rhs(ev(correccao cr_map_user) 100)

)

rule(r_map_33 r_map_33lhs([ev(dominio d_map_mic) ev(qs_mapflr c_nao)])

rhs(ev(correccao cr_map_mic_flr) 100)

)

rule(r_map_34 r_map_34lhs([ev(dominio d_map_mic)])

rhs(ev(correccao cr_map_soft) 100)

)

top_goal(correccao)

109

  • Lista de Figuras
  • Lista de Tabelas
  • Lista de Coacutedigo
  • Lista de Algoritmos
  • Lista de Acroacutenimos
  • Introduccedilatildeo
    • Enquadramento
    • Objectivos
    • Planeamento
    • Estruturaccedilatildeo da dissertaccedilatildeo
      • Estado da arte
        • Sistemas periciais
          • Arquitectura
          • Base de conhecimento
            • Regras
            • Frames
            • Redes semacircnticas
            • Mecanismos de inferecircncia
            • Manutenccedilatildeo de uma base de conhecimento
              • Raciociacutenio sobre incerteza
                • Factores de certeza
                  • Vantagens e desvantagens
                    • GISPSA - GIS Problem Solver Advisor
                      • Arquitectura
                      • Funcionamento
                      • Limitaccedilotildees
                        • Web Expert Systems
                          • Casos de estudo
                            • LOMA - Landfill Operation Management Advisor
                            • MDSS - Medical Diagnosis Support System
                            • Whale watcher
                              • Ferramentas utilizadas
                                • Ambiente de desenvolvimento
                                • Motor de inferecircncia
                                  • Fase I - Recolha de candidatos
                                  • Fase II - Requisitos base
                                  • Fase III - Viabilidade econoacutemica
                                  • Fase IV - Viabilidade teacutecnica
                                  • Fase V - Prova de conceito
                                  • Conclusatildeo e fundamentaccedilatildeo da escolha
                                      • Wexsys
                                        • Arquitectura global
                                          • Moacutedulo pWexsysEAR
                                          • Moacutedulo WexsysEAR
                                          • Interligaccedilatildeo e integraccedilatildeo dos moacutedulos
                                            • Camada de acesso puacuteblico
                                            • Camada de acesso protegido
                                            • Camada de acesso privado
                                            • Fluxo de invocaccedilatildeo
                                              • Portal
                                                • Templates
                                                  • Suporte multi-liacutengua
                                                    • Motor de inferecircncia
                                                      • Multi-utilizador
                                                      • Base de conhecimento inicial
                                                      • Protoacutetipo do motor de inferecircncia
                                                        • Formato das regras
                                                        • Formato das questotildees
                                                        • Interacccedilatildeo assiacutencrona de questotildees e respostas
                                                        • Estrutura da base de conhecimento
                                                        • Algoritmos a utilizar
                                                          • Resultado final
                                                            • Arranque da execuccedilatildeo
                                                            • Mecanismo de respostas
                                                            • Conclusatildeo final encontrada
                                                            • Explicaccedilotildees
                                                                • Base de conhecimento
                                                                  • Leitura da base de conhecimento
                                                                  • Conclusatildeo final a encontrar
                                                                  • Factos iniciais
                                                                  • Regras
                                                                    • CriarAlterar uma regra
                                                                    • Questotildees
                                                                    • Verificaccedilatildeo
                                                                      • Gravaccedilatildeo da base de conhecimento
                                                                      • Conversatildeo GISPSA
                                                                        • Anaacutelise graacutefica
                                                                          • Implementaccedilatildeo
                                                                          • Funcionamento
                                                                          • Limitaccedilotildees
                                                                              • Conclusotildees
                                                                                • Contributos da soluccedilatildeo desenvolvida
                                                                                • Limitaccedilotildees e trabalho futuro
                                                                                  • Bibliografia
                                                                                  • Anexos
                                                                                  • Coacutedigo do motor de inferecircncia
                                                                                  • Base de conhecimento do protoacutetipo
                                                                                  • Base de conhecimento GISPSA
Page 4: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System

Resumo

Desde o iniacutecio que os sistemas periciais natildeo foram vistos apenas como sistemas quepoderiam substituir os peritos Os peritos por sua vez independentemente da aacuterea em queoperam eram tidos como indiviacuteduos que atingiram a excelecircncia atraveacutes da experiecircnciaestudo e total dedicaccedilatildeo por vezes durante anos

Hoje mais do que assumir o papel de um perito na excelecircncia de uma aacuterea de actuaccedilatildeoos sistemas periciais sobressaem pela disponibilidade contiacutenua acessos facilitados custosreduzidos estabilidade de funcionamento e coerecircncia de raciociacutenio Empurrados pelosavanccedilos actuais das redes em termos de velocidade e propagaccedilatildeo global estes sistemassatildeo hoje disponibilizados de forma mais simples e acessiacutevel

Este trabalho eacute realizado com o propoacutesito de evoluir o actual sistema para umaversatildeo mais apelativa funcional e fiaacutevel Um dos objectivos passa pela evoluccedilatildeo doactual modo de funcionamento utilizaccedilatildeo local e apenas um utilizador para um modode funcionamento que permita uma disponibilizaccedilatildeo num ambiente de acesso globalacessiacutevel a qualquer hora e em qualquer local

Palavras-chave GISPSA sistema pericial manutenccedilatildeo base de conhecimento anaacute-lise graacutefica de base de conhecimento

vii

Abstract

From the begining that the expert systems were not treated solely as systems intendedto replace experts Experts in turn regardless of their operating area were seen asindividuals that achieved excellence through experience study and total dedicationsometimes over many years

Today more than just assuming the part of an expert in a given area expert systemsstand for their continuous availability easy access reduced costs operating stability andconsistency of reasoning Pushed by todays advances in networks regarding speed andglobal spread these systems are now available in a more simple and accessible way

This work is carried out in order to evolve the current system to a more appealingfunctional and reliable One of the objectives is the evolution of the current mode ofoperation local and single user to a mode globally accessible regardless the time or theplace where its intervention is necessary

Keywords GISPSA expert system knowledge base maintenance knowledge basegraphical analysis

ix

Conteuacutedo

Lista de Figuras xv

Lista de Tabelas xvii

Lista de Coacutedigo xix

Lista de Algoritmos xxi

Lista de Acroacutenimos xxiii

1 Introduccedilatildeo 111 Enquadramento 2

12 Objectivos 2

13 Planeamento 3

14 Estruturaccedilatildeo da dissertaccedilatildeo 3

2 Estado da arte 521 Sistemas periciais 5

211 Arquitectura 7

212 Base de conhecimento 9

2121 Regras 10

2122 Frames 12

2123 Redes semacircnticas 13

2124 Mecanismos de inferecircncia 14

2125 Manutenccedilatildeo de uma base de conhecimento 15

213 Raciociacutenio sobre incerteza 16

2131 Factores de certeza 16

214 Vantagens e desvantagens 17

22 GISPSA - GIS Problem Solver Advisor 20

221 Arquitectura 20

222 Funcionamento 21

223 Limitaccedilotildees 22

23 Web Expert Systems 23

231 Casos de estudo 25

2311 LOMA - Landfill Operation Management Advisor 26

xi

2312 MDSS - Medical Diagnosis Support System 30

2313 Whale watcher 31

3 Ferramentas utilizadas 3331 Ambiente de desenvolvimento 33

32 Motor de inferecircncia 35

321 Fase I - Recolha de candidatos 35

322 Fase II - Requisitos base 37

323 Fase III - Viabilidade econoacutemica 38

324 Fase IV - Viabilidade teacutecnica 38

325 Fase V - Prova de conceito 39

326 Conclusatildeo e fundamentaccedilatildeo da escolha 40

4 Wexsys 4341 Arquitectura global 43

411 Moacutedulo pWexsysEAR 44

412 Moacutedulo WexsysEAR 45

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos 46

4131 Camada de acesso puacuteblico 46

4132 Camada de acesso protegido 48

4133 Camada de acesso privado 48

4134 Fluxo de invocaccedilatildeo 49

414 Portal 50

4141 Templates 51

415 Suporte multi-liacutengua 53

42 Motor de inferecircncia 54

421 Multi-utilizador 54

422 Base de conhecimento inicial 55

423 Protoacutetipo do motor de inferecircncia 56

4231 Formato das regras 56

4232 Formato das questotildees 57

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas 57

4234 Estrutura da base de conhecimento 58

4235 Algoritmos a utilizar 60

424 Resultado final 62

4241 Arranque da execuccedilatildeo 62

xii

4242 Mecanismo de respostas 654243 Conclusatildeo final encontrada 674244 Explicaccedilotildees 67

43 Base de conhecimento 71431 Leitura da base de conhecimento 72432 Conclusatildeo final a encontrar 73433 Factos iniciais 74434 Regras 74

4341 CriarAlterar uma regra 744342 Questotildees 764343 Verificaccedilatildeo 77

435 Gravaccedilatildeo da base de conhecimento 77436 Conversatildeo GISPSA 78

44 Anaacutelise graacutefica 79441 Implementaccedilatildeo 79442 Funcionamento 79443 Limitaccedilotildees 82

5 Conclusotildees 8351 Contributos da soluccedilatildeo desenvolvida 8452 Limitaccedilotildees e trabalho futuro 87

Bibliografia 92

Anexos 93

A Coacutedigo do motor de inferecircncia 95

B Base de conhecimento do protoacutetipo 103

C Base de conhecimento GISPSA 105

xiii

Lista de Figuras

1 Arquitectura de um sistema pericial 82 GISPSA menu inicial 213 GISPSA interacccedilatildeo inicial 224 GISPSA exemplo de interacccedilatildeo pergunta-resposta 225 Arquitectura do LOMA 276 Paacutegina inicial do sistema pericial LOMA 287 Sub-moacutedulo extra 288 Sugestatildeo de problemas do sub-moacutedulo extra 299 Sub-moacutedulo especializado 2910 Paacutegina principal do sistema pericial Whale Watcher 3111 Paacutegina final do sistema pericial Whale Watcher 31

12 Arquitectura da soluccedilatildeo 4413 Arquitectura do moacutedulo visual 4414 Arquitectura do moacutedulo de negoacutecio 4515 Wexsys - Integraccedilatildeo dos componentes 4616 Diagrama de classes principais 4917 Diagrama de sequecircncia do fluxo de invocaccedilatildeo 5018 Wexsys - Paacutegina inicial 5119 Paacutegina inicial do motor de inferecircncia 6220 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia 6321 Fluxo de invocaccedilatildeo de resposta a uma questatildeo 6622 Conclusatildeo da inferecircncia 6723 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo 6824 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia 6925 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final 6926 Paacutegina inicial da gestatildeo da base de conhecimento 7227 Processo de carregamento das regras 7328 Introduzir uma nova regra 7529 Apresentaccedilatildeo de valores configurados na questatildeo 7630 Formulaacuterio de introduccedilatildeo de uma questatildeo 7631 Verificaccedilatildeo da base de conhecimento 7732 Processo de gravaccedilatildeo da base de conhecimento 7833 Paacutegina inicial da anaacutelise graacutefica 80

xv

34 Exemplo de grafo totalmente expandido 8135 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto 82

xvi

Lista de Tabelas

1 Listagem de produtos da Fase I 362 Listagem de produtos excluiacutedos na Fase II 383 Listagem de produtos excluiacutedos na Fase III 384 Listagem de produtos excluiacutedos na Fase IV 395 JClips - Vantagens e desvantagens 396 Prova - Vantagens e desvantagens 407 YProlog - Vantagens e desvantagens 40

xvii

Lista de Coacutedigo

1 Excerto da classe RuleView 472 Excerto da classe Rule 473 Coacutedigo do template principal do portal 514 Coacutedigo da paacutegina inicial do portal 535 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo 546 Representaccedilatildeo da base de conhecimento do protoacutetipo 587 Predicados principais do motor de inferecircncia 638 Predicados principais do sistema de explicaccedilotildees 70

xix

Lista de Algoritmos

1 Algoritmo principal do motor de inferecircncia 602 Verifica se uma premissa eacute verdadeira 613 Dispara as regras que possam ser disparadas 614 Algoritmo responsaacutevel pelo desenho da applet 805 Algoritmo para construccedilatildeo dos dados do grafo 81

xxi

Lista de Acroacutenimos

AI Artificial Intelligence ou Inteligecircncia Artificial

BRMS Business Rule Management System

CF Certainty Factors ou Factores de Certeza

CLIPS C Language Integrated Production System

DTO Data Transfer Object

ES Expert System

GIS Gestatildeo Integrada de Seguros

GISPSA GIS Problem Solver Advisor

IDE Integrated Development Environment

JEOPS Java Embedded Object Production System

JSF JavaServer Faces

LHS Left-Handed Side

LOMA Landfill Operation Management Advisor

MDSS Medical Diagnosis Support System

ODBC Open Data Base Connectivity

OO Object Oriented

RHS Right-Handed Side

SP Sistema Pericial

SDK Software Development Kit

xxiii

1Introduccedilatildeo

Este trabalho eacute desenvolvido no acircmbito do Mestrado em Engenharia Informaacutetica ramode Tecnologias do Conhecimento e Decisatildeo e teve a sua origem a partir de um sistemadoravante designado por sistema base desenvolvido por Pinto Este sistema base foidesenvolvido durante a realizaccedilatildeo de um trabalho acadeacutemico (Pinto (1998)) cujo principalobjectivo era a construccedilatildeo de um sistema pericial

Na altura da sua criaccedilatildeo o sistema base apenas estava preparado para uma utilizaccedilatildeodo tipo mono-posto Ficava assim estabelecida a condiccedilatildeo de apenas um utilizador decada vez ter acesso ao sistema base Natildeo era exigiacutevel nem sequer necessaacuterio que outrocenaacuterio fosse equacionado dado tratar-se de um trabalho acadeacutemico O sistema ficoudesta forma limitado

Assim somos remetidos a um dos objectivos iniciais que levaram ao desenvolvimentodo trabalho que agora aqui se apresenta Proceder agrave evoluccedilatildeo do sistema base garantindoque o mesmo possa ser acedido por muacuteltiplos utilizadores de forma simultacircnea e a suadisponibilizaccedilatildeo num ambiente de acesso global mediante a utilizaccedilatildeo de redes sendoque a preferecircncia recai sobre a rede mais global que existe a internet Referindo-nos aeste tipo de disponibilizaccedilatildeo com todas as vantagens que lhe estatildeo afectas o proacuteximopasso loacutegico seria a integraccedilatildeo do novo sistema num portal

Eacute tambeacutem um objectivo inicial proceder agrave alteraccedilatildeo da actual forma de manutenccedilatildeo doconhecimento Pretende-se desenvolver um mecanismo de manutenccedilatildeo de conhecimentoque simplifique a interacccedilatildeo com o utilizador

Por uacuteltimo os objectivos deste trabalho passam igualmente pelo melhoramento dosistema base tentando eliminar alguns erros que foram detectados ao longo do tempo eacrescentando algumas caracteriacutesticas que entretanto surgiram e que foram consideradasnecessaacuterias

1

CAPIacuteTULO 1 INTRODUCcedilAtildeO

11 Enquadramento

O sistema a desenvolver embora tenha como ponto de partida um sistema base criado parautilizaccedilatildeo mono-posto faraacute parte de um portal onde seraacute integrado como uma ferramentade apoio na resoluccedilatildeo de problemas operacionais

Para aleacutem de actualmente fazer muito mais sentido a disponibilizaccedilatildeo do sistemanum ambiente de acesso globalizado e com a possibilidade de vaacuterios utilizadores emsimultacircneo a grande vantagem reside no facto de poder utilizar a mesma base de conhe-cimento que alimenta o sistema pericial independentemente do local onde se realizem osacessos Fica assim garantida a uniformidade a fiabilidade e a estabilidade do sistema

Por uacuteltimo a globalizaccedilatildeo do sistema garante igualmente que sempre que este eacuteutilizado natildeo para consulta ou apoio na resoluccedilatildeo de problemas mas para acrescentarnovos factos e dados agrave base de conhecimento estes estejam imediatamente disponiacuteveispara novas consultas ou para resoluccedilotildees de problemas de forma mais eficaz

12 Objectivos

O objectivo principal deste trabalho passa pela integraccedilatildeo do GIS Problem SolverAdvisor (GISPSA) (sistema base) num portal Aleacutem deste outros objectivos podemser considerados como de eventual ou relevante importacircncia podendo ser caracterizadosda seguinte forma

bull Objectivos globais

ndash Desenvolvimento de um sistema pericial rArr Pretende-se desenvolver umcandidato agrave substituiccedilatildeo do GISPSA

ndash Manutenccedilatildeo da base de conhecimento rArr Gerir a base de conhecimentorelativamente agrave inserccedilatildeo e actualizaccedilatildeo de regras de conhecimento bem comoimplementaccedilatildeo de mecanismos de verificaccedilatildeo das regras

bull Objectivos especiacuteficos

ndash Adaptar o motor de inferecircncia existente ou desenvolver novorArr Desenvolvi-mento de um motor de inferecircncia que se enquadre com os objectivos definidos

ndash Alterar o mecanismo de interacccedilatildeo do utilizador com a base de conheci-mentorArr Facilitar a manipulaccedilatildeo da base de conhecimento de forma a evitarproblemas na alteraccedilatildeo da base de conhecimento

2

13 PLANEAMENTO

ndash Verificar e detectar inconsistecircncias na base de conhecimentorArr Implementarmecanismos de verificaccedilatildeo das regras existentes para minimizar problemas

13 Planeamento

O planeamento deste trabalho foi estruturado em quatro fases A composiccedilatildeo dessas faseseacute a seguinte

1 Requisitos

bull Levantamento de requisitos

bull Estado da arte

bull Ferramentas existentes

2 Protoacutetipo

bull Protoacutetipo do motor de inferecircncia

bull Implementaccedilatildeo do gestor da base de conhecimento

3 Verificaccedilatildeo

bull Implementaccedilatildeo de meacutetodos de verificaccedilatildeo e detecccedilatildeo de inconsistecircncias

4 Elaboraccedilatildeo da dissertaccedilatildeo

bull Redacccedilatildeo final da dissertaccedilatildeo

14 Estruturaccedilatildeo da dissertaccedilatildeo

Nesta secccedilatildeo eacute apresentada a estrutura da dissertaccedilatildeo composta por cinco capiacutetulosNo primeiro capiacutetulo ldquoIntroduccedilatildeordquo eacute apresentado o problema actual quais os objec-

tivos a alcanccedilar e qual o planeamento para a prossecuccedilatildeo desses objectivosNo segundo capiacutetulo ldquoEstado da Arterdquo eacute apresentado a soluccedilatildeo GISPSA e tambeacutem o

estado da arte na aacuterea dos sistemas periciaisNo terceiro capiacutetulo ldquoFerramentas utilizadasrdquo eacute apresentado o estudo efectuado sobre

as ferramentas utilizadas e quais as conclusotildees do mesmoNo quarto capiacutetulo ldquoWexsysrdquo eacute descrita a soluccedilatildeo proposta e implementadaNo quinto e uacuteltimo capiacutetulo ldquoConclusotildeesrdquo satildeo apresentadas as conclusotildees finais bem

como os objectivos alcanccedilados e as actuais limitaccedilotildees

3

2Estado da arte

Num estado da arte pretende-se essencialmente fazer o enquadramento do estaacutegio deevoluccedilatildeo e eventuais casos de estudo relacionados com as tecnologias sistemas oupropostas que satildeo utilizadas ou apresentadas ao longo de um trabalho

Para o nosso caso em concreto vamos focalizar esse enquadramento sobre os sistemaspericiais no seu sentido mais abstracto e ainda sobre o sistema base jaacute indicado oGISPSA Apesar de o sistema base ser por si soacute um sistema pericial e como tal poderser apresentado como um caso de estudo inserido nos sistemas periciais generalizados ofacto de servir como ponto de partida para este trabalho em concreto confere-lhe umaimportacircncia muito superior sendo quase obrigatoacuteria a reserva de uma secccedilatildeo proacutepria parao mesmo

21 Sistemas periciais

Os sistemas periciais pertencem a um dos ramos da Artificial Intelligence ou InteligecircnciaArtificial (AI) e surgiram a partir da necessidade que alguns investigadores sentiram emcriar um software que demonstrasse raciociacutenio e comportamento inteligente durante aresoluccedilatildeo de problemas

Um Sistema Pericial (SP) tambeacutem conhecido como Expert System (ES) caracteriza-se como sendo um programa que permite a consulta e utilizaccedilatildeo de conhecimento extraiacutedode um ou mais peritos em determinada aacuterea Esse conhecimento estaacute normalmenteguardado naquilo que eacute mais habitualmente designado por base de conhecimento e agrave qualo programa tem o devido acesso

Na criaccedilatildeo de um SP o ideal seraacute sempre consultar os melhores peritos dentro daaacuterea pretendida e ainda que estes estejam disponiacuteveis para partilhar e disponibilizar oseu conhecimento Tal seria efectivamente a situaccedilatildeo ideal mas que nem sempre se

5

CAPIacuteTULO 2 ESTADO DA ARTE

aproxima da realidade Aliaacutes o verdadeiro sucesso de um sistema pericial reside naqualidade da sua base de conhecimento

Antes de mais devemos considerar que algueacutem que eacute perito em algo certamente oseraacute por uma seacuterie de factores conjugados Experiecircncia adquirida ao longo de vaacuteriosanos formaccedilatildeo especiacutefica dedicaccedilatildeo e estudo profundo seratildeo alguns desses factoresSempre que um indiviacuteduo se encontra numa posiccedilatildeo de excelecircncia em que eacute consideradoum verdadeiro perito encontra-se tambeacutem numa posiccedilatildeo em que lhe eacute bastante difiacutecilencontrar o tempo necessaacuterio para se submeter a uma extracccedilatildeo do conhecimento quedeteacutem Se a isto juntar-mos o facto do objectivo pelo qual se procede agrave extracccedilatildeo deconhecimento eacute a criaccedilatildeo de um programa que seraacute equiparado ao proacuteprio perito emtermos de conhecimento certamente que haveraacute algum desconforto

Aqui surgem as primeiras duacutevidas Seraacute que o sistema pericial tomaraacute o lugar deum ou mais peritos Apesar desta e de outras preocupaccedilotildees os peritos normalmentecontribuem de forma positiva para o enriquecimento de um sistema pericial tornando-odesta forma num sistema com maior qualidade e do qual eles proacuteprios poderatildeo usufruirjaacute que quando eacute possiacutevel agregar o conhecimento de muacuteltiplas pessoas obteacutem-se umconhecimento global superior ao individual

Para aleacutem disto o sistema pericial tende a proceder a um raciociacutenio mais linear loacutegicoe coerente quando comparado com um ser humano que poderaacute deixar que factores comopor exemplo o cansaccedilo ou os sentimentos o influenciem

Merritt define um sistema pericial como sendo um programa que utiliza conhecimentoe meacutetodos de inferecircncia para resolver problemas que satildeo suficientemente complexos pararequerer um especialista para a sua resoluccedilatildeo

ldquo an intelligent computer program that uses knowledge and inference procedures to

solve problems that are difficult enough to require significant human expertise for their

solutionsrdquo Merritt (1989)

A definiccedilatildeo de Giarratano et al eacute mais relacionada com o tipo de problemas tratadospor um sistema pericial

ldquo computer application wich embody some non-algorithmic expertise for solving certain

types of problemsrdquo Giarratano et al (1998)

Esta definiccedilatildeo enquadra de uma forma global as definiccedilotildees reconhecidas aos siste-mas periciais ldquoum sistema pericial pretende emular um perito na identificaccedilatildeo de umdeterminado problema cuja resoluccedilatildeo envolva conhecimento natildeo algoriacutetmicordquo

Existe uma clara separaccedilatildeo entre conhecimento e raciociacutenio o conhecimento eacute obtidocomo jaacute foi referido recorrendo a um ou mais peritos na aacuterea Os dados obtidos satildeo depois

6

21 SISTEMAS PERICIAIS

codificados atraveacutes de um determinado esquema de representaccedilatildeo No passo seguinteeacute adicionada a capacidade de raciociacutenio ao sistema pericial recorrendo a estrateacutegiasheuriacutesticas na tentativa de fornecer um resultado semelhante ao que um perito forneceriae aqui uma vez mais o papel do perito eacute fundamental para o sucesso do sistema pericial

Para aleacutem de contribuir com o conhecimento o perito deveraacute igualmente contribuircom o raciociacutenio utilizado para o manuseamento desse mesmo conhecimento Isto porquea resoluccedilatildeo de um problema poderaacute em determinadas situaccedilotildees necessitar de pequenosajustes que fogem agrave linearidade de um processamento computacional mas que podemperfeitamente ser simuladas e recriadas na construccedilatildeo do raciociacutenio do programa

Eacute necessaacuterio compreender que um perito para aleacutem de ser algueacutem que eacute consideradoum especialista na sua aacuterea eacute habitualmente algueacutem com pouco ou nenhum tempodisponiacutevel o que dificulta bastante a realizaccedilatildeo da recolha do conhecimento O seutempo eacute dispendioso e tem por norma poucos espaccedilos de manobra devido agraves muitassolicitaccedilotildees que lhe satildeo dirigidas Aqui impera o factor de resistecircncia ora porque o peritonatildeo acredita que o sistema seja tatildeo eficaz como ele ora porque existe o receio de sersubstituiacutedo ou passar a ter menos solicitaccedilotildees Quanto maior a colaboraccedilatildeo do ou dosperitos envolvidos na criaccedilatildeo de um qualquer sistema pericial melhor e mais eficaz seraacuteesse sistema pericial

211 Arquitectura

As duas grandes componentes do sistema pericial e que permitem a separaccedilatildeo referidaentre conhecimento e raciociacutenio satildeo a base de conhecimento (depende do domiacutenio ou daaacuterea abrangida) e o bloco de raciociacutenio (natildeo depende do domiacutenio) Este uacuteltimo eacute aindadividido em trecircs partes distintas o motor de inferecircncia o sistema de explicaccedilotildees e ainterface com o utilizador

Um sistema pericial deve ser estruturado de forma a que possa ser actualizado facil-mente sem que seja necessaacuteria qualquer alteraccedilatildeo ao niacutevel funcional do programa

7

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 1 Arquitectura de um sistema pericial

A figura 1 mostra a composiccedilatildeo de um sistema pericial e que mais detalhadamente eacutea seguinte

bull Interface com o utilizador

um sistema pericial deveraacute permitir a interacccedilatildeo com o utilizador Nos casosmais habituais os utilizadores que usufruem dos benefiacutecios destes sistemas natildeosatildeo peritos da aacuterea e pretendem aconselhamento ou ajuda na resoluccedilatildeo de umproblema Noutros casos o utilizador poderaacute ser um perito da aacuterea que apenaspretende testar o sistema pericial ou confrontar as conclusotildees deste com as suasproacuteprias conclusotildees para perceber se sendo diferentes qual o motivo para queisso aconteccedila Isto poderaacute permitir que um perito aprofunde ou corrija o seuproacuteprio conhecimento ou que por outro lado se procedam a correcccedilotildees agrave base deconhecimento do sistema pericial mediante se trate de erro por parte de um ou deoutro

De qualquer forma a interface com o utilizador deveraacute permitir a interacccedilatildeo entreo sistema pericial e o utilizador (qualquer que este seja) para que o utilizadorresponda agraves questotildees que lhe satildeo colocadas e peccedila explicaccedilotildees para os passos econclusotildees que percorre e descobre ao longo da utilizaccedilatildeo do programa

bull Base de conhecimento

o conhecimento extraiacutedo de um ou mais peritos eacute armazenado e mantido aquiDurante a execuccedilatildeo do programa o sistema pericial acede a esta base para consultaros dados disponiacuteveis Eacute sempre possiacutevel em qualquer altura retirar acrescentarou corrigir factos na base de conhecimento Isto contribui para uma evoluccedilatildeo damesma no sentido de melhorar sempre o funcionamento do proacuteprio sistema pericial

8

21 SISTEMAS PERICIAIS

bull Motor de inferecircncia

este bloco eacute o grande responsaacutevel por interpretar o conhecimento e colocarde uma forma estruturada questotildees ao utilizador O raciociacutenio extraiacutedo do ou dosperitos eacute aqui consultado para que mediante as questotildees que satildeo colocadas aoutilizador e as consultas que satildeo efectuadas agrave base de conhecimento este motor deinferecircncia determine qual a proacutexima questatildeo a colocar qual a proacutexima consulta arealizar ou qual a conclusatildeo a apresentar

bull Sistema de explicaccedilotildees

sempre que o utilizador pretende que lhe seja dada uma explicaccedilatildeo para aquestatildeo que estaacute a ser colocada ou para a conclusatildeo que foi determinada este blocoseraacute o responsaacutevel por dar essa mesma explicaccedilatildeo

Esta divisatildeo permite que os moacutedulos funcionais do programa possam ser isoladoscomo podemos observar na figura 1 de forma a facilitar futuras correcccedilotildees e actualizaccedilotildeesda base de conhecimento contribuindo positivamente para a evoluccedilatildeo da mesma eevitando assim que o sistema pericial fique obsoleto

212 Base de conhecimento

Uma base de conhecimento eacute um conjunto de informaccedilatildeo representada de forma a quepossa ser processada pelo motor de inferecircncia Existem vaacuterias formas de representa-ccedilatildeo de conhecimento no entanto as mais conhecidas satildeo a representaccedilatildeo por regrasrepresentaccedilatildeo por ldquoframesrdquo e ainda as redes semacircnticas

Ao representar conhecimento um dos factores determinantes para o meacutetodo necessaacute-rio a essa representaccedilatildeo eacute o domiacutenio do problema ou aacuterea a modelar A tiacutetulo de exemplose um problema segue um padratildeo ou algum tipo de linearidade na busca da soluccedilatildeonecessaacuteria ou ainda se a soluccedilatildeo puder ser obtida atraveacutes de questotildees cujas respostassatildeo maioritariamente simples (sim natildeo valores numeacutericos etc) a representaccedilatildeo doconhecimento eacute feita utilizando os meacutetodos de regras ou ldquoframesrdquo

Como jaacute foi referido o papel de um perito natildeo estaacute limitado apenas agrave contribuiccedilatildeocom o conhecimento para a base necessaacuteria Este exerce um outro papel igualmenteimportante que tem a ver mais com o aspecto de raciociacutenio Desta forma ao consultar abase de conhecimento satildeo tomadas algumas decisotildees tais como verificaccedilatildeo de eventuaissoluccedilotildees jaacute possiacuteveis em pontos intermeacutedios ou qual a proacutexima questatildeo a colocar Estemeacutetodo de interacccedilatildeo com a base de conhecimento poderaacute eventualmente entrar em

9

CAPIacuteTULO 2 ESTADO DA ARTE

conflito com a independecircncia de domiacutenio que foi referida na arquitectura de um sistemapericial No entanto este aspecto fundamental da criaccedilatildeo de um sistema pericial contribuilargamente para o bom funcionamento do mesmo

Para aleacutem disto a base de conhecimento deveraacute sempre contemplar as funcionalidadesnecessaacuterias que permitam ao utilizador em qualquer altura proceder agrave adiccedilatildeo de novosfactos agrave correcccedilatildeo dos jaacute existentes ou ainda agrave eliminaccedilatildeo dos mesmos Isto permitemanter uma base de conhecimento sempre actualizada fiaacutevel e consistente Estas razotildeescontribuem para a resoluccedilatildeo cada vez mais eficaz dos problemas que satildeo colocadosPara novos problemas que surgem poderatildeo ser necessaacuterias novas soluccedilotildees ou novosmeacutetodos para as encontrar Para problemas jaacute conhecidos poderatildeo ser encontradas novasformas ou novas soluccedilotildees de os resolver eventualmente consideradas mais eficazes ou deimplementaccedilatildeo mais simples

Por tudo isto considera-se que a base de conhecimento apesar de natildeo ser o verdadeiromotor de um sistema pericial poderaacute ser encarada como o verdadeiro combustiacutevelque o move e sem o qual natildeo seria possiacutevel qualquer tipo de evoluccedilatildeo pelo que a natildeocontribuiccedilatildeo para o seu melhoramento estagna o proacuteprio sistema provocando mais cedoou mais tarde o abandono do mesmo por parte dos utilizadores que entretanto podemperder a confianccedila que lhe depositaram

Os meacutetodos de representaccedilatildeo de conhecimento podem ser seleccionados de acordocom as caracteriacutesticas que lhes estatildeo inerentes e que se descrevem de seguida

2121 Regras

Uma das teacutecnicas de representaccedilatildeo de conhecimento mais utilizadas eacute a representaccedilatildeopor regras Estas satildeo utilizadas para representar heuriacutesticas e caracterizam-se por umconjunto de premissas que desencadeiam ou conduzem a uma soluccedilatildeo

As regras tecircm o formato ltidentificaccedilatildeogt Se ltLeft-Handed Side (LHS)gt EntatildeoltRight-Handed Side (RHS)gt

Onde

ltidentificaccedilatildeogt - identificaccedilatildeo da regra

ltLHSgt ndash ldquoLeft-Handed Siderdquo define as premissas que teratildeo que ser satisfeitas deforma a que a regra possa ser disparada

ltRHSgt ndash ldquoRight-Handed Siderdquo define as acccedilotildees ou conclusotildees que seratildeo verificadascom o disparo da regra

As premissas satildeo definidas recorrendo a factos que podem ser previamente conhecidosou inferidos a partir de outras regras A utilizaccedilatildeo de regras promove uma separaccedilatildeo

10

21 SISTEMAS PERICIAIS

entre a parte loacutegica e a funcional isto eacute permite-nos uma abstracccedilatildeo de implementaccedilatildeofocando-se na loacutegica

Vantagens

bull expressividade - as regras satildeo normalmente representadas de uma forma naturalque pode mesmo chegar a ser declarativa Eacute perfeitamente normal uma regra estarescrita num vocabulaacuterio que pode ser lido e compreendido por algueacutem que natildeo sejao programador o perito ou algueacutem com formaccedilatildeo na aacuterea em questatildeo

bull modularidade - as regras satildeo independentes entre si o que possibilita uma maisfaacutecil manutenccedilatildeo da base de conhecimento Isto permite e facilita a remoccedilatildeo deregras a adiccedilatildeo de outras ou a alteraccedilatildeo das jaacute existentes

bull separaccedilatildeo loacutegica - as regras satildeo independentes do motor de inferecircncia e estenatildeo carece de alteraccedilotildees ou actualizaccedilotildees quando as regras satildeo modificadas Ofuncionamento do sistema natildeo eacute alterado quando as regras o satildeo apenas as soluccedilotildeesque o sistema obteacutem eacute que poderatildeo ser diferentes (normalmente para melhor)

bull gramaacutetica riacutegida - as regras obedecem a estruturas que estatildeo perfeitamente defi-nidas agrave partida Isto implica que as mesmas possam ser validadas ou ateacute mesmoconstruiacutedas recorrendo a outros sistemas

bull execuccedilatildeo loacutegica - eacute sempre possiacutevel em qualquer altura do funcionamento dosistema pericial solicitar o desencadeamento ou disparo de uma sucessatildeo deregras A isto chama-se uma explosatildeo combinatoacuteria das regras e permite quesejam contemplados vaacuterios cenaacuterios possiacuteveis utilizando apenas uma execuccedilatildeoEsta execuccedilatildeo loacutegica tem sempre o mesmo resultado desde que se mantenham osparacircmetros iniciais

bull sistema de explicaccedilotildees - ao proceder a disparos de regras eacute possiacutevel dar indicaccedilatildeode qual a loacutegica utilizada para disparar uma determinada regra Isto permite de umaforma didaacutectica e simples justificar a razatildeo dos disparos auxiliando o utilizador nacompreensatildeo da evoluccedilatildeo que o sistema segue para atingir determinada soluccedilatildeo

Desvantagens

bull explicaccedilotildees - se um utilizador natildeo conhecer as regras ou natildeo as aceitar o sistemade explicaccedilotildees natildeo seraacute uma mais valia Poderaacute ateacute eventualmente tornar-se emalgo que confunde mais do que aquilo que auxilia

11

CAPIacuteTULO 2 ESTADO DA ARTE

bull gramaacutetica riacutegida - apesar de o meacutetodo de utilizaccedilatildeo de estruturas poder ser con-siderado importante porque estabelece um padratildeo a ser seguido pode conduzir aproblemas de expressividade quando utilizado em domiacutenios complexos

bull inconsistecircncia - um dos maiores problemas que podem surgir num sistema queutiliza a representaccedilatildeo do conhecimento atraveacutes de regras tem a ver com a possibi-lidade da existecircncia de inconsistecircncias e incoerecircncias nas regras Isto reduz-se ouevita-se atraveacutes da utilizaccedilatildeo exaustiva do sistema numa fase de testes em que satildeoequacionados o maior nuacutemero de casos ou cenaacuterios que possam despoletar todas asregras existentes na base de conhecimento

2122 Frames

Uma frame representa um conceito e eacute composta por slots que que natildeo satildeo mais do que adefiniccedilatildeo de um conjunto ltatributo valorgt Um valor pode ser um elemento uacutenico ouuma lista de valores e em termos de dados pode conter um tipo de dados primitivo ouuma referecircncia a outra frame

Esta representaccedilatildeo tem uma ligaccedilatildeo muito forte com o paradigma da programaccedilatildeoorientada a objectos jaacute que a ideia eacute a mesma representar objectos e conceitos do mundoreal utilizando a descriccedilatildeo a composiccedilatildeo e a heranccedila

Como vantagens temos

bull associaccedilatildeo - as frames definem e representam o conhecimento de uma formaassociativa (associaccedilatildeo normal de conceitos)

Desvantagens

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as frames podem representar um espaccedilo que natildeo estaacuterestringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

12

21 SISTEMAS PERICIAIS

2123 Redes semacircnticas

Uma rede semacircntica eacute um modelo formal em que satildeo descritos conceitos e relaccedilotildeesrecorrendo a um grafo dirigido Os conceitos satildeo representados por noacutes as relaccedilotildees porarcos e existe uma heranccedila de conceitos agrave medida que se procede agrave navegaccedilatildeo pelas vaacuteriasrelaccedilotildees

Como vantagens temos

bull exploraccedilatildeo graacutefica - a representaccedilatildeo de conhecimento atraveacutes de redes semacircnticaspermite a um utilizador explorar um domiacutenio graficamente Isto facilita a interacccedilatildeoe utilizaccedilatildeo do sistema

bull facilidade na adiccedilatildeo de clusters relacionados - utilizando o modo graacutefico de repre-sentaccedilatildeo torna-se mais faacutecil adicionar novos clusters em que existam conceitosrelacionados

bull faacutecil assimilaccedilatildeo - os seres humanos relacionam-se bem com ambientes graacuteficose tecircm uma tendecircncia a natildeo soacute aceitaacute-los melhor como tambeacutem a proceder a umautilizaccedilatildeo mais atractiva simples e de raacutepida aprendizagem com um miacutenimo deformaccedilatildeo

Como desvantagens temos

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as redes semacircnticas podem representar um espaccedilo que natildeoestaacute restringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

bull falta de estrutura e formalidade - natildeo existe uma semacircntica formal para a represen-taccedilatildeo simboacutelica das ligaccedilotildees o que deixa demasiado espaccedilo para a criatividade eeventualmente para o surgimento de problemas associados ao facto de poderemexistir muacuteltiplas formas de representaccedilatildeo

13

CAPIacuteTULO 2 ESTADO DA ARTE

2124 Mecanismos de inferecircncia

A base de conhecimento representa o caminho para encontrar uma determinada soluccedilatildeomas o motor de inferecircncia eacute a entidade que efectivamente percorre esse caminho Ummotor de inferecircncia pode utilizar diferentes estrateacutegias de raciociacutenio para a obtenccedilatildeode respostas As mais conhecidas satildeo a estrateacutegia de encadeamento directo e a deencadeamento inverso Contudo eacute possiacutevel combinar as duas no mesmo sistema naquiloque eacute vulgarmente conhecido como uma estrateacutegia de encadeamento misto

Encadeamento directo (Forward Chaining) ndash Um ser humano no seu dia a dia utilizaesta estrateacutegia para processamento de raciociacutenio Consoante assistimos a acontecimentoso ceacuterebro processa-os e analisa-os decidindo o que fazer de seguida De igual modo aestrateacutegia de raciociacutenio por encadeamento directo comeccedila por percorrer os factos baacutesicosque vatildeo originar o disparo de regras o que levaraacute agrave obtenccedilatildeo de conclusotildees intermeacutediasque por sua vez iratildeo originar o disparo de mais regras e assim sucessivamente Oprocesso continua ateacute que se obtenham conclusotildees finais se tal for possiacutevel ou natildeo hajamais lugar agrave possibilidade de disparo de novas regras

Devido agraves suas caracteriacutesticas esta estrateacutegia eacute mais apropriada para planeamentomonitorizaccedilatildeo controlo e interpretaccedilatildeo

Encadeamento inverso (Backward Chaining) ndash No encadeamento inverso o motorde inferecircncia tenta provar as conclusotildees finais que aparecem no lado direito das regras(RHS) Essas conclusotildees finais tambeacutem satildeo designadas como objectivos e eacute normaldizer-se que o motor de inferecircncia com encadeamento inverso eacute orientado aos objectivos(goal driven)

Para provarmos uma dada conclusatildeo teremos que provar as condiccedilotildees que aparecemno lado esquerdo da regra (LHS) que poderatildeo ser suportadas por conclusotildees intermeacutediasde outras regras ou por factos baacutesicos Sendo assim o mecanismo de encadeamentoinverso assume um caraacutecter essencialmente recursivo (para provar uma conclusatildeo vamoster que provar as condiccedilotildees)

Este tipo de estrateacutegia eacute mais apropriada para diagnoacutesticos jaacute que temos uma hipoacuteteseque necessita de ser provada de forma a chegar a uma conclusatildeo

Eacute importante salientar que a forma de representaccedilatildeo das regras eacute independente daestrateacutegia utilizada pelo motor de inferecircncia No entanto eacute possiacutevel melhorar a eficaacuteciado sistema se adaptarmos essa representaccedilatildeo consoante o encadeamento utilizado

14

21 SISTEMAS PERICIAIS

2125 Manutenccedilatildeo de uma base de conhecimento

A manutenccedilatildeo de uma base de conhecimento embora seja considerada vital para asobrevivecircncia do sistema pericial eacute um processo bastante complexo no sentido emque implica cuidados que nem sempre satildeo tidos ou considerados Eacute habitual existiremproblemas de validaccedilatildeo verificaccedilatildeo redundacircncia e contradiccedilotildees

De forma a garantir que a base de conhecimento se mantenha fiaacutevel e bem definidadevem ser desenvolvidos mecanismos que evitem a ocorrecircncia deste tipo de problemas

Redundacircncia - Considera-se aplicaccedilatildeo de redundacircncia a uma base de conhecimentoquando ao inserir uma regra estamos a adicionar conhecimento que jaacute estava contido nabase de conhecimento Podemos observar o seguinte exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X tem_barbatanas entatildeo X nada

regra3 se X nada E X tem_barbatanas entatildeo X eacute_peixe

Neste exemplo eacute possiacutevel verificar que esta base de conhecimento manteacutem-se idecircntica(o conhecimento eacute o mesmo) se removermos a regra3 considerada redundante Esta regranatildeo trouxe nenhum conhecimento novo ao sistema e pode ser descartada

Contradiccedilatildeo - Considera-se regra contraditoacuteria toda a regra que contradiz conheci-mento jaacute existente na base de conhecimento Por exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X nada entatildeo X natildeo_eacute_peixe

A regra2 contradiz claramente a regra1 pelo que eacute considerada contraditoacuteria Um dosgrandes problemas na anaacutelise de duas ou mais regras contraditoacuterias passa por determinarquais as que correspondem ao conhecimento correcto

Verificaccedilatildeo - acccedilatildeo desencadeada ainda na fase de implementaccedilatildeo inicial da base deconhecimento onde se pretende minimizar problemas essencialmente de redundacircncia e decontradiccedilatildeo que possam ser provocados pelo programador Toda a base de conhecimentoeacute verificada e confrontada com as notas apontamentos e indicaccedilotildees a que o programadorteve acesso e que serviram de alicerce para a construccedilatildeo da mesma

Validaccedilatildeo - a acccedilatildeo preventiva de erros iniciais levada a cabo logo apoacutes a implementa-ccedilatildeo da base de conhecimento precede a acccedilatildeo seguinte que consiste em validar a referidabase atraveacutes da intervenccedilatildeo de um perito o qual utiliza vaacuterios cenaacuterios de testes ondetenta obter as respostas ao mesmo tempo que vai consultando as explicaccedilotildees disponiacuteveisao longo do percurso

Apesar de ser habitual proceder a esta validaccedilatildeo com o perito que contribuiu como conhecimento eacute igualmente habitual e ateacute beneacutefico utilizar outros peritos da mesma

15

CAPIacuteTULO 2 ESTADO DA ARTE

aacuterea que para aleacutem de validarem a base de conhecimento em causa poderatildeo inclusiveconfrontar o seu proacuteprio conhecimento com o do perito original procedendo a correcccedilotildeesa eles proacuteprios ou agrave base per si Quanto maior a taxa de intervenccedilatildeo construtiva por partede peritos numa base de conhecimento melhor seraacute a qualidade associada agrave mesma

213 Raciociacutenio sobre incerteza

Raciociacutenio sobre incerteza eacute o nome dado ao processo de formulaccedilatildeo de conhecimentobaseado em fontes de informaccedilatildeo que detenham algum tipo de incerteza na sua especifi-caccedilatildeo

O conhecimento que detemos natildeo se limita a observaccedilotildees loacutegicas do tipo ldquose Obser-vaccedilatildeo_A entatildeo conclusatildeo_Brdquo Em vaacuterias situaccedilotildees necessitamos de lidar com informaccedilatildeoincompleta incorrecta ou ateacute mesmo ausente

Quando lidamos com conhecimento de peritos num determinado domiacutenio surge aindaoutro tipo de conhecimento este originado atraveacutes da observaccedilatildeo e experiecircncia

Existe entatildeo a necessidade de representaccedilatildeo de conhecimento e respectivo grau decerteza Para este efeito existem algumas teacutecnicas tais como loacutegica Fuzzy teorias deprobabilidades tais como Bayes ou Dempster-Shafer factores de certeza entre outros

Os seguintes autores podem ser consultados para referecircncia das teacutecnicas acima men-cionadas

bull Loacutegica Fuzzy - Drakopoulos (1994)

bull Bayes - Lucas (2001)

bull Dempster-Shafer - Wilson (2000) e Barnett (1991)

De seguida vai ser descrita a teacutecnica dos factores de certeza que foi a teacutecnica adoptadapara o desenvolvimento da soluccedilatildeo

2131 Factores de certeza

A teacutecnica dos Certainty Factors ou Factores de Certeza (CF) eacute um do meacutetodos detratamento de incertezas num sistema pericial A teacutecnica foi desenvolvida por Shortliffeand Buchanan para o projecto MYCIN um sistema pericial de diagnoacutestico e tratamentode meningite e tratamento do sangue Desde entatildeo que esta teacutecnica eacute o padratildeo seguido nodesenvolvimento de sistemas periciais baseados em regras Heckerman (1992)

16

21 SISTEMAS PERICIAIS

De um ponto de vista funcional caracteriza-se pela atribuiccedilatildeo de um nuacutemero o graude certeza a factos e regras Esse grau de certeza eacute uma medida relativa probabiliacutesticaque pode ser positiva ou negativa sendo normalmente usados valores no intervalo de -1 a1

A sua definiccedilatildeo original baseou-se na seguinte foacutermula FC [HE] = MC [HE]minusMD [HE]

O factor de certeza da hipoacutetese H dado uma evidecircncia E eacute dado pela diferenccedila entre

bull a medida de certeza de H dado Erarr MC [HE]

bull a medida de descrenccedila de H dado Erarr MD [HE]

O CF final de uma regra com uma premissa baseada num facto ou noutra regra eacute dadopela foacutermula 21

Quando as premissas estatildeo associadas atraveacutes do operador conjunccedilatildeo eacute aplicada afoacutermula 22

Quando existe mais do que uma regra a suportar uma determinada conclusatildeo o CFfinal eacute o resultado da foacutermula 23

CFf inal =CFpremissatimesCFregra 21

CFf inal = min[CFpremissa1 CFpremissan

]timesCFregra

22

X Y gt 0CF (X Y ) = X +Y (100˘X)100 23a

X ou Y lt 0CF (X Y ) = X +Y(1˘min(X Y)) 23b

X Y lt 0CF (X Y ) =minusCF (minusX minusY ) 23c

214 Vantagens e desvantagens

Apesar de tudo o que foi descrito um sistema pericial natildeo representa de forma alguma aferramenta mais apropriada para resolver todos os problemas com recurso a conhecimentoque de outra forma estaria reservado apenas a peritos das vaacuterias aacutereas Ao utilizarmosum sistema pericial estamos sujeitos a aspectos positivos e negativos cabendo a noacutes opapel de determinar se quando confrontados com um determinado problema a utilizaccedilatildeodeste tipo de ferramenta eacute a mais apropriada

17

CAPIacuteTULO 2 ESTADO DA ARTE

Para observar quais as principais vantagens de um sistema pericial podemos consultaras opiniotildees partilhadas por Giarratano et al (1998) CoAJRA (1997)

bull Elevada disponibilidaderArr um sistema pericial estaacute sempre disponiacutevel em termosde tempo e local pronto a funcionar sob qualquer condiccedilatildeo enquanto que umperito natildeo dispotildee dessa total disponibilidade

bull Baixo risco de utilizaccedilatildeorArr pode ser utilizado em ambientes considerados perigo-sos e hostis para um ser humano

bull Baixo custo rArr o custo de providenciar conhecimento por utilizador eacute bastantereduzido

bull DurabilidaderArr o conhecimento eacute permanente ao contraacuterio de um especialista queestaacute sujeito a ausecircncias

bull Conhecimento de vaacuterios especialistasrArr quando agregado o conhecimento reco-lhido a partir de vaacuterios especialistas poderaacute conduzir a resultados mais adequadose considerados melhores quando confrontados com o conhecimento individual e osresultados que daiacute advecircm

bull Capacidade de explicaccedilatildeorArr um sistema pericial consegue explicar detalhadamenteos passos que levaram agrave resposta dada enquanto que um ser humano pode natildeo tera disponibilidade nem a vontade de explicar todo o processo de raciociacutenio seguido

bull EmotividaderArr um sistema pericial natildeo estaacute sujeito a emoccedilotildees o seu funciona-mento e as respostas que providencia natildeo satildeo influenciadas pelo meio em que estaacuteinserido como por exemplo situaccedilotildees de stress ou situaccedilotildees de perigo iminente (aqueda de um aviatildeo ou uma central nuclear em risco)

bull Natildeo influenciaacutevelrArr acontecimentos mais actuais tecircm o mesmo peso na tomada dedecisatildeo evitando assim o fenoacutemeno de ldquoviciaccedilatildeordquo da base de conhecimento

No entanto um sistema pericial comporta tambeacutem algumas desvantagens das quaisse salientam

bull Emotividade rArr o facto de natildeo ser emotivo tambeacutem pode ser visto como umadesvantagem jaacute que natildeo recorrer a emoccedilotildees pode ser problemaacutetico por exemploem situaccedilotildees que necessitem de senso comum

18

21 SISTEMAS PERICIAIS

bull ManutenccedilatildeorArr se natildeo for devidamente mantido e actualizado um sistema pericialcorre o risco de ldquoenvelhecerrdquo no sentido em que deixa de ser um sistema fiaacutevel aque possamos recorrer e que corre o risco de abandono

bull CriatividaderArr um sistema pericial natildeo tem capacidade de reagir de forma diferentea problemas colocados seguindo sempre uma linha estaacutevel de raciociacutenio

bull Adaptaccedilatildeo sensorial rArr um sistema pericial natildeo consegue reagir a informaccedilatildeosensorial do meio que o rodeia entenda-se sensorial como sentidos humanos taiscomo o cheiro o tacto e a visatildeo

19

CAPIacuteTULO 2 ESTADO DA ARTE

22 GISPSA - GIS Problem Solver Advisor

O Gestatildeo Integrada de Seguros (GIS) eacute um Sistema de Informaccedilatildeo vocacionado para aactividade seguradora residente na plataforma AS400 da IBM Umas das caracteriacutesticasmais interessantes deste sistema acabou por ser tambeacutem um dos grandes proporciona-dores de eventuais problemas O GIS possui uma grande capacidade de configuraccedilatildeo oque sendo muito uacutetil para a adaptabilidade deste a cenaacuterios situaccedilotildees ou utilizadoresdiferentes acaba por originar vaacuterios problemas operacionais atraveacutes de inconsistecircnciasna proacutepria configuraccedilatildeo

Dada esta facilidade aparente de ocorrecircncia de problemas e a falta de sensibilidadee formaccedilatildeo teacutecnica dos utilizadores para os resolver a equipa de assistecircncia teacutecnicaafecta ao GIS estava muitas vezes com sobrecarga de pedidos por parte dos clientes quepretendem estes problemas solucionados Existiam periacuteodos de especial relevacircncia noque toca a estas sobrecargas tais como os fechos de ano das empresas

A partir daqui surge a ideia e a necessidade da criaccedilatildeo do GISPSA com o intuito dealiviar a sobrecarga da equipa de assistecircncia teacutecnica mas essencialmente com o grandeobjectivo de assegurar que um cliente natildeo fica sem soluccedilatildeo para os problemas com que sedepara apenas porque natildeo estatildeo teacutecnicos disponiacuteveis A grande vantagem de um sistemapericial foi e seraacute sempre essa poder substituir um perito sem ter que enfrentar questotildeescomo a disponibilidade custos ou tempo

Assim surge o GISPSA que mais natildeo eacute que um projecto criado por Pinto no acircmbito deum projecto acadeacutemico cujo objectivo inicial passava por criar um Sistema Pericial paradiagnoacutestico de problemas operacionais do GIS Este sistema teve por base o conhecimentoe o respectivo raciociacutenio extraiacutedos de um perito da aacuterea Administrativa-Financeira doGIS

No caso de problemas mais complexos em que o Sistema Pericial natildeo consiga determi-nar os factores de erro eacute remetida a resoluccedilatildeo para um teacutecnico da empresa comunicandoesse facto ao utilizador Pinto (1998)

221 Arquitectura

Sendo um sistema pericial o GISPSA teria que ser desenvolvido utilizando uma lingua-gem que tivesse uma seacuterie de caracteriacutesticas A existecircncia de uma base de conhecimento apossibilidade de consultar factos adicionar novos factos ou ainda de remover factos nessamesma base e aspectos como o backtracking na realizaccedilatildeo de raciociacutenio ao inferir sobreesses mesmos factos natildeo permitia um leque muito alargado na escolha da linguagem de

20

22 GISPSA - GIS PROBLEM SOLVER ADVISOR

desenvolvimento

Desta forma ficou decidido que o GISPSA seria desenvolvido em prolog (maisespecificamente winprolog) Devido agrave simplicidade de utilizaccedilatildeo e extensa documentaccedilatildeode apoio o LPAProlog foi usado como motor de inferecircncia e o LPAFlex foi usado paraestabelecer a declaraccedilatildeo de regras

Como jaacute foi referido anteriormente o GISPSA eacute uma aplicaccedilatildeo standalone desenhadae desenvolvida para uma execuccedilatildeo local em mono-posto e sujeita agrave obtenccedilatildeo de umalicenccedila de utilizaccedilatildeo para garantir o seu funcionamento

Figura 2 GISPSA menu inicial

A aplicaccedilatildeo dispotildee de uma interface graacutefica tambeacutem criada em winprolog que utilizarecursos especiacuteficos do sistema operativo Windows

A base de conhecimento eacute armazenada num uacutenico ficheiro ksl e o seu carregamentonatildeo eacute parcial O mesmo seraacute dizer que toda a base de conhecimento eacute passada paramemoacuteria de trabalho assim que o programa arranca

222 Funcionamento

Em termos funcionais a aplicaccedilatildeo permite mudar o tipo de linguagem a ser empreguenas conversaccedilotildees estabelecidas com o utilizador consoante esta esteja a ser utilizadapor um teacutecnico (habitualmente os teacutecnicos com formaccedilatildeo na aacuterea) ou um utilizadornormal (o cliente que adquiriu a aplicaccedilatildeo e cuja formaccedilatildeo eacute mais reduzida ou ateacute mesmoinexistente)

Apoacutes a definiccedilatildeo da linguagem de interacccedilatildeo a utilizar o sistema inicia entatildeo o pedidode assistecircncia apresentando a mensagem ldquoSeleccione a aplicaccedilatildeordquo (figura 3) que permitenuma primeira instacircncia direccionar o raciociacutenio face agrave resposta do utilizador

21

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 3 GISPSA interacccedilatildeo inicial

Figura 4 GISPSA exemplo de interacccedilatildeo pergunta-resposta

223 Limitaccedilotildees

Apesar de ser inovadora na aacuterea esta aplicaccedilatildeo foi no iniacutecio bastante utilizada por algunsclientes tendo sofrido algum abandono de forma gradual ao longo do tempo de vida quejaacute leva Apoacutes uma anaacutelise chegou-se agrave conclusatildeo que as principais causas na origemdesse abandono seriam as seguintes

bull Adicionar regras implicava o conhecimento da sintaxe das mesmas Verificou-se que esta tarefa era demasiado complexa para um utilizador sem formaccedilatildeo esensibilidade suficientes na aacuterea da programaccedilatildeo

bull O acto de proceder agrave ediccedilatildeo de regras existentes na base de conhecimento traduz-senuma tarefa que para aleacutem de morosa eacute essencialmente de risco no sentido em

22

23 WEB EXPERT SYSTEMS

que natildeo existe uma verdadeira noccedilatildeo do impacto que estas alteraccedilotildees possam vir ater no comportamento global do sistema

bull O sistema apenas pode ser instalado em mono-posto o que obriga agrave obtenccedilatildeo deuma licenccedila por cada instalaccedilatildeo que se pretende realizar

bull O sistema natildeo permite a integraccedilatildeo com ambientes baseados em redes e sistemasdistribuiacutedos

bull Natildeo existe nenhum mecanismo de verificaccedilatildeo da base de conhecimento

bull O aspecto visual da aplicaccedilatildeo estaacute ultrapassado e eacute pouco apelativo

23 Web Expert Systems

Actualmente uma grande maioria dos sistemas periciais desenvolvidos satildeo desenhadospara um funcionamento em ambientes web As razotildees apontadas para esta orientaccedilatildeo satildeovaacuterias destacando-se a evoluccedilatildeo da proacutepria tecnologia as velocidades de transmissatildeode dados em redes a possibilidade de acesso em muacuteltiplas localizaccedilotildees geograacuteficas(desde que assegurado o necessaacuterio acesso agrave rede) e ainda o desenvolvimento de novasferramentas que possibilitam maior facilidade na criaccedilatildeo destes novos sistemas

Algumas das ferramentas que permitem actualmente o desenvolvimento de um sistemapericial baseado em ambientes web satildeo as seguintes

1 WebFlex - LPA Flex

2 EXSYS CORVID

3 WebCLIPS

4 JCLIPS

5 JESS

6 Acquire

WebFlex - Esta ferramenta permite a publicaccedilatildeo de um sistema pericial desenvolvidoem ldquoLPA Prologrdquo Os sistemas periciais desenvolvidos a partir deste meacutetodo necessitamainda de outra ferramenta para garantir o funcionamento o ldquoLPA ProWeb Serverrdquo Eacute

23

CAPIacuteTULO 2 ESTADO DA ARTE

possiacutevel adaptar um sistema pericial jaacute desenvolvido para ser disponibilizado numarede sem ser necessaacuterio efectuar qualquer tipo de alteraccedilatildeo No entanto se for pretendidoalgum tipo de configuraccedilatildeo extra por exemplo incluir imagens ou alterar a aparecircncia dealguns controlos eacute uma alteraccedilatildeo extremamente morosa e complexa

WebFlex allows you to deliver your flex-based expert systems onto Intranets

and Extranets easily Just create your rules and frames and questions as per normal

in flex and WebFlex will construct a web server-based solution using ProWeb where

all the questions are sent automatically configured for a standard HTMLJavascript

browserLogic Programming Associaties Ltd (2010)

Eacute possiacutevel alterar o HTML de saiacuteda que o webflex utiliza por defeito no entanto estaconfiguraccedilatildeo natildeo eacute tatildeo simples quanto poderaacute parecer agrave partida e obriga agrave alteraccedilatildeo dosistema pericial

Esta ferramenta funciona apenas em sistemas windows e eacute necessaacuteria a obtenccedilatildeo deuma licenccedila de utilizaccedilatildeo (natildeo eacute gratuita)

EXSYS CORVID - Eacute uma ferramenta composta por dois moacutedulos Exsys CORVID

Knowledge Automation Expert System Software e Exsys Servlet Runtime EXSYS (2010)

Natildeo foi possiacutevel encontrar nenhum sistema desenvolvido por esta ferramenta pormotivos de confidencialidade eou vantagem competitiva Estatildeo no entanto disponiacuteveisaplicaccedilotildees de demonstraccedilatildeo na paacutegina oficial da empresa Verificou-se que nenhumadas aplicaccedilotildees de demonstraccedilatildeo disponiacuteveis possui capacidades de dar explicaccedilotildees oujustificaccedilotildees

De acordo com EXSYS as aplicaccedilotildees construiacutedas com esta ferramenta podem seracedidas por Servlet Applet ou standalone e esta ferramenta necessita da obtenccedilatildeo deuma licenccedila de desenvolvimento

WebCLIPS - Segundo Michael Giordano o WebCLIPS eacute uma implementaccedilatildeo CGI

que envolve o C Language Integrated Production System (CLIPS) como aplicaccedilatildeo internaO CLIPS eacute uma ferramenta de desenvolvimento de sistemas periciais

Esta ferramenta foi desenvolvida em linguagem C o que significa que em termos deportabilidade desde que se possua o coacutedigo fonte este poderaacute ser compilado em qualquersistema operativo jaacute que o compilador para a linguagem estaacute disponiacutevel para todas as

24

23 WEB EXPERT SYSTEMS

versotildees existentes no mercado No entanto o WebCLIPS apenas foi desenvolvido parafuncionamento em sistemas windows e linux

O CLIPS eacute uma ferramenta livre que permite o desenvolvimento de sistemas baseadosem regras Pode ser integrado com algumas linguagens das quais se destacam C Java

(JCLIPS) FORTRAN entre outras Esta eacute provavelmente a ferramenta mais utilizada nodesenvolvimento de sistemas periciais devido agrave sua rapidez eficiecircncia e pelo facto de sergratuita

JCLIPS - Eacute uma biblioteca que permite integraccedilatildeo com Java e permite igualmentea utilizaccedilatildeo do motor do CLIPS a partir de uma classe Java Esta interligaccedilatildeo eacute feitaatraveacutes da importaccedilatildeo do ficheiro (dll ou so consoante o sistema operativo) e permite aexecuccedilatildeo de uma instacircncia ou seja permite ter apenas uma sessatildeo de um sistema pericialde cada vez Maarten Menken (2010)

JESS - O JESS eacute uma extensatildeo do CLIPS em JAVA Eacute basicamente uma bibliotecacujo objectivo natildeo passa por gerar uma aplicaccedilatildeo web mas sim servir de base para quepossa ser integrada ou utilizada para esse efeito Ernest Friedman-Hill (2010)

Utiliza uma linguagem especiacutefica designada JESS language equivalente ao CLIPSmas com novos componentes que a tornam uma linguagem complexa e de difiacutecil utilizaccedilatildeopor algueacutem sem conhecimentos de inteligecircncia artificial

Acquire - Eacute um produto bastante avanccedilado do ponto de vista tecnoloacutegico face aosconcorrentes no sentido em que permite uma separaccedilatildeo evidente entre a camada aplicaci-onal e a camada de apresentaccedilatildeo Promove uma separaccedilatildeo cliente-servidor e disponibilizaum Software Development Kit (SDK) que permite a integraccedilatildeo com outras aplicaccedilotildees

De acordo com Acquired Intelligence o produto estaacute sujeito a uma licenccedila de utilizaccedilatildeoe eacute disponibilizado ainda um serviccedilo online de alojamento de sistemas periciais omyAcquire disponiacutevel mediante uma subscriccedilatildeo semestral

231 Casos de estudo

Os sistemas periciais mais especificamente aqueles que satildeo baseados em sistemas webtecircm conhecido nos uacuteltimos anos uma evoluccedilatildeo gradual e consistente devido em grandeparte agrave simplicidade e disponibilidade que possibilitam Podem ser acedidos a partir dequalquer local no mundo 24 horas por dia e sem qualquer tipo de limitaccedilatildeo bastando

25

CAPIacuteTULO 2 ESTADO DA ARTE

apenas que se garanta o acesso agrave rede onde o sistema pericial estaacute colocado

As interfaces satildeo mais apelativas e chegam a fazer uso de imagens e outros meiosgraacuteficos ou de multimeacutedia cujo objectivo natildeo eacute apenas o de tornar os sistemas maisinteressantes mas tambeacutem mais eficazes jaacute que auxiliam de forma mais simples eesclarecida Os controlos utilizados as caixas de interacccedilatildeo e ateacute mesmo as explicaccedilotildees ejustificaccedilotildees (nos sistemas que o permitam) ajudam a ter uma ideia cada vez mais clarasobre o funcionamento dos sistemas obtendo-se assim melhores resultados

Alguns dos casos de estudo de sistemas periciais baseados em sistemas web existentesactualmente tecircm como um dos seus maiores objectivos a disponibilidade global dosmesmos (satildeo disponibilizados normalmente atraveacutes da internet) e os mais conhecidossatildeo

bull Landfill Operation Management Advisor (LOMA)

bull Medical Diagnosis Support System (MDSS)

bull Whale watcher

2311 LOMA - Landfill Operation Management Advisor

O LOMA eacute um sistema pericial online que analisa problemas operacionais falhas eacidentes em aterros comuns Aleacutem disso o LOMA fornece conselhos sobre como umgestor pode evitar esses problemas e em caso de ocorrecircncia sobre como diminuir oimpacto das suas consequecircncias Encontra-se disponiacutevel em httplomacivil

duthgr e eacute de utilizaccedilatildeo puacuteblica

O sistema pericial foi desenvolvido por Dokas recorrendo agraves ferramentas WebFlex eLPA ProWeb Server

A arquitectura da aplicaccedilatildeo web pode ser visualizada na figura 5 e consiste nosseguintes moacutedulos Dokas (2005)

bull Sistema pericial LOMA

bull Moacutedulo de aconselhamento

bull Moacutedulo operacional de problemas-causa

bull Eventos inicias

bull Problemas operacionais

26

23 WEB EXPERT SYSTEMS

bull Moacutedulo de explicaccedilotildees

bull Moacutedulo de submissatildeo de conhecimento e informaccedilatildeo

Figura 5 Arquitectura do LOMA

O moacutedulo mais relevante para o acircmbito desta dissertaccedilatildeo eacute o ldquoSistema pericial LOMArdquoe eacute tambeacutem o moacutedulo mais importante para a aplicaccedilatildeo LOMA

Eacute composto por vinte e quatro sub-moacutedulos cada um deles responsaacutevel por analisarum tipo especiacutefico de problema e ainda por um sub-moacutedulo extra que eacute responsaacutevel pelocontrolo do sistema

O sub-moacutedulo extra questiona o utilizador que descreve o problema (ver 6 e 7) ecom base na sua descriccedilatildeo apresenta uma lista de possiacuteveis problemas (ver 8) Quandoo utilizador selecciona um problema da lista de resultados eacute activado o respectivo sub-moacutedulo que por sua vez iraacute fornecer informaccedilatildeo de como prevenir o problema ou nocaso de este jaacute ter acontecido como minimizar as suas consequecircncias (ver 9)

27

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 6 Paacutegina inicial do sistema pericial LOMA

Figura 7 Sub-moacutedulo extra

28

23 WEB EXPERT SYSTEMS

Figura 8 Sugestatildeo de problemas do sub-moacutedulo extra

Figura 9 Sub-moacutedulo especializado

29

CAPIacuteTULO 2 ESTADO DA ARTE

2312 MDSS - Medical Diagnosis Support System

O MDSS eacute um sistema pericial utilizado na aacuterea da medicina e foi desenvolvido paraajudar no diagnoacutestico e tratamento da diabetes A diabetes pode afectar vaacuterias partes docorpo provocando diversos sintomas e complicaccedilotildees Quando detectada atempadamenteeacute mais facilmente controlaacutevel e menos perigosa Por todos estes motivos foi criado umsistema pericial online o MDSS que permite inferir sobre uma seacuterie de sintomas parachegar a um diagnoacutestico

Na opiniatildeo de Filho uma das vantagens deste sistema pericial eacute que possibilita quemeacutedicos em ambientes rurais ou perigosos e de difiacutecil acesso com recursos limitadospossam aceder ao sistema pericial de forma a terem uma ajuda no diagnoacutestico destadoenccedila O que comeccedilou como um sistema pericial vocacionado e orientado para adiabetes rapidamente cresceu e tornou-se algo mais do que isso sendo hoje utilizadocomo sistema de diagnoacutestico para vaacuterias doenccedilas

No que diz respeito agrave sua arquitectura o MDSS foi desenvolvido em LPA Prolog

recorrendo aos moacutedulos ProWeb e ProData e utilizando Open Data Base Connectivity

(ODBC) para acesso agrave base de dados Utiliza loacutegica fuzzy para raciociacutenio sobre incertezaspara lidar com conhecimento parcial

O sistema eacute composto por trecircs moacutedulos No primeiro moacutedulo eacute possiacutevel um es-pecialista definir sintomas exames cliacutenicos exames de laboratoacuterio e exames relativosa uma ou mais doenccedilas Eacute ainda possiacutevel a atribuiccedilatildeo de valores (pesos estatiacutesticos)ou de resultados que definem uma doenccedila Isso permite por exemplo que a pressatildeoarterial possa estar associada ao diagnoacutestico de pressatildeo alta diabetes gravidez de riscoou insuficiecircncia renal entre outros Informaccedilotildees de consultas anteriores e exames satildeoautomaticamente ligadas e analisadas sob fundamentaccedilatildeo loacutegico temporal

No segundo moacutedulo o sistema permite consultas atraveacutes do qual os dados relevantespara o paciente satildeo registados e relacionados com outros exames correlacionados Durantea fase de diagnoacutestico o sistema pode sugerir outros testes ou procedimentos para entatildeoinferir se haacute outros riscos e doenccedilas a serem investigados

No terceiro moacutedulo eacute efectuado o diagnoacutestico O sistema iraacute localizar automatica-mente os diagnoacutesticos jaacute registados noutras consultas incluindo aquelas feitas por outrosmeacutedicos Aleacutem disso o sistema pesquisa niacuteveis de doenccedilas de acordo com os resultadosdos exames Pode tambeacutem sugerir uma investigaccedilatildeo mais aprofundada sempre que osdados natildeo sejam suficientes para garantir um diagnoacutestico preciso

30

23 WEB EXPERT SYSTEMS

2313 Whale watcher

O sistema pericial Whale watcher eacute um sistema de demonstraccedilatildeo da plataforma AcquireEste e outros sistemas periciais similares estatildeo disponiacuteveis na paacutegina da Acquire (httpwwwaiinccademos)

Figura 10 Paacutegina principal do sistema pericial Whale Watcher

Figura 11 Paacutegina final do sistema pericial Whale Watcher

Atraveacutes das demonstraccedilotildees facultadas pela Acquire natildeo eacute possiacutevel concluir se existealgum tipo de sistema de explicaccedilotildees No entanto no final de cada sessatildeo do sistemapericial eacute possiacutevel consultar um resumo (ver 11) que funciona como uma explicaccedilatildeomuito baacutesica da inferecircncia realizada pelo sistema pericial jaacute que se limita apenas amostrar os factos que foram respondidos durante a sessatildeo

31

3Ferramentas utilizadas

Durante o desenvolvimento deste trabalho foi necessaacuterio decidir sobre quais as ferramen-tas a utilizar para a criaccedilatildeo do novo sistema pericial Atendendo a algumas caracteriacutesticasproacuteprias e objectivos traccedilados era necessaacuterio utilizar alguma especificidade na escolhapara garantir a exclusividade do resultado Desenvolvimento web capacidade de pro-ceder a inferecircncia sobre conhecimento representado atraveacutes de regras simplicidade deutilizaccedilatildeo actualidade da tecnologia entre outras caracteriacutesticas influenciaram significa-tivamente nesta escolha

Entre os vaacuterios ambientes de desenvolvimento disponiacuteveis a opccedilatildeo recaiu sobre umque para aleacutem de simples e eficiente era utilizado regularmente em situaccedilatildeo profissi-onal pelo criador deste projecto pelo que aqui foi relativamente simples chegar a umaconclusatildeo

Indo de encontro agraves razotildees que levaram agrave escolha da linguagem do motor de inferecircnciautilizada no projecto que deu origem a este trabalho tambeacutem aqui foi escolhida umalinguagem que possibilita o backtracking de forma eficaz e simplificada caracteriacutesticaessencial para o bom funcionamento do motor de inferecircncia e que contribui largamentepara o sucesso do sistema pericial

31 Ambiente de desenvolvimento

O ambiente de desenvolvimento e respectiva linguagem de programaccedilatildeo utilizados para acriaccedilatildeo do interface do sistema pericial foram seleccionados levando em conta algunsrequisitos e factores considerados necessaacuterios e ateacute mesmo essenciais para a soluccedilatildeo finalA listagem dessas caracteriacutesticas eacute a seguinte

bull Baixo custo de disponibilizaccedilatildeo

33

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

bull Independecircncia do sistema operativo

bull Simples escalabilidade

bull Visual apelativo

Com base nesta lista de caracteriacutesticas consideradas desejaacuteveis ou ateacute mesmo essen-ciais para a soluccedilatildeo final e considerando tambeacutem a jaacute longa experiecircncia de utilizaccedilatildeonesta plataforma foi escolhida a linguagem Java J2EE utilizando a framework Icefaces eo portal Glassfish Podemos considerar para esta escolha uma seacuterie de paracircmetros paraaleacutem dos jaacute evidenciados

bull O J2EE eacute uma linguagem independente do sistema operativo

bull O J2EE caracteriza-se pela sua modularidade

bull Glassfish eacute um portal open source com suporte para J2EE

bull Icefaces eacute uma framework JavaServer Faces (JSF) compatiacutevel com o Glassfish

bull Icefaces permite a criaccedilatildeo de interfaces graacuteficos de uma forma simples

bull Existecircncia de boa documentaccedilatildeo relativamente a todos os produtos

Para aleacutem disto podemos ainda considerar e referir outros produtos e componentesque natildeo sendo menos importantes tambeacutem foram utilizados durante o desenvolvimentodeste trabalho A lista completa de ferramentas eacute a seguinte

bull Java J2EE 60

bull Eclipse Galileo (com plugins para Glassfish e svn) - Integrated Development

Environment (IDE) para Java

bull Icefaces 182

bull GlassFish - portal

bull Visual SVN Server e Tortoise - controlo de versotildees

bull MikTeX - latex

bull TexnicCenter - IDE para latex

34

32 MOTOR DE INFEREcircNCIA

32 Motor de inferecircncia

Em qualquer sistema pericial o motor de inferecircncia eacute o cerne do mesmo O seu desenvol-vimento obriga habitualmente a um esforccedilo e concentraccedilatildeo maiores porque aqui residea forma como o sistema iraacute percorrer as vaacuterias etapas necessaacuterias para alcanccedilar umasoluccedilatildeo

Tambeacutem neste trabalho o motor de inferecircncia eacute um ponto essencial e a sua implemen-taccedilatildeo teve um papel destacado no processo de anaacutelise realizado Actualmente existemalguns produtos que podem ser utilizados integral ou parcialmente como motor deinferecircncia de um sistema pericial esses produtos podem ser frameworks ou shells ouainda Business Rule Management System (BRMS)

Os termos framework e shell satildeo muitas vezes utilizados como sinoacutenimo umaframework eacute uma abstracccedilatildeo que permite agregar formas de resoluccedilatildeo de problemascomuns uma shell eacute similar no sentido em que disponibiliza uma camada de abstracccedilatildeouma ldquoconchardquo que encapsula os serviccedilos

No sentido de tentar reutilizar um produto jaacute existente foi elaborado um estudo acercados actuais produtos e das suas caracteriacutesticas A abordagem seguida para esse estudo foiuma abordagem por fases em que gradualmente se foi estreitando o conjunto de soluccedilotildeesaceitaacuteveis mediante a utilizaccedilatildeo de alguns criteacuterios

Foram consideradas cinco fases

bull Fase I - Recolha de candidatos

bull Fase II - Requisitos base

bull Fase III - Viabilidade econoacutemica

bull Fase IV - Viabilidade teacutecnica

bull Fase V - Prova de conceito

321 Fase I - Recolha de candidatos

A fase I teve como objectivo recolher alguns dos actuais produtos que possuam caracteriacutes-ticas desejadas para um sistema deste geacutenero Natildeo foram considerados alguns produtosque satisfaziam os requisitos mas que natildeo permitem uma integraccedilatildeo com Java Foramidentificados os seguintes produtos como potenciais integradores do projecto

35

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

Produto BRMS FrameworkDrools X XHammurapi Rules XILog XJCLIPS XJESS XJEOPS XJRuleEngine XOpenL Tablets XOpenRules XProva language XYprolog XZilonis X

Tabela 1 Listagem de produtos da Fase I

Drools - ou JBoss Rules eacute um produto open source da RedHat (2010) Define umalinguagem especiacutefica para as regras Eacute desenvolvido em Java e utiliza um mecanismo deencadeamento directo baseado em regras natildeo implementa justificaccedilotildees

Hammurapi Rules - eacute um produto desenvolvido em Java por Hammurapi GroupEste motor de inferecircncia utiliza a sintaxe da linguagem Java para definiccedilatildeo de regras Eacutepossiacutevel definir grupos de regras em XML e estaacute disponiacutevel um plug-in para Eclipse quepermite a ediccedilatildeo destes grupos Suporta encadeamento directo e indirecto

ILOG - WebSphere ILOG Business Rule Management Systems eacute como o nome indicaum BRMS eacute um produto da IBM (2010) que requer licenciamento adequado Eacute necessaacuteriaa instalaccedilatildeo e configuraccedilatildeo de alguns componentes de forma a que o produto possa serutilizado por exemplo Rule Team Server Rule Execution Server Http server entreoutros

JCLIPS - eacute um produto open source mantido por uma comunidade e permite aintegraccedilatildeo entre Java e CLIPS O CLIPS ldquoC Language Integrated Production Systemrdquo eacuteum sistema pericial desenvolvido em linguagem C Maarten Menken (2010)

JESS - eacute um produto comercial da Sandia National Laboratories desenvolvidoem Java Eacute necessaacuterio adquirir licenccedilas para efectivar a utilizaccedilatildeo do mesmo ErnestFriedman-Hill (2010)

JEOPS - Java Embedded Object Production System (JEOPS) eacute uma framework open

source desenvolvida num acircmbito acadeacutemico por Carlos Figueira Filho

36

32 MOTOR DE INFEREcircNCIA

JRuleEngine - eacute um produto open source desenvolvido em Java e mantido porMcarniel (2010) As regras satildeo compiladas para classes Java

OpenL Tablets - eacute um BRMS open source cuja principal vantagem eacute a integraccedilatildeocom a folhas de caacutelculo Excel Permite a utilizaccedilatildeo de tabelas de decisatildeo no formatoExcel OpenL (2010)

OpenRules - eacute um produto da OpenRules Inc sujeito a licenccedila de utilizaccedilatildeo Eacutetotalmente orientado para a folha de caacutelculo Excel da Microsoft

Prova language - eacute um produto open source desenvolvido em Java por KozlenkovAlex and Paschke Disponibiliza uma linguagem muito semelhante ao prolog Eacute umproduto bastante direccionado para a comunicaccedilatildeo entre agentes expondo inclusiveacute umsistema multi-agente

Yprolog - eacute um produto open source desenvolvido em Java por Boris van SchootenEacute uma reacuteplica do prolog desenvolvida totalmente em Java Foi evoluindo ao longo dotempo a partir de produtos como o WProlog e o XProlog

Zilonis - eacute um produto desenvolvido em Java por Elie Levy O formato das regras eacutesemelhante ao CLIPS

322 Fase II - Requisitos base

A fase II teve como objectivo filtrar a lista de candidatos no sentido de excluir produtosque natildeo se enquadrem directamente com os requisitos do sistema a desenvolver Assimsendo foram excluiacutedos alguns dos candidatos jaacute indicados e os principais motivos daexclusatildeo satildeo

bull Natildeo permitirem a integraccedilatildeo com um portal

bull Formato das regras eacute fechado natildeo possibilitando possiacuteveis e futuras evoluccedilotildees

bull Natildeo disponibilizaccedilatildeo de acesso aos serviccedilos internos mais concretamente natildeofornecem uma framework de controlo Desta forma natildeo eacute possiacutevel reutilizar partesdo motor de inferecircncia ou do sistema de gestatildeo de regras sem que este seja feitoatraveacutes do proacuteprio produto

Candidatos excluiacutedos pelas razotildees atraacutes expostas

37

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProdutoILogOpenRulesOpenL Tablets

Tabela 2 Listagem de produtos excluiacutedos na Fase II

323 Fase III - Viabilidade econoacutemica

Sendo um paracircmetro com importacircncia relativa dada a possiacutevel aplicaccedilatildeo comercial deum produto baseado neste trabalho natildeo deixa de ser importante para o estudo realizadoDesta forma a fase III teve como objectivo filtrar a lista de resultados no sentido de excluirprodutos que natildeo sejam economicamente viaacuteveis quer por motivos de licenciamentocomercial quer por motivos de licenccedilas de utilizaccedilatildeo

Foram entatildeo considerados os produtos constantes da tabela 3 como natildeo viaacuteveis nosentido em que existem produtos open source similares para o efeito pretendido

ProdutoDroolsJESS

Tabela 3 Listagem de produtos excluiacutedos na Fase III

324 Fase IV - Viabilidade teacutecnica

Esta fase teve por objectivo filtrar a lista de resultados de forma a que os produtos natildeoviaacuteveis do ponto de vista teacutecnico natildeo sejam considerados para a escolha final

Os produtos que natildeo foram considerados viaacuteveis por questotildees teacutecnicas satildeo

38

32 MOTOR DE INFEREcircNCIA

Produto RazatildeoJEOPS Documentaccedilatildeo disponiacutevel bastante vaga projecto desconti-

nuado e natildeo estaacutevelJRuleEngine As regras satildeo compiladas para Java natildeo permite escalabili-

dade sem compilar o projectoZilonis Natildeo estaacute preparado para ser utilizado como framework ape-

nas permite uma aplicaccedilatildeo stand-alone

Hammurapi Rules As regras satildeo compiladas para Java natildeo permite escalabili-dade sem compilar o projecto

Tabela 4 Listagem de produtos excluiacutedos na Fase IV

325 Fase V - Prova de conceito

Nesta uacuteltima fase restaram trecircs produtos JClips Prova e YProlog Apoacutes a realizaccedilatildeode uma prova de conceito com estes produtos foram encontradas algumas vantagens edesvantagens Esta anaacutelise pode ser consultada nas tabelas 5 6 e 7

JClipsVantagens Desvantagens

bull Linguagem CLIPS bull Apenas permite 1 execuccedilatildeo deforma a permitir vaacuterias utilizaccedilotildeesdo motor de inferecircncia eacute necessaacuterioimplementar loacutegica especiacutefica

bull Ausecircncia de documentaccedilatildeo

Tabela 5 JClips - Vantagens e desvantagens

39

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProvaVantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza exemplos de uti-lizaccedilatildeo

bull Uacuteltima actualizaccedilatildeo em 10 deJunho de 2010

bull Instaacutevel

bull Bastante ocupaccedilatildeo de recursos(CPU e memoacuteria)

bull Disponibilizaccedilatildeo de pouca docu-mentaccedilatildeo

bull Ao invocar um predicado natildeo ins-tancia apenas as variaacuteveis na pri-meira vez mas devolve uma lista detodos os resultados possiacuteveis simi-lar ao predicado findall do LPA Pro-log

Tabela 6 Prova - Vantagens e desvantagens

YProlog

Vantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza documentaccedilatildeo eexemplos de utilizaccedilatildeo

bull Operaccedilotildees baacutesicas do Prologtecircm o mesmo comportamento

bull Uacuteltima actualizaccedilatildeo em 21 de Abrilde 2006

Tabela 7 YProlog - Vantagens e desvantagens

326 Conclusatildeo e fundamentaccedilatildeo da escolha

Tratando-se do nuacutecleo do sistema pericial e sabendo que natildeo existe actualmente ummotor de inferecircncia que corresponda totalmente aos requisitos necessaacuterios foi decidido

40

32 MOTOR DE INFEREcircNCIA

desenvolver um motor de inferecircncia de raiz recorrendo a um produto que permitisse umdesenvolvimento raacutepido e com uma curva de aprendizagem pouco acentuada Para tale depois do estudo realizado perante as vaacuterias hipoacuteteses disponiacuteveis foi decidido optarpelo YProlog

Na uacuteltima fase do estudo apresentado entre os candidatos disponiacuteveis este aparececomo o mais viaacutevel quer pelos aspectos de adaptabilidade funcionamento e facilidadede utilizaccedilatildeo quer ainda pelo nuacutemero reduzido de desvantagens encontradas face aosrestantes

41

4Wexsys

Este trabalho baseia-se na criaccedilatildeo de um sistema pericial baseado no GISPSA e oobjectivo principal passa pela integraccedilatildeo do novo sistema num ambiente de acesso globalou mais especificamente num portal web Para atingir tal meta foi descrito nos capiacutetulosanteriores quais as ferramentas a utilizar sendo que agora vamos compreender como eacuteque a soluccedilatildeo em si foi desenvolvida

O sistema que nasceu a partir desta implementaccedilatildeo foi baptizado com o nome wexsys- ldquoWeb Expert Systemrdquo Partindo da base do GISPSA o wexsys possui um motor deinferecircncia totalmente novo criado especificamente no acircmbito deste trabalho e ainda umabase de conhecimento Foi decidido adoptar o princiacutepio de utilizaccedilatildeo de regras para arepresentaccedilatildeo da base de conhecimento

De referir ainda que o raciociacutenio utilizado no motor de inferecircncia segue uma filosofiado tipo backward chaining princiacutepio jaacute descrito nos capiacutetulos anteriores

Detentor de uma interface considerada actual para os paracircmetros utilizados nos diasque correm este novo sistema pericial foi criado atraveacutes da utilizaccedilatildeo de J2EE e Icefaces

que lhe conferem um aspecto renovado e extremamente apelativo aos utilizadores Satildeoutilizadas teacutecnicas tais como Ajax que providenciam uma dinacircmica de funcionamentomuito interessante do ponto de vista da utilizaccedilatildeo

41 Arquitectura global

A soluccedilatildeo foi projectada de acordo com a arquitectura J2EE ou seja utilizando uma sepa-raccedilatildeo em moacutedulos ou componentes Foram criados dois moacutedulos principais pWexsysEAR

e WexsysEAR estes moacutedulos satildeo a separaccedilatildeo da aplicaccedilatildeo em duas grandes camadas acamada web e a camada de negoacutecio

Esta separaccedilatildeo permite a instalaccedilatildeo da aplicaccedilatildeo num uacutenico servidor ou uma instala-

43

CAPIacuteTULO 4 WEXSYS

ccedilatildeo distribuiacuteda por vaacuterios servidores possibilitando tambeacutem a utilizaccedilatildeo de clusters Estaseparaccedilatildeo torna-se bastante uacutetil se pretendermos expandir a aplicaccedilatildeo para uma utilizaccedilatildeomais intensa ao niacutevel dos acessos A possibilidade de instalaccedilatildeo em muacuteltiplas maacutequinaspermite a obtenccedilatildeo de melhores resultados quando confrontada com a utilizaccedilatildeo de umambiente com apenas um uacutenico servidor

Figura 12 Arquitectura da soluccedilatildeo

411 Moacutedulo pWexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente visual da soluccedilatildeo tambeacutem conhecida porPresentation Layer Este moacutedulo eacute composto pelos componentes descritos na figura 13

Figura 13 Arquitectura do moacutedulo visual

bull pWexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

44

41 ARQUITECTURA GLOBAL

bull wWexsysGUI - componente principal que conteacutem as JSPrsquos servlet e managed

beans

bull jWexsysWebClient - classes utilizadas na camada visual

bull TGGraphLayout - componente externo que disponibiliza um controlo que permitea definiccedilatildeo de um grafo este componente vai ser descrito na secccedilatildeo 4133

bull jWexsysLog - permite o registo da ocorrecircncia de erros

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

412 Moacutedulo WexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente de negoacutecio da aplicaccedilatildeo tambeacutem conhecidapor Business Layer eacute o centro de controlo de toda a soluccedilatildeo Este moacutedulo eacute compostopor alguns componentes como podemos ver na figura 14

Figura 14 Arquitectura do moacutedulo de negoacutecio

bull WexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

bull eWexsys - componente principal responsaacutevel pela criaccedilatildeo dos serviccedilos

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

bull jWexsysUtils - classes utilitaacuterias internas

45

CAPIacuteTULO 4 WEXSYS

bull jWexsysLog - componente auxiliar para permitir o tratamento de erros

bull jWexsysEngine - responsaacutevel pela implementaccedilatildeo do motor de inferecircncia

bull YProlog - permite a interpretaccedilatildeo de coacutedigo prolog Este componente vai serdescrito na secccedilatildeo 4133

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos

Como jaacute foi referido o wexsys foi desenvolvido respeitando a arquitectura J2EE como talos componentes que integram a aplicaccedilatildeo foram tambeacutem criados seguindo esse conceitoTodos os componentes foram estruturados de forma a poderem ser reutilizados com omiacutenimo de dependecircncias e toda a aplicaccedilatildeo foi projectada de forma a retirar o maacuteximopartido desta divisatildeo

Podemos ver na figura 15 um diagrama que permite verificar de que forma os compo-nentes estatildeo a ser utilizados O diagrama tem trecircs agrupamentos que pretendem descreverutilizando uma linguagem Object Oriented (OO) a sua visibilidade Os temos publicprotected e private satildeo utilizados como analogias aos respectivos conceitos na linguagemOO

4131 Camada de acesso puacuteblico

A camada de acesso puacuteblico expotildee os meacutetodos de interacccedilatildeo com a aplicaccedilatildeo sendocomposta por trecircs componentes wWexsysGUI jWexsysWebClient e eWexsysClient

Figura 15 Wexsys - Integraccedilatildeo dos componentes

46

41 ARQUITECTURA GLOBAL

Os componentes eWexsysClient e jWexsysWebClient contecircm interfaces de ligaccedilatildeoentre a camada visual e a camada de negoacutecio

eWexsysClient - disponibiliza as classes designadas Data Transfer Object (DTO) eainda o interface para os serviccedilos disponibilizados pelo wexsys

jWexsysWebClient - disponibiliza classes que caracterizam os conceitos de negoacuteciomas que contecircm atributos adicionais A razatildeo da existecircncia deste componente justificandashsecom a eventual expansatildeo da aplicaccedilatildeo para uma nova camada visual Os exemplos decoacutedigo 1 e 2 permitem-nos observar uma utilizaccedilatildeo de atributos extra na classe visualpara controlo de ocorrecircncia de erros

1 p u b l i c c l a s s RuleView

3 p r i v a t e i n t l e v e l = 0

5 Rule i d e n t i f i e r

7 p r i v a t e S t r i n g i d e n t i f i e r = n u l l

9 p r i v a t e S t r i n g i d e n t i f i e r E r r = n u l l

11 p r i v a t e b o o l e a n i d e n t i f i e r I n E r r = f a l s e

13

Rule d e s c r i p t i o n

15

p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

17

p r i v a t e S t r i n g d e s c r i p t i o n E r r = n u l l

19

p r i v a t e b o o l e a n d e s c r i p t i o n I n E r r = f a l s e

21

Coacutedigo 1 Excerto da classe RuleView

p u b l i c c l a s s Rule implemen t s S e r i a l i z a b l e

47

CAPIacuteTULO 4 WEXSYS

2

p r i v a t e i n t l e v e l = 0

4

Rule i d e n t i f i e r

6

p r i v a t e S t r i n g i d e n t i f i e r = n u l l

8

10 Rule d e s c r i p t i o n

12 p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

14 Coacutedigo 2 Excerto da classe Rule

O outro componente envolvido na camada puacuteblica o wWexsysGUI eacute o responsaacute-vel pela interacccedilatildeo com aplicaccedilatildeo Eacute o componente que disponibiliza as paacuteginas e oresponsaacutevel pela coordenaccedilatildeo de todo o processo web

4132 Camada de acesso protegido

A camada de acesso protegido disponibiliza componentes que podem ser utilizados pelosdois moacutedulos mas que natildeo estatildeo disponiacuteveis para o exterior Neste caso existe apenas umcomponente nestas condiccedilotildees o jWexsysLog cuja funccedilatildeo eacute assegurar o registo de erros

jWexsysLog - componente responsaacutevel pelo registo de erros utiliza internamente aframework log4j

4133 Camada de acesso privado

A camada de acesso privado incluiacute todos os componentes responsaacuteveis por processa-mento interno Os componentes responsaacuteveis pelo processamento interno satildeo eWexsysjWexsysEngine e jWexsysUtils Tambeacutem incluiacutedos no conceito de processamento internoestatildeo os componentes TGGraphLayout e YProlog

eWexsys - eacute o componente responsaacutevel pela implementaccedilatildeo do interface de negoacuteciodelegando as funcionalidades em classes especializadas ou no componente responsaacutevelpela integraccedilatildeo com o nuacutecleo da aplicaccedilatildeo o jWexsysEngine

48

41 ARQUITECTURA GLOBAL

jWexsysEngine - eacute o componente responsaacutevel pelo nuacutecleo da aplicaccedilatildeo ou sejaeacute o responsaacutevel pela integraccedilatildeo do java com o prolog e vice-versa Eacute o componenteresponsaacutevel pelo mapeamento das classes de java para as classes de comunicaccedilatildeo com oprolog

jWexsysUtils - eacute um componente auxiliar que disponibiliza e encapsula utilitaacuteriospara uma melhor organizaccedilatildeo interna da aplicaccedilatildeo

TGGraphLayout - eacute um componente tambeacutem conhecido por TouchGraph eacute umprojecto mantido por uma comunidade e estaacute disponiacutevel no sourceforge AlexanderShapiro (2010)

YProlog - este componente foi o escolhido durante a fase de estudo da implementaccedilatildeopara ser a base do motor de inferecircncia (321)

4134 Fluxo de invocaccedilatildeo

A aplicaccedilatildeo foi desenvolvida de forma a que todos os pedidos seguissem um mesmo fluxode invocaccedilatildeo de forma a uniformizar o processo Na figura 16 temos uma relaccedilatildeo dasclasses principais da aplicaccedilatildeo

Figura 16 Diagrama de classes principais

O fluxo de invocaccedilatildeo inicia-se atraveacutes do WexsysBean no caso de funcionalidades

49

CAPIacuteTULO 4 WEXSYS

do motor de inferecircncia ou atraveacutes do WexsysKBBean no caso de funcionalidades dabase de conhecimento Ambos os managed beans delegam no WexsysViewManager querecorrendo agrave classe WexsysViewHelper converte as classes view para classes DTO Aclasse WexsysViewManager por sua vez delega no session bean WexsysSessionBean quemediante o tipo de pedido delega nas classes de validaccedilatildeo ou nas classes do motor deinferecircncia WexsysEngineImpl

Este processo pode ser observado na figura 17 que representa um diagrama de sequecircn-cia exemplificativo do fluxo de invocaccedilatildeo geneacuterico

Figura 17 Diagrama de sequecircncia do fluxo de invocaccedilatildeo

414 Portal

O wexsys tem como ponto de entrada na aplicaccedilatildeo uma paacutegina inicial que permite aidentificaccedilatildeo do utilizador no sistema pericial Como se trata de um trabalho acadeacutemico aparte de validaccedilatildeo e autenticaccedilatildeo de utilizadores natildeo foi contemplada como tal eacute possiacutevelautenticar-se com qualquer utilizador Para aleacutem da autenticaccedilatildeo eacute ainda possiacutevel indicarpara a sessatildeo actual qual o miacutenimo grau de confianccedila para a apresentaccedilatildeo de uma resposta

50

41 ARQUITECTURA GLOBAL

O endereccedilo da aplicaccedilatildeo respeita o seguinte formato httpservidorportawWexsysGUI onde servidor e porta satildeo os dados de configuraccedilatildeo do Portal Server

Figura 18 Wexsys - Paacutegina inicial

Quando o utilizador inicia a utilizaccedilatildeo do sistema ficam disponiacuteveis trecircs funcionali-dades que seratildeo referidas nas secccedilotildees seguintes

4141 Templates

Um dos aspectos comuns a toda a aplicaccedilatildeo eacute o aspecto graacutefico tendo este sido imple-mentado recorrendo a Facelets Um template facelets define-se pela criaccedilatildeo de umapaacutegina modelo em que existem zonas dinacircmicas Este conceito eacute conhecido de outrastecnologias por exemplo Web Parts ou Master Pages desenvolvidos pela Microsoft

O coacutedigo 3 permite ver como foi desenvolvido o template principal

lthtml

2 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

4 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

6

lt i c e o u t p u t D e c l a r a t i o n

8 doc typeRoo t =HTML

d o c t y p e P u b l i c =minus W3C DTD XHTML 1 0 S t r i c t EN

10 doc typeSys tem = h t t p www w3 org TR xhtml1 DTD xhtml1minus s t r i c t

d t d gt

51

CAPIacuteTULO 4 WEXSYS

12 lthead gt

lt t i t l e gtwexsys minus p a g e T i t l e lt t i t l e gt

14 [ meta t a g s e l i n k t o c s s f i l e s ]

lt head gt

16 ltbody gt

lt f view l o c a l e = f a c e s C o n t e x t e x t e r n a l C o n t e x t r e q u e s t L o c a l e gt

18 lt i c e l o a d B u n d l e basename =com wexsys g u i r e s o u r c e s bund leRes

v a r = bund leRes gt

lt i c e form p a r t i a l S u b m i t = t r u e gt

20 lt d i v i d = wrapper gt

lt d i v i d = logo gt

22 lth1gtlta h r e f = gtWExSys lt a gt lt h1gt

lth2gtweb e x p e r t system lt h2gt

24 lt div gt

lt d i v i d = h e a d e r gt

26 lt d i v i d =menugt

[ Menu c o n t e n t ]

28 lt div gt

lt div gt

30 lt div gt

lt d i v i d = page gt

32 lt d i v i d = c o n t e n t gt

lt u i i n s e r t name= c o n t e n t gt

34 D e f a u l t C o n t e n t

lt u i i n s e r t gt

36 lt div gt

lt d i v i d = s i d e b a r gt

38 lt u i i n s e r t name= s i d e b a r gt

S i d e b a r c o n t e n t

40 lt u i i n s e r t gt

lt div gt

42 lt d i v s t y l e = c l e a r bo th gt

lt div gt

44 lt div gt

lt d i v i d = f o o t e r gt

46 F o o t e r c o n t e n t

lt div gt

48 lt i c e form gt

52

41 ARQUITECTURA GLOBAL

lt f view gt

50 lt body gt

lt html gt Coacutedigo 3 Coacutedigo do template principal do portal

Na listagem de coacutedigo 3 podemos ver a vermelho as aacutereas que foram definidas comodinacircmicas no coacutedigo 4 tambeacutem a vermelho podemos ver as respectivas aacutereas num cenaacuteriode implementaccedilatildeo de uma paacutegina

1 lt u i c o m p o s i t i o n

t e m p l a t e =WEBminusINF incminust e m p l a t e s mainminust e m p l a t e j s p x

3 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

5 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

7

9 lt u i d e f i n e name= c o n t e n t gt

[ ]

11 lt u i d e f i n e gt

13 lt u i d e f i n e name= s i d e b a r gt

[ ]

15 lt u i d e f i n e gt

17 lt u i c o m p o s i t i o n gt Coacutedigo 4 Coacutedigo da paacutegina inicial do portal

415 Suporte multi-liacutengua

O wexsys foi desenvolvido considerando um factor bastante relevante numa aplicaccedilatildeoactual o suporte multi-liacutengua Este suporte eacute uma das vantagens do sistema e foiimplementado recorrendo a ficheiros de recursos (properties) de forma a exteriorizartodos os textos de saiacuteda

Desta forma para dar suporte a uma nova liacutengua apenas teremos que traduzir os textosnos ficheiros de recursos e de alterar a aplicaccedilatildeo de forma a permitir seleccionar o idioma

53

CAPIacuteTULO 4 WEXSYS

A alteraccedilatildeo a ser efectuada na aplicaccedilatildeo eacute muito simples jaacute que basta passar o valor doatributo ldquolocalerdquo da tag ldquofviewrdquo como sendo a liacutengua pretendida

42 Motor de inferecircncia

Para este trabalho foi definida a criaccedilatildeo de um motor de inferecircncia de raiz que pudesseefectivamente substituir o utilizado no sistema base O novo motor desenvolvido teraacute quesuportar uma seacuterie de especificaccedilotildees a comeccedilar pela capacidade de operar num ambientemulti-utilizador

O motor de inferecircncia deve estar preparado para lidar com conhecimento incerto foiescolhido a teacutecnica dos factores de certeza por ser uma teacutecnica simples de reproduzir eeficaz na sua utilizaccedilatildeo

Para aleacutem disto e tratando-se um sistema pericial o motor de inferecircncia deveraacuteser independente da base de conhecimento utilizada e deveraacute idealmente suportar umsistema de explicaccedilotildees que responda a eventuais pedidos por parte dos utilizadores quepretendam ver mais detalhadamente quais as regras que conduziram agrave conclusatildeo obtidaTambeacutem seraacute possiacutevel saber porque eacute que determinada questatildeo eacute colocada (explicaccedilotildeesvulgarmente denominadas de como e porquecirc)

421 Multi-utilizador

Quando se pretende que um sistema pericial tenha uma utilizaccedilatildeo mono-posto (comoera o caso do GISPSA) apenas eacute criada uma instacircncia por cada vez que eacute chamado omotor de inferecircncia No nosso caso tendo sido estabelecido que o novo sistema teriaque permitir uma utilizaccedilatildeo multi-utilizador eacute necessaacuterio desenvolver os mecanismosnecessaacuterios para permitir execuccedilotildees de vaacuterias instacircncias para o novo motor de inferecircncia

A classe WexsysEngineFactory5 eacute a responsaacutevel por criar uma instacircncia do motorde inferecircncia por cada utilizador que inicia a utilizaccedilatildeo do sistema Esta classe tem ummeacutetodo do tipo static o meacutetodo getInferenceEngine que tem como paracircmetros de entradaum utilizador e devolve uma instacircncia do motor de inferecircncia As instacircncias activas satildeoguardadas internamente e sempre que eacute invocado o meacutetodo eacute obtida a respectiva instacircnciaNo caso de ainda natildeo existir uma instacircncia entatildeo eacute criada uma nova e guardada

1

C r e a t e s an i n s t a n c e o f I n f e r e n c e E n g i n e

54

42 MOTOR DE INFEREcircNCIA

3

param usernameKey

5 The usernameKey t o use

7 return I n f e r e n c e E n g i n e i n s t a n c e

throws WexsysArgumen tExcep t ion

9

p u b l i c s t a t i c WexsysEngineImpl g e t I n f e r e n c e E n g i n e ( S t r i n g

usernameKey )

11 throws WexsysArgumentExcept ion

i f ( g e t R u l e U r l ( ) == n u l l | | g e t R u l e U r l ( ) l e n g t h ( ) == 0)

13 throw new WexsysArgumentExcept ion ( mainKnowledgeBaseUrl

r u l e U r l )

15 WexsysEngineImpl i n f e r e n c e E n g i n e = n u l l

17 Have we a l r e a d y c r e a t e d an i n s t a n c e

i f ( g e t I n f e r e n c e E n g i n e s ( ) c o n t a i n s K e y ( usernameKey ) )

19 Obta in t h e i n s t a n c e a s s o c i a t e d t o t h e s p e c i f i e d key

i n f e r e n c e E n g i n e = g e t I n f e r e n c e E n g i n e s ( ) g e t ( usernameKey )

21 e l s e

Cr ea t e a new i n s t a n c e and s t o r e i t i n t h e h o l d e r

23 i n f e r e n c e E n g i n e = new WexsysEngineImpl ( usernameKey

r u l e U r l kb sUr l )

g e t I n f e r e n c e E n g i n e s ( ) p u t ( usernameKey i n f e r e n c e E n g i n e )

25

27 re turn i n f e r e n c e E n g i n e

Coacutedigo 5 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo

422 Base de conhecimento inicial

Ao partir para o desenvolvimento de um sistema pericial eacute necessaacuterio adoptar uma basede conhecimento inicial simples que sirva de suporte ao desenvolvimento do mesmo

55

CAPIacuteTULO 4 WEXSYS

A base de conhecimento inicial foi adoptada a partir do estudo de Merritt (1989) Foiseleccionada devido a duas caracteriacutesticas principais

bull simplicidade - no sentido em que as regras satildeo pequenas e simples de interligar

bull abrangecircncia - existem alguns cenaacuterios possiacuteveis de serem testados com o protoacutetipocomo por exemplo raciociacutenio sobre incerteza e conclusotildees intermeacutedias

A base de conhecimento inicial escolhida tem a seguinte estrutura

bull rule 1 if not turn_over and battery_bad then problem is battery cf 100

bull rule 2 if lights_weak then battery_bad cf 50

bull rule 3 if radio_weak then battery_bad cf 50

bull rule 4 if turn_over and smell_gas then problem is flooded cf 80

bull rule 5 if turn_over and gas_gauge is empty then problem is out_of_gas cf 90

bull rule 6 if turn_over and gas_gauge is low then problem is out_of_gas cf 30

423 Protoacutetipo do motor de inferecircncia

Para o desenvolvimento do protoacutetipo inicial do motor de inferecircncia foi necessaacuterio definiralguns aspectos essenciais tais como

1 Formato da regras

2 Formato das questotildees

3 Interacccedilatildeo assiacutencrona de questotildees e respostas

4 Algoritmos a utilizar

4231 Formato das regras

O formato das regras foi definido tendo em conta alguns pressupostos Entre elessalientam-se a necessidade da utilizaccedilatildeo de graus de confianccedila e a capacidade de guardaruma descriccedilatildeo para cada regra

O formato escolhido para a representaccedilatildeo de uma regra foi o seguinte

56

42 MOTOR DE INFEREcircNCIA

rule(

ltcodigogt rsquoDescriccedilatildeo da regrarsquo

lhs([

ev(ltpremissagt ltvalor da premissagt)

ev(ltpremissa_ngt ltvalor da premissa_ngt)

])

rhs(ev(ltsoluccedilatildeogt ltvalor da soluccedilatildeogt) CF)

)

Na definiccedilatildeo do ltLHSgt eacute possiacutevel definir uma lista de premissas e respectivos valoresno caso da regra conter mais do que uma premissa Um aspecto relevante relacionado coma lista de premissas eacute que esta considera apenas o operador conjunccedilatildeo entre premissas

4232 Formato das questotildees

O formato das questotildees foi tambeacutem definido assumindo alguns princiacutepios tais como apossibilidade de respostas muacuteltiplas e ainda a atribuiccedilatildeo de um texto quer agrave questatildeo a serapresentada quer agraves hipoacuteteses colocadas

O formato escolhido para a representaccedilatildeo de uma questatildeo foi o seguinte

question(

turn_over

rsquoO carro ligarsquo

[

answer(ltvalorgt ltdescriccedilatildeo do valorgt)

answer(ltvalor_ngt ltdescriccedilatildeo do valor_ngt)

]

ltescolha_multipla = 1 0gt

)

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas

Numa qualquer execuccedilatildeo de um software instalado e executado localmente numa maacutequinao funcionamento normal seraacute a execuccedilatildeo de um conjunto de instruccedilotildees ateacute ao ponto emque seja necessaacuteria a interacccedilatildeo com um utilizador Quando isso acontece o programafica suspenso ateacute que o utilizador responda ao que lhe foi solicitado continuando depoiscom a sua execuccedilatildeo a partir do ponto onde parou

57

CAPIacuteTULO 4 WEXSYS

No caso de um programa desenvolvido em prolog e mais especificamente um sistemapericial o conceito atraacutes descrito eacute exactamente o mesmo jaacute que o programa apenassuspende a execuccedilatildeo quando eacute necessaacuterio colocar uma questatildeo que o utilizador teraacute queforccedilosamente responder para dar continuidade ao programa

Se no entanto considerarmos a realidade de uma aplicaccedilatildeo web este princiacutepio jaacutenatildeo seraacute tatildeo linear porque um servidor web recebe um pedido executa-o e devolve umresultado O mesmo seraacute dizer que numa execuccedilatildeo de um componente prolog a partirde um servidor web a pilha de execuccedilatildeo eacute interrompida quando eacute necessaacuterio questionaro utilizador mas natildeo eacute possiacutevel continuar a execuccedilatildeo da mesma a partir do ponto ondeparou Em vez disso seraacute necessaacuterio desfazer a pilha de execuccedilatildeo criada e assim queexistir a resposta do utilizador (eacute feito novo pedido ao servidor) a execuccedilatildeo eacute realizadanovamente desde o iniacutecio mas desta vez considerando a resposta recebida

As razotildees para este comportamento justificam-se pela utilizaccedilatildeo do protocolo HTTPem que eacute necessaacuterio existir um pedido e uma resposta O que obriga a que a colocaccedilatildeoda pergunta e a resposta sejam assiacutencronos podendo existir entre as duas acccedilotildees vaacuteriospedidos (pedidos de explicaccedilotildees por exemplo)

Este ldquoproblemardquo levou agrave necessidade do desenvolvimento de um mecanismo quepermita um funcionamento coerente num programa que utilize (como neste caso) oprolog simulando o comportamento que este teria numa situaccedilatildeo de execuccedilatildeo local

O mecanismo proposto foi a alteraccedilatildeo do predicado responsaacutevel pelo processo re-cursivo especificando um atributo auxiliar de controlo que acompanha a execuccedilatildeo dopredicado Esse atributo auxiliar quando detectada a necessidade de colocaccedilatildeo de umaquestatildeo eacute instanciado e impede a prossecuccedilatildeo do predicado retornando a execuccedilatildeo paraa web com a respectiva questatildeo

Este mecanismo permite uma comunicaccedilatildeo assiacutencrona com a parte web mantendo asvantagens da recursividade do prolog

4234 Estrutura da base de conhecimento

A base de conhecimento apoacutes a definiccedilatildeo do formato de representaccedilatildeo das regras e dasquestotildees eacute a seguinte

q u e s t i o n ( t u r n _ o v e r rsquoO c a r r o l i g a rsquo

2 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

4 q u e s t i o n ( l i g h t s _ w e a k rsquoAs l u z e s e s t a o f r a c a s rsquo

58

42 MOTOR DE INFEREcircNCIA

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

6

q u e s t i o n ( rad io_weak rsquoO r a d i o e s t a f r a c o rsquo

8 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

10 q u e s t i o n ( s m e l l _ g a s rsquo C h e i r a a g a s o l i n a rsquo

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

12

q u e s t i o n ( gas_gauge rsquoO que marca o p o n t e i r o do d e p o s i t o da

g a s o l i n a rsquo

14 [ answer ( empty rsquo Vazio rsquo ) answer ( high rsquo S u f i c i e n t e rsquo ) answer

( low rsquo Rese rva rsquo ) ] 0 )

16 r u l e ( r u l e _ 1 rsquo Rule 1 rsquo

l h s ( [ ev ( t u r n _ o v e r no ) ev ( b a t t e r y _ b a d yes ) ] ) r h s ( ev (

problem b a t t e r y ) 100) )

18

r u l e ( r u l e _ 2 rsquo Rule 2 rsquo

20 l h s ( [ ev ( l i g h t s _ w e a k yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

22 r u l e ( r u l e _ 3 rsquo Rule 3 rsquo

l h s ( [ ev ( rad io_weak yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

24

r u l e ( r u l e _ 4 rsquo Rule 4 rsquo

26 l h s ( [ ev ( s m e l l _ g a s yes ) ev ( t u r n _ o v e r yes ) ] ) r h s ( ev ( problem

f l o o d e d ) 80) )

28 r u l e ( r u l e _ 5 rsquo Rule 5 rsquo

l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge empty ) ] ) r h s ( ev (

problem o u t _ o f _ g a s ) 90) )

30

r u l e ( r u l e _ 6 rsquo Rule 6 rsquo

32 l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge low ) ] ) r h s ( ev ( problem

o u t _ o f _ g a s ) 30) ) Coacutedigo 6 Representaccedilatildeo da base de conhecimento do protoacutetipo

59

CAPIacuteTULO 4 WEXSYS

4235 Algoritmos a utilizar

Um dos paracircmetros mais relevantes para o funcionamento do algoritmo inicial eacute o graumiacutenimo de confianccedila que eacute indicado no iniacutecio da utilizaccedilatildeo do sistema na paacutegina inicialSe o valor indicado para este paracircmetro for demasiado elevado poderaacute inibir algumasregras impedindo o seu disparo no caso de natildeo ser atingido o grau de confianccedila necessaacuterioPor outro lado se o valor introduzido for demasiado baixo permitiraacute que qualquer regradispare independentemente do seu grau de confianccedila traduzindo-se numa maior aacutervorede pesquisa

O motor de inferecircncia eacute executado mediante o recurso a um predicado principal Estepredicado seraacute o responsaacutevel pelo iniacutecio do processo de inferecircncia De seguida seratildeoapresentados alguns dos algoritmos considerados mais relevantes Os algoritmos 1 2 e 3representam atraveacutes da utilizaccedilatildeo de pseudo-coacutedigo alguma da loacutegica implementada nomotor de inferecircncia

Algoritmo 1 Algoritmo principal do motor de inferecircnciabegin tryToProve

while empty ControlObj doobtemRegra (r)disparoPremissaslarr truefor premissa isin LHS do

ControlObjdisparoularr verificaPremissa (p)disparoPremissaslarr disparoPremissas ampamp disparouif not empty ControlObj then

termina o algoritmoend

endif empty ControlObj then

if disparoTodasPremissas thenfireRules

endend

endend

60

42 MOTOR DE INFEREcircNCIA

Algoritmo 2 Verifica se uma premissa eacute verdadeirainput Premissa poutput ControlObj disparoubegin verificaPremissa

disparoularr false ControlObjlarr nullif checkExistFact (p) ou checkExistQuestionFact (p) oucheckExistRuleFact (pControlObj) then

disparoularr true exitend

end

Algoritmo 3 Dispara as regras que possam ser disparadasbegin fireRules

for regra isin basedeconhecimento doif regra not fired then

if regra pode disparar thencalcula grau de confianccediladispara regraif regra dispara soluccedilatildeo final then

termina execuccedilatildeo preenchendo ControlObjendif regra natildeo dispara soluccedilatildeo final then

continuaend

endend

endend

61

CAPIacuteTULO 4 WEXSYS

424 Resultado final

Apoacutes a implementaccedilatildeo do protoacutetipo inicial do motor de inferecircncia e dos testes necessaacuteriosagrave verificaccedilatildeo do bom funcionamento do mesmo chegamos ao resultado final que foiutilizado no wexsys

Este novo motor de inferecircncia foi desenvolvido levando em consideraccedilatildeo todasas caracteriacutesticas consideradas essenciais tanto para a execuccedilatildeo num ambiente multi-utilizador como para a execuccedilatildeo num servidor web e que foram jaacute descritas nas secccedilotildeesanteriores De referir ainda que face ao motor de inferecircncia do sistema base esteapresenta uma seacuterie de melhorias tais como rapidez de funcionamento e abstracccedilatildeo dabase de conhecimento utilizada

4241 Arranque da execuccedilatildeo

Como jaacute referido o motor de inferecircncia segue os algoritmos descritos na secccedilatildeo 4235 enesta secccedilatildeo seraacute abordado o processo utilizado desde o arranque do motor de inferecircnciaateacute agrave apresentaccedilatildeo dos dados como podemos ver na figura 19

Figura 19 Paacutegina inicial do motor de inferecircncia

O utilizador comeccedila na paacutegina inicial e selecciona a opccedilatildeo ldquoMotor de InferecircnciardquoDepois eacute apresentada uma paacutegina que permite iniciar o motor de inferecircncia utilizando a

62

42 MOTOR DE INFEREcircNCIA

opccedilatildeo ldquoiniciarrdquo Isto despoleta o mecanismo de inferecircncia como podemos verificar nafigura 20

Figura 20 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia

A classe YProlog invoca o predicado top_goals que mais natildeo eacute que o ponto de entradano motor de inferecircncia A sua funccedilatildeo seraacute obter qual a ldquoconclusatildeo final a procurarrdquo (estetoacutepico seraacute descrito na secccedilatildeo 432) para se poder iniciar o algoritmo propriamentedito Na listagem de coacutedigo 7 eacute possiacutevel consultar os predicados responsaacuteveis pelaimplementaccedilatildeo dos algoritmos Apenas estatildeo listados os predicados principais

Eacute possiacutevel consultar o coacutedigo do motor de inferecircncia no anexo A

t o p _ g o a l s ( Con t ro lOb j MinCF ) minus

2 t o p _ g o a l ( TopGoal )

t o p ( TopGoal Con t ro lOb j MinCF )

63

CAPIacuteTULO 4 WEXSYS

4

t o p ( TopGoal Con t ro lOb j MinCF ) minus6 r e t r a c t a l l ( h i s t 2 ) s e t ( l en 0 )

g e t R u l e M o r e R e l e v a n t ( TopGoal Rule )

8 t r y T o P r o v e ( Rule Con t ro lOb j MinCF )

10 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) minusr u l e ( Rule _ l h s (LHS) _ )

12 p r o v e L i s t H y p (LHS Con t ro lOb j MinCF )

g e t ( l en LEN) LEN1 i s LEN + 1

14 a s s e r t ( h i s t ( LEN1 Rule ) )

s e t ( l en LEN1)

16 (

check i f r u l e has re turn c o n t r o l o b j e c t

18 ( v a r ( C o n t r o l O b j ) ) minusgt(

no c o n t r o l o b j e c t found check i f o t h e r r u l e s needs t o

be f i r e d

20 f i r e R u l e s ( Con t ro lOb j MinCF )

) (

22 c o n t r o l o b j e c t found

t rue24 )

)

26

p r o v e L i s t H y p ( [ ] Con t ro lOb j MinCF )

28 p r o v e L i s t H y p ( [H | T ] Con t ro lOb j MinCF ) minusproveHyp (H Con t ro lOb j MinCF )

30 (

( v a r ( C o n t r o l O b j ) ) minusgt (

32 p r o v e L i s t H y p ( T Con t ro lOb j MinCF )

) (

34 t rue)

36 )

38

f a c t a l r e a d y known

40 proveHyp (H Con t ro lOb j MinCF ) minus

64

42 MOTOR DE INFEREcircNCIA

H = ev (X Y) f a c t (X Y _ )

42

t h e r e i s a q u e s t i o n t h a t can l e a d t o a f a c t

44 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

n o t ( f a c t (X _ _ ) )

46 q u e s t i o n (X _ _ _ )

n o t ( n o t _ q u e s t i o n (X) )

48 C o n t r o l O b j = ask (X)

50 t h e r e i s a c o n c l u s i o n t h a t can

l e a d t o a q u e s t i o n t h a t can l e a d t o a f a c t

52 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

r u l e ( Rule _ l h s (LHS) r h s ( ev (X _ ) V) )

54 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) Coacutedigo 7 Predicados principais do motor de inferecircncia

4242 Mecanismo de respostas

O mecanismo de respostas eacute algo similar ao processo descrito anteriormente A suafunccedilatildeo seraacute guardar a resposta que foi seleccionada pelo utilizador e prosseguir com oalgoritmo de forma a que uma nova questatildeo seja colocada ou a soluccedilatildeo final alcanccedilada

Um paracircmetro considerado obrigatoacuterio na submissatildeo de uma resposta eacute o grau deconfianccedila Este valor serviraacute para realizar o caacutelculo do grau de confianccedila da regra quandoa mesma puder ser disparada

Podemos ver na figura 21 o processo de resposta a uma questatildeo

65

CAPIacuteTULO 4 WEXSYS

Figura 21 Fluxo de invocaccedilatildeo de resposta a uma questatildeo

Eacute ainda possiacutevel natildeo responder agrave questatildeo colocada utilizando a opccedilatildeo ldquonatildeo sei natildeoresponderrdquo Esta opccedilatildeo iraacute guardar internamente uma indicaccedilatildeo para natildeo voltar a colocara questatildeo ignorada evitando entrar em ciclos

Agrave medida que o processo avanccedila eacute possiacutevel acompanhar o estado actual do motor deinferecircncia Este acompanhamento eacute realizado mediante a anaacutelise da zona situada do ladodireito da paacutegina e que vai sendo actualizada a cada interacccedilatildeo com o motor de inferecircnciaA zona referida permite obter informaccedilotildees acerca de

bull Regras que jaacute foram disparadas

bull Factos que foram inferidos pelo disparo das regras

bull Factos que foram facultados pelo utilizador ao responder agraves questotildees

bull Factos conhecidos antes do iniacutecio do processo de inferecircncia

66

42 MOTOR DE INFEREcircNCIA

Estes factos satildeo obtidos atraveacutes do predicado ldquoinf_sys((L_Rules L_Inf_Facts L_Know_FactsL_Init_Facts)rdquo Este predicado eacute invocado apoacutes cada interacccedilatildeo com o motor de inferecircnciae desta forma os dados estatildeo sempre actualizados

4243 Conclusatildeo final encontrada

Quando o disparo de uma regra leva a que seja adicionado um facto que corresponde auma soluccedilatildeo final o motor de inferecircncia termina a sua execuccedilatildeo devolvendo a conclusatildeofinal a que chegou bem como o respectivo grau de confianccedila Na figura 22 podemos ver afase final do processo de inferecircncia O grau de confianccedila da conclusatildeo final eacute atribuiacutedocom recurso agrave foacutermula seguinte

Dada uma regra X com premissas P1 a Pn e CF =CF (X) entatildeo temos

CF(X P1 Pn) = min [CF(P1) CF(Pn)]timesCF(X)

Figura 22 Conclusatildeo da inferecircncia

4244 Explicaccedilotildees

Eacute possiacutevel em qualquer altura colocar a questatildeo ldquoporquecircrdquo antes de submetermos umaresposta ou a questatildeo ldquocomordquo apoacutes uma conclusatildeo final Este tipo de explicaccedilotildeescontribui para a fase de validaccedilatildeo do sistema pericial colocando-as ao dispor do perito

67

CAPIacuteTULO 4 WEXSYS

responsaacutevel pela validaccedilatildeo expondo desta forma o raciociacutenio seguido no decorrer dainferecircncia Exemplos da solicitaccedilatildeo de explicaccedilotildees podem ser consultados atraveacutes dasfiguras 23 24 e 25

Figura 23 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo

68

42 MOTOR DE INFEREcircNCIA

Figura 24 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia

Figura 25 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final

69

CAPIacuteTULO 4 WEXSYS

As explicaccedilotildees ldquoporquecircrdquo foram implementadas recorrendo a predicados temporaacuterios(hist) que acompanham o desenrolar do motor de inferecircncia Eacute possiacutevel em qualqueraltura consultar esses predicados para obter de uma forma imediata a explicaccedilatildeo doporquecirc da questatildeo estar a ser feita

As explicaccedilotildees ldquocomordquo jaacute seguem um mecanismo mais complexo Quando umaregra eacute disparada origina conclusotildees intermeacutedias ou finais essas conclusotildees natildeo satildeo maisdo que simples factos O motor de inferecircncia sempre que dispara uma regra associa aofacto a regra que o originou por intermeacutedio do predicado inf_exp_how

Desta forma basta algum coacutedigo para que seja possiacutevel a obtenccedilatildeo de ambas asexplicaccedilotildees Esse coacutedigo pode ser consultado na listagem 8 em que os predicados why ehow se referem agraves explicaccedilotildees ldquoporquecircrdquo e ldquocomordquo respectivamente

why ( L ) minus

2 f i n d a l l ( r (OX) h i s t (OX) L )

4 how ( A t t r Value R e s u l t ) minusin f_exp_how ( A t t r Value Ru le s )

6 explainHow ( Rules E x p l a n a t i o n )

append ( Rules E x p l a n a t i o n R e s u l t )

8

explainHow ( [ ] [ ] )

10 explainHow ( [H | T ] R e s u l t ) minusi n n e r E x p l a i n (H E x p l a n a t i o n H )

12 explainHow ( T E x p l a n a t i o n R u l e s )

append ( Explana t ionH E x p l a n a t i o n R u l e s R e s u l t )

14

16 i n n e r E x p l a i n ( Rule E x p l a n a t i o n ) minusr u l e ( Rule _ l h s (LHS) _ )

18 expla inLHS (LHS E x p l a n a t i o n )

20 expla inLHS ( [ ] [ ] )

expla inLHS ( [ ev ( A t t r Value ) | T ] E x p l a n a t i o n A ) minus22 n o t ( inf_exp_how ( A t t r Value _ ) )

f a c t ( A t t r Value _ )

24 expla inLHS ( T E x p l a n a t i o n A )

70

43 BASE DE CONHECIMENTO

26 expla inLHS ( [ ev ( A t t r Value ) | T ] Resu l tA ) minushow ( A t t r Value E x p l a n a t i o n A )

28 expla inLHS ( T E x p l a n a t i o n )

append ( Explana t ionA E x p l a n a t i o n Resu l tA ) Coacutedigo 8 Predicados principais do sistema de explicaccedilotildees

43 Base de conhecimento

A base de conhecimento armazena o conhecimento extraiacutedo de um ou mais peritos e con-siste numa seacuterie de factos e regras acerca de um determinado domiacutenio Sendo dependenteda aacuterea que se pretende abranger com o sistema pericial a base de conhecimento eacute deconstruccedilatildeo especiacutefica para cada situaccedilatildeo em que seja necessaacuterio desenvolver este tipo desistema

Os procedimentos de inserccedilatildeo actualizaccedilatildeo e remoccedilatildeo dos factos e regras que com-potildeem a base de conhecimento (gestatildeo da base de conhecimento) teratildeo que ser na medidado possiacutevel procedimentos simples que sejam facilmente compreendidos pelos utilizado-res

As funcionalidades de gestatildeo da base de conhecimento estatildeo disponiacuteveis na opccedilatildeoldquoBase de Conhecimentordquo da paacutegina inicial como podemos observar na figura 26

71

CAPIacuteTULO 4 WEXSYS

Figura 26 Paacutegina inicial da gestatildeo da base de conhecimento

431 Leitura da base de conhecimento

Ao iniciar a execuccedilatildeo a base de conhecimento eacute carregada para memoacuteria a partir de umficheiro Este processo eacute realizado de forma iterativa e de acordo com uma determinadasequecircncia regras questotildees conclusatildeo final e por uacuteltimo os factos iniciais

Por sua vez o carregamento das regras eacute efectuado em duas fases sendo que primeirosatildeo obtidas as regras existentes (ldquoretrieve_rules(L)rdquo) e depois para cada regra eacute construiacutedaa sua estrutura (ldquobuildRuleObjectrdquo) Podemos observar a descriccedilatildeo deste processo nafigura 27

72

43 BASE DE CONHECIMENTO

Figura 27 Processo de carregamento das regras

Quanto ao carregamento das questotildees eacute similar ao das regras jaacute que eacute efectuadoigualmente em duas fases Primeiro obtecircm-se todas as questotildees (ldquoretrieve_questions(L)rdquo)e depois para cada questatildeo eacute preenchida a sua estrutura (ldquobuildQuestionObjectrdquo)

Jaacute o carregamento da conclusatildeo final eacute realizado atraveacutes do predicado ldquotop_goal(L)rdquoEste predicado vai devolver a conclusatildeo final guardada

Por fim os factos iniciais satildeo obtidos reutilizando um processo de obtenccedilatildeo de factos(ldquoinf_sys((L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)rdquo) Este processo jaacute foireferido na secccedilatildeo que descreve o motor de inferecircncia (4242)

432 Conclusatildeo final a encontrar

A conclusatildeo final a encontrar representa o predicado que vai ser considerado comoobjectivo no decorrer do motor de inferecircncia Soacute vatildeo ser consideradas soluccedilotildees queconvergem para uma soluccedilatildeo final que contenha o predicado especificado no RHS

Para definir uma conclusatildeo final basta especificar o nome do predicado da soluccedilatildeoque pretendemos encontrar com o motor de inferecircncia

73

CAPIacuteTULO 4 WEXSYS

433 Factos iniciais

Os factos iniciais permitem adicionar conhecimento preacutevio a uma base de conhecimentoPara adicionaacute-los eacute necessaacuterio utilizar o botatildeo ldquoAdicionar facto inicialrdquo e preencher oscampos necessaacuterios Para remover um facto inicial previamente inserido eacute utilizado obotatildeo ldquoRemover facto inicialrdquo e eacute necessaacuterio confirmar a acccedilatildeo que se estaacute a efectuar deforma a evitar uma remoccedilatildeo acidental

434 Regras

As regras satildeo o ponto essencial da gestatildeo da base de conhecimento As regras satildeo osdados disponiacuteveis para a aplicaccedilatildeo e como tal quanto melhor forem definidas melhorqualidade a aplicaccedilatildeo teraacute no sentido em que os resultados seratildeo mais correctos e fiaacuteveis

4341 CriarAlterar uma regra

O processo de criaccedilatildeo de uma nova regra foi simplificado Jaacute natildeo eacute necessaacuterio conhecera sintaxe das regras e tambeacutem jaacute natildeo eacute necessaacuterio conhecer os factos a utilizar comopremissas

Para adicionar uma regra apenas temos que arrastar questotildees eou conclusotildees inter-meacutedias de forma a construir a regra que pretendemos inserir

No caso de estarmos a alterar uma regra ou no caso de termos adicionado uma questatildeoou conclusatildeo intermeacutedia incorrectamente podemos eliminar essa premissa simplesmenteseleccionando a ldquocheckboxrdquo respectiva e utilizar a opccedilatildeo ldquoRemover seleccionadosrdquo

74

43 BASE DE CONHECIMENTO

Figura 28 Introduzir uma nova regra

Apoacutes termos arrastado todas as questotildees eou conclusotildees intermeacutedias para a lista depremissas temos que indicar os respectivos valores Este processo estaacute simplificado nosentido em que apenas temos que utilizar a caixa de selecccedilatildeo agrave frente de cada controlo eseleccionar o respectivo valor

Os valores apresentados satildeo obtidos de forma diferente quer se trate de uma questatildeo oude uma conclusatildeo intermeacutedia No caso das questotildees os valores obtidos satildeo os indicadosaquando da sua inserccedilatildeo No caso das conclusotildees intermeacutedias satildeo obtidos todos os valoresutilizados nas regras ateacute ao momento Sempre que uma regra eacute inserida ou actualizadaeacute despoletado um processo que actualiza os valores das conclusotildees intermeacutedias com osnovos valores introduzidos

75

CAPIacuteTULO 4 WEXSYS

Figura 29 Apresentaccedilatildeo de valores configurados na questatildeo

4342 Questotildees

As questotildees acabam por ser o ponto de contacto da aplicaccedilatildeo com o utilizador Sempreque eacute necessaacuterio suspender o processamento para questionar o utilizador este teraacute ahipoacutetese de intervir na execuccedilatildeo Atraveacutes das questotildees colocadas vai ser possiacutevel inferiroutros factos que no final e numa situaccedilatildeo ideal conduzem a uma soluccedilatildeo possiacutevel

Uma questatildeo eacute identificada por um coacutedigo por uma descriccedilatildeo e ainda por um conjuntode valores possiacuteveis as respostas Quando inserimos uma nova regra podemos criar novasquestotildees utilizando a opccedilatildeo ldquoAdicionar uma questatildeordquo Surge entatildeo o formulaacuterio deintroduccedilatildeo de uma questatildeo como podemos ver na figura 30

Figura 30 Formulaacuterio de introduccedilatildeo de uma questatildeo

As respostas configuradas no formulaacuterio de introduccedilatildeo seratildeo as respostas que iratildeoaparecer quando inserirmos uma nova regra e arrastarmos a questatildeo para a lista depremissas

76

43 BASE DE CONHECIMENTO

4343 Verificaccedilatildeo

Apoacutes a introduccedilatildeo ou alteraccedilatildeo das regras deve ser realizado o processo de verificaccedilatildeoda base de conhecimento De uma forma quase imperceptiacutevel na fase de introduccedilatildeode regras estamos a activar este processo jaacute que eacute garantido que as regras introduzidasestatildeo coerentes e que os valores das premissas efectivamente existem Podemos dizerque estamos perante a primeira fase do processo de verificaccedilatildeo designado por verificaccedilatildeoproacute-activa

Para este trabalho foi considerado a verificaccedilatildeo de dois tipos de anomalia na base deregras redundacircncia e regras duplicadas A inclusatildeo de novos mecanismos de verificaccedilatildeoeacute possiacutevel bastando para isso a alteraccedilatildeo do predicado ldquoverification(L)rdquo

A grande diferenccedila entre os dois meacutetodos implementados eacute que uma regra redundanteadiciona conhecimento desnecessaacuterio agrave base de conhecimento enquanto que uma regraduplicada como o nome indica eacute apenas uma duplicaccedilatildeo do conhecimento

Na figura 31 podemos verificar o mecanismo de verificaccedilatildeo implementado que permiteidentificar que regra estaacute em conflito com que outra regra e qual o tipo de conflito

Figura 31 Verificaccedilatildeo da base de conhecimento

435 Gravaccedilatildeo da base de conhecimento

O processo de gravaccedilatildeo da base de conhecimento eacute similar ao processo de leitura com adiferenccedila de natildeo ser iterativo O processo de gravaccedilatildeo da base de conhecimento iniciacom a acccedilatildeo do utilizador na opccedilatildeo ldquoFinalizarrdquo que invoca o meacutetodo ldquosaveAll()rdquo doWexsysKBBean O resto do processo pode ser observado na figura 32

77

CAPIacuteTULO 4 WEXSYS

Figura 32 Processo de gravaccedilatildeo da base de conhecimento

436 Conversatildeo GISPSA

A conversatildeo da base de conhecimento do GISPSA para o formato wexsys foi efectuada emduas fases Na primeira fase foi feita uma migraccedilatildeo sintaacutectica da forma de representaccedilatildeode regras utilizada para a forma utilizada pelo wexsys Na segunda fase foi efectuadoum processo manual de conversatildeo

O sistema anterior delegava nas regras alguns predicados utilizados unicamente parao sistema de explicaccedilotildees Esta caracteriacutestica tornou a migraccedilatildeo algo morosa jaacute que eranecessaacuterio proceder agrave anaacutelise regra a regra de quais os predicados necessaacuterios e quais osdescartaacuteveis

78

44 ANAacuteLISE GRAacuteFICA

44 Anaacutelise graacutefica

Para aleacutem do motor de inferecircncia e da gestatildeo da base de conhecimento foi implemen-tado como prova de conceito um sistema graacutefico que permite observar facilmente arepresentaccedilatildeo de uma base de conhecimento sob a forma de um grafo

Este sistema permite visualizar e consultar a explosatildeo combinatoacuteria das regras edas premissas que as compotildeem Este tipo de ferramenta pode ser bastante uacutetil quandoutilizado nas tarefas de validaccedilatildeo por parte do perito Desta forma o perito consegue deuma forma visual e simples verificar o relacionamento entre as conclusotildees e as premissas

441 Implementaccedilatildeo

Esta funcionalidade foi implementada recorrendo agrave utilizaccedilatildeo de um controlo externodesignado por TGGraphLayout e desenvolvido por Alexander Shapiro (2010) O controlodisponibiliza uma applet que encapsula funcionalidades que permitem a interacccedilatildeo graacuteficacom a representaccedilatildeo de um grafo

Por se tratar de uma applet a comunicaccedilatildeo com os managed beans torna-se tecnica-mente mais difiacutecil de implementar Esse motivo levou agrave necessidade de criaccedilatildeo de umaservlet para simplificar o processo de interacccedilatildeo entre a aplicaccedilatildeo e a applet do controlovisual

A servlet WexsysServlet foi criada para dar suporte agrave comunicaccedilatildeo com o mana-

ged bean WexsysKBBean sendo este responsaacutevel pela obtenccedilatildeo dos dados no formatoreconhecido pelo controlo

O controlo teve que ser alterado de forma a permitir a interacccedilatildeo com a servlet bemcomo efectuar o tratamento dos dados no formato especificado ou seja criar uma espeacuteciede protocolo de comunicaccedilatildeo

O algoritmo 4 resume a implementaccedilatildeo efectuada ao niacutevel da applet e o algoritmo 5demonstra de que forma esses dados satildeo obtidos

442 Funcionamento

O grafo resultante eacute construiacutedo a partir de uma posiccedilatildeo inicial designada por ponto departida Eacute utilizada a designaccedilatildeo ldquordquo para simplificar a identificaccedilatildeo no grafo eeacute possiacutevel ver o resultado da paacutegina inicial na figura 33

As conclusotildees satildeo representadas por rectacircngulos com um fundo branco e as premissassatildeo identificadas por rectacircngulos com fundo azul

79

CAPIacuteTULO 4 WEXSYS

Algoritmo 4 Algoritmo responsaacutevel pelo desenho da appletinput graphPaths graphConclusionsbegin drawGraph

initializeNodes ()for path isin graphPaths do

init oldfor step isin path do

if nodes do not contain step thenbuildNode (step)

endif step is first then

oldlarr stepelse

addEdge (old step)oldlarr step

endend

endcreateStartNode ()linkUnlinkedNodesToStartNode ()

end

O ponto de partida liga-se entatildeo agraves regras que apenas contenham premissas quesejam questotildees construindo o grafo de possibilidades Apoacutes identificar as regras quesatildeo representadas com ligaccedilatildeo ao ponto de partida satildeo tratadas as restantes regrasconstruindo o resto do grafo agrave medida que as regras satildeo avaliadas

Eacute possiacutevel centrar o grafo numa premissa ou numa conclusatildeo Ao centrarmos ografo satildeo mantidos apenas os noacutes que se ligam directamente ao noacute que seleccionaacutemosNo entanto eacute possiacutevel expandir um noacute sem este tipo de comportamento bastando paraisso utilizar as funcionalidades disponiacuteveis ao pressionar a tecla direita do rato sobre o

Figura 33 Paacutegina inicial da anaacutelise graacutefica

80

44 ANAacuteLISE GRAacuteFICA

Algoritmo 5 Algoritmo para construccedilatildeo dos dados do grafooutput graphPaths and grapConclusionsbegin retrieveGraphPathAndConclusions

questionslarr gatherQuestionfor rule isin rules do

isFinalRulelarr conclusaoFinal igual RHS de ruleif isFinalRule then

add rule to grapConclusionssimpleRulelarr truegraphPathslarr nullfor premissa isin ruleLHS do

isConditionAskablelarr questions contains premissaif isConditionAskable then

add premissa and value to graphPathselse

simpleRulelarr falseretrieveGraphFromAtom (premissa)add result to graphPaths

endend

endend

end

respectivo noacute As funcionalidades disponiacuteveis satildeo expandir colapsar esconder e centrare satildeo auto-descritivas pelo que dispensam qualquer explicaccedilatildeo do seu funcionamento

Figura 34 Exemplo de grafo totalmente expandido

Eacute possiacutevel utilizar esta funcionalidade para identificarmos um cenaacuterio especiacuteficopor exemplo para consultar quais as premissas necessaacuterias para a obtenccedilatildeo de umadeterminada soluccedilatildeo

81

CAPIacuteTULO 4 WEXSYS

Figura 35 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto

443 Limitaccedilotildees

Esta funcionalidade no seu estado actual apresenta algumas limitaccedilotildees Conveacutem referirantes de mais que esta soluccedilatildeo natildeo eacute uma alternativa ao motor de inferecircncia mas sim umaferramenta de apoio visual auxiliar ao mesmo

Das limitaccedilotildees existentes salientam-se as seguintes

bull a utilizaccedilatildeo deste controlo obriga a que o utilizador esteja familiarizado com aspremissas e os seus valores Natildeo estatildeo disponiacuteveis os textos de apoio para aspremissas da mesma forma que satildeo mostrados no motor de inferecircncia Umapossiacutevel soluccedilatildeo passaria pela interacccedilatildeo da applet com a servlet para atraveacutes domecanismo de ajax push despoletar a actualizaccedilatildeo da JSP mostrando o texto doelemento seleccionado

bull o tamanho dos noacutes eacute grande quando comparado com o espaccedilo disponiacutevel nocontrolo o que por vezes obriga a algumas sobreposiccedilotildees dos noacutes tornado-oimperceptiacutevel Este problema pode ser observado na figura 34 Para atenuar esteproblema existem controlos que permitem modificar o factor de ampliaccedilatildeo rodar ocontrolo e controlar o grau de visualizaccedilatildeo hiperboacutelica

bull apoacutes a navegaccedilatildeo no grafo perde-se de alguma forma o contexto que o originouEste problema pode ser observado na figura 35

82

5Conclusotildees

Ateacute que ponto eacute que um software consegue efectivamente substituir um ser humanoquando estamos a falar de raciociacutenio Se esse raciociacutenio for estritamente linear seguindoum determinado percurso com alguns desvios ao longo do mesmo que acabam por ditarum desfecho diferente consoante as decisotildees que vatildeo sendo tomadas a substituiccedilatildeo podemesmo ser efectiva e ateacute mesmo melhor em alguns casos

Um perito natildeo eacute no entanto algueacutem que se limita a dizer sim ou natildeo ou algueacutem queapenas decide se eacute necessaacuterio seguir por este caminho ou aquele Um perito normalmenteobserva dados e factos e infere sobre os mesmos tendo a sensibilidade para em muitasocasiotildees conseguir ateacute mesmo obter a soluccedilatildeo final muito antes de terminar a anaacutelise detodos os paracircmetros A isso chama-se conhecimento heuriacutestico natildeo linear afectada poruma enormidade de factores que apenas eacute possiacutevel encontrar num ser humano

Estes factores podem ter tanto de beneacutefico como de nocivo Ao natildeo analisar atotalidade dos dados um perito poderaacute incorrer num erro ou mesmo tendo-os analisadoateacute ao fim poderaacute natildeo ter estado completamente atento ou compenetrado no que estavaa fazer pelo mero facto de poder estar cansado ou indisposto para executar tal tarefanaquele preciso momento

Um sistema pericial pode realmente ser uma mais valia no sentido em que estaacutetotalmente desprovido de emoccedilotildees e fadiga ao contraacuterio de um ser humano Paraaleacutem disto natildeo eacute necessaacuterio temer que o sistema pericial se desloque a uma qualquerlocalizaccedilatildeo remota e de difiacutecil acesso ou que chegue fora do horaacuterio previsto limitadopelos atrasos de uma simples viagem

Todos estes factos podem realmente ser considerados quando analisamos o funciona-mento do GISPSA Efectivamente trata-se de um sistema pericial estaacute sempre disponiacutevele totalmente desprovido de caracteriacutesticas humanas que poderiam eventualmente toldaro raciociacutenio do mesmo No entanto este sistema carecia de algo muito importante a

83

CAPIacuteTULO 5 CONCLUSOtildeES

acessibilidade a partir de qualquer local em qualquer hora e por parte de vaacuterios utilizado-res em simultacircneo de modo imediato e sem preacute-aviso Antes de mais o GISPSA eacute umaaplicaccedilatildeo de execuccedilatildeo local e natildeo foi de todo desenvolvida para funcionamento em redeComo tal o acesso agrave mesma estava agrave partida bastante limitado Depois cada instalaccedilatildeoapenas permitia a interacccedilatildeo com um utilizador de cada vez Existem ainda algumaslimitaccedilotildees identificadas no GISPSA que foram ultrapassadas com o desenvolvimento dowexsys tais como manutenccedilatildeo da base de conhecimento capacidade de raciocinar sobreconhecimento incerto e a implementaccedilatildeo de meacutetodos de verificaccedilatildeo

Hoje em dia eacute possiacutevel aceder a uma rede global (a internet) a partir de qualquer pontodo planeta e isto torna igualmente possiacutevel disponibilizar uma aplicaccedilatildeo de forma a quequalquer pessoa a consiga utilizar a qualquer hora e a partir de qualquer local O wexsysaplica essa transformaccedilatildeo ao GISPSA e leva-o ao proacuteximo patamar evolutivo

Como qualquer evoluccedilatildeo tambeacutem esta pretende natildeo soacute dotar a nova versatildeo comfuncionalidades que a anterior natildeo possuiacutea como tambeacutem pretende melhorar e corrigiros problemas que eventualmente foram encontrados Ao longo do tempo de utilizaccedilatildeodo GISPSA verificaram-se algumas coisas que podiam e deviam ser substituiacutedas Aleacutemdisto a proacutepria evoluccedilatildeo dos sistemas graacuteficos e de interacccedilatildeo colocaram o GISPSAcomo uma aplicaccedilatildeo de visual jaacute algo ultrapassado aspecto que tambeacutem carecia de umarevisatildeo para a realidade mais actual

A opccedilatildeo pela incorporaccedilatildeo do wexsys num portal teve a ver com as grandes capacida-des que este tipo de infra-estuturas tem hoje em dia Impulsionados por empresas comoa IBM os portais web representam janelas de negoacutecio com ligaccedilatildeo ao mundo e com aspotencialidades que daiacute advecircm Caracteriacutesticas como a facilidade de acesso sistemas debackup manutenccedilatildeo de tempos de uptime elevados rapidez de funcionamento facilidadede funcionamento e leitura entre muitas outras representam uma mais valia para estetipo de alojamento de aplicaccedilotildees

51 Contributos da soluccedilatildeo desenvolvida

O grande objectivo a que este trabalho se propunha foi alcanccedilado e consistia na criaccedilatildeode um sistema pericial baseado no GISPSA mas que pudesse ser acedido a partir deuma rede tornando-o global Os restantes objectivos foram igualmente alcanccedilados e oresultado final mostra-se soacutelido e fiaacutevel para candidato efectivo agrave substituiccedilatildeo do sistemaque lhe daacute a base No entanto existem outros pontos positivos na soluccedilatildeo encontradaquando comparada com outros sistemas periciais jaacute referidos nos capiacutetulos anteriores

84

51 CONTRIBUTOS DA SOLUCcedilAtildeO DESENVOLVIDA

Esses sistemas satildeo o LOMA o MDSS e o Whale watcherAo proceder a uma comparaccedilatildeo com estes sistemas a soluccedilatildeo desenvolvida neste

trabalho apresenta algumas vantagens Desde logo estamos a falar de aplicaccedilotildees web

com periacuteodos de desenvolvimento diferentes o que implica a utilizaccedilatildeo de tecnologiasdiferentes A vantagem da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo mais recentes dinacircmi-cas eficazes e visualmente mais apelativas coloca o wexsys num patamar efectivamentesuperior Para aleacutem disso o wexsys pode (como resultado da utilizaccedilatildeo dessas mesmastecnologias) ser facilmente integrado noutras aplicaccedilotildees como webservices ou portaisenquanto que os outros sistemas natildeo

Outra das particularidades dos sistemas estudados eacute que natildeo possuem (de acordocom as respectivas documentaccedilotildees) mecanismos de verificaccedilatildeo de regras e sempre queeacute necessaacuterio proceder a alteraccedilotildees a essas mesmas regras o utilizador teraacute que ter umconhecimento profundo acerca da sintaxe utilizada (gramaacutetica riacutegida) Para aleacutem distotambeacutem natildeo possuem (com excepccedilatildeo do MDSS) suporte a vaacuterias liacutenguas

Jaacute quanto agrave questatildeo da capacidade de funcionamento multi-utilizador apesar deestarmos a falar de aplicaccedilotildees web os sistemas estudados neste documento natildeo estatildeopreparados para cargas de processamento demasiado elevadas porque natildeo foi contempladaa possibilidade de um funcionamento distribuiacutedo o que permitiria aliviar a carga deprocessos e aumentar o nuacutemero maacuteximo de utilizadores

Para descrever mais em detalhe os objectivos alcanccedilados com a soluccedilatildeo propostapassamos a enunciaacute-los

bull Criaccedilatildeo de uma aplicaccedilatildeo web - Ao criar a nova aplicaccedilatildeo a questatildeo da distribuiccedilatildeodessa mesma aplicaccedilatildeo atraveacutes de uma rede era fulcral jaacute que permitiria uma seacuteriede factores que ateacute aqui natildeo estavam disponiacuteveis A possibilidade de utilizaccedilatildeo deuma base de conhecimento global onde todos os utilizadores pudessem contribuirpara o seu melhoramento facilidade de acesso a partir de qualquer localizaccedilatildeodisponibilidade a qualquer hora e dia capacidade de realizaccedilatildeo de backups paragarantir a continuidade dos dados e muacuteltiplos acessos simultacircneos foram questotildeesque ficaram resolvidas com a concretizaccedilatildeo deste objectivo

bull Verificaccedilatildeo das regras - Uma das lacunas do sistema base o GISPSA era a faltade capacidade para realizar a verificaccedilatildeo das regras que era colocadas na basede conhecimento Era possiacutevel chegar a cenaacuterios de inconsistecircncia atraveacutes dacontradiccedilatildeo de regras podendo chegar a cenaacuterios em que simplesmente natildeo erapossiacutevel prosseguir com a inferecircncia das regras nem tatildeo pouco chegar a umaconclusatildeo ou soluccedilatildeo possiacutevel

85

CAPIacuteTULO 5 CONCLUSOtildeES

Ao adicionar um mecanismo de verificaccedilatildeo de regras como o foi neste caso assisti-mos natildeo soacute ao cumprimento de mais um objectivo mas tambeacutem a uma evoluccedilatildeosignificativa do novo sistema pericial que com esta caracteriacutestica se torna maisfiaacutevel e eficaz

bull Manutenccedilatildeo da base de conhecimento - Neste novo sistema eacute mais simples procederagrave actualizaccedilatildeo da base de conhecimento quer para adicionar alterar ou removerfactos na mesma Jaacute natildeo eacute necessaacuterio ter formaccedilatildeo sobre a sintaxe necessaacuteria pararealizar estas operaccedilotildees deixando de lado a rigidez que era necessaacuteria aplicarno sistema base Isto permite alargar o leque de utilizaccedilatildeo do sistema a outrosutilizadores que na versatildeo anterior natildeo teriam oportunidade para o fazer

bull Melhor usabilidade - Uma das grandes transformaccedilotildees para quem conhecia osistema anterior e encontra a nova versatildeo passa pelo aspecto visual Quando umutilizador eacute confrontado com uma aplicaccedilatildeo aquilo com que se depara eacute a parte deinteracccedilatildeo responsaacutevel por mediar o diaacutelogo entre o utilizador e a aplicaccedilatildeo per si

Quando uma aplicaccedilatildeo qualquer que ela seja possui um visual pouco atraente eapelativo para o utilizador com bototildees e janelas pouco interessantes componentesmal colocados atalhos escondidos e de difiacutecil percepccedilatildeo ou ateacute mesmo comcores pouco agradaacuteveis o utilizador acaba por seja de forma gradual ou imediataabandonar a aplicaccedilatildeo e mostra pouco interesse em voltar a utilizaacute-la a natildeo ser queseja efectivamente obrigado a fazecirc-lo

Neste trabalho atraveacutes da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo web tais comoJavascript e Ajax e ainda atraveacutes da utilizaccedilatildeo do Icefaces foi possiacutevel chegar aum visual considerado por muitos utilizadores como interessante e actual o que vaiplenamente de encontro ao objectivo proposto para este ponto

bull Multi-utilizador - Uma das grandes criacuteticas do sistema base tinha efectivamente aver com o facto de natildeo ser possiacutevel colocar mais do que um utilizador a trabalharao mesmo tempo Para tal ser possiacutevel seria necessaacuterio proceder agrave instalaccedilatildeo dosistema noutro computador e consequentemente adquirir outra licenccedila comercialde utilizaccedilatildeo

Ao adicionar a capacidade de vaacuterios utilizadores poderem estar a trabalhar nosistema em simultacircneo este objectivo verifica-se como estando cumprido na to-talidade pois natildeo apenas isso jaacute eacute possiacutevel neste novo sistema pericial como acapacidade de processamento natildeo eacute afectada jaacute que eacute possiacutevel proceder agrave colocaccedilatildeo

86

52 LIMITACcedilOtildeES E TRABALHO FUTURO

da aplicaccedilatildeo num sistema de clustering em caso de deacutefices ou carga excessiva deprocessamento

bull Sistema de explicaccedilotildees - A soluccedilatildeo proposta conteacutem um sistema de explicaccedilotildees quepode ser utilizado para obter explicaccedilotildees a perguntas do tipo ldquocomordquo e ldquoporquecircrdquoEste ponto natildeo representa uma melhoria mas sim a manutenccedilatildeo de uma funcionali-dade que o GISPSA jaacute disponibilizava

bull Anaacutelise graacutefica - Este moacutedulo eacute uma nova abordagem agrave anaacutelise de uma base deconhecimento que natildeo eacute normalmente utilizado nos sistemas periciais conhecidos eque possibilita uma anaacutelise visual facilitadora do comportamento e funcionamentoda nova soluccedilatildeo

bull Suporte a vaacuterias liacutenguas - A soluccedilatildeo proposta permite de uma forma bastantesimples a implementaccedilatildeo de novas linguagens A parte da soluccedilatildeo que envolveo sistema pericial e a parte da aplicaccedilatildeo web estatildeo preparados para esta tipo desuporte contudo a base de conhecimento natildeo contempla este mecanismo e teriaque ser implementado

bull Arquitectura - O tipo de arquitectura da soluccedilatildeo proposta permite uma simplesintegraccedilatildeo com outros tipos de aplicaccedilatildeo web como por exemplo webservices ouportais Possibilita ainda como jaacute referido a separaccedilatildeo da aplicaccedilatildeo de uma formamodular permitindo uma distribuiccedilatildeo ao niacutevel do processamento

bull Migraccedilatildeo - No processo de migraccedilatildeo da base de conhecimento foram detectados ecorrigidos alguns problemas Regras inconsistentes regras repetidas e regras quenatildeo trazem novo conhecimento foram adaptadas e resolvidas evoluindo a novabase de conhecimento para uma entidade mais fiaacutevel e consistente

52 Limitaccedilotildees e trabalho futuro

Este trabalho representa um esforccedilo no sentido de apresentar uma versatildeo melhorada dosistema GISPSA e apesar de o conseguir em muitos aspectos e essencialmente em todosaqueles que foram inicialmente propostos ficam alguns aspectos que ainda poderatildeo serimplementados futuramente e que certamente contribuiratildeo para um sistema ainda melhor

Assim apresentam-se as limitaccedilotildees identificadas e as perspectivas de trabalho futuro

87

CAPIacuteTULO 5 CONCLUSOtildeES

bull Validaccedilatildeo de regras - Apesar de ser jaacute possiacutevel neste novo sistema pericial procederagrave verificaccedilatildeo de regras como mecanismo de prevenccedilatildeo de redundacircncias e contradi-ccedilotildees ainda natildeo eacute possiacutevel a validaccedilatildeo por parte de um perito dessas mesmas regrasa natildeo ser que essa validaccedilatildeo seja feita em modo ad hoc

Seria importante a criaccedilatildeo de um modo lsquosupervisorrsquo ou modo lsquoperitorsquo paraque a aplicaccedilatildeo pudesse adoptar uma postura natildeo soacute de linguagem adaptada aum utilizador com maior formaccedilatildeo na aacuterea (como seraacute o caso de perito) mastambeacutem pudesse assumir uma postura de simulaccedilatildeo em que seriam apresentadosnatildeo soacute os passos tomados como eventuais cenaacuterios em caso de respostas diferentesIsto permitiria a um perito confrontar o seu proacuteprio conhecimento com o sistemapericial realizando desta forma uma validaccedilatildeo do funcionamento do sistema e dabase de conhecimento

Para aleacutem disto sendo uma aplicaccedilatildeo web o modo lsquosupervisorrsquo ou modo lsquope-ritorsquo poderia ser acedido a partir de qualquer siacutetio e a qualquer hora Se o responsaacute-vel pela validaccedilatildeo da base de conhecimento (normalmente o perito que contribuiucom o conhecimento) natildeo estiver disponiacutevel para o fazer por motivos de ausecircnciaou incompatibilidade de horaacuterios poderaacute sempre realizar o acesso agrave aplicaccedilatildeoa partir de um outro local agrave hora que mais lhe aprouver sem qualquer tipo deprejuiacutezo quer para o perito quer para o proacuteprio sistema

bull Muacuteltiplas conclusotildees - Com o trabalho desenvolvido apenas eacute possiacutevel atraveacutesdo disparo de uma regra final chegar a uma uacutenica conclusatildeo Deveria ser possiacutevelchegar a muacuteltiplas conclusotildees pelo que natildeo tendo sido implementado nesta versatildeoconsidera-se como uma possibilidade de trabalho futuro

Aparentemente sem qualquer relaccedilatildeo a necessidade evidenciada no ponto anteriorde criar um modo lsquosupervisorrsquo ou modo lsquoperitorsquo poderaacute levar um futurodesenvolvimento no sentido de criar as muacuteltiplas conclusotildees aqui referidas jaacute queao permitir este modo de funcionamento tambeacutem deveraacute ser possiacutevel inferir sobrevaacuterios cenaacuterios possiacuteveis e respectivas conclusotildees

bull Negaccedilatildeo de premissas - Nesta versatildeo do trabalho apenas eacute possiacutevel criar regrassem negaccedilatildeo Por exemplo num cenaacuterio em que uma pergunta ao utilizador tem aforma

Qual a cor (Vermelho Azul Verde)

e as regras que satildeo candidatas a disparo forem

88

52 LIMITACcedilOtildeES E TRABALHO FUTURO

R1 - SE cor Vermelho R2 - SE cor Azul R3 SE cor Verde

entatildeo natildeo eacute possiacutevel caso seja necessaacuterio ter uma regra do tipo

Rx - SE cor NOT XXXXX

Isso apenas seria possiacutevel se a pergunta inicial fosse

Qual NAtildeO Eacute a cor (Vermelho Azul Verde)

para assim permitir regras do tipo

Rx - SE NAtildeO Eacute cor XXXXX

Assim sendo aponta-se como uma limitaccedilatildeo e eventual trabalho futuro a desenvol-ver para outras versotildees da aplicaccedilatildeo a criaccedilatildeo de um sistema que permita a negaccedilatildeode premissas para que o exemplo atraacutes indicado seja de possiacutevel implementaccedilatildeo

bull Contemplar factos iniciais nas regras - A versatildeo actual do sistema natildeo permite ainclusatildeo de factos inicias nas premissas das regras

bull Pesquisa de muacuteltiplas soluccedilotildees finais - Actualmente soacute eacute permitido executar omotor de inferecircncia com uma soluccedilatildeo final como objectivo Seria uma evidentemais valia a inclusatildeo da capacidade de pesquisa por muacuteltiplas soluccedilotildees

bull Metaconhecimento - ao ser adicionado metaconhecimento podemos aumentar odesempenho do motor de inferecircncia nos cenaacuterios em que temos bases de conheci-mento consideravelmente grandes

bull Regra mais relevante para iniciar o motor de inferecircncia - desenvolver um algoritmopara obter uma regra que tenha uma maior probabilidade de sucesso de forma aminimizar iteraccedilotildees desnecessaacuterias

bull Validaccedilatildeo automaacutetica - quando as questotildees satildeo apagadas deve ser realizada arespectiva verificaccedilatildeo de utilizaccedilatildeo dessas questotildees como condiccedilotildees de regras paraprevenir possiacuteveis inconsistecircncias

bull Suporte a vaacuterias liacutenguas - a base de conhecimento natildeo foi projectada para imple-mentar esta funcionalidade

89

Bibliografia

Acquired Intelligence (2010) Acquire httpwwwaiincca Junho de 201025

Alexander Shapiro (2010) Tggraphlayout httpsourceforgenet

projectstouchgraph Julho de 2010 49 79

Barnett J A (1991) Calculating dempster-shafer plausibility IEEE Transactions on

Pattern Analysis and Machine Intelligence 13 599ndash602 16

Boris van Schooten (2005) Yprolog httpwwwvfutwentenl

~schootenyprolog Junho de 2010 37

Carlos Figueira Filho (2010) JEOPS - Integraccedilatildeo entre Objetos e Regras de Produccedilatildeoem Java httpwwwcinufpebr~jeops Julho de 2010 36

CoAJRA J (1997) The basics of expert (knowledge based) systems 18

Dokas I M (2005) Developing web sites for web based expert systems A webengineering approach In In Proceedings of the Second International ICSC Symposium

on Information Technologies in Environmental Engineering (Magdeburg pages 202ndash217 Shaker Verlag 26

Drakopoulos J (1994) Probabilities possibilities and fuzzy sets Fuzzy Sets and

Systems 75 1ndash15 16

Elie Levy (2010) Zilonis httpwwwzilonisorgindexphp Junho de2010 37

Ernest Friedman-Hill (2010) Jess httpwwwjessrulescom Julho de 201025 36

EXSYS (2010) Exsys corvid httpwwwexsyscom Junho de 2010 24

Filho A R (2010) Mdss medical diagnosis support system LPA - Logic ProgrammingAssociates Ltd 30

Giarratano C J Riley and D G (1998) Expert Systems - Principles and Programming

Thirds Edition Principles and Programing Course Technology 3ed edition 6 18

91

BIBLIOGRAFIA

Hammurapi Group (2010) Hammurapi rules httpwwwhammurapicom

dokuwikidokuphp Junho de 2010 36

Heckerman D (1992) The certainty-factor model 16

IBM (2010) Jlog httpwww-01ibmcomsoftwarewebsphere

productsbusiness-rule-management Junho de 2010 36

Kozlenkov Alex and Paschke (2010) Prova rule language httpprovaws

indexhtml Junho de 2010 37

Logic Programming Associaties Ltd (2010) Lpa webflex httpwwwlpacouk Abril de 2010 24

Lucas P (2001) Certainty-factor-like structures in bayesian belief networks Knowledge-

Based Systems 14 327ndash335 16

Maarten Menken (2010) Jclips httpsourceforgenetprojects

jclips Julho de 2010 25 36

Mcarniel (2010) Jruleengine httpjruleenginesourceforgenet

indexhtml Junho de 2010 37

Merritt D (1989) Building expert systems in Prolog 6 56

Michael Giordano (2010) Webclips httpclipsinterfacesourceforgenetWebCLIPSwchomehtm 28 de Julho de 2003 24

OpenL (2010) Openl tablets httpopenl-tabletssourceforgenetJulho de 2010 37

OpenRules Inc (2010) Open rules engine httpopenrulescomindex

htm Julho de 2010 37

Pinto A (1998) GISPSA - GIS problem solver adviser 1 20

RedHat (2010) Drools httpwwwjbossorgdroolsdrools-experthtml Junho de 2010 36

Shortliffe E H and Buchanan B G (1990) A model of inexact reasoning in medicinepages 259ndash275 16

Wilson N (2000) Algorithms for dempster-shafer theory In Algorithms for Uncertainty

and Defeasible Reasoning pages 421ndash475 Kluwer Academic Publishers 16

92

Anexos

93

ACoacutedigo do motor de inferecircncia

Iniacutecio do motor de inferencia

init_inference- retractall(hist2) consult(rsquokbsyplrsquo)

top_goals(ControlObj MinCF) - top_goal(TopGoal) top(TopGoal ControlObj MinCF)

top(TopGoal ControlObj MinCF) - retractall(hist2) set(len 0)

getRuleMoreRelevant(TopGoal Rule) tryToProove(Rule ControlObj MinCF)

tryToProove(Rule ControlObj MinCF)- rule(Rule _ lhs(LHS) _)

proveListHyp(LHS ControlObj MinCF)get(len LEN)println(LEN)

LEN1 is LEN + 1assert(hist(LEN1Rule))println(LEN1)

set(len LEN1)

(

check if rule has return control object

(var(ControlObj)) -gt(

no control object found check if other rules needs to be fired

fireRules(ControlObj MinCF)

)(

control object found

true

)

)

proveListHyp([] ControlObj MinCF)

proveListHyp([H|T] ControlObj MinCF)-proveHyp(H ControlObj MinCF)

((var(ControlObj)) -gt (proveListHyp(T ControlObj MinCF))(true))

fact already known

proveHyp(H ControlObj MinCF)- H = ev(X Y) fact(X Y_ )

there is a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _)

not(fact(X _ _))question(X _ _ _)

not(not_question(X))ControlObj = ask(X)

95

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

there is a conclusion that can lead to a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _) rule(Rule _ lhs(LHS)

rhs(ev(X_) V))

tryToProove(Rule ControlObj MinCF)

ADD A FACT

av(Attr Value Confidence ControlObj MinCF) - retractall(hist2)set(len 0)

saveFact(Attr Value Confidence 1 CF_FINAL _)

fireRules(ControlObj MinCF)

nav(Attr)-assert(not_question(Attr))

fireRules(ControlObj MinCF)- rule(X _ lhs(LHS) rhs(ev(Y R) Conf))

not(inf_rules_fired(X_)) evaluate(LHS ConfLhs 1)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF)

get(len LEN) LEN1 is LEN + 1 assert(hist(LEN1Rule))

set(len LEN1)

(

(var(ControlObj)) -gt(

(top_goal(Y)) -gt (

ControlObj = answerFound(Y R ConfRet)

)(

true fireRules(ControlObj MinCF)

))(

true

)

)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF) -

calculateConfidence(ConfLhs Conf ConfRet)

ConfRet gt MinCF

saveFact(Y R ConfRet 2 CF_FINAL X)

assert(inf_rules_fired(X ConfRet))

evaluate([] [] 1)- true

evaluate([H|T] [FactConf|LConf] RetCode)-

H = ev(X Ans)fact(X Ans FactConf)

evaluate(T LConf RetCode)

calculateConfidence(ConfLhs RuleCF ResultCF)-min_in_list(ConfLhs MinLHSCF)

ResultCF is MinLHSCF RuleCF 100

min_in_list([Min]Min)

min_in_list([HK|T]M) - H lt= K min_in_list([H|T]M)

min_in_list([HK|T]M) - H gt K min_in_list([K|T]M)

1 - fornecido 2 - inferido

we have a fact saved with the same conclusion already

96

saveFact(Attr Value Confidence Mode CF_Final Rule)-

fact(Attr Value OldConfidence)

combine(OldConfidence Confidence CF_Final)

retract(fact(Attr Value OldConfidence))

retract(inf_sys_fact(Attr Value OldConfidence _))

assert(fact(Attr Value CF_Final))

assert(inf_sys_fact(Attr Value CF_Final Mode))

linkFactToRule(Rule Attr Value Mode)

we donrsquot have any fact saved

saveFact(Attr Value Confidence Mode Confidence Rule)-

assert(fact(Attr Value Confidence))

assert(inf_sys_fact(Attr Value Confidence Mode))

linkFactToRule(Rule Attr Value Mode)

linkFactToRule(___1)

linkFactToRule(RuleAttrValue2)-

inf_exp_how(Attr Value oldRules)

retract(inf_exp_how(Attr Value oldRules))

assert(inf_exp_how(Attr Value [Rule|oldRules]))

linkFactToRule(RuleAttrValue2)-

assert(inf_exp_how(Attr Value [Rule]))

println(rsquosaved line with information on explanation howrsquo) listing

combine(CF1 CF2 CF) - CF1 gt= 0 CF2 gt= 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CF is CF1 + Calc

combine(CF1 CF2 CF) - CF1 lt 0 CF2 lt 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CFAux is CF1 + Calc CF is 0-CFAux

combine(CF1 CF2 CF) - (CF1 lt 0 CF2 lt 0) (CF1 gt 0 CF2 gt 0)

SumCFs is CF1 + CF2 abs_minimum(CF1 CF2 MCF)

Rest is 100 - MCFCF is 100 SumCFs Rest

abs_minimum(ABX) - absolute(A AA) absolute(B BB)minimum(AABBX)

absolute(X X) -X gt= 0

absolute(X Y) -X lt 0Y is 0-X

minimum(XYX) -X lt= Y

minimum(XYY) -Y lt= X

Rule verification

verification(L)-retractall(validation_fired1)

retractall(verification_error4)set(nextid 0)

findall(IDverification_rule_1(ID _ _ _)L)

verification_rule_1(ID RuleInError RuleRelated Result)-

rule(A _ lhs(CA) RA)rule(B _ lhs(CB) RB)

not( B = A)not(validation_fired(B))

checkConditionsSimilar(CA CB FullMatch)

checkResultSimilar(FullMatch RA RB Result)

assert(validation_fired(B))

97

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

get(nextid CURR_ID)ID is CURR_ID + 1

set(nextid ID)

assert(verification_error(ID B A Result))

RuleInError = B RuleRelated = A

checkConditionsSimilar(CA CB FullMatch)-checkConditionsSimilar_1(CACB)

lent(CA X) lent(CB Y) testCheck(X Y FullMatch)

testCheck(X X 1)

testCheck(X Y 0)- not(X = Y)

checkConditionsSimilar_1([] L)

checkConditionsSimilar_1([H|R] L)- member(H L) checkConditionsSimilar_1(R L)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueB) CFB) 2)-

not(ValueA = ValueB)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueA) CFB) 2)

checkResultSimilar(0 rhs(ev(Atom Value) CFA) rhs(ev(Atom Value) CFB) 1)-

CFB lt= CFA

lent([] 0)

lent([_|R] SizeT)- lent(R Size)SizeT is Size + 1

Rule verification

retrieve_rules(L)-

findall(X rule(X _ __) L)

retrieve_questions(L)-

findall(X question(X ___) L)

Information predicates

inf_sys(L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)-

i_sys_rules(L_Rules)i_sys_inf_fact(L_Inf_Facts)

i_sys_know_fact(L_Know_Facts) i_sys_init_fact(L_Init_Facts)

i_sys_rules(L)-

findall(r(Rule Conf) inf_rules_fired(Rule Conf) L) member(C L)

i_sys_rules([])

i_sys_inf_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 2) L) member(C L)

i_sys_inf_fact([])

i_sys_know_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 1) L) member(C L)

i_sys_know_fact([])

98

i_sys_init_fact(L)-

findall(f(Attr Value Conf) condition_init(Attr Value Conf) L) member(C L)

i_sys_init_fact([])

condition_init(Attr Value Conf)-fact(Attr Value Conf)

not(inf_sys_fact(Attr _ _ _))

explanations

why(L)-findall(r(OX) hist(OX) L)

how(Attr Value Result)- inf_exp_how(Attr Value Rules)

explainHow(Rules Explanation)append(Rules Explanation Result)

explainHow([] [])

explainHow([H|T] Result)- innerExplain(H ExplanationH)

explainHow(T ExplanationRules) append(ExplanationH ExplanationRules Result)

innerExplain(Rule Explanation)- rule(Rule _ lhs(LHS) _)

explainLHS(LHS Explanation)

explainLHS([] [])

explainLHS([ev(Attr Value)|T] ExplanationA)-

not(inf_exp_how(Attr Value _))

fact(Attr Value _) print(rsquoinitial factrsquo)

explainLHS(T ExplanationA)

explainLHS([ev(Attr Value)|T] ResultA)-

how(Attr Value ExplanationA)

explainLHS(T Explanation)

append(ExplanationA Explanation ResultA)

append([] L L)

append(L [] L)

append([H|T] M [H|N])-append(L M N)

Map methods

buildValidationReport(Id RErr RRel ErrType)-

verification_error(Id RErr RRel ErrType)

buildQuestionObject(ask(X) X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

buildQuestionObject_by_code(X X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

99

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

buildSolutionObject(answerFound(Y R Found) Y R Found)

buildRuleObject(Rule Descr LHS RHS CF)-

rule(Rule Descr lhs(I_LHS) rhs(I_RHS CF))

lhs_flatten(I_LHS LHS)

rhs_flatten(I_RHS RHS)

flatten(L LO)- iflatten(L LO)

iflatten([] [])

iflatten([H|R] [AD|L])- H = answer(A D) iflatten(R L)

lhs_flatten(L LO)- ilhs_iflatten(L LO)

ilhs_iflatten([] [])

ilhs_iflatten([H|R] [[ADCB]|L])-H = ev(A D)question(A C LL _)

findMember(LLDB)ilhs_iflatten(R L)

ilhs_iflatten([H|R] [[ADAD]|L])-H = ev(A D)not(question(A _ _ _))

ilhs_iflatten(R L)

rhs_flatten(ev(AB) [AB])

findMember([] D D)-

findMember([H|T] D B)-H = answer(D B)

findMember([H|T] D B)-findMember(T D B)

attempt to Get more relevant rule

getRuleMoreRelevant(TopGoal Rule)-

rule(Rule_ _ rhs(ev(P V) X)) top_goal(P)

find the rules that contains a direct solution

findall(X rule(X lhs(LLHS) rhs(ev(TopGoal _)_)) LX)

debugLine(trc1rsquogtrsquo)debugList(LX)

For the main rules apply the algorithm

fillMainRules(LX LOUT)

bubble_sort(LOUT LREALLYOUT)

LREALLYOUT = [ score_table(Rule _ _ _) | _ ]

debugLine(trc1rsquogtrsquo)debugList(LREALLYOUT)

fillMainRules([] [])-

fillMainRules([HIN|RIN] [HOUT|LOUT])- calculateCurrentRule(HIN HOUT)

fillMainRules(RIN LOUT)

calculateCurrentRule(HIN HOUT)-rule(HIN _ lhs(LHS) rhs(_ Confidence))

calculateScoreBasedOnLHS(LHS 0 Score)

OrderIndice is Score Confidence

HOUT = score_table(HIN Score Confidence OrderIndice)

calculateScoreBasedOnLHS([] ScoreResult ScoreResult)-

100

calculateScoreBasedOnLHS([HLHS|RLHS] Score ScoreResult)-

calculateScoreBasedOnLHSCurrent(HLHS Score ScoreAfter)

calculateScoreBasedOnLHS(RLHS ScoreAfter ScoreResult)

calculateScoreBasedOnLHSCurrent(ev(X _) Score ScoreAfter)-

question(X _ _ _) not(fact(X _ _))

ScoreAfter is Score + 1

calculateScoreBasedOnLHSCurrent(ev(X _) Score Score)-

helper methods

bubble_sort(ListSorted)-b_sort(List[]Sorted)

b_sort([]AccAcc)

b_sort([H|T]AccSorted)-bubble(HTNTMax)b_sort(NT[Max|Acc]Sorted)

bubble(X[][]X)

bubble(X[Y|T][Y|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C lt= D bubble(XTNTMax)

bubble(X[Y|T][X|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C gt Dbubble(YTNTMax)

bubble_sort2(ListSorted)-b_sort2(List[]Sorted)

b_sort2([]AccAcc)

b_sort2([H|T]AccSorted)-bubble2(HTNTMax)b_sort2(NT[Max|Acc]Sorted)

bubble2(X[][]X)

bubble2(X[Y|T][Y|NT]Max)- X = r(D _) Y = r(C _) C lt= D bubble(XTNTMax)

bubble2(X[Y|T][X|NT]Max)- X = r(D _) Y = r(C _) C gt Dbubble(YTNTMax)

Allows to get a Bag of all the X that makes Goal evaluate to true

Bag can contain duplicated X

findall(XGoalBag) - post_it(XGoal) gather([]Bag)

Aux

post_it(XGoal) - call(Goal) asserta(data999(X)) fail

post_it(__)

gather(BBag) - data999(X) retract(data999(X)) gather([X|B]Bag)

gather(SS)

member(X[X|_])-

member(X[_|Y]) - member(XY)

101

BBase de conhecimento do protoacutetipo

question(turn_over rsquoO carro ligarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(lights_weak rsquoAs luzes estatildeo fracasrsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(radio_weak rsquoO raacutedio estaacute fracorsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(smell_gas rsquoCheira a gasolinarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(gas_gauge rsquoO que marca o ponteiro do depoacutesito da gasolinarsquo

[ answer(empty rsquoVaziorsquo) answer(high rsquoSuficientersquo) answer(low rsquoReservarsquo)]0)

rule(rule_1 rsquoRule 1rsquolhs([ev(turn_over no) ev(battery_bad yes)])

rhs(ev(problem battery) 100))

rule(rule_2 rsquoRule 2rsquolhs([ev(lights_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_3 rsquoRule 3rsquolhs([ev(radio_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_4 rsquoRule 4rsquolhs([ev(smell_gas yes) ev(turn_over yes)])

rhs(ev(problem flooded) 80))

rule(rule_5 rsquoRule 5rsquolhs([ev(turn_over yes) ev(gas_gauge empty)])

rhs(ev(problem out_of_gas) 90))

rule(rule_6 rsquoRule 6rsquolhs([ev(turn_over yes) ev(gas_gauge low)])

rhs(ev(problem out_of_gas) 30))

rule(rule_7 rsquoRule 7rsquolhs([ev(gas_gauge low)ev(turn_over yes)])

rhs(ev(problem out_of_gas) 30))

103

ANEXO B BASE DE CONHECIMENTO DO PROTOacuteTIPO

rule(rule_8 rsquoRule 8rsquo

lhs([ev(turn_over yes) ev(gas_gauge low) ev(smell_gas no)])

rhs(ev(problem out_of_gas) 30))

top_goal(problem)

104

CBase de conhecimento GISPSA

question(qs_tema_ger rsquoQual o tipo de Problemarsquo

[ answer(c_ger_map rsquoMapas Configuraacuteveisrsquo) answer(c_ger_inq rsquoInqueacuteritos e Listagensrsquo)

answer(c_ger_mov rsquoCGMOVIGrsquo) answer(c_ger_pla rsquoCGDCGERrsquo)

answer(c_ger_acm rsquoCGVACUMCGTACUMrsquo)]0)

question(qs_plareg rsquoA Conta tem regra de construcccedilatildeo associada rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipr rsquoExiste Conta Pai do Tipo R no Planorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaent rsquoConta aberta por entidadesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipa rsquoConta do Tipo Arsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plalim rsquoEntidade encontra-se nos limitesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaexis rsquoEntidade Existentersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plamix rsquoContas Valor entre Contas Movimentorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acumul rsquoQual o problema de acumuladosrsquo

[ answer(c_acm_avm rsquoCGVACUM ltgt CGMOVIGrsquo)

answer(c_acm_si rsquoSaldos Iniciaisrsquo)

answer(c_acm_cna rsquoContas Nao Acumulamrsquo)

answer(c_acm_avat rsquoCGVACUM ltgt CGTACUMrsquo)]0)

question(qs_incmov rsquoInconsistecircncias no CGMOVIGrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

105

ANEXO C BASE DE CONHECIMENTO GISPSA

question(qs_incpla rsquoInconsistecircncias no CGDCGERrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acmsia rsquoSaldos Iniciais Alteradosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movi rsquoQual o problema dos movimentosrsquo

[ answer(c_mov_lan rsquoLanccedilamentos nao balanceadosrsquo)

answer(c_mov_con rsquoProblema de Contasrsquo)

answer(c_mov_cgca rsquoMovimentos CG ltgt CArsquo)]0)

question(qs_movvdif rsquoValores CG gt CArsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlgca rsquoCC Ligados a Analiticarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlg100 rsquoTodas as Ligacoes a 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movm100 rsquoDiferencas Correspondem a CC com Mais de 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcna rsquoLancamento em Contas nao Existentesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movci rsquoLancamento em Contas Invalidasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcdf rsquoContas correctasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_inquer rsquoInqueacuterito ou listagemrsquo

[ answer(c_inq_bal rsquoBalancetersquo) answer(c_inq_dia rsquoExtractoDiariorsquo)]0)

question(qs_inqsal rsquoProblema de saldosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapa rsquoProblema dos mapasrsquo

[ answer(c_map_imp rsquoErro na Impressaorsquo) answer(c_map_cal rsquoErro no Calculorsquo)

answer(c_map_mic rsquoErro na Transferencia P Microrsquo)]0)

question(qs_mapcol0 rsquoA ultima linha calculada tem a coluna 0 configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapfunc

rsquoA ultima linha calculada apresenta colunas com funcoes invalidas ou sintaxe erradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin0 rsquoA Linha 000 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin9 rsquoA Linha 999 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

106

question(qs_map2alg rsquoTodos os Valores da Linha 999 tem 2 Algarismosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_map198 rsquoA Soma dos Valores da Linha 999 Ultrapassa 198rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapsys rsquoO Sistema Permite a Utilizacao de Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapuser rsquoO Utilizador Tem Acesso a Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapflr rsquoO Folder Existersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

rule(r_pla_1 r_pla_1lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plareg c_sim)])

rhs(ev(dominio d_pla_reg) 100)

)

rule(r_pla_2 r_pla_2lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plaent c_sim)])

rhs(ev(dominio d_pla_ent) 100)

)

rule(r_pla_3 r_pla_3lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plamix c_sim)])

rhs(ev(correccao cr_pla_mix) 100)

)

rule(r_pla_11 r_pla_11lhs([ev(dominio d_pla_reg) ev(qs_platipr c_nao)])

rhs(ev(correccao cr_pla_tipr) 100)

)

rule(r_pla_21 r_pla_21lhs([ev(dominio d_pla_ent) ev(qs_platipa c_nao)])

rhs(ev(correccao cr_pla_tipa) 100)

)

rule(r_pla_22 r_pla_22lhs([ev(dominio d_pla_ent) ev(qs_plalim c_nao)])

rhs(ev(correccao cr_pla_lim) 100)

)

rule(r_pla_23 r_pla_23lhs([ev(dominio d_pla_ent) ev(qs_plaexis c_nao)])

rhs(ev(correccao cr_pla_exis) 100)

)

rule(r_acm_1 r_acm_1

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_2 r_acm_2

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_3 r_acm_3

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_4 r_acm_4

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_5 r_acm_5

107

ANEXO C BASE DE CONHECIMENTO GISPSA

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_6 r_acm_6

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_7 r_acm_7

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_si) ev(qs_acmsia c_nao)])

rhs(ev(correccao cr_acm_si) 100)

)

rule(r_mov_1 r_mov_1lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_lan)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_2 r_mov_2lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_cgca)])

rhs(ev(dominio d_mov_cgca) 100)

)

rule(r_mov_21 r_mov_21lhs([ev(dominio d_mov_cgca) ev(qs_movvdif c_sim)])

rhs(ev(subdominio d_mov_cgca_1) 100)

)

rule(r_mov_22 r_mov_22lhs([ev(dominio d_mov_cgca) ev(qs_movm100 c_sim)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_23 r_mov_23lhs([ev(dominio d_mov_cgca)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_3 r_mov_3lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_con)])

rhs(ev(dominio d_mov_con) 100)

)

rule(r_mov_31 r_mov_31lhs([ev(dominio d_mov_con) ev(qs_movcna c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_32 r_mov_32lhs([ev(dominio d_mov_con) ev(qs_movci c_nao)])

rhs(ev(correccao cr_mov_inc_soft) 100)

)

rule(r_mov_33 r_mov_33lhs([ev(dominio d_mov_con) ev(qs_movcdf c_nao)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_34 r_mov_34lhs([ev(dominio d_mov_con)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_211 r_mov_211lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlgca c_nao)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_212 r_mov_212lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlg100 c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_213 r_mov_213lhs([ev(subdominio d_mov_cgca_1)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_inq_1 r_inq_1lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inquer c_inq_bal)])

rhs(ev(correccao cr_inq_bal) 100)

)

rule(r_inq_2 r_inq_2lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inqsal c_sim)])

108

rhs(ev(correccao cr_inq_dia) 100)

)

rule(r_map_1 r_map_1lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_cal)])

rhs(ev(dominio d_map_cal) 100)

)

rule(r_map_2 r_map_2lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_imp)])

rhs(ev(dominio d_map_imp) 100)

)

rule(r_map_3 r_map_3lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_mic)])

rhs(ev(dominio d_map_mic) 100)

)

rule(r_map_11 r_map_11lhs([ev(dominio d_map_cal) ev(qs_mapcol0 c_sim)])

rhs(ev(correccao cr_map_cal_col0) 100)

)

rule(r_map_12 r_map_12lhs([ev(dominio d_map_cal) ev(qs_mapfunc c_sim)])

rhs(ev(correccao cr_map_cal_func) 100)

)

rule(r_map_13 r_map_13lhs([ev(dominio d_map_cal)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_21 r_map_21lhs([ev(dominio d_map_imp) ev(qs_maplin0 c_nao)])

rhs(ev(correccao cr_map_imp_lin0) 100)

)

rule(r_map_22 r_map_22lhs([ev(dominio d_map_imp) ev(qs_maplin9 c_nao)])

rhs(ev(correccao cr_map_imp_lin9) 100)

)

rule(r_map_23 r_map_23lhs([ev(dominio d_map_imp) ev(qs_map2alg c_nao)])

rhs(ev(correccao cr_map_imp_2alg) 100)

)

rule(r_map_24 r_map_24lhs([ev(dominio d_map_imp) ev(qs_map198 c_nao)])

rhs(ev(correccao cr_map_imp_198) 100)

)

rule(r_map_25 r_map_25lhs([ev(dominio d_map_imp)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_31 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapsys c_nao)])

rhs(ev(correccao cr_map_sys) 100)

)

rule(r_map_32 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapuser c_nao)])

rhs(ev(correccao cr_map_user) 100)

)

rule(r_map_33 r_map_33lhs([ev(dominio d_map_mic) ev(qs_mapflr c_nao)])

rhs(ev(correccao cr_map_mic_flr) 100)

)

rule(r_map_34 r_map_34lhs([ev(dominio d_map_mic)])

rhs(ev(correccao cr_map_soft) 100)

)

top_goal(correccao)

109

  • Lista de Figuras
  • Lista de Tabelas
  • Lista de Coacutedigo
  • Lista de Algoritmos
  • Lista de Acroacutenimos
  • Introduccedilatildeo
    • Enquadramento
    • Objectivos
    • Planeamento
    • Estruturaccedilatildeo da dissertaccedilatildeo
      • Estado da arte
        • Sistemas periciais
          • Arquitectura
          • Base de conhecimento
            • Regras
            • Frames
            • Redes semacircnticas
            • Mecanismos de inferecircncia
            • Manutenccedilatildeo de uma base de conhecimento
              • Raciociacutenio sobre incerteza
                • Factores de certeza
                  • Vantagens e desvantagens
                    • GISPSA - GIS Problem Solver Advisor
                      • Arquitectura
                      • Funcionamento
                      • Limitaccedilotildees
                        • Web Expert Systems
                          • Casos de estudo
                            • LOMA - Landfill Operation Management Advisor
                            • MDSS - Medical Diagnosis Support System
                            • Whale watcher
                              • Ferramentas utilizadas
                                • Ambiente de desenvolvimento
                                • Motor de inferecircncia
                                  • Fase I - Recolha de candidatos
                                  • Fase II - Requisitos base
                                  • Fase III - Viabilidade econoacutemica
                                  • Fase IV - Viabilidade teacutecnica
                                  • Fase V - Prova de conceito
                                  • Conclusatildeo e fundamentaccedilatildeo da escolha
                                      • Wexsys
                                        • Arquitectura global
                                          • Moacutedulo pWexsysEAR
                                          • Moacutedulo WexsysEAR
                                          • Interligaccedilatildeo e integraccedilatildeo dos moacutedulos
                                            • Camada de acesso puacuteblico
                                            • Camada de acesso protegido
                                            • Camada de acesso privado
                                            • Fluxo de invocaccedilatildeo
                                              • Portal
                                                • Templates
                                                  • Suporte multi-liacutengua
                                                    • Motor de inferecircncia
                                                      • Multi-utilizador
                                                      • Base de conhecimento inicial
                                                      • Protoacutetipo do motor de inferecircncia
                                                        • Formato das regras
                                                        • Formato das questotildees
                                                        • Interacccedilatildeo assiacutencrona de questotildees e respostas
                                                        • Estrutura da base de conhecimento
                                                        • Algoritmos a utilizar
                                                          • Resultado final
                                                            • Arranque da execuccedilatildeo
                                                            • Mecanismo de respostas
                                                            • Conclusatildeo final encontrada
                                                            • Explicaccedilotildees
                                                                • Base de conhecimento
                                                                  • Leitura da base de conhecimento
                                                                  • Conclusatildeo final a encontrar
                                                                  • Factos iniciais
                                                                  • Regras
                                                                    • CriarAlterar uma regra
                                                                    • Questotildees
                                                                    • Verificaccedilatildeo
                                                                      • Gravaccedilatildeo da base de conhecimento
                                                                      • Conversatildeo GISPSA
                                                                        • Anaacutelise graacutefica
                                                                          • Implementaccedilatildeo
                                                                          • Funcionamento
                                                                          • Limitaccedilotildees
                                                                              • Conclusotildees
                                                                                • Contributos da soluccedilatildeo desenvolvida
                                                                                • Limitaccedilotildees e trabalho futuro
                                                                                  • Bibliografia
                                                                                  • Anexos
                                                                                  • Coacutedigo do motor de inferecircncia
                                                                                  • Base de conhecimento do protoacutetipo
                                                                                  • Base de conhecimento GISPSA
Page 5: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System

Abstract

From the begining that the expert systems were not treated solely as systems intendedto replace experts Experts in turn regardless of their operating area were seen asindividuals that achieved excellence through experience study and total dedicationsometimes over many years

Today more than just assuming the part of an expert in a given area expert systemsstand for their continuous availability easy access reduced costs operating stability andconsistency of reasoning Pushed by todays advances in networks regarding speed andglobal spread these systems are now available in a more simple and accessible way

This work is carried out in order to evolve the current system to a more appealingfunctional and reliable One of the objectives is the evolution of the current mode ofoperation local and single user to a mode globally accessible regardless the time or theplace where its intervention is necessary

Keywords GISPSA expert system knowledge base maintenance knowledge basegraphical analysis

ix

Conteuacutedo

Lista de Figuras xv

Lista de Tabelas xvii

Lista de Coacutedigo xix

Lista de Algoritmos xxi

Lista de Acroacutenimos xxiii

1 Introduccedilatildeo 111 Enquadramento 2

12 Objectivos 2

13 Planeamento 3

14 Estruturaccedilatildeo da dissertaccedilatildeo 3

2 Estado da arte 521 Sistemas periciais 5

211 Arquitectura 7

212 Base de conhecimento 9

2121 Regras 10

2122 Frames 12

2123 Redes semacircnticas 13

2124 Mecanismos de inferecircncia 14

2125 Manutenccedilatildeo de uma base de conhecimento 15

213 Raciociacutenio sobre incerteza 16

2131 Factores de certeza 16

214 Vantagens e desvantagens 17

22 GISPSA - GIS Problem Solver Advisor 20

221 Arquitectura 20

222 Funcionamento 21

223 Limitaccedilotildees 22

23 Web Expert Systems 23

231 Casos de estudo 25

2311 LOMA - Landfill Operation Management Advisor 26

xi

2312 MDSS - Medical Diagnosis Support System 30

2313 Whale watcher 31

3 Ferramentas utilizadas 3331 Ambiente de desenvolvimento 33

32 Motor de inferecircncia 35

321 Fase I - Recolha de candidatos 35

322 Fase II - Requisitos base 37

323 Fase III - Viabilidade econoacutemica 38

324 Fase IV - Viabilidade teacutecnica 38

325 Fase V - Prova de conceito 39

326 Conclusatildeo e fundamentaccedilatildeo da escolha 40

4 Wexsys 4341 Arquitectura global 43

411 Moacutedulo pWexsysEAR 44

412 Moacutedulo WexsysEAR 45

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos 46

4131 Camada de acesso puacuteblico 46

4132 Camada de acesso protegido 48

4133 Camada de acesso privado 48

4134 Fluxo de invocaccedilatildeo 49

414 Portal 50

4141 Templates 51

415 Suporte multi-liacutengua 53

42 Motor de inferecircncia 54

421 Multi-utilizador 54

422 Base de conhecimento inicial 55

423 Protoacutetipo do motor de inferecircncia 56

4231 Formato das regras 56

4232 Formato das questotildees 57

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas 57

4234 Estrutura da base de conhecimento 58

4235 Algoritmos a utilizar 60

424 Resultado final 62

4241 Arranque da execuccedilatildeo 62

xii

4242 Mecanismo de respostas 654243 Conclusatildeo final encontrada 674244 Explicaccedilotildees 67

43 Base de conhecimento 71431 Leitura da base de conhecimento 72432 Conclusatildeo final a encontrar 73433 Factos iniciais 74434 Regras 74

4341 CriarAlterar uma regra 744342 Questotildees 764343 Verificaccedilatildeo 77

435 Gravaccedilatildeo da base de conhecimento 77436 Conversatildeo GISPSA 78

44 Anaacutelise graacutefica 79441 Implementaccedilatildeo 79442 Funcionamento 79443 Limitaccedilotildees 82

5 Conclusotildees 8351 Contributos da soluccedilatildeo desenvolvida 8452 Limitaccedilotildees e trabalho futuro 87

Bibliografia 92

Anexos 93

A Coacutedigo do motor de inferecircncia 95

B Base de conhecimento do protoacutetipo 103

C Base de conhecimento GISPSA 105

xiii

Lista de Figuras

1 Arquitectura de um sistema pericial 82 GISPSA menu inicial 213 GISPSA interacccedilatildeo inicial 224 GISPSA exemplo de interacccedilatildeo pergunta-resposta 225 Arquitectura do LOMA 276 Paacutegina inicial do sistema pericial LOMA 287 Sub-moacutedulo extra 288 Sugestatildeo de problemas do sub-moacutedulo extra 299 Sub-moacutedulo especializado 2910 Paacutegina principal do sistema pericial Whale Watcher 3111 Paacutegina final do sistema pericial Whale Watcher 31

12 Arquitectura da soluccedilatildeo 4413 Arquitectura do moacutedulo visual 4414 Arquitectura do moacutedulo de negoacutecio 4515 Wexsys - Integraccedilatildeo dos componentes 4616 Diagrama de classes principais 4917 Diagrama de sequecircncia do fluxo de invocaccedilatildeo 5018 Wexsys - Paacutegina inicial 5119 Paacutegina inicial do motor de inferecircncia 6220 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia 6321 Fluxo de invocaccedilatildeo de resposta a uma questatildeo 6622 Conclusatildeo da inferecircncia 6723 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo 6824 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia 6925 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final 6926 Paacutegina inicial da gestatildeo da base de conhecimento 7227 Processo de carregamento das regras 7328 Introduzir uma nova regra 7529 Apresentaccedilatildeo de valores configurados na questatildeo 7630 Formulaacuterio de introduccedilatildeo de uma questatildeo 7631 Verificaccedilatildeo da base de conhecimento 7732 Processo de gravaccedilatildeo da base de conhecimento 7833 Paacutegina inicial da anaacutelise graacutefica 80

xv

34 Exemplo de grafo totalmente expandido 8135 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto 82

xvi

Lista de Tabelas

1 Listagem de produtos da Fase I 362 Listagem de produtos excluiacutedos na Fase II 383 Listagem de produtos excluiacutedos na Fase III 384 Listagem de produtos excluiacutedos na Fase IV 395 JClips - Vantagens e desvantagens 396 Prova - Vantagens e desvantagens 407 YProlog - Vantagens e desvantagens 40

xvii

Lista de Coacutedigo

1 Excerto da classe RuleView 472 Excerto da classe Rule 473 Coacutedigo do template principal do portal 514 Coacutedigo da paacutegina inicial do portal 535 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo 546 Representaccedilatildeo da base de conhecimento do protoacutetipo 587 Predicados principais do motor de inferecircncia 638 Predicados principais do sistema de explicaccedilotildees 70

xix

Lista de Algoritmos

1 Algoritmo principal do motor de inferecircncia 602 Verifica se uma premissa eacute verdadeira 613 Dispara as regras que possam ser disparadas 614 Algoritmo responsaacutevel pelo desenho da applet 805 Algoritmo para construccedilatildeo dos dados do grafo 81

xxi

Lista de Acroacutenimos

AI Artificial Intelligence ou Inteligecircncia Artificial

BRMS Business Rule Management System

CF Certainty Factors ou Factores de Certeza

CLIPS C Language Integrated Production System

DTO Data Transfer Object

ES Expert System

GIS Gestatildeo Integrada de Seguros

GISPSA GIS Problem Solver Advisor

IDE Integrated Development Environment

JEOPS Java Embedded Object Production System

JSF JavaServer Faces

LHS Left-Handed Side

LOMA Landfill Operation Management Advisor

MDSS Medical Diagnosis Support System

ODBC Open Data Base Connectivity

OO Object Oriented

RHS Right-Handed Side

SP Sistema Pericial

SDK Software Development Kit

xxiii

1Introduccedilatildeo

Este trabalho eacute desenvolvido no acircmbito do Mestrado em Engenharia Informaacutetica ramode Tecnologias do Conhecimento e Decisatildeo e teve a sua origem a partir de um sistemadoravante designado por sistema base desenvolvido por Pinto Este sistema base foidesenvolvido durante a realizaccedilatildeo de um trabalho acadeacutemico (Pinto (1998)) cujo principalobjectivo era a construccedilatildeo de um sistema pericial

Na altura da sua criaccedilatildeo o sistema base apenas estava preparado para uma utilizaccedilatildeodo tipo mono-posto Ficava assim estabelecida a condiccedilatildeo de apenas um utilizador decada vez ter acesso ao sistema base Natildeo era exigiacutevel nem sequer necessaacuterio que outrocenaacuterio fosse equacionado dado tratar-se de um trabalho acadeacutemico O sistema ficoudesta forma limitado

Assim somos remetidos a um dos objectivos iniciais que levaram ao desenvolvimentodo trabalho que agora aqui se apresenta Proceder agrave evoluccedilatildeo do sistema base garantindoque o mesmo possa ser acedido por muacuteltiplos utilizadores de forma simultacircnea e a suadisponibilizaccedilatildeo num ambiente de acesso global mediante a utilizaccedilatildeo de redes sendoque a preferecircncia recai sobre a rede mais global que existe a internet Referindo-nos aeste tipo de disponibilizaccedilatildeo com todas as vantagens que lhe estatildeo afectas o proacuteximopasso loacutegico seria a integraccedilatildeo do novo sistema num portal

Eacute tambeacutem um objectivo inicial proceder agrave alteraccedilatildeo da actual forma de manutenccedilatildeo doconhecimento Pretende-se desenvolver um mecanismo de manutenccedilatildeo de conhecimentoque simplifique a interacccedilatildeo com o utilizador

Por uacuteltimo os objectivos deste trabalho passam igualmente pelo melhoramento dosistema base tentando eliminar alguns erros que foram detectados ao longo do tempo eacrescentando algumas caracteriacutesticas que entretanto surgiram e que foram consideradasnecessaacuterias

1

CAPIacuteTULO 1 INTRODUCcedilAtildeO

11 Enquadramento

O sistema a desenvolver embora tenha como ponto de partida um sistema base criado parautilizaccedilatildeo mono-posto faraacute parte de um portal onde seraacute integrado como uma ferramentade apoio na resoluccedilatildeo de problemas operacionais

Para aleacutem de actualmente fazer muito mais sentido a disponibilizaccedilatildeo do sistemanum ambiente de acesso globalizado e com a possibilidade de vaacuterios utilizadores emsimultacircneo a grande vantagem reside no facto de poder utilizar a mesma base de conhe-cimento que alimenta o sistema pericial independentemente do local onde se realizem osacessos Fica assim garantida a uniformidade a fiabilidade e a estabilidade do sistema

Por uacuteltimo a globalizaccedilatildeo do sistema garante igualmente que sempre que este eacuteutilizado natildeo para consulta ou apoio na resoluccedilatildeo de problemas mas para acrescentarnovos factos e dados agrave base de conhecimento estes estejam imediatamente disponiacuteveispara novas consultas ou para resoluccedilotildees de problemas de forma mais eficaz

12 Objectivos

O objectivo principal deste trabalho passa pela integraccedilatildeo do GIS Problem SolverAdvisor (GISPSA) (sistema base) num portal Aleacutem deste outros objectivos podemser considerados como de eventual ou relevante importacircncia podendo ser caracterizadosda seguinte forma

bull Objectivos globais

ndash Desenvolvimento de um sistema pericial rArr Pretende-se desenvolver umcandidato agrave substituiccedilatildeo do GISPSA

ndash Manutenccedilatildeo da base de conhecimento rArr Gerir a base de conhecimentorelativamente agrave inserccedilatildeo e actualizaccedilatildeo de regras de conhecimento bem comoimplementaccedilatildeo de mecanismos de verificaccedilatildeo das regras

bull Objectivos especiacuteficos

ndash Adaptar o motor de inferecircncia existente ou desenvolver novorArr Desenvolvi-mento de um motor de inferecircncia que se enquadre com os objectivos definidos

ndash Alterar o mecanismo de interacccedilatildeo do utilizador com a base de conheci-mentorArr Facilitar a manipulaccedilatildeo da base de conhecimento de forma a evitarproblemas na alteraccedilatildeo da base de conhecimento

2

13 PLANEAMENTO

ndash Verificar e detectar inconsistecircncias na base de conhecimentorArr Implementarmecanismos de verificaccedilatildeo das regras existentes para minimizar problemas

13 Planeamento

O planeamento deste trabalho foi estruturado em quatro fases A composiccedilatildeo dessas faseseacute a seguinte

1 Requisitos

bull Levantamento de requisitos

bull Estado da arte

bull Ferramentas existentes

2 Protoacutetipo

bull Protoacutetipo do motor de inferecircncia

bull Implementaccedilatildeo do gestor da base de conhecimento

3 Verificaccedilatildeo

bull Implementaccedilatildeo de meacutetodos de verificaccedilatildeo e detecccedilatildeo de inconsistecircncias

4 Elaboraccedilatildeo da dissertaccedilatildeo

bull Redacccedilatildeo final da dissertaccedilatildeo

14 Estruturaccedilatildeo da dissertaccedilatildeo

Nesta secccedilatildeo eacute apresentada a estrutura da dissertaccedilatildeo composta por cinco capiacutetulosNo primeiro capiacutetulo ldquoIntroduccedilatildeordquo eacute apresentado o problema actual quais os objec-

tivos a alcanccedilar e qual o planeamento para a prossecuccedilatildeo desses objectivosNo segundo capiacutetulo ldquoEstado da Arterdquo eacute apresentado a soluccedilatildeo GISPSA e tambeacutem o

estado da arte na aacuterea dos sistemas periciaisNo terceiro capiacutetulo ldquoFerramentas utilizadasrdquo eacute apresentado o estudo efectuado sobre

as ferramentas utilizadas e quais as conclusotildees do mesmoNo quarto capiacutetulo ldquoWexsysrdquo eacute descrita a soluccedilatildeo proposta e implementadaNo quinto e uacuteltimo capiacutetulo ldquoConclusotildeesrdquo satildeo apresentadas as conclusotildees finais bem

como os objectivos alcanccedilados e as actuais limitaccedilotildees

3

2Estado da arte

Num estado da arte pretende-se essencialmente fazer o enquadramento do estaacutegio deevoluccedilatildeo e eventuais casos de estudo relacionados com as tecnologias sistemas oupropostas que satildeo utilizadas ou apresentadas ao longo de um trabalho

Para o nosso caso em concreto vamos focalizar esse enquadramento sobre os sistemaspericiais no seu sentido mais abstracto e ainda sobre o sistema base jaacute indicado oGISPSA Apesar de o sistema base ser por si soacute um sistema pericial e como tal poderser apresentado como um caso de estudo inserido nos sistemas periciais generalizados ofacto de servir como ponto de partida para este trabalho em concreto confere-lhe umaimportacircncia muito superior sendo quase obrigatoacuteria a reserva de uma secccedilatildeo proacutepria parao mesmo

21 Sistemas periciais

Os sistemas periciais pertencem a um dos ramos da Artificial Intelligence ou InteligecircnciaArtificial (AI) e surgiram a partir da necessidade que alguns investigadores sentiram emcriar um software que demonstrasse raciociacutenio e comportamento inteligente durante aresoluccedilatildeo de problemas

Um Sistema Pericial (SP) tambeacutem conhecido como Expert System (ES) caracteriza-se como sendo um programa que permite a consulta e utilizaccedilatildeo de conhecimento extraiacutedode um ou mais peritos em determinada aacuterea Esse conhecimento estaacute normalmenteguardado naquilo que eacute mais habitualmente designado por base de conhecimento e agrave qualo programa tem o devido acesso

Na criaccedilatildeo de um SP o ideal seraacute sempre consultar os melhores peritos dentro daaacuterea pretendida e ainda que estes estejam disponiacuteveis para partilhar e disponibilizar oseu conhecimento Tal seria efectivamente a situaccedilatildeo ideal mas que nem sempre se

5

CAPIacuteTULO 2 ESTADO DA ARTE

aproxima da realidade Aliaacutes o verdadeiro sucesso de um sistema pericial reside naqualidade da sua base de conhecimento

Antes de mais devemos considerar que algueacutem que eacute perito em algo certamente oseraacute por uma seacuterie de factores conjugados Experiecircncia adquirida ao longo de vaacuteriosanos formaccedilatildeo especiacutefica dedicaccedilatildeo e estudo profundo seratildeo alguns desses factoresSempre que um indiviacuteduo se encontra numa posiccedilatildeo de excelecircncia em que eacute consideradoum verdadeiro perito encontra-se tambeacutem numa posiccedilatildeo em que lhe eacute bastante difiacutecilencontrar o tempo necessaacuterio para se submeter a uma extracccedilatildeo do conhecimento quedeteacutem Se a isto juntar-mos o facto do objectivo pelo qual se procede agrave extracccedilatildeo deconhecimento eacute a criaccedilatildeo de um programa que seraacute equiparado ao proacuteprio perito emtermos de conhecimento certamente que haveraacute algum desconforto

Aqui surgem as primeiras duacutevidas Seraacute que o sistema pericial tomaraacute o lugar deum ou mais peritos Apesar desta e de outras preocupaccedilotildees os peritos normalmentecontribuem de forma positiva para o enriquecimento de um sistema pericial tornando-odesta forma num sistema com maior qualidade e do qual eles proacuteprios poderatildeo usufruirjaacute que quando eacute possiacutevel agregar o conhecimento de muacuteltiplas pessoas obteacutem-se umconhecimento global superior ao individual

Para aleacutem disto o sistema pericial tende a proceder a um raciociacutenio mais linear loacutegicoe coerente quando comparado com um ser humano que poderaacute deixar que factores comopor exemplo o cansaccedilo ou os sentimentos o influenciem

Merritt define um sistema pericial como sendo um programa que utiliza conhecimentoe meacutetodos de inferecircncia para resolver problemas que satildeo suficientemente complexos pararequerer um especialista para a sua resoluccedilatildeo

ldquo an intelligent computer program that uses knowledge and inference procedures to

solve problems that are difficult enough to require significant human expertise for their

solutionsrdquo Merritt (1989)

A definiccedilatildeo de Giarratano et al eacute mais relacionada com o tipo de problemas tratadospor um sistema pericial

ldquo computer application wich embody some non-algorithmic expertise for solving certain

types of problemsrdquo Giarratano et al (1998)

Esta definiccedilatildeo enquadra de uma forma global as definiccedilotildees reconhecidas aos siste-mas periciais ldquoum sistema pericial pretende emular um perito na identificaccedilatildeo de umdeterminado problema cuja resoluccedilatildeo envolva conhecimento natildeo algoriacutetmicordquo

Existe uma clara separaccedilatildeo entre conhecimento e raciociacutenio o conhecimento eacute obtidocomo jaacute foi referido recorrendo a um ou mais peritos na aacuterea Os dados obtidos satildeo depois

6

21 SISTEMAS PERICIAIS

codificados atraveacutes de um determinado esquema de representaccedilatildeo No passo seguinteeacute adicionada a capacidade de raciociacutenio ao sistema pericial recorrendo a estrateacutegiasheuriacutesticas na tentativa de fornecer um resultado semelhante ao que um perito forneceriae aqui uma vez mais o papel do perito eacute fundamental para o sucesso do sistema pericial

Para aleacutem de contribuir com o conhecimento o perito deveraacute igualmente contribuircom o raciociacutenio utilizado para o manuseamento desse mesmo conhecimento Isto porquea resoluccedilatildeo de um problema poderaacute em determinadas situaccedilotildees necessitar de pequenosajustes que fogem agrave linearidade de um processamento computacional mas que podemperfeitamente ser simuladas e recriadas na construccedilatildeo do raciociacutenio do programa

Eacute necessaacuterio compreender que um perito para aleacutem de ser algueacutem que eacute consideradoum especialista na sua aacuterea eacute habitualmente algueacutem com pouco ou nenhum tempodisponiacutevel o que dificulta bastante a realizaccedilatildeo da recolha do conhecimento O seutempo eacute dispendioso e tem por norma poucos espaccedilos de manobra devido agraves muitassolicitaccedilotildees que lhe satildeo dirigidas Aqui impera o factor de resistecircncia ora porque o peritonatildeo acredita que o sistema seja tatildeo eficaz como ele ora porque existe o receio de sersubstituiacutedo ou passar a ter menos solicitaccedilotildees Quanto maior a colaboraccedilatildeo do ou dosperitos envolvidos na criaccedilatildeo de um qualquer sistema pericial melhor e mais eficaz seraacuteesse sistema pericial

211 Arquitectura

As duas grandes componentes do sistema pericial e que permitem a separaccedilatildeo referidaentre conhecimento e raciociacutenio satildeo a base de conhecimento (depende do domiacutenio ou daaacuterea abrangida) e o bloco de raciociacutenio (natildeo depende do domiacutenio) Este uacuteltimo eacute aindadividido em trecircs partes distintas o motor de inferecircncia o sistema de explicaccedilotildees e ainterface com o utilizador

Um sistema pericial deve ser estruturado de forma a que possa ser actualizado facil-mente sem que seja necessaacuteria qualquer alteraccedilatildeo ao niacutevel funcional do programa

7

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 1 Arquitectura de um sistema pericial

A figura 1 mostra a composiccedilatildeo de um sistema pericial e que mais detalhadamente eacutea seguinte

bull Interface com o utilizador

um sistema pericial deveraacute permitir a interacccedilatildeo com o utilizador Nos casosmais habituais os utilizadores que usufruem dos benefiacutecios destes sistemas natildeosatildeo peritos da aacuterea e pretendem aconselhamento ou ajuda na resoluccedilatildeo de umproblema Noutros casos o utilizador poderaacute ser um perito da aacuterea que apenaspretende testar o sistema pericial ou confrontar as conclusotildees deste com as suasproacuteprias conclusotildees para perceber se sendo diferentes qual o motivo para queisso aconteccedila Isto poderaacute permitir que um perito aprofunde ou corrija o seuproacuteprio conhecimento ou que por outro lado se procedam a correcccedilotildees agrave base deconhecimento do sistema pericial mediante se trate de erro por parte de um ou deoutro

De qualquer forma a interface com o utilizador deveraacute permitir a interacccedilatildeo entreo sistema pericial e o utilizador (qualquer que este seja) para que o utilizadorresponda agraves questotildees que lhe satildeo colocadas e peccedila explicaccedilotildees para os passos econclusotildees que percorre e descobre ao longo da utilizaccedilatildeo do programa

bull Base de conhecimento

o conhecimento extraiacutedo de um ou mais peritos eacute armazenado e mantido aquiDurante a execuccedilatildeo do programa o sistema pericial acede a esta base para consultaros dados disponiacuteveis Eacute sempre possiacutevel em qualquer altura retirar acrescentarou corrigir factos na base de conhecimento Isto contribui para uma evoluccedilatildeo damesma no sentido de melhorar sempre o funcionamento do proacuteprio sistema pericial

8

21 SISTEMAS PERICIAIS

bull Motor de inferecircncia

este bloco eacute o grande responsaacutevel por interpretar o conhecimento e colocarde uma forma estruturada questotildees ao utilizador O raciociacutenio extraiacutedo do ou dosperitos eacute aqui consultado para que mediante as questotildees que satildeo colocadas aoutilizador e as consultas que satildeo efectuadas agrave base de conhecimento este motor deinferecircncia determine qual a proacutexima questatildeo a colocar qual a proacutexima consulta arealizar ou qual a conclusatildeo a apresentar

bull Sistema de explicaccedilotildees

sempre que o utilizador pretende que lhe seja dada uma explicaccedilatildeo para aquestatildeo que estaacute a ser colocada ou para a conclusatildeo que foi determinada este blocoseraacute o responsaacutevel por dar essa mesma explicaccedilatildeo

Esta divisatildeo permite que os moacutedulos funcionais do programa possam ser isoladoscomo podemos observar na figura 1 de forma a facilitar futuras correcccedilotildees e actualizaccedilotildeesda base de conhecimento contribuindo positivamente para a evoluccedilatildeo da mesma eevitando assim que o sistema pericial fique obsoleto

212 Base de conhecimento

Uma base de conhecimento eacute um conjunto de informaccedilatildeo representada de forma a quepossa ser processada pelo motor de inferecircncia Existem vaacuterias formas de representa-ccedilatildeo de conhecimento no entanto as mais conhecidas satildeo a representaccedilatildeo por regrasrepresentaccedilatildeo por ldquoframesrdquo e ainda as redes semacircnticas

Ao representar conhecimento um dos factores determinantes para o meacutetodo necessaacute-rio a essa representaccedilatildeo eacute o domiacutenio do problema ou aacuterea a modelar A tiacutetulo de exemplose um problema segue um padratildeo ou algum tipo de linearidade na busca da soluccedilatildeonecessaacuteria ou ainda se a soluccedilatildeo puder ser obtida atraveacutes de questotildees cujas respostassatildeo maioritariamente simples (sim natildeo valores numeacutericos etc) a representaccedilatildeo doconhecimento eacute feita utilizando os meacutetodos de regras ou ldquoframesrdquo

Como jaacute foi referido o papel de um perito natildeo estaacute limitado apenas agrave contribuiccedilatildeocom o conhecimento para a base necessaacuteria Este exerce um outro papel igualmenteimportante que tem a ver mais com o aspecto de raciociacutenio Desta forma ao consultar abase de conhecimento satildeo tomadas algumas decisotildees tais como verificaccedilatildeo de eventuaissoluccedilotildees jaacute possiacuteveis em pontos intermeacutedios ou qual a proacutexima questatildeo a colocar Estemeacutetodo de interacccedilatildeo com a base de conhecimento poderaacute eventualmente entrar em

9

CAPIacuteTULO 2 ESTADO DA ARTE

conflito com a independecircncia de domiacutenio que foi referida na arquitectura de um sistemapericial No entanto este aspecto fundamental da criaccedilatildeo de um sistema pericial contribuilargamente para o bom funcionamento do mesmo

Para aleacutem disto a base de conhecimento deveraacute sempre contemplar as funcionalidadesnecessaacuterias que permitam ao utilizador em qualquer altura proceder agrave adiccedilatildeo de novosfactos agrave correcccedilatildeo dos jaacute existentes ou ainda agrave eliminaccedilatildeo dos mesmos Isto permitemanter uma base de conhecimento sempre actualizada fiaacutevel e consistente Estas razotildeescontribuem para a resoluccedilatildeo cada vez mais eficaz dos problemas que satildeo colocadosPara novos problemas que surgem poderatildeo ser necessaacuterias novas soluccedilotildees ou novosmeacutetodos para as encontrar Para problemas jaacute conhecidos poderatildeo ser encontradas novasformas ou novas soluccedilotildees de os resolver eventualmente consideradas mais eficazes ou deimplementaccedilatildeo mais simples

Por tudo isto considera-se que a base de conhecimento apesar de natildeo ser o verdadeiromotor de um sistema pericial poderaacute ser encarada como o verdadeiro combustiacutevelque o move e sem o qual natildeo seria possiacutevel qualquer tipo de evoluccedilatildeo pelo que a natildeocontribuiccedilatildeo para o seu melhoramento estagna o proacuteprio sistema provocando mais cedoou mais tarde o abandono do mesmo por parte dos utilizadores que entretanto podemperder a confianccedila que lhe depositaram

Os meacutetodos de representaccedilatildeo de conhecimento podem ser seleccionados de acordocom as caracteriacutesticas que lhes estatildeo inerentes e que se descrevem de seguida

2121 Regras

Uma das teacutecnicas de representaccedilatildeo de conhecimento mais utilizadas eacute a representaccedilatildeopor regras Estas satildeo utilizadas para representar heuriacutesticas e caracterizam-se por umconjunto de premissas que desencadeiam ou conduzem a uma soluccedilatildeo

As regras tecircm o formato ltidentificaccedilatildeogt Se ltLeft-Handed Side (LHS)gt EntatildeoltRight-Handed Side (RHS)gt

Onde

ltidentificaccedilatildeogt - identificaccedilatildeo da regra

ltLHSgt ndash ldquoLeft-Handed Siderdquo define as premissas que teratildeo que ser satisfeitas deforma a que a regra possa ser disparada

ltRHSgt ndash ldquoRight-Handed Siderdquo define as acccedilotildees ou conclusotildees que seratildeo verificadascom o disparo da regra

As premissas satildeo definidas recorrendo a factos que podem ser previamente conhecidosou inferidos a partir de outras regras A utilizaccedilatildeo de regras promove uma separaccedilatildeo

10

21 SISTEMAS PERICIAIS

entre a parte loacutegica e a funcional isto eacute permite-nos uma abstracccedilatildeo de implementaccedilatildeofocando-se na loacutegica

Vantagens

bull expressividade - as regras satildeo normalmente representadas de uma forma naturalque pode mesmo chegar a ser declarativa Eacute perfeitamente normal uma regra estarescrita num vocabulaacuterio que pode ser lido e compreendido por algueacutem que natildeo sejao programador o perito ou algueacutem com formaccedilatildeo na aacuterea em questatildeo

bull modularidade - as regras satildeo independentes entre si o que possibilita uma maisfaacutecil manutenccedilatildeo da base de conhecimento Isto permite e facilita a remoccedilatildeo deregras a adiccedilatildeo de outras ou a alteraccedilatildeo das jaacute existentes

bull separaccedilatildeo loacutegica - as regras satildeo independentes do motor de inferecircncia e estenatildeo carece de alteraccedilotildees ou actualizaccedilotildees quando as regras satildeo modificadas Ofuncionamento do sistema natildeo eacute alterado quando as regras o satildeo apenas as soluccedilotildeesque o sistema obteacutem eacute que poderatildeo ser diferentes (normalmente para melhor)

bull gramaacutetica riacutegida - as regras obedecem a estruturas que estatildeo perfeitamente defi-nidas agrave partida Isto implica que as mesmas possam ser validadas ou ateacute mesmoconstruiacutedas recorrendo a outros sistemas

bull execuccedilatildeo loacutegica - eacute sempre possiacutevel em qualquer altura do funcionamento dosistema pericial solicitar o desencadeamento ou disparo de uma sucessatildeo deregras A isto chama-se uma explosatildeo combinatoacuteria das regras e permite quesejam contemplados vaacuterios cenaacuterios possiacuteveis utilizando apenas uma execuccedilatildeoEsta execuccedilatildeo loacutegica tem sempre o mesmo resultado desde que se mantenham osparacircmetros iniciais

bull sistema de explicaccedilotildees - ao proceder a disparos de regras eacute possiacutevel dar indicaccedilatildeode qual a loacutegica utilizada para disparar uma determinada regra Isto permite de umaforma didaacutectica e simples justificar a razatildeo dos disparos auxiliando o utilizador nacompreensatildeo da evoluccedilatildeo que o sistema segue para atingir determinada soluccedilatildeo

Desvantagens

bull explicaccedilotildees - se um utilizador natildeo conhecer as regras ou natildeo as aceitar o sistemade explicaccedilotildees natildeo seraacute uma mais valia Poderaacute ateacute eventualmente tornar-se emalgo que confunde mais do que aquilo que auxilia

11

CAPIacuteTULO 2 ESTADO DA ARTE

bull gramaacutetica riacutegida - apesar de o meacutetodo de utilizaccedilatildeo de estruturas poder ser con-siderado importante porque estabelece um padratildeo a ser seguido pode conduzir aproblemas de expressividade quando utilizado em domiacutenios complexos

bull inconsistecircncia - um dos maiores problemas que podem surgir num sistema queutiliza a representaccedilatildeo do conhecimento atraveacutes de regras tem a ver com a possibi-lidade da existecircncia de inconsistecircncias e incoerecircncias nas regras Isto reduz-se ouevita-se atraveacutes da utilizaccedilatildeo exaustiva do sistema numa fase de testes em que satildeoequacionados o maior nuacutemero de casos ou cenaacuterios que possam despoletar todas asregras existentes na base de conhecimento

2122 Frames

Uma frame representa um conceito e eacute composta por slots que que natildeo satildeo mais do que adefiniccedilatildeo de um conjunto ltatributo valorgt Um valor pode ser um elemento uacutenico ouuma lista de valores e em termos de dados pode conter um tipo de dados primitivo ouuma referecircncia a outra frame

Esta representaccedilatildeo tem uma ligaccedilatildeo muito forte com o paradigma da programaccedilatildeoorientada a objectos jaacute que a ideia eacute a mesma representar objectos e conceitos do mundoreal utilizando a descriccedilatildeo a composiccedilatildeo e a heranccedila

Como vantagens temos

bull associaccedilatildeo - as frames definem e representam o conhecimento de uma formaassociativa (associaccedilatildeo normal de conceitos)

Desvantagens

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as frames podem representar um espaccedilo que natildeo estaacuterestringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

12

21 SISTEMAS PERICIAIS

2123 Redes semacircnticas

Uma rede semacircntica eacute um modelo formal em que satildeo descritos conceitos e relaccedilotildeesrecorrendo a um grafo dirigido Os conceitos satildeo representados por noacutes as relaccedilotildees porarcos e existe uma heranccedila de conceitos agrave medida que se procede agrave navegaccedilatildeo pelas vaacuteriasrelaccedilotildees

Como vantagens temos

bull exploraccedilatildeo graacutefica - a representaccedilatildeo de conhecimento atraveacutes de redes semacircnticaspermite a um utilizador explorar um domiacutenio graficamente Isto facilita a interacccedilatildeoe utilizaccedilatildeo do sistema

bull facilidade na adiccedilatildeo de clusters relacionados - utilizando o modo graacutefico de repre-sentaccedilatildeo torna-se mais faacutecil adicionar novos clusters em que existam conceitosrelacionados

bull faacutecil assimilaccedilatildeo - os seres humanos relacionam-se bem com ambientes graacuteficose tecircm uma tendecircncia a natildeo soacute aceitaacute-los melhor como tambeacutem a proceder a umautilizaccedilatildeo mais atractiva simples e de raacutepida aprendizagem com um miacutenimo deformaccedilatildeo

Como desvantagens temos

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as redes semacircnticas podem representar um espaccedilo que natildeoestaacute restringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

bull falta de estrutura e formalidade - natildeo existe uma semacircntica formal para a represen-taccedilatildeo simboacutelica das ligaccedilotildees o que deixa demasiado espaccedilo para a criatividade eeventualmente para o surgimento de problemas associados ao facto de poderemexistir muacuteltiplas formas de representaccedilatildeo

13

CAPIacuteTULO 2 ESTADO DA ARTE

2124 Mecanismos de inferecircncia

A base de conhecimento representa o caminho para encontrar uma determinada soluccedilatildeomas o motor de inferecircncia eacute a entidade que efectivamente percorre esse caminho Ummotor de inferecircncia pode utilizar diferentes estrateacutegias de raciociacutenio para a obtenccedilatildeode respostas As mais conhecidas satildeo a estrateacutegia de encadeamento directo e a deencadeamento inverso Contudo eacute possiacutevel combinar as duas no mesmo sistema naquiloque eacute vulgarmente conhecido como uma estrateacutegia de encadeamento misto

Encadeamento directo (Forward Chaining) ndash Um ser humano no seu dia a dia utilizaesta estrateacutegia para processamento de raciociacutenio Consoante assistimos a acontecimentoso ceacuterebro processa-os e analisa-os decidindo o que fazer de seguida De igual modo aestrateacutegia de raciociacutenio por encadeamento directo comeccedila por percorrer os factos baacutesicosque vatildeo originar o disparo de regras o que levaraacute agrave obtenccedilatildeo de conclusotildees intermeacutediasque por sua vez iratildeo originar o disparo de mais regras e assim sucessivamente Oprocesso continua ateacute que se obtenham conclusotildees finais se tal for possiacutevel ou natildeo hajamais lugar agrave possibilidade de disparo de novas regras

Devido agraves suas caracteriacutesticas esta estrateacutegia eacute mais apropriada para planeamentomonitorizaccedilatildeo controlo e interpretaccedilatildeo

Encadeamento inverso (Backward Chaining) ndash No encadeamento inverso o motorde inferecircncia tenta provar as conclusotildees finais que aparecem no lado direito das regras(RHS) Essas conclusotildees finais tambeacutem satildeo designadas como objectivos e eacute normaldizer-se que o motor de inferecircncia com encadeamento inverso eacute orientado aos objectivos(goal driven)

Para provarmos uma dada conclusatildeo teremos que provar as condiccedilotildees que aparecemno lado esquerdo da regra (LHS) que poderatildeo ser suportadas por conclusotildees intermeacutediasde outras regras ou por factos baacutesicos Sendo assim o mecanismo de encadeamentoinverso assume um caraacutecter essencialmente recursivo (para provar uma conclusatildeo vamoster que provar as condiccedilotildees)

Este tipo de estrateacutegia eacute mais apropriada para diagnoacutesticos jaacute que temos uma hipoacuteteseque necessita de ser provada de forma a chegar a uma conclusatildeo

Eacute importante salientar que a forma de representaccedilatildeo das regras eacute independente daestrateacutegia utilizada pelo motor de inferecircncia No entanto eacute possiacutevel melhorar a eficaacuteciado sistema se adaptarmos essa representaccedilatildeo consoante o encadeamento utilizado

14

21 SISTEMAS PERICIAIS

2125 Manutenccedilatildeo de uma base de conhecimento

A manutenccedilatildeo de uma base de conhecimento embora seja considerada vital para asobrevivecircncia do sistema pericial eacute um processo bastante complexo no sentido emque implica cuidados que nem sempre satildeo tidos ou considerados Eacute habitual existiremproblemas de validaccedilatildeo verificaccedilatildeo redundacircncia e contradiccedilotildees

De forma a garantir que a base de conhecimento se mantenha fiaacutevel e bem definidadevem ser desenvolvidos mecanismos que evitem a ocorrecircncia deste tipo de problemas

Redundacircncia - Considera-se aplicaccedilatildeo de redundacircncia a uma base de conhecimentoquando ao inserir uma regra estamos a adicionar conhecimento que jaacute estava contido nabase de conhecimento Podemos observar o seguinte exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X tem_barbatanas entatildeo X nada

regra3 se X nada E X tem_barbatanas entatildeo X eacute_peixe

Neste exemplo eacute possiacutevel verificar que esta base de conhecimento manteacutem-se idecircntica(o conhecimento eacute o mesmo) se removermos a regra3 considerada redundante Esta regranatildeo trouxe nenhum conhecimento novo ao sistema e pode ser descartada

Contradiccedilatildeo - Considera-se regra contraditoacuteria toda a regra que contradiz conheci-mento jaacute existente na base de conhecimento Por exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X nada entatildeo X natildeo_eacute_peixe

A regra2 contradiz claramente a regra1 pelo que eacute considerada contraditoacuteria Um dosgrandes problemas na anaacutelise de duas ou mais regras contraditoacuterias passa por determinarquais as que correspondem ao conhecimento correcto

Verificaccedilatildeo - acccedilatildeo desencadeada ainda na fase de implementaccedilatildeo inicial da base deconhecimento onde se pretende minimizar problemas essencialmente de redundacircncia e decontradiccedilatildeo que possam ser provocados pelo programador Toda a base de conhecimentoeacute verificada e confrontada com as notas apontamentos e indicaccedilotildees a que o programadorteve acesso e que serviram de alicerce para a construccedilatildeo da mesma

Validaccedilatildeo - a acccedilatildeo preventiva de erros iniciais levada a cabo logo apoacutes a implementa-ccedilatildeo da base de conhecimento precede a acccedilatildeo seguinte que consiste em validar a referidabase atraveacutes da intervenccedilatildeo de um perito o qual utiliza vaacuterios cenaacuterios de testes ondetenta obter as respostas ao mesmo tempo que vai consultando as explicaccedilotildees disponiacuteveisao longo do percurso

Apesar de ser habitual proceder a esta validaccedilatildeo com o perito que contribuiu como conhecimento eacute igualmente habitual e ateacute beneacutefico utilizar outros peritos da mesma

15

CAPIacuteTULO 2 ESTADO DA ARTE

aacuterea que para aleacutem de validarem a base de conhecimento em causa poderatildeo inclusiveconfrontar o seu proacuteprio conhecimento com o do perito original procedendo a correcccedilotildeesa eles proacuteprios ou agrave base per si Quanto maior a taxa de intervenccedilatildeo construtiva por partede peritos numa base de conhecimento melhor seraacute a qualidade associada agrave mesma

213 Raciociacutenio sobre incerteza

Raciociacutenio sobre incerteza eacute o nome dado ao processo de formulaccedilatildeo de conhecimentobaseado em fontes de informaccedilatildeo que detenham algum tipo de incerteza na sua especifi-caccedilatildeo

O conhecimento que detemos natildeo se limita a observaccedilotildees loacutegicas do tipo ldquose Obser-vaccedilatildeo_A entatildeo conclusatildeo_Brdquo Em vaacuterias situaccedilotildees necessitamos de lidar com informaccedilatildeoincompleta incorrecta ou ateacute mesmo ausente

Quando lidamos com conhecimento de peritos num determinado domiacutenio surge aindaoutro tipo de conhecimento este originado atraveacutes da observaccedilatildeo e experiecircncia

Existe entatildeo a necessidade de representaccedilatildeo de conhecimento e respectivo grau decerteza Para este efeito existem algumas teacutecnicas tais como loacutegica Fuzzy teorias deprobabilidades tais como Bayes ou Dempster-Shafer factores de certeza entre outros

Os seguintes autores podem ser consultados para referecircncia das teacutecnicas acima men-cionadas

bull Loacutegica Fuzzy - Drakopoulos (1994)

bull Bayes - Lucas (2001)

bull Dempster-Shafer - Wilson (2000) e Barnett (1991)

De seguida vai ser descrita a teacutecnica dos factores de certeza que foi a teacutecnica adoptadapara o desenvolvimento da soluccedilatildeo

2131 Factores de certeza

A teacutecnica dos Certainty Factors ou Factores de Certeza (CF) eacute um do meacutetodos detratamento de incertezas num sistema pericial A teacutecnica foi desenvolvida por Shortliffeand Buchanan para o projecto MYCIN um sistema pericial de diagnoacutestico e tratamentode meningite e tratamento do sangue Desde entatildeo que esta teacutecnica eacute o padratildeo seguido nodesenvolvimento de sistemas periciais baseados em regras Heckerman (1992)

16

21 SISTEMAS PERICIAIS

De um ponto de vista funcional caracteriza-se pela atribuiccedilatildeo de um nuacutemero o graude certeza a factos e regras Esse grau de certeza eacute uma medida relativa probabiliacutesticaque pode ser positiva ou negativa sendo normalmente usados valores no intervalo de -1 a1

A sua definiccedilatildeo original baseou-se na seguinte foacutermula FC [HE] = MC [HE]minusMD [HE]

O factor de certeza da hipoacutetese H dado uma evidecircncia E eacute dado pela diferenccedila entre

bull a medida de certeza de H dado Erarr MC [HE]

bull a medida de descrenccedila de H dado Erarr MD [HE]

O CF final de uma regra com uma premissa baseada num facto ou noutra regra eacute dadopela foacutermula 21

Quando as premissas estatildeo associadas atraveacutes do operador conjunccedilatildeo eacute aplicada afoacutermula 22

Quando existe mais do que uma regra a suportar uma determinada conclusatildeo o CFfinal eacute o resultado da foacutermula 23

CFf inal =CFpremissatimesCFregra 21

CFf inal = min[CFpremissa1 CFpremissan

]timesCFregra

22

X Y gt 0CF (X Y ) = X +Y (100˘X)100 23a

X ou Y lt 0CF (X Y ) = X +Y(1˘min(X Y)) 23b

X Y lt 0CF (X Y ) =minusCF (minusX minusY ) 23c

214 Vantagens e desvantagens

Apesar de tudo o que foi descrito um sistema pericial natildeo representa de forma alguma aferramenta mais apropriada para resolver todos os problemas com recurso a conhecimentoque de outra forma estaria reservado apenas a peritos das vaacuterias aacutereas Ao utilizarmosum sistema pericial estamos sujeitos a aspectos positivos e negativos cabendo a noacutes opapel de determinar se quando confrontados com um determinado problema a utilizaccedilatildeodeste tipo de ferramenta eacute a mais apropriada

17

CAPIacuteTULO 2 ESTADO DA ARTE

Para observar quais as principais vantagens de um sistema pericial podemos consultaras opiniotildees partilhadas por Giarratano et al (1998) CoAJRA (1997)

bull Elevada disponibilidaderArr um sistema pericial estaacute sempre disponiacutevel em termosde tempo e local pronto a funcionar sob qualquer condiccedilatildeo enquanto que umperito natildeo dispotildee dessa total disponibilidade

bull Baixo risco de utilizaccedilatildeorArr pode ser utilizado em ambientes considerados perigo-sos e hostis para um ser humano

bull Baixo custo rArr o custo de providenciar conhecimento por utilizador eacute bastantereduzido

bull DurabilidaderArr o conhecimento eacute permanente ao contraacuterio de um especialista queestaacute sujeito a ausecircncias

bull Conhecimento de vaacuterios especialistasrArr quando agregado o conhecimento reco-lhido a partir de vaacuterios especialistas poderaacute conduzir a resultados mais adequadose considerados melhores quando confrontados com o conhecimento individual e osresultados que daiacute advecircm

bull Capacidade de explicaccedilatildeorArr um sistema pericial consegue explicar detalhadamenteos passos que levaram agrave resposta dada enquanto que um ser humano pode natildeo tera disponibilidade nem a vontade de explicar todo o processo de raciociacutenio seguido

bull EmotividaderArr um sistema pericial natildeo estaacute sujeito a emoccedilotildees o seu funciona-mento e as respostas que providencia natildeo satildeo influenciadas pelo meio em que estaacuteinserido como por exemplo situaccedilotildees de stress ou situaccedilotildees de perigo iminente (aqueda de um aviatildeo ou uma central nuclear em risco)

bull Natildeo influenciaacutevelrArr acontecimentos mais actuais tecircm o mesmo peso na tomada dedecisatildeo evitando assim o fenoacutemeno de ldquoviciaccedilatildeordquo da base de conhecimento

No entanto um sistema pericial comporta tambeacutem algumas desvantagens das quaisse salientam

bull Emotividade rArr o facto de natildeo ser emotivo tambeacutem pode ser visto como umadesvantagem jaacute que natildeo recorrer a emoccedilotildees pode ser problemaacutetico por exemploem situaccedilotildees que necessitem de senso comum

18

21 SISTEMAS PERICIAIS

bull ManutenccedilatildeorArr se natildeo for devidamente mantido e actualizado um sistema pericialcorre o risco de ldquoenvelhecerrdquo no sentido em que deixa de ser um sistema fiaacutevel aque possamos recorrer e que corre o risco de abandono

bull CriatividaderArr um sistema pericial natildeo tem capacidade de reagir de forma diferentea problemas colocados seguindo sempre uma linha estaacutevel de raciociacutenio

bull Adaptaccedilatildeo sensorial rArr um sistema pericial natildeo consegue reagir a informaccedilatildeosensorial do meio que o rodeia entenda-se sensorial como sentidos humanos taiscomo o cheiro o tacto e a visatildeo

19

CAPIacuteTULO 2 ESTADO DA ARTE

22 GISPSA - GIS Problem Solver Advisor

O Gestatildeo Integrada de Seguros (GIS) eacute um Sistema de Informaccedilatildeo vocacionado para aactividade seguradora residente na plataforma AS400 da IBM Umas das caracteriacutesticasmais interessantes deste sistema acabou por ser tambeacutem um dos grandes proporciona-dores de eventuais problemas O GIS possui uma grande capacidade de configuraccedilatildeo oque sendo muito uacutetil para a adaptabilidade deste a cenaacuterios situaccedilotildees ou utilizadoresdiferentes acaba por originar vaacuterios problemas operacionais atraveacutes de inconsistecircnciasna proacutepria configuraccedilatildeo

Dada esta facilidade aparente de ocorrecircncia de problemas e a falta de sensibilidadee formaccedilatildeo teacutecnica dos utilizadores para os resolver a equipa de assistecircncia teacutecnicaafecta ao GIS estava muitas vezes com sobrecarga de pedidos por parte dos clientes quepretendem estes problemas solucionados Existiam periacuteodos de especial relevacircncia noque toca a estas sobrecargas tais como os fechos de ano das empresas

A partir daqui surge a ideia e a necessidade da criaccedilatildeo do GISPSA com o intuito dealiviar a sobrecarga da equipa de assistecircncia teacutecnica mas essencialmente com o grandeobjectivo de assegurar que um cliente natildeo fica sem soluccedilatildeo para os problemas com que sedepara apenas porque natildeo estatildeo teacutecnicos disponiacuteveis A grande vantagem de um sistemapericial foi e seraacute sempre essa poder substituir um perito sem ter que enfrentar questotildeescomo a disponibilidade custos ou tempo

Assim surge o GISPSA que mais natildeo eacute que um projecto criado por Pinto no acircmbito deum projecto acadeacutemico cujo objectivo inicial passava por criar um Sistema Pericial paradiagnoacutestico de problemas operacionais do GIS Este sistema teve por base o conhecimentoe o respectivo raciociacutenio extraiacutedos de um perito da aacuterea Administrativa-Financeira doGIS

No caso de problemas mais complexos em que o Sistema Pericial natildeo consiga determi-nar os factores de erro eacute remetida a resoluccedilatildeo para um teacutecnico da empresa comunicandoesse facto ao utilizador Pinto (1998)

221 Arquitectura

Sendo um sistema pericial o GISPSA teria que ser desenvolvido utilizando uma lingua-gem que tivesse uma seacuterie de caracteriacutesticas A existecircncia de uma base de conhecimento apossibilidade de consultar factos adicionar novos factos ou ainda de remover factos nessamesma base e aspectos como o backtracking na realizaccedilatildeo de raciociacutenio ao inferir sobreesses mesmos factos natildeo permitia um leque muito alargado na escolha da linguagem de

20

22 GISPSA - GIS PROBLEM SOLVER ADVISOR

desenvolvimento

Desta forma ficou decidido que o GISPSA seria desenvolvido em prolog (maisespecificamente winprolog) Devido agrave simplicidade de utilizaccedilatildeo e extensa documentaccedilatildeode apoio o LPAProlog foi usado como motor de inferecircncia e o LPAFlex foi usado paraestabelecer a declaraccedilatildeo de regras

Como jaacute foi referido anteriormente o GISPSA eacute uma aplicaccedilatildeo standalone desenhadae desenvolvida para uma execuccedilatildeo local em mono-posto e sujeita agrave obtenccedilatildeo de umalicenccedila de utilizaccedilatildeo para garantir o seu funcionamento

Figura 2 GISPSA menu inicial

A aplicaccedilatildeo dispotildee de uma interface graacutefica tambeacutem criada em winprolog que utilizarecursos especiacuteficos do sistema operativo Windows

A base de conhecimento eacute armazenada num uacutenico ficheiro ksl e o seu carregamentonatildeo eacute parcial O mesmo seraacute dizer que toda a base de conhecimento eacute passada paramemoacuteria de trabalho assim que o programa arranca

222 Funcionamento

Em termos funcionais a aplicaccedilatildeo permite mudar o tipo de linguagem a ser empreguenas conversaccedilotildees estabelecidas com o utilizador consoante esta esteja a ser utilizadapor um teacutecnico (habitualmente os teacutecnicos com formaccedilatildeo na aacuterea) ou um utilizadornormal (o cliente que adquiriu a aplicaccedilatildeo e cuja formaccedilatildeo eacute mais reduzida ou ateacute mesmoinexistente)

Apoacutes a definiccedilatildeo da linguagem de interacccedilatildeo a utilizar o sistema inicia entatildeo o pedidode assistecircncia apresentando a mensagem ldquoSeleccione a aplicaccedilatildeordquo (figura 3) que permitenuma primeira instacircncia direccionar o raciociacutenio face agrave resposta do utilizador

21

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 3 GISPSA interacccedilatildeo inicial

Figura 4 GISPSA exemplo de interacccedilatildeo pergunta-resposta

223 Limitaccedilotildees

Apesar de ser inovadora na aacuterea esta aplicaccedilatildeo foi no iniacutecio bastante utilizada por algunsclientes tendo sofrido algum abandono de forma gradual ao longo do tempo de vida quejaacute leva Apoacutes uma anaacutelise chegou-se agrave conclusatildeo que as principais causas na origemdesse abandono seriam as seguintes

bull Adicionar regras implicava o conhecimento da sintaxe das mesmas Verificou-se que esta tarefa era demasiado complexa para um utilizador sem formaccedilatildeo esensibilidade suficientes na aacuterea da programaccedilatildeo

bull O acto de proceder agrave ediccedilatildeo de regras existentes na base de conhecimento traduz-senuma tarefa que para aleacutem de morosa eacute essencialmente de risco no sentido em

22

23 WEB EXPERT SYSTEMS

que natildeo existe uma verdadeira noccedilatildeo do impacto que estas alteraccedilotildees possam vir ater no comportamento global do sistema

bull O sistema apenas pode ser instalado em mono-posto o que obriga agrave obtenccedilatildeo deuma licenccedila por cada instalaccedilatildeo que se pretende realizar

bull O sistema natildeo permite a integraccedilatildeo com ambientes baseados em redes e sistemasdistribuiacutedos

bull Natildeo existe nenhum mecanismo de verificaccedilatildeo da base de conhecimento

bull O aspecto visual da aplicaccedilatildeo estaacute ultrapassado e eacute pouco apelativo

23 Web Expert Systems

Actualmente uma grande maioria dos sistemas periciais desenvolvidos satildeo desenhadospara um funcionamento em ambientes web As razotildees apontadas para esta orientaccedilatildeo satildeovaacuterias destacando-se a evoluccedilatildeo da proacutepria tecnologia as velocidades de transmissatildeode dados em redes a possibilidade de acesso em muacuteltiplas localizaccedilotildees geograacuteficas(desde que assegurado o necessaacuterio acesso agrave rede) e ainda o desenvolvimento de novasferramentas que possibilitam maior facilidade na criaccedilatildeo destes novos sistemas

Algumas das ferramentas que permitem actualmente o desenvolvimento de um sistemapericial baseado em ambientes web satildeo as seguintes

1 WebFlex - LPA Flex

2 EXSYS CORVID

3 WebCLIPS

4 JCLIPS

5 JESS

6 Acquire

WebFlex - Esta ferramenta permite a publicaccedilatildeo de um sistema pericial desenvolvidoem ldquoLPA Prologrdquo Os sistemas periciais desenvolvidos a partir deste meacutetodo necessitamainda de outra ferramenta para garantir o funcionamento o ldquoLPA ProWeb Serverrdquo Eacute

23

CAPIacuteTULO 2 ESTADO DA ARTE

possiacutevel adaptar um sistema pericial jaacute desenvolvido para ser disponibilizado numarede sem ser necessaacuterio efectuar qualquer tipo de alteraccedilatildeo No entanto se for pretendidoalgum tipo de configuraccedilatildeo extra por exemplo incluir imagens ou alterar a aparecircncia dealguns controlos eacute uma alteraccedilatildeo extremamente morosa e complexa

WebFlex allows you to deliver your flex-based expert systems onto Intranets

and Extranets easily Just create your rules and frames and questions as per normal

in flex and WebFlex will construct a web server-based solution using ProWeb where

all the questions are sent automatically configured for a standard HTMLJavascript

browserLogic Programming Associaties Ltd (2010)

Eacute possiacutevel alterar o HTML de saiacuteda que o webflex utiliza por defeito no entanto estaconfiguraccedilatildeo natildeo eacute tatildeo simples quanto poderaacute parecer agrave partida e obriga agrave alteraccedilatildeo dosistema pericial

Esta ferramenta funciona apenas em sistemas windows e eacute necessaacuteria a obtenccedilatildeo deuma licenccedila de utilizaccedilatildeo (natildeo eacute gratuita)

EXSYS CORVID - Eacute uma ferramenta composta por dois moacutedulos Exsys CORVID

Knowledge Automation Expert System Software e Exsys Servlet Runtime EXSYS (2010)

Natildeo foi possiacutevel encontrar nenhum sistema desenvolvido por esta ferramenta pormotivos de confidencialidade eou vantagem competitiva Estatildeo no entanto disponiacuteveisaplicaccedilotildees de demonstraccedilatildeo na paacutegina oficial da empresa Verificou-se que nenhumadas aplicaccedilotildees de demonstraccedilatildeo disponiacuteveis possui capacidades de dar explicaccedilotildees oujustificaccedilotildees

De acordo com EXSYS as aplicaccedilotildees construiacutedas com esta ferramenta podem seracedidas por Servlet Applet ou standalone e esta ferramenta necessita da obtenccedilatildeo deuma licenccedila de desenvolvimento

WebCLIPS - Segundo Michael Giordano o WebCLIPS eacute uma implementaccedilatildeo CGI

que envolve o C Language Integrated Production System (CLIPS) como aplicaccedilatildeo internaO CLIPS eacute uma ferramenta de desenvolvimento de sistemas periciais

Esta ferramenta foi desenvolvida em linguagem C o que significa que em termos deportabilidade desde que se possua o coacutedigo fonte este poderaacute ser compilado em qualquersistema operativo jaacute que o compilador para a linguagem estaacute disponiacutevel para todas as

24

23 WEB EXPERT SYSTEMS

versotildees existentes no mercado No entanto o WebCLIPS apenas foi desenvolvido parafuncionamento em sistemas windows e linux

O CLIPS eacute uma ferramenta livre que permite o desenvolvimento de sistemas baseadosem regras Pode ser integrado com algumas linguagens das quais se destacam C Java

(JCLIPS) FORTRAN entre outras Esta eacute provavelmente a ferramenta mais utilizada nodesenvolvimento de sistemas periciais devido agrave sua rapidez eficiecircncia e pelo facto de sergratuita

JCLIPS - Eacute uma biblioteca que permite integraccedilatildeo com Java e permite igualmentea utilizaccedilatildeo do motor do CLIPS a partir de uma classe Java Esta interligaccedilatildeo eacute feitaatraveacutes da importaccedilatildeo do ficheiro (dll ou so consoante o sistema operativo) e permite aexecuccedilatildeo de uma instacircncia ou seja permite ter apenas uma sessatildeo de um sistema pericialde cada vez Maarten Menken (2010)

JESS - O JESS eacute uma extensatildeo do CLIPS em JAVA Eacute basicamente uma bibliotecacujo objectivo natildeo passa por gerar uma aplicaccedilatildeo web mas sim servir de base para quepossa ser integrada ou utilizada para esse efeito Ernest Friedman-Hill (2010)

Utiliza uma linguagem especiacutefica designada JESS language equivalente ao CLIPSmas com novos componentes que a tornam uma linguagem complexa e de difiacutecil utilizaccedilatildeopor algueacutem sem conhecimentos de inteligecircncia artificial

Acquire - Eacute um produto bastante avanccedilado do ponto de vista tecnoloacutegico face aosconcorrentes no sentido em que permite uma separaccedilatildeo evidente entre a camada aplicaci-onal e a camada de apresentaccedilatildeo Promove uma separaccedilatildeo cliente-servidor e disponibilizaum Software Development Kit (SDK) que permite a integraccedilatildeo com outras aplicaccedilotildees

De acordo com Acquired Intelligence o produto estaacute sujeito a uma licenccedila de utilizaccedilatildeoe eacute disponibilizado ainda um serviccedilo online de alojamento de sistemas periciais omyAcquire disponiacutevel mediante uma subscriccedilatildeo semestral

231 Casos de estudo

Os sistemas periciais mais especificamente aqueles que satildeo baseados em sistemas webtecircm conhecido nos uacuteltimos anos uma evoluccedilatildeo gradual e consistente devido em grandeparte agrave simplicidade e disponibilidade que possibilitam Podem ser acedidos a partir dequalquer local no mundo 24 horas por dia e sem qualquer tipo de limitaccedilatildeo bastando

25

CAPIacuteTULO 2 ESTADO DA ARTE

apenas que se garanta o acesso agrave rede onde o sistema pericial estaacute colocado

As interfaces satildeo mais apelativas e chegam a fazer uso de imagens e outros meiosgraacuteficos ou de multimeacutedia cujo objectivo natildeo eacute apenas o de tornar os sistemas maisinteressantes mas tambeacutem mais eficazes jaacute que auxiliam de forma mais simples eesclarecida Os controlos utilizados as caixas de interacccedilatildeo e ateacute mesmo as explicaccedilotildees ejustificaccedilotildees (nos sistemas que o permitam) ajudam a ter uma ideia cada vez mais clarasobre o funcionamento dos sistemas obtendo-se assim melhores resultados

Alguns dos casos de estudo de sistemas periciais baseados em sistemas web existentesactualmente tecircm como um dos seus maiores objectivos a disponibilidade global dosmesmos (satildeo disponibilizados normalmente atraveacutes da internet) e os mais conhecidossatildeo

bull Landfill Operation Management Advisor (LOMA)

bull Medical Diagnosis Support System (MDSS)

bull Whale watcher

2311 LOMA - Landfill Operation Management Advisor

O LOMA eacute um sistema pericial online que analisa problemas operacionais falhas eacidentes em aterros comuns Aleacutem disso o LOMA fornece conselhos sobre como umgestor pode evitar esses problemas e em caso de ocorrecircncia sobre como diminuir oimpacto das suas consequecircncias Encontra-se disponiacutevel em httplomacivil

duthgr e eacute de utilizaccedilatildeo puacuteblica

O sistema pericial foi desenvolvido por Dokas recorrendo agraves ferramentas WebFlex eLPA ProWeb Server

A arquitectura da aplicaccedilatildeo web pode ser visualizada na figura 5 e consiste nosseguintes moacutedulos Dokas (2005)

bull Sistema pericial LOMA

bull Moacutedulo de aconselhamento

bull Moacutedulo operacional de problemas-causa

bull Eventos inicias

bull Problemas operacionais

26

23 WEB EXPERT SYSTEMS

bull Moacutedulo de explicaccedilotildees

bull Moacutedulo de submissatildeo de conhecimento e informaccedilatildeo

Figura 5 Arquitectura do LOMA

O moacutedulo mais relevante para o acircmbito desta dissertaccedilatildeo eacute o ldquoSistema pericial LOMArdquoe eacute tambeacutem o moacutedulo mais importante para a aplicaccedilatildeo LOMA

Eacute composto por vinte e quatro sub-moacutedulos cada um deles responsaacutevel por analisarum tipo especiacutefico de problema e ainda por um sub-moacutedulo extra que eacute responsaacutevel pelocontrolo do sistema

O sub-moacutedulo extra questiona o utilizador que descreve o problema (ver 6 e 7) ecom base na sua descriccedilatildeo apresenta uma lista de possiacuteveis problemas (ver 8) Quandoo utilizador selecciona um problema da lista de resultados eacute activado o respectivo sub-moacutedulo que por sua vez iraacute fornecer informaccedilatildeo de como prevenir o problema ou nocaso de este jaacute ter acontecido como minimizar as suas consequecircncias (ver 9)

27

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 6 Paacutegina inicial do sistema pericial LOMA

Figura 7 Sub-moacutedulo extra

28

23 WEB EXPERT SYSTEMS

Figura 8 Sugestatildeo de problemas do sub-moacutedulo extra

Figura 9 Sub-moacutedulo especializado

29

CAPIacuteTULO 2 ESTADO DA ARTE

2312 MDSS - Medical Diagnosis Support System

O MDSS eacute um sistema pericial utilizado na aacuterea da medicina e foi desenvolvido paraajudar no diagnoacutestico e tratamento da diabetes A diabetes pode afectar vaacuterias partes docorpo provocando diversos sintomas e complicaccedilotildees Quando detectada atempadamenteeacute mais facilmente controlaacutevel e menos perigosa Por todos estes motivos foi criado umsistema pericial online o MDSS que permite inferir sobre uma seacuterie de sintomas parachegar a um diagnoacutestico

Na opiniatildeo de Filho uma das vantagens deste sistema pericial eacute que possibilita quemeacutedicos em ambientes rurais ou perigosos e de difiacutecil acesso com recursos limitadospossam aceder ao sistema pericial de forma a terem uma ajuda no diagnoacutestico destadoenccedila O que comeccedilou como um sistema pericial vocacionado e orientado para adiabetes rapidamente cresceu e tornou-se algo mais do que isso sendo hoje utilizadocomo sistema de diagnoacutestico para vaacuterias doenccedilas

No que diz respeito agrave sua arquitectura o MDSS foi desenvolvido em LPA Prolog

recorrendo aos moacutedulos ProWeb e ProData e utilizando Open Data Base Connectivity

(ODBC) para acesso agrave base de dados Utiliza loacutegica fuzzy para raciociacutenio sobre incertezaspara lidar com conhecimento parcial

O sistema eacute composto por trecircs moacutedulos No primeiro moacutedulo eacute possiacutevel um es-pecialista definir sintomas exames cliacutenicos exames de laboratoacuterio e exames relativosa uma ou mais doenccedilas Eacute ainda possiacutevel a atribuiccedilatildeo de valores (pesos estatiacutesticos)ou de resultados que definem uma doenccedila Isso permite por exemplo que a pressatildeoarterial possa estar associada ao diagnoacutestico de pressatildeo alta diabetes gravidez de riscoou insuficiecircncia renal entre outros Informaccedilotildees de consultas anteriores e exames satildeoautomaticamente ligadas e analisadas sob fundamentaccedilatildeo loacutegico temporal

No segundo moacutedulo o sistema permite consultas atraveacutes do qual os dados relevantespara o paciente satildeo registados e relacionados com outros exames correlacionados Durantea fase de diagnoacutestico o sistema pode sugerir outros testes ou procedimentos para entatildeoinferir se haacute outros riscos e doenccedilas a serem investigados

No terceiro moacutedulo eacute efectuado o diagnoacutestico O sistema iraacute localizar automatica-mente os diagnoacutesticos jaacute registados noutras consultas incluindo aquelas feitas por outrosmeacutedicos Aleacutem disso o sistema pesquisa niacuteveis de doenccedilas de acordo com os resultadosdos exames Pode tambeacutem sugerir uma investigaccedilatildeo mais aprofundada sempre que osdados natildeo sejam suficientes para garantir um diagnoacutestico preciso

30

23 WEB EXPERT SYSTEMS

2313 Whale watcher

O sistema pericial Whale watcher eacute um sistema de demonstraccedilatildeo da plataforma AcquireEste e outros sistemas periciais similares estatildeo disponiacuteveis na paacutegina da Acquire (httpwwwaiinccademos)

Figura 10 Paacutegina principal do sistema pericial Whale Watcher

Figura 11 Paacutegina final do sistema pericial Whale Watcher

Atraveacutes das demonstraccedilotildees facultadas pela Acquire natildeo eacute possiacutevel concluir se existealgum tipo de sistema de explicaccedilotildees No entanto no final de cada sessatildeo do sistemapericial eacute possiacutevel consultar um resumo (ver 11) que funciona como uma explicaccedilatildeomuito baacutesica da inferecircncia realizada pelo sistema pericial jaacute que se limita apenas amostrar os factos que foram respondidos durante a sessatildeo

31

3Ferramentas utilizadas

Durante o desenvolvimento deste trabalho foi necessaacuterio decidir sobre quais as ferramen-tas a utilizar para a criaccedilatildeo do novo sistema pericial Atendendo a algumas caracteriacutesticasproacuteprias e objectivos traccedilados era necessaacuterio utilizar alguma especificidade na escolhapara garantir a exclusividade do resultado Desenvolvimento web capacidade de pro-ceder a inferecircncia sobre conhecimento representado atraveacutes de regras simplicidade deutilizaccedilatildeo actualidade da tecnologia entre outras caracteriacutesticas influenciaram significa-tivamente nesta escolha

Entre os vaacuterios ambientes de desenvolvimento disponiacuteveis a opccedilatildeo recaiu sobre umque para aleacutem de simples e eficiente era utilizado regularmente em situaccedilatildeo profissi-onal pelo criador deste projecto pelo que aqui foi relativamente simples chegar a umaconclusatildeo

Indo de encontro agraves razotildees que levaram agrave escolha da linguagem do motor de inferecircnciautilizada no projecto que deu origem a este trabalho tambeacutem aqui foi escolhida umalinguagem que possibilita o backtracking de forma eficaz e simplificada caracteriacutesticaessencial para o bom funcionamento do motor de inferecircncia e que contribui largamentepara o sucesso do sistema pericial

31 Ambiente de desenvolvimento

O ambiente de desenvolvimento e respectiva linguagem de programaccedilatildeo utilizados para acriaccedilatildeo do interface do sistema pericial foram seleccionados levando em conta algunsrequisitos e factores considerados necessaacuterios e ateacute mesmo essenciais para a soluccedilatildeo finalA listagem dessas caracteriacutesticas eacute a seguinte

bull Baixo custo de disponibilizaccedilatildeo

33

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

bull Independecircncia do sistema operativo

bull Simples escalabilidade

bull Visual apelativo

Com base nesta lista de caracteriacutesticas consideradas desejaacuteveis ou ateacute mesmo essen-ciais para a soluccedilatildeo final e considerando tambeacutem a jaacute longa experiecircncia de utilizaccedilatildeonesta plataforma foi escolhida a linguagem Java J2EE utilizando a framework Icefaces eo portal Glassfish Podemos considerar para esta escolha uma seacuterie de paracircmetros paraaleacutem dos jaacute evidenciados

bull O J2EE eacute uma linguagem independente do sistema operativo

bull O J2EE caracteriza-se pela sua modularidade

bull Glassfish eacute um portal open source com suporte para J2EE

bull Icefaces eacute uma framework JavaServer Faces (JSF) compatiacutevel com o Glassfish

bull Icefaces permite a criaccedilatildeo de interfaces graacuteficos de uma forma simples

bull Existecircncia de boa documentaccedilatildeo relativamente a todos os produtos

Para aleacutem disto podemos ainda considerar e referir outros produtos e componentesque natildeo sendo menos importantes tambeacutem foram utilizados durante o desenvolvimentodeste trabalho A lista completa de ferramentas eacute a seguinte

bull Java J2EE 60

bull Eclipse Galileo (com plugins para Glassfish e svn) - Integrated Development

Environment (IDE) para Java

bull Icefaces 182

bull GlassFish - portal

bull Visual SVN Server e Tortoise - controlo de versotildees

bull MikTeX - latex

bull TexnicCenter - IDE para latex

34

32 MOTOR DE INFEREcircNCIA

32 Motor de inferecircncia

Em qualquer sistema pericial o motor de inferecircncia eacute o cerne do mesmo O seu desenvol-vimento obriga habitualmente a um esforccedilo e concentraccedilatildeo maiores porque aqui residea forma como o sistema iraacute percorrer as vaacuterias etapas necessaacuterias para alcanccedilar umasoluccedilatildeo

Tambeacutem neste trabalho o motor de inferecircncia eacute um ponto essencial e a sua implemen-taccedilatildeo teve um papel destacado no processo de anaacutelise realizado Actualmente existemalguns produtos que podem ser utilizados integral ou parcialmente como motor deinferecircncia de um sistema pericial esses produtos podem ser frameworks ou shells ouainda Business Rule Management System (BRMS)

Os termos framework e shell satildeo muitas vezes utilizados como sinoacutenimo umaframework eacute uma abstracccedilatildeo que permite agregar formas de resoluccedilatildeo de problemascomuns uma shell eacute similar no sentido em que disponibiliza uma camada de abstracccedilatildeouma ldquoconchardquo que encapsula os serviccedilos

No sentido de tentar reutilizar um produto jaacute existente foi elaborado um estudo acercados actuais produtos e das suas caracteriacutesticas A abordagem seguida para esse estudo foiuma abordagem por fases em que gradualmente se foi estreitando o conjunto de soluccedilotildeesaceitaacuteveis mediante a utilizaccedilatildeo de alguns criteacuterios

Foram consideradas cinco fases

bull Fase I - Recolha de candidatos

bull Fase II - Requisitos base

bull Fase III - Viabilidade econoacutemica

bull Fase IV - Viabilidade teacutecnica

bull Fase V - Prova de conceito

321 Fase I - Recolha de candidatos

A fase I teve como objectivo recolher alguns dos actuais produtos que possuam caracteriacutes-ticas desejadas para um sistema deste geacutenero Natildeo foram considerados alguns produtosque satisfaziam os requisitos mas que natildeo permitem uma integraccedilatildeo com Java Foramidentificados os seguintes produtos como potenciais integradores do projecto

35

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

Produto BRMS FrameworkDrools X XHammurapi Rules XILog XJCLIPS XJESS XJEOPS XJRuleEngine XOpenL Tablets XOpenRules XProva language XYprolog XZilonis X

Tabela 1 Listagem de produtos da Fase I

Drools - ou JBoss Rules eacute um produto open source da RedHat (2010) Define umalinguagem especiacutefica para as regras Eacute desenvolvido em Java e utiliza um mecanismo deencadeamento directo baseado em regras natildeo implementa justificaccedilotildees

Hammurapi Rules - eacute um produto desenvolvido em Java por Hammurapi GroupEste motor de inferecircncia utiliza a sintaxe da linguagem Java para definiccedilatildeo de regras Eacutepossiacutevel definir grupos de regras em XML e estaacute disponiacutevel um plug-in para Eclipse quepermite a ediccedilatildeo destes grupos Suporta encadeamento directo e indirecto

ILOG - WebSphere ILOG Business Rule Management Systems eacute como o nome indicaum BRMS eacute um produto da IBM (2010) que requer licenciamento adequado Eacute necessaacuteriaa instalaccedilatildeo e configuraccedilatildeo de alguns componentes de forma a que o produto possa serutilizado por exemplo Rule Team Server Rule Execution Server Http server entreoutros

JCLIPS - eacute um produto open source mantido por uma comunidade e permite aintegraccedilatildeo entre Java e CLIPS O CLIPS ldquoC Language Integrated Production Systemrdquo eacuteum sistema pericial desenvolvido em linguagem C Maarten Menken (2010)

JESS - eacute um produto comercial da Sandia National Laboratories desenvolvidoem Java Eacute necessaacuterio adquirir licenccedilas para efectivar a utilizaccedilatildeo do mesmo ErnestFriedman-Hill (2010)

JEOPS - Java Embedded Object Production System (JEOPS) eacute uma framework open

source desenvolvida num acircmbito acadeacutemico por Carlos Figueira Filho

36

32 MOTOR DE INFEREcircNCIA

JRuleEngine - eacute um produto open source desenvolvido em Java e mantido porMcarniel (2010) As regras satildeo compiladas para classes Java

OpenL Tablets - eacute um BRMS open source cuja principal vantagem eacute a integraccedilatildeocom a folhas de caacutelculo Excel Permite a utilizaccedilatildeo de tabelas de decisatildeo no formatoExcel OpenL (2010)

OpenRules - eacute um produto da OpenRules Inc sujeito a licenccedila de utilizaccedilatildeo Eacutetotalmente orientado para a folha de caacutelculo Excel da Microsoft

Prova language - eacute um produto open source desenvolvido em Java por KozlenkovAlex and Paschke Disponibiliza uma linguagem muito semelhante ao prolog Eacute umproduto bastante direccionado para a comunicaccedilatildeo entre agentes expondo inclusiveacute umsistema multi-agente

Yprolog - eacute um produto open source desenvolvido em Java por Boris van SchootenEacute uma reacuteplica do prolog desenvolvida totalmente em Java Foi evoluindo ao longo dotempo a partir de produtos como o WProlog e o XProlog

Zilonis - eacute um produto desenvolvido em Java por Elie Levy O formato das regras eacutesemelhante ao CLIPS

322 Fase II - Requisitos base

A fase II teve como objectivo filtrar a lista de candidatos no sentido de excluir produtosque natildeo se enquadrem directamente com os requisitos do sistema a desenvolver Assimsendo foram excluiacutedos alguns dos candidatos jaacute indicados e os principais motivos daexclusatildeo satildeo

bull Natildeo permitirem a integraccedilatildeo com um portal

bull Formato das regras eacute fechado natildeo possibilitando possiacuteveis e futuras evoluccedilotildees

bull Natildeo disponibilizaccedilatildeo de acesso aos serviccedilos internos mais concretamente natildeofornecem uma framework de controlo Desta forma natildeo eacute possiacutevel reutilizar partesdo motor de inferecircncia ou do sistema de gestatildeo de regras sem que este seja feitoatraveacutes do proacuteprio produto

Candidatos excluiacutedos pelas razotildees atraacutes expostas

37

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProdutoILogOpenRulesOpenL Tablets

Tabela 2 Listagem de produtos excluiacutedos na Fase II

323 Fase III - Viabilidade econoacutemica

Sendo um paracircmetro com importacircncia relativa dada a possiacutevel aplicaccedilatildeo comercial deum produto baseado neste trabalho natildeo deixa de ser importante para o estudo realizadoDesta forma a fase III teve como objectivo filtrar a lista de resultados no sentido de excluirprodutos que natildeo sejam economicamente viaacuteveis quer por motivos de licenciamentocomercial quer por motivos de licenccedilas de utilizaccedilatildeo

Foram entatildeo considerados os produtos constantes da tabela 3 como natildeo viaacuteveis nosentido em que existem produtos open source similares para o efeito pretendido

ProdutoDroolsJESS

Tabela 3 Listagem de produtos excluiacutedos na Fase III

324 Fase IV - Viabilidade teacutecnica

Esta fase teve por objectivo filtrar a lista de resultados de forma a que os produtos natildeoviaacuteveis do ponto de vista teacutecnico natildeo sejam considerados para a escolha final

Os produtos que natildeo foram considerados viaacuteveis por questotildees teacutecnicas satildeo

38

32 MOTOR DE INFEREcircNCIA

Produto RazatildeoJEOPS Documentaccedilatildeo disponiacutevel bastante vaga projecto desconti-

nuado e natildeo estaacutevelJRuleEngine As regras satildeo compiladas para Java natildeo permite escalabili-

dade sem compilar o projectoZilonis Natildeo estaacute preparado para ser utilizado como framework ape-

nas permite uma aplicaccedilatildeo stand-alone

Hammurapi Rules As regras satildeo compiladas para Java natildeo permite escalabili-dade sem compilar o projecto

Tabela 4 Listagem de produtos excluiacutedos na Fase IV

325 Fase V - Prova de conceito

Nesta uacuteltima fase restaram trecircs produtos JClips Prova e YProlog Apoacutes a realizaccedilatildeode uma prova de conceito com estes produtos foram encontradas algumas vantagens edesvantagens Esta anaacutelise pode ser consultada nas tabelas 5 6 e 7

JClipsVantagens Desvantagens

bull Linguagem CLIPS bull Apenas permite 1 execuccedilatildeo deforma a permitir vaacuterias utilizaccedilotildeesdo motor de inferecircncia eacute necessaacuterioimplementar loacutegica especiacutefica

bull Ausecircncia de documentaccedilatildeo

Tabela 5 JClips - Vantagens e desvantagens

39

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProvaVantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza exemplos de uti-lizaccedilatildeo

bull Uacuteltima actualizaccedilatildeo em 10 deJunho de 2010

bull Instaacutevel

bull Bastante ocupaccedilatildeo de recursos(CPU e memoacuteria)

bull Disponibilizaccedilatildeo de pouca docu-mentaccedilatildeo

bull Ao invocar um predicado natildeo ins-tancia apenas as variaacuteveis na pri-meira vez mas devolve uma lista detodos os resultados possiacuteveis simi-lar ao predicado findall do LPA Pro-log

Tabela 6 Prova - Vantagens e desvantagens

YProlog

Vantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza documentaccedilatildeo eexemplos de utilizaccedilatildeo

bull Operaccedilotildees baacutesicas do Prologtecircm o mesmo comportamento

bull Uacuteltima actualizaccedilatildeo em 21 de Abrilde 2006

Tabela 7 YProlog - Vantagens e desvantagens

326 Conclusatildeo e fundamentaccedilatildeo da escolha

Tratando-se do nuacutecleo do sistema pericial e sabendo que natildeo existe actualmente ummotor de inferecircncia que corresponda totalmente aos requisitos necessaacuterios foi decidido

40

32 MOTOR DE INFEREcircNCIA

desenvolver um motor de inferecircncia de raiz recorrendo a um produto que permitisse umdesenvolvimento raacutepido e com uma curva de aprendizagem pouco acentuada Para tale depois do estudo realizado perante as vaacuterias hipoacuteteses disponiacuteveis foi decidido optarpelo YProlog

Na uacuteltima fase do estudo apresentado entre os candidatos disponiacuteveis este aparececomo o mais viaacutevel quer pelos aspectos de adaptabilidade funcionamento e facilidadede utilizaccedilatildeo quer ainda pelo nuacutemero reduzido de desvantagens encontradas face aosrestantes

41

4Wexsys

Este trabalho baseia-se na criaccedilatildeo de um sistema pericial baseado no GISPSA e oobjectivo principal passa pela integraccedilatildeo do novo sistema num ambiente de acesso globalou mais especificamente num portal web Para atingir tal meta foi descrito nos capiacutetulosanteriores quais as ferramentas a utilizar sendo que agora vamos compreender como eacuteque a soluccedilatildeo em si foi desenvolvida

O sistema que nasceu a partir desta implementaccedilatildeo foi baptizado com o nome wexsys- ldquoWeb Expert Systemrdquo Partindo da base do GISPSA o wexsys possui um motor deinferecircncia totalmente novo criado especificamente no acircmbito deste trabalho e ainda umabase de conhecimento Foi decidido adoptar o princiacutepio de utilizaccedilatildeo de regras para arepresentaccedilatildeo da base de conhecimento

De referir ainda que o raciociacutenio utilizado no motor de inferecircncia segue uma filosofiado tipo backward chaining princiacutepio jaacute descrito nos capiacutetulos anteriores

Detentor de uma interface considerada actual para os paracircmetros utilizados nos diasque correm este novo sistema pericial foi criado atraveacutes da utilizaccedilatildeo de J2EE e Icefaces

que lhe conferem um aspecto renovado e extremamente apelativo aos utilizadores Satildeoutilizadas teacutecnicas tais como Ajax que providenciam uma dinacircmica de funcionamentomuito interessante do ponto de vista da utilizaccedilatildeo

41 Arquitectura global

A soluccedilatildeo foi projectada de acordo com a arquitectura J2EE ou seja utilizando uma sepa-raccedilatildeo em moacutedulos ou componentes Foram criados dois moacutedulos principais pWexsysEAR

e WexsysEAR estes moacutedulos satildeo a separaccedilatildeo da aplicaccedilatildeo em duas grandes camadas acamada web e a camada de negoacutecio

Esta separaccedilatildeo permite a instalaccedilatildeo da aplicaccedilatildeo num uacutenico servidor ou uma instala-

43

CAPIacuteTULO 4 WEXSYS

ccedilatildeo distribuiacuteda por vaacuterios servidores possibilitando tambeacutem a utilizaccedilatildeo de clusters Estaseparaccedilatildeo torna-se bastante uacutetil se pretendermos expandir a aplicaccedilatildeo para uma utilizaccedilatildeomais intensa ao niacutevel dos acessos A possibilidade de instalaccedilatildeo em muacuteltiplas maacutequinaspermite a obtenccedilatildeo de melhores resultados quando confrontada com a utilizaccedilatildeo de umambiente com apenas um uacutenico servidor

Figura 12 Arquitectura da soluccedilatildeo

411 Moacutedulo pWexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente visual da soluccedilatildeo tambeacutem conhecida porPresentation Layer Este moacutedulo eacute composto pelos componentes descritos na figura 13

Figura 13 Arquitectura do moacutedulo visual

bull pWexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

44

41 ARQUITECTURA GLOBAL

bull wWexsysGUI - componente principal que conteacutem as JSPrsquos servlet e managed

beans

bull jWexsysWebClient - classes utilizadas na camada visual

bull TGGraphLayout - componente externo que disponibiliza um controlo que permitea definiccedilatildeo de um grafo este componente vai ser descrito na secccedilatildeo 4133

bull jWexsysLog - permite o registo da ocorrecircncia de erros

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

412 Moacutedulo WexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente de negoacutecio da aplicaccedilatildeo tambeacutem conhecidapor Business Layer eacute o centro de controlo de toda a soluccedilatildeo Este moacutedulo eacute compostopor alguns componentes como podemos ver na figura 14

Figura 14 Arquitectura do moacutedulo de negoacutecio

bull WexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

bull eWexsys - componente principal responsaacutevel pela criaccedilatildeo dos serviccedilos

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

bull jWexsysUtils - classes utilitaacuterias internas

45

CAPIacuteTULO 4 WEXSYS

bull jWexsysLog - componente auxiliar para permitir o tratamento de erros

bull jWexsysEngine - responsaacutevel pela implementaccedilatildeo do motor de inferecircncia

bull YProlog - permite a interpretaccedilatildeo de coacutedigo prolog Este componente vai serdescrito na secccedilatildeo 4133

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos

Como jaacute foi referido o wexsys foi desenvolvido respeitando a arquitectura J2EE como talos componentes que integram a aplicaccedilatildeo foram tambeacutem criados seguindo esse conceitoTodos os componentes foram estruturados de forma a poderem ser reutilizados com omiacutenimo de dependecircncias e toda a aplicaccedilatildeo foi projectada de forma a retirar o maacuteximopartido desta divisatildeo

Podemos ver na figura 15 um diagrama que permite verificar de que forma os compo-nentes estatildeo a ser utilizados O diagrama tem trecircs agrupamentos que pretendem descreverutilizando uma linguagem Object Oriented (OO) a sua visibilidade Os temos publicprotected e private satildeo utilizados como analogias aos respectivos conceitos na linguagemOO

4131 Camada de acesso puacuteblico

A camada de acesso puacuteblico expotildee os meacutetodos de interacccedilatildeo com a aplicaccedilatildeo sendocomposta por trecircs componentes wWexsysGUI jWexsysWebClient e eWexsysClient

Figura 15 Wexsys - Integraccedilatildeo dos componentes

46

41 ARQUITECTURA GLOBAL

Os componentes eWexsysClient e jWexsysWebClient contecircm interfaces de ligaccedilatildeoentre a camada visual e a camada de negoacutecio

eWexsysClient - disponibiliza as classes designadas Data Transfer Object (DTO) eainda o interface para os serviccedilos disponibilizados pelo wexsys

jWexsysWebClient - disponibiliza classes que caracterizam os conceitos de negoacuteciomas que contecircm atributos adicionais A razatildeo da existecircncia deste componente justificandashsecom a eventual expansatildeo da aplicaccedilatildeo para uma nova camada visual Os exemplos decoacutedigo 1 e 2 permitem-nos observar uma utilizaccedilatildeo de atributos extra na classe visualpara controlo de ocorrecircncia de erros

1 p u b l i c c l a s s RuleView

3 p r i v a t e i n t l e v e l = 0

5 Rule i d e n t i f i e r

7 p r i v a t e S t r i n g i d e n t i f i e r = n u l l

9 p r i v a t e S t r i n g i d e n t i f i e r E r r = n u l l

11 p r i v a t e b o o l e a n i d e n t i f i e r I n E r r = f a l s e

13

Rule d e s c r i p t i o n

15

p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

17

p r i v a t e S t r i n g d e s c r i p t i o n E r r = n u l l

19

p r i v a t e b o o l e a n d e s c r i p t i o n I n E r r = f a l s e

21

Coacutedigo 1 Excerto da classe RuleView

p u b l i c c l a s s Rule implemen t s S e r i a l i z a b l e

47

CAPIacuteTULO 4 WEXSYS

2

p r i v a t e i n t l e v e l = 0

4

Rule i d e n t i f i e r

6

p r i v a t e S t r i n g i d e n t i f i e r = n u l l

8

10 Rule d e s c r i p t i o n

12 p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

14 Coacutedigo 2 Excerto da classe Rule

O outro componente envolvido na camada puacuteblica o wWexsysGUI eacute o responsaacute-vel pela interacccedilatildeo com aplicaccedilatildeo Eacute o componente que disponibiliza as paacuteginas e oresponsaacutevel pela coordenaccedilatildeo de todo o processo web

4132 Camada de acesso protegido

A camada de acesso protegido disponibiliza componentes que podem ser utilizados pelosdois moacutedulos mas que natildeo estatildeo disponiacuteveis para o exterior Neste caso existe apenas umcomponente nestas condiccedilotildees o jWexsysLog cuja funccedilatildeo eacute assegurar o registo de erros

jWexsysLog - componente responsaacutevel pelo registo de erros utiliza internamente aframework log4j

4133 Camada de acesso privado

A camada de acesso privado incluiacute todos os componentes responsaacuteveis por processa-mento interno Os componentes responsaacuteveis pelo processamento interno satildeo eWexsysjWexsysEngine e jWexsysUtils Tambeacutem incluiacutedos no conceito de processamento internoestatildeo os componentes TGGraphLayout e YProlog

eWexsys - eacute o componente responsaacutevel pela implementaccedilatildeo do interface de negoacuteciodelegando as funcionalidades em classes especializadas ou no componente responsaacutevelpela integraccedilatildeo com o nuacutecleo da aplicaccedilatildeo o jWexsysEngine

48

41 ARQUITECTURA GLOBAL

jWexsysEngine - eacute o componente responsaacutevel pelo nuacutecleo da aplicaccedilatildeo ou sejaeacute o responsaacutevel pela integraccedilatildeo do java com o prolog e vice-versa Eacute o componenteresponsaacutevel pelo mapeamento das classes de java para as classes de comunicaccedilatildeo com oprolog

jWexsysUtils - eacute um componente auxiliar que disponibiliza e encapsula utilitaacuteriospara uma melhor organizaccedilatildeo interna da aplicaccedilatildeo

TGGraphLayout - eacute um componente tambeacutem conhecido por TouchGraph eacute umprojecto mantido por uma comunidade e estaacute disponiacutevel no sourceforge AlexanderShapiro (2010)

YProlog - este componente foi o escolhido durante a fase de estudo da implementaccedilatildeopara ser a base do motor de inferecircncia (321)

4134 Fluxo de invocaccedilatildeo

A aplicaccedilatildeo foi desenvolvida de forma a que todos os pedidos seguissem um mesmo fluxode invocaccedilatildeo de forma a uniformizar o processo Na figura 16 temos uma relaccedilatildeo dasclasses principais da aplicaccedilatildeo

Figura 16 Diagrama de classes principais

O fluxo de invocaccedilatildeo inicia-se atraveacutes do WexsysBean no caso de funcionalidades

49

CAPIacuteTULO 4 WEXSYS

do motor de inferecircncia ou atraveacutes do WexsysKBBean no caso de funcionalidades dabase de conhecimento Ambos os managed beans delegam no WexsysViewManager querecorrendo agrave classe WexsysViewHelper converte as classes view para classes DTO Aclasse WexsysViewManager por sua vez delega no session bean WexsysSessionBean quemediante o tipo de pedido delega nas classes de validaccedilatildeo ou nas classes do motor deinferecircncia WexsysEngineImpl

Este processo pode ser observado na figura 17 que representa um diagrama de sequecircn-cia exemplificativo do fluxo de invocaccedilatildeo geneacuterico

Figura 17 Diagrama de sequecircncia do fluxo de invocaccedilatildeo

414 Portal

O wexsys tem como ponto de entrada na aplicaccedilatildeo uma paacutegina inicial que permite aidentificaccedilatildeo do utilizador no sistema pericial Como se trata de um trabalho acadeacutemico aparte de validaccedilatildeo e autenticaccedilatildeo de utilizadores natildeo foi contemplada como tal eacute possiacutevelautenticar-se com qualquer utilizador Para aleacutem da autenticaccedilatildeo eacute ainda possiacutevel indicarpara a sessatildeo actual qual o miacutenimo grau de confianccedila para a apresentaccedilatildeo de uma resposta

50

41 ARQUITECTURA GLOBAL

O endereccedilo da aplicaccedilatildeo respeita o seguinte formato httpservidorportawWexsysGUI onde servidor e porta satildeo os dados de configuraccedilatildeo do Portal Server

Figura 18 Wexsys - Paacutegina inicial

Quando o utilizador inicia a utilizaccedilatildeo do sistema ficam disponiacuteveis trecircs funcionali-dades que seratildeo referidas nas secccedilotildees seguintes

4141 Templates

Um dos aspectos comuns a toda a aplicaccedilatildeo eacute o aspecto graacutefico tendo este sido imple-mentado recorrendo a Facelets Um template facelets define-se pela criaccedilatildeo de umapaacutegina modelo em que existem zonas dinacircmicas Este conceito eacute conhecido de outrastecnologias por exemplo Web Parts ou Master Pages desenvolvidos pela Microsoft

O coacutedigo 3 permite ver como foi desenvolvido o template principal

lthtml

2 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

4 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

6

lt i c e o u t p u t D e c l a r a t i o n

8 doc typeRoo t =HTML

d o c t y p e P u b l i c =minus W3C DTD XHTML 1 0 S t r i c t EN

10 doc typeSys tem = h t t p www w3 org TR xhtml1 DTD xhtml1minus s t r i c t

d t d gt

51

CAPIacuteTULO 4 WEXSYS

12 lthead gt

lt t i t l e gtwexsys minus p a g e T i t l e lt t i t l e gt

14 [ meta t a g s e l i n k t o c s s f i l e s ]

lt head gt

16 ltbody gt

lt f view l o c a l e = f a c e s C o n t e x t e x t e r n a l C o n t e x t r e q u e s t L o c a l e gt

18 lt i c e l o a d B u n d l e basename =com wexsys g u i r e s o u r c e s bund leRes

v a r = bund leRes gt

lt i c e form p a r t i a l S u b m i t = t r u e gt

20 lt d i v i d = wrapper gt

lt d i v i d = logo gt

22 lth1gtlta h r e f = gtWExSys lt a gt lt h1gt

lth2gtweb e x p e r t system lt h2gt

24 lt div gt

lt d i v i d = h e a d e r gt

26 lt d i v i d =menugt

[ Menu c o n t e n t ]

28 lt div gt

lt div gt

30 lt div gt

lt d i v i d = page gt

32 lt d i v i d = c o n t e n t gt

lt u i i n s e r t name= c o n t e n t gt

34 D e f a u l t C o n t e n t

lt u i i n s e r t gt

36 lt div gt

lt d i v i d = s i d e b a r gt

38 lt u i i n s e r t name= s i d e b a r gt

S i d e b a r c o n t e n t

40 lt u i i n s e r t gt

lt div gt

42 lt d i v s t y l e = c l e a r bo th gt

lt div gt

44 lt div gt

lt d i v i d = f o o t e r gt

46 F o o t e r c o n t e n t

lt div gt

48 lt i c e form gt

52

41 ARQUITECTURA GLOBAL

lt f view gt

50 lt body gt

lt html gt Coacutedigo 3 Coacutedigo do template principal do portal

Na listagem de coacutedigo 3 podemos ver a vermelho as aacutereas que foram definidas comodinacircmicas no coacutedigo 4 tambeacutem a vermelho podemos ver as respectivas aacutereas num cenaacuteriode implementaccedilatildeo de uma paacutegina

1 lt u i c o m p o s i t i o n

t e m p l a t e =WEBminusINF incminust e m p l a t e s mainminust e m p l a t e j s p x

3 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

5 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

7

9 lt u i d e f i n e name= c o n t e n t gt

[ ]

11 lt u i d e f i n e gt

13 lt u i d e f i n e name= s i d e b a r gt

[ ]

15 lt u i d e f i n e gt

17 lt u i c o m p o s i t i o n gt Coacutedigo 4 Coacutedigo da paacutegina inicial do portal

415 Suporte multi-liacutengua

O wexsys foi desenvolvido considerando um factor bastante relevante numa aplicaccedilatildeoactual o suporte multi-liacutengua Este suporte eacute uma das vantagens do sistema e foiimplementado recorrendo a ficheiros de recursos (properties) de forma a exteriorizartodos os textos de saiacuteda

Desta forma para dar suporte a uma nova liacutengua apenas teremos que traduzir os textosnos ficheiros de recursos e de alterar a aplicaccedilatildeo de forma a permitir seleccionar o idioma

53

CAPIacuteTULO 4 WEXSYS

A alteraccedilatildeo a ser efectuada na aplicaccedilatildeo eacute muito simples jaacute que basta passar o valor doatributo ldquolocalerdquo da tag ldquofviewrdquo como sendo a liacutengua pretendida

42 Motor de inferecircncia

Para este trabalho foi definida a criaccedilatildeo de um motor de inferecircncia de raiz que pudesseefectivamente substituir o utilizado no sistema base O novo motor desenvolvido teraacute quesuportar uma seacuterie de especificaccedilotildees a comeccedilar pela capacidade de operar num ambientemulti-utilizador

O motor de inferecircncia deve estar preparado para lidar com conhecimento incerto foiescolhido a teacutecnica dos factores de certeza por ser uma teacutecnica simples de reproduzir eeficaz na sua utilizaccedilatildeo

Para aleacutem disto e tratando-se um sistema pericial o motor de inferecircncia deveraacuteser independente da base de conhecimento utilizada e deveraacute idealmente suportar umsistema de explicaccedilotildees que responda a eventuais pedidos por parte dos utilizadores quepretendam ver mais detalhadamente quais as regras que conduziram agrave conclusatildeo obtidaTambeacutem seraacute possiacutevel saber porque eacute que determinada questatildeo eacute colocada (explicaccedilotildeesvulgarmente denominadas de como e porquecirc)

421 Multi-utilizador

Quando se pretende que um sistema pericial tenha uma utilizaccedilatildeo mono-posto (comoera o caso do GISPSA) apenas eacute criada uma instacircncia por cada vez que eacute chamado omotor de inferecircncia No nosso caso tendo sido estabelecido que o novo sistema teriaque permitir uma utilizaccedilatildeo multi-utilizador eacute necessaacuterio desenvolver os mecanismosnecessaacuterios para permitir execuccedilotildees de vaacuterias instacircncias para o novo motor de inferecircncia

A classe WexsysEngineFactory5 eacute a responsaacutevel por criar uma instacircncia do motorde inferecircncia por cada utilizador que inicia a utilizaccedilatildeo do sistema Esta classe tem ummeacutetodo do tipo static o meacutetodo getInferenceEngine que tem como paracircmetros de entradaum utilizador e devolve uma instacircncia do motor de inferecircncia As instacircncias activas satildeoguardadas internamente e sempre que eacute invocado o meacutetodo eacute obtida a respectiva instacircnciaNo caso de ainda natildeo existir uma instacircncia entatildeo eacute criada uma nova e guardada

1

C r e a t e s an i n s t a n c e o f I n f e r e n c e E n g i n e

54

42 MOTOR DE INFEREcircNCIA

3

param usernameKey

5 The usernameKey t o use

7 return I n f e r e n c e E n g i n e i n s t a n c e

throws WexsysArgumen tExcep t ion

9

p u b l i c s t a t i c WexsysEngineImpl g e t I n f e r e n c e E n g i n e ( S t r i n g

usernameKey )

11 throws WexsysArgumentExcept ion

i f ( g e t R u l e U r l ( ) == n u l l | | g e t R u l e U r l ( ) l e n g t h ( ) == 0)

13 throw new WexsysArgumentExcept ion ( mainKnowledgeBaseUrl

r u l e U r l )

15 WexsysEngineImpl i n f e r e n c e E n g i n e = n u l l

17 Have we a l r e a d y c r e a t e d an i n s t a n c e

i f ( g e t I n f e r e n c e E n g i n e s ( ) c o n t a i n s K e y ( usernameKey ) )

19 Obta in t h e i n s t a n c e a s s o c i a t e d t o t h e s p e c i f i e d key

i n f e r e n c e E n g i n e = g e t I n f e r e n c e E n g i n e s ( ) g e t ( usernameKey )

21 e l s e

Cr ea t e a new i n s t a n c e and s t o r e i t i n t h e h o l d e r

23 i n f e r e n c e E n g i n e = new WexsysEngineImpl ( usernameKey

r u l e U r l kb sUr l )

g e t I n f e r e n c e E n g i n e s ( ) p u t ( usernameKey i n f e r e n c e E n g i n e )

25

27 re turn i n f e r e n c e E n g i n e

Coacutedigo 5 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo

422 Base de conhecimento inicial

Ao partir para o desenvolvimento de um sistema pericial eacute necessaacuterio adoptar uma basede conhecimento inicial simples que sirva de suporte ao desenvolvimento do mesmo

55

CAPIacuteTULO 4 WEXSYS

A base de conhecimento inicial foi adoptada a partir do estudo de Merritt (1989) Foiseleccionada devido a duas caracteriacutesticas principais

bull simplicidade - no sentido em que as regras satildeo pequenas e simples de interligar

bull abrangecircncia - existem alguns cenaacuterios possiacuteveis de serem testados com o protoacutetipocomo por exemplo raciociacutenio sobre incerteza e conclusotildees intermeacutedias

A base de conhecimento inicial escolhida tem a seguinte estrutura

bull rule 1 if not turn_over and battery_bad then problem is battery cf 100

bull rule 2 if lights_weak then battery_bad cf 50

bull rule 3 if radio_weak then battery_bad cf 50

bull rule 4 if turn_over and smell_gas then problem is flooded cf 80

bull rule 5 if turn_over and gas_gauge is empty then problem is out_of_gas cf 90

bull rule 6 if turn_over and gas_gauge is low then problem is out_of_gas cf 30

423 Protoacutetipo do motor de inferecircncia

Para o desenvolvimento do protoacutetipo inicial do motor de inferecircncia foi necessaacuterio definiralguns aspectos essenciais tais como

1 Formato da regras

2 Formato das questotildees

3 Interacccedilatildeo assiacutencrona de questotildees e respostas

4 Algoritmos a utilizar

4231 Formato das regras

O formato das regras foi definido tendo em conta alguns pressupostos Entre elessalientam-se a necessidade da utilizaccedilatildeo de graus de confianccedila e a capacidade de guardaruma descriccedilatildeo para cada regra

O formato escolhido para a representaccedilatildeo de uma regra foi o seguinte

56

42 MOTOR DE INFEREcircNCIA

rule(

ltcodigogt rsquoDescriccedilatildeo da regrarsquo

lhs([

ev(ltpremissagt ltvalor da premissagt)

ev(ltpremissa_ngt ltvalor da premissa_ngt)

])

rhs(ev(ltsoluccedilatildeogt ltvalor da soluccedilatildeogt) CF)

)

Na definiccedilatildeo do ltLHSgt eacute possiacutevel definir uma lista de premissas e respectivos valoresno caso da regra conter mais do que uma premissa Um aspecto relevante relacionado coma lista de premissas eacute que esta considera apenas o operador conjunccedilatildeo entre premissas

4232 Formato das questotildees

O formato das questotildees foi tambeacutem definido assumindo alguns princiacutepios tais como apossibilidade de respostas muacuteltiplas e ainda a atribuiccedilatildeo de um texto quer agrave questatildeo a serapresentada quer agraves hipoacuteteses colocadas

O formato escolhido para a representaccedilatildeo de uma questatildeo foi o seguinte

question(

turn_over

rsquoO carro ligarsquo

[

answer(ltvalorgt ltdescriccedilatildeo do valorgt)

answer(ltvalor_ngt ltdescriccedilatildeo do valor_ngt)

]

ltescolha_multipla = 1 0gt

)

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas

Numa qualquer execuccedilatildeo de um software instalado e executado localmente numa maacutequinao funcionamento normal seraacute a execuccedilatildeo de um conjunto de instruccedilotildees ateacute ao ponto emque seja necessaacuteria a interacccedilatildeo com um utilizador Quando isso acontece o programafica suspenso ateacute que o utilizador responda ao que lhe foi solicitado continuando depoiscom a sua execuccedilatildeo a partir do ponto onde parou

57

CAPIacuteTULO 4 WEXSYS

No caso de um programa desenvolvido em prolog e mais especificamente um sistemapericial o conceito atraacutes descrito eacute exactamente o mesmo jaacute que o programa apenassuspende a execuccedilatildeo quando eacute necessaacuterio colocar uma questatildeo que o utilizador teraacute queforccedilosamente responder para dar continuidade ao programa

Se no entanto considerarmos a realidade de uma aplicaccedilatildeo web este princiacutepio jaacutenatildeo seraacute tatildeo linear porque um servidor web recebe um pedido executa-o e devolve umresultado O mesmo seraacute dizer que numa execuccedilatildeo de um componente prolog a partirde um servidor web a pilha de execuccedilatildeo eacute interrompida quando eacute necessaacuterio questionaro utilizador mas natildeo eacute possiacutevel continuar a execuccedilatildeo da mesma a partir do ponto ondeparou Em vez disso seraacute necessaacuterio desfazer a pilha de execuccedilatildeo criada e assim queexistir a resposta do utilizador (eacute feito novo pedido ao servidor) a execuccedilatildeo eacute realizadanovamente desde o iniacutecio mas desta vez considerando a resposta recebida

As razotildees para este comportamento justificam-se pela utilizaccedilatildeo do protocolo HTTPem que eacute necessaacuterio existir um pedido e uma resposta O que obriga a que a colocaccedilatildeoda pergunta e a resposta sejam assiacutencronos podendo existir entre as duas acccedilotildees vaacuteriospedidos (pedidos de explicaccedilotildees por exemplo)

Este ldquoproblemardquo levou agrave necessidade do desenvolvimento de um mecanismo quepermita um funcionamento coerente num programa que utilize (como neste caso) oprolog simulando o comportamento que este teria numa situaccedilatildeo de execuccedilatildeo local

O mecanismo proposto foi a alteraccedilatildeo do predicado responsaacutevel pelo processo re-cursivo especificando um atributo auxiliar de controlo que acompanha a execuccedilatildeo dopredicado Esse atributo auxiliar quando detectada a necessidade de colocaccedilatildeo de umaquestatildeo eacute instanciado e impede a prossecuccedilatildeo do predicado retornando a execuccedilatildeo paraa web com a respectiva questatildeo

Este mecanismo permite uma comunicaccedilatildeo assiacutencrona com a parte web mantendo asvantagens da recursividade do prolog

4234 Estrutura da base de conhecimento

A base de conhecimento apoacutes a definiccedilatildeo do formato de representaccedilatildeo das regras e dasquestotildees eacute a seguinte

q u e s t i o n ( t u r n _ o v e r rsquoO c a r r o l i g a rsquo

2 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

4 q u e s t i o n ( l i g h t s _ w e a k rsquoAs l u z e s e s t a o f r a c a s rsquo

58

42 MOTOR DE INFEREcircNCIA

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

6

q u e s t i o n ( rad io_weak rsquoO r a d i o e s t a f r a c o rsquo

8 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

10 q u e s t i o n ( s m e l l _ g a s rsquo C h e i r a a g a s o l i n a rsquo

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

12

q u e s t i o n ( gas_gauge rsquoO que marca o p o n t e i r o do d e p o s i t o da

g a s o l i n a rsquo

14 [ answer ( empty rsquo Vazio rsquo ) answer ( high rsquo S u f i c i e n t e rsquo ) answer

( low rsquo Rese rva rsquo ) ] 0 )

16 r u l e ( r u l e _ 1 rsquo Rule 1 rsquo

l h s ( [ ev ( t u r n _ o v e r no ) ev ( b a t t e r y _ b a d yes ) ] ) r h s ( ev (

problem b a t t e r y ) 100) )

18

r u l e ( r u l e _ 2 rsquo Rule 2 rsquo

20 l h s ( [ ev ( l i g h t s _ w e a k yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

22 r u l e ( r u l e _ 3 rsquo Rule 3 rsquo

l h s ( [ ev ( rad io_weak yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

24

r u l e ( r u l e _ 4 rsquo Rule 4 rsquo

26 l h s ( [ ev ( s m e l l _ g a s yes ) ev ( t u r n _ o v e r yes ) ] ) r h s ( ev ( problem

f l o o d e d ) 80) )

28 r u l e ( r u l e _ 5 rsquo Rule 5 rsquo

l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge empty ) ] ) r h s ( ev (

problem o u t _ o f _ g a s ) 90) )

30

r u l e ( r u l e _ 6 rsquo Rule 6 rsquo

32 l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge low ) ] ) r h s ( ev ( problem

o u t _ o f _ g a s ) 30) ) Coacutedigo 6 Representaccedilatildeo da base de conhecimento do protoacutetipo

59

CAPIacuteTULO 4 WEXSYS

4235 Algoritmos a utilizar

Um dos paracircmetros mais relevantes para o funcionamento do algoritmo inicial eacute o graumiacutenimo de confianccedila que eacute indicado no iniacutecio da utilizaccedilatildeo do sistema na paacutegina inicialSe o valor indicado para este paracircmetro for demasiado elevado poderaacute inibir algumasregras impedindo o seu disparo no caso de natildeo ser atingido o grau de confianccedila necessaacuterioPor outro lado se o valor introduzido for demasiado baixo permitiraacute que qualquer regradispare independentemente do seu grau de confianccedila traduzindo-se numa maior aacutervorede pesquisa

O motor de inferecircncia eacute executado mediante o recurso a um predicado principal Estepredicado seraacute o responsaacutevel pelo iniacutecio do processo de inferecircncia De seguida seratildeoapresentados alguns dos algoritmos considerados mais relevantes Os algoritmos 1 2 e 3representam atraveacutes da utilizaccedilatildeo de pseudo-coacutedigo alguma da loacutegica implementada nomotor de inferecircncia

Algoritmo 1 Algoritmo principal do motor de inferecircnciabegin tryToProve

while empty ControlObj doobtemRegra (r)disparoPremissaslarr truefor premissa isin LHS do

ControlObjdisparoularr verificaPremissa (p)disparoPremissaslarr disparoPremissas ampamp disparouif not empty ControlObj then

termina o algoritmoend

endif empty ControlObj then

if disparoTodasPremissas thenfireRules

endend

endend

60

42 MOTOR DE INFEREcircNCIA

Algoritmo 2 Verifica se uma premissa eacute verdadeirainput Premissa poutput ControlObj disparoubegin verificaPremissa

disparoularr false ControlObjlarr nullif checkExistFact (p) ou checkExistQuestionFact (p) oucheckExistRuleFact (pControlObj) then

disparoularr true exitend

end

Algoritmo 3 Dispara as regras que possam ser disparadasbegin fireRules

for regra isin basedeconhecimento doif regra not fired then

if regra pode disparar thencalcula grau de confianccediladispara regraif regra dispara soluccedilatildeo final then

termina execuccedilatildeo preenchendo ControlObjendif regra natildeo dispara soluccedilatildeo final then

continuaend

endend

endend

61

CAPIacuteTULO 4 WEXSYS

424 Resultado final

Apoacutes a implementaccedilatildeo do protoacutetipo inicial do motor de inferecircncia e dos testes necessaacuteriosagrave verificaccedilatildeo do bom funcionamento do mesmo chegamos ao resultado final que foiutilizado no wexsys

Este novo motor de inferecircncia foi desenvolvido levando em consideraccedilatildeo todasas caracteriacutesticas consideradas essenciais tanto para a execuccedilatildeo num ambiente multi-utilizador como para a execuccedilatildeo num servidor web e que foram jaacute descritas nas secccedilotildeesanteriores De referir ainda que face ao motor de inferecircncia do sistema base esteapresenta uma seacuterie de melhorias tais como rapidez de funcionamento e abstracccedilatildeo dabase de conhecimento utilizada

4241 Arranque da execuccedilatildeo

Como jaacute referido o motor de inferecircncia segue os algoritmos descritos na secccedilatildeo 4235 enesta secccedilatildeo seraacute abordado o processo utilizado desde o arranque do motor de inferecircnciaateacute agrave apresentaccedilatildeo dos dados como podemos ver na figura 19

Figura 19 Paacutegina inicial do motor de inferecircncia

O utilizador comeccedila na paacutegina inicial e selecciona a opccedilatildeo ldquoMotor de InferecircnciardquoDepois eacute apresentada uma paacutegina que permite iniciar o motor de inferecircncia utilizando a

62

42 MOTOR DE INFEREcircNCIA

opccedilatildeo ldquoiniciarrdquo Isto despoleta o mecanismo de inferecircncia como podemos verificar nafigura 20

Figura 20 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia

A classe YProlog invoca o predicado top_goals que mais natildeo eacute que o ponto de entradano motor de inferecircncia A sua funccedilatildeo seraacute obter qual a ldquoconclusatildeo final a procurarrdquo (estetoacutepico seraacute descrito na secccedilatildeo 432) para se poder iniciar o algoritmo propriamentedito Na listagem de coacutedigo 7 eacute possiacutevel consultar os predicados responsaacuteveis pelaimplementaccedilatildeo dos algoritmos Apenas estatildeo listados os predicados principais

Eacute possiacutevel consultar o coacutedigo do motor de inferecircncia no anexo A

t o p _ g o a l s ( Con t ro lOb j MinCF ) minus

2 t o p _ g o a l ( TopGoal )

t o p ( TopGoal Con t ro lOb j MinCF )

63

CAPIacuteTULO 4 WEXSYS

4

t o p ( TopGoal Con t ro lOb j MinCF ) minus6 r e t r a c t a l l ( h i s t 2 ) s e t ( l en 0 )

g e t R u l e M o r e R e l e v a n t ( TopGoal Rule )

8 t r y T o P r o v e ( Rule Con t ro lOb j MinCF )

10 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) minusr u l e ( Rule _ l h s (LHS) _ )

12 p r o v e L i s t H y p (LHS Con t ro lOb j MinCF )

g e t ( l en LEN) LEN1 i s LEN + 1

14 a s s e r t ( h i s t ( LEN1 Rule ) )

s e t ( l en LEN1)

16 (

check i f r u l e has re turn c o n t r o l o b j e c t

18 ( v a r ( C o n t r o l O b j ) ) minusgt(

no c o n t r o l o b j e c t found check i f o t h e r r u l e s needs t o

be f i r e d

20 f i r e R u l e s ( Con t ro lOb j MinCF )

) (

22 c o n t r o l o b j e c t found

t rue24 )

)

26

p r o v e L i s t H y p ( [ ] Con t ro lOb j MinCF )

28 p r o v e L i s t H y p ( [H | T ] Con t ro lOb j MinCF ) minusproveHyp (H Con t ro lOb j MinCF )

30 (

( v a r ( C o n t r o l O b j ) ) minusgt (

32 p r o v e L i s t H y p ( T Con t ro lOb j MinCF )

) (

34 t rue)

36 )

38

f a c t a l r e a d y known

40 proveHyp (H Con t ro lOb j MinCF ) minus

64

42 MOTOR DE INFEREcircNCIA

H = ev (X Y) f a c t (X Y _ )

42

t h e r e i s a q u e s t i o n t h a t can l e a d t o a f a c t

44 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

n o t ( f a c t (X _ _ ) )

46 q u e s t i o n (X _ _ _ )

n o t ( n o t _ q u e s t i o n (X) )

48 C o n t r o l O b j = ask (X)

50 t h e r e i s a c o n c l u s i o n t h a t can

l e a d t o a q u e s t i o n t h a t can l e a d t o a f a c t

52 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

r u l e ( Rule _ l h s (LHS) r h s ( ev (X _ ) V) )

54 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) Coacutedigo 7 Predicados principais do motor de inferecircncia

4242 Mecanismo de respostas

O mecanismo de respostas eacute algo similar ao processo descrito anteriormente A suafunccedilatildeo seraacute guardar a resposta que foi seleccionada pelo utilizador e prosseguir com oalgoritmo de forma a que uma nova questatildeo seja colocada ou a soluccedilatildeo final alcanccedilada

Um paracircmetro considerado obrigatoacuterio na submissatildeo de uma resposta eacute o grau deconfianccedila Este valor serviraacute para realizar o caacutelculo do grau de confianccedila da regra quandoa mesma puder ser disparada

Podemos ver na figura 21 o processo de resposta a uma questatildeo

65

CAPIacuteTULO 4 WEXSYS

Figura 21 Fluxo de invocaccedilatildeo de resposta a uma questatildeo

Eacute ainda possiacutevel natildeo responder agrave questatildeo colocada utilizando a opccedilatildeo ldquonatildeo sei natildeoresponderrdquo Esta opccedilatildeo iraacute guardar internamente uma indicaccedilatildeo para natildeo voltar a colocara questatildeo ignorada evitando entrar em ciclos

Agrave medida que o processo avanccedila eacute possiacutevel acompanhar o estado actual do motor deinferecircncia Este acompanhamento eacute realizado mediante a anaacutelise da zona situada do ladodireito da paacutegina e que vai sendo actualizada a cada interacccedilatildeo com o motor de inferecircnciaA zona referida permite obter informaccedilotildees acerca de

bull Regras que jaacute foram disparadas

bull Factos que foram inferidos pelo disparo das regras

bull Factos que foram facultados pelo utilizador ao responder agraves questotildees

bull Factos conhecidos antes do iniacutecio do processo de inferecircncia

66

42 MOTOR DE INFEREcircNCIA

Estes factos satildeo obtidos atraveacutes do predicado ldquoinf_sys((L_Rules L_Inf_Facts L_Know_FactsL_Init_Facts)rdquo Este predicado eacute invocado apoacutes cada interacccedilatildeo com o motor de inferecircnciae desta forma os dados estatildeo sempre actualizados

4243 Conclusatildeo final encontrada

Quando o disparo de uma regra leva a que seja adicionado um facto que corresponde auma soluccedilatildeo final o motor de inferecircncia termina a sua execuccedilatildeo devolvendo a conclusatildeofinal a que chegou bem como o respectivo grau de confianccedila Na figura 22 podemos ver afase final do processo de inferecircncia O grau de confianccedila da conclusatildeo final eacute atribuiacutedocom recurso agrave foacutermula seguinte

Dada uma regra X com premissas P1 a Pn e CF =CF (X) entatildeo temos

CF(X P1 Pn) = min [CF(P1) CF(Pn)]timesCF(X)

Figura 22 Conclusatildeo da inferecircncia

4244 Explicaccedilotildees

Eacute possiacutevel em qualquer altura colocar a questatildeo ldquoporquecircrdquo antes de submetermos umaresposta ou a questatildeo ldquocomordquo apoacutes uma conclusatildeo final Este tipo de explicaccedilotildeescontribui para a fase de validaccedilatildeo do sistema pericial colocando-as ao dispor do perito

67

CAPIacuteTULO 4 WEXSYS

responsaacutevel pela validaccedilatildeo expondo desta forma o raciociacutenio seguido no decorrer dainferecircncia Exemplos da solicitaccedilatildeo de explicaccedilotildees podem ser consultados atraveacutes dasfiguras 23 24 e 25

Figura 23 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo

68

42 MOTOR DE INFEREcircNCIA

Figura 24 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia

Figura 25 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final

69

CAPIacuteTULO 4 WEXSYS

As explicaccedilotildees ldquoporquecircrdquo foram implementadas recorrendo a predicados temporaacuterios(hist) que acompanham o desenrolar do motor de inferecircncia Eacute possiacutevel em qualqueraltura consultar esses predicados para obter de uma forma imediata a explicaccedilatildeo doporquecirc da questatildeo estar a ser feita

As explicaccedilotildees ldquocomordquo jaacute seguem um mecanismo mais complexo Quando umaregra eacute disparada origina conclusotildees intermeacutedias ou finais essas conclusotildees natildeo satildeo maisdo que simples factos O motor de inferecircncia sempre que dispara uma regra associa aofacto a regra que o originou por intermeacutedio do predicado inf_exp_how

Desta forma basta algum coacutedigo para que seja possiacutevel a obtenccedilatildeo de ambas asexplicaccedilotildees Esse coacutedigo pode ser consultado na listagem 8 em que os predicados why ehow se referem agraves explicaccedilotildees ldquoporquecircrdquo e ldquocomordquo respectivamente

why ( L ) minus

2 f i n d a l l ( r (OX) h i s t (OX) L )

4 how ( A t t r Value R e s u l t ) minusin f_exp_how ( A t t r Value Ru le s )

6 explainHow ( Rules E x p l a n a t i o n )

append ( Rules E x p l a n a t i o n R e s u l t )

8

explainHow ( [ ] [ ] )

10 explainHow ( [H | T ] R e s u l t ) minusi n n e r E x p l a i n (H E x p l a n a t i o n H )

12 explainHow ( T E x p l a n a t i o n R u l e s )

append ( Explana t ionH E x p l a n a t i o n R u l e s R e s u l t )

14

16 i n n e r E x p l a i n ( Rule E x p l a n a t i o n ) minusr u l e ( Rule _ l h s (LHS) _ )

18 expla inLHS (LHS E x p l a n a t i o n )

20 expla inLHS ( [ ] [ ] )

expla inLHS ( [ ev ( A t t r Value ) | T ] E x p l a n a t i o n A ) minus22 n o t ( inf_exp_how ( A t t r Value _ ) )

f a c t ( A t t r Value _ )

24 expla inLHS ( T E x p l a n a t i o n A )

70

43 BASE DE CONHECIMENTO

26 expla inLHS ( [ ev ( A t t r Value ) | T ] Resu l tA ) minushow ( A t t r Value E x p l a n a t i o n A )

28 expla inLHS ( T E x p l a n a t i o n )

append ( Explana t ionA E x p l a n a t i o n Resu l tA ) Coacutedigo 8 Predicados principais do sistema de explicaccedilotildees

43 Base de conhecimento

A base de conhecimento armazena o conhecimento extraiacutedo de um ou mais peritos e con-siste numa seacuterie de factos e regras acerca de um determinado domiacutenio Sendo dependenteda aacuterea que se pretende abranger com o sistema pericial a base de conhecimento eacute deconstruccedilatildeo especiacutefica para cada situaccedilatildeo em que seja necessaacuterio desenvolver este tipo desistema

Os procedimentos de inserccedilatildeo actualizaccedilatildeo e remoccedilatildeo dos factos e regras que com-potildeem a base de conhecimento (gestatildeo da base de conhecimento) teratildeo que ser na medidado possiacutevel procedimentos simples que sejam facilmente compreendidos pelos utilizado-res

As funcionalidades de gestatildeo da base de conhecimento estatildeo disponiacuteveis na opccedilatildeoldquoBase de Conhecimentordquo da paacutegina inicial como podemos observar na figura 26

71

CAPIacuteTULO 4 WEXSYS

Figura 26 Paacutegina inicial da gestatildeo da base de conhecimento

431 Leitura da base de conhecimento

Ao iniciar a execuccedilatildeo a base de conhecimento eacute carregada para memoacuteria a partir de umficheiro Este processo eacute realizado de forma iterativa e de acordo com uma determinadasequecircncia regras questotildees conclusatildeo final e por uacuteltimo os factos iniciais

Por sua vez o carregamento das regras eacute efectuado em duas fases sendo que primeirosatildeo obtidas as regras existentes (ldquoretrieve_rules(L)rdquo) e depois para cada regra eacute construiacutedaa sua estrutura (ldquobuildRuleObjectrdquo) Podemos observar a descriccedilatildeo deste processo nafigura 27

72

43 BASE DE CONHECIMENTO

Figura 27 Processo de carregamento das regras

Quanto ao carregamento das questotildees eacute similar ao das regras jaacute que eacute efectuadoigualmente em duas fases Primeiro obtecircm-se todas as questotildees (ldquoretrieve_questions(L)rdquo)e depois para cada questatildeo eacute preenchida a sua estrutura (ldquobuildQuestionObjectrdquo)

Jaacute o carregamento da conclusatildeo final eacute realizado atraveacutes do predicado ldquotop_goal(L)rdquoEste predicado vai devolver a conclusatildeo final guardada

Por fim os factos iniciais satildeo obtidos reutilizando um processo de obtenccedilatildeo de factos(ldquoinf_sys((L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)rdquo) Este processo jaacute foireferido na secccedilatildeo que descreve o motor de inferecircncia (4242)

432 Conclusatildeo final a encontrar

A conclusatildeo final a encontrar representa o predicado que vai ser considerado comoobjectivo no decorrer do motor de inferecircncia Soacute vatildeo ser consideradas soluccedilotildees queconvergem para uma soluccedilatildeo final que contenha o predicado especificado no RHS

Para definir uma conclusatildeo final basta especificar o nome do predicado da soluccedilatildeoque pretendemos encontrar com o motor de inferecircncia

73

CAPIacuteTULO 4 WEXSYS

433 Factos iniciais

Os factos iniciais permitem adicionar conhecimento preacutevio a uma base de conhecimentoPara adicionaacute-los eacute necessaacuterio utilizar o botatildeo ldquoAdicionar facto inicialrdquo e preencher oscampos necessaacuterios Para remover um facto inicial previamente inserido eacute utilizado obotatildeo ldquoRemover facto inicialrdquo e eacute necessaacuterio confirmar a acccedilatildeo que se estaacute a efectuar deforma a evitar uma remoccedilatildeo acidental

434 Regras

As regras satildeo o ponto essencial da gestatildeo da base de conhecimento As regras satildeo osdados disponiacuteveis para a aplicaccedilatildeo e como tal quanto melhor forem definidas melhorqualidade a aplicaccedilatildeo teraacute no sentido em que os resultados seratildeo mais correctos e fiaacuteveis

4341 CriarAlterar uma regra

O processo de criaccedilatildeo de uma nova regra foi simplificado Jaacute natildeo eacute necessaacuterio conhecera sintaxe das regras e tambeacutem jaacute natildeo eacute necessaacuterio conhecer os factos a utilizar comopremissas

Para adicionar uma regra apenas temos que arrastar questotildees eou conclusotildees inter-meacutedias de forma a construir a regra que pretendemos inserir

No caso de estarmos a alterar uma regra ou no caso de termos adicionado uma questatildeoou conclusatildeo intermeacutedia incorrectamente podemos eliminar essa premissa simplesmenteseleccionando a ldquocheckboxrdquo respectiva e utilizar a opccedilatildeo ldquoRemover seleccionadosrdquo

74

43 BASE DE CONHECIMENTO

Figura 28 Introduzir uma nova regra

Apoacutes termos arrastado todas as questotildees eou conclusotildees intermeacutedias para a lista depremissas temos que indicar os respectivos valores Este processo estaacute simplificado nosentido em que apenas temos que utilizar a caixa de selecccedilatildeo agrave frente de cada controlo eseleccionar o respectivo valor

Os valores apresentados satildeo obtidos de forma diferente quer se trate de uma questatildeo oude uma conclusatildeo intermeacutedia No caso das questotildees os valores obtidos satildeo os indicadosaquando da sua inserccedilatildeo No caso das conclusotildees intermeacutedias satildeo obtidos todos os valoresutilizados nas regras ateacute ao momento Sempre que uma regra eacute inserida ou actualizadaeacute despoletado um processo que actualiza os valores das conclusotildees intermeacutedias com osnovos valores introduzidos

75

CAPIacuteTULO 4 WEXSYS

Figura 29 Apresentaccedilatildeo de valores configurados na questatildeo

4342 Questotildees

As questotildees acabam por ser o ponto de contacto da aplicaccedilatildeo com o utilizador Sempreque eacute necessaacuterio suspender o processamento para questionar o utilizador este teraacute ahipoacutetese de intervir na execuccedilatildeo Atraveacutes das questotildees colocadas vai ser possiacutevel inferiroutros factos que no final e numa situaccedilatildeo ideal conduzem a uma soluccedilatildeo possiacutevel

Uma questatildeo eacute identificada por um coacutedigo por uma descriccedilatildeo e ainda por um conjuntode valores possiacuteveis as respostas Quando inserimos uma nova regra podemos criar novasquestotildees utilizando a opccedilatildeo ldquoAdicionar uma questatildeordquo Surge entatildeo o formulaacuterio deintroduccedilatildeo de uma questatildeo como podemos ver na figura 30

Figura 30 Formulaacuterio de introduccedilatildeo de uma questatildeo

As respostas configuradas no formulaacuterio de introduccedilatildeo seratildeo as respostas que iratildeoaparecer quando inserirmos uma nova regra e arrastarmos a questatildeo para a lista depremissas

76

43 BASE DE CONHECIMENTO

4343 Verificaccedilatildeo

Apoacutes a introduccedilatildeo ou alteraccedilatildeo das regras deve ser realizado o processo de verificaccedilatildeoda base de conhecimento De uma forma quase imperceptiacutevel na fase de introduccedilatildeode regras estamos a activar este processo jaacute que eacute garantido que as regras introduzidasestatildeo coerentes e que os valores das premissas efectivamente existem Podemos dizerque estamos perante a primeira fase do processo de verificaccedilatildeo designado por verificaccedilatildeoproacute-activa

Para este trabalho foi considerado a verificaccedilatildeo de dois tipos de anomalia na base deregras redundacircncia e regras duplicadas A inclusatildeo de novos mecanismos de verificaccedilatildeoeacute possiacutevel bastando para isso a alteraccedilatildeo do predicado ldquoverification(L)rdquo

A grande diferenccedila entre os dois meacutetodos implementados eacute que uma regra redundanteadiciona conhecimento desnecessaacuterio agrave base de conhecimento enquanto que uma regraduplicada como o nome indica eacute apenas uma duplicaccedilatildeo do conhecimento

Na figura 31 podemos verificar o mecanismo de verificaccedilatildeo implementado que permiteidentificar que regra estaacute em conflito com que outra regra e qual o tipo de conflito

Figura 31 Verificaccedilatildeo da base de conhecimento

435 Gravaccedilatildeo da base de conhecimento

O processo de gravaccedilatildeo da base de conhecimento eacute similar ao processo de leitura com adiferenccedila de natildeo ser iterativo O processo de gravaccedilatildeo da base de conhecimento iniciacom a acccedilatildeo do utilizador na opccedilatildeo ldquoFinalizarrdquo que invoca o meacutetodo ldquosaveAll()rdquo doWexsysKBBean O resto do processo pode ser observado na figura 32

77

CAPIacuteTULO 4 WEXSYS

Figura 32 Processo de gravaccedilatildeo da base de conhecimento

436 Conversatildeo GISPSA

A conversatildeo da base de conhecimento do GISPSA para o formato wexsys foi efectuada emduas fases Na primeira fase foi feita uma migraccedilatildeo sintaacutectica da forma de representaccedilatildeode regras utilizada para a forma utilizada pelo wexsys Na segunda fase foi efectuadoum processo manual de conversatildeo

O sistema anterior delegava nas regras alguns predicados utilizados unicamente parao sistema de explicaccedilotildees Esta caracteriacutestica tornou a migraccedilatildeo algo morosa jaacute que eranecessaacuterio proceder agrave anaacutelise regra a regra de quais os predicados necessaacuterios e quais osdescartaacuteveis

78

44 ANAacuteLISE GRAacuteFICA

44 Anaacutelise graacutefica

Para aleacutem do motor de inferecircncia e da gestatildeo da base de conhecimento foi implemen-tado como prova de conceito um sistema graacutefico que permite observar facilmente arepresentaccedilatildeo de uma base de conhecimento sob a forma de um grafo

Este sistema permite visualizar e consultar a explosatildeo combinatoacuteria das regras edas premissas que as compotildeem Este tipo de ferramenta pode ser bastante uacutetil quandoutilizado nas tarefas de validaccedilatildeo por parte do perito Desta forma o perito consegue deuma forma visual e simples verificar o relacionamento entre as conclusotildees e as premissas

441 Implementaccedilatildeo

Esta funcionalidade foi implementada recorrendo agrave utilizaccedilatildeo de um controlo externodesignado por TGGraphLayout e desenvolvido por Alexander Shapiro (2010) O controlodisponibiliza uma applet que encapsula funcionalidades que permitem a interacccedilatildeo graacuteficacom a representaccedilatildeo de um grafo

Por se tratar de uma applet a comunicaccedilatildeo com os managed beans torna-se tecnica-mente mais difiacutecil de implementar Esse motivo levou agrave necessidade de criaccedilatildeo de umaservlet para simplificar o processo de interacccedilatildeo entre a aplicaccedilatildeo e a applet do controlovisual

A servlet WexsysServlet foi criada para dar suporte agrave comunicaccedilatildeo com o mana-

ged bean WexsysKBBean sendo este responsaacutevel pela obtenccedilatildeo dos dados no formatoreconhecido pelo controlo

O controlo teve que ser alterado de forma a permitir a interacccedilatildeo com a servlet bemcomo efectuar o tratamento dos dados no formato especificado ou seja criar uma espeacuteciede protocolo de comunicaccedilatildeo

O algoritmo 4 resume a implementaccedilatildeo efectuada ao niacutevel da applet e o algoritmo 5demonstra de que forma esses dados satildeo obtidos

442 Funcionamento

O grafo resultante eacute construiacutedo a partir de uma posiccedilatildeo inicial designada por ponto departida Eacute utilizada a designaccedilatildeo ldquordquo para simplificar a identificaccedilatildeo no grafo eeacute possiacutevel ver o resultado da paacutegina inicial na figura 33

As conclusotildees satildeo representadas por rectacircngulos com um fundo branco e as premissassatildeo identificadas por rectacircngulos com fundo azul

79

CAPIacuteTULO 4 WEXSYS

Algoritmo 4 Algoritmo responsaacutevel pelo desenho da appletinput graphPaths graphConclusionsbegin drawGraph

initializeNodes ()for path isin graphPaths do

init oldfor step isin path do

if nodes do not contain step thenbuildNode (step)

endif step is first then

oldlarr stepelse

addEdge (old step)oldlarr step

endend

endcreateStartNode ()linkUnlinkedNodesToStartNode ()

end

O ponto de partida liga-se entatildeo agraves regras que apenas contenham premissas quesejam questotildees construindo o grafo de possibilidades Apoacutes identificar as regras quesatildeo representadas com ligaccedilatildeo ao ponto de partida satildeo tratadas as restantes regrasconstruindo o resto do grafo agrave medida que as regras satildeo avaliadas

Eacute possiacutevel centrar o grafo numa premissa ou numa conclusatildeo Ao centrarmos ografo satildeo mantidos apenas os noacutes que se ligam directamente ao noacute que seleccionaacutemosNo entanto eacute possiacutevel expandir um noacute sem este tipo de comportamento bastando paraisso utilizar as funcionalidades disponiacuteveis ao pressionar a tecla direita do rato sobre o

Figura 33 Paacutegina inicial da anaacutelise graacutefica

80

44 ANAacuteLISE GRAacuteFICA

Algoritmo 5 Algoritmo para construccedilatildeo dos dados do grafooutput graphPaths and grapConclusionsbegin retrieveGraphPathAndConclusions

questionslarr gatherQuestionfor rule isin rules do

isFinalRulelarr conclusaoFinal igual RHS de ruleif isFinalRule then

add rule to grapConclusionssimpleRulelarr truegraphPathslarr nullfor premissa isin ruleLHS do

isConditionAskablelarr questions contains premissaif isConditionAskable then

add premissa and value to graphPathselse

simpleRulelarr falseretrieveGraphFromAtom (premissa)add result to graphPaths

endend

endend

end

respectivo noacute As funcionalidades disponiacuteveis satildeo expandir colapsar esconder e centrare satildeo auto-descritivas pelo que dispensam qualquer explicaccedilatildeo do seu funcionamento

Figura 34 Exemplo de grafo totalmente expandido

Eacute possiacutevel utilizar esta funcionalidade para identificarmos um cenaacuterio especiacuteficopor exemplo para consultar quais as premissas necessaacuterias para a obtenccedilatildeo de umadeterminada soluccedilatildeo

81

CAPIacuteTULO 4 WEXSYS

Figura 35 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto

443 Limitaccedilotildees

Esta funcionalidade no seu estado actual apresenta algumas limitaccedilotildees Conveacutem referirantes de mais que esta soluccedilatildeo natildeo eacute uma alternativa ao motor de inferecircncia mas sim umaferramenta de apoio visual auxiliar ao mesmo

Das limitaccedilotildees existentes salientam-se as seguintes

bull a utilizaccedilatildeo deste controlo obriga a que o utilizador esteja familiarizado com aspremissas e os seus valores Natildeo estatildeo disponiacuteveis os textos de apoio para aspremissas da mesma forma que satildeo mostrados no motor de inferecircncia Umapossiacutevel soluccedilatildeo passaria pela interacccedilatildeo da applet com a servlet para atraveacutes domecanismo de ajax push despoletar a actualizaccedilatildeo da JSP mostrando o texto doelemento seleccionado

bull o tamanho dos noacutes eacute grande quando comparado com o espaccedilo disponiacutevel nocontrolo o que por vezes obriga a algumas sobreposiccedilotildees dos noacutes tornado-oimperceptiacutevel Este problema pode ser observado na figura 34 Para atenuar esteproblema existem controlos que permitem modificar o factor de ampliaccedilatildeo rodar ocontrolo e controlar o grau de visualizaccedilatildeo hiperboacutelica

bull apoacutes a navegaccedilatildeo no grafo perde-se de alguma forma o contexto que o originouEste problema pode ser observado na figura 35

82

5Conclusotildees

Ateacute que ponto eacute que um software consegue efectivamente substituir um ser humanoquando estamos a falar de raciociacutenio Se esse raciociacutenio for estritamente linear seguindoum determinado percurso com alguns desvios ao longo do mesmo que acabam por ditarum desfecho diferente consoante as decisotildees que vatildeo sendo tomadas a substituiccedilatildeo podemesmo ser efectiva e ateacute mesmo melhor em alguns casos

Um perito natildeo eacute no entanto algueacutem que se limita a dizer sim ou natildeo ou algueacutem queapenas decide se eacute necessaacuterio seguir por este caminho ou aquele Um perito normalmenteobserva dados e factos e infere sobre os mesmos tendo a sensibilidade para em muitasocasiotildees conseguir ateacute mesmo obter a soluccedilatildeo final muito antes de terminar a anaacutelise detodos os paracircmetros A isso chama-se conhecimento heuriacutestico natildeo linear afectada poruma enormidade de factores que apenas eacute possiacutevel encontrar num ser humano

Estes factores podem ter tanto de beneacutefico como de nocivo Ao natildeo analisar atotalidade dos dados um perito poderaacute incorrer num erro ou mesmo tendo-os analisadoateacute ao fim poderaacute natildeo ter estado completamente atento ou compenetrado no que estavaa fazer pelo mero facto de poder estar cansado ou indisposto para executar tal tarefanaquele preciso momento

Um sistema pericial pode realmente ser uma mais valia no sentido em que estaacutetotalmente desprovido de emoccedilotildees e fadiga ao contraacuterio de um ser humano Paraaleacutem disto natildeo eacute necessaacuterio temer que o sistema pericial se desloque a uma qualquerlocalizaccedilatildeo remota e de difiacutecil acesso ou que chegue fora do horaacuterio previsto limitadopelos atrasos de uma simples viagem

Todos estes factos podem realmente ser considerados quando analisamos o funciona-mento do GISPSA Efectivamente trata-se de um sistema pericial estaacute sempre disponiacutevele totalmente desprovido de caracteriacutesticas humanas que poderiam eventualmente toldaro raciociacutenio do mesmo No entanto este sistema carecia de algo muito importante a

83

CAPIacuteTULO 5 CONCLUSOtildeES

acessibilidade a partir de qualquer local em qualquer hora e por parte de vaacuterios utilizado-res em simultacircneo de modo imediato e sem preacute-aviso Antes de mais o GISPSA eacute umaaplicaccedilatildeo de execuccedilatildeo local e natildeo foi de todo desenvolvida para funcionamento em redeComo tal o acesso agrave mesma estava agrave partida bastante limitado Depois cada instalaccedilatildeoapenas permitia a interacccedilatildeo com um utilizador de cada vez Existem ainda algumaslimitaccedilotildees identificadas no GISPSA que foram ultrapassadas com o desenvolvimento dowexsys tais como manutenccedilatildeo da base de conhecimento capacidade de raciocinar sobreconhecimento incerto e a implementaccedilatildeo de meacutetodos de verificaccedilatildeo

Hoje em dia eacute possiacutevel aceder a uma rede global (a internet) a partir de qualquer pontodo planeta e isto torna igualmente possiacutevel disponibilizar uma aplicaccedilatildeo de forma a quequalquer pessoa a consiga utilizar a qualquer hora e a partir de qualquer local O wexsysaplica essa transformaccedilatildeo ao GISPSA e leva-o ao proacuteximo patamar evolutivo

Como qualquer evoluccedilatildeo tambeacutem esta pretende natildeo soacute dotar a nova versatildeo comfuncionalidades que a anterior natildeo possuiacutea como tambeacutem pretende melhorar e corrigiros problemas que eventualmente foram encontrados Ao longo do tempo de utilizaccedilatildeodo GISPSA verificaram-se algumas coisas que podiam e deviam ser substituiacutedas Aleacutemdisto a proacutepria evoluccedilatildeo dos sistemas graacuteficos e de interacccedilatildeo colocaram o GISPSAcomo uma aplicaccedilatildeo de visual jaacute algo ultrapassado aspecto que tambeacutem carecia de umarevisatildeo para a realidade mais actual

A opccedilatildeo pela incorporaccedilatildeo do wexsys num portal teve a ver com as grandes capacida-des que este tipo de infra-estuturas tem hoje em dia Impulsionados por empresas comoa IBM os portais web representam janelas de negoacutecio com ligaccedilatildeo ao mundo e com aspotencialidades que daiacute advecircm Caracteriacutesticas como a facilidade de acesso sistemas debackup manutenccedilatildeo de tempos de uptime elevados rapidez de funcionamento facilidadede funcionamento e leitura entre muitas outras representam uma mais valia para estetipo de alojamento de aplicaccedilotildees

51 Contributos da soluccedilatildeo desenvolvida

O grande objectivo a que este trabalho se propunha foi alcanccedilado e consistia na criaccedilatildeode um sistema pericial baseado no GISPSA mas que pudesse ser acedido a partir deuma rede tornando-o global Os restantes objectivos foram igualmente alcanccedilados e oresultado final mostra-se soacutelido e fiaacutevel para candidato efectivo agrave substituiccedilatildeo do sistemaque lhe daacute a base No entanto existem outros pontos positivos na soluccedilatildeo encontradaquando comparada com outros sistemas periciais jaacute referidos nos capiacutetulos anteriores

84

51 CONTRIBUTOS DA SOLUCcedilAtildeO DESENVOLVIDA

Esses sistemas satildeo o LOMA o MDSS e o Whale watcherAo proceder a uma comparaccedilatildeo com estes sistemas a soluccedilatildeo desenvolvida neste

trabalho apresenta algumas vantagens Desde logo estamos a falar de aplicaccedilotildees web

com periacuteodos de desenvolvimento diferentes o que implica a utilizaccedilatildeo de tecnologiasdiferentes A vantagem da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo mais recentes dinacircmi-cas eficazes e visualmente mais apelativas coloca o wexsys num patamar efectivamentesuperior Para aleacutem disso o wexsys pode (como resultado da utilizaccedilatildeo dessas mesmastecnologias) ser facilmente integrado noutras aplicaccedilotildees como webservices ou portaisenquanto que os outros sistemas natildeo

Outra das particularidades dos sistemas estudados eacute que natildeo possuem (de acordocom as respectivas documentaccedilotildees) mecanismos de verificaccedilatildeo de regras e sempre queeacute necessaacuterio proceder a alteraccedilotildees a essas mesmas regras o utilizador teraacute que ter umconhecimento profundo acerca da sintaxe utilizada (gramaacutetica riacutegida) Para aleacutem distotambeacutem natildeo possuem (com excepccedilatildeo do MDSS) suporte a vaacuterias liacutenguas

Jaacute quanto agrave questatildeo da capacidade de funcionamento multi-utilizador apesar deestarmos a falar de aplicaccedilotildees web os sistemas estudados neste documento natildeo estatildeopreparados para cargas de processamento demasiado elevadas porque natildeo foi contempladaa possibilidade de um funcionamento distribuiacutedo o que permitiria aliviar a carga deprocessos e aumentar o nuacutemero maacuteximo de utilizadores

Para descrever mais em detalhe os objectivos alcanccedilados com a soluccedilatildeo propostapassamos a enunciaacute-los

bull Criaccedilatildeo de uma aplicaccedilatildeo web - Ao criar a nova aplicaccedilatildeo a questatildeo da distribuiccedilatildeodessa mesma aplicaccedilatildeo atraveacutes de uma rede era fulcral jaacute que permitiria uma seacuteriede factores que ateacute aqui natildeo estavam disponiacuteveis A possibilidade de utilizaccedilatildeo deuma base de conhecimento global onde todos os utilizadores pudessem contribuirpara o seu melhoramento facilidade de acesso a partir de qualquer localizaccedilatildeodisponibilidade a qualquer hora e dia capacidade de realizaccedilatildeo de backups paragarantir a continuidade dos dados e muacuteltiplos acessos simultacircneos foram questotildeesque ficaram resolvidas com a concretizaccedilatildeo deste objectivo

bull Verificaccedilatildeo das regras - Uma das lacunas do sistema base o GISPSA era a faltade capacidade para realizar a verificaccedilatildeo das regras que era colocadas na basede conhecimento Era possiacutevel chegar a cenaacuterios de inconsistecircncia atraveacutes dacontradiccedilatildeo de regras podendo chegar a cenaacuterios em que simplesmente natildeo erapossiacutevel prosseguir com a inferecircncia das regras nem tatildeo pouco chegar a umaconclusatildeo ou soluccedilatildeo possiacutevel

85

CAPIacuteTULO 5 CONCLUSOtildeES

Ao adicionar um mecanismo de verificaccedilatildeo de regras como o foi neste caso assisti-mos natildeo soacute ao cumprimento de mais um objectivo mas tambeacutem a uma evoluccedilatildeosignificativa do novo sistema pericial que com esta caracteriacutestica se torna maisfiaacutevel e eficaz

bull Manutenccedilatildeo da base de conhecimento - Neste novo sistema eacute mais simples procederagrave actualizaccedilatildeo da base de conhecimento quer para adicionar alterar ou removerfactos na mesma Jaacute natildeo eacute necessaacuterio ter formaccedilatildeo sobre a sintaxe necessaacuteria pararealizar estas operaccedilotildees deixando de lado a rigidez que era necessaacuteria aplicarno sistema base Isto permite alargar o leque de utilizaccedilatildeo do sistema a outrosutilizadores que na versatildeo anterior natildeo teriam oportunidade para o fazer

bull Melhor usabilidade - Uma das grandes transformaccedilotildees para quem conhecia osistema anterior e encontra a nova versatildeo passa pelo aspecto visual Quando umutilizador eacute confrontado com uma aplicaccedilatildeo aquilo com que se depara eacute a parte deinteracccedilatildeo responsaacutevel por mediar o diaacutelogo entre o utilizador e a aplicaccedilatildeo per si

Quando uma aplicaccedilatildeo qualquer que ela seja possui um visual pouco atraente eapelativo para o utilizador com bototildees e janelas pouco interessantes componentesmal colocados atalhos escondidos e de difiacutecil percepccedilatildeo ou ateacute mesmo comcores pouco agradaacuteveis o utilizador acaba por seja de forma gradual ou imediataabandonar a aplicaccedilatildeo e mostra pouco interesse em voltar a utilizaacute-la a natildeo ser queseja efectivamente obrigado a fazecirc-lo

Neste trabalho atraveacutes da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo web tais comoJavascript e Ajax e ainda atraveacutes da utilizaccedilatildeo do Icefaces foi possiacutevel chegar aum visual considerado por muitos utilizadores como interessante e actual o que vaiplenamente de encontro ao objectivo proposto para este ponto

bull Multi-utilizador - Uma das grandes criacuteticas do sistema base tinha efectivamente aver com o facto de natildeo ser possiacutevel colocar mais do que um utilizador a trabalharao mesmo tempo Para tal ser possiacutevel seria necessaacuterio proceder agrave instalaccedilatildeo dosistema noutro computador e consequentemente adquirir outra licenccedila comercialde utilizaccedilatildeo

Ao adicionar a capacidade de vaacuterios utilizadores poderem estar a trabalhar nosistema em simultacircneo este objectivo verifica-se como estando cumprido na to-talidade pois natildeo apenas isso jaacute eacute possiacutevel neste novo sistema pericial como acapacidade de processamento natildeo eacute afectada jaacute que eacute possiacutevel proceder agrave colocaccedilatildeo

86

52 LIMITACcedilOtildeES E TRABALHO FUTURO

da aplicaccedilatildeo num sistema de clustering em caso de deacutefices ou carga excessiva deprocessamento

bull Sistema de explicaccedilotildees - A soluccedilatildeo proposta conteacutem um sistema de explicaccedilotildees quepode ser utilizado para obter explicaccedilotildees a perguntas do tipo ldquocomordquo e ldquoporquecircrdquoEste ponto natildeo representa uma melhoria mas sim a manutenccedilatildeo de uma funcionali-dade que o GISPSA jaacute disponibilizava

bull Anaacutelise graacutefica - Este moacutedulo eacute uma nova abordagem agrave anaacutelise de uma base deconhecimento que natildeo eacute normalmente utilizado nos sistemas periciais conhecidos eque possibilita uma anaacutelise visual facilitadora do comportamento e funcionamentoda nova soluccedilatildeo

bull Suporte a vaacuterias liacutenguas - A soluccedilatildeo proposta permite de uma forma bastantesimples a implementaccedilatildeo de novas linguagens A parte da soluccedilatildeo que envolveo sistema pericial e a parte da aplicaccedilatildeo web estatildeo preparados para esta tipo desuporte contudo a base de conhecimento natildeo contempla este mecanismo e teriaque ser implementado

bull Arquitectura - O tipo de arquitectura da soluccedilatildeo proposta permite uma simplesintegraccedilatildeo com outros tipos de aplicaccedilatildeo web como por exemplo webservices ouportais Possibilita ainda como jaacute referido a separaccedilatildeo da aplicaccedilatildeo de uma formamodular permitindo uma distribuiccedilatildeo ao niacutevel do processamento

bull Migraccedilatildeo - No processo de migraccedilatildeo da base de conhecimento foram detectados ecorrigidos alguns problemas Regras inconsistentes regras repetidas e regras quenatildeo trazem novo conhecimento foram adaptadas e resolvidas evoluindo a novabase de conhecimento para uma entidade mais fiaacutevel e consistente

52 Limitaccedilotildees e trabalho futuro

Este trabalho representa um esforccedilo no sentido de apresentar uma versatildeo melhorada dosistema GISPSA e apesar de o conseguir em muitos aspectos e essencialmente em todosaqueles que foram inicialmente propostos ficam alguns aspectos que ainda poderatildeo serimplementados futuramente e que certamente contribuiratildeo para um sistema ainda melhor

Assim apresentam-se as limitaccedilotildees identificadas e as perspectivas de trabalho futuro

87

CAPIacuteTULO 5 CONCLUSOtildeES

bull Validaccedilatildeo de regras - Apesar de ser jaacute possiacutevel neste novo sistema pericial procederagrave verificaccedilatildeo de regras como mecanismo de prevenccedilatildeo de redundacircncias e contradi-ccedilotildees ainda natildeo eacute possiacutevel a validaccedilatildeo por parte de um perito dessas mesmas regrasa natildeo ser que essa validaccedilatildeo seja feita em modo ad hoc

Seria importante a criaccedilatildeo de um modo lsquosupervisorrsquo ou modo lsquoperitorsquo paraque a aplicaccedilatildeo pudesse adoptar uma postura natildeo soacute de linguagem adaptada aum utilizador com maior formaccedilatildeo na aacuterea (como seraacute o caso de perito) mastambeacutem pudesse assumir uma postura de simulaccedilatildeo em que seriam apresentadosnatildeo soacute os passos tomados como eventuais cenaacuterios em caso de respostas diferentesIsto permitiria a um perito confrontar o seu proacuteprio conhecimento com o sistemapericial realizando desta forma uma validaccedilatildeo do funcionamento do sistema e dabase de conhecimento

Para aleacutem disto sendo uma aplicaccedilatildeo web o modo lsquosupervisorrsquo ou modo lsquope-ritorsquo poderia ser acedido a partir de qualquer siacutetio e a qualquer hora Se o responsaacute-vel pela validaccedilatildeo da base de conhecimento (normalmente o perito que contribuiucom o conhecimento) natildeo estiver disponiacutevel para o fazer por motivos de ausecircnciaou incompatibilidade de horaacuterios poderaacute sempre realizar o acesso agrave aplicaccedilatildeoa partir de um outro local agrave hora que mais lhe aprouver sem qualquer tipo deprejuiacutezo quer para o perito quer para o proacuteprio sistema

bull Muacuteltiplas conclusotildees - Com o trabalho desenvolvido apenas eacute possiacutevel atraveacutesdo disparo de uma regra final chegar a uma uacutenica conclusatildeo Deveria ser possiacutevelchegar a muacuteltiplas conclusotildees pelo que natildeo tendo sido implementado nesta versatildeoconsidera-se como uma possibilidade de trabalho futuro

Aparentemente sem qualquer relaccedilatildeo a necessidade evidenciada no ponto anteriorde criar um modo lsquosupervisorrsquo ou modo lsquoperitorsquo poderaacute levar um futurodesenvolvimento no sentido de criar as muacuteltiplas conclusotildees aqui referidas jaacute queao permitir este modo de funcionamento tambeacutem deveraacute ser possiacutevel inferir sobrevaacuterios cenaacuterios possiacuteveis e respectivas conclusotildees

bull Negaccedilatildeo de premissas - Nesta versatildeo do trabalho apenas eacute possiacutevel criar regrassem negaccedilatildeo Por exemplo num cenaacuterio em que uma pergunta ao utilizador tem aforma

Qual a cor (Vermelho Azul Verde)

e as regras que satildeo candidatas a disparo forem

88

52 LIMITACcedilOtildeES E TRABALHO FUTURO

R1 - SE cor Vermelho R2 - SE cor Azul R3 SE cor Verde

entatildeo natildeo eacute possiacutevel caso seja necessaacuterio ter uma regra do tipo

Rx - SE cor NOT XXXXX

Isso apenas seria possiacutevel se a pergunta inicial fosse

Qual NAtildeO Eacute a cor (Vermelho Azul Verde)

para assim permitir regras do tipo

Rx - SE NAtildeO Eacute cor XXXXX

Assim sendo aponta-se como uma limitaccedilatildeo e eventual trabalho futuro a desenvol-ver para outras versotildees da aplicaccedilatildeo a criaccedilatildeo de um sistema que permita a negaccedilatildeode premissas para que o exemplo atraacutes indicado seja de possiacutevel implementaccedilatildeo

bull Contemplar factos iniciais nas regras - A versatildeo actual do sistema natildeo permite ainclusatildeo de factos inicias nas premissas das regras

bull Pesquisa de muacuteltiplas soluccedilotildees finais - Actualmente soacute eacute permitido executar omotor de inferecircncia com uma soluccedilatildeo final como objectivo Seria uma evidentemais valia a inclusatildeo da capacidade de pesquisa por muacuteltiplas soluccedilotildees

bull Metaconhecimento - ao ser adicionado metaconhecimento podemos aumentar odesempenho do motor de inferecircncia nos cenaacuterios em que temos bases de conheci-mento consideravelmente grandes

bull Regra mais relevante para iniciar o motor de inferecircncia - desenvolver um algoritmopara obter uma regra que tenha uma maior probabilidade de sucesso de forma aminimizar iteraccedilotildees desnecessaacuterias

bull Validaccedilatildeo automaacutetica - quando as questotildees satildeo apagadas deve ser realizada arespectiva verificaccedilatildeo de utilizaccedilatildeo dessas questotildees como condiccedilotildees de regras paraprevenir possiacuteveis inconsistecircncias

bull Suporte a vaacuterias liacutenguas - a base de conhecimento natildeo foi projectada para imple-mentar esta funcionalidade

89

Bibliografia

Acquired Intelligence (2010) Acquire httpwwwaiincca Junho de 201025

Alexander Shapiro (2010) Tggraphlayout httpsourceforgenet

projectstouchgraph Julho de 2010 49 79

Barnett J A (1991) Calculating dempster-shafer plausibility IEEE Transactions on

Pattern Analysis and Machine Intelligence 13 599ndash602 16

Boris van Schooten (2005) Yprolog httpwwwvfutwentenl

~schootenyprolog Junho de 2010 37

Carlos Figueira Filho (2010) JEOPS - Integraccedilatildeo entre Objetos e Regras de Produccedilatildeoem Java httpwwwcinufpebr~jeops Julho de 2010 36

CoAJRA J (1997) The basics of expert (knowledge based) systems 18

Dokas I M (2005) Developing web sites for web based expert systems A webengineering approach In In Proceedings of the Second International ICSC Symposium

on Information Technologies in Environmental Engineering (Magdeburg pages 202ndash217 Shaker Verlag 26

Drakopoulos J (1994) Probabilities possibilities and fuzzy sets Fuzzy Sets and

Systems 75 1ndash15 16

Elie Levy (2010) Zilonis httpwwwzilonisorgindexphp Junho de2010 37

Ernest Friedman-Hill (2010) Jess httpwwwjessrulescom Julho de 201025 36

EXSYS (2010) Exsys corvid httpwwwexsyscom Junho de 2010 24

Filho A R (2010) Mdss medical diagnosis support system LPA - Logic ProgrammingAssociates Ltd 30

Giarratano C J Riley and D G (1998) Expert Systems - Principles and Programming

Thirds Edition Principles and Programing Course Technology 3ed edition 6 18

91

BIBLIOGRAFIA

Hammurapi Group (2010) Hammurapi rules httpwwwhammurapicom

dokuwikidokuphp Junho de 2010 36

Heckerman D (1992) The certainty-factor model 16

IBM (2010) Jlog httpwww-01ibmcomsoftwarewebsphere

productsbusiness-rule-management Junho de 2010 36

Kozlenkov Alex and Paschke (2010) Prova rule language httpprovaws

indexhtml Junho de 2010 37

Logic Programming Associaties Ltd (2010) Lpa webflex httpwwwlpacouk Abril de 2010 24

Lucas P (2001) Certainty-factor-like structures in bayesian belief networks Knowledge-

Based Systems 14 327ndash335 16

Maarten Menken (2010) Jclips httpsourceforgenetprojects

jclips Julho de 2010 25 36

Mcarniel (2010) Jruleengine httpjruleenginesourceforgenet

indexhtml Junho de 2010 37

Merritt D (1989) Building expert systems in Prolog 6 56

Michael Giordano (2010) Webclips httpclipsinterfacesourceforgenetWebCLIPSwchomehtm 28 de Julho de 2003 24

OpenL (2010) Openl tablets httpopenl-tabletssourceforgenetJulho de 2010 37

OpenRules Inc (2010) Open rules engine httpopenrulescomindex

htm Julho de 2010 37

Pinto A (1998) GISPSA - GIS problem solver adviser 1 20

RedHat (2010) Drools httpwwwjbossorgdroolsdrools-experthtml Junho de 2010 36

Shortliffe E H and Buchanan B G (1990) A model of inexact reasoning in medicinepages 259ndash275 16

Wilson N (2000) Algorithms for dempster-shafer theory In Algorithms for Uncertainty

and Defeasible Reasoning pages 421ndash475 Kluwer Academic Publishers 16

92

Anexos

93

ACoacutedigo do motor de inferecircncia

Iniacutecio do motor de inferencia

init_inference- retractall(hist2) consult(rsquokbsyplrsquo)

top_goals(ControlObj MinCF) - top_goal(TopGoal) top(TopGoal ControlObj MinCF)

top(TopGoal ControlObj MinCF) - retractall(hist2) set(len 0)

getRuleMoreRelevant(TopGoal Rule) tryToProove(Rule ControlObj MinCF)

tryToProove(Rule ControlObj MinCF)- rule(Rule _ lhs(LHS) _)

proveListHyp(LHS ControlObj MinCF)get(len LEN)println(LEN)

LEN1 is LEN + 1assert(hist(LEN1Rule))println(LEN1)

set(len LEN1)

(

check if rule has return control object

(var(ControlObj)) -gt(

no control object found check if other rules needs to be fired

fireRules(ControlObj MinCF)

)(

control object found

true

)

)

proveListHyp([] ControlObj MinCF)

proveListHyp([H|T] ControlObj MinCF)-proveHyp(H ControlObj MinCF)

((var(ControlObj)) -gt (proveListHyp(T ControlObj MinCF))(true))

fact already known

proveHyp(H ControlObj MinCF)- H = ev(X Y) fact(X Y_ )

there is a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _)

not(fact(X _ _))question(X _ _ _)

not(not_question(X))ControlObj = ask(X)

95

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

there is a conclusion that can lead to a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _) rule(Rule _ lhs(LHS)

rhs(ev(X_) V))

tryToProove(Rule ControlObj MinCF)

ADD A FACT

av(Attr Value Confidence ControlObj MinCF) - retractall(hist2)set(len 0)

saveFact(Attr Value Confidence 1 CF_FINAL _)

fireRules(ControlObj MinCF)

nav(Attr)-assert(not_question(Attr))

fireRules(ControlObj MinCF)- rule(X _ lhs(LHS) rhs(ev(Y R) Conf))

not(inf_rules_fired(X_)) evaluate(LHS ConfLhs 1)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF)

get(len LEN) LEN1 is LEN + 1 assert(hist(LEN1Rule))

set(len LEN1)

(

(var(ControlObj)) -gt(

(top_goal(Y)) -gt (

ControlObj = answerFound(Y R ConfRet)

)(

true fireRules(ControlObj MinCF)

))(

true

)

)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF) -

calculateConfidence(ConfLhs Conf ConfRet)

ConfRet gt MinCF

saveFact(Y R ConfRet 2 CF_FINAL X)

assert(inf_rules_fired(X ConfRet))

evaluate([] [] 1)- true

evaluate([H|T] [FactConf|LConf] RetCode)-

H = ev(X Ans)fact(X Ans FactConf)

evaluate(T LConf RetCode)

calculateConfidence(ConfLhs RuleCF ResultCF)-min_in_list(ConfLhs MinLHSCF)

ResultCF is MinLHSCF RuleCF 100

min_in_list([Min]Min)

min_in_list([HK|T]M) - H lt= K min_in_list([H|T]M)

min_in_list([HK|T]M) - H gt K min_in_list([K|T]M)

1 - fornecido 2 - inferido

we have a fact saved with the same conclusion already

96

saveFact(Attr Value Confidence Mode CF_Final Rule)-

fact(Attr Value OldConfidence)

combine(OldConfidence Confidence CF_Final)

retract(fact(Attr Value OldConfidence))

retract(inf_sys_fact(Attr Value OldConfidence _))

assert(fact(Attr Value CF_Final))

assert(inf_sys_fact(Attr Value CF_Final Mode))

linkFactToRule(Rule Attr Value Mode)

we donrsquot have any fact saved

saveFact(Attr Value Confidence Mode Confidence Rule)-

assert(fact(Attr Value Confidence))

assert(inf_sys_fact(Attr Value Confidence Mode))

linkFactToRule(Rule Attr Value Mode)

linkFactToRule(___1)

linkFactToRule(RuleAttrValue2)-

inf_exp_how(Attr Value oldRules)

retract(inf_exp_how(Attr Value oldRules))

assert(inf_exp_how(Attr Value [Rule|oldRules]))

linkFactToRule(RuleAttrValue2)-

assert(inf_exp_how(Attr Value [Rule]))

println(rsquosaved line with information on explanation howrsquo) listing

combine(CF1 CF2 CF) - CF1 gt= 0 CF2 gt= 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CF is CF1 + Calc

combine(CF1 CF2 CF) - CF1 lt 0 CF2 lt 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CFAux is CF1 + Calc CF is 0-CFAux

combine(CF1 CF2 CF) - (CF1 lt 0 CF2 lt 0) (CF1 gt 0 CF2 gt 0)

SumCFs is CF1 + CF2 abs_minimum(CF1 CF2 MCF)

Rest is 100 - MCFCF is 100 SumCFs Rest

abs_minimum(ABX) - absolute(A AA) absolute(B BB)minimum(AABBX)

absolute(X X) -X gt= 0

absolute(X Y) -X lt 0Y is 0-X

minimum(XYX) -X lt= Y

minimum(XYY) -Y lt= X

Rule verification

verification(L)-retractall(validation_fired1)

retractall(verification_error4)set(nextid 0)

findall(IDverification_rule_1(ID _ _ _)L)

verification_rule_1(ID RuleInError RuleRelated Result)-

rule(A _ lhs(CA) RA)rule(B _ lhs(CB) RB)

not( B = A)not(validation_fired(B))

checkConditionsSimilar(CA CB FullMatch)

checkResultSimilar(FullMatch RA RB Result)

assert(validation_fired(B))

97

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

get(nextid CURR_ID)ID is CURR_ID + 1

set(nextid ID)

assert(verification_error(ID B A Result))

RuleInError = B RuleRelated = A

checkConditionsSimilar(CA CB FullMatch)-checkConditionsSimilar_1(CACB)

lent(CA X) lent(CB Y) testCheck(X Y FullMatch)

testCheck(X X 1)

testCheck(X Y 0)- not(X = Y)

checkConditionsSimilar_1([] L)

checkConditionsSimilar_1([H|R] L)- member(H L) checkConditionsSimilar_1(R L)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueB) CFB) 2)-

not(ValueA = ValueB)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueA) CFB) 2)

checkResultSimilar(0 rhs(ev(Atom Value) CFA) rhs(ev(Atom Value) CFB) 1)-

CFB lt= CFA

lent([] 0)

lent([_|R] SizeT)- lent(R Size)SizeT is Size + 1

Rule verification

retrieve_rules(L)-

findall(X rule(X _ __) L)

retrieve_questions(L)-

findall(X question(X ___) L)

Information predicates

inf_sys(L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)-

i_sys_rules(L_Rules)i_sys_inf_fact(L_Inf_Facts)

i_sys_know_fact(L_Know_Facts) i_sys_init_fact(L_Init_Facts)

i_sys_rules(L)-

findall(r(Rule Conf) inf_rules_fired(Rule Conf) L) member(C L)

i_sys_rules([])

i_sys_inf_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 2) L) member(C L)

i_sys_inf_fact([])

i_sys_know_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 1) L) member(C L)

i_sys_know_fact([])

98

i_sys_init_fact(L)-

findall(f(Attr Value Conf) condition_init(Attr Value Conf) L) member(C L)

i_sys_init_fact([])

condition_init(Attr Value Conf)-fact(Attr Value Conf)

not(inf_sys_fact(Attr _ _ _))

explanations

why(L)-findall(r(OX) hist(OX) L)

how(Attr Value Result)- inf_exp_how(Attr Value Rules)

explainHow(Rules Explanation)append(Rules Explanation Result)

explainHow([] [])

explainHow([H|T] Result)- innerExplain(H ExplanationH)

explainHow(T ExplanationRules) append(ExplanationH ExplanationRules Result)

innerExplain(Rule Explanation)- rule(Rule _ lhs(LHS) _)

explainLHS(LHS Explanation)

explainLHS([] [])

explainLHS([ev(Attr Value)|T] ExplanationA)-

not(inf_exp_how(Attr Value _))

fact(Attr Value _) print(rsquoinitial factrsquo)

explainLHS(T ExplanationA)

explainLHS([ev(Attr Value)|T] ResultA)-

how(Attr Value ExplanationA)

explainLHS(T Explanation)

append(ExplanationA Explanation ResultA)

append([] L L)

append(L [] L)

append([H|T] M [H|N])-append(L M N)

Map methods

buildValidationReport(Id RErr RRel ErrType)-

verification_error(Id RErr RRel ErrType)

buildQuestionObject(ask(X) X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

buildQuestionObject_by_code(X X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

99

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

buildSolutionObject(answerFound(Y R Found) Y R Found)

buildRuleObject(Rule Descr LHS RHS CF)-

rule(Rule Descr lhs(I_LHS) rhs(I_RHS CF))

lhs_flatten(I_LHS LHS)

rhs_flatten(I_RHS RHS)

flatten(L LO)- iflatten(L LO)

iflatten([] [])

iflatten([H|R] [AD|L])- H = answer(A D) iflatten(R L)

lhs_flatten(L LO)- ilhs_iflatten(L LO)

ilhs_iflatten([] [])

ilhs_iflatten([H|R] [[ADCB]|L])-H = ev(A D)question(A C LL _)

findMember(LLDB)ilhs_iflatten(R L)

ilhs_iflatten([H|R] [[ADAD]|L])-H = ev(A D)not(question(A _ _ _))

ilhs_iflatten(R L)

rhs_flatten(ev(AB) [AB])

findMember([] D D)-

findMember([H|T] D B)-H = answer(D B)

findMember([H|T] D B)-findMember(T D B)

attempt to Get more relevant rule

getRuleMoreRelevant(TopGoal Rule)-

rule(Rule_ _ rhs(ev(P V) X)) top_goal(P)

find the rules that contains a direct solution

findall(X rule(X lhs(LLHS) rhs(ev(TopGoal _)_)) LX)

debugLine(trc1rsquogtrsquo)debugList(LX)

For the main rules apply the algorithm

fillMainRules(LX LOUT)

bubble_sort(LOUT LREALLYOUT)

LREALLYOUT = [ score_table(Rule _ _ _) | _ ]

debugLine(trc1rsquogtrsquo)debugList(LREALLYOUT)

fillMainRules([] [])-

fillMainRules([HIN|RIN] [HOUT|LOUT])- calculateCurrentRule(HIN HOUT)

fillMainRules(RIN LOUT)

calculateCurrentRule(HIN HOUT)-rule(HIN _ lhs(LHS) rhs(_ Confidence))

calculateScoreBasedOnLHS(LHS 0 Score)

OrderIndice is Score Confidence

HOUT = score_table(HIN Score Confidence OrderIndice)

calculateScoreBasedOnLHS([] ScoreResult ScoreResult)-

100

calculateScoreBasedOnLHS([HLHS|RLHS] Score ScoreResult)-

calculateScoreBasedOnLHSCurrent(HLHS Score ScoreAfter)

calculateScoreBasedOnLHS(RLHS ScoreAfter ScoreResult)

calculateScoreBasedOnLHSCurrent(ev(X _) Score ScoreAfter)-

question(X _ _ _) not(fact(X _ _))

ScoreAfter is Score + 1

calculateScoreBasedOnLHSCurrent(ev(X _) Score Score)-

helper methods

bubble_sort(ListSorted)-b_sort(List[]Sorted)

b_sort([]AccAcc)

b_sort([H|T]AccSorted)-bubble(HTNTMax)b_sort(NT[Max|Acc]Sorted)

bubble(X[][]X)

bubble(X[Y|T][Y|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C lt= D bubble(XTNTMax)

bubble(X[Y|T][X|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C gt Dbubble(YTNTMax)

bubble_sort2(ListSorted)-b_sort2(List[]Sorted)

b_sort2([]AccAcc)

b_sort2([H|T]AccSorted)-bubble2(HTNTMax)b_sort2(NT[Max|Acc]Sorted)

bubble2(X[][]X)

bubble2(X[Y|T][Y|NT]Max)- X = r(D _) Y = r(C _) C lt= D bubble(XTNTMax)

bubble2(X[Y|T][X|NT]Max)- X = r(D _) Y = r(C _) C gt Dbubble(YTNTMax)

Allows to get a Bag of all the X that makes Goal evaluate to true

Bag can contain duplicated X

findall(XGoalBag) - post_it(XGoal) gather([]Bag)

Aux

post_it(XGoal) - call(Goal) asserta(data999(X)) fail

post_it(__)

gather(BBag) - data999(X) retract(data999(X)) gather([X|B]Bag)

gather(SS)

member(X[X|_])-

member(X[_|Y]) - member(XY)

101

BBase de conhecimento do protoacutetipo

question(turn_over rsquoO carro ligarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(lights_weak rsquoAs luzes estatildeo fracasrsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(radio_weak rsquoO raacutedio estaacute fracorsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(smell_gas rsquoCheira a gasolinarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(gas_gauge rsquoO que marca o ponteiro do depoacutesito da gasolinarsquo

[ answer(empty rsquoVaziorsquo) answer(high rsquoSuficientersquo) answer(low rsquoReservarsquo)]0)

rule(rule_1 rsquoRule 1rsquolhs([ev(turn_over no) ev(battery_bad yes)])

rhs(ev(problem battery) 100))

rule(rule_2 rsquoRule 2rsquolhs([ev(lights_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_3 rsquoRule 3rsquolhs([ev(radio_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_4 rsquoRule 4rsquolhs([ev(smell_gas yes) ev(turn_over yes)])

rhs(ev(problem flooded) 80))

rule(rule_5 rsquoRule 5rsquolhs([ev(turn_over yes) ev(gas_gauge empty)])

rhs(ev(problem out_of_gas) 90))

rule(rule_6 rsquoRule 6rsquolhs([ev(turn_over yes) ev(gas_gauge low)])

rhs(ev(problem out_of_gas) 30))

rule(rule_7 rsquoRule 7rsquolhs([ev(gas_gauge low)ev(turn_over yes)])

rhs(ev(problem out_of_gas) 30))

103

ANEXO B BASE DE CONHECIMENTO DO PROTOacuteTIPO

rule(rule_8 rsquoRule 8rsquo

lhs([ev(turn_over yes) ev(gas_gauge low) ev(smell_gas no)])

rhs(ev(problem out_of_gas) 30))

top_goal(problem)

104

CBase de conhecimento GISPSA

question(qs_tema_ger rsquoQual o tipo de Problemarsquo

[ answer(c_ger_map rsquoMapas Configuraacuteveisrsquo) answer(c_ger_inq rsquoInqueacuteritos e Listagensrsquo)

answer(c_ger_mov rsquoCGMOVIGrsquo) answer(c_ger_pla rsquoCGDCGERrsquo)

answer(c_ger_acm rsquoCGVACUMCGTACUMrsquo)]0)

question(qs_plareg rsquoA Conta tem regra de construcccedilatildeo associada rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipr rsquoExiste Conta Pai do Tipo R no Planorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaent rsquoConta aberta por entidadesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipa rsquoConta do Tipo Arsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plalim rsquoEntidade encontra-se nos limitesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaexis rsquoEntidade Existentersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plamix rsquoContas Valor entre Contas Movimentorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acumul rsquoQual o problema de acumuladosrsquo

[ answer(c_acm_avm rsquoCGVACUM ltgt CGMOVIGrsquo)

answer(c_acm_si rsquoSaldos Iniciaisrsquo)

answer(c_acm_cna rsquoContas Nao Acumulamrsquo)

answer(c_acm_avat rsquoCGVACUM ltgt CGTACUMrsquo)]0)

question(qs_incmov rsquoInconsistecircncias no CGMOVIGrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

105

ANEXO C BASE DE CONHECIMENTO GISPSA

question(qs_incpla rsquoInconsistecircncias no CGDCGERrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acmsia rsquoSaldos Iniciais Alteradosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movi rsquoQual o problema dos movimentosrsquo

[ answer(c_mov_lan rsquoLanccedilamentos nao balanceadosrsquo)

answer(c_mov_con rsquoProblema de Contasrsquo)

answer(c_mov_cgca rsquoMovimentos CG ltgt CArsquo)]0)

question(qs_movvdif rsquoValores CG gt CArsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlgca rsquoCC Ligados a Analiticarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlg100 rsquoTodas as Ligacoes a 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movm100 rsquoDiferencas Correspondem a CC com Mais de 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcna rsquoLancamento em Contas nao Existentesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movci rsquoLancamento em Contas Invalidasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcdf rsquoContas correctasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_inquer rsquoInqueacuterito ou listagemrsquo

[ answer(c_inq_bal rsquoBalancetersquo) answer(c_inq_dia rsquoExtractoDiariorsquo)]0)

question(qs_inqsal rsquoProblema de saldosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapa rsquoProblema dos mapasrsquo

[ answer(c_map_imp rsquoErro na Impressaorsquo) answer(c_map_cal rsquoErro no Calculorsquo)

answer(c_map_mic rsquoErro na Transferencia P Microrsquo)]0)

question(qs_mapcol0 rsquoA ultima linha calculada tem a coluna 0 configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapfunc

rsquoA ultima linha calculada apresenta colunas com funcoes invalidas ou sintaxe erradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin0 rsquoA Linha 000 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin9 rsquoA Linha 999 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

106

question(qs_map2alg rsquoTodos os Valores da Linha 999 tem 2 Algarismosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_map198 rsquoA Soma dos Valores da Linha 999 Ultrapassa 198rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapsys rsquoO Sistema Permite a Utilizacao de Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapuser rsquoO Utilizador Tem Acesso a Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapflr rsquoO Folder Existersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

rule(r_pla_1 r_pla_1lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plareg c_sim)])

rhs(ev(dominio d_pla_reg) 100)

)

rule(r_pla_2 r_pla_2lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plaent c_sim)])

rhs(ev(dominio d_pla_ent) 100)

)

rule(r_pla_3 r_pla_3lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plamix c_sim)])

rhs(ev(correccao cr_pla_mix) 100)

)

rule(r_pla_11 r_pla_11lhs([ev(dominio d_pla_reg) ev(qs_platipr c_nao)])

rhs(ev(correccao cr_pla_tipr) 100)

)

rule(r_pla_21 r_pla_21lhs([ev(dominio d_pla_ent) ev(qs_platipa c_nao)])

rhs(ev(correccao cr_pla_tipa) 100)

)

rule(r_pla_22 r_pla_22lhs([ev(dominio d_pla_ent) ev(qs_plalim c_nao)])

rhs(ev(correccao cr_pla_lim) 100)

)

rule(r_pla_23 r_pla_23lhs([ev(dominio d_pla_ent) ev(qs_plaexis c_nao)])

rhs(ev(correccao cr_pla_exis) 100)

)

rule(r_acm_1 r_acm_1

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_2 r_acm_2

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_3 r_acm_3

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_4 r_acm_4

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_5 r_acm_5

107

ANEXO C BASE DE CONHECIMENTO GISPSA

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_6 r_acm_6

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_7 r_acm_7

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_si) ev(qs_acmsia c_nao)])

rhs(ev(correccao cr_acm_si) 100)

)

rule(r_mov_1 r_mov_1lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_lan)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_2 r_mov_2lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_cgca)])

rhs(ev(dominio d_mov_cgca) 100)

)

rule(r_mov_21 r_mov_21lhs([ev(dominio d_mov_cgca) ev(qs_movvdif c_sim)])

rhs(ev(subdominio d_mov_cgca_1) 100)

)

rule(r_mov_22 r_mov_22lhs([ev(dominio d_mov_cgca) ev(qs_movm100 c_sim)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_23 r_mov_23lhs([ev(dominio d_mov_cgca)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_3 r_mov_3lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_con)])

rhs(ev(dominio d_mov_con) 100)

)

rule(r_mov_31 r_mov_31lhs([ev(dominio d_mov_con) ev(qs_movcna c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_32 r_mov_32lhs([ev(dominio d_mov_con) ev(qs_movci c_nao)])

rhs(ev(correccao cr_mov_inc_soft) 100)

)

rule(r_mov_33 r_mov_33lhs([ev(dominio d_mov_con) ev(qs_movcdf c_nao)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_34 r_mov_34lhs([ev(dominio d_mov_con)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_211 r_mov_211lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlgca c_nao)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_212 r_mov_212lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlg100 c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_213 r_mov_213lhs([ev(subdominio d_mov_cgca_1)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_inq_1 r_inq_1lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inquer c_inq_bal)])

rhs(ev(correccao cr_inq_bal) 100)

)

rule(r_inq_2 r_inq_2lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inqsal c_sim)])

108

rhs(ev(correccao cr_inq_dia) 100)

)

rule(r_map_1 r_map_1lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_cal)])

rhs(ev(dominio d_map_cal) 100)

)

rule(r_map_2 r_map_2lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_imp)])

rhs(ev(dominio d_map_imp) 100)

)

rule(r_map_3 r_map_3lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_mic)])

rhs(ev(dominio d_map_mic) 100)

)

rule(r_map_11 r_map_11lhs([ev(dominio d_map_cal) ev(qs_mapcol0 c_sim)])

rhs(ev(correccao cr_map_cal_col0) 100)

)

rule(r_map_12 r_map_12lhs([ev(dominio d_map_cal) ev(qs_mapfunc c_sim)])

rhs(ev(correccao cr_map_cal_func) 100)

)

rule(r_map_13 r_map_13lhs([ev(dominio d_map_cal)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_21 r_map_21lhs([ev(dominio d_map_imp) ev(qs_maplin0 c_nao)])

rhs(ev(correccao cr_map_imp_lin0) 100)

)

rule(r_map_22 r_map_22lhs([ev(dominio d_map_imp) ev(qs_maplin9 c_nao)])

rhs(ev(correccao cr_map_imp_lin9) 100)

)

rule(r_map_23 r_map_23lhs([ev(dominio d_map_imp) ev(qs_map2alg c_nao)])

rhs(ev(correccao cr_map_imp_2alg) 100)

)

rule(r_map_24 r_map_24lhs([ev(dominio d_map_imp) ev(qs_map198 c_nao)])

rhs(ev(correccao cr_map_imp_198) 100)

)

rule(r_map_25 r_map_25lhs([ev(dominio d_map_imp)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_31 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapsys c_nao)])

rhs(ev(correccao cr_map_sys) 100)

)

rule(r_map_32 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapuser c_nao)])

rhs(ev(correccao cr_map_user) 100)

)

rule(r_map_33 r_map_33lhs([ev(dominio d_map_mic) ev(qs_mapflr c_nao)])

rhs(ev(correccao cr_map_mic_flr) 100)

)

rule(r_map_34 r_map_34lhs([ev(dominio d_map_mic)])

rhs(ev(correccao cr_map_soft) 100)

)

top_goal(correccao)

109

  • Lista de Figuras
  • Lista de Tabelas
  • Lista de Coacutedigo
  • Lista de Algoritmos
  • Lista de Acroacutenimos
  • Introduccedilatildeo
    • Enquadramento
    • Objectivos
    • Planeamento
    • Estruturaccedilatildeo da dissertaccedilatildeo
      • Estado da arte
        • Sistemas periciais
          • Arquitectura
          • Base de conhecimento
            • Regras
            • Frames
            • Redes semacircnticas
            • Mecanismos de inferecircncia
            • Manutenccedilatildeo de uma base de conhecimento
              • Raciociacutenio sobre incerteza
                • Factores de certeza
                  • Vantagens e desvantagens
                    • GISPSA - GIS Problem Solver Advisor
                      • Arquitectura
                      • Funcionamento
                      • Limitaccedilotildees
                        • Web Expert Systems
                          • Casos de estudo
                            • LOMA - Landfill Operation Management Advisor
                            • MDSS - Medical Diagnosis Support System
                            • Whale watcher
                              • Ferramentas utilizadas
                                • Ambiente de desenvolvimento
                                • Motor de inferecircncia
                                  • Fase I - Recolha de candidatos
                                  • Fase II - Requisitos base
                                  • Fase III - Viabilidade econoacutemica
                                  • Fase IV - Viabilidade teacutecnica
                                  • Fase V - Prova de conceito
                                  • Conclusatildeo e fundamentaccedilatildeo da escolha
                                      • Wexsys
                                        • Arquitectura global
                                          • Moacutedulo pWexsysEAR
                                          • Moacutedulo WexsysEAR
                                          • Interligaccedilatildeo e integraccedilatildeo dos moacutedulos
                                            • Camada de acesso puacuteblico
                                            • Camada de acesso protegido
                                            • Camada de acesso privado
                                            • Fluxo de invocaccedilatildeo
                                              • Portal
                                                • Templates
                                                  • Suporte multi-liacutengua
                                                    • Motor de inferecircncia
                                                      • Multi-utilizador
                                                      • Base de conhecimento inicial
                                                      • Protoacutetipo do motor de inferecircncia
                                                        • Formato das regras
                                                        • Formato das questotildees
                                                        • Interacccedilatildeo assiacutencrona de questotildees e respostas
                                                        • Estrutura da base de conhecimento
                                                        • Algoritmos a utilizar
                                                          • Resultado final
                                                            • Arranque da execuccedilatildeo
                                                            • Mecanismo de respostas
                                                            • Conclusatildeo final encontrada
                                                            • Explicaccedilotildees
                                                                • Base de conhecimento
                                                                  • Leitura da base de conhecimento
                                                                  • Conclusatildeo final a encontrar
                                                                  • Factos iniciais
                                                                  • Regras
                                                                    • CriarAlterar uma regra
                                                                    • Questotildees
                                                                    • Verificaccedilatildeo
                                                                      • Gravaccedilatildeo da base de conhecimento
                                                                      • Conversatildeo GISPSA
                                                                        • Anaacutelise graacutefica
                                                                          • Implementaccedilatildeo
                                                                          • Funcionamento
                                                                          • Limitaccedilotildees
                                                                              • Conclusotildees
                                                                                • Contributos da soluccedilatildeo desenvolvida
                                                                                • Limitaccedilotildees e trabalho futuro
                                                                                  • Bibliografia
                                                                                  • Anexos
                                                                                  • Coacutedigo do motor de inferecircncia
                                                                                  • Base de conhecimento do protoacutetipo
                                                                                  • Base de conhecimento GISPSA
Page 6: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System

Conteuacutedo

Lista de Figuras xv

Lista de Tabelas xvii

Lista de Coacutedigo xix

Lista de Algoritmos xxi

Lista de Acroacutenimos xxiii

1 Introduccedilatildeo 111 Enquadramento 2

12 Objectivos 2

13 Planeamento 3

14 Estruturaccedilatildeo da dissertaccedilatildeo 3

2 Estado da arte 521 Sistemas periciais 5

211 Arquitectura 7

212 Base de conhecimento 9

2121 Regras 10

2122 Frames 12

2123 Redes semacircnticas 13

2124 Mecanismos de inferecircncia 14

2125 Manutenccedilatildeo de uma base de conhecimento 15

213 Raciociacutenio sobre incerteza 16

2131 Factores de certeza 16

214 Vantagens e desvantagens 17

22 GISPSA - GIS Problem Solver Advisor 20

221 Arquitectura 20

222 Funcionamento 21

223 Limitaccedilotildees 22

23 Web Expert Systems 23

231 Casos de estudo 25

2311 LOMA - Landfill Operation Management Advisor 26

xi

2312 MDSS - Medical Diagnosis Support System 30

2313 Whale watcher 31

3 Ferramentas utilizadas 3331 Ambiente de desenvolvimento 33

32 Motor de inferecircncia 35

321 Fase I - Recolha de candidatos 35

322 Fase II - Requisitos base 37

323 Fase III - Viabilidade econoacutemica 38

324 Fase IV - Viabilidade teacutecnica 38

325 Fase V - Prova de conceito 39

326 Conclusatildeo e fundamentaccedilatildeo da escolha 40

4 Wexsys 4341 Arquitectura global 43

411 Moacutedulo pWexsysEAR 44

412 Moacutedulo WexsysEAR 45

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos 46

4131 Camada de acesso puacuteblico 46

4132 Camada de acesso protegido 48

4133 Camada de acesso privado 48

4134 Fluxo de invocaccedilatildeo 49

414 Portal 50

4141 Templates 51

415 Suporte multi-liacutengua 53

42 Motor de inferecircncia 54

421 Multi-utilizador 54

422 Base de conhecimento inicial 55

423 Protoacutetipo do motor de inferecircncia 56

4231 Formato das regras 56

4232 Formato das questotildees 57

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas 57

4234 Estrutura da base de conhecimento 58

4235 Algoritmos a utilizar 60

424 Resultado final 62

4241 Arranque da execuccedilatildeo 62

xii

4242 Mecanismo de respostas 654243 Conclusatildeo final encontrada 674244 Explicaccedilotildees 67

43 Base de conhecimento 71431 Leitura da base de conhecimento 72432 Conclusatildeo final a encontrar 73433 Factos iniciais 74434 Regras 74

4341 CriarAlterar uma regra 744342 Questotildees 764343 Verificaccedilatildeo 77

435 Gravaccedilatildeo da base de conhecimento 77436 Conversatildeo GISPSA 78

44 Anaacutelise graacutefica 79441 Implementaccedilatildeo 79442 Funcionamento 79443 Limitaccedilotildees 82

5 Conclusotildees 8351 Contributos da soluccedilatildeo desenvolvida 8452 Limitaccedilotildees e trabalho futuro 87

Bibliografia 92

Anexos 93

A Coacutedigo do motor de inferecircncia 95

B Base de conhecimento do protoacutetipo 103

C Base de conhecimento GISPSA 105

xiii

Lista de Figuras

1 Arquitectura de um sistema pericial 82 GISPSA menu inicial 213 GISPSA interacccedilatildeo inicial 224 GISPSA exemplo de interacccedilatildeo pergunta-resposta 225 Arquitectura do LOMA 276 Paacutegina inicial do sistema pericial LOMA 287 Sub-moacutedulo extra 288 Sugestatildeo de problemas do sub-moacutedulo extra 299 Sub-moacutedulo especializado 2910 Paacutegina principal do sistema pericial Whale Watcher 3111 Paacutegina final do sistema pericial Whale Watcher 31

12 Arquitectura da soluccedilatildeo 4413 Arquitectura do moacutedulo visual 4414 Arquitectura do moacutedulo de negoacutecio 4515 Wexsys - Integraccedilatildeo dos componentes 4616 Diagrama de classes principais 4917 Diagrama de sequecircncia do fluxo de invocaccedilatildeo 5018 Wexsys - Paacutegina inicial 5119 Paacutegina inicial do motor de inferecircncia 6220 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia 6321 Fluxo de invocaccedilatildeo de resposta a uma questatildeo 6622 Conclusatildeo da inferecircncia 6723 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo 6824 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia 6925 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final 6926 Paacutegina inicial da gestatildeo da base de conhecimento 7227 Processo de carregamento das regras 7328 Introduzir uma nova regra 7529 Apresentaccedilatildeo de valores configurados na questatildeo 7630 Formulaacuterio de introduccedilatildeo de uma questatildeo 7631 Verificaccedilatildeo da base de conhecimento 7732 Processo de gravaccedilatildeo da base de conhecimento 7833 Paacutegina inicial da anaacutelise graacutefica 80

xv

34 Exemplo de grafo totalmente expandido 8135 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto 82

xvi

Lista de Tabelas

1 Listagem de produtos da Fase I 362 Listagem de produtos excluiacutedos na Fase II 383 Listagem de produtos excluiacutedos na Fase III 384 Listagem de produtos excluiacutedos na Fase IV 395 JClips - Vantagens e desvantagens 396 Prova - Vantagens e desvantagens 407 YProlog - Vantagens e desvantagens 40

xvii

Lista de Coacutedigo

1 Excerto da classe RuleView 472 Excerto da classe Rule 473 Coacutedigo do template principal do portal 514 Coacutedigo da paacutegina inicial do portal 535 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo 546 Representaccedilatildeo da base de conhecimento do protoacutetipo 587 Predicados principais do motor de inferecircncia 638 Predicados principais do sistema de explicaccedilotildees 70

xix

Lista de Algoritmos

1 Algoritmo principal do motor de inferecircncia 602 Verifica se uma premissa eacute verdadeira 613 Dispara as regras que possam ser disparadas 614 Algoritmo responsaacutevel pelo desenho da applet 805 Algoritmo para construccedilatildeo dos dados do grafo 81

xxi

Lista de Acroacutenimos

AI Artificial Intelligence ou Inteligecircncia Artificial

BRMS Business Rule Management System

CF Certainty Factors ou Factores de Certeza

CLIPS C Language Integrated Production System

DTO Data Transfer Object

ES Expert System

GIS Gestatildeo Integrada de Seguros

GISPSA GIS Problem Solver Advisor

IDE Integrated Development Environment

JEOPS Java Embedded Object Production System

JSF JavaServer Faces

LHS Left-Handed Side

LOMA Landfill Operation Management Advisor

MDSS Medical Diagnosis Support System

ODBC Open Data Base Connectivity

OO Object Oriented

RHS Right-Handed Side

SP Sistema Pericial

SDK Software Development Kit

xxiii

1Introduccedilatildeo

Este trabalho eacute desenvolvido no acircmbito do Mestrado em Engenharia Informaacutetica ramode Tecnologias do Conhecimento e Decisatildeo e teve a sua origem a partir de um sistemadoravante designado por sistema base desenvolvido por Pinto Este sistema base foidesenvolvido durante a realizaccedilatildeo de um trabalho acadeacutemico (Pinto (1998)) cujo principalobjectivo era a construccedilatildeo de um sistema pericial

Na altura da sua criaccedilatildeo o sistema base apenas estava preparado para uma utilizaccedilatildeodo tipo mono-posto Ficava assim estabelecida a condiccedilatildeo de apenas um utilizador decada vez ter acesso ao sistema base Natildeo era exigiacutevel nem sequer necessaacuterio que outrocenaacuterio fosse equacionado dado tratar-se de um trabalho acadeacutemico O sistema ficoudesta forma limitado

Assim somos remetidos a um dos objectivos iniciais que levaram ao desenvolvimentodo trabalho que agora aqui se apresenta Proceder agrave evoluccedilatildeo do sistema base garantindoque o mesmo possa ser acedido por muacuteltiplos utilizadores de forma simultacircnea e a suadisponibilizaccedilatildeo num ambiente de acesso global mediante a utilizaccedilatildeo de redes sendoque a preferecircncia recai sobre a rede mais global que existe a internet Referindo-nos aeste tipo de disponibilizaccedilatildeo com todas as vantagens que lhe estatildeo afectas o proacuteximopasso loacutegico seria a integraccedilatildeo do novo sistema num portal

Eacute tambeacutem um objectivo inicial proceder agrave alteraccedilatildeo da actual forma de manutenccedilatildeo doconhecimento Pretende-se desenvolver um mecanismo de manutenccedilatildeo de conhecimentoque simplifique a interacccedilatildeo com o utilizador

Por uacuteltimo os objectivos deste trabalho passam igualmente pelo melhoramento dosistema base tentando eliminar alguns erros que foram detectados ao longo do tempo eacrescentando algumas caracteriacutesticas que entretanto surgiram e que foram consideradasnecessaacuterias

1

CAPIacuteTULO 1 INTRODUCcedilAtildeO

11 Enquadramento

O sistema a desenvolver embora tenha como ponto de partida um sistema base criado parautilizaccedilatildeo mono-posto faraacute parte de um portal onde seraacute integrado como uma ferramentade apoio na resoluccedilatildeo de problemas operacionais

Para aleacutem de actualmente fazer muito mais sentido a disponibilizaccedilatildeo do sistemanum ambiente de acesso globalizado e com a possibilidade de vaacuterios utilizadores emsimultacircneo a grande vantagem reside no facto de poder utilizar a mesma base de conhe-cimento que alimenta o sistema pericial independentemente do local onde se realizem osacessos Fica assim garantida a uniformidade a fiabilidade e a estabilidade do sistema

Por uacuteltimo a globalizaccedilatildeo do sistema garante igualmente que sempre que este eacuteutilizado natildeo para consulta ou apoio na resoluccedilatildeo de problemas mas para acrescentarnovos factos e dados agrave base de conhecimento estes estejam imediatamente disponiacuteveispara novas consultas ou para resoluccedilotildees de problemas de forma mais eficaz

12 Objectivos

O objectivo principal deste trabalho passa pela integraccedilatildeo do GIS Problem SolverAdvisor (GISPSA) (sistema base) num portal Aleacutem deste outros objectivos podemser considerados como de eventual ou relevante importacircncia podendo ser caracterizadosda seguinte forma

bull Objectivos globais

ndash Desenvolvimento de um sistema pericial rArr Pretende-se desenvolver umcandidato agrave substituiccedilatildeo do GISPSA

ndash Manutenccedilatildeo da base de conhecimento rArr Gerir a base de conhecimentorelativamente agrave inserccedilatildeo e actualizaccedilatildeo de regras de conhecimento bem comoimplementaccedilatildeo de mecanismos de verificaccedilatildeo das regras

bull Objectivos especiacuteficos

ndash Adaptar o motor de inferecircncia existente ou desenvolver novorArr Desenvolvi-mento de um motor de inferecircncia que se enquadre com os objectivos definidos

ndash Alterar o mecanismo de interacccedilatildeo do utilizador com a base de conheci-mentorArr Facilitar a manipulaccedilatildeo da base de conhecimento de forma a evitarproblemas na alteraccedilatildeo da base de conhecimento

2

13 PLANEAMENTO

ndash Verificar e detectar inconsistecircncias na base de conhecimentorArr Implementarmecanismos de verificaccedilatildeo das regras existentes para minimizar problemas

13 Planeamento

O planeamento deste trabalho foi estruturado em quatro fases A composiccedilatildeo dessas faseseacute a seguinte

1 Requisitos

bull Levantamento de requisitos

bull Estado da arte

bull Ferramentas existentes

2 Protoacutetipo

bull Protoacutetipo do motor de inferecircncia

bull Implementaccedilatildeo do gestor da base de conhecimento

3 Verificaccedilatildeo

bull Implementaccedilatildeo de meacutetodos de verificaccedilatildeo e detecccedilatildeo de inconsistecircncias

4 Elaboraccedilatildeo da dissertaccedilatildeo

bull Redacccedilatildeo final da dissertaccedilatildeo

14 Estruturaccedilatildeo da dissertaccedilatildeo

Nesta secccedilatildeo eacute apresentada a estrutura da dissertaccedilatildeo composta por cinco capiacutetulosNo primeiro capiacutetulo ldquoIntroduccedilatildeordquo eacute apresentado o problema actual quais os objec-

tivos a alcanccedilar e qual o planeamento para a prossecuccedilatildeo desses objectivosNo segundo capiacutetulo ldquoEstado da Arterdquo eacute apresentado a soluccedilatildeo GISPSA e tambeacutem o

estado da arte na aacuterea dos sistemas periciaisNo terceiro capiacutetulo ldquoFerramentas utilizadasrdquo eacute apresentado o estudo efectuado sobre

as ferramentas utilizadas e quais as conclusotildees do mesmoNo quarto capiacutetulo ldquoWexsysrdquo eacute descrita a soluccedilatildeo proposta e implementadaNo quinto e uacuteltimo capiacutetulo ldquoConclusotildeesrdquo satildeo apresentadas as conclusotildees finais bem

como os objectivos alcanccedilados e as actuais limitaccedilotildees

3

2Estado da arte

Num estado da arte pretende-se essencialmente fazer o enquadramento do estaacutegio deevoluccedilatildeo e eventuais casos de estudo relacionados com as tecnologias sistemas oupropostas que satildeo utilizadas ou apresentadas ao longo de um trabalho

Para o nosso caso em concreto vamos focalizar esse enquadramento sobre os sistemaspericiais no seu sentido mais abstracto e ainda sobre o sistema base jaacute indicado oGISPSA Apesar de o sistema base ser por si soacute um sistema pericial e como tal poderser apresentado como um caso de estudo inserido nos sistemas periciais generalizados ofacto de servir como ponto de partida para este trabalho em concreto confere-lhe umaimportacircncia muito superior sendo quase obrigatoacuteria a reserva de uma secccedilatildeo proacutepria parao mesmo

21 Sistemas periciais

Os sistemas periciais pertencem a um dos ramos da Artificial Intelligence ou InteligecircnciaArtificial (AI) e surgiram a partir da necessidade que alguns investigadores sentiram emcriar um software que demonstrasse raciociacutenio e comportamento inteligente durante aresoluccedilatildeo de problemas

Um Sistema Pericial (SP) tambeacutem conhecido como Expert System (ES) caracteriza-se como sendo um programa que permite a consulta e utilizaccedilatildeo de conhecimento extraiacutedode um ou mais peritos em determinada aacuterea Esse conhecimento estaacute normalmenteguardado naquilo que eacute mais habitualmente designado por base de conhecimento e agrave qualo programa tem o devido acesso

Na criaccedilatildeo de um SP o ideal seraacute sempre consultar os melhores peritos dentro daaacuterea pretendida e ainda que estes estejam disponiacuteveis para partilhar e disponibilizar oseu conhecimento Tal seria efectivamente a situaccedilatildeo ideal mas que nem sempre se

5

CAPIacuteTULO 2 ESTADO DA ARTE

aproxima da realidade Aliaacutes o verdadeiro sucesso de um sistema pericial reside naqualidade da sua base de conhecimento

Antes de mais devemos considerar que algueacutem que eacute perito em algo certamente oseraacute por uma seacuterie de factores conjugados Experiecircncia adquirida ao longo de vaacuteriosanos formaccedilatildeo especiacutefica dedicaccedilatildeo e estudo profundo seratildeo alguns desses factoresSempre que um indiviacuteduo se encontra numa posiccedilatildeo de excelecircncia em que eacute consideradoum verdadeiro perito encontra-se tambeacutem numa posiccedilatildeo em que lhe eacute bastante difiacutecilencontrar o tempo necessaacuterio para se submeter a uma extracccedilatildeo do conhecimento quedeteacutem Se a isto juntar-mos o facto do objectivo pelo qual se procede agrave extracccedilatildeo deconhecimento eacute a criaccedilatildeo de um programa que seraacute equiparado ao proacuteprio perito emtermos de conhecimento certamente que haveraacute algum desconforto

Aqui surgem as primeiras duacutevidas Seraacute que o sistema pericial tomaraacute o lugar deum ou mais peritos Apesar desta e de outras preocupaccedilotildees os peritos normalmentecontribuem de forma positiva para o enriquecimento de um sistema pericial tornando-odesta forma num sistema com maior qualidade e do qual eles proacuteprios poderatildeo usufruirjaacute que quando eacute possiacutevel agregar o conhecimento de muacuteltiplas pessoas obteacutem-se umconhecimento global superior ao individual

Para aleacutem disto o sistema pericial tende a proceder a um raciociacutenio mais linear loacutegicoe coerente quando comparado com um ser humano que poderaacute deixar que factores comopor exemplo o cansaccedilo ou os sentimentos o influenciem

Merritt define um sistema pericial como sendo um programa que utiliza conhecimentoe meacutetodos de inferecircncia para resolver problemas que satildeo suficientemente complexos pararequerer um especialista para a sua resoluccedilatildeo

ldquo an intelligent computer program that uses knowledge and inference procedures to

solve problems that are difficult enough to require significant human expertise for their

solutionsrdquo Merritt (1989)

A definiccedilatildeo de Giarratano et al eacute mais relacionada com o tipo de problemas tratadospor um sistema pericial

ldquo computer application wich embody some non-algorithmic expertise for solving certain

types of problemsrdquo Giarratano et al (1998)

Esta definiccedilatildeo enquadra de uma forma global as definiccedilotildees reconhecidas aos siste-mas periciais ldquoum sistema pericial pretende emular um perito na identificaccedilatildeo de umdeterminado problema cuja resoluccedilatildeo envolva conhecimento natildeo algoriacutetmicordquo

Existe uma clara separaccedilatildeo entre conhecimento e raciociacutenio o conhecimento eacute obtidocomo jaacute foi referido recorrendo a um ou mais peritos na aacuterea Os dados obtidos satildeo depois

6

21 SISTEMAS PERICIAIS

codificados atraveacutes de um determinado esquema de representaccedilatildeo No passo seguinteeacute adicionada a capacidade de raciociacutenio ao sistema pericial recorrendo a estrateacutegiasheuriacutesticas na tentativa de fornecer um resultado semelhante ao que um perito forneceriae aqui uma vez mais o papel do perito eacute fundamental para o sucesso do sistema pericial

Para aleacutem de contribuir com o conhecimento o perito deveraacute igualmente contribuircom o raciociacutenio utilizado para o manuseamento desse mesmo conhecimento Isto porquea resoluccedilatildeo de um problema poderaacute em determinadas situaccedilotildees necessitar de pequenosajustes que fogem agrave linearidade de um processamento computacional mas que podemperfeitamente ser simuladas e recriadas na construccedilatildeo do raciociacutenio do programa

Eacute necessaacuterio compreender que um perito para aleacutem de ser algueacutem que eacute consideradoum especialista na sua aacuterea eacute habitualmente algueacutem com pouco ou nenhum tempodisponiacutevel o que dificulta bastante a realizaccedilatildeo da recolha do conhecimento O seutempo eacute dispendioso e tem por norma poucos espaccedilos de manobra devido agraves muitassolicitaccedilotildees que lhe satildeo dirigidas Aqui impera o factor de resistecircncia ora porque o peritonatildeo acredita que o sistema seja tatildeo eficaz como ele ora porque existe o receio de sersubstituiacutedo ou passar a ter menos solicitaccedilotildees Quanto maior a colaboraccedilatildeo do ou dosperitos envolvidos na criaccedilatildeo de um qualquer sistema pericial melhor e mais eficaz seraacuteesse sistema pericial

211 Arquitectura

As duas grandes componentes do sistema pericial e que permitem a separaccedilatildeo referidaentre conhecimento e raciociacutenio satildeo a base de conhecimento (depende do domiacutenio ou daaacuterea abrangida) e o bloco de raciociacutenio (natildeo depende do domiacutenio) Este uacuteltimo eacute aindadividido em trecircs partes distintas o motor de inferecircncia o sistema de explicaccedilotildees e ainterface com o utilizador

Um sistema pericial deve ser estruturado de forma a que possa ser actualizado facil-mente sem que seja necessaacuteria qualquer alteraccedilatildeo ao niacutevel funcional do programa

7

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 1 Arquitectura de um sistema pericial

A figura 1 mostra a composiccedilatildeo de um sistema pericial e que mais detalhadamente eacutea seguinte

bull Interface com o utilizador

um sistema pericial deveraacute permitir a interacccedilatildeo com o utilizador Nos casosmais habituais os utilizadores que usufruem dos benefiacutecios destes sistemas natildeosatildeo peritos da aacuterea e pretendem aconselhamento ou ajuda na resoluccedilatildeo de umproblema Noutros casos o utilizador poderaacute ser um perito da aacuterea que apenaspretende testar o sistema pericial ou confrontar as conclusotildees deste com as suasproacuteprias conclusotildees para perceber se sendo diferentes qual o motivo para queisso aconteccedila Isto poderaacute permitir que um perito aprofunde ou corrija o seuproacuteprio conhecimento ou que por outro lado se procedam a correcccedilotildees agrave base deconhecimento do sistema pericial mediante se trate de erro por parte de um ou deoutro

De qualquer forma a interface com o utilizador deveraacute permitir a interacccedilatildeo entreo sistema pericial e o utilizador (qualquer que este seja) para que o utilizadorresponda agraves questotildees que lhe satildeo colocadas e peccedila explicaccedilotildees para os passos econclusotildees que percorre e descobre ao longo da utilizaccedilatildeo do programa

bull Base de conhecimento

o conhecimento extraiacutedo de um ou mais peritos eacute armazenado e mantido aquiDurante a execuccedilatildeo do programa o sistema pericial acede a esta base para consultaros dados disponiacuteveis Eacute sempre possiacutevel em qualquer altura retirar acrescentarou corrigir factos na base de conhecimento Isto contribui para uma evoluccedilatildeo damesma no sentido de melhorar sempre o funcionamento do proacuteprio sistema pericial

8

21 SISTEMAS PERICIAIS

bull Motor de inferecircncia

este bloco eacute o grande responsaacutevel por interpretar o conhecimento e colocarde uma forma estruturada questotildees ao utilizador O raciociacutenio extraiacutedo do ou dosperitos eacute aqui consultado para que mediante as questotildees que satildeo colocadas aoutilizador e as consultas que satildeo efectuadas agrave base de conhecimento este motor deinferecircncia determine qual a proacutexima questatildeo a colocar qual a proacutexima consulta arealizar ou qual a conclusatildeo a apresentar

bull Sistema de explicaccedilotildees

sempre que o utilizador pretende que lhe seja dada uma explicaccedilatildeo para aquestatildeo que estaacute a ser colocada ou para a conclusatildeo que foi determinada este blocoseraacute o responsaacutevel por dar essa mesma explicaccedilatildeo

Esta divisatildeo permite que os moacutedulos funcionais do programa possam ser isoladoscomo podemos observar na figura 1 de forma a facilitar futuras correcccedilotildees e actualizaccedilotildeesda base de conhecimento contribuindo positivamente para a evoluccedilatildeo da mesma eevitando assim que o sistema pericial fique obsoleto

212 Base de conhecimento

Uma base de conhecimento eacute um conjunto de informaccedilatildeo representada de forma a quepossa ser processada pelo motor de inferecircncia Existem vaacuterias formas de representa-ccedilatildeo de conhecimento no entanto as mais conhecidas satildeo a representaccedilatildeo por regrasrepresentaccedilatildeo por ldquoframesrdquo e ainda as redes semacircnticas

Ao representar conhecimento um dos factores determinantes para o meacutetodo necessaacute-rio a essa representaccedilatildeo eacute o domiacutenio do problema ou aacuterea a modelar A tiacutetulo de exemplose um problema segue um padratildeo ou algum tipo de linearidade na busca da soluccedilatildeonecessaacuteria ou ainda se a soluccedilatildeo puder ser obtida atraveacutes de questotildees cujas respostassatildeo maioritariamente simples (sim natildeo valores numeacutericos etc) a representaccedilatildeo doconhecimento eacute feita utilizando os meacutetodos de regras ou ldquoframesrdquo

Como jaacute foi referido o papel de um perito natildeo estaacute limitado apenas agrave contribuiccedilatildeocom o conhecimento para a base necessaacuteria Este exerce um outro papel igualmenteimportante que tem a ver mais com o aspecto de raciociacutenio Desta forma ao consultar abase de conhecimento satildeo tomadas algumas decisotildees tais como verificaccedilatildeo de eventuaissoluccedilotildees jaacute possiacuteveis em pontos intermeacutedios ou qual a proacutexima questatildeo a colocar Estemeacutetodo de interacccedilatildeo com a base de conhecimento poderaacute eventualmente entrar em

9

CAPIacuteTULO 2 ESTADO DA ARTE

conflito com a independecircncia de domiacutenio que foi referida na arquitectura de um sistemapericial No entanto este aspecto fundamental da criaccedilatildeo de um sistema pericial contribuilargamente para o bom funcionamento do mesmo

Para aleacutem disto a base de conhecimento deveraacute sempre contemplar as funcionalidadesnecessaacuterias que permitam ao utilizador em qualquer altura proceder agrave adiccedilatildeo de novosfactos agrave correcccedilatildeo dos jaacute existentes ou ainda agrave eliminaccedilatildeo dos mesmos Isto permitemanter uma base de conhecimento sempre actualizada fiaacutevel e consistente Estas razotildeescontribuem para a resoluccedilatildeo cada vez mais eficaz dos problemas que satildeo colocadosPara novos problemas que surgem poderatildeo ser necessaacuterias novas soluccedilotildees ou novosmeacutetodos para as encontrar Para problemas jaacute conhecidos poderatildeo ser encontradas novasformas ou novas soluccedilotildees de os resolver eventualmente consideradas mais eficazes ou deimplementaccedilatildeo mais simples

Por tudo isto considera-se que a base de conhecimento apesar de natildeo ser o verdadeiromotor de um sistema pericial poderaacute ser encarada como o verdadeiro combustiacutevelque o move e sem o qual natildeo seria possiacutevel qualquer tipo de evoluccedilatildeo pelo que a natildeocontribuiccedilatildeo para o seu melhoramento estagna o proacuteprio sistema provocando mais cedoou mais tarde o abandono do mesmo por parte dos utilizadores que entretanto podemperder a confianccedila que lhe depositaram

Os meacutetodos de representaccedilatildeo de conhecimento podem ser seleccionados de acordocom as caracteriacutesticas que lhes estatildeo inerentes e que se descrevem de seguida

2121 Regras

Uma das teacutecnicas de representaccedilatildeo de conhecimento mais utilizadas eacute a representaccedilatildeopor regras Estas satildeo utilizadas para representar heuriacutesticas e caracterizam-se por umconjunto de premissas que desencadeiam ou conduzem a uma soluccedilatildeo

As regras tecircm o formato ltidentificaccedilatildeogt Se ltLeft-Handed Side (LHS)gt EntatildeoltRight-Handed Side (RHS)gt

Onde

ltidentificaccedilatildeogt - identificaccedilatildeo da regra

ltLHSgt ndash ldquoLeft-Handed Siderdquo define as premissas que teratildeo que ser satisfeitas deforma a que a regra possa ser disparada

ltRHSgt ndash ldquoRight-Handed Siderdquo define as acccedilotildees ou conclusotildees que seratildeo verificadascom o disparo da regra

As premissas satildeo definidas recorrendo a factos que podem ser previamente conhecidosou inferidos a partir de outras regras A utilizaccedilatildeo de regras promove uma separaccedilatildeo

10

21 SISTEMAS PERICIAIS

entre a parte loacutegica e a funcional isto eacute permite-nos uma abstracccedilatildeo de implementaccedilatildeofocando-se na loacutegica

Vantagens

bull expressividade - as regras satildeo normalmente representadas de uma forma naturalque pode mesmo chegar a ser declarativa Eacute perfeitamente normal uma regra estarescrita num vocabulaacuterio que pode ser lido e compreendido por algueacutem que natildeo sejao programador o perito ou algueacutem com formaccedilatildeo na aacuterea em questatildeo

bull modularidade - as regras satildeo independentes entre si o que possibilita uma maisfaacutecil manutenccedilatildeo da base de conhecimento Isto permite e facilita a remoccedilatildeo deregras a adiccedilatildeo de outras ou a alteraccedilatildeo das jaacute existentes

bull separaccedilatildeo loacutegica - as regras satildeo independentes do motor de inferecircncia e estenatildeo carece de alteraccedilotildees ou actualizaccedilotildees quando as regras satildeo modificadas Ofuncionamento do sistema natildeo eacute alterado quando as regras o satildeo apenas as soluccedilotildeesque o sistema obteacutem eacute que poderatildeo ser diferentes (normalmente para melhor)

bull gramaacutetica riacutegida - as regras obedecem a estruturas que estatildeo perfeitamente defi-nidas agrave partida Isto implica que as mesmas possam ser validadas ou ateacute mesmoconstruiacutedas recorrendo a outros sistemas

bull execuccedilatildeo loacutegica - eacute sempre possiacutevel em qualquer altura do funcionamento dosistema pericial solicitar o desencadeamento ou disparo de uma sucessatildeo deregras A isto chama-se uma explosatildeo combinatoacuteria das regras e permite quesejam contemplados vaacuterios cenaacuterios possiacuteveis utilizando apenas uma execuccedilatildeoEsta execuccedilatildeo loacutegica tem sempre o mesmo resultado desde que se mantenham osparacircmetros iniciais

bull sistema de explicaccedilotildees - ao proceder a disparos de regras eacute possiacutevel dar indicaccedilatildeode qual a loacutegica utilizada para disparar uma determinada regra Isto permite de umaforma didaacutectica e simples justificar a razatildeo dos disparos auxiliando o utilizador nacompreensatildeo da evoluccedilatildeo que o sistema segue para atingir determinada soluccedilatildeo

Desvantagens

bull explicaccedilotildees - se um utilizador natildeo conhecer as regras ou natildeo as aceitar o sistemade explicaccedilotildees natildeo seraacute uma mais valia Poderaacute ateacute eventualmente tornar-se emalgo que confunde mais do que aquilo que auxilia

11

CAPIacuteTULO 2 ESTADO DA ARTE

bull gramaacutetica riacutegida - apesar de o meacutetodo de utilizaccedilatildeo de estruturas poder ser con-siderado importante porque estabelece um padratildeo a ser seguido pode conduzir aproblemas de expressividade quando utilizado em domiacutenios complexos

bull inconsistecircncia - um dos maiores problemas que podem surgir num sistema queutiliza a representaccedilatildeo do conhecimento atraveacutes de regras tem a ver com a possibi-lidade da existecircncia de inconsistecircncias e incoerecircncias nas regras Isto reduz-se ouevita-se atraveacutes da utilizaccedilatildeo exaustiva do sistema numa fase de testes em que satildeoequacionados o maior nuacutemero de casos ou cenaacuterios que possam despoletar todas asregras existentes na base de conhecimento

2122 Frames

Uma frame representa um conceito e eacute composta por slots que que natildeo satildeo mais do que adefiniccedilatildeo de um conjunto ltatributo valorgt Um valor pode ser um elemento uacutenico ouuma lista de valores e em termos de dados pode conter um tipo de dados primitivo ouuma referecircncia a outra frame

Esta representaccedilatildeo tem uma ligaccedilatildeo muito forte com o paradigma da programaccedilatildeoorientada a objectos jaacute que a ideia eacute a mesma representar objectos e conceitos do mundoreal utilizando a descriccedilatildeo a composiccedilatildeo e a heranccedila

Como vantagens temos

bull associaccedilatildeo - as frames definem e representam o conhecimento de uma formaassociativa (associaccedilatildeo normal de conceitos)

Desvantagens

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as frames podem representar um espaccedilo que natildeo estaacuterestringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

12

21 SISTEMAS PERICIAIS

2123 Redes semacircnticas

Uma rede semacircntica eacute um modelo formal em que satildeo descritos conceitos e relaccedilotildeesrecorrendo a um grafo dirigido Os conceitos satildeo representados por noacutes as relaccedilotildees porarcos e existe uma heranccedila de conceitos agrave medida que se procede agrave navegaccedilatildeo pelas vaacuteriasrelaccedilotildees

Como vantagens temos

bull exploraccedilatildeo graacutefica - a representaccedilatildeo de conhecimento atraveacutes de redes semacircnticaspermite a um utilizador explorar um domiacutenio graficamente Isto facilita a interacccedilatildeoe utilizaccedilatildeo do sistema

bull facilidade na adiccedilatildeo de clusters relacionados - utilizando o modo graacutefico de repre-sentaccedilatildeo torna-se mais faacutecil adicionar novos clusters em que existam conceitosrelacionados

bull faacutecil assimilaccedilatildeo - os seres humanos relacionam-se bem com ambientes graacuteficose tecircm uma tendecircncia a natildeo soacute aceitaacute-los melhor como tambeacutem a proceder a umautilizaccedilatildeo mais atractiva simples e de raacutepida aprendizagem com um miacutenimo deformaccedilatildeo

Como desvantagens temos

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as redes semacircnticas podem representar um espaccedilo que natildeoestaacute restringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

bull falta de estrutura e formalidade - natildeo existe uma semacircntica formal para a represen-taccedilatildeo simboacutelica das ligaccedilotildees o que deixa demasiado espaccedilo para a criatividade eeventualmente para o surgimento de problemas associados ao facto de poderemexistir muacuteltiplas formas de representaccedilatildeo

13

CAPIacuteTULO 2 ESTADO DA ARTE

2124 Mecanismos de inferecircncia

A base de conhecimento representa o caminho para encontrar uma determinada soluccedilatildeomas o motor de inferecircncia eacute a entidade que efectivamente percorre esse caminho Ummotor de inferecircncia pode utilizar diferentes estrateacutegias de raciociacutenio para a obtenccedilatildeode respostas As mais conhecidas satildeo a estrateacutegia de encadeamento directo e a deencadeamento inverso Contudo eacute possiacutevel combinar as duas no mesmo sistema naquiloque eacute vulgarmente conhecido como uma estrateacutegia de encadeamento misto

Encadeamento directo (Forward Chaining) ndash Um ser humano no seu dia a dia utilizaesta estrateacutegia para processamento de raciociacutenio Consoante assistimos a acontecimentoso ceacuterebro processa-os e analisa-os decidindo o que fazer de seguida De igual modo aestrateacutegia de raciociacutenio por encadeamento directo comeccedila por percorrer os factos baacutesicosque vatildeo originar o disparo de regras o que levaraacute agrave obtenccedilatildeo de conclusotildees intermeacutediasque por sua vez iratildeo originar o disparo de mais regras e assim sucessivamente Oprocesso continua ateacute que se obtenham conclusotildees finais se tal for possiacutevel ou natildeo hajamais lugar agrave possibilidade de disparo de novas regras

Devido agraves suas caracteriacutesticas esta estrateacutegia eacute mais apropriada para planeamentomonitorizaccedilatildeo controlo e interpretaccedilatildeo

Encadeamento inverso (Backward Chaining) ndash No encadeamento inverso o motorde inferecircncia tenta provar as conclusotildees finais que aparecem no lado direito das regras(RHS) Essas conclusotildees finais tambeacutem satildeo designadas como objectivos e eacute normaldizer-se que o motor de inferecircncia com encadeamento inverso eacute orientado aos objectivos(goal driven)

Para provarmos uma dada conclusatildeo teremos que provar as condiccedilotildees que aparecemno lado esquerdo da regra (LHS) que poderatildeo ser suportadas por conclusotildees intermeacutediasde outras regras ou por factos baacutesicos Sendo assim o mecanismo de encadeamentoinverso assume um caraacutecter essencialmente recursivo (para provar uma conclusatildeo vamoster que provar as condiccedilotildees)

Este tipo de estrateacutegia eacute mais apropriada para diagnoacutesticos jaacute que temos uma hipoacuteteseque necessita de ser provada de forma a chegar a uma conclusatildeo

Eacute importante salientar que a forma de representaccedilatildeo das regras eacute independente daestrateacutegia utilizada pelo motor de inferecircncia No entanto eacute possiacutevel melhorar a eficaacuteciado sistema se adaptarmos essa representaccedilatildeo consoante o encadeamento utilizado

14

21 SISTEMAS PERICIAIS

2125 Manutenccedilatildeo de uma base de conhecimento

A manutenccedilatildeo de uma base de conhecimento embora seja considerada vital para asobrevivecircncia do sistema pericial eacute um processo bastante complexo no sentido emque implica cuidados que nem sempre satildeo tidos ou considerados Eacute habitual existiremproblemas de validaccedilatildeo verificaccedilatildeo redundacircncia e contradiccedilotildees

De forma a garantir que a base de conhecimento se mantenha fiaacutevel e bem definidadevem ser desenvolvidos mecanismos que evitem a ocorrecircncia deste tipo de problemas

Redundacircncia - Considera-se aplicaccedilatildeo de redundacircncia a uma base de conhecimentoquando ao inserir uma regra estamos a adicionar conhecimento que jaacute estava contido nabase de conhecimento Podemos observar o seguinte exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X tem_barbatanas entatildeo X nada

regra3 se X nada E X tem_barbatanas entatildeo X eacute_peixe

Neste exemplo eacute possiacutevel verificar que esta base de conhecimento manteacutem-se idecircntica(o conhecimento eacute o mesmo) se removermos a regra3 considerada redundante Esta regranatildeo trouxe nenhum conhecimento novo ao sistema e pode ser descartada

Contradiccedilatildeo - Considera-se regra contraditoacuteria toda a regra que contradiz conheci-mento jaacute existente na base de conhecimento Por exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X nada entatildeo X natildeo_eacute_peixe

A regra2 contradiz claramente a regra1 pelo que eacute considerada contraditoacuteria Um dosgrandes problemas na anaacutelise de duas ou mais regras contraditoacuterias passa por determinarquais as que correspondem ao conhecimento correcto

Verificaccedilatildeo - acccedilatildeo desencadeada ainda na fase de implementaccedilatildeo inicial da base deconhecimento onde se pretende minimizar problemas essencialmente de redundacircncia e decontradiccedilatildeo que possam ser provocados pelo programador Toda a base de conhecimentoeacute verificada e confrontada com as notas apontamentos e indicaccedilotildees a que o programadorteve acesso e que serviram de alicerce para a construccedilatildeo da mesma

Validaccedilatildeo - a acccedilatildeo preventiva de erros iniciais levada a cabo logo apoacutes a implementa-ccedilatildeo da base de conhecimento precede a acccedilatildeo seguinte que consiste em validar a referidabase atraveacutes da intervenccedilatildeo de um perito o qual utiliza vaacuterios cenaacuterios de testes ondetenta obter as respostas ao mesmo tempo que vai consultando as explicaccedilotildees disponiacuteveisao longo do percurso

Apesar de ser habitual proceder a esta validaccedilatildeo com o perito que contribuiu como conhecimento eacute igualmente habitual e ateacute beneacutefico utilizar outros peritos da mesma

15

CAPIacuteTULO 2 ESTADO DA ARTE

aacuterea que para aleacutem de validarem a base de conhecimento em causa poderatildeo inclusiveconfrontar o seu proacuteprio conhecimento com o do perito original procedendo a correcccedilotildeesa eles proacuteprios ou agrave base per si Quanto maior a taxa de intervenccedilatildeo construtiva por partede peritos numa base de conhecimento melhor seraacute a qualidade associada agrave mesma

213 Raciociacutenio sobre incerteza

Raciociacutenio sobre incerteza eacute o nome dado ao processo de formulaccedilatildeo de conhecimentobaseado em fontes de informaccedilatildeo que detenham algum tipo de incerteza na sua especifi-caccedilatildeo

O conhecimento que detemos natildeo se limita a observaccedilotildees loacutegicas do tipo ldquose Obser-vaccedilatildeo_A entatildeo conclusatildeo_Brdquo Em vaacuterias situaccedilotildees necessitamos de lidar com informaccedilatildeoincompleta incorrecta ou ateacute mesmo ausente

Quando lidamos com conhecimento de peritos num determinado domiacutenio surge aindaoutro tipo de conhecimento este originado atraveacutes da observaccedilatildeo e experiecircncia

Existe entatildeo a necessidade de representaccedilatildeo de conhecimento e respectivo grau decerteza Para este efeito existem algumas teacutecnicas tais como loacutegica Fuzzy teorias deprobabilidades tais como Bayes ou Dempster-Shafer factores de certeza entre outros

Os seguintes autores podem ser consultados para referecircncia das teacutecnicas acima men-cionadas

bull Loacutegica Fuzzy - Drakopoulos (1994)

bull Bayes - Lucas (2001)

bull Dempster-Shafer - Wilson (2000) e Barnett (1991)

De seguida vai ser descrita a teacutecnica dos factores de certeza que foi a teacutecnica adoptadapara o desenvolvimento da soluccedilatildeo

2131 Factores de certeza

A teacutecnica dos Certainty Factors ou Factores de Certeza (CF) eacute um do meacutetodos detratamento de incertezas num sistema pericial A teacutecnica foi desenvolvida por Shortliffeand Buchanan para o projecto MYCIN um sistema pericial de diagnoacutestico e tratamentode meningite e tratamento do sangue Desde entatildeo que esta teacutecnica eacute o padratildeo seguido nodesenvolvimento de sistemas periciais baseados em regras Heckerman (1992)

16

21 SISTEMAS PERICIAIS

De um ponto de vista funcional caracteriza-se pela atribuiccedilatildeo de um nuacutemero o graude certeza a factos e regras Esse grau de certeza eacute uma medida relativa probabiliacutesticaque pode ser positiva ou negativa sendo normalmente usados valores no intervalo de -1 a1

A sua definiccedilatildeo original baseou-se na seguinte foacutermula FC [HE] = MC [HE]minusMD [HE]

O factor de certeza da hipoacutetese H dado uma evidecircncia E eacute dado pela diferenccedila entre

bull a medida de certeza de H dado Erarr MC [HE]

bull a medida de descrenccedila de H dado Erarr MD [HE]

O CF final de uma regra com uma premissa baseada num facto ou noutra regra eacute dadopela foacutermula 21

Quando as premissas estatildeo associadas atraveacutes do operador conjunccedilatildeo eacute aplicada afoacutermula 22

Quando existe mais do que uma regra a suportar uma determinada conclusatildeo o CFfinal eacute o resultado da foacutermula 23

CFf inal =CFpremissatimesCFregra 21

CFf inal = min[CFpremissa1 CFpremissan

]timesCFregra

22

X Y gt 0CF (X Y ) = X +Y (100˘X)100 23a

X ou Y lt 0CF (X Y ) = X +Y(1˘min(X Y)) 23b

X Y lt 0CF (X Y ) =minusCF (minusX minusY ) 23c

214 Vantagens e desvantagens

Apesar de tudo o que foi descrito um sistema pericial natildeo representa de forma alguma aferramenta mais apropriada para resolver todos os problemas com recurso a conhecimentoque de outra forma estaria reservado apenas a peritos das vaacuterias aacutereas Ao utilizarmosum sistema pericial estamos sujeitos a aspectos positivos e negativos cabendo a noacutes opapel de determinar se quando confrontados com um determinado problema a utilizaccedilatildeodeste tipo de ferramenta eacute a mais apropriada

17

CAPIacuteTULO 2 ESTADO DA ARTE

Para observar quais as principais vantagens de um sistema pericial podemos consultaras opiniotildees partilhadas por Giarratano et al (1998) CoAJRA (1997)

bull Elevada disponibilidaderArr um sistema pericial estaacute sempre disponiacutevel em termosde tempo e local pronto a funcionar sob qualquer condiccedilatildeo enquanto que umperito natildeo dispotildee dessa total disponibilidade

bull Baixo risco de utilizaccedilatildeorArr pode ser utilizado em ambientes considerados perigo-sos e hostis para um ser humano

bull Baixo custo rArr o custo de providenciar conhecimento por utilizador eacute bastantereduzido

bull DurabilidaderArr o conhecimento eacute permanente ao contraacuterio de um especialista queestaacute sujeito a ausecircncias

bull Conhecimento de vaacuterios especialistasrArr quando agregado o conhecimento reco-lhido a partir de vaacuterios especialistas poderaacute conduzir a resultados mais adequadose considerados melhores quando confrontados com o conhecimento individual e osresultados que daiacute advecircm

bull Capacidade de explicaccedilatildeorArr um sistema pericial consegue explicar detalhadamenteos passos que levaram agrave resposta dada enquanto que um ser humano pode natildeo tera disponibilidade nem a vontade de explicar todo o processo de raciociacutenio seguido

bull EmotividaderArr um sistema pericial natildeo estaacute sujeito a emoccedilotildees o seu funciona-mento e as respostas que providencia natildeo satildeo influenciadas pelo meio em que estaacuteinserido como por exemplo situaccedilotildees de stress ou situaccedilotildees de perigo iminente (aqueda de um aviatildeo ou uma central nuclear em risco)

bull Natildeo influenciaacutevelrArr acontecimentos mais actuais tecircm o mesmo peso na tomada dedecisatildeo evitando assim o fenoacutemeno de ldquoviciaccedilatildeordquo da base de conhecimento

No entanto um sistema pericial comporta tambeacutem algumas desvantagens das quaisse salientam

bull Emotividade rArr o facto de natildeo ser emotivo tambeacutem pode ser visto como umadesvantagem jaacute que natildeo recorrer a emoccedilotildees pode ser problemaacutetico por exemploem situaccedilotildees que necessitem de senso comum

18

21 SISTEMAS PERICIAIS

bull ManutenccedilatildeorArr se natildeo for devidamente mantido e actualizado um sistema pericialcorre o risco de ldquoenvelhecerrdquo no sentido em que deixa de ser um sistema fiaacutevel aque possamos recorrer e que corre o risco de abandono

bull CriatividaderArr um sistema pericial natildeo tem capacidade de reagir de forma diferentea problemas colocados seguindo sempre uma linha estaacutevel de raciociacutenio

bull Adaptaccedilatildeo sensorial rArr um sistema pericial natildeo consegue reagir a informaccedilatildeosensorial do meio que o rodeia entenda-se sensorial como sentidos humanos taiscomo o cheiro o tacto e a visatildeo

19

CAPIacuteTULO 2 ESTADO DA ARTE

22 GISPSA - GIS Problem Solver Advisor

O Gestatildeo Integrada de Seguros (GIS) eacute um Sistema de Informaccedilatildeo vocacionado para aactividade seguradora residente na plataforma AS400 da IBM Umas das caracteriacutesticasmais interessantes deste sistema acabou por ser tambeacutem um dos grandes proporciona-dores de eventuais problemas O GIS possui uma grande capacidade de configuraccedilatildeo oque sendo muito uacutetil para a adaptabilidade deste a cenaacuterios situaccedilotildees ou utilizadoresdiferentes acaba por originar vaacuterios problemas operacionais atraveacutes de inconsistecircnciasna proacutepria configuraccedilatildeo

Dada esta facilidade aparente de ocorrecircncia de problemas e a falta de sensibilidadee formaccedilatildeo teacutecnica dos utilizadores para os resolver a equipa de assistecircncia teacutecnicaafecta ao GIS estava muitas vezes com sobrecarga de pedidos por parte dos clientes quepretendem estes problemas solucionados Existiam periacuteodos de especial relevacircncia noque toca a estas sobrecargas tais como os fechos de ano das empresas

A partir daqui surge a ideia e a necessidade da criaccedilatildeo do GISPSA com o intuito dealiviar a sobrecarga da equipa de assistecircncia teacutecnica mas essencialmente com o grandeobjectivo de assegurar que um cliente natildeo fica sem soluccedilatildeo para os problemas com que sedepara apenas porque natildeo estatildeo teacutecnicos disponiacuteveis A grande vantagem de um sistemapericial foi e seraacute sempre essa poder substituir um perito sem ter que enfrentar questotildeescomo a disponibilidade custos ou tempo

Assim surge o GISPSA que mais natildeo eacute que um projecto criado por Pinto no acircmbito deum projecto acadeacutemico cujo objectivo inicial passava por criar um Sistema Pericial paradiagnoacutestico de problemas operacionais do GIS Este sistema teve por base o conhecimentoe o respectivo raciociacutenio extraiacutedos de um perito da aacuterea Administrativa-Financeira doGIS

No caso de problemas mais complexos em que o Sistema Pericial natildeo consiga determi-nar os factores de erro eacute remetida a resoluccedilatildeo para um teacutecnico da empresa comunicandoesse facto ao utilizador Pinto (1998)

221 Arquitectura

Sendo um sistema pericial o GISPSA teria que ser desenvolvido utilizando uma lingua-gem que tivesse uma seacuterie de caracteriacutesticas A existecircncia de uma base de conhecimento apossibilidade de consultar factos adicionar novos factos ou ainda de remover factos nessamesma base e aspectos como o backtracking na realizaccedilatildeo de raciociacutenio ao inferir sobreesses mesmos factos natildeo permitia um leque muito alargado na escolha da linguagem de

20

22 GISPSA - GIS PROBLEM SOLVER ADVISOR

desenvolvimento

Desta forma ficou decidido que o GISPSA seria desenvolvido em prolog (maisespecificamente winprolog) Devido agrave simplicidade de utilizaccedilatildeo e extensa documentaccedilatildeode apoio o LPAProlog foi usado como motor de inferecircncia e o LPAFlex foi usado paraestabelecer a declaraccedilatildeo de regras

Como jaacute foi referido anteriormente o GISPSA eacute uma aplicaccedilatildeo standalone desenhadae desenvolvida para uma execuccedilatildeo local em mono-posto e sujeita agrave obtenccedilatildeo de umalicenccedila de utilizaccedilatildeo para garantir o seu funcionamento

Figura 2 GISPSA menu inicial

A aplicaccedilatildeo dispotildee de uma interface graacutefica tambeacutem criada em winprolog que utilizarecursos especiacuteficos do sistema operativo Windows

A base de conhecimento eacute armazenada num uacutenico ficheiro ksl e o seu carregamentonatildeo eacute parcial O mesmo seraacute dizer que toda a base de conhecimento eacute passada paramemoacuteria de trabalho assim que o programa arranca

222 Funcionamento

Em termos funcionais a aplicaccedilatildeo permite mudar o tipo de linguagem a ser empreguenas conversaccedilotildees estabelecidas com o utilizador consoante esta esteja a ser utilizadapor um teacutecnico (habitualmente os teacutecnicos com formaccedilatildeo na aacuterea) ou um utilizadornormal (o cliente que adquiriu a aplicaccedilatildeo e cuja formaccedilatildeo eacute mais reduzida ou ateacute mesmoinexistente)

Apoacutes a definiccedilatildeo da linguagem de interacccedilatildeo a utilizar o sistema inicia entatildeo o pedidode assistecircncia apresentando a mensagem ldquoSeleccione a aplicaccedilatildeordquo (figura 3) que permitenuma primeira instacircncia direccionar o raciociacutenio face agrave resposta do utilizador

21

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 3 GISPSA interacccedilatildeo inicial

Figura 4 GISPSA exemplo de interacccedilatildeo pergunta-resposta

223 Limitaccedilotildees

Apesar de ser inovadora na aacuterea esta aplicaccedilatildeo foi no iniacutecio bastante utilizada por algunsclientes tendo sofrido algum abandono de forma gradual ao longo do tempo de vida quejaacute leva Apoacutes uma anaacutelise chegou-se agrave conclusatildeo que as principais causas na origemdesse abandono seriam as seguintes

bull Adicionar regras implicava o conhecimento da sintaxe das mesmas Verificou-se que esta tarefa era demasiado complexa para um utilizador sem formaccedilatildeo esensibilidade suficientes na aacuterea da programaccedilatildeo

bull O acto de proceder agrave ediccedilatildeo de regras existentes na base de conhecimento traduz-senuma tarefa que para aleacutem de morosa eacute essencialmente de risco no sentido em

22

23 WEB EXPERT SYSTEMS

que natildeo existe uma verdadeira noccedilatildeo do impacto que estas alteraccedilotildees possam vir ater no comportamento global do sistema

bull O sistema apenas pode ser instalado em mono-posto o que obriga agrave obtenccedilatildeo deuma licenccedila por cada instalaccedilatildeo que se pretende realizar

bull O sistema natildeo permite a integraccedilatildeo com ambientes baseados em redes e sistemasdistribuiacutedos

bull Natildeo existe nenhum mecanismo de verificaccedilatildeo da base de conhecimento

bull O aspecto visual da aplicaccedilatildeo estaacute ultrapassado e eacute pouco apelativo

23 Web Expert Systems

Actualmente uma grande maioria dos sistemas periciais desenvolvidos satildeo desenhadospara um funcionamento em ambientes web As razotildees apontadas para esta orientaccedilatildeo satildeovaacuterias destacando-se a evoluccedilatildeo da proacutepria tecnologia as velocidades de transmissatildeode dados em redes a possibilidade de acesso em muacuteltiplas localizaccedilotildees geograacuteficas(desde que assegurado o necessaacuterio acesso agrave rede) e ainda o desenvolvimento de novasferramentas que possibilitam maior facilidade na criaccedilatildeo destes novos sistemas

Algumas das ferramentas que permitem actualmente o desenvolvimento de um sistemapericial baseado em ambientes web satildeo as seguintes

1 WebFlex - LPA Flex

2 EXSYS CORVID

3 WebCLIPS

4 JCLIPS

5 JESS

6 Acquire

WebFlex - Esta ferramenta permite a publicaccedilatildeo de um sistema pericial desenvolvidoem ldquoLPA Prologrdquo Os sistemas periciais desenvolvidos a partir deste meacutetodo necessitamainda de outra ferramenta para garantir o funcionamento o ldquoLPA ProWeb Serverrdquo Eacute

23

CAPIacuteTULO 2 ESTADO DA ARTE

possiacutevel adaptar um sistema pericial jaacute desenvolvido para ser disponibilizado numarede sem ser necessaacuterio efectuar qualquer tipo de alteraccedilatildeo No entanto se for pretendidoalgum tipo de configuraccedilatildeo extra por exemplo incluir imagens ou alterar a aparecircncia dealguns controlos eacute uma alteraccedilatildeo extremamente morosa e complexa

WebFlex allows you to deliver your flex-based expert systems onto Intranets

and Extranets easily Just create your rules and frames and questions as per normal

in flex and WebFlex will construct a web server-based solution using ProWeb where

all the questions are sent automatically configured for a standard HTMLJavascript

browserLogic Programming Associaties Ltd (2010)

Eacute possiacutevel alterar o HTML de saiacuteda que o webflex utiliza por defeito no entanto estaconfiguraccedilatildeo natildeo eacute tatildeo simples quanto poderaacute parecer agrave partida e obriga agrave alteraccedilatildeo dosistema pericial

Esta ferramenta funciona apenas em sistemas windows e eacute necessaacuteria a obtenccedilatildeo deuma licenccedila de utilizaccedilatildeo (natildeo eacute gratuita)

EXSYS CORVID - Eacute uma ferramenta composta por dois moacutedulos Exsys CORVID

Knowledge Automation Expert System Software e Exsys Servlet Runtime EXSYS (2010)

Natildeo foi possiacutevel encontrar nenhum sistema desenvolvido por esta ferramenta pormotivos de confidencialidade eou vantagem competitiva Estatildeo no entanto disponiacuteveisaplicaccedilotildees de demonstraccedilatildeo na paacutegina oficial da empresa Verificou-se que nenhumadas aplicaccedilotildees de demonstraccedilatildeo disponiacuteveis possui capacidades de dar explicaccedilotildees oujustificaccedilotildees

De acordo com EXSYS as aplicaccedilotildees construiacutedas com esta ferramenta podem seracedidas por Servlet Applet ou standalone e esta ferramenta necessita da obtenccedilatildeo deuma licenccedila de desenvolvimento

WebCLIPS - Segundo Michael Giordano o WebCLIPS eacute uma implementaccedilatildeo CGI

que envolve o C Language Integrated Production System (CLIPS) como aplicaccedilatildeo internaO CLIPS eacute uma ferramenta de desenvolvimento de sistemas periciais

Esta ferramenta foi desenvolvida em linguagem C o que significa que em termos deportabilidade desde que se possua o coacutedigo fonte este poderaacute ser compilado em qualquersistema operativo jaacute que o compilador para a linguagem estaacute disponiacutevel para todas as

24

23 WEB EXPERT SYSTEMS

versotildees existentes no mercado No entanto o WebCLIPS apenas foi desenvolvido parafuncionamento em sistemas windows e linux

O CLIPS eacute uma ferramenta livre que permite o desenvolvimento de sistemas baseadosem regras Pode ser integrado com algumas linguagens das quais se destacam C Java

(JCLIPS) FORTRAN entre outras Esta eacute provavelmente a ferramenta mais utilizada nodesenvolvimento de sistemas periciais devido agrave sua rapidez eficiecircncia e pelo facto de sergratuita

JCLIPS - Eacute uma biblioteca que permite integraccedilatildeo com Java e permite igualmentea utilizaccedilatildeo do motor do CLIPS a partir de uma classe Java Esta interligaccedilatildeo eacute feitaatraveacutes da importaccedilatildeo do ficheiro (dll ou so consoante o sistema operativo) e permite aexecuccedilatildeo de uma instacircncia ou seja permite ter apenas uma sessatildeo de um sistema pericialde cada vez Maarten Menken (2010)

JESS - O JESS eacute uma extensatildeo do CLIPS em JAVA Eacute basicamente uma bibliotecacujo objectivo natildeo passa por gerar uma aplicaccedilatildeo web mas sim servir de base para quepossa ser integrada ou utilizada para esse efeito Ernest Friedman-Hill (2010)

Utiliza uma linguagem especiacutefica designada JESS language equivalente ao CLIPSmas com novos componentes que a tornam uma linguagem complexa e de difiacutecil utilizaccedilatildeopor algueacutem sem conhecimentos de inteligecircncia artificial

Acquire - Eacute um produto bastante avanccedilado do ponto de vista tecnoloacutegico face aosconcorrentes no sentido em que permite uma separaccedilatildeo evidente entre a camada aplicaci-onal e a camada de apresentaccedilatildeo Promove uma separaccedilatildeo cliente-servidor e disponibilizaum Software Development Kit (SDK) que permite a integraccedilatildeo com outras aplicaccedilotildees

De acordo com Acquired Intelligence o produto estaacute sujeito a uma licenccedila de utilizaccedilatildeoe eacute disponibilizado ainda um serviccedilo online de alojamento de sistemas periciais omyAcquire disponiacutevel mediante uma subscriccedilatildeo semestral

231 Casos de estudo

Os sistemas periciais mais especificamente aqueles que satildeo baseados em sistemas webtecircm conhecido nos uacuteltimos anos uma evoluccedilatildeo gradual e consistente devido em grandeparte agrave simplicidade e disponibilidade que possibilitam Podem ser acedidos a partir dequalquer local no mundo 24 horas por dia e sem qualquer tipo de limitaccedilatildeo bastando

25

CAPIacuteTULO 2 ESTADO DA ARTE

apenas que se garanta o acesso agrave rede onde o sistema pericial estaacute colocado

As interfaces satildeo mais apelativas e chegam a fazer uso de imagens e outros meiosgraacuteficos ou de multimeacutedia cujo objectivo natildeo eacute apenas o de tornar os sistemas maisinteressantes mas tambeacutem mais eficazes jaacute que auxiliam de forma mais simples eesclarecida Os controlos utilizados as caixas de interacccedilatildeo e ateacute mesmo as explicaccedilotildees ejustificaccedilotildees (nos sistemas que o permitam) ajudam a ter uma ideia cada vez mais clarasobre o funcionamento dos sistemas obtendo-se assim melhores resultados

Alguns dos casos de estudo de sistemas periciais baseados em sistemas web existentesactualmente tecircm como um dos seus maiores objectivos a disponibilidade global dosmesmos (satildeo disponibilizados normalmente atraveacutes da internet) e os mais conhecidossatildeo

bull Landfill Operation Management Advisor (LOMA)

bull Medical Diagnosis Support System (MDSS)

bull Whale watcher

2311 LOMA - Landfill Operation Management Advisor

O LOMA eacute um sistema pericial online que analisa problemas operacionais falhas eacidentes em aterros comuns Aleacutem disso o LOMA fornece conselhos sobre como umgestor pode evitar esses problemas e em caso de ocorrecircncia sobre como diminuir oimpacto das suas consequecircncias Encontra-se disponiacutevel em httplomacivil

duthgr e eacute de utilizaccedilatildeo puacuteblica

O sistema pericial foi desenvolvido por Dokas recorrendo agraves ferramentas WebFlex eLPA ProWeb Server

A arquitectura da aplicaccedilatildeo web pode ser visualizada na figura 5 e consiste nosseguintes moacutedulos Dokas (2005)

bull Sistema pericial LOMA

bull Moacutedulo de aconselhamento

bull Moacutedulo operacional de problemas-causa

bull Eventos inicias

bull Problemas operacionais

26

23 WEB EXPERT SYSTEMS

bull Moacutedulo de explicaccedilotildees

bull Moacutedulo de submissatildeo de conhecimento e informaccedilatildeo

Figura 5 Arquitectura do LOMA

O moacutedulo mais relevante para o acircmbito desta dissertaccedilatildeo eacute o ldquoSistema pericial LOMArdquoe eacute tambeacutem o moacutedulo mais importante para a aplicaccedilatildeo LOMA

Eacute composto por vinte e quatro sub-moacutedulos cada um deles responsaacutevel por analisarum tipo especiacutefico de problema e ainda por um sub-moacutedulo extra que eacute responsaacutevel pelocontrolo do sistema

O sub-moacutedulo extra questiona o utilizador que descreve o problema (ver 6 e 7) ecom base na sua descriccedilatildeo apresenta uma lista de possiacuteveis problemas (ver 8) Quandoo utilizador selecciona um problema da lista de resultados eacute activado o respectivo sub-moacutedulo que por sua vez iraacute fornecer informaccedilatildeo de como prevenir o problema ou nocaso de este jaacute ter acontecido como minimizar as suas consequecircncias (ver 9)

27

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 6 Paacutegina inicial do sistema pericial LOMA

Figura 7 Sub-moacutedulo extra

28

23 WEB EXPERT SYSTEMS

Figura 8 Sugestatildeo de problemas do sub-moacutedulo extra

Figura 9 Sub-moacutedulo especializado

29

CAPIacuteTULO 2 ESTADO DA ARTE

2312 MDSS - Medical Diagnosis Support System

O MDSS eacute um sistema pericial utilizado na aacuterea da medicina e foi desenvolvido paraajudar no diagnoacutestico e tratamento da diabetes A diabetes pode afectar vaacuterias partes docorpo provocando diversos sintomas e complicaccedilotildees Quando detectada atempadamenteeacute mais facilmente controlaacutevel e menos perigosa Por todos estes motivos foi criado umsistema pericial online o MDSS que permite inferir sobre uma seacuterie de sintomas parachegar a um diagnoacutestico

Na opiniatildeo de Filho uma das vantagens deste sistema pericial eacute que possibilita quemeacutedicos em ambientes rurais ou perigosos e de difiacutecil acesso com recursos limitadospossam aceder ao sistema pericial de forma a terem uma ajuda no diagnoacutestico destadoenccedila O que comeccedilou como um sistema pericial vocacionado e orientado para adiabetes rapidamente cresceu e tornou-se algo mais do que isso sendo hoje utilizadocomo sistema de diagnoacutestico para vaacuterias doenccedilas

No que diz respeito agrave sua arquitectura o MDSS foi desenvolvido em LPA Prolog

recorrendo aos moacutedulos ProWeb e ProData e utilizando Open Data Base Connectivity

(ODBC) para acesso agrave base de dados Utiliza loacutegica fuzzy para raciociacutenio sobre incertezaspara lidar com conhecimento parcial

O sistema eacute composto por trecircs moacutedulos No primeiro moacutedulo eacute possiacutevel um es-pecialista definir sintomas exames cliacutenicos exames de laboratoacuterio e exames relativosa uma ou mais doenccedilas Eacute ainda possiacutevel a atribuiccedilatildeo de valores (pesos estatiacutesticos)ou de resultados que definem uma doenccedila Isso permite por exemplo que a pressatildeoarterial possa estar associada ao diagnoacutestico de pressatildeo alta diabetes gravidez de riscoou insuficiecircncia renal entre outros Informaccedilotildees de consultas anteriores e exames satildeoautomaticamente ligadas e analisadas sob fundamentaccedilatildeo loacutegico temporal

No segundo moacutedulo o sistema permite consultas atraveacutes do qual os dados relevantespara o paciente satildeo registados e relacionados com outros exames correlacionados Durantea fase de diagnoacutestico o sistema pode sugerir outros testes ou procedimentos para entatildeoinferir se haacute outros riscos e doenccedilas a serem investigados

No terceiro moacutedulo eacute efectuado o diagnoacutestico O sistema iraacute localizar automatica-mente os diagnoacutesticos jaacute registados noutras consultas incluindo aquelas feitas por outrosmeacutedicos Aleacutem disso o sistema pesquisa niacuteveis de doenccedilas de acordo com os resultadosdos exames Pode tambeacutem sugerir uma investigaccedilatildeo mais aprofundada sempre que osdados natildeo sejam suficientes para garantir um diagnoacutestico preciso

30

23 WEB EXPERT SYSTEMS

2313 Whale watcher

O sistema pericial Whale watcher eacute um sistema de demonstraccedilatildeo da plataforma AcquireEste e outros sistemas periciais similares estatildeo disponiacuteveis na paacutegina da Acquire (httpwwwaiinccademos)

Figura 10 Paacutegina principal do sistema pericial Whale Watcher

Figura 11 Paacutegina final do sistema pericial Whale Watcher

Atraveacutes das demonstraccedilotildees facultadas pela Acquire natildeo eacute possiacutevel concluir se existealgum tipo de sistema de explicaccedilotildees No entanto no final de cada sessatildeo do sistemapericial eacute possiacutevel consultar um resumo (ver 11) que funciona como uma explicaccedilatildeomuito baacutesica da inferecircncia realizada pelo sistema pericial jaacute que se limita apenas amostrar os factos que foram respondidos durante a sessatildeo

31

3Ferramentas utilizadas

Durante o desenvolvimento deste trabalho foi necessaacuterio decidir sobre quais as ferramen-tas a utilizar para a criaccedilatildeo do novo sistema pericial Atendendo a algumas caracteriacutesticasproacuteprias e objectivos traccedilados era necessaacuterio utilizar alguma especificidade na escolhapara garantir a exclusividade do resultado Desenvolvimento web capacidade de pro-ceder a inferecircncia sobre conhecimento representado atraveacutes de regras simplicidade deutilizaccedilatildeo actualidade da tecnologia entre outras caracteriacutesticas influenciaram significa-tivamente nesta escolha

Entre os vaacuterios ambientes de desenvolvimento disponiacuteveis a opccedilatildeo recaiu sobre umque para aleacutem de simples e eficiente era utilizado regularmente em situaccedilatildeo profissi-onal pelo criador deste projecto pelo que aqui foi relativamente simples chegar a umaconclusatildeo

Indo de encontro agraves razotildees que levaram agrave escolha da linguagem do motor de inferecircnciautilizada no projecto que deu origem a este trabalho tambeacutem aqui foi escolhida umalinguagem que possibilita o backtracking de forma eficaz e simplificada caracteriacutesticaessencial para o bom funcionamento do motor de inferecircncia e que contribui largamentepara o sucesso do sistema pericial

31 Ambiente de desenvolvimento

O ambiente de desenvolvimento e respectiva linguagem de programaccedilatildeo utilizados para acriaccedilatildeo do interface do sistema pericial foram seleccionados levando em conta algunsrequisitos e factores considerados necessaacuterios e ateacute mesmo essenciais para a soluccedilatildeo finalA listagem dessas caracteriacutesticas eacute a seguinte

bull Baixo custo de disponibilizaccedilatildeo

33

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

bull Independecircncia do sistema operativo

bull Simples escalabilidade

bull Visual apelativo

Com base nesta lista de caracteriacutesticas consideradas desejaacuteveis ou ateacute mesmo essen-ciais para a soluccedilatildeo final e considerando tambeacutem a jaacute longa experiecircncia de utilizaccedilatildeonesta plataforma foi escolhida a linguagem Java J2EE utilizando a framework Icefaces eo portal Glassfish Podemos considerar para esta escolha uma seacuterie de paracircmetros paraaleacutem dos jaacute evidenciados

bull O J2EE eacute uma linguagem independente do sistema operativo

bull O J2EE caracteriza-se pela sua modularidade

bull Glassfish eacute um portal open source com suporte para J2EE

bull Icefaces eacute uma framework JavaServer Faces (JSF) compatiacutevel com o Glassfish

bull Icefaces permite a criaccedilatildeo de interfaces graacuteficos de uma forma simples

bull Existecircncia de boa documentaccedilatildeo relativamente a todos os produtos

Para aleacutem disto podemos ainda considerar e referir outros produtos e componentesque natildeo sendo menos importantes tambeacutem foram utilizados durante o desenvolvimentodeste trabalho A lista completa de ferramentas eacute a seguinte

bull Java J2EE 60

bull Eclipse Galileo (com plugins para Glassfish e svn) - Integrated Development

Environment (IDE) para Java

bull Icefaces 182

bull GlassFish - portal

bull Visual SVN Server e Tortoise - controlo de versotildees

bull MikTeX - latex

bull TexnicCenter - IDE para latex

34

32 MOTOR DE INFEREcircNCIA

32 Motor de inferecircncia

Em qualquer sistema pericial o motor de inferecircncia eacute o cerne do mesmo O seu desenvol-vimento obriga habitualmente a um esforccedilo e concentraccedilatildeo maiores porque aqui residea forma como o sistema iraacute percorrer as vaacuterias etapas necessaacuterias para alcanccedilar umasoluccedilatildeo

Tambeacutem neste trabalho o motor de inferecircncia eacute um ponto essencial e a sua implemen-taccedilatildeo teve um papel destacado no processo de anaacutelise realizado Actualmente existemalguns produtos que podem ser utilizados integral ou parcialmente como motor deinferecircncia de um sistema pericial esses produtos podem ser frameworks ou shells ouainda Business Rule Management System (BRMS)

Os termos framework e shell satildeo muitas vezes utilizados como sinoacutenimo umaframework eacute uma abstracccedilatildeo que permite agregar formas de resoluccedilatildeo de problemascomuns uma shell eacute similar no sentido em que disponibiliza uma camada de abstracccedilatildeouma ldquoconchardquo que encapsula os serviccedilos

No sentido de tentar reutilizar um produto jaacute existente foi elaborado um estudo acercados actuais produtos e das suas caracteriacutesticas A abordagem seguida para esse estudo foiuma abordagem por fases em que gradualmente se foi estreitando o conjunto de soluccedilotildeesaceitaacuteveis mediante a utilizaccedilatildeo de alguns criteacuterios

Foram consideradas cinco fases

bull Fase I - Recolha de candidatos

bull Fase II - Requisitos base

bull Fase III - Viabilidade econoacutemica

bull Fase IV - Viabilidade teacutecnica

bull Fase V - Prova de conceito

321 Fase I - Recolha de candidatos

A fase I teve como objectivo recolher alguns dos actuais produtos que possuam caracteriacutes-ticas desejadas para um sistema deste geacutenero Natildeo foram considerados alguns produtosque satisfaziam os requisitos mas que natildeo permitem uma integraccedilatildeo com Java Foramidentificados os seguintes produtos como potenciais integradores do projecto

35

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

Produto BRMS FrameworkDrools X XHammurapi Rules XILog XJCLIPS XJESS XJEOPS XJRuleEngine XOpenL Tablets XOpenRules XProva language XYprolog XZilonis X

Tabela 1 Listagem de produtos da Fase I

Drools - ou JBoss Rules eacute um produto open source da RedHat (2010) Define umalinguagem especiacutefica para as regras Eacute desenvolvido em Java e utiliza um mecanismo deencadeamento directo baseado em regras natildeo implementa justificaccedilotildees

Hammurapi Rules - eacute um produto desenvolvido em Java por Hammurapi GroupEste motor de inferecircncia utiliza a sintaxe da linguagem Java para definiccedilatildeo de regras Eacutepossiacutevel definir grupos de regras em XML e estaacute disponiacutevel um plug-in para Eclipse quepermite a ediccedilatildeo destes grupos Suporta encadeamento directo e indirecto

ILOG - WebSphere ILOG Business Rule Management Systems eacute como o nome indicaum BRMS eacute um produto da IBM (2010) que requer licenciamento adequado Eacute necessaacuteriaa instalaccedilatildeo e configuraccedilatildeo de alguns componentes de forma a que o produto possa serutilizado por exemplo Rule Team Server Rule Execution Server Http server entreoutros

JCLIPS - eacute um produto open source mantido por uma comunidade e permite aintegraccedilatildeo entre Java e CLIPS O CLIPS ldquoC Language Integrated Production Systemrdquo eacuteum sistema pericial desenvolvido em linguagem C Maarten Menken (2010)

JESS - eacute um produto comercial da Sandia National Laboratories desenvolvidoem Java Eacute necessaacuterio adquirir licenccedilas para efectivar a utilizaccedilatildeo do mesmo ErnestFriedman-Hill (2010)

JEOPS - Java Embedded Object Production System (JEOPS) eacute uma framework open

source desenvolvida num acircmbito acadeacutemico por Carlos Figueira Filho

36

32 MOTOR DE INFEREcircNCIA

JRuleEngine - eacute um produto open source desenvolvido em Java e mantido porMcarniel (2010) As regras satildeo compiladas para classes Java

OpenL Tablets - eacute um BRMS open source cuja principal vantagem eacute a integraccedilatildeocom a folhas de caacutelculo Excel Permite a utilizaccedilatildeo de tabelas de decisatildeo no formatoExcel OpenL (2010)

OpenRules - eacute um produto da OpenRules Inc sujeito a licenccedila de utilizaccedilatildeo Eacutetotalmente orientado para a folha de caacutelculo Excel da Microsoft

Prova language - eacute um produto open source desenvolvido em Java por KozlenkovAlex and Paschke Disponibiliza uma linguagem muito semelhante ao prolog Eacute umproduto bastante direccionado para a comunicaccedilatildeo entre agentes expondo inclusiveacute umsistema multi-agente

Yprolog - eacute um produto open source desenvolvido em Java por Boris van SchootenEacute uma reacuteplica do prolog desenvolvida totalmente em Java Foi evoluindo ao longo dotempo a partir de produtos como o WProlog e o XProlog

Zilonis - eacute um produto desenvolvido em Java por Elie Levy O formato das regras eacutesemelhante ao CLIPS

322 Fase II - Requisitos base

A fase II teve como objectivo filtrar a lista de candidatos no sentido de excluir produtosque natildeo se enquadrem directamente com os requisitos do sistema a desenvolver Assimsendo foram excluiacutedos alguns dos candidatos jaacute indicados e os principais motivos daexclusatildeo satildeo

bull Natildeo permitirem a integraccedilatildeo com um portal

bull Formato das regras eacute fechado natildeo possibilitando possiacuteveis e futuras evoluccedilotildees

bull Natildeo disponibilizaccedilatildeo de acesso aos serviccedilos internos mais concretamente natildeofornecem uma framework de controlo Desta forma natildeo eacute possiacutevel reutilizar partesdo motor de inferecircncia ou do sistema de gestatildeo de regras sem que este seja feitoatraveacutes do proacuteprio produto

Candidatos excluiacutedos pelas razotildees atraacutes expostas

37

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProdutoILogOpenRulesOpenL Tablets

Tabela 2 Listagem de produtos excluiacutedos na Fase II

323 Fase III - Viabilidade econoacutemica

Sendo um paracircmetro com importacircncia relativa dada a possiacutevel aplicaccedilatildeo comercial deum produto baseado neste trabalho natildeo deixa de ser importante para o estudo realizadoDesta forma a fase III teve como objectivo filtrar a lista de resultados no sentido de excluirprodutos que natildeo sejam economicamente viaacuteveis quer por motivos de licenciamentocomercial quer por motivos de licenccedilas de utilizaccedilatildeo

Foram entatildeo considerados os produtos constantes da tabela 3 como natildeo viaacuteveis nosentido em que existem produtos open source similares para o efeito pretendido

ProdutoDroolsJESS

Tabela 3 Listagem de produtos excluiacutedos na Fase III

324 Fase IV - Viabilidade teacutecnica

Esta fase teve por objectivo filtrar a lista de resultados de forma a que os produtos natildeoviaacuteveis do ponto de vista teacutecnico natildeo sejam considerados para a escolha final

Os produtos que natildeo foram considerados viaacuteveis por questotildees teacutecnicas satildeo

38

32 MOTOR DE INFEREcircNCIA

Produto RazatildeoJEOPS Documentaccedilatildeo disponiacutevel bastante vaga projecto desconti-

nuado e natildeo estaacutevelJRuleEngine As regras satildeo compiladas para Java natildeo permite escalabili-

dade sem compilar o projectoZilonis Natildeo estaacute preparado para ser utilizado como framework ape-

nas permite uma aplicaccedilatildeo stand-alone

Hammurapi Rules As regras satildeo compiladas para Java natildeo permite escalabili-dade sem compilar o projecto

Tabela 4 Listagem de produtos excluiacutedos na Fase IV

325 Fase V - Prova de conceito

Nesta uacuteltima fase restaram trecircs produtos JClips Prova e YProlog Apoacutes a realizaccedilatildeode uma prova de conceito com estes produtos foram encontradas algumas vantagens edesvantagens Esta anaacutelise pode ser consultada nas tabelas 5 6 e 7

JClipsVantagens Desvantagens

bull Linguagem CLIPS bull Apenas permite 1 execuccedilatildeo deforma a permitir vaacuterias utilizaccedilotildeesdo motor de inferecircncia eacute necessaacuterioimplementar loacutegica especiacutefica

bull Ausecircncia de documentaccedilatildeo

Tabela 5 JClips - Vantagens e desvantagens

39

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProvaVantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza exemplos de uti-lizaccedilatildeo

bull Uacuteltima actualizaccedilatildeo em 10 deJunho de 2010

bull Instaacutevel

bull Bastante ocupaccedilatildeo de recursos(CPU e memoacuteria)

bull Disponibilizaccedilatildeo de pouca docu-mentaccedilatildeo

bull Ao invocar um predicado natildeo ins-tancia apenas as variaacuteveis na pri-meira vez mas devolve uma lista detodos os resultados possiacuteveis simi-lar ao predicado findall do LPA Pro-log

Tabela 6 Prova - Vantagens e desvantagens

YProlog

Vantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza documentaccedilatildeo eexemplos de utilizaccedilatildeo

bull Operaccedilotildees baacutesicas do Prologtecircm o mesmo comportamento

bull Uacuteltima actualizaccedilatildeo em 21 de Abrilde 2006

Tabela 7 YProlog - Vantagens e desvantagens

326 Conclusatildeo e fundamentaccedilatildeo da escolha

Tratando-se do nuacutecleo do sistema pericial e sabendo que natildeo existe actualmente ummotor de inferecircncia que corresponda totalmente aos requisitos necessaacuterios foi decidido

40

32 MOTOR DE INFEREcircNCIA

desenvolver um motor de inferecircncia de raiz recorrendo a um produto que permitisse umdesenvolvimento raacutepido e com uma curva de aprendizagem pouco acentuada Para tale depois do estudo realizado perante as vaacuterias hipoacuteteses disponiacuteveis foi decidido optarpelo YProlog

Na uacuteltima fase do estudo apresentado entre os candidatos disponiacuteveis este aparececomo o mais viaacutevel quer pelos aspectos de adaptabilidade funcionamento e facilidadede utilizaccedilatildeo quer ainda pelo nuacutemero reduzido de desvantagens encontradas face aosrestantes

41

4Wexsys

Este trabalho baseia-se na criaccedilatildeo de um sistema pericial baseado no GISPSA e oobjectivo principal passa pela integraccedilatildeo do novo sistema num ambiente de acesso globalou mais especificamente num portal web Para atingir tal meta foi descrito nos capiacutetulosanteriores quais as ferramentas a utilizar sendo que agora vamos compreender como eacuteque a soluccedilatildeo em si foi desenvolvida

O sistema que nasceu a partir desta implementaccedilatildeo foi baptizado com o nome wexsys- ldquoWeb Expert Systemrdquo Partindo da base do GISPSA o wexsys possui um motor deinferecircncia totalmente novo criado especificamente no acircmbito deste trabalho e ainda umabase de conhecimento Foi decidido adoptar o princiacutepio de utilizaccedilatildeo de regras para arepresentaccedilatildeo da base de conhecimento

De referir ainda que o raciociacutenio utilizado no motor de inferecircncia segue uma filosofiado tipo backward chaining princiacutepio jaacute descrito nos capiacutetulos anteriores

Detentor de uma interface considerada actual para os paracircmetros utilizados nos diasque correm este novo sistema pericial foi criado atraveacutes da utilizaccedilatildeo de J2EE e Icefaces

que lhe conferem um aspecto renovado e extremamente apelativo aos utilizadores Satildeoutilizadas teacutecnicas tais como Ajax que providenciam uma dinacircmica de funcionamentomuito interessante do ponto de vista da utilizaccedilatildeo

41 Arquitectura global

A soluccedilatildeo foi projectada de acordo com a arquitectura J2EE ou seja utilizando uma sepa-raccedilatildeo em moacutedulos ou componentes Foram criados dois moacutedulos principais pWexsysEAR

e WexsysEAR estes moacutedulos satildeo a separaccedilatildeo da aplicaccedilatildeo em duas grandes camadas acamada web e a camada de negoacutecio

Esta separaccedilatildeo permite a instalaccedilatildeo da aplicaccedilatildeo num uacutenico servidor ou uma instala-

43

CAPIacuteTULO 4 WEXSYS

ccedilatildeo distribuiacuteda por vaacuterios servidores possibilitando tambeacutem a utilizaccedilatildeo de clusters Estaseparaccedilatildeo torna-se bastante uacutetil se pretendermos expandir a aplicaccedilatildeo para uma utilizaccedilatildeomais intensa ao niacutevel dos acessos A possibilidade de instalaccedilatildeo em muacuteltiplas maacutequinaspermite a obtenccedilatildeo de melhores resultados quando confrontada com a utilizaccedilatildeo de umambiente com apenas um uacutenico servidor

Figura 12 Arquitectura da soluccedilatildeo

411 Moacutedulo pWexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente visual da soluccedilatildeo tambeacutem conhecida porPresentation Layer Este moacutedulo eacute composto pelos componentes descritos na figura 13

Figura 13 Arquitectura do moacutedulo visual

bull pWexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

44

41 ARQUITECTURA GLOBAL

bull wWexsysGUI - componente principal que conteacutem as JSPrsquos servlet e managed

beans

bull jWexsysWebClient - classes utilizadas na camada visual

bull TGGraphLayout - componente externo que disponibiliza um controlo que permitea definiccedilatildeo de um grafo este componente vai ser descrito na secccedilatildeo 4133

bull jWexsysLog - permite o registo da ocorrecircncia de erros

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

412 Moacutedulo WexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente de negoacutecio da aplicaccedilatildeo tambeacutem conhecidapor Business Layer eacute o centro de controlo de toda a soluccedilatildeo Este moacutedulo eacute compostopor alguns componentes como podemos ver na figura 14

Figura 14 Arquitectura do moacutedulo de negoacutecio

bull WexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

bull eWexsys - componente principal responsaacutevel pela criaccedilatildeo dos serviccedilos

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

bull jWexsysUtils - classes utilitaacuterias internas

45

CAPIacuteTULO 4 WEXSYS

bull jWexsysLog - componente auxiliar para permitir o tratamento de erros

bull jWexsysEngine - responsaacutevel pela implementaccedilatildeo do motor de inferecircncia

bull YProlog - permite a interpretaccedilatildeo de coacutedigo prolog Este componente vai serdescrito na secccedilatildeo 4133

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos

Como jaacute foi referido o wexsys foi desenvolvido respeitando a arquitectura J2EE como talos componentes que integram a aplicaccedilatildeo foram tambeacutem criados seguindo esse conceitoTodos os componentes foram estruturados de forma a poderem ser reutilizados com omiacutenimo de dependecircncias e toda a aplicaccedilatildeo foi projectada de forma a retirar o maacuteximopartido desta divisatildeo

Podemos ver na figura 15 um diagrama que permite verificar de que forma os compo-nentes estatildeo a ser utilizados O diagrama tem trecircs agrupamentos que pretendem descreverutilizando uma linguagem Object Oriented (OO) a sua visibilidade Os temos publicprotected e private satildeo utilizados como analogias aos respectivos conceitos na linguagemOO

4131 Camada de acesso puacuteblico

A camada de acesso puacuteblico expotildee os meacutetodos de interacccedilatildeo com a aplicaccedilatildeo sendocomposta por trecircs componentes wWexsysGUI jWexsysWebClient e eWexsysClient

Figura 15 Wexsys - Integraccedilatildeo dos componentes

46

41 ARQUITECTURA GLOBAL

Os componentes eWexsysClient e jWexsysWebClient contecircm interfaces de ligaccedilatildeoentre a camada visual e a camada de negoacutecio

eWexsysClient - disponibiliza as classes designadas Data Transfer Object (DTO) eainda o interface para os serviccedilos disponibilizados pelo wexsys

jWexsysWebClient - disponibiliza classes que caracterizam os conceitos de negoacuteciomas que contecircm atributos adicionais A razatildeo da existecircncia deste componente justificandashsecom a eventual expansatildeo da aplicaccedilatildeo para uma nova camada visual Os exemplos decoacutedigo 1 e 2 permitem-nos observar uma utilizaccedilatildeo de atributos extra na classe visualpara controlo de ocorrecircncia de erros

1 p u b l i c c l a s s RuleView

3 p r i v a t e i n t l e v e l = 0

5 Rule i d e n t i f i e r

7 p r i v a t e S t r i n g i d e n t i f i e r = n u l l

9 p r i v a t e S t r i n g i d e n t i f i e r E r r = n u l l

11 p r i v a t e b o o l e a n i d e n t i f i e r I n E r r = f a l s e

13

Rule d e s c r i p t i o n

15

p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

17

p r i v a t e S t r i n g d e s c r i p t i o n E r r = n u l l

19

p r i v a t e b o o l e a n d e s c r i p t i o n I n E r r = f a l s e

21

Coacutedigo 1 Excerto da classe RuleView

p u b l i c c l a s s Rule implemen t s S e r i a l i z a b l e

47

CAPIacuteTULO 4 WEXSYS

2

p r i v a t e i n t l e v e l = 0

4

Rule i d e n t i f i e r

6

p r i v a t e S t r i n g i d e n t i f i e r = n u l l

8

10 Rule d e s c r i p t i o n

12 p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

14 Coacutedigo 2 Excerto da classe Rule

O outro componente envolvido na camada puacuteblica o wWexsysGUI eacute o responsaacute-vel pela interacccedilatildeo com aplicaccedilatildeo Eacute o componente que disponibiliza as paacuteginas e oresponsaacutevel pela coordenaccedilatildeo de todo o processo web

4132 Camada de acesso protegido

A camada de acesso protegido disponibiliza componentes que podem ser utilizados pelosdois moacutedulos mas que natildeo estatildeo disponiacuteveis para o exterior Neste caso existe apenas umcomponente nestas condiccedilotildees o jWexsysLog cuja funccedilatildeo eacute assegurar o registo de erros

jWexsysLog - componente responsaacutevel pelo registo de erros utiliza internamente aframework log4j

4133 Camada de acesso privado

A camada de acesso privado incluiacute todos os componentes responsaacuteveis por processa-mento interno Os componentes responsaacuteveis pelo processamento interno satildeo eWexsysjWexsysEngine e jWexsysUtils Tambeacutem incluiacutedos no conceito de processamento internoestatildeo os componentes TGGraphLayout e YProlog

eWexsys - eacute o componente responsaacutevel pela implementaccedilatildeo do interface de negoacuteciodelegando as funcionalidades em classes especializadas ou no componente responsaacutevelpela integraccedilatildeo com o nuacutecleo da aplicaccedilatildeo o jWexsysEngine

48

41 ARQUITECTURA GLOBAL

jWexsysEngine - eacute o componente responsaacutevel pelo nuacutecleo da aplicaccedilatildeo ou sejaeacute o responsaacutevel pela integraccedilatildeo do java com o prolog e vice-versa Eacute o componenteresponsaacutevel pelo mapeamento das classes de java para as classes de comunicaccedilatildeo com oprolog

jWexsysUtils - eacute um componente auxiliar que disponibiliza e encapsula utilitaacuteriospara uma melhor organizaccedilatildeo interna da aplicaccedilatildeo

TGGraphLayout - eacute um componente tambeacutem conhecido por TouchGraph eacute umprojecto mantido por uma comunidade e estaacute disponiacutevel no sourceforge AlexanderShapiro (2010)

YProlog - este componente foi o escolhido durante a fase de estudo da implementaccedilatildeopara ser a base do motor de inferecircncia (321)

4134 Fluxo de invocaccedilatildeo

A aplicaccedilatildeo foi desenvolvida de forma a que todos os pedidos seguissem um mesmo fluxode invocaccedilatildeo de forma a uniformizar o processo Na figura 16 temos uma relaccedilatildeo dasclasses principais da aplicaccedilatildeo

Figura 16 Diagrama de classes principais

O fluxo de invocaccedilatildeo inicia-se atraveacutes do WexsysBean no caso de funcionalidades

49

CAPIacuteTULO 4 WEXSYS

do motor de inferecircncia ou atraveacutes do WexsysKBBean no caso de funcionalidades dabase de conhecimento Ambos os managed beans delegam no WexsysViewManager querecorrendo agrave classe WexsysViewHelper converte as classes view para classes DTO Aclasse WexsysViewManager por sua vez delega no session bean WexsysSessionBean quemediante o tipo de pedido delega nas classes de validaccedilatildeo ou nas classes do motor deinferecircncia WexsysEngineImpl

Este processo pode ser observado na figura 17 que representa um diagrama de sequecircn-cia exemplificativo do fluxo de invocaccedilatildeo geneacuterico

Figura 17 Diagrama de sequecircncia do fluxo de invocaccedilatildeo

414 Portal

O wexsys tem como ponto de entrada na aplicaccedilatildeo uma paacutegina inicial que permite aidentificaccedilatildeo do utilizador no sistema pericial Como se trata de um trabalho acadeacutemico aparte de validaccedilatildeo e autenticaccedilatildeo de utilizadores natildeo foi contemplada como tal eacute possiacutevelautenticar-se com qualquer utilizador Para aleacutem da autenticaccedilatildeo eacute ainda possiacutevel indicarpara a sessatildeo actual qual o miacutenimo grau de confianccedila para a apresentaccedilatildeo de uma resposta

50

41 ARQUITECTURA GLOBAL

O endereccedilo da aplicaccedilatildeo respeita o seguinte formato httpservidorportawWexsysGUI onde servidor e porta satildeo os dados de configuraccedilatildeo do Portal Server

Figura 18 Wexsys - Paacutegina inicial

Quando o utilizador inicia a utilizaccedilatildeo do sistema ficam disponiacuteveis trecircs funcionali-dades que seratildeo referidas nas secccedilotildees seguintes

4141 Templates

Um dos aspectos comuns a toda a aplicaccedilatildeo eacute o aspecto graacutefico tendo este sido imple-mentado recorrendo a Facelets Um template facelets define-se pela criaccedilatildeo de umapaacutegina modelo em que existem zonas dinacircmicas Este conceito eacute conhecido de outrastecnologias por exemplo Web Parts ou Master Pages desenvolvidos pela Microsoft

O coacutedigo 3 permite ver como foi desenvolvido o template principal

lthtml

2 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

4 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

6

lt i c e o u t p u t D e c l a r a t i o n

8 doc typeRoo t =HTML

d o c t y p e P u b l i c =minus W3C DTD XHTML 1 0 S t r i c t EN

10 doc typeSys tem = h t t p www w3 org TR xhtml1 DTD xhtml1minus s t r i c t

d t d gt

51

CAPIacuteTULO 4 WEXSYS

12 lthead gt

lt t i t l e gtwexsys minus p a g e T i t l e lt t i t l e gt

14 [ meta t a g s e l i n k t o c s s f i l e s ]

lt head gt

16 ltbody gt

lt f view l o c a l e = f a c e s C o n t e x t e x t e r n a l C o n t e x t r e q u e s t L o c a l e gt

18 lt i c e l o a d B u n d l e basename =com wexsys g u i r e s o u r c e s bund leRes

v a r = bund leRes gt

lt i c e form p a r t i a l S u b m i t = t r u e gt

20 lt d i v i d = wrapper gt

lt d i v i d = logo gt

22 lth1gtlta h r e f = gtWExSys lt a gt lt h1gt

lth2gtweb e x p e r t system lt h2gt

24 lt div gt

lt d i v i d = h e a d e r gt

26 lt d i v i d =menugt

[ Menu c o n t e n t ]

28 lt div gt

lt div gt

30 lt div gt

lt d i v i d = page gt

32 lt d i v i d = c o n t e n t gt

lt u i i n s e r t name= c o n t e n t gt

34 D e f a u l t C o n t e n t

lt u i i n s e r t gt

36 lt div gt

lt d i v i d = s i d e b a r gt

38 lt u i i n s e r t name= s i d e b a r gt

S i d e b a r c o n t e n t

40 lt u i i n s e r t gt

lt div gt

42 lt d i v s t y l e = c l e a r bo th gt

lt div gt

44 lt div gt

lt d i v i d = f o o t e r gt

46 F o o t e r c o n t e n t

lt div gt

48 lt i c e form gt

52

41 ARQUITECTURA GLOBAL

lt f view gt

50 lt body gt

lt html gt Coacutedigo 3 Coacutedigo do template principal do portal

Na listagem de coacutedigo 3 podemos ver a vermelho as aacutereas que foram definidas comodinacircmicas no coacutedigo 4 tambeacutem a vermelho podemos ver as respectivas aacutereas num cenaacuteriode implementaccedilatildeo de uma paacutegina

1 lt u i c o m p o s i t i o n

t e m p l a t e =WEBminusINF incminust e m p l a t e s mainminust e m p l a t e j s p x

3 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

5 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

7

9 lt u i d e f i n e name= c o n t e n t gt

[ ]

11 lt u i d e f i n e gt

13 lt u i d e f i n e name= s i d e b a r gt

[ ]

15 lt u i d e f i n e gt

17 lt u i c o m p o s i t i o n gt Coacutedigo 4 Coacutedigo da paacutegina inicial do portal

415 Suporte multi-liacutengua

O wexsys foi desenvolvido considerando um factor bastante relevante numa aplicaccedilatildeoactual o suporte multi-liacutengua Este suporte eacute uma das vantagens do sistema e foiimplementado recorrendo a ficheiros de recursos (properties) de forma a exteriorizartodos os textos de saiacuteda

Desta forma para dar suporte a uma nova liacutengua apenas teremos que traduzir os textosnos ficheiros de recursos e de alterar a aplicaccedilatildeo de forma a permitir seleccionar o idioma

53

CAPIacuteTULO 4 WEXSYS

A alteraccedilatildeo a ser efectuada na aplicaccedilatildeo eacute muito simples jaacute que basta passar o valor doatributo ldquolocalerdquo da tag ldquofviewrdquo como sendo a liacutengua pretendida

42 Motor de inferecircncia

Para este trabalho foi definida a criaccedilatildeo de um motor de inferecircncia de raiz que pudesseefectivamente substituir o utilizado no sistema base O novo motor desenvolvido teraacute quesuportar uma seacuterie de especificaccedilotildees a comeccedilar pela capacidade de operar num ambientemulti-utilizador

O motor de inferecircncia deve estar preparado para lidar com conhecimento incerto foiescolhido a teacutecnica dos factores de certeza por ser uma teacutecnica simples de reproduzir eeficaz na sua utilizaccedilatildeo

Para aleacutem disto e tratando-se um sistema pericial o motor de inferecircncia deveraacuteser independente da base de conhecimento utilizada e deveraacute idealmente suportar umsistema de explicaccedilotildees que responda a eventuais pedidos por parte dos utilizadores quepretendam ver mais detalhadamente quais as regras que conduziram agrave conclusatildeo obtidaTambeacutem seraacute possiacutevel saber porque eacute que determinada questatildeo eacute colocada (explicaccedilotildeesvulgarmente denominadas de como e porquecirc)

421 Multi-utilizador

Quando se pretende que um sistema pericial tenha uma utilizaccedilatildeo mono-posto (comoera o caso do GISPSA) apenas eacute criada uma instacircncia por cada vez que eacute chamado omotor de inferecircncia No nosso caso tendo sido estabelecido que o novo sistema teriaque permitir uma utilizaccedilatildeo multi-utilizador eacute necessaacuterio desenvolver os mecanismosnecessaacuterios para permitir execuccedilotildees de vaacuterias instacircncias para o novo motor de inferecircncia

A classe WexsysEngineFactory5 eacute a responsaacutevel por criar uma instacircncia do motorde inferecircncia por cada utilizador que inicia a utilizaccedilatildeo do sistema Esta classe tem ummeacutetodo do tipo static o meacutetodo getInferenceEngine que tem como paracircmetros de entradaum utilizador e devolve uma instacircncia do motor de inferecircncia As instacircncias activas satildeoguardadas internamente e sempre que eacute invocado o meacutetodo eacute obtida a respectiva instacircnciaNo caso de ainda natildeo existir uma instacircncia entatildeo eacute criada uma nova e guardada

1

C r e a t e s an i n s t a n c e o f I n f e r e n c e E n g i n e

54

42 MOTOR DE INFEREcircNCIA

3

param usernameKey

5 The usernameKey t o use

7 return I n f e r e n c e E n g i n e i n s t a n c e

throws WexsysArgumen tExcep t ion

9

p u b l i c s t a t i c WexsysEngineImpl g e t I n f e r e n c e E n g i n e ( S t r i n g

usernameKey )

11 throws WexsysArgumentExcept ion

i f ( g e t R u l e U r l ( ) == n u l l | | g e t R u l e U r l ( ) l e n g t h ( ) == 0)

13 throw new WexsysArgumentExcept ion ( mainKnowledgeBaseUrl

r u l e U r l )

15 WexsysEngineImpl i n f e r e n c e E n g i n e = n u l l

17 Have we a l r e a d y c r e a t e d an i n s t a n c e

i f ( g e t I n f e r e n c e E n g i n e s ( ) c o n t a i n s K e y ( usernameKey ) )

19 Obta in t h e i n s t a n c e a s s o c i a t e d t o t h e s p e c i f i e d key

i n f e r e n c e E n g i n e = g e t I n f e r e n c e E n g i n e s ( ) g e t ( usernameKey )

21 e l s e

Cr ea t e a new i n s t a n c e and s t o r e i t i n t h e h o l d e r

23 i n f e r e n c e E n g i n e = new WexsysEngineImpl ( usernameKey

r u l e U r l kb sUr l )

g e t I n f e r e n c e E n g i n e s ( ) p u t ( usernameKey i n f e r e n c e E n g i n e )

25

27 re turn i n f e r e n c e E n g i n e

Coacutedigo 5 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo

422 Base de conhecimento inicial

Ao partir para o desenvolvimento de um sistema pericial eacute necessaacuterio adoptar uma basede conhecimento inicial simples que sirva de suporte ao desenvolvimento do mesmo

55

CAPIacuteTULO 4 WEXSYS

A base de conhecimento inicial foi adoptada a partir do estudo de Merritt (1989) Foiseleccionada devido a duas caracteriacutesticas principais

bull simplicidade - no sentido em que as regras satildeo pequenas e simples de interligar

bull abrangecircncia - existem alguns cenaacuterios possiacuteveis de serem testados com o protoacutetipocomo por exemplo raciociacutenio sobre incerteza e conclusotildees intermeacutedias

A base de conhecimento inicial escolhida tem a seguinte estrutura

bull rule 1 if not turn_over and battery_bad then problem is battery cf 100

bull rule 2 if lights_weak then battery_bad cf 50

bull rule 3 if radio_weak then battery_bad cf 50

bull rule 4 if turn_over and smell_gas then problem is flooded cf 80

bull rule 5 if turn_over and gas_gauge is empty then problem is out_of_gas cf 90

bull rule 6 if turn_over and gas_gauge is low then problem is out_of_gas cf 30

423 Protoacutetipo do motor de inferecircncia

Para o desenvolvimento do protoacutetipo inicial do motor de inferecircncia foi necessaacuterio definiralguns aspectos essenciais tais como

1 Formato da regras

2 Formato das questotildees

3 Interacccedilatildeo assiacutencrona de questotildees e respostas

4 Algoritmos a utilizar

4231 Formato das regras

O formato das regras foi definido tendo em conta alguns pressupostos Entre elessalientam-se a necessidade da utilizaccedilatildeo de graus de confianccedila e a capacidade de guardaruma descriccedilatildeo para cada regra

O formato escolhido para a representaccedilatildeo de uma regra foi o seguinte

56

42 MOTOR DE INFEREcircNCIA

rule(

ltcodigogt rsquoDescriccedilatildeo da regrarsquo

lhs([

ev(ltpremissagt ltvalor da premissagt)

ev(ltpremissa_ngt ltvalor da premissa_ngt)

])

rhs(ev(ltsoluccedilatildeogt ltvalor da soluccedilatildeogt) CF)

)

Na definiccedilatildeo do ltLHSgt eacute possiacutevel definir uma lista de premissas e respectivos valoresno caso da regra conter mais do que uma premissa Um aspecto relevante relacionado coma lista de premissas eacute que esta considera apenas o operador conjunccedilatildeo entre premissas

4232 Formato das questotildees

O formato das questotildees foi tambeacutem definido assumindo alguns princiacutepios tais como apossibilidade de respostas muacuteltiplas e ainda a atribuiccedilatildeo de um texto quer agrave questatildeo a serapresentada quer agraves hipoacuteteses colocadas

O formato escolhido para a representaccedilatildeo de uma questatildeo foi o seguinte

question(

turn_over

rsquoO carro ligarsquo

[

answer(ltvalorgt ltdescriccedilatildeo do valorgt)

answer(ltvalor_ngt ltdescriccedilatildeo do valor_ngt)

]

ltescolha_multipla = 1 0gt

)

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas

Numa qualquer execuccedilatildeo de um software instalado e executado localmente numa maacutequinao funcionamento normal seraacute a execuccedilatildeo de um conjunto de instruccedilotildees ateacute ao ponto emque seja necessaacuteria a interacccedilatildeo com um utilizador Quando isso acontece o programafica suspenso ateacute que o utilizador responda ao que lhe foi solicitado continuando depoiscom a sua execuccedilatildeo a partir do ponto onde parou

57

CAPIacuteTULO 4 WEXSYS

No caso de um programa desenvolvido em prolog e mais especificamente um sistemapericial o conceito atraacutes descrito eacute exactamente o mesmo jaacute que o programa apenassuspende a execuccedilatildeo quando eacute necessaacuterio colocar uma questatildeo que o utilizador teraacute queforccedilosamente responder para dar continuidade ao programa

Se no entanto considerarmos a realidade de uma aplicaccedilatildeo web este princiacutepio jaacutenatildeo seraacute tatildeo linear porque um servidor web recebe um pedido executa-o e devolve umresultado O mesmo seraacute dizer que numa execuccedilatildeo de um componente prolog a partirde um servidor web a pilha de execuccedilatildeo eacute interrompida quando eacute necessaacuterio questionaro utilizador mas natildeo eacute possiacutevel continuar a execuccedilatildeo da mesma a partir do ponto ondeparou Em vez disso seraacute necessaacuterio desfazer a pilha de execuccedilatildeo criada e assim queexistir a resposta do utilizador (eacute feito novo pedido ao servidor) a execuccedilatildeo eacute realizadanovamente desde o iniacutecio mas desta vez considerando a resposta recebida

As razotildees para este comportamento justificam-se pela utilizaccedilatildeo do protocolo HTTPem que eacute necessaacuterio existir um pedido e uma resposta O que obriga a que a colocaccedilatildeoda pergunta e a resposta sejam assiacutencronos podendo existir entre as duas acccedilotildees vaacuteriospedidos (pedidos de explicaccedilotildees por exemplo)

Este ldquoproblemardquo levou agrave necessidade do desenvolvimento de um mecanismo quepermita um funcionamento coerente num programa que utilize (como neste caso) oprolog simulando o comportamento que este teria numa situaccedilatildeo de execuccedilatildeo local

O mecanismo proposto foi a alteraccedilatildeo do predicado responsaacutevel pelo processo re-cursivo especificando um atributo auxiliar de controlo que acompanha a execuccedilatildeo dopredicado Esse atributo auxiliar quando detectada a necessidade de colocaccedilatildeo de umaquestatildeo eacute instanciado e impede a prossecuccedilatildeo do predicado retornando a execuccedilatildeo paraa web com a respectiva questatildeo

Este mecanismo permite uma comunicaccedilatildeo assiacutencrona com a parte web mantendo asvantagens da recursividade do prolog

4234 Estrutura da base de conhecimento

A base de conhecimento apoacutes a definiccedilatildeo do formato de representaccedilatildeo das regras e dasquestotildees eacute a seguinte

q u e s t i o n ( t u r n _ o v e r rsquoO c a r r o l i g a rsquo

2 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

4 q u e s t i o n ( l i g h t s _ w e a k rsquoAs l u z e s e s t a o f r a c a s rsquo

58

42 MOTOR DE INFEREcircNCIA

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

6

q u e s t i o n ( rad io_weak rsquoO r a d i o e s t a f r a c o rsquo

8 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

10 q u e s t i o n ( s m e l l _ g a s rsquo C h e i r a a g a s o l i n a rsquo

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

12

q u e s t i o n ( gas_gauge rsquoO que marca o p o n t e i r o do d e p o s i t o da

g a s o l i n a rsquo

14 [ answer ( empty rsquo Vazio rsquo ) answer ( high rsquo S u f i c i e n t e rsquo ) answer

( low rsquo Rese rva rsquo ) ] 0 )

16 r u l e ( r u l e _ 1 rsquo Rule 1 rsquo

l h s ( [ ev ( t u r n _ o v e r no ) ev ( b a t t e r y _ b a d yes ) ] ) r h s ( ev (

problem b a t t e r y ) 100) )

18

r u l e ( r u l e _ 2 rsquo Rule 2 rsquo

20 l h s ( [ ev ( l i g h t s _ w e a k yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

22 r u l e ( r u l e _ 3 rsquo Rule 3 rsquo

l h s ( [ ev ( rad io_weak yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

24

r u l e ( r u l e _ 4 rsquo Rule 4 rsquo

26 l h s ( [ ev ( s m e l l _ g a s yes ) ev ( t u r n _ o v e r yes ) ] ) r h s ( ev ( problem

f l o o d e d ) 80) )

28 r u l e ( r u l e _ 5 rsquo Rule 5 rsquo

l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge empty ) ] ) r h s ( ev (

problem o u t _ o f _ g a s ) 90) )

30

r u l e ( r u l e _ 6 rsquo Rule 6 rsquo

32 l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge low ) ] ) r h s ( ev ( problem

o u t _ o f _ g a s ) 30) ) Coacutedigo 6 Representaccedilatildeo da base de conhecimento do protoacutetipo

59

CAPIacuteTULO 4 WEXSYS

4235 Algoritmos a utilizar

Um dos paracircmetros mais relevantes para o funcionamento do algoritmo inicial eacute o graumiacutenimo de confianccedila que eacute indicado no iniacutecio da utilizaccedilatildeo do sistema na paacutegina inicialSe o valor indicado para este paracircmetro for demasiado elevado poderaacute inibir algumasregras impedindo o seu disparo no caso de natildeo ser atingido o grau de confianccedila necessaacuterioPor outro lado se o valor introduzido for demasiado baixo permitiraacute que qualquer regradispare independentemente do seu grau de confianccedila traduzindo-se numa maior aacutervorede pesquisa

O motor de inferecircncia eacute executado mediante o recurso a um predicado principal Estepredicado seraacute o responsaacutevel pelo iniacutecio do processo de inferecircncia De seguida seratildeoapresentados alguns dos algoritmos considerados mais relevantes Os algoritmos 1 2 e 3representam atraveacutes da utilizaccedilatildeo de pseudo-coacutedigo alguma da loacutegica implementada nomotor de inferecircncia

Algoritmo 1 Algoritmo principal do motor de inferecircnciabegin tryToProve

while empty ControlObj doobtemRegra (r)disparoPremissaslarr truefor premissa isin LHS do

ControlObjdisparoularr verificaPremissa (p)disparoPremissaslarr disparoPremissas ampamp disparouif not empty ControlObj then

termina o algoritmoend

endif empty ControlObj then

if disparoTodasPremissas thenfireRules

endend

endend

60

42 MOTOR DE INFEREcircNCIA

Algoritmo 2 Verifica se uma premissa eacute verdadeirainput Premissa poutput ControlObj disparoubegin verificaPremissa

disparoularr false ControlObjlarr nullif checkExistFact (p) ou checkExistQuestionFact (p) oucheckExistRuleFact (pControlObj) then

disparoularr true exitend

end

Algoritmo 3 Dispara as regras que possam ser disparadasbegin fireRules

for regra isin basedeconhecimento doif regra not fired then

if regra pode disparar thencalcula grau de confianccediladispara regraif regra dispara soluccedilatildeo final then

termina execuccedilatildeo preenchendo ControlObjendif regra natildeo dispara soluccedilatildeo final then

continuaend

endend

endend

61

CAPIacuteTULO 4 WEXSYS

424 Resultado final

Apoacutes a implementaccedilatildeo do protoacutetipo inicial do motor de inferecircncia e dos testes necessaacuteriosagrave verificaccedilatildeo do bom funcionamento do mesmo chegamos ao resultado final que foiutilizado no wexsys

Este novo motor de inferecircncia foi desenvolvido levando em consideraccedilatildeo todasas caracteriacutesticas consideradas essenciais tanto para a execuccedilatildeo num ambiente multi-utilizador como para a execuccedilatildeo num servidor web e que foram jaacute descritas nas secccedilotildeesanteriores De referir ainda que face ao motor de inferecircncia do sistema base esteapresenta uma seacuterie de melhorias tais como rapidez de funcionamento e abstracccedilatildeo dabase de conhecimento utilizada

4241 Arranque da execuccedilatildeo

Como jaacute referido o motor de inferecircncia segue os algoritmos descritos na secccedilatildeo 4235 enesta secccedilatildeo seraacute abordado o processo utilizado desde o arranque do motor de inferecircnciaateacute agrave apresentaccedilatildeo dos dados como podemos ver na figura 19

Figura 19 Paacutegina inicial do motor de inferecircncia

O utilizador comeccedila na paacutegina inicial e selecciona a opccedilatildeo ldquoMotor de InferecircnciardquoDepois eacute apresentada uma paacutegina que permite iniciar o motor de inferecircncia utilizando a

62

42 MOTOR DE INFEREcircNCIA

opccedilatildeo ldquoiniciarrdquo Isto despoleta o mecanismo de inferecircncia como podemos verificar nafigura 20

Figura 20 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia

A classe YProlog invoca o predicado top_goals que mais natildeo eacute que o ponto de entradano motor de inferecircncia A sua funccedilatildeo seraacute obter qual a ldquoconclusatildeo final a procurarrdquo (estetoacutepico seraacute descrito na secccedilatildeo 432) para se poder iniciar o algoritmo propriamentedito Na listagem de coacutedigo 7 eacute possiacutevel consultar os predicados responsaacuteveis pelaimplementaccedilatildeo dos algoritmos Apenas estatildeo listados os predicados principais

Eacute possiacutevel consultar o coacutedigo do motor de inferecircncia no anexo A

t o p _ g o a l s ( Con t ro lOb j MinCF ) minus

2 t o p _ g o a l ( TopGoal )

t o p ( TopGoal Con t ro lOb j MinCF )

63

CAPIacuteTULO 4 WEXSYS

4

t o p ( TopGoal Con t ro lOb j MinCF ) minus6 r e t r a c t a l l ( h i s t 2 ) s e t ( l en 0 )

g e t R u l e M o r e R e l e v a n t ( TopGoal Rule )

8 t r y T o P r o v e ( Rule Con t ro lOb j MinCF )

10 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) minusr u l e ( Rule _ l h s (LHS) _ )

12 p r o v e L i s t H y p (LHS Con t ro lOb j MinCF )

g e t ( l en LEN) LEN1 i s LEN + 1

14 a s s e r t ( h i s t ( LEN1 Rule ) )

s e t ( l en LEN1)

16 (

check i f r u l e has re turn c o n t r o l o b j e c t

18 ( v a r ( C o n t r o l O b j ) ) minusgt(

no c o n t r o l o b j e c t found check i f o t h e r r u l e s needs t o

be f i r e d

20 f i r e R u l e s ( Con t ro lOb j MinCF )

) (

22 c o n t r o l o b j e c t found

t rue24 )

)

26

p r o v e L i s t H y p ( [ ] Con t ro lOb j MinCF )

28 p r o v e L i s t H y p ( [H | T ] Con t ro lOb j MinCF ) minusproveHyp (H Con t ro lOb j MinCF )

30 (

( v a r ( C o n t r o l O b j ) ) minusgt (

32 p r o v e L i s t H y p ( T Con t ro lOb j MinCF )

) (

34 t rue)

36 )

38

f a c t a l r e a d y known

40 proveHyp (H Con t ro lOb j MinCF ) minus

64

42 MOTOR DE INFEREcircNCIA

H = ev (X Y) f a c t (X Y _ )

42

t h e r e i s a q u e s t i o n t h a t can l e a d t o a f a c t

44 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

n o t ( f a c t (X _ _ ) )

46 q u e s t i o n (X _ _ _ )

n o t ( n o t _ q u e s t i o n (X) )

48 C o n t r o l O b j = ask (X)

50 t h e r e i s a c o n c l u s i o n t h a t can

l e a d t o a q u e s t i o n t h a t can l e a d t o a f a c t

52 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

r u l e ( Rule _ l h s (LHS) r h s ( ev (X _ ) V) )

54 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) Coacutedigo 7 Predicados principais do motor de inferecircncia

4242 Mecanismo de respostas

O mecanismo de respostas eacute algo similar ao processo descrito anteriormente A suafunccedilatildeo seraacute guardar a resposta que foi seleccionada pelo utilizador e prosseguir com oalgoritmo de forma a que uma nova questatildeo seja colocada ou a soluccedilatildeo final alcanccedilada

Um paracircmetro considerado obrigatoacuterio na submissatildeo de uma resposta eacute o grau deconfianccedila Este valor serviraacute para realizar o caacutelculo do grau de confianccedila da regra quandoa mesma puder ser disparada

Podemos ver na figura 21 o processo de resposta a uma questatildeo

65

CAPIacuteTULO 4 WEXSYS

Figura 21 Fluxo de invocaccedilatildeo de resposta a uma questatildeo

Eacute ainda possiacutevel natildeo responder agrave questatildeo colocada utilizando a opccedilatildeo ldquonatildeo sei natildeoresponderrdquo Esta opccedilatildeo iraacute guardar internamente uma indicaccedilatildeo para natildeo voltar a colocara questatildeo ignorada evitando entrar em ciclos

Agrave medida que o processo avanccedila eacute possiacutevel acompanhar o estado actual do motor deinferecircncia Este acompanhamento eacute realizado mediante a anaacutelise da zona situada do ladodireito da paacutegina e que vai sendo actualizada a cada interacccedilatildeo com o motor de inferecircnciaA zona referida permite obter informaccedilotildees acerca de

bull Regras que jaacute foram disparadas

bull Factos que foram inferidos pelo disparo das regras

bull Factos que foram facultados pelo utilizador ao responder agraves questotildees

bull Factos conhecidos antes do iniacutecio do processo de inferecircncia

66

42 MOTOR DE INFEREcircNCIA

Estes factos satildeo obtidos atraveacutes do predicado ldquoinf_sys((L_Rules L_Inf_Facts L_Know_FactsL_Init_Facts)rdquo Este predicado eacute invocado apoacutes cada interacccedilatildeo com o motor de inferecircnciae desta forma os dados estatildeo sempre actualizados

4243 Conclusatildeo final encontrada

Quando o disparo de uma regra leva a que seja adicionado um facto que corresponde auma soluccedilatildeo final o motor de inferecircncia termina a sua execuccedilatildeo devolvendo a conclusatildeofinal a que chegou bem como o respectivo grau de confianccedila Na figura 22 podemos ver afase final do processo de inferecircncia O grau de confianccedila da conclusatildeo final eacute atribuiacutedocom recurso agrave foacutermula seguinte

Dada uma regra X com premissas P1 a Pn e CF =CF (X) entatildeo temos

CF(X P1 Pn) = min [CF(P1) CF(Pn)]timesCF(X)

Figura 22 Conclusatildeo da inferecircncia

4244 Explicaccedilotildees

Eacute possiacutevel em qualquer altura colocar a questatildeo ldquoporquecircrdquo antes de submetermos umaresposta ou a questatildeo ldquocomordquo apoacutes uma conclusatildeo final Este tipo de explicaccedilotildeescontribui para a fase de validaccedilatildeo do sistema pericial colocando-as ao dispor do perito

67

CAPIacuteTULO 4 WEXSYS

responsaacutevel pela validaccedilatildeo expondo desta forma o raciociacutenio seguido no decorrer dainferecircncia Exemplos da solicitaccedilatildeo de explicaccedilotildees podem ser consultados atraveacutes dasfiguras 23 24 e 25

Figura 23 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo

68

42 MOTOR DE INFEREcircNCIA

Figura 24 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia

Figura 25 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final

69

CAPIacuteTULO 4 WEXSYS

As explicaccedilotildees ldquoporquecircrdquo foram implementadas recorrendo a predicados temporaacuterios(hist) que acompanham o desenrolar do motor de inferecircncia Eacute possiacutevel em qualqueraltura consultar esses predicados para obter de uma forma imediata a explicaccedilatildeo doporquecirc da questatildeo estar a ser feita

As explicaccedilotildees ldquocomordquo jaacute seguem um mecanismo mais complexo Quando umaregra eacute disparada origina conclusotildees intermeacutedias ou finais essas conclusotildees natildeo satildeo maisdo que simples factos O motor de inferecircncia sempre que dispara uma regra associa aofacto a regra que o originou por intermeacutedio do predicado inf_exp_how

Desta forma basta algum coacutedigo para que seja possiacutevel a obtenccedilatildeo de ambas asexplicaccedilotildees Esse coacutedigo pode ser consultado na listagem 8 em que os predicados why ehow se referem agraves explicaccedilotildees ldquoporquecircrdquo e ldquocomordquo respectivamente

why ( L ) minus

2 f i n d a l l ( r (OX) h i s t (OX) L )

4 how ( A t t r Value R e s u l t ) minusin f_exp_how ( A t t r Value Ru le s )

6 explainHow ( Rules E x p l a n a t i o n )

append ( Rules E x p l a n a t i o n R e s u l t )

8

explainHow ( [ ] [ ] )

10 explainHow ( [H | T ] R e s u l t ) minusi n n e r E x p l a i n (H E x p l a n a t i o n H )

12 explainHow ( T E x p l a n a t i o n R u l e s )

append ( Explana t ionH E x p l a n a t i o n R u l e s R e s u l t )

14

16 i n n e r E x p l a i n ( Rule E x p l a n a t i o n ) minusr u l e ( Rule _ l h s (LHS) _ )

18 expla inLHS (LHS E x p l a n a t i o n )

20 expla inLHS ( [ ] [ ] )

expla inLHS ( [ ev ( A t t r Value ) | T ] E x p l a n a t i o n A ) minus22 n o t ( inf_exp_how ( A t t r Value _ ) )

f a c t ( A t t r Value _ )

24 expla inLHS ( T E x p l a n a t i o n A )

70

43 BASE DE CONHECIMENTO

26 expla inLHS ( [ ev ( A t t r Value ) | T ] Resu l tA ) minushow ( A t t r Value E x p l a n a t i o n A )

28 expla inLHS ( T E x p l a n a t i o n )

append ( Explana t ionA E x p l a n a t i o n Resu l tA ) Coacutedigo 8 Predicados principais do sistema de explicaccedilotildees

43 Base de conhecimento

A base de conhecimento armazena o conhecimento extraiacutedo de um ou mais peritos e con-siste numa seacuterie de factos e regras acerca de um determinado domiacutenio Sendo dependenteda aacuterea que se pretende abranger com o sistema pericial a base de conhecimento eacute deconstruccedilatildeo especiacutefica para cada situaccedilatildeo em que seja necessaacuterio desenvolver este tipo desistema

Os procedimentos de inserccedilatildeo actualizaccedilatildeo e remoccedilatildeo dos factos e regras que com-potildeem a base de conhecimento (gestatildeo da base de conhecimento) teratildeo que ser na medidado possiacutevel procedimentos simples que sejam facilmente compreendidos pelos utilizado-res

As funcionalidades de gestatildeo da base de conhecimento estatildeo disponiacuteveis na opccedilatildeoldquoBase de Conhecimentordquo da paacutegina inicial como podemos observar na figura 26

71

CAPIacuteTULO 4 WEXSYS

Figura 26 Paacutegina inicial da gestatildeo da base de conhecimento

431 Leitura da base de conhecimento

Ao iniciar a execuccedilatildeo a base de conhecimento eacute carregada para memoacuteria a partir de umficheiro Este processo eacute realizado de forma iterativa e de acordo com uma determinadasequecircncia regras questotildees conclusatildeo final e por uacuteltimo os factos iniciais

Por sua vez o carregamento das regras eacute efectuado em duas fases sendo que primeirosatildeo obtidas as regras existentes (ldquoretrieve_rules(L)rdquo) e depois para cada regra eacute construiacutedaa sua estrutura (ldquobuildRuleObjectrdquo) Podemos observar a descriccedilatildeo deste processo nafigura 27

72

43 BASE DE CONHECIMENTO

Figura 27 Processo de carregamento das regras

Quanto ao carregamento das questotildees eacute similar ao das regras jaacute que eacute efectuadoigualmente em duas fases Primeiro obtecircm-se todas as questotildees (ldquoretrieve_questions(L)rdquo)e depois para cada questatildeo eacute preenchida a sua estrutura (ldquobuildQuestionObjectrdquo)

Jaacute o carregamento da conclusatildeo final eacute realizado atraveacutes do predicado ldquotop_goal(L)rdquoEste predicado vai devolver a conclusatildeo final guardada

Por fim os factos iniciais satildeo obtidos reutilizando um processo de obtenccedilatildeo de factos(ldquoinf_sys((L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)rdquo) Este processo jaacute foireferido na secccedilatildeo que descreve o motor de inferecircncia (4242)

432 Conclusatildeo final a encontrar

A conclusatildeo final a encontrar representa o predicado que vai ser considerado comoobjectivo no decorrer do motor de inferecircncia Soacute vatildeo ser consideradas soluccedilotildees queconvergem para uma soluccedilatildeo final que contenha o predicado especificado no RHS

Para definir uma conclusatildeo final basta especificar o nome do predicado da soluccedilatildeoque pretendemos encontrar com o motor de inferecircncia

73

CAPIacuteTULO 4 WEXSYS

433 Factos iniciais

Os factos iniciais permitem adicionar conhecimento preacutevio a uma base de conhecimentoPara adicionaacute-los eacute necessaacuterio utilizar o botatildeo ldquoAdicionar facto inicialrdquo e preencher oscampos necessaacuterios Para remover um facto inicial previamente inserido eacute utilizado obotatildeo ldquoRemover facto inicialrdquo e eacute necessaacuterio confirmar a acccedilatildeo que se estaacute a efectuar deforma a evitar uma remoccedilatildeo acidental

434 Regras

As regras satildeo o ponto essencial da gestatildeo da base de conhecimento As regras satildeo osdados disponiacuteveis para a aplicaccedilatildeo e como tal quanto melhor forem definidas melhorqualidade a aplicaccedilatildeo teraacute no sentido em que os resultados seratildeo mais correctos e fiaacuteveis

4341 CriarAlterar uma regra

O processo de criaccedilatildeo de uma nova regra foi simplificado Jaacute natildeo eacute necessaacuterio conhecera sintaxe das regras e tambeacutem jaacute natildeo eacute necessaacuterio conhecer os factos a utilizar comopremissas

Para adicionar uma regra apenas temos que arrastar questotildees eou conclusotildees inter-meacutedias de forma a construir a regra que pretendemos inserir

No caso de estarmos a alterar uma regra ou no caso de termos adicionado uma questatildeoou conclusatildeo intermeacutedia incorrectamente podemos eliminar essa premissa simplesmenteseleccionando a ldquocheckboxrdquo respectiva e utilizar a opccedilatildeo ldquoRemover seleccionadosrdquo

74

43 BASE DE CONHECIMENTO

Figura 28 Introduzir uma nova regra

Apoacutes termos arrastado todas as questotildees eou conclusotildees intermeacutedias para a lista depremissas temos que indicar os respectivos valores Este processo estaacute simplificado nosentido em que apenas temos que utilizar a caixa de selecccedilatildeo agrave frente de cada controlo eseleccionar o respectivo valor

Os valores apresentados satildeo obtidos de forma diferente quer se trate de uma questatildeo oude uma conclusatildeo intermeacutedia No caso das questotildees os valores obtidos satildeo os indicadosaquando da sua inserccedilatildeo No caso das conclusotildees intermeacutedias satildeo obtidos todos os valoresutilizados nas regras ateacute ao momento Sempre que uma regra eacute inserida ou actualizadaeacute despoletado um processo que actualiza os valores das conclusotildees intermeacutedias com osnovos valores introduzidos

75

CAPIacuteTULO 4 WEXSYS

Figura 29 Apresentaccedilatildeo de valores configurados na questatildeo

4342 Questotildees

As questotildees acabam por ser o ponto de contacto da aplicaccedilatildeo com o utilizador Sempreque eacute necessaacuterio suspender o processamento para questionar o utilizador este teraacute ahipoacutetese de intervir na execuccedilatildeo Atraveacutes das questotildees colocadas vai ser possiacutevel inferiroutros factos que no final e numa situaccedilatildeo ideal conduzem a uma soluccedilatildeo possiacutevel

Uma questatildeo eacute identificada por um coacutedigo por uma descriccedilatildeo e ainda por um conjuntode valores possiacuteveis as respostas Quando inserimos uma nova regra podemos criar novasquestotildees utilizando a opccedilatildeo ldquoAdicionar uma questatildeordquo Surge entatildeo o formulaacuterio deintroduccedilatildeo de uma questatildeo como podemos ver na figura 30

Figura 30 Formulaacuterio de introduccedilatildeo de uma questatildeo

As respostas configuradas no formulaacuterio de introduccedilatildeo seratildeo as respostas que iratildeoaparecer quando inserirmos uma nova regra e arrastarmos a questatildeo para a lista depremissas

76

43 BASE DE CONHECIMENTO

4343 Verificaccedilatildeo

Apoacutes a introduccedilatildeo ou alteraccedilatildeo das regras deve ser realizado o processo de verificaccedilatildeoda base de conhecimento De uma forma quase imperceptiacutevel na fase de introduccedilatildeode regras estamos a activar este processo jaacute que eacute garantido que as regras introduzidasestatildeo coerentes e que os valores das premissas efectivamente existem Podemos dizerque estamos perante a primeira fase do processo de verificaccedilatildeo designado por verificaccedilatildeoproacute-activa

Para este trabalho foi considerado a verificaccedilatildeo de dois tipos de anomalia na base deregras redundacircncia e regras duplicadas A inclusatildeo de novos mecanismos de verificaccedilatildeoeacute possiacutevel bastando para isso a alteraccedilatildeo do predicado ldquoverification(L)rdquo

A grande diferenccedila entre os dois meacutetodos implementados eacute que uma regra redundanteadiciona conhecimento desnecessaacuterio agrave base de conhecimento enquanto que uma regraduplicada como o nome indica eacute apenas uma duplicaccedilatildeo do conhecimento

Na figura 31 podemos verificar o mecanismo de verificaccedilatildeo implementado que permiteidentificar que regra estaacute em conflito com que outra regra e qual o tipo de conflito

Figura 31 Verificaccedilatildeo da base de conhecimento

435 Gravaccedilatildeo da base de conhecimento

O processo de gravaccedilatildeo da base de conhecimento eacute similar ao processo de leitura com adiferenccedila de natildeo ser iterativo O processo de gravaccedilatildeo da base de conhecimento iniciacom a acccedilatildeo do utilizador na opccedilatildeo ldquoFinalizarrdquo que invoca o meacutetodo ldquosaveAll()rdquo doWexsysKBBean O resto do processo pode ser observado na figura 32

77

CAPIacuteTULO 4 WEXSYS

Figura 32 Processo de gravaccedilatildeo da base de conhecimento

436 Conversatildeo GISPSA

A conversatildeo da base de conhecimento do GISPSA para o formato wexsys foi efectuada emduas fases Na primeira fase foi feita uma migraccedilatildeo sintaacutectica da forma de representaccedilatildeode regras utilizada para a forma utilizada pelo wexsys Na segunda fase foi efectuadoum processo manual de conversatildeo

O sistema anterior delegava nas regras alguns predicados utilizados unicamente parao sistema de explicaccedilotildees Esta caracteriacutestica tornou a migraccedilatildeo algo morosa jaacute que eranecessaacuterio proceder agrave anaacutelise regra a regra de quais os predicados necessaacuterios e quais osdescartaacuteveis

78

44 ANAacuteLISE GRAacuteFICA

44 Anaacutelise graacutefica

Para aleacutem do motor de inferecircncia e da gestatildeo da base de conhecimento foi implemen-tado como prova de conceito um sistema graacutefico que permite observar facilmente arepresentaccedilatildeo de uma base de conhecimento sob a forma de um grafo

Este sistema permite visualizar e consultar a explosatildeo combinatoacuteria das regras edas premissas que as compotildeem Este tipo de ferramenta pode ser bastante uacutetil quandoutilizado nas tarefas de validaccedilatildeo por parte do perito Desta forma o perito consegue deuma forma visual e simples verificar o relacionamento entre as conclusotildees e as premissas

441 Implementaccedilatildeo

Esta funcionalidade foi implementada recorrendo agrave utilizaccedilatildeo de um controlo externodesignado por TGGraphLayout e desenvolvido por Alexander Shapiro (2010) O controlodisponibiliza uma applet que encapsula funcionalidades que permitem a interacccedilatildeo graacuteficacom a representaccedilatildeo de um grafo

Por se tratar de uma applet a comunicaccedilatildeo com os managed beans torna-se tecnica-mente mais difiacutecil de implementar Esse motivo levou agrave necessidade de criaccedilatildeo de umaservlet para simplificar o processo de interacccedilatildeo entre a aplicaccedilatildeo e a applet do controlovisual

A servlet WexsysServlet foi criada para dar suporte agrave comunicaccedilatildeo com o mana-

ged bean WexsysKBBean sendo este responsaacutevel pela obtenccedilatildeo dos dados no formatoreconhecido pelo controlo

O controlo teve que ser alterado de forma a permitir a interacccedilatildeo com a servlet bemcomo efectuar o tratamento dos dados no formato especificado ou seja criar uma espeacuteciede protocolo de comunicaccedilatildeo

O algoritmo 4 resume a implementaccedilatildeo efectuada ao niacutevel da applet e o algoritmo 5demonstra de que forma esses dados satildeo obtidos

442 Funcionamento

O grafo resultante eacute construiacutedo a partir de uma posiccedilatildeo inicial designada por ponto departida Eacute utilizada a designaccedilatildeo ldquordquo para simplificar a identificaccedilatildeo no grafo eeacute possiacutevel ver o resultado da paacutegina inicial na figura 33

As conclusotildees satildeo representadas por rectacircngulos com um fundo branco e as premissassatildeo identificadas por rectacircngulos com fundo azul

79

CAPIacuteTULO 4 WEXSYS

Algoritmo 4 Algoritmo responsaacutevel pelo desenho da appletinput graphPaths graphConclusionsbegin drawGraph

initializeNodes ()for path isin graphPaths do

init oldfor step isin path do

if nodes do not contain step thenbuildNode (step)

endif step is first then

oldlarr stepelse

addEdge (old step)oldlarr step

endend

endcreateStartNode ()linkUnlinkedNodesToStartNode ()

end

O ponto de partida liga-se entatildeo agraves regras que apenas contenham premissas quesejam questotildees construindo o grafo de possibilidades Apoacutes identificar as regras quesatildeo representadas com ligaccedilatildeo ao ponto de partida satildeo tratadas as restantes regrasconstruindo o resto do grafo agrave medida que as regras satildeo avaliadas

Eacute possiacutevel centrar o grafo numa premissa ou numa conclusatildeo Ao centrarmos ografo satildeo mantidos apenas os noacutes que se ligam directamente ao noacute que seleccionaacutemosNo entanto eacute possiacutevel expandir um noacute sem este tipo de comportamento bastando paraisso utilizar as funcionalidades disponiacuteveis ao pressionar a tecla direita do rato sobre o

Figura 33 Paacutegina inicial da anaacutelise graacutefica

80

44 ANAacuteLISE GRAacuteFICA

Algoritmo 5 Algoritmo para construccedilatildeo dos dados do grafooutput graphPaths and grapConclusionsbegin retrieveGraphPathAndConclusions

questionslarr gatherQuestionfor rule isin rules do

isFinalRulelarr conclusaoFinal igual RHS de ruleif isFinalRule then

add rule to grapConclusionssimpleRulelarr truegraphPathslarr nullfor premissa isin ruleLHS do

isConditionAskablelarr questions contains premissaif isConditionAskable then

add premissa and value to graphPathselse

simpleRulelarr falseretrieveGraphFromAtom (premissa)add result to graphPaths

endend

endend

end

respectivo noacute As funcionalidades disponiacuteveis satildeo expandir colapsar esconder e centrare satildeo auto-descritivas pelo que dispensam qualquer explicaccedilatildeo do seu funcionamento

Figura 34 Exemplo de grafo totalmente expandido

Eacute possiacutevel utilizar esta funcionalidade para identificarmos um cenaacuterio especiacuteficopor exemplo para consultar quais as premissas necessaacuterias para a obtenccedilatildeo de umadeterminada soluccedilatildeo

81

CAPIacuteTULO 4 WEXSYS

Figura 35 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto

443 Limitaccedilotildees

Esta funcionalidade no seu estado actual apresenta algumas limitaccedilotildees Conveacutem referirantes de mais que esta soluccedilatildeo natildeo eacute uma alternativa ao motor de inferecircncia mas sim umaferramenta de apoio visual auxiliar ao mesmo

Das limitaccedilotildees existentes salientam-se as seguintes

bull a utilizaccedilatildeo deste controlo obriga a que o utilizador esteja familiarizado com aspremissas e os seus valores Natildeo estatildeo disponiacuteveis os textos de apoio para aspremissas da mesma forma que satildeo mostrados no motor de inferecircncia Umapossiacutevel soluccedilatildeo passaria pela interacccedilatildeo da applet com a servlet para atraveacutes domecanismo de ajax push despoletar a actualizaccedilatildeo da JSP mostrando o texto doelemento seleccionado

bull o tamanho dos noacutes eacute grande quando comparado com o espaccedilo disponiacutevel nocontrolo o que por vezes obriga a algumas sobreposiccedilotildees dos noacutes tornado-oimperceptiacutevel Este problema pode ser observado na figura 34 Para atenuar esteproblema existem controlos que permitem modificar o factor de ampliaccedilatildeo rodar ocontrolo e controlar o grau de visualizaccedilatildeo hiperboacutelica

bull apoacutes a navegaccedilatildeo no grafo perde-se de alguma forma o contexto que o originouEste problema pode ser observado na figura 35

82

5Conclusotildees

Ateacute que ponto eacute que um software consegue efectivamente substituir um ser humanoquando estamos a falar de raciociacutenio Se esse raciociacutenio for estritamente linear seguindoum determinado percurso com alguns desvios ao longo do mesmo que acabam por ditarum desfecho diferente consoante as decisotildees que vatildeo sendo tomadas a substituiccedilatildeo podemesmo ser efectiva e ateacute mesmo melhor em alguns casos

Um perito natildeo eacute no entanto algueacutem que se limita a dizer sim ou natildeo ou algueacutem queapenas decide se eacute necessaacuterio seguir por este caminho ou aquele Um perito normalmenteobserva dados e factos e infere sobre os mesmos tendo a sensibilidade para em muitasocasiotildees conseguir ateacute mesmo obter a soluccedilatildeo final muito antes de terminar a anaacutelise detodos os paracircmetros A isso chama-se conhecimento heuriacutestico natildeo linear afectada poruma enormidade de factores que apenas eacute possiacutevel encontrar num ser humano

Estes factores podem ter tanto de beneacutefico como de nocivo Ao natildeo analisar atotalidade dos dados um perito poderaacute incorrer num erro ou mesmo tendo-os analisadoateacute ao fim poderaacute natildeo ter estado completamente atento ou compenetrado no que estavaa fazer pelo mero facto de poder estar cansado ou indisposto para executar tal tarefanaquele preciso momento

Um sistema pericial pode realmente ser uma mais valia no sentido em que estaacutetotalmente desprovido de emoccedilotildees e fadiga ao contraacuterio de um ser humano Paraaleacutem disto natildeo eacute necessaacuterio temer que o sistema pericial se desloque a uma qualquerlocalizaccedilatildeo remota e de difiacutecil acesso ou que chegue fora do horaacuterio previsto limitadopelos atrasos de uma simples viagem

Todos estes factos podem realmente ser considerados quando analisamos o funciona-mento do GISPSA Efectivamente trata-se de um sistema pericial estaacute sempre disponiacutevele totalmente desprovido de caracteriacutesticas humanas que poderiam eventualmente toldaro raciociacutenio do mesmo No entanto este sistema carecia de algo muito importante a

83

CAPIacuteTULO 5 CONCLUSOtildeES

acessibilidade a partir de qualquer local em qualquer hora e por parte de vaacuterios utilizado-res em simultacircneo de modo imediato e sem preacute-aviso Antes de mais o GISPSA eacute umaaplicaccedilatildeo de execuccedilatildeo local e natildeo foi de todo desenvolvida para funcionamento em redeComo tal o acesso agrave mesma estava agrave partida bastante limitado Depois cada instalaccedilatildeoapenas permitia a interacccedilatildeo com um utilizador de cada vez Existem ainda algumaslimitaccedilotildees identificadas no GISPSA que foram ultrapassadas com o desenvolvimento dowexsys tais como manutenccedilatildeo da base de conhecimento capacidade de raciocinar sobreconhecimento incerto e a implementaccedilatildeo de meacutetodos de verificaccedilatildeo

Hoje em dia eacute possiacutevel aceder a uma rede global (a internet) a partir de qualquer pontodo planeta e isto torna igualmente possiacutevel disponibilizar uma aplicaccedilatildeo de forma a quequalquer pessoa a consiga utilizar a qualquer hora e a partir de qualquer local O wexsysaplica essa transformaccedilatildeo ao GISPSA e leva-o ao proacuteximo patamar evolutivo

Como qualquer evoluccedilatildeo tambeacutem esta pretende natildeo soacute dotar a nova versatildeo comfuncionalidades que a anterior natildeo possuiacutea como tambeacutem pretende melhorar e corrigiros problemas que eventualmente foram encontrados Ao longo do tempo de utilizaccedilatildeodo GISPSA verificaram-se algumas coisas que podiam e deviam ser substituiacutedas Aleacutemdisto a proacutepria evoluccedilatildeo dos sistemas graacuteficos e de interacccedilatildeo colocaram o GISPSAcomo uma aplicaccedilatildeo de visual jaacute algo ultrapassado aspecto que tambeacutem carecia de umarevisatildeo para a realidade mais actual

A opccedilatildeo pela incorporaccedilatildeo do wexsys num portal teve a ver com as grandes capacida-des que este tipo de infra-estuturas tem hoje em dia Impulsionados por empresas comoa IBM os portais web representam janelas de negoacutecio com ligaccedilatildeo ao mundo e com aspotencialidades que daiacute advecircm Caracteriacutesticas como a facilidade de acesso sistemas debackup manutenccedilatildeo de tempos de uptime elevados rapidez de funcionamento facilidadede funcionamento e leitura entre muitas outras representam uma mais valia para estetipo de alojamento de aplicaccedilotildees

51 Contributos da soluccedilatildeo desenvolvida

O grande objectivo a que este trabalho se propunha foi alcanccedilado e consistia na criaccedilatildeode um sistema pericial baseado no GISPSA mas que pudesse ser acedido a partir deuma rede tornando-o global Os restantes objectivos foram igualmente alcanccedilados e oresultado final mostra-se soacutelido e fiaacutevel para candidato efectivo agrave substituiccedilatildeo do sistemaque lhe daacute a base No entanto existem outros pontos positivos na soluccedilatildeo encontradaquando comparada com outros sistemas periciais jaacute referidos nos capiacutetulos anteriores

84

51 CONTRIBUTOS DA SOLUCcedilAtildeO DESENVOLVIDA

Esses sistemas satildeo o LOMA o MDSS e o Whale watcherAo proceder a uma comparaccedilatildeo com estes sistemas a soluccedilatildeo desenvolvida neste

trabalho apresenta algumas vantagens Desde logo estamos a falar de aplicaccedilotildees web

com periacuteodos de desenvolvimento diferentes o que implica a utilizaccedilatildeo de tecnologiasdiferentes A vantagem da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo mais recentes dinacircmi-cas eficazes e visualmente mais apelativas coloca o wexsys num patamar efectivamentesuperior Para aleacutem disso o wexsys pode (como resultado da utilizaccedilatildeo dessas mesmastecnologias) ser facilmente integrado noutras aplicaccedilotildees como webservices ou portaisenquanto que os outros sistemas natildeo

Outra das particularidades dos sistemas estudados eacute que natildeo possuem (de acordocom as respectivas documentaccedilotildees) mecanismos de verificaccedilatildeo de regras e sempre queeacute necessaacuterio proceder a alteraccedilotildees a essas mesmas regras o utilizador teraacute que ter umconhecimento profundo acerca da sintaxe utilizada (gramaacutetica riacutegida) Para aleacutem distotambeacutem natildeo possuem (com excepccedilatildeo do MDSS) suporte a vaacuterias liacutenguas

Jaacute quanto agrave questatildeo da capacidade de funcionamento multi-utilizador apesar deestarmos a falar de aplicaccedilotildees web os sistemas estudados neste documento natildeo estatildeopreparados para cargas de processamento demasiado elevadas porque natildeo foi contempladaa possibilidade de um funcionamento distribuiacutedo o que permitiria aliviar a carga deprocessos e aumentar o nuacutemero maacuteximo de utilizadores

Para descrever mais em detalhe os objectivos alcanccedilados com a soluccedilatildeo propostapassamos a enunciaacute-los

bull Criaccedilatildeo de uma aplicaccedilatildeo web - Ao criar a nova aplicaccedilatildeo a questatildeo da distribuiccedilatildeodessa mesma aplicaccedilatildeo atraveacutes de uma rede era fulcral jaacute que permitiria uma seacuteriede factores que ateacute aqui natildeo estavam disponiacuteveis A possibilidade de utilizaccedilatildeo deuma base de conhecimento global onde todos os utilizadores pudessem contribuirpara o seu melhoramento facilidade de acesso a partir de qualquer localizaccedilatildeodisponibilidade a qualquer hora e dia capacidade de realizaccedilatildeo de backups paragarantir a continuidade dos dados e muacuteltiplos acessos simultacircneos foram questotildeesque ficaram resolvidas com a concretizaccedilatildeo deste objectivo

bull Verificaccedilatildeo das regras - Uma das lacunas do sistema base o GISPSA era a faltade capacidade para realizar a verificaccedilatildeo das regras que era colocadas na basede conhecimento Era possiacutevel chegar a cenaacuterios de inconsistecircncia atraveacutes dacontradiccedilatildeo de regras podendo chegar a cenaacuterios em que simplesmente natildeo erapossiacutevel prosseguir com a inferecircncia das regras nem tatildeo pouco chegar a umaconclusatildeo ou soluccedilatildeo possiacutevel

85

CAPIacuteTULO 5 CONCLUSOtildeES

Ao adicionar um mecanismo de verificaccedilatildeo de regras como o foi neste caso assisti-mos natildeo soacute ao cumprimento de mais um objectivo mas tambeacutem a uma evoluccedilatildeosignificativa do novo sistema pericial que com esta caracteriacutestica se torna maisfiaacutevel e eficaz

bull Manutenccedilatildeo da base de conhecimento - Neste novo sistema eacute mais simples procederagrave actualizaccedilatildeo da base de conhecimento quer para adicionar alterar ou removerfactos na mesma Jaacute natildeo eacute necessaacuterio ter formaccedilatildeo sobre a sintaxe necessaacuteria pararealizar estas operaccedilotildees deixando de lado a rigidez que era necessaacuteria aplicarno sistema base Isto permite alargar o leque de utilizaccedilatildeo do sistema a outrosutilizadores que na versatildeo anterior natildeo teriam oportunidade para o fazer

bull Melhor usabilidade - Uma das grandes transformaccedilotildees para quem conhecia osistema anterior e encontra a nova versatildeo passa pelo aspecto visual Quando umutilizador eacute confrontado com uma aplicaccedilatildeo aquilo com que se depara eacute a parte deinteracccedilatildeo responsaacutevel por mediar o diaacutelogo entre o utilizador e a aplicaccedilatildeo per si

Quando uma aplicaccedilatildeo qualquer que ela seja possui um visual pouco atraente eapelativo para o utilizador com bototildees e janelas pouco interessantes componentesmal colocados atalhos escondidos e de difiacutecil percepccedilatildeo ou ateacute mesmo comcores pouco agradaacuteveis o utilizador acaba por seja de forma gradual ou imediataabandonar a aplicaccedilatildeo e mostra pouco interesse em voltar a utilizaacute-la a natildeo ser queseja efectivamente obrigado a fazecirc-lo

Neste trabalho atraveacutes da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo web tais comoJavascript e Ajax e ainda atraveacutes da utilizaccedilatildeo do Icefaces foi possiacutevel chegar aum visual considerado por muitos utilizadores como interessante e actual o que vaiplenamente de encontro ao objectivo proposto para este ponto

bull Multi-utilizador - Uma das grandes criacuteticas do sistema base tinha efectivamente aver com o facto de natildeo ser possiacutevel colocar mais do que um utilizador a trabalharao mesmo tempo Para tal ser possiacutevel seria necessaacuterio proceder agrave instalaccedilatildeo dosistema noutro computador e consequentemente adquirir outra licenccedila comercialde utilizaccedilatildeo

Ao adicionar a capacidade de vaacuterios utilizadores poderem estar a trabalhar nosistema em simultacircneo este objectivo verifica-se como estando cumprido na to-talidade pois natildeo apenas isso jaacute eacute possiacutevel neste novo sistema pericial como acapacidade de processamento natildeo eacute afectada jaacute que eacute possiacutevel proceder agrave colocaccedilatildeo

86

52 LIMITACcedilOtildeES E TRABALHO FUTURO

da aplicaccedilatildeo num sistema de clustering em caso de deacutefices ou carga excessiva deprocessamento

bull Sistema de explicaccedilotildees - A soluccedilatildeo proposta conteacutem um sistema de explicaccedilotildees quepode ser utilizado para obter explicaccedilotildees a perguntas do tipo ldquocomordquo e ldquoporquecircrdquoEste ponto natildeo representa uma melhoria mas sim a manutenccedilatildeo de uma funcionali-dade que o GISPSA jaacute disponibilizava

bull Anaacutelise graacutefica - Este moacutedulo eacute uma nova abordagem agrave anaacutelise de uma base deconhecimento que natildeo eacute normalmente utilizado nos sistemas periciais conhecidos eque possibilita uma anaacutelise visual facilitadora do comportamento e funcionamentoda nova soluccedilatildeo

bull Suporte a vaacuterias liacutenguas - A soluccedilatildeo proposta permite de uma forma bastantesimples a implementaccedilatildeo de novas linguagens A parte da soluccedilatildeo que envolveo sistema pericial e a parte da aplicaccedilatildeo web estatildeo preparados para esta tipo desuporte contudo a base de conhecimento natildeo contempla este mecanismo e teriaque ser implementado

bull Arquitectura - O tipo de arquitectura da soluccedilatildeo proposta permite uma simplesintegraccedilatildeo com outros tipos de aplicaccedilatildeo web como por exemplo webservices ouportais Possibilita ainda como jaacute referido a separaccedilatildeo da aplicaccedilatildeo de uma formamodular permitindo uma distribuiccedilatildeo ao niacutevel do processamento

bull Migraccedilatildeo - No processo de migraccedilatildeo da base de conhecimento foram detectados ecorrigidos alguns problemas Regras inconsistentes regras repetidas e regras quenatildeo trazem novo conhecimento foram adaptadas e resolvidas evoluindo a novabase de conhecimento para uma entidade mais fiaacutevel e consistente

52 Limitaccedilotildees e trabalho futuro

Este trabalho representa um esforccedilo no sentido de apresentar uma versatildeo melhorada dosistema GISPSA e apesar de o conseguir em muitos aspectos e essencialmente em todosaqueles que foram inicialmente propostos ficam alguns aspectos que ainda poderatildeo serimplementados futuramente e que certamente contribuiratildeo para um sistema ainda melhor

Assim apresentam-se as limitaccedilotildees identificadas e as perspectivas de trabalho futuro

87

CAPIacuteTULO 5 CONCLUSOtildeES

bull Validaccedilatildeo de regras - Apesar de ser jaacute possiacutevel neste novo sistema pericial procederagrave verificaccedilatildeo de regras como mecanismo de prevenccedilatildeo de redundacircncias e contradi-ccedilotildees ainda natildeo eacute possiacutevel a validaccedilatildeo por parte de um perito dessas mesmas regrasa natildeo ser que essa validaccedilatildeo seja feita em modo ad hoc

Seria importante a criaccedilatildeo de um modo lsquosupervisorrsquo ou modo lsquoperitorsquo paraque a aplicaccedilatildeo pudesse adoptar uma postura natildeo soacute de linguagem adaptada aum utilizador com maior formaccedilatildeo na aacuterea (como seraacute o caso de perito) mastambeacutem pudesse assumir uma postura de simulaccedilatildeo em que seriam apresentadosnatildeo soacute os passos tomados como eventuais cenaacuterios em caso de respostas diferentesIsto permitiria a um perito confrontar o seu proacuteprio conhecimento com o sistemapericial realizando desta forma uma validaccedilatildeo do funcionamento do sistema e dabase de conhecimento

Para aleacutem disto sendo uma aplicaccedilatildeo web o modo lsquosupervisorrsquo ou modo lsquope-ritorsquo poderia ser acedido a partir de qualquer siacutetio e a qualquer hora Se o responsaacute-vel pela validaccedilatildeo da base de conhecimento (normalmente o perito que contribuiucom o conhecimento) natildeo estiver disponiacutevel para o fazer por motivos de ausecircnciaou incompatibilidade de horaacuterios poderaacute sempre realizar o acesso agrave aplicaccedilatildeoa partir de um outro local agrave hora que mais lhe aprouver sem qualquer tipo deprejuiacutezo quer para o perito quer para o proacuteprio sistema

bull Muacuteltiplas conclusotildees - Com o trabalho desenvolvido apenas eacute possiacutevel atraveacutesdo disparo de uma regra final chegar a uma uacutenica conclusatildeo Deveria ser possiacutevelchegar a muacuteltiplas conclusotildees pelo que natildeo tendo sido implementado nesta versatildeoconsidera-se como uma possibilidade de trabalho futuro

Aparentemente sem qualquer relaccedilatildeo a necessidade evidenciada no ponto anteriorde criar um modo lsquosupervisorrsquo ou modo lsquoperitorsquo poderaacute levar um futurodesenvolvimento no sentido de criar as muacuteltiplas conclusotildees aqui referidas jaacute queao permitir este modo de funcionamento tambeacutem deveraacute ser possiacutevel inferir sobrevaacuterios cenaacuterios possiacuteveis e respectivas conclusotildees

bull Negaccedilatildeo de premissas - Nesta versatildeo do trabalho apenas eacute possiacutevel criar regrassem negaccedilatildeo Por exemplo num cenaacuterio em que uma pergunta ao utilizador tem aforma

Qual a cor (Vermelho Azul Verde)

e as regras que satildeo candidatas a disparo forem

88

52 LIMITACcedilOtildeES E TRABALHO FUTURO

R1 - SE cor Vermelho R2 - SE cor Azul R3 SE cor Verde

entatildeo natildeo eacute possiacutevel caso seja necessaacuterio ter uma regra do tipo

Rx - SE cor NOT XXXXX

Isso apenas seria possiacutevel se a pergunta inicial fosse

Qual NAtildeO Eacute a cor (Vermelho Azul Verde)

para assim permitir regras do tipo

Rx - SE NAtildeO Eacute cor XXXXX

Assim sendo aponta-se como uma limitaccedilatildeo e eventual trabalho futuro a desenvol-ver para outras versotildees da aplicaccedilatildeo a criaccedilatildeo de um sistema que permita a negaccedilatildeode premissas para que o exemplo atraacutes indicado seja de possiacutevel implementaccedilatildeo

bull Contemplar factos iniciais nas regras - A versatildeo actual do sistema natildeo permite ainclusatildeo de factos inicias nas premissas das regras

bull Pesquisa de muacuteltiplas soluccedilotildees finais - Actualmente soacute eacute permitido executar omotor de inferecircncia com uma soluccedilatildeo final como objectivo Seria uma evidentemais valia a inclusatildeo da capacidade de pesquisa por muacuteltiplas soluccedilotildees

bull Metaconhecimento - ao ser adicionado metaconhecimento podemos aumentar odesempenho do motor de inferecircncia nos cenaacuterios em que temos bases de conheci-mento consideravelmente grandes

bull Regra mais relevante para iniciar o motor de inferecircncia - desenvolver um algoritmopara obter uma regra que tenha uma maior probabilidade de sucesso de forma aminimizar iteraccedilotildees desnecessaacuterias

bull Validaccedilatildeo automaacutetica - quando as questotildees satildeo apagadas deve ser realizada arespectiva verificaccedilatildeo de utilizaccedilatildeo dessas questotildees como condiccedilotildees de regras paraprevenir possiacuteveis inconsistecircncias

bull Suporte a vaacuterias liacutenguas - a base de conhecimento natildeo foi projectada para imple-mentar esta funcionalidade

89

Bibliografia

Acquired Intelligence (2010) Acquire httpwwwaiincca Junho de 201025

Alexander Shapiro (2010) Tggraphlayout httpsourceforgenet

projectstouchgraph Julho de 2010 49 79

Barnett J A (1991) Calculating dempster-shafer plausibility IEEE Transactions on

Pattern Analysis and Machine Intelligence 13 599ndash602 16

Boris van Schooten (2005) Yprolog httpwwwvfutwentenl

~schootenyprolog Junho de 2010 37

Carlos Figueira Filho (2010) JEOPS - Integraccedilatildeo entre Objetos e Regras de Produccedilatildeoem Java httpwwwcinufpebr~jeops Julho de 2010 36

CoAJRA J (1997) The basics of expert (knowledge based) systems 18

Dokas I M (2005) Developing web sites for web based expert systems A webengineering approach In In Proceedings of the Second International ICSC Symposium

on Information Technologies in Environmental Engineering (Magdeburg pages 202ndash217 Shaker Verlag 26

Drakopoulos J (1994) Probabilities possibilities and fuzzy sets Fuzzy Sets and

Systems 75 1ndash15 16

Elie Levy (2010) Zilonis httpwwwzilonisorgindexphp Junho de2010 37

Ernest Friedman-Hill (2010) Jess httpwwwjessrulescom Julho de 201025 36

EXSYS (2010) Exsys corvid httpwwwexsyscom Junho de 2010 24

Filho A R (2010) Mdss medical diagnosis support system LPA - Logic ProgrammingAssociates Ltd 30

Giarratano C J Riley and D G (1998) Expert Systems - Principles and Programming

Thirds Edition Principles and Programing Course Technology 3ed edition 6 18

91

BIBLIOGRAFIA

Hammurapi Group (2010) Hammurapi rules httpwwwhammurapicom

dokuwikidokuphp Junho de 2010 36

Heckerman D (1992) The certainty-factor model 16

IBM (2010) Jlog httpwww-01ibmcomsoftwarewebsphere

productsbusiness-rule-management Junho de 2010 36

Kozlenkov Alex and Paschke (2010) Prova rule language httpprovaws

indexhtml Junho de 2010 37

Logic Programming Associaties Ltd (2010) Lpa webflex httpwwwlpacouk Abril de 2010 24

Lucas P (2001) Certainty-factor-like structures in bayesian belief networks Knowledge-

Based Systems 14 327ndash335 16

Maarten Menken (2010) Jclips httpsourceforgenetprojects

jclips Julho de 2010 25 36

Mcarniel (2010) Jruleengine httpjruleenginesourceforgenet

indexhtml Junho de 2010 37

Merritt D (1989) Building expert systems in Prolog 6 56

Michael Giordano (2010) Webclips httpclipsinterfacesourceforgenetWebCLIPSwchomehtm 28 de Julho de 2003 24

OpenL (2010) Openl tablets httpopenl-tabletssourceforgenetJulho de 2010 37

OpenRules Inc (2010) Open rules engine httpopenrulescomindex

htm Julho de 2010 37

Pinto A (1998) GISPSA - GIS problem solver adviser 1 20

RedHat (2010) Drools httpwwwjbossorgdroolsdrools-experthtml Junho de 2010 36

Shortliffe E H and Buchanan B G (1990) A model of inexact reasoning in medicinepages 259ndash275 16

Wilson N (2000) Algorithms for dempster-shafer theory In Algorithms for Uncertainty

and Defeasible Reasoning pages 421ndash475 Kluwer Academic Publishers 16

92

Anexos

93

ACoacutedigo do motor de inferecircncia

Iniacutecio do motor de inferencia

init_inference- retractall(hist2) consult(rsquokbsyplrsquo)

top_goals(ControlObj MinCF) - top_goal(TopGoal) top(TopGoal ControlObj MinCF)

top(TopGoal ControlObj MinCF) - retractall(hist2) set(len 0)

getRuleMoreRelevant(TopGoal Rule) tryToProove(Rule ControlObj MinCF)

tryToProove(Rule ControlObj MinCF)- rule(Rule _ lhs(LHS) _)

proveListHyp(LHS ControlObj MinCF)get(len LEN)println(LEN)

LEN1 is LEN + 1assert(hist(LEN1Rule))println(LEN1)

set(len LEN1)

(

check if rule has return control object

(var(ControlObj)) -gt(

no control object found check if other rules needs to be fired

fireRules(ControlObj MinCF)

)(

control object found

true

)

)

proveListHyp([] ControlObj MinCF)

proveListHyp([H|T] ControlObj MinCF)-proveHyp(H ControlObj MinCF)

((var(ControlObj)) -gt (proveListHyp(T ControlObj MinCF))(true))

fact already known

proveHyp(H ControlObj MinCF)- H = ev(X Y) fact(X Y_ )

there is a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _)

not(fact(X _ _))question(X _ _ _)

not(not_question(X))ControlObj = ask(X)

95

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

there is a conclusion that can lead to a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _) rule(Rule _ lhs(LHS)

rhs(ev(X_) V))

tryToProove(Rule ControlObj MinCF)

ADD A FACT

av(Attr Value Confidence ControlObj MinCF) - retractall(hist2)set(len 0)

saveFact(Attr Value Confidence 1 CF_FINAL _)

fireRules(ControlObj MinCF)

nav(Attr)-assert(not_question(Attr))

fireRules(ControlObj MinCF)- rule(X _ lhs(LHS) rhs(ev(Y R) Conf))

not(inf_rules_fired(X_)) evaluate(LHS ConfLhs 1)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF)

get(len LEN) LEN1 is LEN + 1 assert(hist(LEN1Rule))

set(len LEN1)

(

(var(ControlObj)) -gt(

(top_goal(Y)) -gt (

ControlObj = answerFound(Y R ConfRet)

)(

true fireRules(ControlObj MinCF)

))(

true

)

)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF) -

calculateConfidence(ConfLhs Conf ConfRet)

ConfRet gt MinCF

saveFact(Y R ConfRet 2 CF_FINAL X)

assert(inf_rules_fired(X ConfRet))

evaluate([] [] 1)- true

evaluate([H|T] [FactConf|LConf] RetCode)-

H = ev(X Ans)fact(X Ans FactConf)

evaluate(T LConf RetCode)

calculateConfidence(ConfLhs RuleCF ResultCF)-min_in_list(ConfLhs MinLHSCF)

ResultCF is MinLHSCF RuleCF 100

min_in_list([Min]Min)

min_in_list([HK|T]M) - H lt= K min_in_list([H|T]M)

min_in_list([HK|T]M) - H gt K min_in_list([K|T]M)

1 - fornecido 2 - inferido

we have a fact saved with the same conclusion already

96

saveFact(Attr Value Confidence Mode CF_Final Rule)-

fact(Attr Value OldConfidence)

combine(OldConfidence Confidence CF_Final)

retract(fact(Attr Value OldConfidence))

retract(inf_sys_fact(Attr Value OldConfidence _))

assert(fact(Attr Value CF_Final))

assert(inf_sys_fact(Attr Value CF_Final Mode))

linkFactToRule(Rule Attr Value Mode)

we donrsquot have any fact saved

saveFact(Attr Value Confidence Mode Confidence Rule)-

assert(fact(Attr Value Confidence))

assert(inf_sys_fact(Attr Value Confidence Mode))

linkFactToRule(Rule Attr Value Mode)

linkFactToRule(___1)

linkFactToRule(RuleAttrValue2)-

inf_exp_how(Attr Value oldRules)

retract(inf_exp_how(Attr Value oldRules))

assert(inf_exp_how(Attr Value [Rule|oldRules]))

linkFactToRule(RuleAttrValue2)-

assert(inf_exp_how(Attr Value [Rule]))

println(rsquosaved line with information on explanation howrsquo) listing

combine(CF1 CF2 CF) - CF1 gt= 0 CF2 gt= 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CF is CF1 + Calc

combine(CF1 CF2 CF) - CF1 lt 0 CF2 lt 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CFAux is CF1 + Calc CF is 0-CFAux

combine(CF1 CF2 CF) - (CF1 lt 0 CF2 lt 0) (CF1 gt 0 CF2 gt 0)

SumCFs is CF1 + CF2 abs_minimum(CF1 CF2 MCF)

Rest is 100 - MCFCF is 100 SumCFs Rest

abs_minimum(ABX) - absolute(A AA) absolute(B BB)minimum(AABBX)

absolute(X X) -X gt= 0

absolute(X Y) -X lt 0Y is 0-X

minimum(XYX) -X lt= Y

minimum(XYY) -Y lt= X

Rule verification

verification(L)-retractall(validation_fired1)

retractall(verification_error4)set(nextid 0)

findall(IDverification_rule_1(ID _ _ _)L)

verification_rule_1(ID RuleInError RuleRelated Result)-

rule(A _ lhs(CA) RA)rule(B _ lhs(CB) RB)

not( B = A)not(validation_fired(B))

checkConditionsSimilar(CA CB FullMatch)

checkResultSimilar(FullMatch RA RB Result)

assert(validation_fired(B))

97

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

get(nextid CURR_ID)ID is CURR_ID + 1

set(nextid ID)

assert(verification_error(ID B A Result))

RuleInError = B RuleRelated = A

checkConditionsSimilar(CA CB FullMatch)-checkConditionsSimilar_1(CACB)

lent(CA X) lent(CB Y) testCheck(X Y FullMatch)

testCheck(X X 1)

testCheck(X Y 0)- not(X = Y)

checkConditionsSimilar_1([] L)

checkConditionsSimilar_1([H|R] L)- member(H L) checkConditionsSimilar_1(R L)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueB) CFB) 2)-

not(ValueA = ValueB)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueA) CFB) 2)

checkResultSimilar(0 rhs(ev(Atom Value) CFA) rhs(ev(Atom Value) CFB) 1)-

CFB lt= CFA

lent([] 0)

lent([_|R] SizeT)- lent(R Size)SizeT is Size + 1

Rule verification

retrieve_rules(L)-

findall(X rule(X _ __) L)

retrieve_questions(L)-

findall(X question(X ___) L)

Information predicates

inf_sys(L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)-

i_sys_rules(L_Rules)i_sys_inf_fact(L_Inf_Facts)

i_sys_know_fact(L_Know_Facts) i_sys_init_fact(L_Init_Facts)

i_sys_rules(L)-

findall(r(Rule Conf) inf_rules_fired(Rule Conf) L) member(C L)

i_sys_rules([])

i_sys_inf_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 2) L) member(C L)

i_sys_inf_fact([])

i_sys_know_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 1) L) member(C L)

i_sys_know_fact([])

98

i_sys_init_fact(L)-

findall(f(Attr Value Conf) condition_init(Attr Value Conf) L) member(C L)

i_sys_init_fact([])

condition_init(Attr Value Conf)-fact(Attr Value Conf)

not(inf_sys_fact(Attr _ _ _))

explanations

why(L)-findall(r(OX) hist(OX) L)

how(Attr Value Result)- inf_exp_how(Attr Value Rules)

explainHow(Rules Explanation)append(Rules Explanation Result)

explainHow([] [])

explainHow([H|T] Result)- innerExplain(H ExplanationH)

explainHow(T ExplanationRules) append(ExplanationH ExplanationRules Result)

innerExplain(Rule Explanation)- rule(Rule _ lhs(LHS) _)

explainLHS(LHS Explanation)

explainLHS([] [])

explainLHS([ev(Attr Value)|T] ExplanationA)-

not(inf_exp_how(Attr Value _))

fact(Attr Value _) print(rsquoinitial factrsquo)

explainLHS(T ExplanationA)

explainLHS([ev(Attr Value)|T] ResultA)-

how(Attr Value ExplanationA)

explainLHS(T Explanation)

append(ExplanationA Explanation ResultA)

append([] L L)

append(L [] L)

append([H|T] M [H|N])-append(L M N)

Map methods

buildValidationReport(Id RErr RRel ErrType)-

verification_error(Id RErr RRel ErrType)

buildQuestionObject(ask(X) X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

buildQuestionObject_by_code(X X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

99

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

buildSolutionObject(answerFound(Y R Found) Y R Found)

buildRuleObject(Rule Descr LHS RHS CF)-

rule(Rule Descr lhs(I_LHS) rhs(I_RHS CF))

lhs_flatten(I_LHS LHS)

rhs_flatten(I_RHS RHS)

flatten(L LO)- iflatten(L LO)

iflatten([] [])

iflatten([H|R] [AD|L])- H = answer(A D) iflatten(R L)

lhs_flatten(L LO)- ilhs_iflatten(L LO)

ilhs_iflatten([] [])

ilhs_iflatten([H|R] [[ADCB]|L])-H = ev(A D)question(A C LL _)

findMember(LLDB)ilhs_iflatten(R L)

ilhs_iflatten([H|R] [[ADAD]|L])-H = ev(A D)not(question(A _ _ _))

ilhs_iflatten(R L)

rhs_flatten(ev(AB) [AB])

findMember([] D D)-

findMember([H|T] D B)-H = answer(D B)

findMember([H|T] D B)-findMember(T D B)

attempt to Get more relevant rule

getRuleMoreRelevant(TopGoal Rule)-

rule(Rule_ _ rhs(ev(P V) X)) top_goal(P)

find the rules that contains a direct solution

findall(X rule(X lhs(LLHS) rhs(ev(TopGoal _)_)) LX)

debugLine(trc1rsquogtrsquo)debugList(LX)

For the main rules apply the algorithm

fillMainRules(LX LOUT)

bubble_sort(LOUT LREALLYOUT)

LREALLYOUT = [ score_table(Rule _ _ _) | _ ]

debugLine(trc1rsquogtrsquo)debugList(LREALLYOUT)

fillMainRules([] [])-

fillMainRules([HIN|RIN] [HOUT|LOUT])- calculateCurrentRule(HIN HOUT)

fillMainRules(RIN LOUT)

calculateCurrentRule(HIN HOUT)-rule(HIN _ lhs(LHS) rhs(_ Confidence))

calculateScoreBasedOnLHS(LHS 0 Score)

OrderIndice is Score Confidence

HOUT = score_table(HIN Score Confidence OrderIndice)

calculateScoreBasedOnLHS([] ScoreResult ScoreResult)-

100

calculateScoreBasedOnLHS([HLHS|RLHS] Score ScoreResult)-

calculateScoreBasedOnLHSCurrent(HLHS Score ScoreAfter)

calculateScoreBasedOnLHS(RLHS ScoreAfter ScoreResult)

calculateScoreBasedOnLHSCurrent(ev(X _) Score ScoreAfter)-

question(X _ _ _) not(fact(X _ _))

ScoreAfter is Score + 1

calculateScoreBasedOnLHSCurrent(ev(X _) Score Score)-

helper methods

bubble_sort(ListSorted)-b_sort(List[]Sorted)

b_sort([]AccAcc)

b_sort([H|T]AccSorted)-bubble(HTNTMax)b_sort(NT[Max|Acc]Sorted)

bubble(X[][]X)

bubble(X[Y|T][Y|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C lt= D bubble(XTNTMax)

bubble(X[Y|T][X|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C gt Dbubble(YTNTMax)

bubble_sort2(ListSorted)-b_sort2(List[]Sorted)

b_sort2([]AccAcc)

b_sort2([H|T]AccSorted)-bubble2(HTNTMax)b_sort2(NT[Max|Acc]Sorted)

bubble2(X[][]X)

bubble2(X[Y|T][Y|NT]Max)- X = r(D _) Y = r(C _) C lt= D bubble(XTNTMax)

bubble2(X[Y|T][X|NT]Max)- X = r(D _) Y = r(C _) C gt Dbubble(YTNTMax)

Allows to get a Bag of all the X that makes Goal evaluate to true

Bag can contain duplicated X

findall(XGoalBag) - post_it(XGoal) gather([]Bag)

Aux

post_it(XGoal) - call(Goal) asserta(data999(X)) fail

post_it(__)

gather(BBag) - data999(X) retract(data999(X)) gather([X|B]Bag)

gather(SS)

member(X[X|_])-

member(X[_|Y]) - member(XY)

101

BBase de conhecimento do protoacutetipo

question(turn_over rsquoO carro ligarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(lights_weak rsquoAs luzes estatildeo fracasrsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(radio_weak rsquoO raacutedio estaacute fracorsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(smell_gas rsquoCheira a gasolinarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(gas_gauge rsquoO que marca o ponteiro do depoacutesito da gasolinarsquo

[ answer(empty rsquoVaziorsquo) answer(high rsquoSuficientersquo) answer(low rsquoReservarsquo)]0)

rule(rule_1 rsquoRule 1rsquolhs([ev(turn_over no) ev(battery_bad yes)])

rhs(ev(problem battery) 100))

rule(rule_2 rsquoRule 2rsquolhs([ev(lights_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_3 rsquoRule 3rsquolhs([ev(radio_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_4 rsquoRule 4rsquolhs([ev(smell_gas yes) ev(turn_over yes)])

rhs(ev(problem flooded) 80))

rule(rule_5 rsquoRule 5rsquolhs([ev(turn_over yes) ev(gas_gauge empty)])

rhs(ev(problem out_of_gas) 90))

rule(rule_6 rsquoRule 6rsquolhs([ev(turn_over yes) ev(gas_gauge low)])

rhs(ev(problem out_of_gas) 30))

rule(rule_7 rsquoRule 7rsquolhs([ev(gas_gauge low)ev(turn_over yes)])

rhs(ev(problem out_of_gas) 30))

103

ANEXO B BASE DE CONHECIMENTO DO PROTOacuteTIPO

rule(rule_8 rsquoRule 8rsquo

lhs([ev(turn_over yes) ev(gas_gauge low) ev(smell_gas no)])

rhs(ev(problem out_of_gas) 30))

top_goal(problem)

104

CBase de conhecimento GISPSA

question(qs_tema_ger rsquoQual o tipo de Problemarsquo

[ answer(c_ger_map rsquoMapas Configuraacuteveisrsquo) answer(c_ger_inq rsquoInqueacuteritos e Listagensrsquo)

answer(c_ger_mov rsquoCGMOVIGrsquo) answer(c_ger_pla rsquoCGDCGERrsquo)

answer(c_ger_acm rsquoCGVACUMCGTACUMrsquo)]0)

question(qs_plareg rsquoA Conta tem regra de construcccedilatildeo associada rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipr rsquoExiste Conta Pai do Tipo R no Planorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaent rsquoConta aberta por entidadesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipa rsquoConta do Tipo Arsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plalim rsquoEntidade encontra-se nos limitesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaexis rsquoEntidade Existentersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plamix rsquoContas Valor entre Contas Movimentorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acumul rsquoQual o problema de acumuladosrsquo

[ answer(c_acm_avm rsquoCGVACUM ltgt CGMOVIGrsquo)

answer(c_acm_si rsquoSaldos Iniciaisrsquo)

answer(c_acm_cna rsquoContas Nao Acumulamrsquo)

answer(c_acm_avat rsquoCGVACUM ltgt CGTACUMrsquo)]0)

question(qs_incmov rsquoInconsistecircncias no CGMOVIGrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

105

ANEXO C BASE DE CONHECIMENTO GISPSA

question(qs_incpla rsquoInconsistecircncias no CGDCGERrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acmsia rsquoSaldos Iniciais Alteradosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movi rsquoQual o problema dos movimentosrsquo

[ answer(c_mov_lan rsquoLanccedilamentos nao balanceadosrsquo)

answer(c_mov_con rsquoProblema de Contasrsquo)

answer(c_mov_cgca rsquoMovimentos CG ltgt CArsquo)]0)

question(qs_movvdif rsquoValores CG gt CArsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlgca rsquoCC Ligados a Analiticarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlg100 rsquoTodas as Ligacoes a 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movm100 rsquoDiferencas Correspondem a CC com Mais de 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcna rsquoLancamento em Contas nao Existentesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movci rsquoLancamento em Contas Invalidasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcdf rsquoContas correctasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_inquer rsquoInqueacuterito ou listagemrsquo

[ answer(c_inq_bal rsquoBalancetersquo) answer(c_inq_dia rsquoExtractoDiariorsquo)]0)

question(qs_inqsal rsquoProblema de saldosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapa rsquoProblema dos mapasrsquo

[ answer(c_map_imp rsquoErro na Impressaorsquo) answer(c_map_cal rsquoErro no Calculorsquo)

answer(c_map_mic rsquoErro na Transferencia P Microrsquo)]0)

question(qs_mapcol0 rsquoA ultima linha calculada tem a coluna 0 configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapfunc

rsquoA ultima linha calculada apresenta colunas com funcoes invalidas ou sintaxe erradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin0 rsquoA Linha 000 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin9 rsquoA Linha 999 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

106

question(qs_map2alg rsquoTodos os Valores da Linha 999 tem 2 Algarismosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_map198 rsquoA Soma dos Valores da Linha 999 Ultrapassa 198rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapsys rsquoO Sistema Permite a Utilizacao de Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapuser rsquoO Utilizador Tem Acesso a Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapflr rsquoO Folder Existersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

rule(r_pla_1 r_pla_1lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plareg c_sim)])

rhs(ev(dominio d_pla_reg) 100)

)

rule(r_pla_2 r_pla_2lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plaent c_sim)])

rhs(ev(dominio d_pla_ent) 100)

)

rule(r_pla_3 r_pla_3lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plamix c_sim)])

rhs(ev(correccao cr_pla_mix) 100)

)

rule(r_pla_11 r_pla_11lhs([ev(dominio d_pla_reg) ev(qs_platipr c_nao)])

rhs(ev(correccao cr_pla_tipr) 100)

)

rule(r_pla_21 r_pla_21lhs([ev(dominio d_pla_ent) ev(qs_platipa c_nao)])

rhs(ev(correccao cr_pla_tipa) 100)

)

rule(r_pla_22 r_pla_22lhs([ev(dominio d_pla_ent) ev(qs_plalim c_nao)])

rhs(ev(correccao cr_pla_lim) 100)

)

rule(r_pla_23 r_pla_23lhs([ev(dominio d_pla_ent) ev(qs_plaexis c_nao)])

rhs(ev(correccao cr_pla_exis) 100)

)

rule(r_acm_1 r_acm_1

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_2 r_acm_2

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_3 r_acm_3

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_4 r_acm_4

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_5 r_acm_5

107

ANEXO C BASE DE CONHECIMENTO GISPSA

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_6 r_acm_6

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_7 r_acm_7

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_si) ev(qs_acmsia c_nao)])

rhs(ev(correccao cr_acm_si) 100)

)

rule(r_mov_1 r_mov_1lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_lan)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_2 r_mov_2lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_cgca)])

rhs(ev(dominio d_mov_cgca) 100)

)

rule(r_mov_21 r_mov_21lhs([ev(dominio d_mov_cgca) ev(qs_movvdif c_sim)])

rhs(ev(subdominio d_mov_cgca_1) 100)

)

rule(r_mov_22 r_mov_22lhs([ev(dominio d_mov_cgca) ev(qs_movm100 c_sim)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_23 r_mov_23lhs([ev(dominio d_mov_cgca)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_3 r_mov_3lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_con)])

rhs(ev(dominio d_mov_con) 100)

)

rule(r_mov_31 r_mov_31lhs([ev(dominio d_mov_con) ev(qs_movcna c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_32 r_mov_32lhs([ev(dominio d_mov_con) ev(qs_movci c_nao)])

rhs(ev(correccao cr_mov_inc_soft) 100)

)

rule(r_mov_33 r_mov_33lhs([ev(dominio d_mov_con) ev(qs_movcdf c_nao)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_34 r_mov_34lhs([ev(dominio d_mov_con)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_211 r_mov_211lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlgca c_nao)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_212 r_mov_212lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlg100 c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_213 r_mov_213lhs([ev(subdominio d_mov_cgca_1)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_inq_1 r_inq_1lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inquer c_inq_bal)])

rhs(ev(correccao cr_inq_bal) 100)

)

rule(r_inq_2 r_inq_2lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inqsal c_sim)])

108

rhs(ev(correccao cr_inq_dia) 100)

)

rule(r_map_1 r_map_1lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_cal)])

rhs(ev(dominio d_map_cal) 100)

)

rule(r_map_2 r_map_2lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_imp)])

rhs(ev(dominio d_map_imp) 100)

)

rule(r_map_3 r_map_3lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_mic)])

rhs(ev(dominio d_map_mic) 100)

)

rule(r_map_11 r_map_11lhs([ev(dominio d_map_cal) ev(qs_mapcol0 c_sim)])

rhs(ev(correccao cr_map_cal_col0) 100)

)

rule(r_map_12 r_map_12lhs([ev(dominio d_map_cal) ev(qs_mapfunc c_sim)])

rhs(ev(correccao cr_map_cal_func) 100)

)

rule(r_map_13 r_map_13lhs([ev(dominio d_map_cal)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_21 r_map_21lhs([ev(dominio d_map_imp) ev(qs_maplin0 c_nao)])

rhs(ev(correccao cr_map_imp_lin0) 100)

)

rule(r_map_22 r_map_22lhs([ev(dominio d_map_imp) ev(qs_maplin9 c_nao)])

rhs(ev(correccao cr_map_imp_lin9) 100)

)

rule(r_map_23 r_map_23lhs([ev(dominio d_map_imp) ev(qs_map2alg c_nao)])

rhs(ev(correccao cr_map_imp_2alg) 100)

)

rule(r_map_24 r_map_24lhs([ev(dominio d_map_imp) ev(qs_map198 c_nao)])

rhs(ev(correccao cr_map_imp_198) 100)

)

rule(r_map_25 r_map_25lhs([ev(dominio d_map_imp)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_31 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapsys c_nao)])

rhs(ev(correccao cr_map_sys) 100)

)

rule(r_map_32 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapuser c_nao)])

rhs(ev(correccao cr_map_user) 100)

)

rule(r_map_33 r_map_33lhs([ev(dominio d_map_mic) ev(qs_mapflr c_nao)])

rhs(ev(correccao cr_map_mic_flr) 100)

)

rule(r_map_34 r_map_34lhs([ev(dominio d_map_mic)])

rhs(ev(correccao cr_map_soft) 100)

)

top_goal(correccao)

109

  • Lista de Figuras
  • Lista de Tabelas
  • Lista de Coacutedigo
  • Lista de Algoritmos
  • Lista de Acroacutenimos
  • Introduccedilatildeo
    • Enquadramento
    • Objectivos
    • Planeamento
    • Estruturaccedilatildeo da dissertaccedilatildeo
      • Estado da arte
        • Sistemas periciais
          • Arquitectura
          • Base de conhecimento
            • Regras
            • Frames
            • Redes semacircnticas
            • Mecanismos de inferecircncia
            • Manutenccedilatildeo de uma base de conhecimento
              • Raciociacutenio sobre incerteza
                • Factores de certeza
                  • Vantagens e desvantagens
                    • GISPSA - GIS Problem Solver Advisor
                      • Arquitectura
                      • Funcionamento
                      • Limitaccedilotildees
                        • Web Expert Systems
                          • Casos de estudo
                            • LOMA - Landfill Operation Management Advisor
                            • MDSS - Medical Diagnosis Support System
                            • Whale watcher
                              • Ferramentas utilizadas
                                • Ambiente de desenvolvimento
                                • Motor de inferecircncia
                                  • Fase I - Recolha de candidatos
                                  • Fase II - Requisitos base
                                  • Fase III - Viabilidade econoacutemica
                                  • Fase IV - Viabilidade teacutecnica
                                  • Fase V - Prova de conceito
                                  • Conclusatildeo e fundamentaccedilatildeo da escolha
                                      • Wexsys
                                        • Arquitectura global
                                          • Moacutedulo pWexsysEAR
                                          • Moacutedulo WexsysEAR
                                          • Interligaccedilatildeo e integraccedilatildeo dos moacutedulos
                                            • Camada de acesso puacuteblico
                                            • Camada de acesso protegido
                                            • Camada de acesso privado
                                            • Fluxo de invocaccedilatildeo
                                              • Portal
                                                • Templates
                                                  • Suporte multi-liacutengua
                                                    • Motor de inferecircncia
                                                      • Multi-utilizador
                                                      • Base de conhecimento inicial
                                                      • Protoacutetipo do motor de inferecircncia
                                                        • Formato das regras
                                                        • Formato das questotildees
                                                        • Interacccedilatildeo assiacutencrona de questotildees e respostas
                                                        • Estrutura da base de conhecimento
                                                        • Algoritmos a utilizar
                                                          • Resultado final
                                                            • Arranque da execuccedilatildeo
                                                            • Mecanismo de respostas
                                                            • Conclusatildeo final encontrada
                                                            • Explicaccedilotildees
                                                                • Base de conhecimento
                                                                  • Leitura da base de conhecimento
                                                                  • Conclusatildeo final a encontrar
                                                                  • Factos iniciais
                                                                  • Regras
                                                                    • CriarAlterar uma regra
                                                                    • Questotildees
                                                                    • Verificaccedilatildeo
                                                                      • Gravaccedilatildeo da base de conhecimento
                                                                      • Conversatildeo GISPSA
                                                                        • Anaacutelise graacutefica
                                                                          • Implementaccedilatildeo
                                                                          • Funcionamento
                                                                          • Limitaccedilotildees
                                                                              • Conclusotildees
                                                                                • Contributos da soluccedilatildeo desenvolvida
                                                                                • Limitaccedilotildees e trabalho futuro
                                                                                  • Bibliografia
                                                                                  • Anexos
                                                                                  • Coacutedigo do motor de inferecircncia
                                                                                  • Base de conhecimento do protoacutetipo
                                                                                  • Base de conhecimento GISPSA
Page 7: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System

2312 MDSS - Medical Diagnosis Support System 30

2313 Whale watcher 31

3 Ferramentas utilizadas 3331 Ambiente de desenvolvimento 33

32 Motor de inferecircncia 35

321 Fase I - Recolha de candidatos 35

322 Fase II - Requisitos base 37

323 Fase III - Viabilidade econoacutemica 38

324 Fase IV - Viabilidade teacutecnica 38

325 Fase V - Prova de conceito 39

326 Conclusatildeo e fundamentaccedilatildeo da escolha 40

4 Wexsys 4341 Arquitectura global 43

411 Moacutedulo pWexsysEAR 44

412 Moacutedulo WexsysEAR 45

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos 46

4131 Camada de acesso puacuteblico 46

4132 Camada de acesso protegido 48

4133 Camada de acesso privado 48

4134 Fluxo de invocaccedilatildeo 49

414 Portal 50

4141 Templates 51

415 Suporte multi-liacutengua 53

42 Motor de inferecircncia 54

421 Multi-utilizador 54

422 Base de conhecimento inicial 55

423 Protoacutetipo do motor de inferecircncia 56

4231 Formato das regras 56

4232 Formato das questotildees 57

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas 57

4234 Estrutura da base de conhecimento 58

4235 Algoritmos a utilizar 60

424 Resultado final 62

4241 Arranque da execuccedilatildeo 62

xii

4242 Mecanismo de respostas 654243 Conclusatildeo final encontrada 674244 Explicaccedilotildees 67

43 Base de conhecimento 71431 Leitura da base de conhecimento 72432 Conclusatildeo final a encontrar 73433 Factos iniciais 74434 Regras 74

4341 CriarAlterar uma regra 744342 Questotildees 764343 Verificaccedilatildeo 77

435 Gravaccedilatildeo da base de conhecimento 77436 Conversatildeo GISPSA 78

44 Anaacutelise graacutefica 79441 Implementaccedilatildeo 79442 Funcionamento 79443 Limitaccedilotildees 82

5 Conclusotildees 8351 Contributos da soluccedilatildeo desenvolvida 8452 Limitaccedilotildees e trabalho futuro 87

Bibliografia 92

Anexos 93

A Coacutedigo do motor de inferecircncia 95

B Base de conhecimento do protoacutetipo 103

C Base de conhecimento GISPSA 105

xiii

Lista de Figuras

1 Arquitectura de um sistema pericial 82 GISPSA menu inicial 213 GISPSA interacccedilatildeo inicial 224 GISPSA exemplo de interacccedilatildeo pergunta-resposta 225 Arquitectura do LOMA 276 Paacutegina inicial do sistema pericial LOMA 287 Sub-moacutedulo extra 288 Sugestatildeo de problemas do sub-moacutedulo extra 299 Sub-moacutedulo especializado 2910 Paacutegina principal do sistema pericial Whale Watcher 3111 Paacutegina final do sistema pericial Whale Watcher 31

12 Arquitectura da soluccedilatildeo 4413 Arquitectura do moacutedulo visual 4414 Arquitectura do moacutedulo de negoacutecio 4515 Wexsys - Integraccedilatildeo dos componentes 4616 Diagrama de classes principais 4917 Diagrama de sequecircncia do fluxo de invocaccedilatildeo 5018 Wexsys - Paacutegina inicial 5119 Paacutegina inicial do motor de inferecircncia 6220 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia 6321 Fluxo de invocaccedilatildeo de resposta a uma questatildeo 6622 Conclusatildeo da inferecircncia 6723 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo 6824 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia 6925 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final 6926 Paacutegina inicial da gestatildeo da base de conhecimento 7227 Processo de carregamento das regras 7328 Introduzir uma nova regra 7529 Apresentaccedilatildeo de valores configurados na questatildeo 7630 Formulaacuterio de introduccedilatildeo de uma questatildeo 7631 Verificaccedilatildeo da base de conhecimento 7732 Processo de gravaccedilatildeo da base de conhecimento 7833 Paacutegina inicial da anaacutelise graacutefica 80

xv

34 Exemplo de grafo totalmente expandido 8135 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto 82

xvi

Lista de Tabelas

1 Listagem de produtos da Fase I 362 Listagem de produtos excluiacutedos na Fase II 383 Listagem de produtos excluiacutedos na Fase III 384 Listagem de produtos excluiacutedos na Fase IV 395 JClips - Vantagens e desvantagens 396 Prova - Vantagens e desvantagens 407 YProlog - Vantagens e desvantagens 40

xvii

Lista de Coacutedigo

1 Excerto da classe RuleView 472 Excerto da classe Rule 473 Coacutedigo do template principal do portal 514 Coacutedigo da paacutegina inicial do portal 535 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo 546 Representaccedilatildeo da base de conhecimento do protoacutetipo 587 Predicados principais do motor de inferecircncia 638 Predicados principais do sistema de explicaccedilotildees 70

xix

Lista de Algoritmos

1 Algoritmo principal do motor de inferecircncia 602 Verifica se uma premissa eacute verdadeira 613 Dispara as regras que possam ser disparadas 614 Algoritmo responsaacutevel pelo desenho da applet 805 Algoritmo para construccedilatildeo dos dados do grafo 81

xxi

Lista de Acroacutenimos

AI Artificial Intelligence ou Inteligecircncia Artificial

BRMS Business Rule Management System

CF Certainty Factors ou Factores de Certeza

CLIPS C Language Integrated Production System

DTO Data Transfer Object

ES Expert System

GIS Gestatildeo Integrada de Seguros

GISPSA GIS Problem Solver Advisor

IDE Integrated Development Environment

JEOPS Java Embedded Object Production System

JSF JavaServer Faces

LHS Left-Handed Side

LOMA Landfill Operation Management Advisor

MDSS Medical Diagnosis Support System

ODBC Open Data Base Connectivity

OO Object Oriented

RHS Right-Handed Side

SP Sistema Pericial

SDK Software Development Kit

xxiii

1Introduccedilatildeo

Este trabalho eacute desenvolvido no acircmbito do Mestrado em Engenharia Informaacutetica ramode Tecnologias do Conhecimento e Decisatildeo e teve a sua origem a partir de um sistemadoravante designado por sistema base desenvolvido por Pinto Este sistema base foidesenvolvido durante a realizaccedilatildeo de um trabalho acadeacutemico (Pinto (1998)) cujo principalobjectivo era a construccedilatildeo de um sistema pericial

Na altura da sua criaccedilatildeo o sistema base apenas estava preparado para uma utilizaccedilatildeodo tipo mono-posto Ficava assim estabelecida a condiccedilatildeo de apenas um utilizador decada vez ter acesso ao sistema base Natildeo era exigiacutevel nem sequer necessaacuterio que outrocenaacuterio fosse equacionado dado tratar-se de um trabalho acadeacutemico O sistema ficoudesta forma limitado

Assim somos remetidos a um dos objectivos iniciais que levaram ao desenvolvimentodo trabalho que agora aqui se apresenta Proceder agrave evoluccedilatildeo do sistema base garantindoque o mesmo possa ser acedido por muacuteltiplos utilizadores de forma simultacircnea e a suadisponibilizaccedilatildeo num ambiente de acesso global mediante a utilizaccedilatildeo de redes sendoque a preferecircncia recai sobre a rede mais global que existe a internet Referindo-nos aeste tipo de disponibilizaccedilatildeo com todas as vantagens que lhe estatildeo afectas o proacuteximopasso loacutegico seria a integraccedilatildeo do novo sistema num portal

Eacute tambeacutem um objectivo inicial proceder agrave alteraccedilatildeo da actual forma de manutenccedilatildeo doconhecimento Pretende-se desenvolver um mecanismo de manutenccedilatildeo de conhecimentoque simplifique a interacccedilatildeo com o utilizador

Por uacuteltimo os objectivos deste trabalho passam igualmente pelo melhoramento dosistema base tentando eliminar alguns erros que foram detectados ao longo do tempo eacrescentando algumas caracteriacutesticas que entretanto surgiram e que foram consideradasnecessaacuterias

1

CAPIacuteTULO 1 INTRODUCcedilAtildeO

11 Enquadramento

O sistema a desenvolver embora tenha como ponto de partida um sistema base criado parautilizaccedilatildeo mono-posto faraacute parte de um portal onde seraacute integrado como uma ferramentade apoio na resoluccedilatildeo de problemas operacionais

Para aleacutem de actualmente fazer muito mais sentido a disponibilizaccedilatildeo do sistemanum ambiente de acesso globalizado e com a possibilidade de vaacuterios utilizadores emsimultacircneo a grande vantagem reside no facto de poder utilizar a mesma base de conhe-cimento que alimenta o sistema pericial independentemente do local onde se realizem osacessos Fica assim garantida a uniformidade a fiabilidade e a estabilidade do sistema

Por uacuteltimo a globalizaccedilatildeo do sistema garante igualmente que sempre que este eacuteutilizado natildeo para consulta ou apoio na resoluccedilatildeo de problemas mas para acrescentarnovos factos e dados agrave base de conhecimento estes estejam imediatamente disponiacuteveispara novas consultas ou para resoluccedilotildees de problemas de forma mais eficaz

12 Objectivos

O objectivo principal deste trabalho passa pela integraccedilatildeo do GIS Problem SolverAdvisor (GISPSA) (sistema base) num portal Aleacutem deste outros objectivos podemser considerados como de eventual ou relevante importacircncia podendo ser caracterizadosda seguinte forma

bull Objectivos globais

ndash Desenvolvimento de um sistema pericial rArr Pretende-se desenvolver umcandidato agrave substituiccedilatildeo do GISPSA

ndash Manutenccedilatildeo da base de conhecimento rArr Gerir a base de conhecimentorelativamente agrave inserccedilatildeo e actualizaccedilatildeo de regras de conhecimento bem comoimplementaccedilatildeo de mecanismos de verificaccedilatildeo das regras

bull Objectivos especiacuteficos

ndash Adaptar o motor de inferecircncia existente ou desenvolver novorArr Desenvolvi-mento de um motor de inferecircncia que se enquadre com os objectivos definidos

ndash Alterar o mecanismo de interacccedilatildeo do utilizador com a base de conheci-mentorArr Facilitar a manipulaccedilatildeo da base de conhecimento de forma a evitarproblemas na alteraccedilatildeo da base de conhecimento

2

13 PLANEAMENTO

ndash Verificar e detectar inconsistecircncias na base de conhecimentorArr Implementarmecanismos de verificaccedilatildeo das regras existentes para minimizar problemas

13 Planeamento

O planeamento deste trabalho foi estruturado em quatro fases A composiccedilatildeo dessas faseseacute a seguinte

1 Requisitos

bull Levantamento de requisitos

bull Estado da arte

bull Ferramentas existentes

2 Protoacutetipo

bull Protoacutetipo do motor de inferecircncia

bull Implementaccedilatildeo do gestor da base de conhecimento

3 Verificaccedilatildeo

bull Implementaccedilatildeo de meacutetodos de verificaccedilatildeo e detecccedilatildeo de inconsistecircncias

4 Elaboraccedilatildeo da dissertaccedilatildeo

bull Redacccedilatildeo final da dissertaccedilatildeo

14 Estruturaccedilatildeo da dissertaccedilatildeo

Nesta secccedilatildeo eacute apresentada a estrutura da dissertaccedilatildeo composta por cinco capiacutetulosNo primeiro capiacutetulo ldquoIntroduccedilatildeordquo eacute apresentado o problema actual quais os objec-

tivos a alcanccedilar e qual o planeamento para a prossecuccedilatildeo desses objectivosNo segundo capiacutetulo ldquoEstado da Arterdquo eacute apresentado a soluccedilatildeo GISPSA e tambeacutem o

estado da arte na aacuterea dos sistemas periciaisNo terceiro capiacutetulo ldquoFerramentas utilizadasrdquo eacute apresentado o estudo efectuado sobre

as ferramentas utilizadas e quais as conclusotildees do mesmoNo quarto capiacutetulo ldquoWexsysrdquo eacute descrita a soluccedilatildeo proposta e implementadaNo quinto e uacuteltimo capiacutetulo ldquoConclusotildeesrdquo satildeo apresentadas as conclusotildees finais bem

como os objectivos alcanccedilados e as actuais limitaccedilotildees

3

2Estado da arte

Num estado da arte pretende-se essencialmente fazer o enquadramento do estaacutegio deevoluccedilatildeo e eventuais casos de estudo relacionados com as tecnologias sistemas oupropostas que satildeo utilizadas ou apresentadas ao longo de um trabalho

Para o nosso caso em concreto vamos focalizar esse enquadramento sobre os sistemaspericiais no seu sentido mais abstracto e ainda sobre o sistema base jaacute indicado oGISPSA Apesar de o sistema base ser por si soacute um sistema pericial e como tal poderser apresentado como um caso de estudo inserido nos sistemas periciais generalizados ofacto de servir como ponto de partida para este trabalho em concreto confere-lhe umaimportacircncia muito superior sendo quase obrigatoacuteria a reserva de uma secccedilatildeo proacutepria parao mesmo

21 Sistemas periciais

Os sistemas periciais pertencem a um dos ramos da Artificial Intelligence ou InteligecircnciaArtificial (AI) e surgiram a partir da necessidade que alguns investigadores sentiram emcriar um software que demonstrasse raciociacutenio e comportamento inteligente durante aresoluccedilatildeo de problemas

Um Sistema Pericial (SP) tambeacutem conhecido como Expert System (ES) caracteriza-se como sendo um programa que permite a consulta e utilizaccedilatildeo de conhecimento extraiacutedode um ou mais peritos em determinada aacuterea Esse conhecimento estaacute normalmenteguardado naquilo que eacute mais habitualmente designado por base de conhecimento e agrave qualo programa tem o devido acesso

Na criaccedilatildeo de um SP o ideal seraacute sempre consultar os melhores peritos dentro daaacuterea pretendida e ainda que estes estejam disponiacuteveis para partilhar e disponibilizar oseu conhecimento Tal seria efectivamente a situaccedilatildeo ideal mas que nem sempre se

5

CAPIacuteTULO 2 ESTADO DA ARTE

aproxima da realidade Aliaacutes o verdadeiro sucesso de um sistema pericial reside naqualidade da sua base de conhecimento

Antes de mais devemos considerar que algueacutem que eacute perito em algo certamente oseraacute por uma seacuterie de factores conjugados Experiecircncia adquirida ao longo de vaacuteriosanos formaccedilatildeo especiacutefica dedicaccedilatildeo e estudo profundo seratildeo alguns desses factoresSempre que um indiviacuteduo se encontra numa posiccedilatildeo de excelecircncia em que eacute consideradoum verdadeiro perito encontra-se tambeacutem numa posiccedilatildeo em que lhe eacute bastante difiacutecilencontrar o tempo necessaacuterio para se submeter a uma extracccedilatildeo do conhecimento quedeteacutem Se a isto juntar-mos o facto do objectivo pelo qual se procede agrave extracccedilatildeo deconhecimento eacute a criaccedilatildeo de um programa que seraacute equiparado ao proacuteprio perito emtermos de conhecimento certamente que haveraacute algum desconforto

Aqui surgem as primeiras duacutevidas Seraacute que o sistema pericial tomaraacute o lugar deum ou mais peritos Apesar desta e de outras preocupaccedilotildees os peritos normalmentecontribuem de forma positiva para o enriquecimento de um sistema pericial tornando-odesta forma num sistema com maior qualidade e do qual eles proacuteprios poderatildeo usufruirjaacute que quando eacute possiacutevel agregar o conhecimento de muacuteltiplas pessoas obteacutem-se umconhecimento global superior ao individual

Para aleacutem disto o sistema pericial tende a proceder a um raciociacutenio mais linear loacutegicoe coerente quando comparado com um ser humano que poderaacute deixar que factores comopor exemplo o cansaccedilo ou os sentimentos o influenciem

Merritt define um sistema pericial como sendo um programa que utiliza conhecimentoe meacutetodos de inferecircncia para resolver problemas que satildeo suficientemente complexos pararequerer um especialista para a sua resoluccedilatildeo

ldquo an intelligent computer program that uses knowledge and inference procedures to

solve problems that are difficult enough to require significant human expertise for their

solutionsrdquo Merritt (1989)

A definiccedilatildeo de Giarratano et al eacute mais relacionada com o tipo de problemas tratadospor um sistema pericial

ldquo computer application wich embody some non-algorithmic expertise for solving certain

types of problemsrdquo Giarratano et al (1998)

Esta definiccedilatildeo enquadra de uma forma global as definiccedilotildees reconhecidas aos siste-mas periciais ldquoum sistema pericial pretende emular um perito na identificaccedilatildeo de umdeterminado problema cuja resoluccedilatildeo envolva conhecimento natildeo algoriacutetmicordquo

Existe uma clara separaccedilatildeo entre conhecimento e raciociacutenio o conhecimento eacute obtidocomo jaacute foi referido recorrendo a um ou mais peritos na aacuterea Os dados obtidos satildeo depois

6

21 SISTEMAS PERICIAIS

codificados atraveacutes de um determinado esquema de representaccedilatildeo No passo seguinteeacute adicionada a capacidade de raciociacutenio ao sistema pericial recorrendo a estrateacutegiasheuriacutesticas na tentativa de fornecer um resultado semelhante ao que um perito forneceriae aqui uma vez mais o papel do perito eacute fundamental para o sucesso do sistema pericial

Para aleacutem de contribuir com o conhecimento o perito deveraacute igualmente contribuircom o raciociacutenio utilizado para o manuseamento desse mesmo conhecimento Isto porquea resoluccedilatildeo de um problema poderaacute em determinadas situaccedilotildees necessitar de pequenosajustes que fogem agrave linearidade de um processamento computacional mas que podemperfeitamente ser simuladas e recriadas na construccedilatildeo do raciociacutenio do programa

Eacute necessaacuterio compreender que um perito para aleacutem de ser algueacutem que eacute consideradoum especialista na sua aacuterea eacute habitualmente algueacutem com pouco ou nenhum tempodisponiacutevel o que dificulta bastante a realizaccedilatildeo da recolha do conhecimento O seutempo eacute dispendioso e tem por norma poucos espaccedilos de manobra devido agraves muitassolicitaccedilotildees que lhe satildeo dirigidas Aqui impera o factor de resistecircncia ora porque o peritonatildeo acredita que o sistema seja tatildeo eficaz como ele ora porque existe o receio de sersubstituiacutedo ou passar a ter menos solicitaccedilotildees Quanto maior a colaboraccedilatildeo do ou dosperitos envolvidos na criaccedilatildeo de um qualquer sistema pericial melhor e mais eficaz seraacuteesse sistema pericial

211 Arquitectura

As duas grandes componentes do sistema pericial e que permitem a separaccedilatildeo referidaentre conhecimento e raciociacutenio satildeo a base de conhecimento (depende do domiacutenio ou daaacuterea abrangida) e o bloco de raciociacutenio (natildeo depende do domiacutenio) Este uacuteltimo eacute aindadividido em trecircs partes distintas o motor de inferecircncia o sistema de explicaccedilotildees e ainterface com o utilizador

Um sistema pericial deve ser estruturado de forma a que possa ser actualizado facil-mente sem que seja necessaacuteria qualquer alteraccedilatildeo ao niacutevel funcional do programa

7

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 1 Arquitectura de um sistema pericial

A figura 1 mostra a composiccedilatildeo de um sistema pericial e que mais detalhadamente eacutea seguinte

bull Interface com o utilizador

um sistema pericial deveraacute permitir a interacccedilatildeo com o utilizador Nos casosmais habituais os utilizadores que usufruem dos benefiacutecios destes sistemas natildeosatildeo peritos da aacuterea e pretendem aconselhamento ou ajuda na resoluccedilatildeo de umproblema Noutros casos o utilizador poderaacute ser um perito da aacuterea que apenaspretende testar o sistema pericial ou confrontar as conclusotildees deste com as suasproacuteprias conclusotildees para perceber se sendo diferentes qual o motivo para queisso aconteccedila Isto poderaacute permitir que um perito aprofunde ou corrija o seuproacuteprio conhecimento ou que por outro lado se procedam a correcccedilotildees agrave base deconhecimento do sistema pericial mediante se trate de erro por parte de um ou deoutro

De qualquer forma a interface com o utilizador deveraacute permitir a interacccedilatildeo entreo sistema pericial e o utilizador (qualquer que este seja) para que o utilizadorresponda agraves questotildees que lhe satildeo colocadas e peccedila explicaccedilotildees para os passos econclusotildees que percorre e descobre ao longo da utilizaccedilatildeo do programa

bull Base de conhecimento

o conhecimento extraiacutedo de um ou mais peritos eacute armazenado e mantido aquiDurante a execuccedilatildeo do programa o sistema pericial acede a esta base para consultaros dados disponiacuteveis Eacute sempre possiacutevel em qualquer altura retirar acrescentarou corrigir factos na base de conhecimento Isto contribui para uma evoluccedilatildeo damesma no sentido de melhorar sempre o funcionamento do proacuteprio sistema pericial

8

21 SISTEMAS PERICIAIS

bull Motor de inferecircncia

este bloco eacute o grande responsaacutevel por interpretar o conhecimento e colocarde uma forma estruturada questotildees ao utilizador O raciociacutenio extraiacutedo do ou dosperitos eacute aqui consultado para que mediante as questotildees que satildeo colocadas aoutilizador e as consultas que satildeo efectuadas agrave base de conhecimento este motor deinferecircncia determine qual a proacutexima questatildeo a colocar qual a proacutexima consulta arealizar ou qual a conclusatildeo a apresentar

bull Sistema de explicaccedilotildees

sempre que o utilizador pretende que lhe seja dada uma explicaccedilatildeo para aquestatildeo que estaacute a ser colocada ou para a conclusatildeo que foi determinada este blocoseraacute o responsaacutevel por dar essa mesma explicaccedilatildeo

Esta divisatildeo permite que os moacutedulos funcionais do programa possam ser isoladoscomo podemos observar na figura 1 de forma a facilitar futuras correcccedilotildees e actualizaccedilotildeesda base de conhecimento contribuindo positivamente para a evoluccedilatildeo da mesma eevitando assim que o sistema pericial fique obsoleto

212 Base de conhecimento

Uma base de conhecimento eacute um conjunto de informaccedilatildeo representada de forma a quepossa ser processada pelo motor de inferecircncia Existem vaacuterias formas de representa-ccedilatildeo de conhecimento no entanto as mais conhecidas satildeo a representaccedilatildeo por regrasrepresentaccedilatildeo por ldquoframesrdquo e ainda as redes semacircnticas

Ao representar conhecimento um dos factores determinantes para o meacutetodo necessaacute-rio a essa representaccedilatildeo eacute o domiacutenio do problema ou aacuterea a modelar A tiacutetulo de exemplose um problema segue um padratildeo ou algum tipo de linearidade na busca da soluccedilatildeonecessaacuteria ou ainda se a soluccedilatildeo puder ser obtida atraveacutes de questotildees cujas respostassatildeo maioritariamente simples (sim natildeo valores numeacutericos etc) a representaccedilatildeo doconhecimento eacute feita utilizando os meacutetodos de regras ou ldquoframesrdquo

Como jaacute foi referido o papel de um perito natildeo estaacute limitado apenas agrave contribuiccedilatildeocom o conhecimento para a base necessaacuteria Este exerce um outro papel igualmenteimportante que tem a ver mais com o aspecto de raciociacutenio Desta forma ao consultar abase de conhecimento satildeo tomadas algumas decisotildees tais como verificaccedilatildeo de eventuaissoluccedilotildees jaacute possiacuteveis em pontos intermeacutedios ou qual a proacutexima questatildeo a colocar Estemeacutetodo de interacccedilatildeo com a base de conhecimento poderaacute eventualmente entrar em

9

CAPIacuteTULO 2 ESTADO DA ARTE

conflito com a independecircncia de domiacutenio que foi referida na arquitectura de um sistemapericial No entanto este aspecto fundamental da criaccedilatildeo de um sistema pericial contribuilargamente para o bom funcionamento do mesmo

Para aleacutem disto a base de conhecimento deveraacute sempre contemplar as funcionalidadesnecessaacuterias que permitam ao utilizador em qualquer altura proceder agrave adiccedilatildeo de novosfactos agrave correcccedilatildeo dos jaacute existentes ou ainda agrave eliminaccedilatildeo dos mesmos Isto permitemanter uma base de conhecimento sempre actualizada fiaacutevel e consistente Estas razotildeescontribuem para a resoluccedilatildeo cada vez mais eficaz dos problemas que satildeo colocadosPara novos problemas que surgem poderatildeo ser necessaacuterias novas soluccedilotildees ou novosmeacutetodos para as encontrar Para problemas jaacute conhecidos poderatildeo ser encontradas novasformas ou novas soluccedilotildees de os resolver eventualmente consideradas mais eficazes ou deimplementaccedilatildeo mais simples

Por tudo isto considera-se que a base de conhecimento apesar de natildeo ser o verdadeiromotor de um sistema pericial poderaacute ser encarada como o verdadeiro combustiacutevelque o move e sem o qual natildeo seria possiacutevel qualquer tipo de evoluccedilatildeo pelo que a natildeocontribuiccedilatildeo para o seu melhoramento estagna o proacuteprio sistema provocando mais cedoou mais tarde o abandono do mesmo por parte dos utilizadores que entretanto podemperder a confianccedila que lhe depositaram

Os meacutetodos de representaccedilatildeo de conhecimento podem ser seleccionados de acordocom as caracteriacutesticas que lhes estatildeo inerentes e que se descrevem de seguida

2121 Regras

Uma das teacutecnicas de representaccedilatildeo de conhecimento mais utilizadas eacute a representaccedilatildeopor regras Estas satildeo utilizadas para representar heuriacutesticas e caracterizam-se por umconjunto de premissas que desencadeiam ou conduzem a uma soluccedilatildeo

As regras tecircm o formato ltidentificaccedilatildeogt Se ltLeft-Handed Side (LHS)gt EntatildeoltRight-Handed Side (RHS)gt

Onde

ltidentificaccedilatildeogt - identificaccedilatildeo da regra

ltLHSgt ndash ldquoLeft-Handed Siderdquo define as premissas que teratildeo que ser satisfeitas deforma a que a regra possa ser disparada

ltRHSgt ndash ldquoRight-Handed Siderdquo define as acccedilotildees ou conclusotildees que seratildeo verificadascom o disparo da regra

As premissas satildeo definidas recorrendo a factos que podem ser previamente conhecidosou inferidos a partir de outras regras A utilizaccedilatildeo de regras promove uma separaccedilatildeo

10

21 SISTEMAS PERICIAIS

entre a parte loacutegica e a funcional isto eacute permite-nos uma abstracccedilatildeo de implementaccedilatildeofocando-se na loacutegica

Vantagens

bull expressividade - as regras satildeo normalmente representadas de uma forma naturalque pode mesmo chegar a ser declarativa Eacute perfeitamente normal uma regra estarescrita num vocabulaacuterio que pode ser lido e compreendido por algueacutem que natildeo sejao programador o perito ou algueacutem com formaccedilatildeo na aacuterea em questatildeo

bull modularidade - as regras satildeo independentes entre si o que possibilita uma maisfaacutecil manutenccedilatildeo da base de conhecimento Isto permite e facilita a remoccedilatildeo deregras a adiccedilatildeo de outras ou a alteraccedilatildeo das jaacute existentes

bull separaccedilatildeo loacutegica - as regras satildeo independentes do motor de inferecircncia e estenatildeo carece de alteraccedilotildees ou actualizaccedilotildees quando as regras satildeo modificadas Ofuncionamento do sistema natildeo eacute alterado quando as regras o satildeo apenas as soluccedilotildeesque o sistema obteacutem eacute que poderatildeo ser diferentes (normalmente para melhor)

bull gramaacutetica riacutegida - as regras obedecem a estruturas que estatildeo perfeitamente defi-nidas agrave partida Isto implica que as mesmas possam ser validadas ou ateacute mesmoconstruiacutedas recorrendo a outros sistemas

bull execuccedilatildeo loacutegica - eacute sempre possiacutevel em qualquer altura do funcionamento dosistema pericial solicitar o desencadeamento ou disparo de uma sucessatildeo deregras A isto chama-se uma explosatildeo combinatoacuteria das regras e permite quesejam contemplados vaacuterios cenaacuterios possiacuteveis utilizando apenas uma execuccedilatildeoEsta execuccedilatildeo loacutegica tem sempre o mesmo resultado desde que se mantenham osparacircmetros iniciais

bull sistema de explicaccedilotildees - ao proceder a disparos de regras eacute possiacutevel dar indicaccedilatildeode qual a loacutegica utilizada para disparar uma determinada regra Isto permite de umaforma didaacutectica e simples justificar a razatildeo dos disparos auxiliando o utilizador nacompreensatildeo da evoluccedilatildeo que o sistema segue para atingir determinada soluccedilatildeo

Desvantagens

bull explicaccedilotildees - se um utilizador natildeo conhecer as regras ou natildeo as aceitar o sistemade explicaccedilotildees natildeo seraacute uma mais valia Poderaacute ateacute eventualmente tornar-se emalgo que confunde mais do que aquilo que auxilia

11

CAPIacuteTULO 2 ESTADO DA ARTE

bull gramaacutetica riacutegida - apesar de o meacutetodo de utilizaccedilatildeo de estruturas poder ser con-siderado importante porque estabelece um padratildeo a ser seguido pode conduzir aproblemas de expressividade quando utilizado em domiacutenios complexos

bull inconsistecircncia - um dos maiores problemas que podem surgir num sistema queutiliza a representaccedilatildeo do conhecimento atraveacutes de regras tem a ver com a possibi-lidade da existecircncia de inconsistecircncias e incoerecircncias nas regras Isto reduz-se ouevita-se atraveacutes da utilizaccedilatildeo exaustiva do sistema numa fase de testes em que satildeoequacionados o maior nuacutemero de casos ou cenaacuterios que possam despoletar todas asregras existentes na base de conhecimento

2122 Frames

Uma frame representa um conceito e eacute composta por slots que que natildeo satildeo mais do que adefiniccedilatildeo de um conjunto ltatributo valorgt Um valor pode ser um elemento uacutenico ouuma lista de valores e em termos de dados pode conter um tipo de dados primitivo ouuma referecircncia a outra frame

Esta representaccedilatildeo tem uma ligaccedilatildeo muito forte com o paradigma da programaccedilatildeoorientada a objectos jaacute que a ideia eacute a mesma representar objectos e conceitos do mundoreal utilizando a descriccedilatildeo a composiccedilatildeo e a heranccedila

Como vantagens temos

bull associaccedilatildeo - as frames definem e representam o conhecimento de uma formaassociativa (associaccedilatildeo normal de conceitos)

Desvantagens

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as frames podem representar um espaccedilo que natildeo estaacuterestringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

12

21 SISTEMAS PERICIAIS

2123 Redes semacircnticas

Uma rede semacircntica eacute um modelo formal em que satildeo descritos conceitos e relaccedilotildeesrecorrendo a um grafo dirigido Os conceitos satildeo representados por noacutes as relaccedilotildees porarcos e existe uma heranccedila de conceitos agrave medida que se procede agrave navegaccedilatildeo pelas vaacuteriasrelaccedilotildees

Como vantagens temos

bull exploraccedilatildeo graacutefica - a representaccedilatildeo de conhecimento atraveacutes de redes semacircnticaspermite a um utilizador explorar um domiacutenio graficamente Isto facilita a interacccedilatildeoe utilizaccedilatildeo do sistema

bull facilidade na adiccedilatildeo de clusters relacionados - utilizando o modo graacutefico de repre-sentaccedilatildeo torna-se mais faacutecil adicionar novos clusters em que existam conceitosrelacionados

bull faacutecil assimilaccedilatildeo - os seres humanos relacionam-se bem com ambientes graacuteficose tecircm uma tendecircncia a natildeo soacute aceitaacute-los melhor como tambeacutem a proceder a umautilizaccedilatildeo mais atractiva simples e de raacutepida aprendizagem com um miacutenimo deformaccedilatildeo

Como desvantagens temos

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as redes semacircnticas podem representar um espaccedilo que natildeoestaacute restringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

bull falta de estrutura e formalidade - natildeo existe uma semacircntica formal para a represen-taccedilatildeo simboacutelica das ligaccedilotildees o que deixa demasiado espaccedilo para a criatividade eeventualmente para o surgimento de problemas associados ao facto de poderemexistir muacuteltiplas formas de representaccedilatildeo

13

CAPIacuteTULO 2 ESTADO DA ARTE

2124 Mecanismos de inferecircncia

A base de conhecimento representa o caminho para encontrar uma determinada soluccedilatildeomas o motor de inferecircncia eacute a entidade que efectivamente percorre esse caminho Ummotor de inferecircncia pode utilizar diferentes estrateacutegias de raciociacutenio para a obtenccedilatildeode respostas As mais conhecidas satildeo a estrateacutegia de encadeamento directo e a deencadeamento inverso Contudo eacute possiacutevel combinar as duas no mesmo sistema naquiloque eacute vulgarmente conhecido como uma estrateacutegia de encadeamento misto

Encadeamento directo (Forward Chaining) ndash Um ser humano no seu dia a dia utilizaesta estrateacutegia para processamento de raciociacutenio Consoante assistimos a acontecimentoso ceacuterebro processa-os e analisa-os decidindo o que fazer de seguida De igual modo aestrateacutegia de raciociacutenio por encadeamento directo comeccedila por percorrer os factos baacutesicosque vatildeo originar o disparo de regras o que levaraacute agrave obtenccedilatildeo de conclusotildees intermeacutediasque por sua vez iratildeo originar o disparo de mais regras e assim sucessivamente Oprocesso continua ateacute que se obtenham conclusotildees finais se tal for possiacutevel ou natildeo hajamais lugar agrave possibilidade de disparo de novas regras

Devido agraves suas caracteriacutesticas esta estrateacutegia eacute mais apropriada para planeamentomonitorizaccedilatildeo controlo e interpretaccedilatildeo

Encadeamento inverso (Backward Chaining) ndash No encadeamento inverso o motorde inferecircncia tenta provar as conclusotildees finais que aparecem no lado direito das regras(RHS) Essas conclusotildees finais tambeacutem satildeo designadas como objectivos e eacute normaldizer-se que o motor de inferecircncia com encadeamento inverso eacute orientado aos objectivos(goal driven)

Para provarmos uma dada conclusatildeo teremos que provar as condiccedilotildees que aparecemno lado esquerdo da regra (LHS) que poderatildeo ser suportadas por conclusotildees intermeacutediasde outras regras ou por factos baacutesicos Sendo assim o mecanismo de encadeamentoinverso assume um caraacutecter essencialmente recursivo (para provar uma conclusatildeo vamoster que provar as condiccedilotildees)

Este tipo de estrateacutegia eacute mais apropriada para diagnoacutesticos jaacute que temos uma hipoacuteteseque necessita de ser provada de forma a chegar a uma conclusatildeo

Eacute importante salientar que a forma de representaccedilatildeo das regras eacute independente daestrateacutegia utilizada pelo motor de inferecircncia No entanto eacute possiacutevel melhorar a eficaacuteciado sistema se adaptarmos essa representaccedilatildeo consoante o encadeamento utilizado

14

21 SISTEMAS PERICIAIS

2125 Manutenccedilatildeo de uma base de conhecimento

A manutenccedilatildeo de uma base de conhecimento embora seja considerada vital para asobrevivecircncia do sistema pericial eacute um processo bastante complexo no sentido emque implica cuidados que nem sempre satildeo tidos ou considerados Eacute habitual existiremproblemas de validaccedilatildeo verificaccedilatildeo redundacircncia e contradiccedilotildees

De forma a garantir que a base de conhecimento se mantenha fiaacutevel e bem definidadevem ser desenvolvidos mecanismos que evitem a ocorrecircncia deste tipo de problemas

Redundacircncia - Considera-se aplicaccedilatildeo de redundacircncia a uma base de conhecimentoquando ao inserir uma regra estamos a adicionar conhecimento que jaacute estava contido nabase de conhecimento Podemos observar o seguinte exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X tem_barbatanas entatildeo X nada

regra3 se X nada E X tem_barbatanas entatildeo X eacute_peixe

Neste exemplo eacute possiacutevel verificar que esta base de conhecimento manteacutem-se idecircntica(o conhecimento eacute o mesmo) se removermos a regra3 considerada redundante Esta regranatildeo trouxe nenhum conhecimento novo ao sistema e pode ser descartada

Contradiccedilatildeo - Considera-se regra contraditoacuteria toda a regra que contradiz conheci-mento jaacute existente na base de conhecimento Por exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X nada entatildeo X natildeo_eacute_peixe

A regra2 contradiz claramente a regra1 pelo que eacute considerada contraditoacuteria Um dosgrandes problemas na anaacutelise de duas ou mais regras contraditoacuterias passa por determinarquais as que correspondem ao conhecimento correcto

Verificaccedilatildeo - acccedilatildeo desencadeada ainda na fase de implementaccedilatildeo inicial da base deconhecimento onde se pretende minimizar problemas essencialmente de redundacircncia e decontradiccedilatildeo que possam ser provocados pelo programador Toda a base de conhecimentoeacute verificada e confrontada com as notas apontamentos e indicaccedilotildees a que o programadorteve acesso e que serviram de alicerce para a construccedilatildeo da mesma

Validaccedilatildeo - a acccedilatildeo preventiva de erros iniciais levada a cabo logo apoacutes a implementa-ccedilatildeo da base de conhecimento precede a acccedilatildeo seguinte que consiste em validar a referidabase atraveacutes da intervenccedilatildeo de um perito o qual utiliza vaacuterios cenaacuterios de testes ondetenta obter as respostas ao mesmo tempo que vai consultando as explicaccedilotildees disponiacuteveisao longo do percurso

Apesar de ser habitual proceder a esta validaccedilatildeo com o perito que contribuiu como conhecimento eacute igualmente habitual e ateacute beneacutefico utilizar outros peritos da mesma

15

CAPIacuteTULO 2 ESTADO DA ARTE

aacuterea que para aleacutem de validarem a base de conhecimento em causa poderatildeo inclusiveconfrontar o seu proacuteprio conhecimento com o do perito original procedendo a correcccedilotildeesa eles proacuteprios ou agrave base per si Quanto maior a taxa de intervenccedilatildeo construtiva por partede peritos numa base de conhecimento melhor seraacute a qualidade associada agrave mesma

213 Raciociacutenio sobre incerteza

Raciociacutenio sobre incerteza eacute o nome dado ao processo de formulaccedilatildeo de conhecimentobaseado em fontes de informaccedilatildeo que detenham algum tipo de incerteza na sua especifi-caccedilatildeo

O conhecimento que detemos natildeo se limita a observaccedilotildees loacutegicas do tipo ldquose Obser-vaccedilatildeo_A entatildeo conclusatildeo_Brdquo Em vaacuterias situaccedilotildees necessitamos de lidar com informaccedilatildeoincompleta incorrecta ou ateacute mesmo ausente

Quando lidamos com conhecimento de peritos num determinado domiacutenio surge aindaoutro tipo de conhecimento este originado atraveacutes da observaccedilatildeo e experiecircncia

Existe entatildeo a necessidade de representaccedilatildeo de conhecimento e respectivo grau decerteza Para este efeito existem algumas teacutecnicas tais como loacutegica Fuzzy teorias deprobabilidades tais como Bayes ou Dempster-Shafer factores de certeza entre outros

Os seguintes autores podem ser consultados para referecircncia das teacutecnicas acima men-cionadas

bull Loacutegica Fuzzy - Drakopoulos (1994)

bull Bayes - Lucas (2001)

bull Dempster-Shafer - Wilson (2000) e Barnett (1991)

De seguida vai ser descrita a teacutecnica dos factores de certeza que foi a teacutecnica adoptadapara o desenvolvimento da soluccedilatildeo

2131 Factores de certeza

A teacutecnica dos Certainty Factors ou Factores de Certeza (CF) eacute um do meacutetodos detratamento de incertezas num sistema pericial A teacutecnica foi desenvolvida por Shortliffeand Buchanan para o projecto MYCIN um sistema pericial de diagnoacutestico e tratamentode meningite e tratamento do sangue Desde entatildeo que esta teacutecnica eacute o padratildeo seguido nodesenvolvimento de sistemas periciais baseados em regras Heckerman (1992)

16

21 SISTEMAS PERICIAIS

De um ponto de vista funcional caracteriza-se pela atribuiccedilatildeo de um nuacutemero o graude certeza a factos e regras Esse grau de certeza eacute uma medida relativa probabiliacutesticaque pode ser positiva ou negativa sendo normalmente usados valores no intervalo de -1 a1

A sua definiccedilatildeo original baseou-se na seguinte foacutermula FC [HE] = MC [HE]minusMD [HE]

O factor de certeza da hipoacutetese H dado uma evidecircncia E eacute dado pela diferenccedila entre

bull a medida de certeza de H dado Erarr MC [HE]

bull a medida de descrenccedila de H dado Erarr MD [HE]

O CF final de uma regra com uma premissa baseada num facto ou noutra regra eacute dadopela foacutermula 21

Quando as premissas estatildeo associadas atraveacutes do operador conjunccedilatildeo eacute aplicada afoacutermula 22

Quando existe mais do que uma regra a suportar uma determinada conclusatildeo o CFfinal eacute o resultado da foacutermula 23

CFf inal =CFpremissatimesCFregra 21

CFf inal = min[CFpremissa1 CFpremissan

]timesCFregra

22

X Y gt 0CF (X Y ) = X +Y (100˘X)100 23a

X ou Y lt 0CF (X Y ) = X +Y(1˘min(X Y)) 23b

X Y lt 0CF (X Y ) =minusCF (minusX minusY ) 23c

214 Vantagens e desvantagens

Apesar de tudo o que foi descrito um sistema pericial natildeo representa de forma alguma aferramenta mais apropriada para resolver todos os problemas com recurso a conhecimentoque de outra forma estaria reservado apenas a peritos das vaacuterias aacutereas Ao utilizarmosum sistema pericial estamos sujeitos a aspectos positivos e negativos cabendo a noacutes opapel de determinar se quando confrontados com um determinado problema a utilizaccedilatildeodeste tipo de ferramenta eacute a mais apropriada

17

CAPIacuteTULO 2 ESTADO DA ARTE

Para observar quais as principais vantagens de um sistema pericial podemos consultaras opiniotildees partilhadas por Giarratano et al (1998) CoAJRA (1997)

bull Elevada disponibilidaderArr um sistema pericial estaacute sempre disponiacutevel em termosde tempo e local pronto a funcionar sob qualquer condiccedilatildeo enquanto que umperito natildeo dispotildee dessa total disponibilidade

bull Baixo risco de utilizaccedilatildeorArr pode ser utilizado em ambientes considerados perigo-sos e hostis para um ser humano

bull Baixo custo rArr o custo de providenciar conhecimento por utilizador eacute bastantereduzido

bull DurabilidaderArr o conhecimento eacute permanente ao contraacuterio de um especialista queestaacute sujeito a ausecircncias

bull Conhecimento de vaacuterios especialistasrArr quando agregado o conhecimento reco-lhido a partir de vaacuterios especialistas poderaacute conduzir a resultados mais adequadose considerados melhores quando confrontados com o conhecimento individual e osresultados que daiacute advecircm

bull Capacidade de explicaccedilatildeorArr um sistema pericial consegue explicar detalhadamenteos passos que levaram agrave resposta dada enquanto que um ser humano pode natildeo tera disponibilidade nem a vontade de explicar todo o processo de raciociacutenio seguido

bull EmotividaderArr um sistema pericial natildeo estaacute sujeito a emoccedilotildees o seu funciona-mento e as respostas que providencia natildeo satildeo influenciadas pelo meio em que estaacuteinserido como por exemplo situaccedilotildees de stress ou situaccedilotildees de perigo iminente (aqueda de um aviatildeo ou uma central nuclear em risco)

bull Natildeo influenciaacutevelrArr acontecimentos mais actuais tecircm o mesmo peso na tomada dedecisatildeo evitando assim o fenoacutemeno de ldquoviciaccedilatildeordquo da base de conhecimento

No entanto um sistema pericial comporta tambeacutem algumas desvantagens das quaisse salientam

bull Emotividade rArr o facto de natildeo ser emotivo tambeacutem pode ser visto como umadesvantagem jaacute que natildeo recorrer a emoccedilotildees pode ser problemaacutetico por exemploem situaccedilotildees que necessitem de senso comum

18

21 SISTEMAS PERICIAIS

bull ManutenccedilatildeorArr se natildeo for devidamente mantido e actualizado um sistema pericialcorre o risco de ldquoenvelhecerrdquo no sentido em que deixa de ser um sistema fiaacutevel aque possamos recorrer e que corre o risco de abandono

bull CriatividaderArr um sistema pericial natildeo tem capacidade de reagir de forma diferentea problemas colocados seguindo sempre uma linha estaacutevel de raciociacutenio

bull Adaptaccedilatildeo sensorial rArr um sistema pericial natildeo consegue reagir a informaccedilatildeosensorial do meio que o rodeia entenda-se sensorial como sentidos humanos taiscomo o cheiro o tacto e a visatildeo

19

CAPIacuteTULO 2 ESTADO DA ARTE

22 GISPSA - GIS Problem Solver Advisor

O Gestatildeo Integrada de Seguros (GIS) eacute um Sistema de Informaccedilatildeo vocacionado para aactividade seguradora residente na plataforma AS400 da IBM Umas das caracteriacutesticasmais interessantes deste sistema acabou por ser tambeacutem um dos grandes proporciona-dores de eventuais problemas O GIS possui uma grande capacidade de configuraccedilatildeo oque sendo muito uacutetil para a adaptabilidade deste a cenaacuterios situaccedilotildees ou utilizadoresdiferentes acaba por originar vaacuterios problemas operacionais atraveacutes de inconsistecircnciasna proacutepria configuraccedilatildeo

Dada esta facilidade aparente de ocorrecircncia de problemas e a falta de sensibilidadee formaccedilatildeo teacutecnica dos utilizadores para os resolver a equipa de assistecircncia teacutecnicaafecta ao GIS estava muitas vezes com sobrecarga de pedidos por parte dos clientes quepretendem estes problemas solucionados Existiam periacuteodos de especial relevacircncia noque toca a estas sobrecargas tais como os fechos de ano das empresas

A partir daqui surge a ideia e a necessidade da criaccedilatildeo do GISPSA com o intuito dealiviar a sobrecarga da equipa de assistecircncia teacutecnica mas essencialmente com o grandeobjectivo de assegurar que um cliente natildeo fica sem soluccedilatildeo para os problemas com que sedepara apenas porque natildeo estatildeo teacutecnicos disponiacuteveis A grande vantagem de um sistemapericial foi e seraacute sempre essa poder substituir um perito sem ter que enfrentar questotildeescomo a disponibilidade custos ou tempo

Assim surge o GISPSA que mais natildeo eacute que um projecto criado por Pinto no acircmbito deum projecto acadeacutemico cujo objectivo inicial passava por criar um Sistema Pericial paradiagnoacutestico de problemas operacionais do GIS Este sistema teve por base o conhecimentoe o respectivo raciociacutenio extraiacutedos de um perito da aacuterea Administrativa-Financeira doGIS

No caso de problemas mais complexos em que o Sistema Pericial natildeo consiga determi-nar os factores de erro eacute remetida a resoluccedilatildeo para um teacutecnico da empresa comunicandoesse facto ao utilizador Pinto (1998)

221 Arquitectura

Sendo um sistema pericial o GISPSA teria que ser desenvolvido utilizando uma lingua-gem que tivesse uma seacuterie de caracteriacutesticas A existecircncia de uma base de conhecimento apossibilidade de consultar factos adicionar novos factos ou ainda de remover factos nessamesma base e aspectos como o backtracking na realizaccedilatildeo de raciociacutenio ao inferir sobreesses mesmos factos natildeo permitia um leque muito alargado na escolha da linguagem de

20

22 GISPSA - GIS PROBLEM SOLVER ADVISOR

desenvolvimento

Desta forma ficou decidido que o GISPSA seria desenvolvido em prolog (maisespecificamente winprolog) Devido agrave simplicidade de utilizaccedilatildeo e extensa documentaccedilatildeode apoio o LPAProlog foi usado como motor de inferecircncia e o LPAFlex foi usado paraestabelecer a declaraccedilatildeo de regras

Como jaacute foi referido anteriormente o GISPSA eacute uma aplicaccedilatildeo standalone desenhadae desenvolvida para uma execuccedilatildeo local em mono-posto e sujeita agrave obtenccedilatildeo de umalicenccedila de utilizaccedilatildeo para garantir o seu funcionamento

Figura 2 GISPSA menu inicial

A aplicaccedilatildeo dispotildee de uma interface graacutefica tambeacutem criada em winprolog que utilizarecursos especiacuteficos do sistema operativo Windows

A base de conhecimento eacute armazenada num uacutenico ficheiro ksl e o seu carregamentonatildeo eacute parcial O mesmo seraacute dizer que toda a base de conhecimento eacute passada paramemoacuteria de trabalho assim que o programa arranca

222 Funcionamento

Em termos funcionais a aplicaccedilatildeo permite mudar o tipo de linguagem a ser empreguenas conversaccedilotildees estabelecidas com o utilizador consoante esta esteja a ser utilizadapor um teacutecnico (habitualmente os teacutecnicos com formaccedilatildeo na aacuterea) ou um utilizadornormal (o cliente que adquiriu a aplicaccedilatildeo e cuja formaccedilatildeo eacute mais reduzida ou ateacute mesmoinexistente)

Apoacutes a definiccedilatildeo da linguagem de interacccedilatildeo a utilizar o sistema inicia entatildeo o pedidode assistecircncia apresentando a mensagem ldquoSeleccione a aplicaccedilatildeordquo (figura 3) que permitenuma primeira instacircncia direccionar o raciociacutenio face agrave resposta do utilizador

21

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 3 GISPSA interacccedilatildeo inicial

Figura 4 GISPSA exemplo de interacccedilatildeo pergunta-resposta

223 Limitaccedilotildees

Apesar de ser inovadora na aacuterea esta aplicaccedilatildeo foi no iniacutecio bastante utilizada por algunsclientes tendo sofrido algum abandono de forma gradual ao longo do tempo de vida quejaacute leva Apoacutes uma anaacutelise chegou-se agrave conclusatildeo que as principais causas na origemdesse abandono seriam as seguintes

bull Adicionar regras implicava o conhecimento da sintaxe das mesmas Verificou-se que esta tarefa era demasiado complexa para um utilizador sem formaccedilatildeo esensibilidade suficientes na aacuterea da programaccedilatildeo

bull O acto de proceder agrave ediccedilatildeo de regras existentes na base de conhecimento traduz-senuma tarefa que para aleacutem de morosa eacute essencialmente de risco no sentido em

22

23 WEB EXPERT SYSTEMS

que natildeo existe uma verdadeira noccedilatildeo do impacto que estas alteraccedilotildees possam vir ater no comportamento global do sistema

bull O sistema apenas pode ser instalado em mono-posto o que obriga agrave obtenccedilatildeo deuma licenccedila por cada instalaccedilatildeo que se pretende realizar

bull O sistema natildeo permite a integraccedilatildeo com ambientes baseados em redes e sistemasdistribuiacutedos

bull Natildeo existe nenhum mecanismo de verificaccedilatildeo da base de conhecimento

bull O aspecto visual da aplicaccedilatildeo estaacute ultrapassado e eacute pouco apelativo

23 Web Expert Systems

Actualmente uma grande maioria dos sistemas periciais desenvolvidos satildeo desenhadospara um funcionamento em ambientes web As razotildees apontadas para esta orientaccedilatildeo satildeovaacuterias destacando-se a evoluccedilatildeo da proacutepria tecnologia as velocidades de transmissatildeode dados em redes a possibilidade de acesso em muacuteltiplas localizaccedilotildees geograacuteficas(desde que assegurado o necessaacuterio acesso agrave rede) e ainda o desenvolvimento de novasferramentas que possibilitam maior facilidade na criaccedilatildeo destes novos sistemas

Algumas das ferramentas que permitem actualmente o desenvolvimento de um sistemapericial baseado em ambientes web satildeo as seguintes

1 WebFlex - LPA Flex

2 EXSYS CORVID

3 WebCLIPS

4 JCLIPS

5 JESS

6 Acquire

WebFlex - Esta ferramenta permite a publicaccedilatildeo de um sistema pericial desenvolvidoem ldquoLPA Prologrdquo Os sistemas periciais desenvolvidos a partir deste meacutetodo necessitamainda de outra ferramenta para garantir o funcionamento o ldquoLPA ProWeb Serverrdquo Eacute

23

CAPIacuteTULO 2 ESTADO DA ARTE

possiacutevel adaptar um sistema pericial jaacute desenvolvido para ser disponibilizado numarede sem ser necessaacuterio efectuar qualquer tipo de alteraccedilatildeo No entanto se for pretendidoalgum tipo de configuraccedilatildeo extra por exemplo incluir imagens ou alterar a aparecircncia dealguns controlos eacute uma alteraccedilatildeo extremamente morosa e complexa

WebFlex allows you to deliver your flex-based expert systems onto Intranets

and Extranets easily Just create your rules and frames and questions as per normal

in flex and WebFlex will construct a web server-based solution using ProWeb where

all the questions are sent automatically configured for a standard HTMLJavascript

browserLogic Programming Associaties Ltd (2010)

Eacute possiacutevel alterar o HTML de saiacuteda que o webflex utiliza por defeito no entanto estaconfiguraccedilatildeo natildeo eacute tatildeo simples quanto poderaacute parecer agrave partida e obriga agrave alteraccedilatildeo dosistema pericial

Esta ferramenta funciona apenas em sistemas windows e eacute necessaacuteria a obtenccedilatildeo deuma licenccedila de utilizaccedilatildeo (natildeo eacute gratuita)

EXSYS CORVID - Eacute uma ferramenta composta por dois moacutedulos Exsys CORVID

Knowledge Automation Expert System Software e Exsys Servlet Runtime EXSYS (2010)

Natildeo foi possiacutevel encontrar nenhum sistema desenvolvido por esta ferramenta pormotivos de confidencialidade eou vantagem competitiva Estatildeo no entanto disponiacuteveisaplicaccedilotildees de demonstraccedilatildeo na paacutegina oficial da empresa Verificou-se que nenhumadas aplicaccedilotildees de demonstraccedilatildeo disponiacuteveis possui capacidades de dar explicaccedilotildees oujustificaccedilotildees

De acordo com EXSYS as aplicaccedilotildees construiacutedas com esta ferramenta podem seracedidas por Servlet Applet ou standalone e esta ferramenta necessita da obtenccedilatildeo deuma licenccedila de desenvolvimento

WebCLIPS - Segundo Michael Giordano o WebCLIPS eacute uma implementaccedilatildeo CGI

que envolve o C Language Integrated Production System (CLIPS) como aplicaccedilatildeo internaO CLIPS eacute uma ferramenta de desenvolvimento de sistemas periciais

Esta ferramenta foi desenvolvida em linguagem C o que significa que em termos deportabilidade desde que se possua o coacutedigo fonte este poderaacute ser compilado em qualquersistema operativo jaacute que o compilador para a linguagem estaacute disponiacutevel para todas as

24

23 WEB EXPERT SYSTEMS

versotildees existentes no mercado No entanto o WebCLIPS apenas foi desenvolvido parafuncionamento em sistemas windows e linux

O CLIPS eacute uma ferramenta livre que permite o desenvolvimento de sistemas baseadosem regras Pode ser integrado com algumas linguagens das quais se destacam C Java

(JCLIPS) FORTRAN entre outras Esta eacute provavelmente a ferramenta mais utilizada nodesenvolvimento de sistemas periciais devido agrave sua rapidez eficiecircncia e pelo facto de sergratuita

JCLIPS - Eacute uma biblioteca que permite integraccedilatildeo com Java e permite igualmentea utilizaccedilatildeo do motor do CLIPS a partir de uma classe Java Esta interligaccedilatildeo eacute feitaatraveacutes da importaccedilatildeo do ficheiro (dll ou so consoante o sistema operativo) e permite aexecuccedilatildeo de uma instacircncia ou seja permite ter apenas uma sessatildeo de um sistema pericialde cada vez Maarten Menken (2010)

JESS - O JESS eacute uma extensatildeo do CLIPS em JAVA Eacute basicamente uma bibliotecacujo objectivo natildeo passa por gerar uma aplicaccedilatildeo web mas sim servir de base para quepossa ser integrada ou utilizada para esse efeito Ernest Friedman-Hill (2010)

Utiliza uma linguagem especiacutefica designada JESS language equivalente ao CLIPSmas com novos componentes que a tornam uma linguagem complexa e de difiacutecil utilizaccedilatildeopor algueacutem sem conhecimentos de inteligecircncia artificial

Acquire - Eacute um produto bastante avanccedilado do ponto de vista tecnoloacutegico face aosconcorrentes no sentido em que permite uma separaccedilatildeo evidente entre a camada aplicaci-onal e a camada de apresentaccedilatildeo Promove uma separaccedilatildeo cliente-servidor e disponibilizaum Software Development Kit (SDK) que permite a integraccedilatildeo com outras aplicaccedilotildees

De acordo com Acquired Intelligence o produto estaacute sujeito a uma licenccedila de utilizaccedilatildeoe eacute disponibilizado ainda um serviccedilo online de alojamento de sistemas periciais omyAcquire disponiacutevel mediante uma subscriccedilatildeo semestral

231 Casos de estudo

Os sistemas periciais mais especificamente aqueles que satildeo baseados em sistemas webtecircm conhecido nos uacuteltimos anos uma evoluccedilatildeo gradual e consistente devido em grandeparte agrave simplicidade e disponibilidade que possibilitam Podem ser acedidos a partir dequalquer local no mundo 24 horas por dia e sem qualquer tipo de limitaccedilatildeo bastando

25

CAPIacuteTULO 2 ESTADO DA ARTE

apenas que se garanta o acesso agrave rede onde o sistema pericial estaacute colocado

As interfaces satildeo mais apelativas e chegam a fazer uso de imagens e outros meiosgraacuteficos ou de multimeacutedia cujo objectivo natildeo eacute apenas o de tornar os sistemas maisinteressantes mas tambeacutem mais eficazes jaacute que auxiliam de forma mais simples eesclarecida Os controlos utilizados as caixas de interacccedilatildeo e ateacute mesmo as explicaccedilotildees ejustificaccedilotildees (nos sistemas que o permitam) ajudam a ter uma ideia cada vez mais clarasobre o funcionamento dos sistemas obtendo-se assim melhores resultados

Alguns dos casos de estudo de sistemas periciais baseados em sistemas web existentesactualmente tecircm como um dos seus maiores objectivos a disponibilidade global dosmesmos (satildeo disponibilizados normalmente atraveacutes da internet) e os mais conhecidossatildeo

bull Landfill Operation Management Advisor (LOMA)

bull Medical Diagnosis Support System (MDSS)

bull Whale watcher

2311 LOMA - Landfill Operation Management Advisor

O LOMA eacute um sistema pericial online que analisa problemas operacionais falhas eacidentes em aterros comuns Aleacutem disso o LOMA fornece conselhos sobre como umgestor pode evitar esses problemas e em caso de ocorrecircncia sobre como diminuir oimpacto das suas consequecircncias Encontra-se disponiacutevel em httplomacivil

duthgr e eacute de utilizaccedilatildeo puacuteblica

O sistema pericial foi desenvolvido por Dokas recorrendo agraves ferramentas WebFlex eLPA ProWeb Server

A arquitectura da aplicaccedilatildeo web pode ser visualizada na figura 5 e consiste nosseguintes moacutedulos Dokas (2005)

bull Sistema pericial LOMA

bull Moacutedulo de aconselhamento

bull Moacutedulo operacional de problemas-causa

bull Eventos inicias

bull Problemas operacionais

26

23 WEB EXPERT SYSTEMS

bull Moacutedulo de explicaccedilotildees

bull Moacutedulo de submissatildeo de conhecimento e informaccedilatildeo

Figura 5 Arquitectura do LOMA

O moacutedulo mais relevante para o acircmbito desta dissertaccedilatildeo eacute o ldquoSistema pericial LOMArdquoe eacute tambeacutem o moacutedulo mais importante para a aplicaccedilatildeo LOMA

Eacute composto por vinte e quatro sub-moacutedulos cada um deles responsaacutevel por analisarum tipo especiacutefico de problema e ainda por um sub-moacutedulo extra que eacute responsaacutevel pelocontrolo do sistema

O sub-moacutedulo extra questiona o utilizador que descreve o problema (ver 6 e 7) ecom base na sua descriccedilatildeo apresenta uma lista de possiacuteveis problemas (ver 8) Quandoo utilizador selecciona um problema da lista de resultados eacute activado o respectivo sub-moacutedulo que por sua vez iraacute fornecer informaccedilatildeo de como prevenir o problema ou nocaso de este jaacute ter acontecido como minimizar as suas consequecircncias (ver 9)

27

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 6 Paacutegina inicial do sistema pericial LOMA

Figura 7 Sub-moacutedulo extra

28

23 WEB EXPERT SYSTEMS

Figura 8 Sugestatildeo de problemas do sub-moacutedulo extra

Figura 9 Sub-moacutedulo especializado

29

CAPIacuteTULO 2 ESTADO DA ARTE

2312 MDSS - Medical Diagnosis Support System

O MDSS eacute um sistema pericial utilizado na aacuterea da medicina e foi desenvolvido paraajudar no diagnoacutestico e tratamento da diabetes A diabetes pode afectar vaacuterias partes docorpo provocando diversos sintomas e complicaccedilotildees Quando detectada atempadamenteeacute mais facilmente controlaacutevel e menos perigosa Por todos estes motivos foi criado umsistema pericial online o MDSS que permite inferir sobre uma seacuterie de sintomas parachegar a um diagnoacutestico

Na opiniatildeo de Filho uma das vantagens deste sistema pericial eacute que possibilita quemeacutedicos em ambientes rurais ou perigosos e de difiacutecil acesso com recursos limitadospossam aceder ao sistema pericial de forma a terem uma ajuda no diagnoacutestico destadoenccedila O que comeccedilou como um sistema pericial vocacionado e orientado para adiabetes rapidamente cresceu e tornou-se algo mais do que isso sendo hoje utilizadocomo sistema de diagnoacutestico para vaacuterias doenccedilas

No que diz respeito agrave sua arquitectura o MDSS foi desenvolvido em LPA Prolog

recorrendo aos moacutedulos ProWeb e ProData e utilizando Open Data Base Connectivity

(ODBC) para acesso agrave base de dados Utiliza loacutegica fuzzy para raciociacutenio sobre incertezaspara lidar com conhecimento parcial

O sistema eacute composto por trecircs moacutedulos No primeiro moacutedulo eacute possiacutevel um es-pecialista definir sintomas exames cliacutenicos exames de laboratoacuterio e exames relativosa uma ou mais doenccedilas Eacute ainda possiacutevel a atribuiccedilatildeo de valores (pesos estatiacutesticos)ou de resultados que definem uma doenccedila Isso permite por exemplo que a pressatildeoarterial possa estar associada ao diagnoacutestico de pressatildeo alta diabetes gravidez de riscoou insuficiecircncia renal entre outros Informaccedilotildees de consultas anteriores e exames satildeoautomaticamente ligadas e analisadas sob fundamentaccedilatildeo loacutegico temporal

No segundo moacutedulo o sistema permite consultas atraveacutes do qual os dados relevantespara o paciente satildeo registados e relacionados com outros exames correlacionados Durantea fase de diagnoacutestico o sistema pode sugerir outros testes ou procedimentos para entatildeoinferir se haacute outros riscos e doenccedilas a serem investigados

No terceiro moacutedulo eacute efectuado o diagnoacutestico O sistema iraacute localizar automatica-mente os diagnoacutesticos jaacute registados noutras consultas incluindo aquelas feitas por outrosmeacutedicos Aleacutem disso o sistema pesquisa niacuteveis de doenccedilas de acordo com os resultadosdos exames Pode tambeacutem sugerir uma investigaccedilatildeo mais aprofundada sempre que osdados natildeo sejam suficientes para garantir um diagnoacutestico preciso

30

23 WEB EXPERT SYSTEMS

2313 Whale watcher

O sistema pericial Whale watcher eacute um sistema de demonstraccedilatildeo da plataforma AcquireEste e outros sistemas periciais similares estatildeo disponiacuteveis na paacutegina da Acquire (httpwwwaiinccademos)

Figura 10 Paacutegina principal do sistema pericial Whale Watcher

Figura 11 Paacutegina final do sistema pericial Whale Watcher

Atraveacutes das demonstraccedilotildees facultadas pela Acquire natildeo eacute possiacutevel concluir se existealgum tipo de sistema de explicaccedilotildees No entanto no final de cada sessatildeo do sistemapericial eacute possiacutevel consultar um resumo (ver 11) que funciona como uma explicaccedilatildeomuito baacutesica da inferecircncia realizada pelo sistema pericial jaacute que se limita apenas amostrar os factos que foram respondidos durante a sessatildeo

31

3Ferramentas utilizadas

Durante o desenvolvimento deste trabalho foi necessaacuterio decidir sobre quais as ferramen-tas a utilizar para a criaccedilatildeo do novo sistema pericial Atendendo a algumas caracteriacutesticasproacuteprias e objectivos traccedilados era necessaacuterio utilizar alguma especificidade na escolhapara garantir a exclusividade do resultado Desenvolvimento web capacidade de pro-ceder a inferecircncia sobre conhecimento representado atraveacutes de regras simplicidade deutilizaccedilatildeo actualidade da tecnologia entre outras caracteriacutesticas influenciaram significa-tivamente nesta escolha

Entre os vaacuterios ambientes de desenvolvimento disponiacuteveis a opccedilatildeo recaiu sobre umque para aleacutem de simples e eficiente era utilizado regularmente em situaccedilatildeo profissi-onal pelo criador deste projecto pelo que aqui foi relativamente simples chegar a umaconclusatildeo

Indo de encontro agraves razotildees que levaram agrave escolha da linguagem do motor de inferecircnciautilizada no projecto que deu origem a este trabalho tambeacutem aqui foi escolhida umalinguagem que possibilita o backtracking de forma eficaz e simplificada caracteriacutesticaessencial para o bom funcionamento do motor de inferecircncia e que contribui largamentepara o sucesso do sistema pericial

31 Ambiente de desenvolvimento

O ambiente de desenvolvimento e respectiva linguagem de programaccedilatildeo utilizados para acriaccedilatildeo do interface do sistema pericial foram seleccionados levando em conta algunsrequisitos e factores considerados necessaacuterios e ateacute mesmo essenciais para a soluccedilatildeo finalA listagem dessas caracteriacutesticas eacute a seguinte

bull Baixo custo de disponibilizaccedilatildeo

33

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

bull Independecircncia do sistema operativo

bull Simples escalabilidade

bull Visual apelativo

Com base nesta lista de caracteriacutesticas consideradas desejaacuteveis ou ateacute mesmo essen-ciais para a soluccedilatildeo final e considerando tambeacutem a jaacute longa experiecircncia de utilizaccedilatildeonesta plataforma foi escolhida a linguagem Java J2EE utilizando a framework Icefaces eo portal Glassfish Podemos considerar para esta escolha uma seacuterie de paracircmetros paraaleacutem dos jaacute evidenciados

bull O J2EE eacute uma linguagem independente do sistema operativo

bull O J2EE caracteriza-se pela sua modularidade

bull Glassfish eacute um portal open source com suporte para J2EE

bull Icefaces eacute uma framework JavaServer Faces (JSF) compatiacutevel com o Glassfish

bull Icefaces permite a criaccedilatildeo de interfaces graacuteficos de uma forma simples

bull Existecircncia de boa documentaccedilatildeo relativamente a todos os produtos

Para aleacutem disto podemos ainda considerar e referir outros produtos e componentesque natildeo sendo menos importantes tambeacutem foram utilizados durante o desenvolvimentodeste trabalho A lista completa de ferramentas eacute a seguinte

bull Java J2EE 60

bull Eclipse Galileo (com plugins para Glassfish e svn) - Integrated Development

Environment (IDE) para Java

bull Icefaces 182

bull GlassFish - portal

bull Visual SVN Server e Tortoise - controlo de versotildees

bull MikTeX - latex

bull TexnicCenter - IDE para latex

34

32 MOTOR DE INFEREcircNCIA

32 Motor de inferecircncia

Em qualquer sistema pericial o motor de inferecircncia eacute o cerne do mesmo O seu desenvol-vimento obriga habitualmente a um esforccedilo e concentraccedilatildeo maiores porque aqui residea forma como o sistema iraacute percorrer as vaacuterias etapas necessaacuterias para alcanccedilar umasoluccedilatildeo

Tambeacutem neste trabalho o motor de inferecircncia eacute um ponto essencial e a sua implemen-taccedilatildeo teve um papel destacado no processo de anaacutelise realizado Actualmente existemalguns produtos que podem ser utilizados integral ou parcialmente como motor deinferecircncia de um sistema pericial esses produtos podem ser frameworks ou shells ouainda Business Rule Management System (BRMS)

Os termos framework e shell satildeo muitas vezes utilizados como sinoacutenimo umaframework eacute uma abstracccedilatildeo que permite agregar formas de resoluccedilatildeo de problemascomuns uma shell eacute similar no sentido em que disponibiliza uma camada de abstracccedilatildeouma ldquoconchardquo que encapsula os serviccedilos

No sentido de tentar reutilizar um produto jaacute existente foi elaborado um estudo acercados actuais produtos e das suas caracteriacutesticas A abordagem seguida para esse estudo foiuma abordagem por fases em que gradualmente se foi estreitando o conjunto de soluccedilotildeesaceitaacuteveis mediante a utilizaccedilatildeo de alguns criteacuterios

Foram consideradas cinco fases

bull Fase I - Recolha de candidatos

bull Fase II - Requisitos base

bull Fase III - Viabilidade econoacutemica

bull Fase IV - Viabilidade teacutecnica

bull Fase V - Prova de conceito

321 Fase I - Recolha de candidatos

A fase I teve como objectivo recolher alguns dos actuais produtos que possuam caracteriacutes-ticas desejadas para um sistema deste geacutenero Natildeo foram considerados alguns produtosque satisfaziam os requisitos mas que natildeo permitem uma integraccedilatildeo com Java Foramidentificados os seguintes produtos como potenciais integradores do projecto

35

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

Produto BRMS FrameworkDrools X XHammurapi Rules XILog XJCLIPS XJESS XJEOPS XJRuleEngine XOpenL Tablets XOpenRules XProva language XYprolog XZilonis X

Tabela 1 Listagem de produtos da Fase I

Drools - ou JBoss Rules eacute um produto open source da RedHat (2010) Define umalinguagem especiacutefica para as regras Eacute desenvolvido em Java e utiliza um mecanismo deencadeamento directo baseado em regras natildeo implementa justificaccedilotildees

Hammurapi Rules - eacute um produto desenvolvido em Java por Hammurapi GroupEste motor de inferecircncia utiliza a sintaxe da linguagem Java para definiccedilatildeo de regras Eacutepossiacutevel definir grupos de regras em XML e estaacute disponiacutevel um plug-in para Eclipse quepermite a ediccedilatildeo destes grupos Suporta encadeamento directo e indirecto

ILOG - WebSphere ILOG Business Rule Management Systems eacute como o nome indicaum BRMS eacute um produto da IBM (2010) que requer licenciamento adequado Eacute necessaacuteriaa instalaccedilatildeo e configuraccedilatildeo de alguns componentes de forma a que o produto possa serutilizado por exemplo Rule Team Server Rule Execution Server Http server entreoutros

JCLIPS - eacute um produto open source mantido por uma comunidade e permite aintegraccedilatildeo entre Java e CLIPS O CLIPS ldquoC Language Integrated Production Systemrdquo eacuteum sistema pericial desenvolvido em linguagem C Maarten Menken (2010)

JESS - eacute um produto comercial da Sandia National Laboratories desenvolvidoem Java Eacute necessaacuterio adquirir licenccedilas para efectivar a utilizaccedilatildeo do mesmo ErnestFriedman-Hill (2010)

JEOPS - Java Embedded Object Production System (JEOPS) eacute uma framework open

source desenvolvida num acircmbito acadeacutemico por Carlos Figueira Filho

36

32 MOTOR DE INFEREcircNCIA

JRuleEngine - eacute um produto open source desenvolvido em Java e mantido porMcarniel (2010) As regras satildeo compiladas para classes Java

OpenL Tablets - eacute um BRMS open source cuja principal vantagem eacute a integraccedilatildeocom a folhas de caacutelculo Excel Permite a utilizaccedilatildeo de tabelas de decisatildeo no formatoExcel OpenL (2010)

OpenRules - eacute um produto da OpenRules Inc sujeito a licenccedila de utilizaccedilatildeo Eacutetotalmente orientado para a folha de caacutelculo Excel da Microsoft

Prova language - eacute um produto open source desenvolvido em Java por KozlenkovAlex and Paschke Disponibiliza uma linguagem muito semelhante ao prolog Eacute umproduto bastante direccionado para a comunicaccedilatildeo entre agentes expondo inclusiveacute umsistema multi-agente

Yprolog - eacute um produto open source desenvolvido em Java por Boris van SchootenEacute uma reacuteplica do prolog desenvolvida totalmente em Java Foi evoluindo ao longo dotempo a partir de produtos como o WProlog e o XProlog

Zilonis - eacute um produto desenvolvido em Java por Elie Levy O formato das regras eacutesemelhante ao CLIPS

322 Fase II - Requisitos base

A fase II teve como objectivo filtrar a lista de candidatos no sentido de excluir produtosque natildeo se enquadrem directamente com os requisitos do sistema a desenvolver Assimsendo foram excluiacutedos alguns dos candidatos jaacute indicados e os principais motivos daexclusatildeo satildeo

bull Natildeo permitirem a integraccedilatildeo com um portal

bull Formato das regras eacute fechado natildeo possibilitando possiacuteveis e futuras evoluccedilotildees

bull Natildeo disponibilizaccedilatildeo de acesso aos serviccedilos internos mais concretamente natildeofornecem uma framework de controlo Desta forma natildeo eacute possiacutevel reutilizar partesdo motor de inferecircncia ou do sistema de gestatildeo de regras sem que este seja feitoatraveacutes do proacuteprio produto

Candidatos excluiacutedos pelas razotildees atraacutes expostas

37

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProdutoILogOpenRulesOpenL Tablets

Tabela 2 Listagem de produtos excluiacutedos na Fase II

323 Fase III - Viabilidade econoacutemica

Sendo um paracircmetro com importacircncia relativa dada a possiacutevel aplicaccedilatildeo comercial deum produto baseado neste trabalho natildeo deixa de ser importante para o estudo realizadoDesta forma a fase III teve como objectivo filtrar a lista de resultados no sentido de excluirprodutos que natildeo sejam economicamente viaacuteveis quer por motivos de licenciamentocomercial quer por motivos de licenccedilas de utilizaccedilatildeo

Foram entatildeo considerados os produtos constantes da tabela 3 como natildeo viaacuteveis nosentido em que existem produtos open source similares para o efeito pretendido

ProdutoDroolsJESS

Tabela 3 Listagem de produtos excluiacutedos na Fase III

324 Fase IV - Viabilidade teacutecnica

Esta fase teve por objectivo filtrar a lista de resultados de forma a que os produtos natildeoviaacuteveis do ponto de vista teacutecnico natildeo sejam considerados para a escolha final

Os produtos que natildeo foram considerados viaacuteveis por questotildees teacutecnicas satildeo

38

32 MOTOR DE INFEREcircNCIA

Produto RazatildeoJEOPS Documentaccedilatildeo disponiacutevel bastante vaga projecto desconti-

nuado e natildeo estaacutevelJRuleEngine As regras satildeo compiladas para Java natildeo permite escalabili-

dade sem compilar o projectoZilonis Natildeo estaacute preparado para ser utilizado como framework ape-

nas permite uma aplicaccedilatildeo stand-alone

Hammurapi Rules As regras satildeo compiladas para Java natildeo permite escalabili-dade sem compilar o projecto

Tabela 4 Listagem de produtos excluiacutedos na Fase IV

325 Fase V - Prova de conceito

Nesta uacuteltima fase restaram trecircs produtos JClips Prova e YProlog Apoacutes a realizaccedilatildeode uma prova de conceito com estes produtos foram encontradas algumas vantagens edesvantagens Esta anaacutelise pode ser consultada nas tabelas 5 6 e 7

JClipsVantagens Desvantagens

bull Linguagem CLIPS bull Apenas permite 1 execuccedilatildeo deforma a permitir vaacuterias utilizaccedilotildeesdo motor de inferecircncia eacute necessaacuterioimplementar loacutegica especiacutefica

bull Ausecircncia de documentaccedilatildeo

Tabela 5 JClips - Vantagens e desvantagens

39

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProvaVantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza exemplos de uti-lizaccedilatildeo

bull Uacuteltima actualizaccedilatildeo em 10 deJunho de 2010

bull Instaacutevel

bull Bastante ocupaccedilatildeo de recursos(CPU e memoacuteria)

bull Disponibilizaccedilatildeo de pouca docu-mentaccedilatildeo

bull Ao invocar um predicado natildeo ins-tancia apenas as variaacuteveis na pri-meira vez mas devolve uma lista detodos os resultados possiacuteveis simi-lar ao predicado findall do LPA Pro-log

Tabela 6 Prova - Vantagens e desvantagens

YProlog

Vantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza documentaccedilatildeo eexemplos de utilizaccedilatildeo

bull Operaccedilotildees baacutesicas do Prologtecircm o mesmo comportamento

bull Uacuteltima actualizaccedilatildeo em 21 de Abrilde 2006

Tabela 7 YProlog - Vantagens e desvantagens

326 Conclusatildeo e fundamentaccedilatildeo da escolha

Tratando-se do nuacutecleo do sistema pericial e sabendo que natildeo existe actualmente ummotor de inferecircncia que corresponda totalmente aos requisitos necessaacuterios foi decidido

40

32 MOTOR DE INFEREcircNCIA

desenvolver um motor de inferecircncia de raiz recorrendo a um produto que permitisse umdesenvolvimento raacutepido e com uma curva de aprendizagem pouco acentuada Para tale depois do estudo realizado perante as vaacuterias hipoacuteteses disponiacuteveis foi decidido optarpelo YProlog

Na uacuteltima fase do estudo apresentado entre os candidatos disponiacuteveis este aparececomo o mais viaacutevel quer pelos aspectos de adaptabilidade funcionamento e facilidadede utilizaccedilatildeo quer ainda pelo nuacutemero reduzido de desvantagens encontradas face aosrestantes

41

4Wexsys

Este trabalho baseia-se na criaccedilatildeo de um sistema pericial baseado no GISPSA e oobjectivo principal passa pela integraccedilatildeo do novo sistema num ambiente de acesso globalou mais especificamente num portal web Para atingir tal meta foi descrito nos capiacutetulosanteriores quais as ferramentas a utilizar sendo que agora vamos compreender como eacuteque a soluccedilatildeo em si foi desenvolvida

O sistema que nasceu a partir desta implementaccedilatildeo foi baptizado com o nome wexsys- ldquoWeb Expert Systemrdquo Partindo da base do GISPSA o wexsys possui um motor deinferecircncia totalmente novo criado especificamente no acircmbito deste trabalho e ainda umabase de conhecimento Foi decidido adoptar o princiacutepio de utilizaccedilatildeo de regras para arepresentaccedilatildeo da base de conhecimento

De referir ainda que o raciociacutenio utilizado no motor de inferecircncia segue uma filosofiado tipo backward chaining princiacutepio jaacute descrito nos capiacutetulos anteriores

Detentor de uma interface considerada actual para os paracircmetros utilizados nos diasque correm este novo sistema pericial foi criado atraveacutes da utilizaccedilatildeo de J2EE e Icefaces

que lhe conferem um aspecto renovado e extremamente apelativo aos utilizadores Satildeoutilizadas teacutecnicas tais como Ajax que providenciam uma dinacircmica de funcionamentomuito interessante do ponto de vista da utilizaccedilatildeo

41 Arquitectura global

A soluccedilatildeo foi projectada de acordo com a arquitectura J2EE ou seja utilizando uma sepa-raccedilatildeo em moacutedulos ou componentes Foram criados dois moacutedulos principais pWexsysEAR

e WexsysEAR estes moacutedulos satildeo a separaccedilatildeo da aplicaccedilatildeo em duas grandes camadas acamada web e a camada de negoacutecio

Esta separaccedilatildeo permite a instalaccedilatildeo da aplicaccedilatildeo num uacutenico servidor ou uma instala-

43

CAPIacuteTULO 4 WEXSYS

ccedilatildeo distribuiacuteda por vaacuterios servidores possibilitando tambeacutem a utilizaccedilatildeo de clusters Estaseparaccedilatildeo torna-se bastante uacutetil se pretendermos expandir a aplicaccedilatildeo para uma utilizaccedilatildeomais intensa ao niacutevel dos acessos A possibilidade de instalaccedilatildeo em muacuteltiplas maacutequinaspermite a obtenccedilatildeo de melhores resultados quando confrontada com a utilizaccedilatildeo de umambiente com apenas um uacutenico servidor

Figura 12 Arquitectura da soluccedilatildeo

411 Moacutedulo pWexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente visual da soluccedilatildeo tambeacutem conhecida porPresentation Layer Este moacutedulo eacute composto pelos componentes descritos na figura 13

Figura 13 Arquitectura do moacutedulo visual

bull pWexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

44

41 ARQUITECTURA GLOBAL

bull wWexsysGUI - componente principal que conteacutem as JSPrsquos servlet e managed

beans

bull jWexsysWebClient - classes utilizadas na camada visual

bull TGGraphLayout - componente externo que disponibiliza um controlo que permitea definiccedilatildeo de um grafo este componente vai ser descrito na secccedilatildeo 4133

bull jWexsysLog - permite o registo da ocorrecircncia de erros

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

412 Moacutedulo WexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente de negoacutecio da aplicaccedilatildeo tambeacutem conhecidapor Business Layer eacute o centro de controlo de toda a soluccedilatildeo Este moacutedulo eacute compostopor alguns componentes como podemos ver na figura 14

Figura 14 Arquitectura do moacutedulo de negoacutecio

bull WexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

bull eWexsys - componente principal responsaacutevel pela criaccedilatildeo dos serviccedilos

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

bull jWexsysUtils - classes utilitaacuterias internas

45

CAPIacuteTULO 4 WEXSYS

bull jWexsysLog - componente auxiliar para permitir o tratamento de erros

bull jWexsysEngine - responsaacutevel pela implementaccedilatildeo do motor de inferecircncia

bull YProlog - permite a interpretaccedilatildeo de coacutedigo prolog Este componente vai serdescrito na secccedilatildeo 4133

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos

Como jaacute foi referido o wexsys foi desenvolvido respeitando a arquitectura J2EE como talos componentes que integram a aplicaccedilatildeo foram tambeacutem criados seguindo esse conceitoTodos os componentes foram estruturados de forma a poderem ser reutilizados com omiacutenimo de dependecircncias e toda a aplicaccedilatildeo foi projectada de forma a retirar o maacuteximopartido desta divisatildeo

Podemos ver na figura 15 um diagrama que permite verificar de que forma os compo-nentes estatildeo a ser utilizados O diagrama tem trecircs agrupamentos que pretendem descreverutilizando uma linguagem Object Oriented (OO) a sua visibilidade Os temos publicprotected e private satildeo utilizados como analogias aos respectivos conceitos na linguagemOO

4131 Camada de acesso puacuteblico

A camada de acesso puacuteblico expotildee os meacutetodos de interacccedilatildeo com a aplicaccedilatildeo sendocomposta por trecircs componentes wWexsysGUI jWexsysWebClient e eWexsysClient

Figura 15 Wexsys - Integraccedilatildeo dos componentes

46

41 ARQUITECTURA GLOBAL

Os componentes eWexsysClient e jWexsysWebClient contecircm interfaces de ligaccedilatildeoentre a camada visual e a camada de negoacutecio

eWexsysClient - disponibiliza as classes designadas Data Transfer Object (DTO) eainda o interface para os serviccedilos disponibilizados pelo wexsys

jWexsysWebClient - disponibiliza classes que caracterizam os conceitos de negoacuteciomas que contecircm atributos adicionais A razatildeo da existecircncia deste componente justificandashsecom a eventual expansatildeo da aplicaccedilatildeo para uma nova camada visual Os exemplos decoacutedigo 1 e 2 permitem-nos observar uma utilizaccedilatildeo de atributos extra na classe visualpara controlo de ocorrecircncia de erros

1 p u b l i c c l a s s RuleView

3 p r i v a t e i n t l e v e l = 0

5 Rule i d e n t i f i e r

7 p r i v a t e S t r i n g i d e n t i f i e r = n u l l

9 p r i v a t e S t r i n g i d e n t i f i e r E r r = n u l l

11 p r i v a t e b o o l e a n i d e n t i f i e r I n E r r = f a l s e

13

Rule d e s c r i p t i o n

15

p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

17

p r i v a t e S t r i n g d e s c r i p t i o n E r r = n u l l

19

p r i v a t e b o o l e a n d e s c r i p t i o n I n E r r = f a l s e

21

Coacutedigo 1 Excerto da classe RuleView

p u b l i c c l a s s Rule implemen t s S e r i a l i z a b l e

47

CAPIacuteTULO 4 WEXSYS

2

p r i v a t e i n t l e v e l = 0

4

Rule i d e n t i f i e r

6

p r i v a t e S t r i n g i d e n t i f i e r = n u l l

8

10 Rule d e s c r i p t i o n

12 p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

14 Coacutedigo 2 Excerto da classe Rule

O outro componente envolvido na camada puacuteblica o wWexsysGUI eacute o responsaacute-vel pela interacccedilatildeo com aplicaccedilatildeo Eacute o componente que disponibiliza as paacuteginas e oresponsaacutevel pela coordenaccedilatildeo de todo o processo web

4132 Camada de acesso protegido

A camada de acesso protegido disponibiliza componentes que podem ser utilizados pelosdois moacutedulos mas que natildeo estatildeo disponiacuteveis para o exterior Neste caso existe apenas umcomponente nestas condiccedilotildees o jWexsysLog cuja funccedilatildeo eacute assegurar o registo de erros

jWexsysLog - componente responsaacutevel pelo registo de erros utiliza internamente aframework log4j

4133 Camada de acesso privado

A camada de acesso privado incluiacute todos os componentes responsaacuteveis por processa-mento interno Os componentes responsaacuteveis pelo processamento interno satildeo eWexsysjWexsysEngine e jWexsysUtils Tambeacutem incluiacutedos no conceito de processamento internoestatildeo os componentes TGGraphLayout e YProlog

eWexsys - eacute o componente responsaacutevel pela implementaccedilatildeo do interface de negoacuteciodelegando as funcionalidades em classes especializadas ou no componente responsaacutevelpela integraccedilatildeo com o nuacutecleo da aplicaccedilatildeo o jWexsysEngine

48

41 ARQUITECTURA GLOBAL

jWexsysEngine - eacute o componente responsaacutevel pelo nuacutecleo da aplicaccedilatildeo ou sejaeacute o responsaacutevel pela integraccedilatildeo do java com o prolog e vice-versa Eacute o componenteresponsaacutevel pelo mapeamento das classes de java para as classes de comunicaccedilatildeo com oprolog

jWexsysUtils - eacute um componente auxiliar que disponibiliza e encapsula utilitaacuteriospara uma melhor organizaccedilatildeo interna da aplicaccedilatildeo

TGGraphLayout - eacute um componente tambeacutem conhecido por TouchGraph eacute umprojecto mantido por uma comunidade e estaacute disponiacutevel no sourceforge AlexanderShapiro (2010)

YProlog - este componente foi o escolhido durante a fase de estudo da implementaccedilatildeopara ser a base do motor de inferecircncia (321)

4134 Fluxo de invocaccedilatildeo

A aplicaccedilatildeo foi desenvolvida de forma a que todos os pedidos seguissem um mesmo fluxode invocaccedilatildeo de forma a uniformizar o processo Na figura 16 temos uma relaccedilatildeo dasclasses principais da aplicaccedilatildeo

Figura 16 Diagrama de classes principais

O fluxo de invocaccedilatildeo inicia-se atraveacutes do WexsysBean no caso de funcionalidades

49

CAPIacuteTULO 4 WEXSYS

do motor de inferecircncia ou atraveacutes do WexsysKBBean no caso de funcionalidades dabase de conhecimento Ambos os managed beans delegam no WexsysViewManager querecorrendo agrave classe WexsysViewHelper converte as classes view para classes DTO Aclasse WexsysViewManager por sua vez delega no session bean WexsysSessionBean quemediante o tipo de pedido delega nas classes de validaccedilatildeo ou nas classes do motor deinferecircncia WexsysEngineImpl

Este processo pode ser observado na figura 17 que representa um diagrama de sequecircn-cia exemplificativo do fluxo de invocaccedilatildeo geneacuterico

Figura 17 Diagrama de sequecircncia do fluxo de invocaccedilatildeo

414 Portal

O wexsys tem como ponto de entrada na aplicaccedilatildeo uma paacutegina inicial que permite aidentificaccedilatildeo do utilizador no sistema pericial Como se trata de um trabalho acadeacutemico aparte de validaccedilatildeo e autenticaccedilatildeo de utilizadores natildeo foi contemplada como tal eacute possiacutevelautenticar-se com qualquer utilizador Para aleacutem da autenticaccedilatildeo eacute ainda possiacutevel indicarpara a sessatildeo actual qual o miacutenimo grau de confianccedila para a apresentaccedilatildeo de uma resposta

50

41 ARQUITECTURA GLOBAL

O endereccedilo da aplicaccedilatildeo respeita o seguinte formato httpservidorportawWexsysGUI onde servidor e porta satildeo os dados de configuraccedilatildeo do Portal Server

Figura 18 Wexsys - Paacutegina inicial

Quando o utilizador inicia a utilizaccedilatildeo do sistema ficam disponiacuteveis trecircs funcionali-dades que seratildeo referidas nas secccedilotildees seguintes

4141 Templates

Um dos aspectos comuns a toda a aplicaccedilatildeo eacute o aspecto graacutefico tendo este sido imple-mentado recorrendo a Facelets Um template facelets define-se pela criaccedilatildeo de umapaacutegina modelo em que existem zonas dinacircmicas Este conceito eacute conhecido de outrastecnologias por exemplo Web Parts ou Master Pages desenvolvidos pela Microsoft

O coacutedigo 3 permite ver como foi desenvolvido o template principal

lthtml

2 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

4 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

6

lt i c e o u t p u t D e c l a r a t i o n

8 doc typeRoo t =HTML

d o c t y p e P u b l i c =minus W3C DTD XHTML 1 0 S t r i c t EN

10 doc typeSys tem = h t t p www w3 org TR xhtml1 DTD xhtml1minus s t r i c t

d t d gt

51

CAPIacuteTULO 4 WEXSYS

12 lthead gt

lt t i t l e gtwexsys minus p a g e T i t l e lt t i t l e gt

14 [ meta t a g s e l i n k t o c s s f i l e s ]

lt head gt

16 ltbody gt

lt f view l o c a l e = f a c e s C o n t e x t e x t e r n a l C o n t e x t r e q u e s t L o c a l e gt

18 lt i c e l o a d B u n d l e basename =com wexsys g u i r e s o u r c e s bund leRes

v a r = bund leRes gt

lt i c e form p a r t i a l S u b m i t = t r u e gt

20 lt d i v i d = wrapper gt

lt d i v i d = logo gt

22 lth1gtlta h r e f = gtWExSys lt a gt lt h1gt

lth2gtweb e x p e r t system lt h2gt

24 lt div gt

lt d i v i d = h e a d e r gt

26 lt d i v i d =menugt

[ Menu c o n t e n t ]

28 lt div gt

lt div gt

30 lt div gt

lt d i v i d = page gt

32 lt d i v i d = c o n t e n t gt

lt u i i n s e r t name= c o n t e n t gt

34 D e f a u l t C o n t e n t

lt u i i n s e r t gt

36 lt div gt

lt d i v i d = s i d e b a r gt

38 lt u i i n s e r t name= s i d e b a r gt

S i d e b a r c o n t e n t

40 lt u i i n s e r t gt

lt div gt

42 lt d i v s t y l e = c l e a r bo th gt

lt div gt

44 lt div gt

lt d i v i d = f o o t e r gt

46 F o o t e r c o n t e n t

lt div gt

48 lt i c e form gt

52

41 ARQUITECTURA GLOBAL

lt f view gt

50 lt body gt

lt html gt Coacutedigo 3 Coacutedigo do template principal do portal

Na listagem de coacutedigo 3 podemos ver a vermelho as aacutereas que foram definidas comodinacircmicas no coacutedigo 4 tambeacutem a vermelho podemos ver as respectivas aacutereas num cenaacuteriode implementaccedilatildeo de uma paacutegina

1 lt u i c o m p o s i t i o n

t e m p l a t e =WEBminusINF incminust e m p l a t e s mainminust e m p l a t e j s p x

3 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

5 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

7

9 lt u i d e f i n e name= c o n t e n t gt

[ ]

11 lt u i d e f i n e gt

13 lt u i d e f i n e name= s i d e b a r gt

[ ]

15 lt u i d e f i n e gt

17 lt u i c o m p o s i t i o n gt Coacutedigo 4 Coacutedigo da paacutegina inicial do portal

415 Suporte multi-liacutengua

O wexsys foi desenvolvido considerando um factor bastante relevante numa aplicaccedilatildeoactual o suporte multi-liacutengua Este suporte eacute uma das vantagens do sistema e foiimplementado recorrendo a ficheiros de recursos (properties) de forma a exteriorizartodos os textos de saiacuteda

Desta forma para dar suporte a uma nova liacutengua apenas teremos que traduzir os textosnos ficheiros de recursos e de alterar a aplicaccedilatildeo de forma a permitir seleccionar o idioma

53

CAPIacuteTULO 4 WEXSYS

A alteraccedilatildeo a ser efectuada na aplicaccedilatildeo eacute muito simples jaacute que basta passar o valor doatributo ldquolocalerdquo da tag ldquofviewrdquo como sendo a liacutengua pretendida

42 Motor de inferecircncia

Para este trabalho foi definida a criaccedilatildeo de um motor de inferecircncia de raiz que pudesseefectivamente substituir o utilizado no sistema base O novo motor desenvolvido teraacute quesuportar uma seacuterie de especificaccedilotildees a comeccedilar pela capacidade de operar num ambientemulti-utilizador

O motor de inferecircncia deve estar preparado para lidar com conhecimento incerto foiescolhido a teacutecnica dos factores de certeza por ser uma teacutecnica simples de reproduzir eeficaz na sua utilizaccedilatildeo

Para aleacutem disto e tratando-se um sistema pericial o motor de inferecircncia deveraacuteser independente da base de conhecimento utilizada e deveraacute idealmente suportar umsistema de explicaccedilotildees que responda a eventuais pedidos por parte dos utilizadores quepretendam ver mais detalhadamente quais as regras que conduziram agrave conclusatildeo obtidaTambeacutem seraacute possiacutevel saber porque eacute que determinada questatildeo eacute colocada (explicaccedilotildeesvulgarmente denominadas de como e porquecirc)

421 Multi-utilizador

Quando se pretende que um sistema pericial tenha uma utilizaccedilatildeo mono-posto (comoera o caso do GISPSA) apenas eacute criada uma instacircncia por cada vez que eacute chamado omotor de inferecircncia No nosso caso tendo sido estabelecido que o novo sistema teriaque permitir uma utilizaccedilatildeo multi-utilizador eacute necessaacuterio desenvolver os mecanismosnecessaacuterios para permitir execuccedilotildees de vaacuterias instacircncias para o novo motor de inferecircncia

A classe WexsysEngineFactory5 eacute a responsaacutevel por criar uma instacircncia do motorde inferecircncia por cada utilizador que inicia a utilizaccedilatildeo do sistema Esta classe tem ummeacutetodo do tipo static o meacutetodo getInferenceEngine que tem como paracircmetros de entradaum utilizador e devolve uma instacircncia do motor de inferecircncia As instacircncias activas satildeoguardadas internamente e sempre que eacute invocado o meacutetodo eacute obtida a respectiva instacircnciaNo caso de ainda natildeo existir uma instacircncia entatildeo eacute criada uma nova e guardada

1

C r e a t e s an i n s t a n c e o f I n f e r e n c e E n g i n e

54

42 MOTOR DE INFEREcircNCIA

3

param usernameKey

5 The usernameKey t o use

7 return I n f e r e n c e E n g i n e i n s t a n c e

throws WexsysArgumen tExcep t ion

9

p u b l i c s t a t i c WexsysEngineImpl g e t I n f e r e n c e E n g i n e ( S t r i n g

usernameKey )

11 throws WexsysArgumentExcept ion

i f ( g e t R u l e U r l ( ) == n u l l | | g e t R u l e U r l ( ) l e n g t h ( ) == 0)

13 throw new WexsysArgumentExcept ion ( mainKnowledgeBaseUrl

r u l e U r l )

15 WexsysEngineImpl i n f e r e n c e E n g i n e = n u l l

17 Have we a l r e a d y c r e a t e d an i n s t a n c e

i f ( g e t I n f e r e n c e E n g i n e s ( ) c o n t a i n s K e y ( usernameKey ) )

19 Obta in t h e i n s t a n c e a s s o c i a t e d t o t h e s p e c i f i e d key

i n f e r e n c e E n g i n e = g e t I n f e r e n c e E n g i n e s ( ) g e t ( usernameKey )

21 e l s e

Cr ea t e a new i n s t a n c e and s t o r e i t i n t h e h o l d e r

23 i n f e r e n c e E n g i n e = new WexsysEngineImpl ( usernameKey

r u l e U r l kb sUr l )

g e t I n f e r e n c e E n g i n e s ( ) p u t ( usernameKey i n f e r e n c e E n g i n e )

25

27 re turn i n f e r e n c e E n g i n e

Coacutedigo 5 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo

422 Base de conhecimento inicial

Ao partir para o desenvolvimento de um sistema pericial eacute necessaacuterio adoptar uma basede conhecimento inicial simples que sirva de suporte ao desenvolvimento do mesmo

55

CAPIacuteTULO 4 WEXSYS

A base de conhecimento inicial foi adoptada a partir do estudo de Merritt (1989) Foiseleccionada devido a duas caracteriacutesticas principais

bull simplicidade - no sentido em que as regras satildeo pequenas e simples de interligar

bull abrangecircncia - existem alguns cenaacuterios possiacuteveis de serem testados com o protoacutetipocomo por exemplo raciociacutenio sobre incerteza e conclusotildees intermeacutedias

A base de conhecimento inicial escolhida tem a seguinte estrutura

bull rule 1 if not turn_over and battery_bad then problem is battery cf 100

bull rule 2 if lights_weak then battery_bad cf 50

bull rule 3 if radio_weak then battery_bad cf 50

bull rule 4 if turn_over and smell_gas then problem is flooded cf 80

bull rule 5 if turn_over and gas_gauge is empty then problem is out_of_gas cf 90

bull rule 6 if turn_over and gas_gauge is low then problem is out_of_gas cf 30

423 Protoacutetipo do motor de inferecircncia

Para o desenvolvimento do protoacutetipo inicial do motor de inferecircncia foi necessaacuterio definiralguns aspectos essenciais tais como

1 Formato da regras

2 Formato das questotildees

3 Interacccedilatildeo assiacutencrona de questotildees e respostas

4 Algoritmos a utilizar

4231 Formato das regras

O formato das regras foi definido tendo em conta alguns pressupostos Entre elessalientam-se a necessidade da utilizaccedilatildeo de graus de confianccedila e a capacidade de guardaruma descriccedilatildeo para cada regra

O formato escolhido para a representaccedilatildeo de uma regra foi o seguinte

56

42 MOTOR DE INFEREcircNCIA

rule(

ltcodigogt rsquoDescriccedilatildeo da regrarsquo

lhs([

ev(ltpremissagt ltvalor da premissagt)

ev(ltpremissa_ngt ltvalor da premissa_ngt)

])

rhs(ev(ltsoluccedilatildeogt ltvalor da soluccedilatildeogt) CF)

)

Na definiccedilatildeo do ltLHSgt eacute possiacutevel definir uma lista de premissas e respectivos valoresno caso da regra conter mais do que uma premissa Um aspecto relevante relacionado coma lista de premissas eacute que esta considera apenas o operador conjunccedilatildeo entre premissas

4232 Formato das questotildees

O formato das questotildees foi tambeacutem definido assumindo alguns princiacutepios tais como apossibilidade de respostas muacuteltiplas e ainda a atribuiccedilatildeo de um texto quer agrave questatildeo a serapresentada quer agraves hipoacuteteses colocadas

O formato escolhido para a representaccedilatildeo de uma questatildeo foi o seguinte

question(

turn_over

rsquoO carro ligarsquo

[

answer(ltvalorgt ltdescriccedilatildeo do valorgt)

answer(ltvalor_ngt ltdescriccedilatildeo do valor_ngt)

]

ltescolha_multipla = 1 0gt

)

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas

Numa qualquer execuccedilatildeo de um software instalado e executado localmente numa maacutequinao funcionamento normal seraacute a execuccedilatildeo de um conjunto de instruccedilotildees ateacute ao ponto emque seja necessaacuteria a interacccedilatildeo com um utilizador Quando isso acontece o programafica suspenso ateacute que o utilizador responda ao que lhe foi solicitado continuando depoiscom a sua execuccedilatildeo a partir do ponto onde parou

57

CAPIacuteTULO 4 WEXSYS

No caso de um programa desenvolvido em prolog e mais especificamente um sistemapericial o conceito atraacutes descrito eacute exactamente o mesmo jaacute que o programa apenassuspende a execuccedilatildeo quando eacute necessaacuterio colocar uma questatildeo que o utilizador teraacute queforccedilosamente responder para dar continuidade ao programa

Se no entanto considerarmos a realidade de uma aplicaccedilatildeo web este princiacutepio jaacutenatildeo seraacute tatildeo linear porque um servidor web recebe um pedido executa-o e devolve umresultado O mesmo seraacute dizer que numa execuccedilatildeo de um componente prolog a partirde um servidor web a pilha de execuccedilatildeo eacute interrompida quando eacute necessaacuterio questionaro utilizador mas natildeo eacute possiacutevel continuar a execuccedilatildeo da mesma a partir do ponto ondeparou Em vez disso seraacute necessaacuterio desfazer a pilha de execuccedilatildeo criada e assim queexistir a resposta do utilizador (eacute feito novo pedido ao servidor) a execuccedilatildeo eacute realizadanovamente desde o iniacutecio mas desta vez considerando a resposta recebida

As razotildees para este comportamento justificam-se pela utilizaccedilatildeo do protocolo HTTPem que eacute necessaacuterio existir um pedido e uma resposta O que obriga a que a colocaccedilatildeoda pergunta e a resposta sejam assiacutencronos podendo existir entre as duas acccedilotildees vaacuteriospedidos (pedidos de explicaccedilotildees por exemplo)

Este ldquoproblemardquo levou agrave necessidade do desenvolvimento de um mecanismo quepermita um funcionamento coerente num programa que utilize (como neste caso) oprolog simulando o comportamento que este teria numa situaccedilatildeo de execuccedilatildeo local

O mecanismo proposto foi a alteraccedilatildeo do predicado responsaacutevel pelo processo re-cursivo especificando um atributo auxiliar de controlo que acompanha a execuccedilatildeo dopredicado Esse atributo auxiliar quando detectada a necessidade de colocaccedilatildeo de umaquestatildeo eacute instanciado e impede a prossecuccedilatildeo do predicado retornando a execuccedilatildeo paraa web com a respectiva questatildeo

Este mecanismo permite uma comunicaccedilatildeo assiacutencrona com a parte web mantendo asvantagens da recursividade do prolog

4234 Estrutura da base de conhecimento

A base de conhecimento apoacutes a definiccedilatildeo do formato de representaccedilatildeo das regras e dasquestotildees eacute a seguinte

q u e s t i o n ( t u r n _ o v e r rsquoO c a r r o l i g a rsquo

2 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

4 q u e s t i o n ( l i g h t s _ w e a k rsquoAs l u z e s e s t a o f r a c a s rsquo

58

42 MOTOR DE INFEREcircNCIA

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

6

q u e s t i o n ( rad io_weak rsquoO r a d i o e s t a f r a c o rsquo

8 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

10 q u e s t i o n ( s m e l l _ g a s rsquo C h e i r a a g a s o l i n a rsquo

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

12

q u e s t i o n ( gas_gauge rsquoO que marca o p o n t e i r o do d e p o s i t o da

g a s o l i n a rsquo

14 [ answer ( empty rsquo Vazio rsquo ) answer ( high rsquo S u f i c i e n t e rsquo ) answer

( low rsquo Rese rva rsquo ) ] 0 )

16 r u l e ( r u l e _ 1 rsquo Rule 1 rsquo

l h s ( [ ev ( t u r n _ o v e r no ) ev ( b a t t e r y _ b a d yes ) ] ) r h s ( ev (

problem b a t t e r y ) 100) )

18

r u l e ( r u l e _ 2 rsquo Rule 2 rsquo

20 l h s ( [ ev ( l i g h t s _ w e a k yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

22 r u l e ( r u l e _ 3 rsquo Rule 3 rsquo

l h s ( [ ev ( rad io_weak yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

24

r u l e ( r u l e _ 4 rsquo Rule 4 rsquo

26 l h s ( [ ev ( s m e l l _ g a s yes ) ev ( t u r n _ o v e r yes ) ] ) r h s ( ev ( problem

f l o o d e d ) 80) )

28 r u l e ( r u l e _ 5 rsquo Rule 5 rsquo

l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge empty ) ] ) r h s ( ev (

problem o u t _ o f _ g a s ) 90) )

30

r u l e ( r u l e _ 6 rsquo Rule 6 rsquo

32 l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge low ) ] ) r h s ( ev ( problem

o u t _ o f _ g a s ) 30) ) Coacutedigo 6 Representaccedilatildeo da base de conhecimento do protoacutetipo

59

CAPIacuteTULO 4 WEXSYS

4235 Algoritmos a utilizar

Um dos paracircmetros mais relevantes para o funcionamento do algoritmo inicial eacute o graumiacutenimo de confianccedila que eacute indicado no iniacutecio da utilizaccedilatildeo do sistema na paacutegina inicialSe o valor indicado para este paracircmetro for demasiado elevado poderaacute inibir algumasregras impedindo o seu disparo no caso de natildeo ser atingido o grau de confianccedila necessaacuterioPor outro lado se o valor introduzido for demasiado baixo permitiraacute que qualquer regradispare independentemente do seu grau de confianccedila traduzindo-se numa maior aacutervorede pesquisa

O motor de inferecircncia eacute executado mediante o recurso a um predicado principal Estepredicado seraacute o responsaacutevel pelo iniacutecio do processo de inferecircncia De seguida seratildeoapresentados alguns dos algoritmos considerados mais relevantes Os algoritmos 1 2 e 3representam atraveacutes da utilizaccedilatildeo de pseudo-coacutedigo alguma da loacutegica implementada nomotor de inferecircncia

Algoritmo 1 Algoritmo principal do motor de inferecircnciabegin tryToProve

while empty ControlObj doobtemRegra (r)disparoPremissaslarr truefor premissa isin LHS do

ControlObjdisparoularr verificaPremissa (p)disparoPremissaslarr disparoPremissas ampamp disparouif not empty ControlObj then

termina o algoritmoend

endif empty ControlObj then

if disparoTodasPremissas thenfireRules

endend

endend

60

42 MOTOR DE INFEREcircNCIA

Algoritmo 2 Verifica se uma premissa eacute verdadeirainput Premissa poutput ControlObj disparoubegin verificaPremissa

disparoularr false ControlObjlarr nullif checkExistFact (p) ou checkExistQuestionFact (p) oucheckExistRuleFact (pControlObj) then

disparoularr true exitend

end

Algoritmo 3 Dispara as regras que possam ser disparadasbegin fireRules

for regra isin basedeconhecimento doif regra not fired then

if regra pode disparar thencalcula grau de confianccediladispara regraif regra dispara soluccedilatildeo final then

termina execuccedilatildeo preenchendo ControlObjendif regra natildeo dispara soluccedilatildeo final then

continuaend

endend

endend

61

CAPIacuteTULO 4 WEXSYS

424 Resultado final

Apoacutes a implementaccedilatildeo do protoacutetipo inicial do motor de inferecircncia e dos testes necessaacuteriosagrave verificaccedilatildeo do bom funcionamento do mesmo chegamos ao resultado final que foiutilizado no wexsys

Este novo motor de inferecircncia foi desenvolvido levando em consideraccedilatildeo todasas caracteriacutesticas consideradas essenciais tanto para a execuccedilatildeo num ambiente multi-utilizador como para a execuccedilatildeo num servidor web e que foram jaacute descritas nas secccedilotildeesanteriores De referir ainda que face ao motor de inferecircncia do sistema base esteapresenta uma seacuterie de melhorias tais como rapidez de funcionamento e abstracccedilatildeo dabase de conhecimento utilizada

4241 Arranque da execuccedilatildeo

Como jaacute referido o motor de inferecircncia segue os algoritmos descritos na secccedilatildeo 4235 enesta secccedilatildeo seraacute abordado o processo utilizado desde o arranque do motor de inferecircnciaateacute agrave apresentaccedilatildeo dos dados como podemos ver na figura 19

Figura 19 Paacutegina inicial do motor de inferecircncia

O utilizador comeccedila na paacutegina inicial e selecciona a opccedilatildeo ldquoMotor de InferecircnciardquoDepois eacute apresentada uma paacutegina que permite iniciar o motor de inferecircncia utilizando a

62

42 MOTOR DE INFEREcircNCIA

opccedilatildeo ldquoiniciarrdquo Isto despoleta o mecanismo de inferecircncia como podemos verificar nafigura 20

Figura 20 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia

A classe YProlog invoca o predicado top_goals que mais natildeo eacute que o ponto de entradano motor de inferecircncia A sua funccedilatildeo seraacute obter qual a ldquoconclusatildeo final a procurarrdquo (estetoacutepico seraacute descrito na secccedilatildeo 432) para se poder iniciar o algoritmo propriamentedito Na listagem de coacutedigo 7 eacute possiacutevel consultar os predicados responsaacuteveis pelaimplementaccedilatildeo dos algoritmos Apenas estatildeo listados os predicados principais

Eacute possiacutevel consultar o coacutedigo do motor de inferecircncia no anexo A

t o p _ g o a l s ( Con t ro lOb j MinCF ) minus

2 t o p _ g o a l ( TopGoal )

t o p ( TopGoal Con t ro lOb j MinCF )

63

CAPIacuteTULO 4 WEXSYS

4

t o p ( TopGoal Con t ro lOb j MinCF ) minus6 r e t r a c t a l l ( h i s t 2 ) s e t ( l en 0 )

g e t R u l e M o r e R e l e v a n t ( TopGoal Rule )

8 t r y T o P r o v e ( Rule Con t ro lOb j MinCF )

10 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) minusr u l e ( Rule _ l h s (LHS) _ )

12 p r o v e L i s t H y p (LHS Con t ro lOb j MinCF )

g e t ( l en LEN) LEN1 i s LEN + 1

14 a s s e r t ( h i s t ( LEN1 Rule ) )

s e t ( l en LEN1)

16 (

check i f r u l e has re turn c o n t r o l o b j e c t

18 ( v a r ( C o n t r o l O b j ) ) minusgt(

no c o n t r o l o b j e c t found check i f o t h e r r u l e s needs t o

be f i r e d

20 f i r e R u l e s ( Con t ro lOb j MinCF )

) (

22 c o n t r o l o b j e c t found

t rue24 )

)

26

p r o v e L i s t H y p ( [ ] Con t ro lOb j MinCF )

28 p r o v e L i s t H y p ( [H | T ] Con t ro lOb j MinCF ) minusproveHyp (H Con t ro lOb j MinCF )

30 (

( v a r ( C o n t r o l O b j ) ) minusgt (

32 p r o v e L i s t H y p ( T Con t ro lOb j MinCF )

) (

34 t rue)

36 )

38

f a c t a l r e a d y known

40 proveHyp (H Con t ro lOb j MinCF ) minus

64

42 MOTOR DE INFEREcircNCIA

H = ev (X Y) f a c t (X Y _ )

42

t h e r e i s a q u e s t i o n t h a t can l e a d t o a f a c t

44 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

n o t ( f a c t (X _ _ ) )

46 q u e s t i o n (X _ _ _ )

n o t ( n o t _ q u e s t i o n (X) )

48 C o n t r o l O b j = ask (X)

50 t h e r e i s a c o n c l u s i o n t h a t can

l e a d t o a q u e s t i o n t h a t can l e a d t o a f a c t

52 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

r u l e ( Rule _ l h s (LHS) r h s ( ev (X _ ) V) )

54 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) Coacutedigo 7 Predicados principais do motor de inferecircncia

4242 Mecanismo de respostas

O mecanismo de respostas eacute algo similar ao processo descrito anteriormente A suafunccedilatildeo seraacute guardar a resposta que foi seleccionada pelo utilizador e prosseguir com oalgoritmo de forma a que uma nova questatildeo seja colocada ou a soluccedilatildeo final alcanccedilada

Um paracircmetro considerado obrigatoacuterio na submissatildeo de uma resposta eacute o grau deconfianccedila Este valor serviraacute para realizar o caacutelculo do grau de confianccedila da regra quandoa mesma puder ser disparada

Podemos ver na figura 21 o processo de resposta a uma questatildeo

65

CAPIacuteTULO 4 WEXSYS

Figura 21 Fluxo de invocaccedilatildeo de resposta a uma questatildeo

Eacute ainda possiacutevel natildeo responder agrave questatildeo colocada utilizando a opccedilatildeo ldquonatildeo sei natildeoresponderrdquo Esta opccedilatildeo iraacute guardar internamente uma indicaccedilatildeo para natildeo voltar a colocara questatildeo ignorada evitando entrar em ciclos

Agrave medida que o processo avanccedila eacute possiacutevel acompanhar o estado actual do motor deinferecircncia Este acompanhamento eacute realizado mediante a anaacutelise da zona situada do ladodireito da paacutegina e que vai sendo actualizada a cada interacccedilatildeo com o motor de inferecircnciaA zona referida permite obter informaccedilotildees acerca de

bull Regras que jaacute foram disparadas

bull Factos que foram inferidos pelo disparo das regras

bull Factos que foram facultados pelo utilizador ao responder agraves questotildees

bull Factos conhecidos antes do iniacutecio do processo de inferecircncia

66

42 MOTOR DE INFEREcircNCIA

Estes factos satildeo obtidos atraveacutes do predicado ldquoinf_sys((L_Rules L_Inf_Facts L_Know_FactsL_Init_Facts)rdquo Este predicado eacute invocado apoacutes cada interacccedilatildeo com o motor de inferecircnciae desta forma os dados estatildeo sempre actualizados

4243 Conclusatildeo final encontrada

Quando o disparo de uma regra leva a que seja adicionado um facto que corresponde auma soluccedilatildeo final o motor de inferecircncia termina a sua execuccedilatildeo devolvendo a conclusatildeofinal a que chegou bem como o respectivo grau de confianccedila Na figura 22 podemos ver afase final do processo de inferecircncia O grau de confianccedila da conclusatildeo final eacute atribuiacutedocom recurso agrave foacutermula seguinte

Dada uma regra X com premissas P1 a Pn e CF =CF (X) entatildeo temos

CF(X P1 Pn) = min [CF(P1) CF(Pn)]timesCF(X)

Figura 22 Conclusatildeo da inferecircncia

4244 Explicaccedilotildees

Eacute possiacutevel em qualquer altura colocar a questatildeo ldquoporquecircrdquo antes de submetermos umaresposta ou a questatildeo ldquocomordquo apoacutes uma conclusatildeo final Este tipo de explicaccedilotildeescontribui para a fase de validaccedilatildeo do sistema pericial colocando-as ao dispor do perito

67

CAPIacuteTULO 4 WEXSYS

responsaacutevel pela validaccedilatildeo expondo desta forma o raciociacutenio seguido no decorrer dainferecircncia Exemplos da solicitaccedilatildeo de explicaccedilotildees podem ser consultados atraveacutes dasfiguras 23 24 e 25

Figura 23 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo

68

42 MOTOR DE INFEREcircNCIA

Figura 24 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia

Figura 25 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final

69

CAPIacuteTULO 4 WEXSYS

As explicaccedilotildees ldquoporquecircrdquo foram implementadas recorrendo a predicados temporaacuterios(hist) que acompanham o desenrolar do motor de inferecircncia Eacute possiacutevel em qualqueraltura consultar esses predicados para obter de uma forma imediata a explicaccedilatildeo doporquecirc da questatildeo estar a ser feita

As explicaccedilotildees ldquocomordquo jaacute seguem um mecanismo mais complexo Quando umaregra eacute disparada origina conclusotildees intermeacutedias ou finais essas conclusotildees natildeo satildeo maisdo que simples factos O motor de inferecircncia sempre que dispara uma regra associa aofacto a regra que o originou por intermeacutedio do predicado inf_exp_how

Desta forma basta algum coacutedigo para que seja possiacutevel a obtenccedilatildeo de ambas asexplicaccedilotildees Esse coacutedigo pode ser consultado na listagem 8 em que os predicados why ehow se referem agraves explicaccedilotildees ldquoporquecircrdquo e ldquocomordquo respectivamente

why ( L ) minus

2 f i n d a l l ( r (OX) h i s t (OX) L )

4 how ( A t t r Value R e s u l t ) minusin f_exp_how ( A t t r Value Ru le s )

6 explainHow ( Rules E x p l a n a t i o n )

append ( Rules E x p l a n a t i o n R e s u l t )

8

explainHow ( [ ] [ ] )

10 explainHow ( [H | T ] R e s u l t ) minusi n n e r E x p l a i n (H E x p l a n a t i o n H )

12 explainHow ( T E x p l a n a t i o n R u l e s )

append ( Explana t ionH E x p l a n a t i o n R u l e s R e s u l t )

14

16 i n n e r E x p l a i n ( Rule E x p l a n a t i o n ) minusr u l e ( Rule _ l h s (LHS) _ )

18 expla inLHS (LHS E x p l a n a t i o n )

20 expla inLHS ( [ ] [ ] )

expla inLHS ( [ ev ( A t t r Value ) | T ] E x p l a n a t i o n A ) minus22 n o t ( inf_exp_how ( A t t r Value _ ) )

f a c t ( A t t r Value _ )

24 expla inLHS ( T E x p l a n a t i o n A )

70

43 BASE DE CONHECIMENTO

26 expla inLHS ( [ ev ( A t t r Value ) | T ] Resu l tA ) minushow ( A t t r Value E x p l a n a t i o n A )

28 expla inLHS ( T E x p l a n a t i o n )

append ( Explana t ionA E x p l a n a t i o n Resu l tA ) Coacutedigo 8 Predicados principais do sistema de explicaccedilotildees

43 Base de conhecimento

A base de conhecimento armazena o conhecimento extraiacutedo de um ou mais peritos e con-siste numa seacuterie de factos e regras acerca de um determinado domiacutenio Sendo dependenteda aacuterea que se pretende abranger com o sistema pericial a base de conhecimento eacute deconstruccedilatildeo especiacutefica para cada situaccedilatildeo em que seja necessaacuterio desenvolver este tipo desistema

Os procedimentos de inserccedilatildeo actualizaccedilatildeo e remoccedilatildeo dos factos e regras que com-potildeem a base de conhecimento (gestatildeo da base de conhecimento) teratildeo que ser na medidado possiacutevel procedimentos simples que sejam facilmente compreendidos pelos utilizado-res

As funcionalidades de gestatildeo da base de conhecimento estatildeo disponiacuteveis na opccedilatildeoldquoBase de Conhecimentordquo da paacutegina inicial como podemos observar na figura 26

71

CAPIacuteTULO 4 WEXSYS

Figura 26 Paacutegina inicial da gestatildeo da base de conhecimento

431 Leitura da base de conhecimento

Ao iniciar a execuccedilatildeo a base de conhecimento eacute carregada para memoacuteria a partir de umficheiro Este processo eacute realizado de forma iterativa e de acordo com uma determinadasequecircncia regras questotildees conclusatildeo final e por uacuteltimo os factos iniciais

Por sua vez o carregamento das regras eacute efectuado em duas fases sendo que primeirosatildeo obtidas as regras existentes (ldquoretrieve_rules(L)rdquo) e depois para cada regra eacute construiacutedaa sua estrutura (ldquobuildRuleObjectrdquo) Podemos observar a descriccedilatildeo deste processo nafigura 27

72

43 BASE DE CONHECIMENTO

Figura 27 Processo de carregamento das regras

Quanto ao carregamento das questotildees eacute similar ao das regras jaacute que eacute efectuadoigualmente em duas fases Primeiro obtecircm-se todas as questotildees (ldquoretrieve_questions(L)rdquo)e depois para cada questatildeo eacute preenchida a sua estrutura (ldquobuildQuestionObjectrdquo)

Jaacute o carregamento da conclusatildeo final eacute realizado atraveacutes do predicado ldquotop_goal(L)rdquoEste predicado vai devolver a conclusatildeo final guardada

Por fim os factos iniciais satildeo obtidos reutilizando um processo de obtenccedilatildeo de factos(ldquoinf_sys((L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)rdquo) Este processo jaacute foireferido na secccedilatildeo que descreve o motor de inferecircncia (4242)

432 Conclusatildeo final a encontrar

A conclusatildeo final a encontrar representa o predicado que vai ser considerado comoobjectivo no decorrer do motor de inferecircncia Soacute vatildeo ser consideradas soluccedilotildees queconvergem para uma soluccedilatildeo final que contenha o predicado especificado no RHS

Para definir uma conclusatildeo final basta especificar o nome do predicado da soluccedilatildeoque pretendemos encontrar com o motor de inferecircncia

73

CAPIacuteTULO 4 WEXSYS

433 Factos iniciais

Os factos iniciais permitem adicionar conhecimento preacutevio a uma base de conhecimentoPara adicionaacute-los eacute necessaacuterio utilizar o botatildeo ldquoAdicionar facto inicialrdquo e preencher oscampos necessaacuterios Para remover um facto inicial previamente inserido eacute utilizado obotatildeo ldquoRemover facto inicialrdquo e eacute necessaacuterio confirmar a acccedilatildeo que se estaacute a efectuar deforma a evitar uma remoccedilatildeo acidental

434 Regras

As regras satildeo o ponto essencial da gestatildeo da base de conhecimento As regras satildeo osdados disponiacuteveis para a aplicaccedilatildeo e como tal quanto melhor forem definidas melhorqualidade a aplicaccedilatildeo teraacute no sentido em que os resultados seratildeo mais correctos e fiaacuteveis

4341 CriarAlterar uma regra

O processo de criaccedilatildeo de uma nova regra foi simplificado Jaacute natildeo eacute necessaacuterio conhecera sintaxe das regras e tambeacutem jaacute natildeo eacute necessaacuterio conhecer os factos a utilizar comopremissas

Para adicionar uma regra apenas temos que arrastar questotildees eou conclusotildees inter-meacutedias de forma a construir a regra que pretendemos inserir

No caso de estarmos a alterar uma regra ou no caso de termos adicionado uma questatildeoou conclusatildeo intermeacutedia incorrectamente podemos eliminar essa premissa simplesmenteseleccionando a ldquocheckboxrdquo respectiva e utilizar a opccedilatildeo ldquoRemover seleccionadosrdquo

74

43 BASE DE CONHECIMENTO

Figura 28 Introduzir uma nova regra

Apoacutes termos arrastado todas as questotildees eou conclusotildees intermeacutedias para a lista depremissas temos que indicar os respectivos valores Este processo estaacute simplificado nosentido em que apenas temos que utilizar a caixa de selecccedilatildeo agrave frente de cada controlo eseleccionar o respectivo valor

Os valores apresentados satildeo obtidos de forma diferente quer se trate de uma questatildeo oude uma conclusatildeo intermeacutedia No caso das questotildees os valores obtidos satildeo os indicadosaquando da sua inserccedilatildeo No caso das conclusotildees intermeacutedias satildeo obtidos todos os valoresutilizados nas regras ateacute ao momento Sempre que uma regra eacute inserida ou actualizadaeacute despoletado um processo que actualiza os valores das conclusotildees intermeacutedias com osnovos valores introduzidos

75

CAPIacuteTULO 4 WEXSYS

Figura 29 Apresentaccedilatildeo de valores configurados na questatildeo

4342 Questotildees

As questotildees acabam por ser o ponto de contacto da aplicaccedilatildeo com o utilizador Sempreque eacute necessaacuterio suspender o processamento para questionar o utilizador este teraacute ahipoacutetese de intervir na execuccedilatildeo Atraveacutes das questotildees colocadas vai ser possiacutevel inferiroutros factos que no final e numa situaccedilatildeo ideal conduzem a uma soluccedilatildeo possiacutevel

Uma questatildeo eacute identificada por um coacutedigo por uma descriccedilatildeo e ainda por um conjuntode valores possiacuteveis as respostas Quando inserimos uma nova regra podemos criar novasquestotildees utilizando a opccedilatildeo ldquoAdicionar uma questatildeordquo Surge entatildeo o formulaacuterio deintroduccedilatildeo de uma questatildeo como podemos ver na figura 30

Figura 30 Formulaacuterio de introduccedilatildeo de uma questatildeo

As respostas configuradas no formulaacuterio de introduccedilatildeo seratildeo as respostas que iratildeoaparecer quando inserirmos uma nova regra e arrastarmos a questatildeo para a lista depremissas

76

43 BASE DE CONHECIMENTO

4343 Verificaccedilatildeo

Apoacutes a introduccedilatildeo ou alteraccedilatildeo das regras deve ser realizado o processo de verificaccedilatildeoda base de conhecimento De uma forma quase imperceptiacutevel na fase de introduccedilatildeode regras estamos a activar este processo jaacute que eacute garantido que as regras introduzidasestatildeo coerentes e que os valores das premissas efectivamente existem Podemos dizerque estamos perante a primeira fase do processo de verificaccedilatildeo designado por verificaccedilatildeoproacute-activa

Para este trabalho foi considerado a verificaccedilatildeo de dois tipos de anomalia na base deregras redundacircncia e regras duplicadas A inclusatildeo de novos mecanismos de verificaccedilatildeoeacute possiacutevel bastando para isso a alteraccedilatildeo do predicado ldquoverification(L)rdquo

A grande diferenccedila entre os dois meacutetodos implementados eacute que uma regra redundanteadiciona conhecimento desnecessaacuterio agrave base de conhecimento enquanto que uma regraduplicada como o nome indica eacute apenas uma duplicaccedilatildeo do conhecimento

Na figura 31 podemos verificar o mecanismo de verificaccedilatildeo implementado que permiteidentificar que regra estaacute em conflito com que outra regra e qual o tipo de conflito

Figura 31 Verificaccedilatildeo da base de conhecimento

435 Gravaccedilatildeo da base de conhecimento

O processo de gravaccedilatildeo da base de conhecimento eacute similar ao processo de leitura com adiferenccedila de natildeo ser iterativo O processo de gravaccedilatildeo da base de conhecimento iniciacom a acccedilatildeo do utilizador na opccedilatildeo ldquoFinalizarrdquo que invoca o meacutetodo ldquosaveAll()rdquo doWexsysKBBean O resto do processo pode ser observado na figura 32

77

CAPIacuteTULO 4 WEXSYS

Figura 32 Processo de gravaccedilatildeo da base de conhecimento

436 Conversatildeo GISPSA

A conversatildeo da base de conhecimento do GISPSA para o formato wexsys foi efectuada emduas fases Na primeira fase foi feita uma migraccedilatildeo sintaacutectica da forma de representaccedilatildeode regras utilizada para a forma utilizada pelo wexsys Na segunda fase foi efectuadoum processo manual de conversatildeo

O sistema anterior delegava nas regras alguns predicados utilizados unicamente parao sistema de explicaccedilotildees Esta caracteriacutestica tornou a migraccedilatildeo algo morosa jaacute que eranecessaacuterio proceder agrave anaacutelise regra a regra de quais os predicados necessaacuterios e quais osdescartaacuteveis

78

44 ANAacuteLISE GRAacuteFICA

44 Anaacutelise graacutefica

Para aleacutem do motor de inferecircncia e da gestatildeo da base de conhecimento foi implemen-tado como prova de conceito um sistema graacutefico que permite observar facilmente arepresentaccedilatildeo de uma base de conhecimento sob a forma de um grafo

Este sistema permite visualizar e consultar a explosatildeo combinatoacuteria das regras edas premissas que as compotildeem Este tipo de ferramenta pode ser bastante uacutetil quandoutilizado nas tarefas de validaccedilatildeo por parte do perito Desta forma o perito consegue deuma forma visual e simples verificar o relacionamento entre as conclusotildees e as premissas

441 Implementaccedilatildeo

Esta funcionalidade foi implementada recorrendo agrave utilizaccedilatildeo de um controlo externodesignado por TGGraphLayout e desenvolvido por Alexander Shapiro (2010) O controlodisponibiliza uma applet que encapsula funcionalidades que permitem a interacccedilatildeo graacuteficacom a representaccedilatildeo de um grafo

Por se tratar de uma applet a comunicaccedilatildeo com os managed beans torna-se tecnica-mente mais difiacutecil de implementar Esse motivo levou agrave necessidade de criaccedilatildeo de umaservlet para simplificar o processo de interacccedilatildeo entre a aplicaccedilatildeo e a applet do controlovisual

A servlet WexsysServlet foi criada para dar suporte agrave comunicaccedilatildeo com o mana-

ged bean WexsysKBBean sendo este responsaacutevel pela obtenccedilatildeo dos dados no formatoreconhecido pelo controlo

O controlo teve que ser alterado de forma a permitir a interacccedilatildeo com a servlet bemcomo efectuar o tratamento dos dados no formato especificado ou seja criar uma espeacuteciede protocolo de comunicaccedilatildeo

O algoritmo 4 resume a implementaccedilatildeo efectuada ao niacutevel da applet e o algoritmo 5demonstra de que forma esses dados satildeo obtidos

442 Funcionamento

O grafo resultante eacute construiacutedo a partir de uma posiccedilatildeo inicial designada por ponto departida Eacute utilizada a designaccedilatildeo ldquordquo para simplificar a identificaccedilatildeo no grafo eeacute possiacutevel ver o resultado da paacutegina inicial na figura 33

As conclusotildees satildeo representadas por rectacircngulos com um fundo branco e as premissassatildeo identificadas por rectacircngulos com fundo azul

79

CAPIacuteTULO 4 WEXSYS

Algoritmo 4 Algoritmo responsaacutevel pelo desenho da appletinput graphPaths graphConclusionsbegin drawGraph

initializeNodes ()for path isin graphPaths do

init oldfor step isin path do

if nodes do not contain step thenbuildNode (step)

endif step is first then

oldlarr stepelse

addEdge (old step)oldlarr step

endend

endcreateStartNode ()linkUnlinkedNodesToStartNode ()

end

O ponto de partida liga-se entatildeo agraves regras que apenas contenham premissas quesejam questotildees construindo o grafo de possibilidades Apoacutes identificar as regras quesatildeo representadas com ligaccedilatildeo ao ponto de partida satildeo tratadas as restantes regrasconstruindo o resto do grafo agrave medida que as regras satildeo avaliadas

Eacute possiacutevel centrar o grafo numa premissa ou numa conclusatildeo Ao centrarmos ografo satildeo mantidos apenas os noacutes que se ligam directamente ao noacute que seleccionaacutemosNo entanto eacute possiacutevel expandir um noacute sem este tipo de comportamento bastando paraisso utilizar as funcionalidades disponiacuteveis ao pressionar a tecla direita do rato sobre o

Figura 33 Paacutegina inicial da anaacutelise graacutefica

80

44 ANAacuteLISE GRAacuteFICA

Algoritmo 5 Algoritmo para construccedilatildeo dos dados do grafooutput graphPaths and grapConclusionsbegin retrieveGraphPathAndConclusions

questionslarr gatherQuestionfor rule isin rules do

isFinalRulelarr conclusaoFinal igual RHS de ruleif isFinalRule then

add rule to grapConclusionssimpleRulelarr truegraphPathslarr nullfor premissa isin ruleLHS do

isConditionAskablelarr questions contains premissaif isConditionAskable then

add premissa and value to graphPathselse

simpleRulelarr falseretrieveGraphFromAtom (premissa)add result to graphPaths

endend

endend

end

respectivo noacute As funcionalidades disponiacuteveis satildeo expandir colapsar esconder e centrare satildeo auto-descritivas pelo que dispensam qualquer explicaccedilatildeo do seu funcionamento

Figura 34 Exemplo de grafo totalmente expandido

Eacute possiacutevel utilizar esta funcionalidade para identificarmos um cenaacuterio especiacuteficopor exemplo para consultar quais as premissas necessaacuterias para a obtenccedilatildeo de umadeterminada soluccedilatildeo

81

CAPIacuteTULO 4 WEXSYS

Figura 35 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto

443 Limitaccedilotildees

Esta funcionalidade no seu estado actual apresenta algumas limitaccedilotildees Conveacutem referirantes de mais que esta soluccedilatildeo natildeo eacute uma alternativa ao motor de inferecircncia mas sim umaferramenta de apoio visual auxiliar ao mesmo

Das limitaccedilotildees existentes salientam-se as seguintes

bull a utilizaccedilatildeo deste controlo obriga a que o utilizador esteja familiarizado com aspremissas e os seus valores Natildeo estatildeo disponiacuteveis os textos de apoio para aspremissas da mesma forma que satildeo mostrados no motor de inferecircncia Umapossiacutevel soluccedilatildeo passaria pela interacccedilatildeo da applet com a servlet para atraveacutes domecanismo de ajax push despoletar a actualizaccedilatildeo da JSP mostrando o texto doelemento seleccionado

bull o tamanho dos noacutes eacute grande quando comparado com o espaccedilo disponiacutevel nocontrolo o que por vezes obriga a algumas sobreposiccedilotildees dos noacutes tornado-oimperceptiacutevel Este problema pode ser observado na figura 34 Para atenuar esteproblema existem controlos que permitem modificar o factor de ampliaccedilatildeo rodar ocontrolo e controlar o grau de visualizaccedilatildeo hiperboacutelica

bull apoacutes a navegaccedilatildeo no grafo perde-se de alguma forma o contexto que o originouEste problema pode ser observado na figura 35

82

5Conclusotildees

Ateacute que ponto eacute que um software consegue efectivamente substituir um ser humanoquando estamos a falar de raciociacutenio Se esse raciociacutenio for estritamente linear seguindoum determinado percurso com alguns desvios ao longo do mesmo que acabam por ditarum desfecho diferente consoante as decisotildees que vatildeo sendo tomadas a substituiccedilatildeo podemesmo ser efectiva e ateacute mesmo melhor em alguns casos

Um perito natildeo eacute no entanto algueacutem que se limita a dizer sim ou natildeo ou algueacutem queapenas decide se eacute necessaacuterio seguir por este caminho ou aquele Um perito normalmenteobserva dados e factos e infere sobre os mesmos tendo a sensibilidade para em muitasocasiotildees conseguir ateacute mesmo obter a soluccedilatildeo final muito antes de terminar a anaacutelise detodos os paracircmetros A isso chama-se conhecimento heuriacutestico natildeo linear afectada poruma enormidade de factores que apenas eacute possiacutevel encontrar num ser humano

Estes factores podem ter tanto de beneacutefico como de nocivo Ao natildeo analisar atotalidade dos dados um perito poderaacute incorrer num erro ou mesmo tendo-os analisadoateacute ao fim poderaacute natildeo ter estado completamente atento ou compenetrado no que estavaa fazer pelo mero facto de poder estar cansado ou indisposto para executar tal tarefanaquele preciso momento

Um sistema pericial pode realmente ser uma mais valia no sentido em que estaacutetotalmente desprovido de emoccedilotildees e fadiga ao contraacuterio de um ser humano Paraaleacutem disto natildeo eacute necessaacuterio temer que o sistema pericial se desloque a uma qualquerlocalizaccedilatildeo remota e de difiacutecil acesso ou que chegue fora do horaacuterio previsto limitadopelos atrasos de uma simples viagem

Todos estes factos podem realmente ser considerados quando analisamos o funciona-mento do GISPSA Efectivamente trata-se de um sistema pericial estaacute sempre disponiacutevele totalmente desprovido de caracteriacutesticas humanas que poderiam eventualmente toldaro raciociacutenio do mesmo No entanto este sistema carecia de algo muito importante a

83

CAPIacuteTULO 5 CONCLUSOtildeES

acessibilidade a partir de qualquer local em qualquer hora e por parte de vaacuterios utilizado-res em simultacircneo de modo imediato e sem preacute-aviso Antes de mais o GISPSA eacute umaaplicaccedilatildeo de execuccedilatildeo local e natildeo foi de todo desenvolvida para funcionamento em redeComo tal o acesso agrave mesma estava agrave partida bastante limitado Depois cada instalaccedilatildeoapenas permitia a interacccedilatildeo com um utilizador de cada vez Existem ainda algumaslimitaccedilotildees identificadas no GISPSA que foram ultrapassadas com o desenvolvimento dowexsys tais como manutenccedilatildeo da base de conhecimento capacidade de raciocinar sobreconhecimento incerto e a implementaccedilatildeo de meacutetodos de verificaccedilatildeo

Hoje em dia eacute possiacutevel aceder a uma rede global (a internet) a partir de qualquer pontodo planeta e isto torna igualmente possiacutevel disponibilizar uma aplicaccedilatildeo de forma a quequalquer pessoa a consiga utilizar a qualquer hora e a partir de qualquer local O wexsysaplica essa transformaccedilatildeo ao GISPSA e leva-o ao proacuteximo patamar evolutivo

Como qualquer evoluccedilatildeo tambeacutem esta pretende natildeo soacute dotar a nova versatildeo comfuncionalidades que a anterior natildeo possuiacutea como tambeacutem pretende melhorar e corrigiros problemas que eventualmente foram encontrados Ao longo do tempo de utilizaccedilatildeodo GISPSA verificaram-se algumas coisas que podiam e deviam ser substituiacutedas Aleacutemdisto a proacutepria evoluccedilatildeo dos sistemas graacuteficos e de interacccedilatildeo colocaram o GISPSAcomo uma aplicaccedilatildeo de visual jaacute algo ultrapassado aspecto que tambeacutem carecia de umarevisatildeo para a realidade mais actual

A opccedilatildeo pela incorporaccedilatildeo do wexsys num portal teve a ver com as grandes capacida-des que este tipo de infra-estuturas tem hoje em dia Impulsionados por empresas comoa IBM os portais web representam janelas de negoacutecio com ligaccedilatildeo ao mundo e com aspotencialidades que daiacute advecircm Caracteriacutesticas como a facilidade de acesso sistemas debackup manutenccedilatildeo de tempos de uptime elevados rapidez de funcionamento facilidadede funcionamento e leitura entre muitas outras representam uma mais valia para estetipo de alojamento de aplicaccedilotildees

51 Contributos da soluccedilatildeo desenvolvida

O grande objectivo a que este trabalho se propunha foi alcanccedilado e consistia na criaccedilatildeode um sistema pericial baseado no GISPSA mas que pudesse ser acedido a partir deuma rede tornando-o global Os restantes objectivos foram igualmente alcanccedilados e oresultado final mostra-se soacutelido e fiaacutevel para candidato efectivo agrave substituiccedilatildeo do sistemaque lhe daacute a base No entanto existem outros pontos positivos na soluccedilatildeo encontradaquando comparada com outros sistemas periciais jaacute referidos nos capiacutetulos anteriores

84

51 CONTRIBUTOS DA SOLUCcedilAtildeO DESENVOLVIDA

Esses sistemas satildeo o LOMA o MDSS e o Whale watcherAo proceder a uma comparaccedilatildeo com estes sistemas a soluccedilatildeo desenvolvida neste

trabalho apresenta algumas vantagens Desde logo estamos a falar de aplicaccedilotildees web

com periacuteodos de desenvolvimento diferentes o que implica a utilizaccedilatildeo de tecnologiasdiferentes A vantagem da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo mais recentes dinacircmi-cas eficazes e visualmente mais apelativas coloca o wexsys num patamar efectivamentesuperior Para aleacutem disso o wexsys pode (como resultado da utilizaccedilatildeo dessas mesmastecnologias) ser facilmente integrado noutras aplicaccedilotildees como webservices ou portaisenquanto que os outros sistemas natildeo

Outra das particularidades dos sistemas estudados eacute que natildeo possuem (de acordocom as respectivas documentaccedilotildees) mecanismos de verificaccedilatildeo de regras e sempre queeacute necessaacuterio proceder a alteraccedilotildees a essas mesmas regras o utilizador teraacute que ter umconhecimento profundo acerca da sintaxe utilizada (gramaacutetica riacutegida) Para aleacutem distotambeacutem natildeo possuem (com excepccedilatildeo do MDSS) suporte a vaacuterias liacutenguas

Jaacute quanto agrave questatildeo da capacidade de funcionamento multi-utilizador apesar deestarmos a falar de aplicaccedilotildees web os sistemas estudados neste documento natildeo estatildeopreparados para cargas de processamento demasiado elevadas porque natildeo foi contempladaa possibilidade de um funcionamento distribuiacutedo o que permitiria aliviar a carga deprocessos e aumentar o nuacutemero maacuteximo de utilizadores

Para descrever mais em detalhe os objectivos alcanccedilados com a soluccedilatildeo propostapassamos a enunciaacute-los

bull Criaccedilatildeo de uma aplicaccedilatildeo web - Ao criar a nova aplicaccedilatildeo a questatildeo da distribuiccedilatildeodessa mesma aplicaccedilatildeo atraveacutes de uma rede era fulcral jaacute que permitiria uma seacuteriede factores que ateacute aqui natildeo estavam disponiacuteveis A possibilidade de utilizaccedilatildeo deuma base de conhecimento global onde todos os utilizadores pudessem contribuirpara o seu melhoramento facilidade de acesso a partir de qualquer localizaccedilatildeodisponibilidade a qualquer hora e dia capacidade de realizaccedilatildeo de backups paragarantir a continuidade dos dados e muacuteltiplos acessos simultacircneos foram questotildeesque ficaram resolvidas com a concretizaccedilatildeo deste objectivo

bull Verificaccedilatildeo das regras - Uma das lacunas do sistema base o GISPSA era a faltade capacidade para realizar a verificaccedilatildeo das regras que era colocadas na basede conhecimento Era possiacutevel chegar a cenaacuterios de inconsistecircncia atraveacutes dacontradiccedilatildeo de regras podendo chegar a cenaacuterios em que simplesmente natildeo erapossiacutevel prosseguir com a inferecircncia das regras nem tatildeo pouco chegar a umaconclusatildeo ou soluccedilatildeo possiacutevel

85

CAPIacuteTULO 5 CONCLUSOtildeES

Ao adicionar um mecanismo de verificaccedilatildeo de regras como o foi neste caso assisti-mos natildeo soacute ao cumprimento de mais um objectivo mas tambeacutem a uma evoluccedilatildeosignificativa do novo sistema pericial que com esta caracteriacutestica se torna maisfiaacutevel e eficaz

bull Manutenccedilatildeo da base de conhecimento - Neste novo sistema eacute mais simples procederagrave actualizaccedilatildeo da base de conhecimento quer para adicionar alterar ou removerfactos na mesma Jaacute natildeo eacute necessaacuterio ter formaccedilatildeo sobre a sintaxe necessaacuteria pararealizar estas operaccedilotildees deixando de lado a rigidez que era necessaacuteria aplicarno sistema base Isto permite alargar o leque de utilizaccedilatildeo do sistema a outrosutilizadores que na versatildeo anterior natildeo teriam oportunidade para o fazer

bull Melhor usabilidade - Uma das grandes transformaccedilotildees para quem conhecia osistema anterior e encontra a nova versatildeo passa pelo aspecto visual Quando umutilizador eacute confrontado com uma aplicaccedilatildeo aquilo com que se depara eacute a parte deinteracccedilatildeo responsaacutevel por mediar o diaacutelogo entre o utilizador e a aplicaccedilatildeo per si

Quando uma aplicaccedilatildeo qualquer que ela seja possui um visual pouco atraente eapelativo para o utilizador com bototildees e janelas pouco interessantes componentesmal colocados atalhos escondidos e de difiacutecil percepccedilatildeo ou ateacute mesmo comcores pouco agradaacuteveis o utilizador acaba por seja de forma gradual ou imediataabandonar a aplicaccedilatildeo e mostra pouco interesse em voltar a utilizaacute-la a natildeo ser queseja efectivamente obrigado a fazecirc-lo

Neste trabalho atraveacutes da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo web tais comoJavascript e Ajax e ainda atraveacutes da utilizaccedilatildeo do Icefaces foi possiacutevel chegar aum visual considerado por muitos utilizadores como interessante e actual o que vaiplenamente de encontro ao objectivo proposto para este ponto

bull Multi-utilizador - Uma das grandes criacuteticas do sistema base tinha efectivamente aver com o facto de natildeo ser possiacutevel colocar mais do que um utilizador a trabalharao mesmo tempo Para tal ser possiacutevel seria necessaacuterio proceder agrave instalaccedilatildeo dosistema noutro computador e consequentemente adquirir outra licenccedila comercialde utilizaccedilatildeo

Ao adicionar a capacidade de vaacuterios utilizadores poderem estar a trabalhar nosistema em simultacircneo este objectivo verifica-se como estando cumprido na to-talidade pois natildeo apenas isso jaacute eacute possiacutevel neste novo sistema pericial como acapacidade de processamento natildeo eacute afectada jaacute que eacute possiacutevel proceder agrave colocaccedilatildeo

86

52 LIMITACcedilOtildeES E TRABALHO FUTURO

da aplicaccedilatildeo num sistema de clustering em caso de deacutefices ou carga excessiva deprocessamento

bull Sistema de explicaccedilotildees - A soluccedilatildeo proposta conteacutem um sistema de explicaccedilotildees quepode ser utilizado para obter explicaccedilotildees a perguntas do tipo ldquocomordquo e ldquoporquecircrdquoEste ponto natildeo representa uma melhoria mas sim a manutenccedilatildeo de uma funcionali-dade que o GISPSA jaacute disponibilizava

bull Anaacutelise graacutefica - Este moacutedulo eacute uma nova abordagem agrave anaacutelise de uma base deconhecimento que natildeo eacute normalmente utilizado nos sistemas periciais conhecidos eque possibilita uma anaacutelise visual facilitadora do comportamento e funcionamentoda nova soluccedilatildeo

bull Suporte a vaacuterias liacutenguas - A soluccedilatildeo proposta permite de uma forma bastantesimples a implementaccedilatildeo de novas linguagens A parte da soluccedilatildeo que envolveo sistema pericial e a parte da aplicaccedilatildeo web estatildeo preparados para esta tipo desuporte contudo a base de conhecimento natildeo contempla este mecanismo e teriaque ser implementado

bull Arquitectura - O tipo de arquitectura da soluccedilatildeo proposta permite uma simplesintegraccedilatildeo com outros tipos de aplicaccedilatildeo web como por exemplo webservices ouportais Possibilita ainda como jaacute referido a separaccedilatildeo da aplicaccedilatildeo de uma formamodular permitindo uma distribuiccedilatildeo ao niacutevel do processamento

bull Migraccedilatildeo - No processo de migraccedilatildeo da base de conhecimento foram detectados ecorrigidos alguns problemas Regras inconsistentes regras repetidas e regras quenatildeo trazem novo conhecimento foram adaptadas e resolvidas evoluindo a novabase de conhecimento para uma entidade mais fiaacutevel e consistente

52 Limitaccedilotildees e trabalho futuro

Este trabalho representa um esforccedilo no sentido de apresentar uma versatildeo melhorada dosistema GISPSA e apesar de o conseguir em muitos aspectos e essencialmente em todosaqueles que foram inicialmente propostos ficam alguns aspectos que ainda poderatildeo serimplementados futuramente e que certamente contribuiratildeo para um sistema ainda melhor

Assim apresentam-se as limitaccedilotildees identificadas e as perspectivas de trabalho futuro

87

CAPIacuteTULO 5 CONCLUSOtildeES

bull Validaccedilatildeo de regras - Apesar de ser jaacute possiacutevel neste novo sistema pericial procederagrave verificaccedilatildeo de regras como mecanismo de prevenccedilatildeo de redundacircncias e contradi-ccedilotildees ainda natildeo eacute possiacutevel a validaccedilatildeo por parte de um perito dessas mesmas regrasa natildeo ser que essa validaccedilatildeo seja feita em modo ad hoc

Seria importante a criaccedilatildeo de um modo lsquosupervisorrsquo ou modo lsquoperitorsquo paraque a aplicaccedilatildeo pudesse adoptar uma postura natildeo soacute de linguagem adaptada aum utilizador com maior formaccedilatildeo na aacuterea (como seraacute o caso de perito) mastambeacutem pudesse assumir uma postura de simulaccedilatildeo em que seriam apresentadosnatildeo soacute os passos tomados como eventuais cenaacuterios em caso de respostas diferentesIsto permitiria a um perito confrontar o seu proacuteprio conhecimento com o sistemapericial realizando desta forma uma validaccedilatildeo do funcionamento do sistema e dabase de conhecimento

Para aleacutem disto sendo uma aplicaccedilatildeo web o modo lsquosupervisorrsquo ou modo lsquope-ritorsquo poderia ser acedido a partir de qualquer siacutetio e a qualquer hora Se o responsaacute-vel pela validaccedilatildeo da base de conhecimento (normalmente o perito que contribuiucom o conhecimento) natildeo estiver disponiacutevel para o fazer por motivos de ausecircnciaou incompatibilidade de horaacuterios poderaacute sempre realizar o acesso agrave aplicaccedilatildeoa partir de um outro local agrave hora que mais lhe aprouver sem qualquer tipo deprejuiacutezo quer para o perito quer para o proacuteprio sistema

bull Muacuteltiplas conclusotildees - Com o trabalho desenvolvido apenas eacute possiacutevel atraveacutesdo disparo de uma regra final chegar a uma uacutenica conclusatildeo Deveria ser possiacutevelchegar a muacuteltiplas conclusotildees pelo que natildeo tendo sido implementado nesta versatildeoconsidera-se como uma possibilidade de trabalho futuro

Aparentemente sem qualquer relaccedilatildeo a necessidade evidenciada no ponto anteriorde criar um modo lsquosupervisorrsquo ou modo lsquoperitorsquo poderaacute levar um futurodesenvolvimento no sentido de criar as muacuteltiplas conclusotildees aqui referidas jaacute queao permitir este modo de funcionamento tambeacutem deveraacute ser possiacutevel inferir sobrevaacuterios cenaacuterios possiacuteveis e respectivas conclusotildees

bull Negaccedilatildeo de premissas - Nesta versatildeo do trabalho apenas eacute possiacutevel criar regrassem negaccedilatildeo Por exemplo num cenaacuterio em que uma pergunta ao utilizador tem aforma

Qual a cor (Vermelho Azul Verde)

e as regras que satildeo candidatas a disparo forem

88

52 LIMITACcedilOtildeES E TRABALHO FUTURO

R1 - SE cor Vermelho R2 - SE cor Azul R3 SE cor Verde

entatildeo natildeo eacute possiacutevel caso seja necessaacuterio ter uma regra do tipo

Rx - SE cor NOT XXXXX

Isso apenas seria possiacutevel se a pergunta inicial fosse

Qual NAtildeO Eacute a cor (Vermelho Azul Verde)

para assim permitir regras do tipo

Rx - SE NAtildeO Eacute cor XXXXX

Assim sendo aponta-se como uma limitaccedilatildeo e eventual trabalho futuro a desenvol-ver para outras versotildees da aplicaccedilatildeo a criaccedilatildeo de um sistema que permita a negaccedilatildeode premissas para que o exemplo atraacutes indicado seja de possiacutevel implementaccedilatildeo

bull Contemplar factos iniciais nas regras - A versatildeo actual do sistema natildeo permite ainclusatildeo de factos inicias nas premissas das regras

bull Pesquisa de muacuteltiplas soluccedilotildees finais - Actualmente soacute eacute permitido executar omotor de inferecircncia com uma soluccedilatildeo final como objectivo Seria uma evidentemais valia a inclusatildeo da capacidade de pesquisa por muacuteltiplas soluccedilotildees

bull Metaconhecimento - ao ser adicionado metaconhecimento podemos aumentar odesempenho do motor de inferecircncia nos cenaacuterios em que temos bases de conheci-mento consideravelmente grandes

bull Regra mais relevante para iniciar o motor de inferecircncia - desenvolver um algoritmopara obter uma regra que tenha uma maior probabilidade de sucesso de forma aminimizar iteraccedilotildees desnecessaacuterias

bull Validaccedilatildeo automaacutetica - quando as questotildees satildeo apagadas deve ser realizada arespectiva verificaccedilatildeo de utilizaccedilatildeo dessas questotildees como condiccedilotildees de regras paraprevenir possiacuteveis inconsistecircncias

bull Suporte a vaacuterias liacutenguas - a base de conhecimento natildeo foi projectada para imple-mentar esta funcionalidade

89

Bibliografia

Acquired Intelligence (2010) Acquire httpwwwaiincca Junho de 201025

Alexander Shapiro (2010) Tggraphlayout httpsourceforgenet

projectstouchgraph Julho de 2010 49 79

Barnett J A (1991) Calculating dempster-shafer plausibility IEEE Transactions on

Pattern Analysis and Machine Intelligence 13 599ndash602 16

Boris van Schooten (2005) Yprolog httpwwwvfutwentenl

~schootenyprolog Junho de 2010 37

Carlos Figueira Filho (2010) JEOPS - Integraccedilatildeo entre Objetos e Regras de Produccedilatildeoem Java httpwwwcinufpebr~jeops Julho de 2010 36

CoAJRA J (1997) The basics of expert (knowledge based) systems 18

Dokas I M (2005) Developing web sites for web based expert systems A webengineering approach In In Proceedings of the Second International ICSC Symposium

on Information Technologies in Environmental Engineering (Magdeburg pages 202ndash217 Shaker Verlag 26

Drakopoulos J (1994) Probabilities possibilities and fuzzy sets Fuzzy Sets and

Systems 75 1ndash15 16

Elie Levy (2010) Zilonis httpwwwzilonisorgindexphp Junho de2010 37

Ernest Friedman-Hill (2010) Jess httpwwwjessrulescom Julho de 201025 36

EXSYS (2010) Exsys corvid httpwwwexsyscom Junho de 2010 24

Filho A R (2010) Mdss medical diagnosis support system LPA - Logic ProgrammingAssociates Ltd 30

Giarratano C J Riley and D G (1998) Expert Systems - Principles and Programming

Thirds Edition Principles and Programing Course Technology 3ed edition 6 18

91

BIBLIOGRAFIA

Hammurapi Group (2010) Hammurapi rules httpwwwhammurapicom

dokuwikidokuphp Junho de 2010 36

Heckerman D (1992) The certainty-factor model 16

IBM (2010) Jlog httpwww-01ibmcomsoftwarewebsphere

productsbusiness-rule-management Junho de 2010 36

Kozlenkov Alex and Paschke (2010) Prova rule language httpprovaws

indexhtml Junho de 2010 37

Logic Programming Associaties Ltd (2010) Lpa webflex httpwwwlpacouk Abril de 2010 24

Lucas P (2001) Certainty-factor-like structures in bayesian belief networks Knowledge-

Based Systems 14 327ndash335 16

Maarten Menken (2010) Jclips httpsourceforgenetprojects

jclips Julho de 2010 25 36

Mcarniel (2010) Jruleengine httpjruleenginesourceforgenet

indexhtml Junho de 2010 37

Merritt D (1989) Building expert systems in Prolog 6 56

Michael Giordano (2010) Webclips httpclipsinterfacesourceforgenetWebCLIPSwchomehtm 28 de Julho de 2003 24

OpenL (2010) Openl tablets httpopenl-tabletssourceforgenetJulho de 2010 37

OpenRules Inc (2010) Open rules engine httpopenrulescomindex

htm Julho de 2010 37

Pinto A (1998) GISPSA - GIS problem solver adviser 1 20

RedHat (2010) Drools httpwwwjbossorgdroolsdrools-experthtml Junho de 2010 36

Shortliffe E H and Buchanan B G (1990) A model of inexact reasoning in medicinepages 259ndash275 16

Wilson N (2000) Algorithms for dempster-shafer theory In Algorithms for Uncertainty

and Defeasible Reasoning pages 421ndash475 Kluwer Academic Publishers 16

92

Anexos

93

ACoacutedigo do motor de inferecircncia

Iniacutecio do motor de inferencia

init_inference- retractall(hist2) consult(rsquokbsyplrsquo)

top_goals(ControlObj MinCF) - top_goal(TopGoal) top(TopGoal ControlObj MinCF)

top(TopGoal ControlObj MinCF) - retractall(hist2) set(len 0)

getRuleMoreRelevant(TopGoal Rule) tryToProove(Rule ControlObj MinCF)

tryToProove(Rule ControlObj MinCF)- rule(Rule _ lhs(LHS) _)

proveListHyp(LHS ControlObj MinCF)get(len LEN)println(LEN)

LEN1 is LEN + 1assert(hist(LEN1Rule))println(LEN1)

set(len LEN1)

(

check if rule has return control object

(var(ControlObj)) -gt(

no control object found check if other rules needs to be fired

fireRules(ControlObj MinCF)

)(

control object found

true

)

)

proveListHyp([] ControlObj MinCF)

proveListHyp([H|T] ControlObj MinCF)-proveHyp(H ControlObj MinCF)

((var(ControlObj)) -gt (proveListHyp(T ControlObj MinCF))(true))

fact already known

proveHyp(H ControlObj MinCF)- H = ev(X Y) fact(X Y_ )

there is a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _)

not(fact(X _ _))question(X _ _ _)

not(not_question(X))ControlObj = ask(X)

95

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

there is a conclusion that can lead to a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _) rule(Rule _ lhs(LHS)

rhs(ev(X_) V))

tryToProove(Rule ControlObj MinCF)

ADD A FACT

av(Attr Value Confidence ControlObj MinCF) - retractall(hist2)set(len 0)

saveFact(Attr Value Confidence 1 CF_FINAL _)

fireRules(ControlObj MinCF)

nav(Attr)-assert(not_question(Attr))

fireRules(ControlObj MinCF)- rule(X _ lhs(LHS) rhs(ev(Y R) Conf))

not(inf_rules_fired(X_)) evaluate(LHS ConfLhs 1)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF)

get(len LEN) LEN1 is LEN + 1 assert(hist(LEN1Rule))

set(len LEN1)

(

(var(ControlObj)) -gt(

(top_goal(Y)) -gt (

ControlObj = answerFound(Y R ConfRet)

)(

true fireRules(ControlObj MinCF)

))(

true

)

)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF) -

calculateConfidence(ConfLhs Conf ConfRet)

ConfRet gt MinCF

saveFact(Y R ConfRet 2 CF_FINAL X)

assert(inf_rules_fired(X ConfRet))

evaluate([] [] 1)- true

evaluate([H|T] [FactConf|LConf] RetCode)-

H = ev(X Ans)fact(X Ans FactConf)

evaluate(T LConf RetCode)

calculateConfidence(ConfLhs RuleCF ResultCF)-min_in_list(ConfLhs MinLHSCF)

ResultCF is MinLHSCF RuleCF 100

min_in_list([Min]Min)

min_in_list([HK|T]M) - H lt= K min_in_list([H|T]M)

min_in_list([HK|T]M) - H gt K min_in_list([K|T]M)

1 - fornecido 2 - inferido

we have a fact saved with the same conclusion already

96

saveFact(Attr Value Confidence Mode CF_Final Rule)-

fact(Attr Value OldConfidence)

combine(OldConfidence Confidence CF_Final)

retract(fact(Attr Value OldConfidence))

retract(inf_sys_fact(Attr Value OldConfidence _))

assert(fact(Attr Value CF_Final))

assert(inf_sys_fact(Attr Value CF_Final Mode))

linkFactToRule(Rule Attr Value Mode)

we donrsquot have any fact saved

saveFact(Attr Value Confidence Mode Confidence Rule)-

assert(fact(Attr Value Confidence))

assert(inf_sys_fact(Attr Value Confidence Mode))

linkFactToRule(Rule Attr Value Mode)

linkFactToRule(___1)

linkFactToRule(RuleAttrValue2)-

inf_exp_how(Attr Value oldRules)

retract(inf_exp_how(Attr Value oldRules))

assert(inf_exp_how(Attr Value [Rule|oldRules]))

linkFactToRule(RuleAttrValue2)-

assert(inf_exp_how(Attr Value [Rule]))

println(rsquosaved line with information on explanation howrsquo) listing

combine(CF1 CF2 CF) - CF1 gt= 0 CF2 gt= 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CF is CF1 + Calc

combine(CF1 CF2 CF) - CF1 lt 0 CF2 lt 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CFAux is CF1 + Calc CF is 0-CFAux

combine(CF1 CF2 CF) - (CF1 lt 0 CF2 lt 0) (CF1 gt 0 CF2 gt 0)

SumCFs is CF1 + CF2 abs_minimum(CF1 CF2 MCF)

Rest is 100 - MCFCF is 100 SumCFs Rest

abs_minimum(ABX) - absolute(A AA) absolute(B BB)minimum(AABBX)

absolute(X X) -X gt= 0

absolute(X Y) -X lt 0Y is 0-X

minimum(XYX) -X lt= Y

minimum(XYY) -Y lt= X

Rule verification

verification(L)-retractall(validation_fired1)

retractall(verification_error4)set(nextid 0)

findall(IDverification_rule_1(ID _ _ _)L)

verification_rule_1(ID RuleInError RuleRelated Result)-

rule(A _ lhs(CA) RA)rule(B _ lhs(CB) RB)

not( B = A)not(validation_fired(B))

checkConditionsSimilar(CA CB FullMatch)

checkResultSimilar(FullMatch RA RB Result)

assert(validation_fired(B))

97

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

get(nextid CURR_ID)ID is CURR_ID + 1

set(nextid ID)

assert(verification_error(ID B A Result))

RuleInError = B RuleRelated = A

checkConditionsSimilar(CA CB FullMatch)-checkConditionsSimilar_1(CACB)

lent(CA X) lent(CB Y) testCheck(X Y FullMatch)

testCheck(X X 1)

testCheck(X Y 0)- not(X = Y)

checkConditionsSimilar_1([] L)

checkConditionsSimilar_1([H|R] L)- member(H L) checkConditionsSimilar_1(R L)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueB) CFB) 2)-

not(ValueA = ValueB)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueA) CFB) 2)

checkResultSimilar(0 rhs(ev(Atom Value) CFA) rhs(ev(Atom Value) CFB) 1)-

CFB lt= CFA

lent([] 0)

lent([_|R] SizeT)- lent(R Size)SizeT is Size + 1

Rule verification

retrieve_rules(L)-

findall(X rule(X _ __) L)

retrieve_questions(L)-

findall(X question(X ___) L)

Information predicates

inf_sys(L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)-

i_sys_rules(L_Rules)i_sys_inf_fact(L_Inf_Facts)

i_sys_know_fact(L_Know_Facts) i_sys_init_fact(L_Init_Facts)

i_sys_rules(L)-

findall(r(Rule Conf) inf_rules_fired(Rule Conf) L) member(C L)

i_sys_rules([])

i_sys_inf_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 2) L) member(C L)

i_sys_inf_fact([])

i_sys_know_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 1) L) member(C L)

i_sys_know_fact([])

98

i_sys_init_fact(L)-

findall(f(Attr Value Conf) condition_init(Attr Value Conf) L) member(C L)

i_sys_init_fact([])

condition_init(Attr Value Conf)-fact(Attr Value Conf)

not(inf_sys_fact(Attr _ _ _))

explanations

why(L)-findall(r(OX) hist(OX) L)

how(Attr Value Result)- inf_exp_how(Attr Value Rules)

explainHow(Rules Explanation)append(Rules Explanation Result)

explainHow([] [])

explainHow([H|T] Result)- innerExplain(H ExplanationH)

explainHow(T ExplanationRules) append(ExplanationH ExplanationRules Result)

innerExplain(Rule Explanation)- rule(Rule _ lhs(LHS) _)

explainLHS(LHS Explanation)

explainLHS([] [])

explainLHS([ev(Attr Value)|T] ExplanationA)-

not(inf_exp_how(Attr Value _))

fact(Attr Value _) print(rsquoinitial factrsquo)

explainLHS(T ExplanationA)

explainLHS([ev(Attr Value)|T] ResultA)-

how(Attr Value ExplanationA)

explainLHS(T Explanation)

append(ExplanationA Explanation ResultA)

append([] L L)

append(L [] L)

append([H|T] M [H|N])-append(L M N)

Map methods

buildValidationReport(Id RErr RRel ErrType)-

verification_error(Id RErr RRel ErrType)

buildQuestionObject(ask(X) X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

buildQuestionObject_by_code(X X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

99

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

buildSolutionObject(answerFound(Y R Found) Y R Found)

buildRuleObject(Rule Descr LHS RHS CF)-

rule(Rule Descr lhs(I_LHS) rhs(I_RHS CF))

lhs_flatten(I_LHS LHS)

rhs_flatten(I_RHS RHS)

flatten(L LO)- iflatten(L LO)

iflatten([] [])

iflatten([H|R] [AD|L])- H = answer(A D) iflatten(R L)

lhs_flatten(L LO)- ilhs_iflatten(L LO)

ilhs_iflatten([] [])

ilhs_iflatten([H|R] [[ADCB]|L])-H = ev(A D)question(A C LL _)

findMember(LLDB)ilhs_iflatten(R L)

ilhs_iflatten([H|R] [[ADAD]|L])-H = ev(A D)not(question(A _ _ _))

ilhs_iflatten(R L)

rhs_flatten(ev(AB) [AB])

findMember([] D D)-

findMember([H|T] D B)-H = answer(D B)

findMember([H|T] D B)-findMember(T D B)

attempt to Get more relevant rule

getRuleMoreRelevant(TopGoal Rule)-

rule(Rule_ _ rhs(ev(P V) X)) top_goal(P)

find the rules that contains a direct solution

findall(X rule(X lhs(LLHS) rhs(ev(TopGoal _)_)) LX)

debugLine(trc1rsquogtrsquo)debugList(LX)

For the main rules apply the algorithm

fillMainRules(LX LOUT)

bubble_sort(LOUT LREALLYOUT)

LREALLYOUT = [ score_table(Rule _ _ _) | _ ]

debugLine(trc1rsquogtrsquo)debugList(LREALLYOUT)

fillMainRules([] [])-

fillMainRules([HIN|RIN] [HOUT|LOUT])- calculateCurrentRule(HIN HOUT)

fillMainRules(RIN LOUT)

calculateCurrentRule(HIN HOUT)-rule(HIN _ lhs(LHS) rhs(_ Confidence))

calculateScoreBasedOnLHS(LHS 0 Score)

OrderIndice is Score Confidence

HOUT = score_table(HIN Score Confidence OrderIndice)

calculateScoreBasedOnLHS([] ScoreResult ScoreResult)-

100

calculateScoreBasedOnLHS([HLHS|RLHS] Score ScoreResult)-

calculateScoreBasedOnLHSCurrent(HLHS Score ScoreAfter)

calculateScoreBasedOnLHS(RLHS ScoreAfter ScoreResult)

calculateScoreBasedOnLHSCurrent(ev(X _) Score ScoreAfter)-

question(X _ _ _) not(fact(X _ _))

ScoreAfter is Score + 1

calculateScoreBasedOnLHSCurrent(ev(X _) Score Score)-

helper methods

bubble_sort(ListSorted)-b_sort(List[]Sorted)

b_sort([]AccAcc)

b_sort([H|T]AccSorted)-bubble(HTNTMax)b_sort(NT[Max|Acc]Sorted)

bubble(X[][]X)

bubble(X[Y|T][Y|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C lt= D bubble(XTNTMax)

bubble(X[Y|T][X|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C gt Dbubble(YTNTMax)

bubble_sort2(ListSorted)-b_sort2(List[]Sorted)

b_sort2([]AccAcc)

b_sort2([H|T]AccSorted)-bubble2(HTNTMax)b_sort2(NT[Max|Acc]Sorted)

bubble2(X[][]X)

bubble2(X[Y|T][Y|NT]Max)- X = r(D _) Y = r(C _) C lt= D bubble(XTNTMax)

bubble2(X[Y|T][X|NT]Max)- X = r(D _) Y = r(C _) C gt Dbubble(YTNTMax)

Allows to get a Bag of all the X that makes Goal evaluate to true

Bag can contain duplicated X

findall(XGoalBag) - post_it(XGoal) gather([]Bag)

Aux

post_it(XGoal) - call(Goal) asserta(data999(X)) fail

post_it(__)

gather(BBag) - data999(X) retract(data999(X)) gather([X|B]Bag)

gather(SS)

member(X[X|_])-

member(X[_|Y]) - member(XY)

101

BBase de conhecimento do protoacutetipo

question(turn_over rsquoO carro ligarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(lights_weak rsquoAs luzes estatildeo fracasrsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(radio_weak rsquoO raacutedio estaacute fracorsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(smell_gas rsquoCheira a gasolinarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(gas_gauge rsquoO que marca o ponteiro do depoacutesito da gasolinarsquo

[ answer(empty rsquoVaziorsquo) answer(high rsquoSuficientersquo) answer(low rsquoReservarsquo)]0)

rule(rule_1 rsquoRule 1rsquolhs([ev(turn_over no) ev(battery_bad yes)])

rhs(ev(problem battery) 100))

rule(rule_2 rsquoRule 2rsquolhs([ev(lights_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_3 rsquoRule 3rsquolhs([ev(radio_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_4 rsquoRule 4rsquolhs([ev(smell_gas yes) ev(turn_over yes)])

rhs(ev(problem flooded) 80))

rule(rule_5 rsquoRule 5rsquolhs([ev(turn_over yes) ev(gas_gauge empty)])

rhs(ev(problem out_of_gas) 90))

rule(rule_6 rsquoRule 6rsquolhs([ev(turn_over yes) ev(gas_gauge low)])

rhs(ev(problem out_of_gas) 30))

rule(rule_7 rsquoRule 7rsquolhs([ev(gas_gauge low)ev(turn_over yes)])

rhs(ev(problem out_of_gas) 30))

103

ANEXO B BASE DE CONHECIMENTO DO PROTOacuteTIPO

rule(rule_8 rsquoRule 8rsquo

lhs([ev(turn_over yes) ev(gas_gauge low) ev(smell_gas no)])

rhs(ev(problem out_of_gas) 30))

top_goal(problem)

104

CBase de conhecimento GISPSA

question(qs_tema_ger rsquoQual o tipo de Problemarsquo

[ answer(c_ger_map rsquoMapas Configuraacuteveisrsquo) answer(c_ger_inq rsquoInqueacuteritos e Listagensrsquo)

answer(c_ger_mov rsquoCGMOVIGrsquo) answer(c_ger_pla rsquoCGDCGERrsquo)

answer(c_ger_acm rsquoCGVACUMCGTACUMrsquo)]0)

question(qs_plareg rsquoA Conta tem regra de construcccedilatildeo associada rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipr rsquoExiste Conta Pai do Tipo R no Planorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaent rsquoConta aberta por entidadesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipa rsquoConta do Tipo Arsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plalim rsquoEntidade encontra-se nos limitesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaexis rsquoEntidade Existentersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plamix rsquoContas Valor entre Contas Movimentorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acumul rsquoQual o problema de acumuladosrsquo

[ answer(c_acm_avm rsquoCGVACUM ltgt CGMOVIGrsquo)

answer(c_acm_si rsquoSaldos Iniciaisrsquo)

answer(c_acm_cna rsquoContas Nao Acumulamrsquo)

answer(c_acm_avat rsquoCGVACUM ltgt CGTACUMrsquo)]0)

question(qs_incmov rsquoInconsistecircncias no CGMOVIGrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

105

ANEXO C BASE DE CONHECIMENTO GISPSA

question(qs_incpla rsquoInconsistecircncias no CGDCGERrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acmsia rsquoSaldos Iniciais Alteradosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movi rsquoQual o problema dos movimentosrsquo

[ answer(c_mov_lan rsquoLanccedilamentos nao balanceadosrsquo)

answer(c_mov_con rsquoProblema de Contasrsquo)

answer(c_mov_cgca rsquoMovimentos CG ltgt CArsquo)]0)

question(qs_movvdif rsquoValores CG gt CArsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlgca rsquoCC Ligados a Analiticarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlg100 rsquoTodas as Ligacoes a 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movm100 rsquoDiferencas Correspondem a CC com Mais de 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcna rsquoLancamento em Contas nao Existentesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movci rsquoLancamento em Contas Invalidasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcdf rsquoContas correctasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_inquer rsquoInqueacuterito ou listagemrsquo

[ answer(c_inq_bal rsquoBalancetersquo) answer(c_inq_dia rsquoExtractoDiariorsquo)]0)

question(qs_inqsal rsquoProblema de saldosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapa rsquoProblema dos mapasrsquo

[ answer(c_map_imp rsquoErro na Impressaorsquo) answer(c_map_cal rsquoErro no Calculorsquo)

answer(c_map_mic rsquoErro na Transferencia P Microrsquo)]0)

question(qs_mapcol0 rsquoA ultima linha calculada tem a coluna 0 configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapfunc

rsquoA ultima linha calculada apresenta colunas com funcoes invalidas ou sintaxe erradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin0 rsquoA Linha 000 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin9 rsquoA Linha 999 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

106

question(qs_map2alg rsquoTodos os Valores da Linha 999 tem 2 Algarismosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_map198 rsquoA Soma dos Valores da Linha 999 Ultrapassa 198rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapsys rsquoO Sistema Permite a Utilizacao de Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapuser rsquoO Utilizador Tem Acesso a Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapflr rsquoO Folder Existersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

rule(r_pla_1 r_pla_1lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plareg c_sim)])

rhs(ev(dominio d_pla_reg) 100)

)

rule(r_pla_2 r_pla_2lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plaent c_sim)])

rhs(ev(dominio d_pla_ent) 100)

)

rule(r_pla_3 r_pla_3lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plamix c_sim)])

rhs(ev(correccao cr_pla_mix) 100)

)

rule(r_pla_11 r_pla_11lhs([ev(dominio d_pla_reg) ev(qs_platipr c_nao)])

rhs(ev(correccao cr_pla_tipr) 100)

)

rule(r_pla_21 r_pla_21lhs([ev(dominio d_pla_ent) ev(qs_platipa c_nao)])

rhs(ev(correccao cr_pla_tipa) 100)

)

rule(r_pla_22 r_pla_22lhs([ev(dominio d_pla_ent) ev(qs_plalim c_nao)])

rhs(ev(correccao cr_pla_lim) 100)

)

rule(r_pla_23 r_pla_23lhs([ev(dominio d_pla_ent) ev(qs_plaexis c_nao)])

rhs(ev(correccao cr_pla_exis) 100)

)

rule(r_acm_1 r_acm_1

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_2 r_acm_2

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_3 r_acm_3

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_4 r_acm_4

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_5 r_acm_5

107

ANEXO C BASE DE CONHECIMENTO GISPSA

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_6 r_acm_6

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_7 r_acm_7

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_si) ev(qs_acmsia c_nao)])

rhs(ev(correccao cr_acm_si) 100)

)

rule(r_mov_1 r_mov_1lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_lan)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_2 r_mov_2lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_cgca)])

rhs(ev(dominio d_mov_cgca) 100)

)

rule(r_mov_21 r_mov_21lhs([ev(dominio d_mov_cgca) ev(qs_movvdif c_sim)])

rhs(ev(subdominio d_mov_cgca_1) 100)

)

rule(r_mov_22 r_mov_22lhs([ev(dominio d_mov_cgca) ev(qs_movm100 c_sim)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_23 r_mov_23lhs([ev(dominio d_mov_cgca)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_3 r_mov_3lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_con)])

rhs(ev(dominio d_mov_con) 100)

)

rule(r_mov_31 r_mov_31lhs([ev(dominio d_mov_con) ev(qs_movcna c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_32 r_mov_32lhs([ev(dominio d_mov_con) ev(qs_movci c_nao)])

rhs(ev(correccao cr_mov_inc_soft) 100)

)

rule(r_mov_33 r_mov_33lhs([ev(dominio d_mov_con) ev(qs_movcdf c_nao)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_34 r_mov_34lhs([ev(dominio d_mov_con)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_211 r_mov_211lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlgca c_nao)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_212 r_mov_212lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlg100 c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_213 r_mov_213lhs([ev(subdominio d_mov_cgca_1)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_inq_1 r_inq_1lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inquer c_inq_bal)])

rhs(ev(correccao cr_inq_bal) 100)

)

rule(r_inq_2 r_inq_2lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inqsal c_sim)])

108

rhs(ev(correccao cr_inq_dia) 100)

)

rule(r_map_1 r_map_1lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_cal)])

rhs(ev(dominio d_map_cal) 100)

)

rule(r_map_2 r_map_2lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_imp)])

rhs(ev(dominio d_map_imp) 100)

)

rule(r_map_3 r_map_3lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_mic)])

rhs(ev(dominio d_map_mic) 100)

)

rule(r_map_11 r_map_11lhs([ev(dominio d_map_cal) ev(qs_mapcol0 c_sim)])

rhs(ev(correccao cr_map_cal_col0) 100)

)

rule(r_map_12 r_map_12lhs([ev(dominio d_map_cal) ev(qs_mapfunc c_sim)])

rhs(ev(correccao cr_map_cal_func) 100)

)

rule(r_map_13 r_map_13lhs([ev(dominio d_map_cal)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_21 r_map_21lhs([ev(dominio d_map_imp) ev(qs_maplin0 c_nao)])

rhs(ev(correccao cr_map_imp_lin0) 100)

)

rule(r_map_22 r_map_22lhs([ev(dominio d_map_imp) ev(qs_maplin9 c_nao)])

rhs(ev(correccao cr_map_imp_lin9) 100)

)

rule(r_map_23 r_map_23lhs([ev(dominio d_map_imp) ev(qs_map2alg c_nao)])

rhs(ev(correccao cr_map_imp_2alg) 100)

)

rule(r_map_24 r_map_24lhs([ev(dominio d_map_imp) ev(qs_map198 c_nao)])

rhs(ev(correccao cr_map_imp_198) 100)

)

rule(r_map_25 r_map_25lhs([ev(dominio d_map_imp)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_31 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapsys c_nao)])

rhs(ev(correccao cr_map_sys) 100)

)

rule(r_map_32 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapuser c_nao)])

rhs(ev(correccao cr_map_user) 100)

)

rule(r_map_33 r_map_33lhs([ev(dominio d_map_mic) ev(qs_mapflr c_nao)])

rhs(ev(correccao cr_map_mic_flr) 100)

)

rule(r_map_34 r_map_34lhs([ev(dominio d_map_mic)])

rhs(ev(correccao cr_map_soft) 100)

)

top_goal(correccao)

109

  • Lista de Figuras
  • Lista de Tabelas
  • Lista de Coacutedigo
  • Lista de Algoritmos
  • Lista de Acroacutenimos
  • Introduccedilatildeo
    • Enquadramento
    • Objectivos
    • Planeamento
    • Estruturaccedilatildeo da dissertaccedilatildeo
      • Estado da arte
        • Sistemas periciais
          • Arquitectura
          • Base de conhecimento
            • Regras
            • Frames
            • Redes semacircnticas
            • Mecanismos de inferecircncia
            • Manutenccedilatildeo de uma base de conhecimento
              • Raciociacutenio sobre incerteza
                • Factores de certeza
                  • Vantagens e desvantagens
                    • GISPSA - GIS Problem Solver Advisor
                      • Arquitectura
                      • Funcionamento
                      • Limitaccedilotildees
                        • Web Expert Systems
                          • Casos de estudo
                            • LOMA - Landfill Operation Management Advisor
                            • MDSS - Medical Diagnosis Support System
                            • Whale watcher
                              • Ferramentas utilizadas
                                • Ambiente de desenvolvimento
                                • Motor de inferecircncia
                                  • Fase I - Recolha de candidatos
                                  • Fase II - Requisitos base
                                  • Fase III - Viabilidade econoacutemica
                                  • Fase IV - Viabilidade teacutecnica
                                  • Fase V - Prova de conceito
                                  • Conclusatildeo e fundamentaccedilatildeo da escolha
                                      • Wexsys
                                        • Arquitectura global
                                          • Moacutedulo pWexsysEAR
                                          • Moacutedulo WexsysEAR
                                          • Interligaccedilatildeo e integraccedilatildeo dos moacutedulos
                                            • Camada de acesso puacuteblico
                                            • Camada de acesso protegido
                                            • Camada de acesso privado
                                            • Fluxo de invocaccedilatildeo
                                              • Portal
                                                • Templates
                                                  • Suporte multi-liacutengua
                                                    • Motor de inferecircncia
                                                      • Multi-utilizador
                                                      • Base de conhecimento inicial
                                                      • Protoacutetipo do motor de inferecircncia
                                                        • Formato das regras
                                                        • Formato das questotildees
                                                        • Interacccedilatildeo assiacutencrona de questotildees e respostas
                                                        • Estrutura da base de conhecimento
                                                        • Algoritmos a utilizar
                                                          • Resultado final
                                                            • Arranque da execuccedilatildeo
                                                            • Mecanismo de respostas
                                                            • Conclusatildeo final encontrada
                                                            • Explicaccedilotildees
                                                                • Base de conhecimento
                                                                  • Leitura da base de conhecimento
                                                                  • Conclusatildeo final a encontrar
                                                                  • Factos iniciais
                                                                  • Regras
                                                                    • CriarAlterar uma regra
                                                                    • Questotildees
                                                                    • Verificaccedilatildeo
                                                                      • Gravaccedilatildeo da base de conhecimento
                                                                      • Conversatildeo GISPSA
                                                                        • Anaacutelise graacutefica
                                                                          • Implementaccedilatildeo
                                                                          • Funcionamento
                                                                          • Limitaccedilotildees
                                                                              • Conclusotildees
                                                                                • Contributos da soluccedilatildeo desenvolvida
                                                                                • Limitaccedilotildees e trabalho futuro
                                                                                  • Bibliografia
                                                                                  • Anexos
                                                                                  • Coacutedigo do motor de inferecircncia
                                                                                  • Base de conhecimento do protoacutetipo
                                                                                  • Base de conhecimento GISPSA
Page 8: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System

4242 Mecanismo de respostas 654243 Conclusatildeo final encontrada 674244 Explicaccedilotildees 67

43 Base de conhecimento 71431 Leitura da base de conhecimento 72432 Conclusatildeo final a encontrar 73433 Factos iniciais 74434 Regras 74

4341 CriarAlterar uma regra 744342 Questotildees 764343 Verificaccedilatildeo 77

435 Gravaccedilatildeo da base de conhecimento 77436 Conversatildeo GISPSA 78

44 Anaacutelise graacutefica 79441 Implementaccedilatildeo 79442 Funcionamento 79443 Limitaccedilotildees 82

5 Conclusotildees 8351 Contributos da soluccedilatildeo desenvolvida 8452 Limitaccedilotildees e trabalho futuro 87

Bibliografia 92

Anexos 93

A Coacutedigo do motor de inferecircncia 95

B Base de conhecimento do protoacutetipo 103

C Base de conhecimento GISPSA 105

xiii

Lista de Figuras

1 Arquitectura de um sistema pericial 82 GISPSA menu inicial 213 GISPSA interacccedilatildeo inicial 224 GISPSA exemplo de interacccedilatildeo pergunta-resposta 225 Arquitectura do LOMA 276 Paacutegina inicial do sistema pericial LOMA 287 Sub-moacutedulo extra 288 Sugestatildeo de problemas do sub-moacutedulo extra 299 Sub-moacutedulo especializado 2910 Paacutegina principal do sistema pericial Whale Watcher 3111 Paacutegina final do sistema pericial Whale Watcher 31

12 Arquitectura da soluccedilatildeo 4413 Arquitectura do moacutedulo visual 4414 Arquitectura do moacutedulo de negoacutecio 4515 Wexsys - Integraccedilatildeo dos componentes 4616 Diagrama de classes principais 4917 Diagrama de sequecircncia do fluxo de invocaccedilatildeo 5018 Wexsys - Paacutegina inicial 5119 Paacutegina inicial do motor de inferecircncia 6220 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia 6321 Fluxo de invocaccedilatildeo de resposta a uma questatildeo 6622 Conclusatildeo da inferecircncia 6723 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo 6824 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia 6925 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final 6926 Paacutegina inicial da gestatildeo da base de conhecimento 7227 Processo de carregamento das regras 7328 Introduzir uma nova regra 7529 Apresentaccedilatildeo de valores configurados na questatildeo 7630 Formulaacuterio de introduccedilatildeo de uma questatildeo 7631 Verificaccedilatildeo da base de conhecimento 7732 Processo de gravaccedilatildeo da base de conhecimento 7833 Paacutegina inicial da anaacutelise graacutefica 80

xv

34 Exemplo de grafo totalmente expandido 8135 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto 82

xvi

Lista de Tabelas

1 Listagem de produtos da Fase I 362 Listagem de produtos excluiacutedos na Fase II 383 Listagem de produtos excluiacutedos na Fase III 384 Listagem de produtos excluiacutedos na Fase IV 395 JClips - Vantagens e desvantagens 396 Prova - Vantagens e desvantagens 407 YProlog - Vantagens e desvantagens 40

xvii

Lista de Coacutedigo

1 Excerto da classe RuleView 472 Excerto da classe Rule 473 Coacutedigo do template principal do portal 514 Coacutedigo da paacutegina inicial do portal 535 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo 546 Representaccedilatildeo da base de conhecimento do protoacutetipo 587 Predicados principais do motor de inferecircncia 638 Predicados principais do sistema de explicaccedilotildees 70

xix

Lista de Algoritmos

1 Algoritmo principal do motor de inferecircncia 602 Verifica se uma premissa eacute verdadeira 613 Dispara as regras que possam ser disparadas 614 Algoritmo responsaacutevel pelo desenho da applet 805 Algoritmo para construccedilatildeo dos dados do grafo 81

xxi

Lista de Acroacutenimos

AI Artificial Intelligence ou Inteligecircncia Artificial

BRMS Business Rule Management System

CF Certainty Factors ou Factores de Certeza

CLIPS C Language Integrated Production System

DTO Data Transfer Object

ES Expert System

GIS Gestatildeo Integrada de Seguros

GISPSA GIS Problem Solver Advisor

IDE Integrated Development Environment

JEOPS Java Embedded Object Production System

JSF JavaServer Faces

LHS Left-Handed Side

LOMA Landfill Operation Management Advisor

MDSS Medical Diagnosis Support System

ODBC Open Data Base Connectivity

OO Object Oriented

RHS Right-Handed Side

SP Sistema Pericial

SDK Software Development Kit

xxiii

1Introduccedilatildeo

Este trabalho eacute desenvolvido no acircmbito do Mestrado em Engenharia Informaacutetica ramode Tecnologias do Conhecimento e Decisatildeo e teve a sua origem a partir de um sistemadoravante designado por sistema base desenvolvido por Pinto Este sistema base foidesenvolvido durante a realizaccedilatildeo de um trabalho acadeacutemico (Pinto (1998)) cujo principalobjectivo era a construccedilatildeo de um sistema pericial

Na altura da sua criaccedilatildeo o sistema base apenas estava preparado para uma utilizaccedilatildeodo tipo mono-posto Ficava assim estabelecida a condiccedilatildeo de apenas um utilizador decada vez ter acesso ao sistema base Natildeo era exigiacutevel nem sequer necessaacuterio que outrocenaacuterio fosse equacionado dado tratar-se de um trabalho acadeacutemico O sistema ficoudesta forma limitado

Assim somos remetidos a um dos objectivos iniciais que levaram ao desenvolvimentodo trabalho que agora aqui se apresenta Proceder agrave evoluccedilatildeo do sistema base garantindoque o mesmo possa ser acedido por muacuteltiplos utilizadores de forma simultacircnea e a suadisponibilizaccedilatildeo num ambiente de acesso global mediante a utilizaccedilatildeo de redes sendoque a preferecircncia recai sobre a rede mais global que existe a internet Referindo-nos aeste tipo de disponibilizaccedilatildeo com todas as vantagens que lhe estatildeo afectas o proacuteximopasso loacutegico seria a integraccedilatildeo do novo sistema num portal

Eacute tambeacutem um objectivo inicial proceder agrave alteraccedilatildeo da actual forma de manutenccedilatildeo doconhecimento Pretende-se desenvolver um mecanismo de manutenccedilatildeo de conhecimentoque simplifique a interacccedilatildeo com o utilizador

Por uacuteltimo os objectivos deste trabalho passam igualmente pelo melhoramento dosistema base tentando eliminar alguns erros que foram detectados ao longo do tempo eacrescentando algumas caracteriacutesticas que entretanto surgiram e que foram consideradasnecessaacuterias

1

CAPIacuteTULO 1 INTRODUCcedilAtildeO

11 Enquadramento

O sistema a desenvolver embora tenha como ponto de partida um sistema base criado parautilizaccedilatildeo mono-posto faraacute parte de um portal onde seraacute integrado como uma ferramentade apoio na resoluccedilatildeo de problemas operacionais

Para aleacutem de actualmente fazer muito mais sentido a disponibilizaccedilatildeo do sistemanum ambiente de acesso globalizado e com a possibilidade de vaacuterios utilizadores emsimultacircneo a grande vantagem reside no facto de poder utilizar a mesma base de conhe-cimento que alimenta o sistema pericial independentemente do local onde se realizem osacessos Fica assim garantida a uniformidade a fiabilidade e a estabilidade do sistema

Por uacuteltimo a globalizaccedilatildeo do sistema garante igualmente que sempre que este eacuteutilizado natildeo para consulta ou apoio na resoluccedilatildeo de problemas mas para acrescentarnovos factos e dados agrave base de conhecimento estes estejam imediatamente disponiacuteveispara novas consultas ou para resoluccedilotildees de problemas de forma mais eficaz

12 Objectivos

O objectivo principal deste trabalho passa pela integraccedilatildeo do GIS Problem SolverAdvisor (GISPSA) (sistema base) num portal Aleacutem deste outros objectivos podemser considerados como de eventual ou relevante importacircncia podendo ser caracterizadosda seguinte forma

bull Objectivos globais

ndash Desenvolvimento de um sistema pericial rArr Pretende-se desenvolver umcandidato agrave substituiccedilatildeo do GISPSA

ndash Manutenccedilatildeo da base de conhecimento rArr Gerir a base de conhecimentorelativamente agrave inserccedilatildeo e actualizaccedilatildeo de regras de conhecimento bem comoimplementaccedilatildeo de mecanismos de verificaccedilatildeo das regras

bull Objectivos especiacuteficos

ndash Adaptar o motor de inferecircncia existente ou desenvolver novorArr Desenvolvi-mento de um motor de inferecircncia que se enquadre com os objectivos definidos

ndash Alterar o mecanismo de interacccedilatildeo do utilizador com a base de conheci-mentorArr Facilitar a manipulaccedilatildeo da base de conhecimento de forma a evitarproblemas na alteraccedilatildeo da base de conhecimento

2

13 PLANEAMENTO

ndash Verificar e detectar inconsistecircncias na base de conhecimentorArr Implementarmecanismos de verificaccedilatildeo das regras existentes para minimizar problemas

13 Planeamento

O planeamento deste trabalho foi estruturado em quatro fases A composiccedilatildeo dessas faseseacute a seguinte

1 Requisitos

bull Levantamento de requisitos

bull Estado da arte

bull Ferramentas existentes

2 Protoacutetipo

bull Protoacutetipo do motor de inferecircncia

bull Implementaccedilatildeo do gestor da base de conhecimento

3 Verificaccedilatildeo

bull Implementaccedilatildeo de meacutetodos de verificaccedilatildeo e detecccedilatildeo de inconsistecircncias

4 Elaboraccedilatildeo da dissertaccedilatildeo

bull Redacccedilatildeo final da dissertaccedilatildeo

14 Estruturaccedilatildeo da dissertaccedilatildeo

Nesta secccedilatildeo eacute apresentada a estrutura da dissertaccedilatildeo composta por cinco capiacutetulosNo primeiro capiacutetulo ldquoIntroduccedilatildeordquo eacute apresentado o problema actual quais os objec-

tivos a alcanccedilar e qual o planeamento para a prossecuccedilatildeo desses objectivosNo segundo capiacutetulo ldquoEstado da Arterdquo eacute apresentado a soluccedilatildeo GISPSA e tambeacutem o

estado da arte na aacuterea dos sistemas periciaisNo terceiro capiacutetulo ldquoFerramentas utilizadasrdquo eacute apresentado o estudo efectuado sobre

as ferramentas utilizadas e quais as conclusotildees do mesmoNo quarto capiacutetulo ldquoWexsysrdquo eacute descrita a soluccedilatildeo proposta e implementadaNo quinto e uacuteltimo capiacutetulo ldquoConclusotildeesrdquo satildeo apresentadas as conclusotildees finais bem

como os objectivos alcanccedilados e as actuais limitaccedilotildees

3

2Estado da arte

Num estado da arte pretende-se essencialmente fazer o enquadramento do estaacutegio deevoluccedilatildeo e eventuais casos de estudo relacionados com as tecnologias sistemas oupropostas que satildeo utilizadas ou apresentadas ao longo de um trabalho

Para o nosso caso em concreto vamos focalizar esse enquadramento sobre os sistemaspericiais no seu sentido mais abstracto e ainda sobre o sistema base jaacute indicado oGISPSA Apesar de o sistema base ser por si soacute um sistema pericial e como tal poderser apresentado como um caso de estudo inserido nos sistemas periciais generalizados ofacto de servir como ponto de partida para este trabalho em concreto confere-lhe umaimportacircncia muito superior sendo quase obrigatoacuteria a reserva de uma secccedilatildeo proacutepria parao mesmo

21 Sistemas periciais

Os sistemas periciais pertencem a um dos ramos da Artificial Intelligence ou InteligecircnciaArtificial (AI) e surgiram a partir da necessidade que alguns investigadores sentiram emcriar um software que demonstrasse raciociacutenio e comportamento inteligente durante aresoluccedilatildeo de problemas

Um Sistema Pericial (SP) tambeacutem conhecido como Expert System (ES) caracteriza-se como sendo um programa que permite a consulta e utilizaccedilatildeo de conhecimento extraiacutedode um ou mais peritos em determinada aacuterea Esse conhecimento estaacute normalmenteguardado naquilo que eacute mais habitualmente designado por base de conhecimento e agrave qualo programa tem o devido acesso

Na criaccedilatildeo de um SP o ideal seraacute sempre consultar os melhores peritos dentro daaacuterea pretendida e ainda que estes estejam disponiacuteveis para partilhar e disponibilizar oseu conhecimento Tal seria efectivamente a situaccedilatildeo ideal mas que nem sempre se

5

CAPIacuteTULO 2 ESTADO DA ARTE

aproxima da realidade Aliaacutes o verdadeiro sucesso de um sistema pericial reside naqualidade da sua base de conhecimento

Antes de mais devemos considerar que algueacutem que eacute perito em algo certamente oseraacute por uma seacuterie de factores conjugados Experiecircncia adquirida ao longo de vaacuteriosanos formaccedilatildeo especiacutefica dedicaccedilatildeo e estudo profundo seratildeo alguns desses factoresSempre que um indiviacuteduo se encontra numa posiccedilatildeo de excelecircncia em que eacute consideradoum verdadeiro perito encontra-se tambeacutem numa posiccedilatildeo em que lhe eacute bastante difiacutecilencontrar o tempo necessaacuterio para se submeter a uma extracccedilatildeo do conhecimento quedeteacutem Se a isto juntar-mos o facto do objectivo pelo qual se procede agrave extracccedilatildeo deconhecimento eacute a criaccedilatildeo de um programa que seraacute equiparado ao proacuteprio perito emtermos de conhecimento certamente que haveraacute algum desconforto

Aqui surgem as primeiras duacutevidas Seraacute que o sistema pericial tomaraacute o lugar deum ou mais peritos Apesar desta e de outras preocupaccedilotildees os peritos normalmentecontribuem de forma positiva para o enriquecimento de um sistema pericial tornando-odesta forma num sistema com maior qualidade e do qual eles proacuteprios poderatildeo usufruirjaacute que quando eacute possiacutevel agregar o conhecimento de muacuteltiplas pessoas obteacutem-se umconhecimento global superior ao individual

Para aleacutem disto o sistema pericial tende a proceder a um raciociacutenio mais linear loacutegicoe coerente quando comparado com um ser humano que poderaacute deixar que factores comopor exemplo o cansaccedilo ou os sentimentos o influenciem

Merritt define um sistema pericial como sendo um programa que utiliza conhecimentoe meacutetodos de inferecircncia para resolver problemas que satildeo suficientemente complexos pararequerer um especialista para a sua resoluccedilatildeo

ldquo an intelligent computer program that uses knowledge and inference procedures to

solve problems that are difficult enough to require significant human expertise for their

solutionsrdquo Merritt (1989)

A definiccedilatildeo de Giarratano et al eacute mais relacionada com o tipo de problemas tratadospor um sistema pericial

ldquo computer application wich embody some non-algorithmic expertise for solving certain

types of problemsrdquo Giarratano et al (1998)

Esta definiccedilatildeo enquadra de uma forma global as definiccedilotildees reconhecidas aos siste-mas periciais ldquoum sistema pericial pretende emular um perito na identificaccedilatildeo de umdeterminado problema cuja resoluccedilatildeo envolva conhecimento natildeo algoriacutetmicordquo

Existe uma clara separaccedilatildeo entre conhecimento e raciociacutenio o conhecimento eacute obtidocomo jaacute foi referido recorrendo a um ou mais peritos na aacuterea Os dados obtidos satildeo depois

6

21 SISTEMAS PERICIAIS

codificados atraveacutes de um determinado esquema de representaccedilatildeo No passo seguinteeacute adicionada a capacidade de raciociacutenio ao sistema pericial recorrendo a estrateacutegiasheuriacutesticas na tentativa de fornecer um resultado semelhante ao que um perito forneceriae aqui uma vez mais o papel do perito eacute fundamental para o sucesso do sistema pericial

Para aleacutem de contribuir com o conhecimento o perito deveraacute igualmente contribuircom o raciociacutenio utilizado para o manuseamento desse mesmo conhecimento Isto porquea resoluccedilatildeo de um problema poderaacute em determinadas situaccedilotildees necessitar de pequenosajustes que fogem agrave linearidade de um processamento computacional mas que podemperfeitamente ser simuladas e recriadas na construccedilatildeo do raciociacutenio do programa

Eacute necessaacuterio compreender que um perito para aleacutem de ser algueacutem que eacute consideradoum especialista na sua aacuterea eacute habitualmente algueacutem com pouco ou nenhum tempodisponiacutevel o que dificulta bastante a realizaccedilatildeo da recolha do conhecimento O seutempo eacute dispendioso e tem por norma poucos espaccedilos de manobra devido agraves muitassolicitaccedilotildees que lhe satildeo dirigidas Aqui impera o factor de resistecircncia ora porque o peritonatildeo acredita que o sistema seja tatildeo eficaz como ele ora porque existe o receio de sersubstituiacutedo ou passar a ter menos solicitaccedilotildees Quanto maior a colaboraccedilatildeo do ou dosperitos envolvidos na criaccedilatildeo de um qualquer sistema pericial melhor e mais eficaz seraacuteesse sistema pericial

211 Arquitectura

As duas grandes componentes do sistema pericial e que permitem a separaccedilatildeo referidaentre conhecimento e raciociacutenio satildeo a base de conhecimento (depende do domiacutenio ou daaacuterea abrangida) e o bloco de raciociacutenio (natildeo depende do domiacutenio) Este uacuteltimo eacute aindadividido em trecircs partes distintas o motor de inferecircncia o sistema de explicaccedilotildees e ainterface com o utilizador

Um sistema pericial deve ser estruturado de forma a que possa ser actualizado facil-mente sem que seja necessaacuteria qualquer alteraccedilatildeo ao niacutevel funcional do programa

7

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 1 Arquitectura de um sistema pericial

A figura 1 mostra a composiccedilatildeo de um sistema pericial e que mais detalhadamente eacutea seguinte

bull Interface com o utilizador

um sistema pericial deveraacute permitir a interacccedilatildeo com o utilizador Nos casosmais habituais os utilizadores que usufruem dos benefiacutecios destes sistemas natildeosatildeo peritos da aacuterea e pretendem aconselhamento ou ajuda na resoluccedilatildeo de umproblema Noutros casos o utilizador poderaacute ser um perito da aacuterea que apenaspretende testar o sistema pericial ou confrontar as conclusotildees deste com as suasproacuteprias conclusotildees para perceber se sendo diferentes qual o motivo para queisso aconteccedila Isto poderaacute permitir que um perito aprofunde ou corrija o seuproacuteprio conhecimento ou que por outro lado se procedam a correcccedilotildees agrave base deconhecimento do sistema pericial mediante se trate de erro por parte de um ou deoutro

De qualquer forma a interface com o utilizador deveraacute permitir a interacccedilatildeo entreo sistema pericial e o utilizador (qualquer que este seja) para que o utilizadorresponda agraves questotildees que lhe satildeo colocadas e peccedila explicaccedilotildees para os passos econclusotildees que percorre e descobre ao longo da utilizaccedilatildeo do programa

bull Base de conhecimento

o conhecimento extraiacutedo de um ou mais peritos eacute armazenado e mantido aquiDurante a execuccedilatildeo do programa o sistema pericial acede a esta base para consultaros dados disponiacuteveis Eacute sempre possiacutevel em qualquer altura retirar acrescentarou corrigir factos na base de conhecimento Isto contribui para uma evoluccedilatildeo damesma no sentido de melhorar sempre o funcionamento do proacuteprio sistema pericial

8

21 SISTEMAS PERICIAIS

bull Motor de inferecircncia

este bloco eacute o grande responsaacutevel por interpretar o conhecimento e colocarde uma forma estruturada questotildees ao utilizador O raciociacutenio extraiacutedo do ou dosperitos eacute aqui consultado para que mediante as questotildees que satildeo colocadas aoutilizador e as consultas que satildeo efectuadas agrave base de conhecimento este motor deinferecircncia determine qual a proacutexima questatildeo a colocar qual a proacutexima consulta arealizar ou qual a conclusatildeo a apresentar

bull Sistema de explicaccedilotildees

sempre que o utilizador pretende que lhe seja dada uma explicaccedilatildeo para aquestatildeo que estaacute a ser colocada ou para a conclusatildeo que foi determinada este blocoseraacute o responsaacutevel por dar essa mesma explicaccedilatildeo

Esta divisatildeo permite que os moacutedulos funcionais do programa possam ser isoladoscomo podemos observar na figura 1 de forma a facilitar futuras correcccedilotildees e actualizaccedilotildeesda base de conhecimento contribuindo positivamente para a evoluccedilatildeo da mesma eevitando assim que o sistema pericial fique obsoleto

212 Base de conhecimento

Uma base de conhecimento eacute um conjunto de informaccedilatildeo representada de forma a quepossa ser processada pelo motor de inferecircncia Existem vaacuterias formas de representa-ccedilatildeo de conhecimento no entanto as mais conhecidas satildeo a representaccedilatildeo por regrasrepresentaccedilatildeo por ldquoframesrdquo e ainda as redes semacircnticas

Ao representar conhecimento um dos factores determinantes para o meacutetodo necessaacute-rio a essa representaccedilatildeo eacute o domiacutenio do problema ou aacuterea a modelar A tiacutetulo de exemplose um problema segue um padratildeo ou algum tipo de linearidade na busca da soluccedilatildeonecessaacuteria ou ainda se a soluccedilatildeo puder ser obtida atraveacutes de questotildees cujas respostassatildeo maioritariamente simples (sim natildeo valores numeacutericos etc) a representaccedilatildeo doconhecimento eacute feita utilizando os meacutetodos de regras ou ldquoframesrdquo

Como jaacute foi referido o papel de um perito natildeo estaacute limitado apenas agrave contribuiccedilatildeocom o conhecimento para a base necessaacuteria Este exerce um outro papel igualmenteimportante que tem a ver mais com o aspecto de raciociacutenio Desta forma ao consultar abase de conhecimento satildeo tomadas algumas decisotildees tais como verificaccedilatildeo de eventuaissoluccedilotildees jaacute possiacuteveis em pontos intermeacutedios ou qual a proacutexima questatildeo a colocar Estemeacutetodo de interacccedilatildeo com a base de conhecimento poderaacute eventualmente entrar em

9

CAPIacuteTULO 2 ESTADO DA ARTE

conflito com a independecircncia de domiacutenio que foi referida na arquitectura de um sistemapericial No entanto este aspecto fundamental da criaccedilatildeo de um sistema pericial contribuilargamente para o bom funcionamento do mesmo

Para aleacutem disto a base de conhecimento deveraacute sempre contemplar as funcionalidadesnecessaacuterias que permitam ao utilizador em qualquer altura proceder agrave adiccedilatildeo de novosfactos agrave correcccedilatildeo dos jaacute existentes ou ainda agrave eliminaccedilatildeo dos mesmos Isto permitemanter uma base de conhecimento sempre actualizada fiaacutevel e consistente Estas razotildeescontribuem para a resoluccedilatildeo cada vez mais eficaz dos problemas que satildeo colocadosPara novos problemas que surgem poderatildeo ser necessaacuterias novas soluccedilotildees ou novosmeacutetodos para as encontrar Para problemas jaacute conhecidos poderatildeo ser encontradas novasformas ou novas soluccedilotildees de os resolver eventualmente consideradas mais eficazes ou deimplementaccedilatildeo mais simples

Por tudo isto considera-se que a base de conhecimento apesar de natildeo ser o verdadeiromotor de um sistema pericial poderaacute ser encarada como o verdadeiro combustiacutevelque o move e sem o qual natildeo seria possiacutevel qualquer tipo de evoluccedilatildeo pelo que a natildeocontribuiccedilatildeo para o seu melhoramento estagna o proacuteprio sistema provocando mais cedoou mais tarde o abandono do mesmo por parte dos utilizadores que entretanto podemperder a confianccedila que lhe depositaram

Os meacutetodos de representaccedilatildeo de conhecimento podem ser seleccionados de acordocom as caracteriacutesticas que lhes estatildeo inerentes e que se descrevem de seguida

2121 Regras

Uma das teacutecnicas de representaccedilatildeo de conhecimento mais utilizadas eacute a representaccedilatildeopor regras Estas satildeo utilizadas para representar heuriacutesticas e caracterizam-se por umconjunto de premissas que desencadeiam ou conduzem a uma soluccedilatildeo

As regras tecircm o formato ltidentificaccedilatildeogt Se ltLeft-Handed Side (LHS)gt EntatildeoltRight-Handed Side (RHS)gt

Onde

ltidentificaccedilatildeogt - identificaccedilatildeo da regra

ltLHSgt ndash ldquoLeft-Handed Siderdquo define as premissas que teratildeo que ser satisfeitas deforma a que a regra possa ser disparada

ltRHSgt ndash ldquoRight-Handed Siderdquo define as acccedilotildees ou conclusotildees que seratildeo verificadascom o disparo da regra

As premissas satildeo definidas recorrendo a factos que podem ser previamente conhecidosou inferidos a partir de outras regras A utilizaccedilatildeo de regras promove uma separaccedilatildeo

10

21 SISTEMAS PERICIAIS

entre a parte loacutegica e a funcional isto eacute permite-nos uma abstracccedilatildeo de implementaccedilatildeofocando-se na loacutegica

Vantagens

bull expressividade - as regras satildeo normalmente representadas de uma forma naturalque pode mesmo chegar a ser declarativa Eacute perfeitamente normal uma regra estarescrita num vocabulaacuterio que pode ser lido e compreendido por algueacutem que natildeo sejao programador o perito ou algueacutem com formaccedilatildeo na aacuterea em questatildeo

bull modularidade - as regras satildeo independentes entre si o que possibilita uma maisfaacutecil manutenccedilatildeo da base de conhecimento Isto permite e facilita a remoccedilatildeo deregras a adiccedilatildeo de outras ou a alteraccedilatildeo das jaacute existentes

bull separaccedilatildeo loacutegica - as regras satildeo independentes do motor de inferecircncia e estenatildeo carece de alteraccedilotildees ou actualizaccedilotildees quando as regras satildeo modificadas Ofuncionamento do sistema natildeo eacute alterado quando as regras o satildeo apenas as soluccedilotildeesque o sistema obteacutem eacute que poderatildeo ser diferentes (normalmente para melhor)

bull gramaacutetica riacutegida - as regras obedecem a estruturas que estatildeo perfeitamente defi-nidas agrave partida Isto implica que as mesmas possam ser validadas ou ateacute mesmoconstruiacutedas recorrendo a outros sistemas

bull execuccedilatildeo loacutegica - eacute sempre possiacutevel em qualquer altura do funcionamento dosistema pericial solicitar o desencadeamento ou disparo de uma sucessatildeo deregras A isto chama-se uma explosatildeo combinatoacuteria das regras e permite quesejam contemplados vaacuterios cenaacuterios possiacuteveis utilizando apenas uma execuccedilatildeoEsta execuccedilatildeo loacutegica tem sempre o mesmo resultado desde que se mantenham osparacircmetros iniciais

bull sistema de explicaccedilotildees - ao proceder a disparos de regras eacute possiacutevel dar indicaccedilatildeode qual a loacutegica utilizada para disparar uma determinada regra Isto permite de umaforma didaacutectica e simples justificar a razatildeo dos disparos auxiliando o utilizador nacompreensatildeo da evoluccedilatildeo que o sistema segue para atingir determinada soluccedilatildeo

Desvantagens

bull explicaccedilotildees - se um utilizador natildeo conhecer as regras ou natildeo as aceitar o sistemade explicaccedilotildees natildeo seraacute uma mais valia Poderaacute ateacute eventualmente tornar-se emalgo que confunde mais do que aquilo que auxilia

11

CAPIacuteTULO 2 ESTADO DA ARTE

bull gramaacutetica riacutegida - apesar de o meacutetodo de utilizaccedilatildeo de estruturas poder ser con-siderado importante porque estabelece um padratildeo a ser seguido pode conduzir aproblemas de expressividade quando utilizado em domiacutenios complexos

bull inconsistecircncia - um dos maiores problemas que podem surgir num sistema queutiliza a representaccedilatildeo do conhecimento atraveacutes de regras tem a ver com a possibi-lidade da existecircncia de inconsistecircncias e incoerecircncias nas regras Isto reduz-se ouevita-se atraveacutes da utilizaccedilatildeo exaustiva do sistema numa fase de testes em que satildeoequacionados o maior nuacutemero de casos ou cenaacuterios que possam despoletar todas asregras existentes na base de conhecimento

2122 Frames

Uma frame representa um conceito e eacute composta por slots que que natildeo satildeo mais do que adefiniccedilatildeo de um conjunto ltatributo valorgt Um valor pode ser um elemento uacutenico ouuma lista de valores e em termos de dados pode conter um tipo de dados primitivo ouuma referecircncia a outra frame

Esta representaccedilatildeo tem uma ligaccedilatildeo muito forte com o paradigma da programaccedilatildeoorientada a objectos jaacute que a ideia eacute a mesma representar objectos e conceitos do mundoreal utilizando a descriccedilatildeo a composiccedilatildeo e a heranccedila

Como vantagens temos

bull associaccedilatildeo - as frames definem e representam o conhecimento de uma formaassociativa (associaccedilatildeo normal de conceitos)

Desvantagens

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as frames podem representar um espaccedilo que natildeo estaacuterestringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

12

21 SISTEMAS PERICIAIS

2123 Redes semacircnticas

Uma rede semacircntica eacute um modelo formal em que satildeo descritos conceitos e relaccedilotildeesrecorrendo a um grafo dirigido Os conceitos satildeo representados por noacutes as relaccedilotildees porarcos e existe uma heranccedila de conceitos agrave medida que se procede agrave navegaccedilatildeo pelas vaacuteriasrelaccedilotildees

Como vantagens temos

bull exploraccedilatildeo graacutefica - a representaccedilatildeo de conhecimento atraveacutes de redes semacircnticaspermite a um utilizador explorar um domiacutenio graficamente Isto facilita a interacccedilatildeoe utilizaccedilatildeo do sistema

bull facilidade na adiccedilatildeo de clusters relacionados - utilizando o modo graacutefico de repre-sentaccedilatildeo torna-se mais faacutecil adicionar novos clusters em que existam conceitosrelacionados

bull faacutecil assimilaccedilatildeo - os seres humanos relacionam-se bem com ambientes graacuteficose tecircm uma tendecircncia a natildeo soacute aceitaacute-los melhor como tambeacutem a proceder a umautilizaccedilatildeo mais atractiva simples e de raacutepida aprendizagem com um miacutenimo deformaccedilatildeo

Como desvantagens temos

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as redes semacircnticas podem representar um espaccedilo que natildeoestaacute restringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

bull falta de estrutura e formalidade - natildeo existe uma semacircntica formal para a represen-taccedilatildeo simboacutelica das ligaccedilotildees o que deixa demasiado espaccedilo para a criatividade eeventualmente para o surgimento de problemas associados ao facto de poderemexistir muacuteltiplas formas de representaccedilatildeo

13

CAPIacuteTULO 2 ESTADO DA ARTE

2124 Mecanismos de inferecircncia

A base de conhecimento representa o caminho para encontrar uma determinada soluccedilatildeomas o motor de inferecircncia eacute a entidade que efectivamente percorre esse caminho Ummotor de inferecircncia pode utilizar diferentes estrateacutegias de raciociacutenio para a obtenccedilatildeode respostas As mais conhecidas satildeo a estrateacutegia de encadeamento directo e a deencadeamento inverso Contudo eacute possiacutevel combinar as duas no mesmo sistema naquiloque eacute vulgarmente conhecido como uma estrateacutegia de encadeamento misto

Encadeamento directo (Forward Chaining) ndash Um ser humano no seu dia a dia utilizaesta estrateacutegia para processamento de raciociacutenio Consoante assistimos a acontecimentoso ceacuterebro processa-os e analisa-os decidindo o que fazer de seguida De igual modo aestrateacutegia de raciociacutenio por encadeamento directo comeccedila por percorrer os factos baacutesicosque vatildeo originar o disparo de regras o que levaraacute agrave obtenccedilatildeo de conclusotildees intermeacutediasque por sua vez iratildeo originar o disparo de mais regras e assim sucessivamente Oprocesso continua ateacute que se obtenham conclusotildees finais se tal for possiacutevel ou natildeo hajamais lugar agrave possibilidade de disparo de novas regras

Devido agraves suas caracteriacutesticas esta estrateacutegia eacute mais apropriada para planeamentomonitorizaccedilatildeo controlo e interpretaccedilatildeo

Encadeamento inverso (Backward Chaining) ndash No encadeamento inverso o motorde inferecircncia tenta provar as conclusotildees finais que aparecem no lado direito das regras(RHS) Essas conclusotildees finais tambeacutem satildeo designadas como objectivos e eacute normaldizer-se que o motor de inferecircncia com encadeamento inverso eacute orientado aos objectivos(goal driven)

Para provarmos uma dada conclusatildeo teremos que provar as condiccedilotildees que aparecemno lado esquerdo da regra (LHS) que poderatildeo ser suportadas por conclusotildees intermeacutediasde outras regras ou por factos baacutesicos Sendo assim o mecanismo de encadeamentoinverso assume um caraacutecter essencialmente recursivo (para provar uma conclusatildeo vamoster que provar as condiccedilotildees)

Este tipo de estrateacutegia eacute mais apropriada para diagnoacutesticos jaacute que temos uma hipoacuteteseque necessita de ser provada de forma a chegar a uma conclusatildeo

Eacute importante salientar que a forma de representaccedilatildeo das regras eacute independente daestrateacutegia utilizada pelo motor de inferecircncia No entanto eacute possiacutevel melhorar a eficaacuteciado sistema se adaptarmos essa representaccedilatildeo consoante o encadeamento utilizado

14

21 SISTEMAS PERICIAIS

2125 Manutenccedilatildeo de uma base de conhecimento

A manutenccedilatildeo de uma base de conhecimento embora seja considerada vital para asobrevivecircncia do sistema pericial eacute um processo bastante complexo no sentido emque implica cuidados que nem sempre satildeo tidos ou considerados Eacute habitual existiremproblemas de validaccedilatildeo verificaccedilatildeo redundacircncia e contradiccedilotildees

De forma a garantir que a base de conhecimento se mantenha fiaacutevel e bem definidadevem ser desenvolvidos mecanismos que evitem a ocorrecircncia deste tipo de problemas

Redundacircncia - Considera-se aplicaccedilatildeo de redundacircncia a uma base de conhecimentoquando ao inserir uma regra estamos a adicionar conhecimento que jaacute estava contido nabase de conhecimento Podemos observar o seguinte exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X tem_barbatanas entatildeo X nada

regra3 se X nada E X tem_barbatanas entatildeo X eacute_peixe

Neste exemplo eacute possiacutevel verificar que esta base de conhecimento manteacutem-se idecircntica(o conhecimento eacute o mesmo) se removermos a regra3 considerada redundante Esta regranatildeo trouxe nenhum conhecimento novo ao sistema e pode ser descartada

Contradiccedilatildeo - Considera-se regra contraditoacuteria toda a regra que contradiz conheci-mento jaacute existente na base de conhecimento Por exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X nada entatildeo X natildeo_eacute_peixe

A regra2 contradiz claramente a regra1 pelo que eacute considerada contraditoacuteria Um dosgrandes problemas na anaacutelise de duas ou mais regras contraditoacuterias passa por determinarquais as que correspondem ao conhecimento correcto

Verificaccedilatildeo - acccedilatildeo desencadeada ainda na fase de implementaccedilatildeo inicial da base deconhecimento onde se pretende minimizar problemas essencialmente de redundacircncia e decontradiccedilatildeo que possam ser provocados pelo programador Toda a base de conhecimentoeacute verificada e confrontada com as notas apontamentos e indicaccedilotildees a que o programadorteve acesso e que serviram de alicerce para a construccedilatildeo da mesma

Validaccedilatildeo - a acccedilatildeo preventiva de erros iniciais levada a cabo logo apoacutes a implementa-ccedilatildeo da base de conhecimento precede a acccedilatildeo seguinte que consiste em validar a referidabase atraveacutes da intervenccedilatildeo de um perito o qual utiliza vaacuterios cenaacuterios de testes ondetenta obter as respostas ao mesmo tempo que vai consultando as explicaccedilotildees disponiacuteveisao longo do percurso

Apesar de ser habitual proceder a esta validaccedilatildeo com o perito que contribuiu como conhecimento eacute igualmente habitual e ateacute beneacutefico utilizar outros peritos da mesma

15

CAPIacuteTULO 2 ESTADO DA ARTE

aacuterea que para aleacutem de validarem a base de conhecimento em causa poderatildeo inclusiveconfrontar o seu proacuteprio conhecimento com o do perito original procedendo a correcccedilotildeesa eles proacuteprios ou agrave base per si Quanto maior a taxa de intervenccedilatildeo construtiva por partede peritos numa base de conhecimento melhor seraacute a qualidade associada agrave mesma

213 Raciociacutenio sobre incerteza

Raciociacutenio sobre incerteza eacute o nome dado ao processo de formulaccedilatildeo de conhecimentobaseado em fontes de informaccedilatildeo que detenham algum tipo de incerteza na sua especifi-caccedilatildeo

O conhecimento que detemos natildeo se limita a observaccedilotildees loacutegicas do tipo ldquose Obser-vaccedilatildeo_A entatildeo conclusatildeo_Brdquo Em vaacuterias situaccedilotildees necessitamos de lidar com informaccedilatildeoincompleta incorrecta ou ateacute mesmo ausente

Quando lidamos com conhecimento de peritos num determinado domiacutenio surge aindaoutro tipo de conhecimento este originado atraveacutes da observaccedilatildeo e experiecircncia

Existe entatildeo a necessidade de representaccedilatildeo de conhecimento e respectivo grau decerteza Para este efeito existem algumas teacutecnicas tais como loacutegica Fuzzy teorias deprobabilidades tais como Bayes ou Dempster-Shafer factores de certeza entre outros

Os seguintes autores podem ser consultados para referecircncia das teacutecnicas acima men-cionadas

bull Loacutegica Fuzzy - Drakopoulos (1994)

bull Bayes - Lucas (2001)

bull Dempster-Shafer - Wilson (2000) e Barnett (1991)

De seguida vai ser descrita a teacutecnica dos factores de certeza que foi a teacutecnica adoptadapara o desenvolvimento da soluccedilatildeo

2131 Factores de certeza

A teacutecnica dos Certainty Factors ou Factores de Certeza (CF) eacute um do meacutetodos detratamento de incertezas num sistema pericial A teacutecnica foi desenvolvida por Shortliffeand Buchanan para o projecto MYCIN um sistema pericial de diagnoacutestico e tratamentode meningite e tratamento do sangue Desde entatildeo que esta teacutecnica eacute o padratildeo seguido nodesenvolvimento de sistemas periciais baseados em regras Heckerman (1992)

16

21 SISTEMAS PERICIAIS

De um ponto de vista funcional caracteriza-se pela atribuiccedilatildeo de um nuacutemero o graude certeza a factos e regras Esse grau de certeza eacute uma medida relativa probabiliacutesticaque pode ser positiva ou negativa sendo normalmente usados valores no intervalo de -1 a1

A sua definiccedilatildeo original baseou-se na seguinte foacutermula FC [HE] = MC [HE]minusMD [HE]

O factor de certeza da hipoacutetese H dado uma evidecircncia E eacute dado pela diferenccedila entre

bull a medida de certeza de H dado Erarr MC [HE]

bull a medida de descrenccedila de H dado Erarr MD [HE]

O CF final de uma regra com uma premissa baseada num facto ou noutra regra eacute dadopela foacutermula 21

Quando as premissas estatildeo associadas atraveacutes do operador conjunccedilatildeo eacute aplicada afoacutermula 22

Quando existe mais do que uma regra a suportar uma determinada conclusatildeo o CFfinal eacute o resultado da foacutermula 23

CFf inal =CFpremissatimesCFregra 21

CFf inal = min[CFpremissa1 CFpremissan

]timesCFregra

22

X Y gt 0CF (X Y ) = X +Y (100˘X)100 23a

X ou Y lt 0CF (X Y ) = X +Y(1˘min(X Y)) 23b

X Y lt 0CF (X Y ) =minusCF (minusX minusY ) 23c

214 Vantagens e desvantagens

Apesar de tudo o que foi descrito um sistema pericial natildeo representa de forma alguma aferramenta mais apropriada para resolver todos os problemas com recurso a conhecimentoque de outra forma estaria reservado apenas a peritos das vaacuterias aacutereas Ao utilizarmosum sistema pericial estamos sujeitos a aspectos positivos e negativos cabendo a noacutes opapel de determinar se quando confrontados com um determinado problema a utilizaccedilatildeodeste tipo de ferramenta eacute a mais apropriada

17

CAPIacuteTULO 2 ESTADO DA ARTE

Para observar quais as principais vantagens de um sistema pericial podemos consultaras opiniotildees partilhadas por Giarratano et al (1998) CoAJRA (1997)

bull Elevada disponibilidaderArr um sistema pericial estaacute sempre disponiacutevel em termosde tempo e local pronto a funcionar sob qualquer condiccedilatildeo enquanto que umperito natildeo dispotildee dessa total disponibilidade

bull Baixo risco de utilizaccedilatildeorArr pode ser utilizado em ambientes considerados perigo-sos e hostis para um ser humano

bull Baixo custo rArr o custo de providenciar conhecimento por utilizador eacute bastantereduzido

bull DurabilidaderArr o conhecimento eacute permanente ao contraacuterio de um especialista queestaacute sujeito a ausecircncias

bull Conhecimento de vaacuterios especialistasrArr quando agregado o conhecimento reco-lhido a partir de vaacuterios especialistas poderaacute conduzir a resultados mais adequadose considerados melhores quando confrontados com o conhecimento individual e osresultados que daiacute advecircm

bull Capacidade de explicaccedilatildeorArr um sistema pericial consegue explicar detalhadamenteos passos que levaram agrave resposta dada enquanto que um ser humano pode natildeo tera disponibilidade nem a vontade de explicar todo o processo de raciociacutenio seguido

bull EmotividaderArr um sistema pericial natildeo estaacute sujeito a emoccedilotildees o seu funciona-mento e as respostas que providencia natildeo satildeo influenciadas pelo meio em que estaacuteinserido como por exemplo situaccedilotildees de stress ou situaccedilotildees de perigo iminente (aqueda de um aviatildeo ou uma central nuclear em risco)

bull Natildeo influenciaacutevelrArr acontecimentos mais actuais tecircm o mesmo peso na tomada dedecisatildeo evitando assim o fenoacutemeno de ldquoviciaccedilatildeordquo da base de conhecimento

No entanto um sistema pericial comporta tambeacutem algumas desvantagens das quaisse salientam

bull Emotividade rArr o facto de natildeo ser emotivo tambeacutem pode ser visto como umadesvantagem jaacute que natildeo recorrer a emoccedilotildees pode ser problemaacutetico por exemploem situaccedilotildees que necessitem de senso comum

18

21 SISTEMAS PERICIAIS

bull ManutenccedilatildeorArr se natildeo for devidamente mantido e actualizado um sistema pericialcorre o risco de ldquoenvelhecerrdquo no sentido em que deixa de ser um sistema fiaacutevel aque possamos recorrer e que corre o risco de abandono

bull CriatividaderArr um sistema pericial natildeo tem capacidade de reagir de forma diferentea problemas colocados seguindo sempre uma linha estaacutevel de raciociacutenio

bull Adaptaccedilatildeo sensorial rArr um sistema pericial natildeo consegue reagir a informaccedilatildeosensorial do meio que o rodeia entenda-se sensorial como sentidos humanos taiscomo o cheiro o tacto e a visatildeo

19

CAPIacuteTULO 2 ESTADO DA ARTE

22 GISPSA - GIS Problem Solver Advisor

O Gestatildeo Integrada de Seguros (GIS) eacute um Sistema de Informaccedilatildeo vocacionado para aactividade seguradora residente na plataforma AS400 da IBM Umas das caracteriacutesticasmais interessantes deste sistema acabou por ser tambeacutem um dos grandes proporciona-dores de eventuais problemas O GIS possui uma grande capacidade de configuraccedilatildeo oque sendo muito uacutetil para a adaptabilidade deste a cenaacuterios situaccedilotildees ou utilizadoresdiferentes acaba por originar vaacuterios problemas operacionais atraveacutes de inconsistecircnciasna proacutepria configuraccedilatildeo

Dada esta facilidade aparente de ocorrecircncia de problemas e a falta de sensibilidadee formaccedilatildeo teacutecnica dos utilizadores para os resolver a equipa de assistecircncia teacutecnicaafecta ao GIS estava muitas vezes com sobrecarga de pedidos por parte dos clientes quepretendem estes problemas solucionados Existiam periacuteodos de especial relevacircncia noque toca a estas sobrecargas tais como os fechos de ano das empresas

A partir daqui surge a ideia e a necessidade da criaccedilatildeo do GISPSA com o intuito dealiviar a sobrecarga da equipa de assistecircncia teacutecnica mas essencialmente com o grandeobjectivo de assegurar que um cliente natildeo fica sem soluccedilatildeo para os problemas com que sedepara apenas porque natildeo estatildeo teacutecnicos disponiacuteveis A grande vantagem de um sistemapericial foi e seraacute sempre essa poder substituir um perito sem ter que enfrentar questotildeescomo a disponibilidade custos ou tempo

Assim surge o GISPSA que mais natildeo eacute que um projecto criado por Pinto no acircmbito deum projecto acadeacutemico cujo objectivo inicial passava por criar um Sistema Pericial paradiagnoacutestico de problemas operacionais do GIS Este sistema teve por base o conhecimentoe o respectivo raciociacutenio extraiacutedos de um perito da aacuterea Administrativa-Financeira doGIS

No caso de problemas mais complexos em que o Sistema Pericial natildeo consiga determi-nar os factores de erro eacute remetida a resoluccedilatildeo para um teacutecnico da empresa comunicandoesse facto ao utilizador Pinto (1998)

221 Arquitectura

Sendo um sistema pericial o GISPSA teria que ser desenvolvido utilizando uma lingua-gem que tivesse uma seacuterie de caracteriacutesticas A existecircncia de uma base de conhecimento apossibilidade de consultar factos adicionar novos factos ou ainda de remover factos nessamesma base e aspectos como o backtracking na realizaccedilatildeo de raciociacutenio ao inferir sobreesses mesmos factos natildeo permitia um leque muito alargado na escolha da linguagem de

20

22 GISPSA - GIS PROBLEM SOLVER ADVISOR

desenvolvimento

Desta forma ficou decidido que o GISPSA seria desenvolvido em prolog (maisespecificamente winprolog) Devido agrave simplicidade de utilizaccedilatildeo e extensa documentaccedilatildeode apoio o LPAProlog foi usado como motor de inferecircncia e o LPAFlex foi usado paraestabelecer a declaraccedilatildeo de regras

Como jaacute foi referido anteriormente o GISPSA eacute uma aplicaccedilatildeo standalone desenhadae desenvolvida para uma execuccedilatildeo local em mono-posto e sujeita agrave obtenccedilatildeo de umalicenccedila de utilizaccedilatildeo para garantir o seu funcionamento

Figura 2 GISPSA menu inicial

A aplicaccedilatildeo dispotildee de uma interface graacutefica tambeacutem criada em winprolog que utilizarecursos especiacuteficos do sistema operativo Windows

A base de conhecimento eacute armazenada num uacutenico ficheiro ksl e o seu carregamentonatildeo eacute parcial O mesmo seraacute dizer que toda a base de conhecimento eacute passada paramemoacuteria de trabalho assim que o programa arranca

222 Funcionamento

Em termos funcionais a aplicaccedilatildeo permite mudar o tipo de linguagem a ser empreguenas conversaccedilotildees estabelecidas com o utilizador consoante esta esteja a ser utilizadapor um teacutecnico (habitualmente os teacutecnicos com formaccedilatildeo na aacuterea) ou um utilizadornormal (o cliente que adquiriu a aplicaccedilatildeo e cuja formaccedilatildeo eacute mais reduzida ou ateacute mesmoinexistente)

Apoacutes a definiccedilatildeo da linguagem de interacccedilatildeo a utilizar o sistema inicia entatildeo o pedidode assistecircncia apresentando a mensagem ldquoSeleccione a aplicaccedilatildeordquo (figura 3) que permitenuma primeira instacircncia direccionar o raciociacutenio face agrave resposta do utilizador

21

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 3 GISPSA interacccedilatildeo inicial

Figura 4 GISPSA exemplo de interacccedilatildeo pergunta-resposta

223 Limitaccedilotildees

Apesar de ser inovadora na aacuterea esta aplicaccedilatildeo foi no iniacutecio bastante utilizada por algunsclientes tendo sofrido algum abandono de forma gradual ao longo do tempo de vida quejaacute leva Apoacutes uma anaacutelise chegou-se agrave conclusatildeo que as principais causas na origemdesse abandono seriam as seguintes

bull Adicionar regras implicava o conhecimento da sintaxe das mesmas Verificou-se que esta tarefa era demasiado complexa para um utilizador sem formaccedilatildeo esensibilidade suficientes na aacuterea da programaccedilatildeo

bull O acto de proceder agrave ediccedilatildeo de regras existentes na base de conhecimento traduz-senuma tarefa que para aleacutem de morosa eacute essencialmente de risco no sentido em

22

23 WEB EXPERT SYSTEMS

que natildeo existe uma verdadeira noccedilatildeo do impacto que estas alteraccedilotildees possam vir ater no comportamento global do sistema

bull O sistema apenas pode ser instalado em mono-posto o que obriga agrave obtenccedilatildeo deuma licenccedila por cada instalaccedilatildeo que se pretende realizar

bull O sistema natildeo permite a integraccedilatildeo com ambientes baseados em redes e sistemasdistribuiacutedos

bull Natildeo existe nenhum mecanismo de verificaccedilatildeo da base de conhecimento

bull O aspecto visual da aplicaccedilatildeo estaacute ultrapassado e eacute pouco apelativo

23 Web Expert Systems

Actualmente uma grande maioria dos sistemas periciais desenvolvidos satildeo desenhadospara um funcionamento em ambientes web As razotildees apontadas para esta orientaccedilatildeo satildeovaacuterias destacando-se a evoluccedilatildeo da proacutepria tecnologia as velocidades de transmissatildeode dados em redes a possibilidade de acesso em muacuteltiplas localizaccedilotildees geograacuteficas(desde que assegurado o necessaacuterio acesso agrave rede) e ainda o desenvolvimento de novasferramentas que possibilitam maior facilidade na criaccedilatildeo destes novos sistemas

Algumas das ferramentas que permitem actualmente o desenvolvimento de um sistemapericial baseado em ambientes web satildeo as seguintes

1 WebFlex - LPA Flex

2 EXSYS CORVID

3 WebCLIPS

4 JCLIPS

5 JESS

6 Acquire

WebFlex - Esta ferramenta permite a publicaccedilatildeo de um sistema pericial desenvolvidoem ldquoLPA Prologrdquo Os sistemas periciais desenvolvidos a partir deste meacutetodo necessitamainda de outra ferramenta para garantir o funcionamento o ldquoLPA ProWeb Serverrdquo Eacute

23

CAPIacuteTULO 2 ESTADO DA ARTE

possiacutevel adaptar um sistema pericial jaacute desenvolvido para ser disponibilizado numarede sem ser necessaacuterio efectuar qualquer tipo de alteraccedilatildeo No entanto se for pretendidoalgum tipo de configuraccedilatildeo extra por exemplo incluir imagens ou alterar a aparecircncia dealguns controlos eacute uma alteraccedilatildeo extremamente morosa e complexa

WebFlex allows you to deliver your flex-based expert systems onto Intranets

and Extranets easily Just create your rules and frames and questions as per normal

in flex and WebFlex will construct a web server-based solution using ProWeb where

all the questions are sent automatically configured for a standard HTMLJavascript

browserLogic Programming Associaties Ltd (2010)

Eacute possiacutevel alterar o HTML de saiacuteda que o webflex utiliza por defeito no entanto estaconfiguraccedilatildeo natildeo eacute tatildeo simples quanto poderaacute parecer agrave partida e obriga agrave alteraccedilatildeo dosistema pericial

Esta ferramenta funciona apenas em sistemas windows e eacute necessaacuteria a obtenccedilatildeo deuma licenccedila de utilizaccedilatildeo (natildeo eacute gratuita)

EXSYS CORVID - Eacute uma ferramenta composta por dois moacutedulos Exsys CORVID

Knowledge Automation Expert System Software e Exsys Servlet Runtime EXSYS (2010)

Natildeo foi possiacutevel encontrar nenhum sistema desenvolvido por esta ferramenta pormotivos de confidencialidade eou vantagem competitiva Estatildeo no entanto disponiacuteveisaplicaccedilotildees de demonstraccedilatildeo na paacutegina oficial da empresa Verificou-se que nenhumadas aplicaccedilotildees de demonstraccedilatildeo disponiacuteveis possui capacidades de dar explicaccedilotildees oujustificaccedilotildees

De acordo com EXSYS as aplicaccedilotildees construiacutedas com esta ferramenta podem seracedidas por Servlet Applet ou standalone e esta ferramenta necessita da obtenccedilatildeo deuma licenccedila de desenvolvimento

WebCLIPS - Segundo Michael Giordano o WebCLIPS eacute uma implementaccedilatildeo CGI

que envolve o C Language Integrated Production System (CLIPS) como aplicaccedilatildeo internaO CLIPS eacute uma ferramenta de desenvolvimento de sistemas periciais

Esta ferramenta foi desenvolvida em linguagem C o que significa que em termos deportabilidade desde que se possua o coacutedigo fonte este poderaacute ser compilado em qualquersistema operativo jaacute que o compilador para a linguagem estaacute disponiacutevel para todas as

24

23 WEB EXPERT SYSTEMS

versotildees existentes no mercado No entanto o WebCLIPS apenas foi desenvolvido parafuncionamento em sistemas windows e linux

O CLIPS eacute uma ferramenta livre que permite o desenvolvimento de sistemas baseadosem regras Pode ser integrado com algumas linguagens das quais se destacam C Java

(JCLIPS) FORTRAN entre outras Esta eacute provavelmente a ferramenta mais utilizada nodesenvolvimento de sistemas periciais devido agrave sua rapidez eficiecircncia e pelo facto de sergratuita

JCLIPS - Eacute uma biblioteca que permite integraccedilatildeo com Java e permite igualmentea utilizaccedilatildeo do motor do CLIPS a partir de uma classe Java Esta interligaccedilatildeo eacute feitaatraveacutes da importaccedilatildeo do ficheiro (dll ou so consoante o sistema operativo) e permite aexecuccedilatildeo de uma instacircncia ou seja permite ter apenas uma sessatildeo de um sistema pericialde cada vez Maarten Menken (2010)

JESS - O JESS eacute uma extensatildeo do CLIPS em JAVA Eacute basicamente uma bibliotecacujo objectivo natildeo passa por gerar uma aplicaccedilatildeo web mas sim servir de base para quepossa ser integrada ou utilizada para esse efeito Ernest Friedman-Hill (2010)

Utiliza uma linguagem especiacutefica designada JESS language equivalente ao CLIPSmas com novos componentes que a tornam uma linguagem complexa e de difiacutecil utilizaccedilatildeopor algueacutem sem conhecimentos de inteligecircncia artificial

Acquire - Eacute um produto bastante avanccedilado do ponto de vista tecnoloacutegico face aosconcorrentes no sentido em que permite uma separaccedilatildeo evidente entre a camada aplicaci-onal e a camada de apresentaccedilatildeo Promove uma separaccedilatildeo cliente-servidor e disponibilizaum Software Development Kit (SDK) que permite a integraccedilatildeo com outras aplicaccedilotildees

De acordo com Acquired Intelligence o produto estaacute sujeito a uma licenccedila de utilizaccedilatildeoe eacute disponibilizado ainda um serviccedilo online de alojamento de sistemas periciais omyAcquire disponiacutevel mediante uma subscriccedilatildeo semestral

231 Casos de estudo

Os sistemas periciais mais especificamente aqueles que satildeo baseados em sistemas webtecircm conhecido nos uacuteltimos anos uma evoluccedilatildeo gradual e consistente devido em grandeparte agrave simplicidade e disponibilidade que possibilitam Podem ser acedidos a partir dequalquer local no mundo 24 horas por dia e sem qualquer tipo de limitaccedilatildeo bastando

25

CAPIacuteTULO 2 ESTADO DA ARTE

apenas que se garanta o acesso agrave rede onde o sistema pericial estaacute colocado

As interfaces satildeo mais apelativas e chegam a fazer uso de imagens e outros meiosgraacuteficos ou de multimeacutedia cujo objectivo natildeo eacute apenas o de tornar os sistemas maisinteressantes mas tambeacutem mais eficazes jaacute que auxiliam de forma mais simples eesclarecida Os controlos utilizados as caixas de interacccedilatildeo e ateacute mesmo as explicaccedilotildees ejustificaccedilotildees (nos sistemas que o permitam) ajudam a ter uma ideia cada vez mais clarasobre o funcionamento dos sistemas obtendo-se assim melhores resultados

Alguns dos casos de estudo de sistemas periciais baseados em sistemas web existentesactualmente tecircm como um dos seus maiores objectivos a disponibilidade global dosmesmos (satildeo disponibilizados normalmente atraveacutes da internet) e os mais conhecidossatildeo

bull Landfill Operation Management Advisor (LOMA)

bull Medical Diagnosis Support System (MDSS)

bull Whale watcher

2311 LOMA - Landfill Operation Management Advisor

O LOMA eacute um sistema pericial online que analisa problemas operacionais falhas eacidentes em aterros comuns Aleacutem disso o LOMA fornece conselhos sobre como umgestor pode evitar esses problemas e em caso de ocorrecircncia sobre como diminuir oimpacto das suas consequecircncias Encontra-se disponiacutevel em httplomacivil

duthgr e eacute de utilizaccedilatildeo puacuteblica

O sistema pericial foi desenvolvido por Dokas recorrendo agraves ferramentas WebFlex eLPA ProWeb Server

A arquitectura da aplicaccedilatildeo web pode ser visualizada na figura 5 e consiste nosseguintes moacutedulos Dokas (2005)

bull Sistema pericial LOMA

bull Moacutedulo de aconselhamento

bull Moacutedulo operacional de problemas-causa

bull Eventos inicias

bull Problemas operacionais

26

23 WEB EXPERT SYSTEMS

bull Moacutedulo de explicaccedilotildees

bull Moacutedulo de submissatildeo de conhecimento e informaccedilatildeo

Figura 5 Arquitectura do LOMA

O moacutedulo mais relevante para o acircmbito desta dissertaccedilatildeo eacute o ldquoSistema pericial LOMArdquoe eacute tambeacutem o moacutedulo mais importante para a aplicaccedilatildeo LOMA

Eacute composto por vinte e quatro sub-moacutedulos cada um deles responsaacutevel por analisarum tipo especiacutefico de problema e ainda por um sub-moacutedulo extra que eacute responsaacutevel pelocontrolo do sistema

O sub-moacutedulo extra questiona o utilizador que descreve o problema (ver 6 e 7) ecom base na sua descriccedilatildeo apresenta uma lista de possiacuteveis problemas (ver 8) Quandoo utilizador selecciona um problema da lista de resultados eacute activado o respectivo sub-moacutedulo que por sua vez iraacute fornecer informaccedilatildeo de como prevenir o problema ou nocaso de este jaacute ter acontecido como minimizar as suas consequecircncias (ver 9)

27

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 6 Paacutegina inicial do sistema pericial LOMA

Figura 7 Sub-moacutedulo extra

28

23 WEB EXPERT SYSTEMS

Figura 8 Sugestatildeo de problemas do sub-moacutedulo extra

Figura 9 Sub-moacutedulo especializado

29

CAPIacuteTULO 2 ESTADO DA ARTE

2312 MDSS - Medical Diagnosis Support System

O MDSS eacute um sistema pericial utilizado na aacuterea da medicina e foi desenvolvido paraajudar no diagnoacutestico e tratamento da diabetes A diabetes pode afectar vaacuterias partes docorpo provocando diversos sintomas e complicaccedilotildees Quando detectada atempadamenteeacute mais facilmente controlaacutevel e menos perigosa Por todos estes motivos foi criado umsistema pericial online o MDSS que permite inferir sobre uma seacuterie de sintomas parachegar a um diagnoacutestico

Na opiniatildeo de Filho uma das vantagens deste sistema pericial eacute que possibilita quemeacutedicos em ambientes rurais ou perigosos e de difiacutecil acesso com recursos limitadospossam aceder ao sistema pericial de forma a terem uma ajuda no diagnoacutestico destadoenccedila O que comeccedilou como um sistema pericial vocacionado e orientado para adiabetes rapidamente cresceu e tornou-se algo mais do que isso sendo hoje utilizadocomo sistema de diagnoacutestico para vaacuterias doenccedilas

No que diz respeito agrave sua arquitectura o MDSS foi desenvolvido em LPA Prolog

recorrendo aos moacutedulos ProWeb e ProData e utilizando Open Data Base Connectivity

(ODBC) para acesso agrave base de dados Utiliza loacutegica fuzzy para raciociacutenio sobre incertezaspara lidar com conhecimento parcial

O sistema eacute composto por trecircs moacutedulos No primeiro moacutedulo eacute possiacutevel um es-pecialista definir sintomas exames cliacutenicos exames de laboratoacuterio e exames relativosa uma ou mais doenccedilas Eacute ainda possiacutevel a atribuiccedilatildeo de valores (pesos estatiacutesticos)ou de resultados que definem uma doenccedila Isso permite por exemplo que a pressatildeoarterial possa estar associada ao diagnoacutestico de pressatildeo alta diabetes gravidez de riscoou insuficiecircncia renal entre outros Informaccedilotildees de consultas anteriores e exames satildeoautomaticamente ligadas e analisadas sob fundamentaccedilatildeo loacutegico temporal

No segundo moacutedulo o sistema permite consultas atraveacutes do qual os dados relevantespara o paciente satildeo registados e relacionados com outros exames correlacionados Durantea fase de diagnoacutestico o sistema pode sugerir outros testes ou procedimentos para entatildeoinferir se haacute outros riscos e doenccedilas a serem investigados

No terceiro moacutedulo eacute efectuado o diagnoacutestico O sistema iraacute localizar automatica-mente os diagnoacutesticos jaacute registados noutras consultas incluindo aquelas feitas por outrosmeacutedicos Aleacutem disso o sistema pesquisa niacuteveis de doenccedilas de acordo com os resultadosdos exames Pode tambeacutem sugerir uma investigaccedilatildeo mais aprofundada sempre que osdados natildeo sejam suficientes para garantir um diagnoacutestico preciso

30

23 WEB EXPERT SYSTEMS

2313 Whale watcher

O sistema pericial Whale watcher eacute um sistema de demonstraccedilatildeo da plataforma AcquireEste e outros sistemas periciais similares estatildeo disponiacuteveis na paacutegina da Acquire (httpwwwaiinccademos)

Figura 10 Paacutegina principal do sistema pericial Whale Watcher

Figura 11 Paacutegina final do sistema pericial Whale Watcher

Atraveacutes das demonstraccedilotildees facultadas pela Acquire natildeo eacute possiacutevel concluir se existealgum tipo de sistema de explicaccedilotildees No entanto no final de cada sessatildeo do sistemapericial eacute possiacutevel consultar um resumo (ver 11) que funciona como uma explicaccedilatildeomuito baacutesica da inferecircncia realizada pelo sistema pericial jaacute que se limita apenas amostrar os factos que foram respondidos durante a sessatildeo

31

3Ferramentas utilizadas

Durante o desenvolvimento deste trabalho foi necessaacuterio decidir sobre quais as ferramen-tas a utilizar para a criaccedilatildeo do novo sistema pericial Atendendo a algumas caracteriacutesticasproacuteprias e objectivos traccedilados era necessaacuterio utilizar alguma especificidade na escolhapara garantir a exclusividade do resultado Desenvolvimento web capacidade de pro-ceder a inferecircncia sobre conhecimento representado atraveacutes de regras simplicidade deutilizaccedilatildeo actualidade da tecnologia entre outras caracteriacutesticas influenciaram significa-tivamente nesta escolha

Entre os vaacuterios ambientes de desenvolvimento disponiacuteveis a opccedilatildeo recaiu sobre umque para aleacutem de simples e eficiente era utilizado regularmente em situaccedilatildeo profissi-onal pelo criador deste projecto pelo que aqui foi relativamente simples chegar a umaconclusatildeo

Indo de encontro agraves razotildees que levaram agrave escolha da linguagem do motor de inferecircnciautilizada no projecto que deu origem a este trabalho tambeacutem aqui foi escolhida umalinguagem que possibilita o backtracking de forma eficaz e simplificada caracteriacutesticaessencial para o bom funcionamento do motor de inferecircncia e que contribui largamentepara o sucesso do sistema pericial

31 Ambiente de desenvolvimento

O ambiente de desenvolvimento e respectiva linguagem de programaccedilatildeo utilizados para acriaccedilatildeo do interface do sistema pericial foram seleccionados levando em conta algunsrequisitos e factores considerados necessaacuterios e ateacute mesmo essenciais para a soluccedilatildeo finalA listagem dessas caracteriacutesticas eacute a seguinte

bull Baixo custo de disponibilizaccedilatildeo

33

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

bull Independecircncia do sistema operativo

bull Simples escalabilidade

bull Visual apelativo

Com base nesta lista de caracteriacutesticas consideradas desejaacuteveis ou ateacute mesmo essen-ciais para a soluccedilatildeo final e considerando tambeacutem a jaacute longa experiecircncia de utilizaccedilatildeonesta plataforma foi escolhida a linguagem Java J2EE utilizando a framework Icefaces eo portal Glassfish Podemos considerar para esta escolha uma seacuterie de paracircmetros paraaleacutem dos jaacute evidenciados

bull O J2EE eacute uma linguagem independente do sistema operativo

bull O J2EE caracteriza-se pela sua modularidade

bull Glassfish eacute um portal open source com suporte para J2EE

bull Icefaces eacute uma framework JavaServer Faces (JSF) compatiacutevel com o Glassfish

bull Icefaces permite a criaccedilatildeo de interfaces graacuteficos de uma forma simples

bull Existecircncia de boa documentaccedilatildeo relativamente a todos os produtos

Para aleacutem disto podemos ainda considerar e referir outros produtos e componentesque natildeo sendo menos importantes tambeacutem foram utilizados durante o desenvolvimentodeste trabalho A lista completa de ferramentas eacute a seguinte

bull Java J2EE 60

bull Eclipse Galileo (com plugins para Glassfish e svn) - Integrated Development

Environment (IDE) para Java

bull Icefaces 182

bull GlassFish - portal

bull Visual SVN Server e Tortoise - controlo de versotildees

bull MikTeX - latex

bull TexnicCenter - IDE para latex

34

32 MOTOR DE INFEREcircNCIA

32 Motor de inferecircncia

Em qualquer sistema pericial o motor de inferecircncia eacute o cerne do mesmo O seu desenvol-vimento obriga habitualmente a um esforccedilo e concentraccedilatildeo maiores porque aqui residea forma como o sistema iraacute percorrer as vaacuterias etapas necessaacuterias para alcanccedilar umasoluccedilatildeo

Tambeacutem neste trabalho o motor de inferecircncia eacute um ponto essencial e a sua implemen-taccedilatildeo teve um papel destacado no processo de anaacutelise realizado Actualmente existemalguns produtos que podem ser utilizados integral ou parcialmente como motor deinferecircncia de um sistema pericial esses produtos podem ser frameworks ou shells ouainda Business Rule Management System (BRMS)

Os termos framework e shell satildeo muitas vezes utilizados como sinoacutenimo umaframework eacute uma abstracccedilatildeo que permite agregar formas de resoluccedilatildeo de problemascomuns uma shell eacute similar no sentido em que disponibiliza uma camada de abstracccedilatildeouma ldquoconchardquo que encapsula os serviccedilos

No sentido de tentar reutilizar um produto jaacute existente foi elaborado um estudo acercados actuais produtos e das suas caracteriacutesticas A abordagem seguida para esse estudo foiuma abordagem por fases em que gradualmente se foi estreitando o conjunto de soluccedilotildeesaceitaacuteveis mediante a utilizaccedilatildeo de alguns criteacuterios

Foram consideradas cinco fases

bull Fase I - Recolha de candidatos

bull Fase II - Requisitos base

bull Fase III - Viabilidade econoacutemica

bull Fase IV - Viabilidade teacutecnica

bull Fase V - Prova de conceito

321 Fase I - Recolha de candidatos

A fase I teve como objectivo recolher alguns dos actuais produtos que possuam caracteriacutes-ticas desejadas para um sistema deste geacutenero Natildeo foram considerados alguns produtosque satisfaziam os requisitos mas que natildeo permitem uma integraccedilatildeo com Java Foramidentificados os seguintes produtos como potenciais integradores do projecto

35

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

Produto BRMS FrameworkDrools X XHammurapi Rules XILog XJCLIPS XJESS XJEOPS XJRuleEngine XOpenL Tablets XOpenRules XProva language XYprolog XZilonis X

Tabela 1 Listagem de produtos da Fase I

Drools - ou JBoss Rules eacute um produto open source da RedHat (2010) Define umalinguagem especiacutefica para as regras Eacute desenvolvido em Java e utiliza um mecanismo deencadeamento directo baseado em regras natildeo implementa justificaccedilotildees

Hammurapi Rules - eacute um produto desenvolvido em Java por Hammurapi GroupEste motor de inferecircncia utiliza a sintaxe da linguagem Java para definiccedilatildeo de regras Eacutepossiacutevel definir grupos de regras em XML e estaacute disponiacutevel um plug-in para Eclipse quepermite a ediccedilatildeo destes grupos Suporta encadeamento directo e indirecto

ILOG - WebSphere ILOG Business Rule Management Systems eacute como o nome indicaum BRMS eacute um produto da IBM (2010) que requer licenciamento adequado Eacute necessaacuteriaa instalaccedilatildeo e configuraccedilatildeo de alguns componentes de forma a que o produto possa serutilizado por exemplo Rule Team Server Rule Execution Server Http server entreoutros

JCLIPS - eacute um produto open source mantido por uma comunidade e permite aintegraccedilatildeo entre Java e CLIPS O CLIPS ldquoC Language Integrated Production Systemrdquo eacuteum sistema pericial desenvolvido em linguagem C Maarten Menken (2010)

JESS - eacute um produto comercial da Sandia National Laboratories desenvolvidoem Java Eacute necessaacuterio adquirir licenccedilas para efectivar a utilizaccedilatildeo do mesmo ErnestFriedman-Hill (2010)

JEOPS - Java Embedded Object Production System (JEOPS) eacute uma framework open

source desenvolvida num acircmbito acadeacutemico por Carlos Figueira Filho

36

32 MOTOR DE INFEREcircNCIA

JRuleEngine - eacute um produto open source desenvolvido em Java e mantido porMcarniel (2010) As regras satildeo compiladas para classes Java

OpenL Tablets - eacute um BRMS open source cuja principal vantagem eacute a integraccedilatildeocom a folhas de caacutelculo Excel Permite a utilizaccedilatildeo de tabelas de decisatildeo no formatoExcel OpenL (2010)

OpenRules - eacute um produto da OpenRules Inc sujeito a licenccedila de utilizaccedilatildeo Eacutetotalmente orientado para a folha de caacutelculo Excel da Microsoft

Prova language - eacute um produto open source desenvolvido em Java por KozlenkovAlex and Paschke Disponibiliza uma linguagem muito semelhante ao prolog Eacute umproduto bastante direccionado para a comunicaccedilatildeo entre agentes expondo inclusiveacute umsistema multi-agente

Yprolog - eacute um produto open source desenvolvido em Java por Boris van SchootenEacute uma reacuteplica do prolog desenvolvida totalmente em Java Foi evoluindo ao longo dotempo a partir de produtos como o WProlog e o XProlog

Zilonis - eacute um produto desenvolvido em Java por Elie Levy O formato das regras eacutesemelhante ao CLIPS

322 Fase II - Requisitos base

A fase II teve como objectivo filtrar a lista de candidatos no sentido de excluir produtosque natildeo se enquadrem directamente com os requisitos do sistema a desenvolver Assimsendo foram excluiacutedos alguns dos candidatos jaacute indicados e os principais motivos daexclusatildeo satildeo

bull Natildeo permitirem a integraccedilatildeo com um portal

bull Formato das regras eacute fechado natildeo possibilitando possiacuteveis e futuras evoluccedilotildees

bull Natildeo disponibilizaccedilatildeo de acesso aos serviccedilos internos mais concretamente natildeofornecem uma framework de controlo Desta forma natildeo eacute possiacutevel reutilizar partesdo motor de inferecircncia ou do sistema de gestatildeo de regras sem que este seja feitoatraveacutes do proacuteprio produto

Candidatos excluiacutedos pelas razotildees atraacutes expostas

37

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProdutoILogOpenRulesOpenL Tablets

Tabela 2 Listagem de produtos excluiacutedos na Fase II

323 Fase III - Viabilidade econoacutemica

Sendo um paracircmetro com importacircncia relativa dada a possiacutevel aplicaccedilatildeo comercial deum produto baseado neste trabalho natildeo deixa de ser importante para o estudo realizadoDesta forma a fase III teve como objectivo filtrar a lista de resultados no sentido de excluirprodutos que natildeo sejam economicamente viaacuteveis quer por motivos de licenciamentocomercial quer por motivos de licenccedilas de utilizaccedilatildeo

Foram entatildeo considerados os produtos constantes da tabela 3 como natildeo viaacuteveis nosentido em que existem produtos open source similares para o efeito pretendido

ProdutoDroolsJESS

Tabela 3 Listagem de produtos excluiacutedos na Fase III

324 Fase IV - Viabilidade teacutecnica

Esta fase teve por objectivo filtrar a lista de resultados de forma a que os produtos natildeoviaacuteveis do ponto de vista teacutecnico natildeo sejam considerados para a escolha final

Os produtos que natildeo foram considerados viaacuteveis por questotildees teacutecnicas satildeo

38

32 MOTOR DE INFEREcircNCIA

Produto RazatildeoJEOPS Documentaccedilatildeo disponiacutevel bastante vaga projecto desconti-

nuado e natildeo estaacutevelJRuleEngine As regras satildeo compiladas para Java natildeo permite escalabili-

dade sem compilar o projectoZilonis Natildeo estaacute preparado para ser utilizado como framework ape-

nas permite uma aplicaccedilatildeo stand-alone

Hammurapi Rules As regras satildeo compiladas para Java natildeo permite escalabili-dade sem compilar o projecto

Tabela 4 Listagem de produtos excluiacutedos na Fase IV

325 Fase V - Prova de conceito

Nesta uacuteltima fase restaram trecircs produtos JClips Prova e YProlog Apoacutes a realizaccedilatildeode uma prova de conceito com estes produtos foram encontradas algumas vantagens edesvantagens Esta anaacutelise pode ser consultada nas tabelas 5 6 e 7

JClipsVantagens Desvantagens

bull Linguagem CLIPS bull Apenas permite 1 execuccedilatildeo deforma a permitir vaacuterias utilizaccedilotildeesdo motor de inferecircncia eacute necessaacuterioimplementar loacutegica especiacutefica

bull Ausecircncia de documentaccedilatildeo

Tabela 5 JClips - Vantagens e desvantagens

39

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProvaVantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza exemplos de uti-lizaccedilatildeo

bull Uacuteltima actualizaccedilatildeo em 10 deJunho de 2010

bull Instaacutevel

bull Bastante ocupaccedilatildeo de recursos(CPU e memoacuteria)

bull Disponibilizaccedilatildeo de pouca docu-mentaccedilatildeo

bull Ao invocar um predicado natildeo ins-tancia apenas as variaacuteveis na pri-meira vez mas devolve uma lista detodos os resultados possiacuteveis simi-lar ao predicado findall do LPA Pro-log

Tabela 6 Prova - Vantagens e desvantagens

YProlog

Vantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza documentaccedilatildeo eexemplos de utilizaccedilatildeo

bull Operaccedilotildees baacutesicas do Prologtecircm o mesmo comportamento

bull Uacuteltima actualizaccedilatildeo em 21 de Abrilde 2006

Tabela 7 YProlog - Vantagens e desvantagens

326 Conclusatildeo e fundamentaccedilatildeo da escolha

Tratando-se do nuacutecleo do sistema pericial e sabendo que natildeo existe actualmente ummotor de inferecircncia que corresponda totalmente aos requisitos necessaacuterios foi decidido

40

32 MOTOR DE INFEREcircNCIA

desenvolver um motor de inferecircncia de raiz recorrendo a um produto que permitisse umdesenvolvimento raacutepido e com uma curva de aprendizagem pouco acentuada Para tale depois do estudo realizado perante as vaacuterias hipoacuteteses disponiacuteveis foi decidido optarpelo YProlog

Na uacuteltima fase do estudo apresentado entre os candidatos disponiacuteveis este aparececomo o mais viaacutevel quer pelos aspectos de adaptabilidade funcionamento e facilidadede utilizaccedilatildeo quer ainda pelo nuacutemero reduzido de desvantagens encontradas face aosrestantes

41

4Wexsys

Este trabalho baseia-se na criaccedilatildeo de um sistema pericial baseado no GISPSA e oobjectivo principal passa pela integraccedilatildeo do novo sistema num ambiente de acesso globalou mais especificamente num portal web Para atingir tal meta foi descrito nos capiacutetulosanteriores quais as ferramentas a utilizar sendo que agora vamos compreender como eacuteque a soluccedilatildeo em si foi desenvolvida

O sistema que nasceu a partir desta implementaccedilatildeo foi baptizado com o nome wexsys- ldquoWeb Expert Systemrdquo Partindo da base do GISPSA o wexsys possui um motor deinferecircncia totalmente novo criado especificamente no acircmbito deste trabalho e ainda umabase de conhecimento Foi decidido adoptar o princiacutepio de utilizaccedilatildeo de regras para arepresentaccedilatildeo da base de conhecimento

De referir ainda que o raciociacutenio utilizado no motor de inferecircncia segue uma filosofiado tipo backward chaining princiacutepio jaacute descrito nos capiacutetulos anteriores

Detentor de uma interface considerada actual para os paracircmetros utilizados nos diasque correm este novo sistema pericial foi criado atraveacutes da utilizaccedilatildeo de J2EE e Icefaces

que lhe conferem um aspecto renovado e extremamente apelativo aos utilizadores Satildeoutilizadas teacutecnicas tais como Ajax que providenciam uma dinacircmica de funcionamentomuito interessante do ponto de vista da utilizaccedilatildeo

41 Arquitectura global

A soluccedilatildeo foi projectada de acordo com a arquitectura J2EE ou seja utilizando uma sepa-raccedilatildeo em moacutedulos ou componentes Foram criados dois moacutedulos principais pWexsysEAR

e WexsysEAR estes moacutedulos satildeo a separaccedilatildeo da aplicaccedilatildeo em duas grandes camadas acamada web e a camada de negoacutecio

Esta separaccedilatildeo permite a instalaccedilatildeo da aplicaccedilatildeo num uacutenico servidor ou uma instala-

43

CAPIacuteTULO 4 WEXSYS

ccedilatildeo distribuiacuteda por vaacuterios servidores possibilitando tambeacutem a utilizaccedilatildeo de clusters Estaseparaccedilatildeo torna-se bastante uacutetil se pretendermos expandir a aplicaccedilatildeo para uma utilizaccedilatildeomais intensa ao niacutevel dos acessos A possibilidade de instalaccedilatildeo em muacuteltiplas maacutequinaspermite a obtenccedilatildeo de melhores resultados quando confrontada com a utilizaccedilatildeo de umambiente com apenas um uacutenico servidor

Figura 12 Arquitectura da soluccedilatildeo

411 Moacutedulo pWexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente visual da soluccedilatildeo tambeacutem conhecida porPresentation Layer Este moacutedulo eacute composto pelos componentes descritos na figura 13

Figura 13 Arquitectura do moacutedulo visual

bull pWexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

44

41 ARQUITECTURA GLOBAL

bull wWexsysGUI - componente principal que conteacutem as JSPrsquos servlet e managed

beans

bull jWexsysWebClient - classes utilizadas na camada visual

bull TGGraphLayout - componente externo que disponibiliza um controlo que permitea definiccedilatildeo de um grafo este componente vai ser descrito na secccedilatildeo 4133

bull jWexsysLog - permite o registo da ocorrecircncia de erros

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

412 Moacutedulo WexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente de negoacutecio da aplicaccedilatildeo tambeacutem conhecidapor Business Layer eacute o centro de controlo de toda a soluccedilatildeo Este moacutedulo eacute compostopor alguns componentes como podemos ver na figura 14

Figura 14 Arquitectura do moacutedulo de negoacutecio

bull WexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

bull eWexsys - componente principal responsaacutevel pela criaccedilatildeo dos serviccedilos

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

bull jWexsysUtils - classes utilitaacuterias internas

45

CAPIacuteTULO 4 WEXSYS

bull jWexsysLog - componente auxiliar para permitir o tratamento de erros

bull jWexsysEngine - responsaacutevel pela implementaccedilatildeo do motor de inferecircncia

bull YProlog - permite a interpretaccedilatildeo de coacutedigo prolog Este componente vai serdescrito na secccedilatildeo 4133

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos

Como jaacute foi referido o wexsys foi desenvolvido respeitando a arquitectura J2EE como talos componentes que integram a aplicaccedilatildeo foram tambeacutem criados seguindo esse conceitoTodos os componentes foram estruturados de forma a poderem ser reutilizados com omiacutenimo de dependecircncias e toda a aplicaccedilatildeo foi projectada de forma a retirar o maacuteximopartido desta divisatildeo

Podemos ver na figura 15 um diagrama que permite verificar de que forma os compo-nentes estatildeo a ser utilizados O diagrama tem trecircs agrupamentos que pretendem descreverutilizando uma linguagem Object Oriented (OO) a sua visibilidade Os temos publicprotected e private satildeo utilizados como analogias aos respectivos conceitos na linguagemOO

4131 Camada de acesso puacuteblico

A camada de acesso puacuteblico expotildee os meacutetodos de interacccedilatildeo com a aplicaccedilatildeo sendocomposta por trecircs componentes wWexsysGUI jWexsysWebClient e eWexsysClient

Figura 15 Wexsys - Integraccedilatildeo dos componentes

46

41 ARQUITECTURA GLOBAL

Os componentes eWexsysClient e jWexsysWebClient contecircm interfaces de ligaccedilatildeoentre a camada visual e a camada de negoacutecio

eWexsysClient - disponibiliza as classes designadas Data Transfer Object (DTO) eainda o interface para os serviccedilos disponibilizados pelo wexsys

jWexsysWebClient - disponibiliza classes que caracterizam os conceitos de negoacuteciomas que contecircm atributos adicionais A razatildeo da existecircncia deste componente justificandashsecom a eventual expansatildeo da aplicaccedilatildeo para uma nova camada visual Os exemplos decoacutedigo 1 e 2 permitem-nos observar uma utilizaccedilatildeo de atributos extra na classe visualpara controlo de ocorrecircncia de erros

1 p u b l i c c l a s s RuleView

3 p r i v a t e i n t l e v e l = 0

5 Rule i d e n t i f i e r

7 p r i v a t e S t r i n g i d e n t i f i e r = n u l l

9 p r i v a t e S t r i n g i d e n t i f i e r E r r = n u l l

11 p r i v a t e b o o l e a n i d e n t i f i e r I n E r r = f a l s e

13

Rule d e s c r i p t i o n

15

p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

17

p r i v a t e S t r i n g d e s c r i p t i o n E r r = n u l l

19

p r i v a t e b o o l e a n d e s c r i p t i o n I n E r r = f a l s e

21

Coacutedigo 1 Excerto da classe RuleView

p u b l i c c l a s s Rule implemen t s S e r i a l i z a b l e

47

CAPIacuteTULO 4 WEXSYS

2

p r i v a t e i n t l e v e l = 0

4

Rule i d e n t i f i e r

6

p r i v a t e S t r i n g i d e n t i f i e r = n u l l

8

10 Rule d e s c r i p t i o n

12 p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

14 Coacutedigo 2 Excerto da classe Rule

O outro componente envolvido na camada puacuteblica o wWexsysGUI eacute o responsaacute-vel pela interacccedilatildeo com aplicaccedilatildeo Eacute o componente que disponibiliza as paacuteginas e oresponsaacutevel pela coordenaccedilatildeo de todo o processo web

4132 Camada de acesso protegido

A camada de acesso protegido disponibiliza componentes que podem ser utilizados pelosdois moacutedulos mas que natildeo estatildeo disponiacuteveis para o exterior Neste caso existe apenas umcomponente nestas condiccedilotildees o jWexsysLog cuja funccedilatildeo eacute assegurar o registo de erros

jWexsysLog - componente responsaacutevel pelo registo de erros utiliza internamente aframework log4j

4133 Camada de acesso privado

A camada de acesso privado incluiacute todos os componentes responsaacuteveis por processa-mento interno Os componentes responsaacuteveis pelo processamento interno satildeo eWexsysjWexsysEngine e jWexsysUtils Tambeacutem incluiacutedos no conceito de processamento internoestatildeo os componentes TGGraphLayout e YProlog

eWexsys - eacute o componente responsaacutevel pela implementaccedilatildeo do interface de negoacuteciodelegando as funcionalidades em classes especializadas ou no componente responsaacutevelpela integraccedilatildeo com o nuacutecleo da aplicaccedilatildeo o jWexsysEngine

48

41 ARQUITECTURA GLOBAL

jWexsysEngine - eacute o componente responsaacutevel pelo nuacutecleo da aplicaccedilatildeo ou sejaeacute o responsaacutevel pela integraccedilatildeo do java com o prolog e vice-versa Eacute o componenteresponsaacutevel pelo mapeamento das classes de java para as classes de comunicaccedilatildeo com oprolog

jWexsysUtils - eacute um componente auxiliar que disponibiliza e encapsula utilitaacuteriospara uma melhor organizaccedilatildeo interna da aplicaccedilatildeo

TGGraphLayout - eacute um componente tambeacutem conhecido por TouchGraph eacute umprojecto mantido por uma comunidade e estaacute disponiacutevel no sourceforge AlexanderShapiro (2010)

YProlog - este componente foi o escolhido durante a fase de estudo da implementaccedilatildeopara ser a base do motor de inferecircncia (321)

4134 Fluxo de invocaccedilatildeo

A aplicaccedilatildeo foi desenvolvida de forma a que todos os pedidos seguissem um mesmo fluxode invocaccedilatildeo de forma a uniformizar o processo Na figura 16 temos uma relaccedilatildeo dasclasses principais da aplicaccedilatildeo

Figura 16 Diagrama de classes principais

O fluxo de invocaccedilatildeo inicia-se atraveacutes do WexsysBean no caso de funcionalidades

49

CAPIacuteTULO 4 WEXSYS

do motor de inferecircncia ou atraveacutes do WexsysKBBean no caso de funcionalidades dabase de conhecimento Ambos os managed beans delegam no WexsysViewManager querecorrendo agrave classe WexsysViewHelper converte as classes view para classes DTO Aclasse WexsysViewManager por sua vez delega no session bean WexsysSessionBean quemediante o tipo de pedido delega nas classes de validaccedilatildeo ou nas classes do motor deinferecircncia WexsysEngineImpl

Este processo pode ser observado na figura 17 que representa um diagrama de sequecircn-cia exemplificativo do fluxo de invocaccedilatildeo geneacuterico

Figura 17 Diagrama de sequecircncia do fluxo de invocaccedilatildeo

414 Portal

O wexsys tem como ponto de entrada na aplicaccedilatildeo uma paacutegina inicial que permite aidentificaccedilatildeo do utilizador no sistema pericial Como se trata de um trabalho acadeacutemico aparte de validaccedilatildeo e autenticaccedilatildeo de utilizadores natildeo foi contemplada como tal eacute possiacutevelautenticar-se com qualquer utilizador Para aleacutem da autenticaccedilatildeo eacute ainda possiacutevel indicarpara a sessatildeo actual qual o miacutenimo grau de confianccedila para a apresentaccedilatildeo de uma resposta

50

41 ARQUITECTURA GLOBAL

O endereccedilo da aplicaccedilatildeo respeita o seguinte formato httpservidorportawWexsysGUI onde servidor e porta satildeo os dados de configuraccedilatildeo do Portal Server

Figura 18 Wexsys - Paacutegina inicial

Quando o utilizador inicia a utilizaccedilatildeo do sistema ficam disponiacuteveis trecircs funcionali-dades que seratildeo referidas nas secccedilotildees seguintes

4141 Templates

Um dos aspectos comuns a toda a aplicaccedilatildeo eacute o aspecto graacutefico tendo este sido imple-mentado recorrendo a Facelets Um template facelets define-se pela criaccedilatildeo de umapaacutegina modelo em que existem zonas dinacircmicas Este conceito eacute conhecido de outrastecnologias por exemplo Web Parts ou Master Pages desenvolvidos pela Microsoft

O coacutedigo 3 permite ver como foi desenvolvido o template principal

lthtml

2 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

4 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

6

lt i c e o u t p u t D e c l a r a t i o n

8 doc typeRoo t =HTML

d o c t y p e P u b l i c =minus W3C DTD XHTML 1 0 S t r i c t EN

10 doc typeSys tem = h t t p www w3 org TR xhtml1 DTD xhtml1minus s t r i c t

d t d gt

51

CAPIacuteTULO 4 WEXSYS

12 lthead gt

lt t i t l e gtwexsys minus p a g e T i t l e lt t i t l e gt

14 [ meta t a g s e l i n k t o c s s f i l e s ]

lt head gt

16 ltbody gt

lt f view l o c a l e = f a c e s C o n t e x t e x t e r n a l C o n t e x t r e q u e s t L o c a l e gt

18 lt i c e l o a d B u n d l e basename =com wexsys g u i r e s o u r c e s bund leRes

v a r = bund leRes gt

lt i c e form p a r t i a l S u b m i t = t r u e gt

20 lt d i v i d = wrapper gt

lt d i v i d = logo gt

22 lth1gtlta h r e f = gtWExSys lt a gt lt h1gt

lth2gtweb e x p e r t system lt h2gt

24 lt div gt

lt d i v i d = h e a d e r gt

26 lt d i v i d =menugt

[ Menu c o n t e n t ]

28 lt div gt

lt div gt

30 lt div gt

lt d i v i d = page gt

32 lt d i v i d = c o n t e n t gt

lt u i i n s e r t name= c o n t e n t gt

34 D e f a u l t C o n t e n t

lt u i i n s e r t gt

36 lt div gt

lt d i v i d = s i d e b a r gt

38 lt u i i n s e r t name= s i d e b a r gt

S i d e b a r c o n t e n t

40 lt u i i n s e r t gt

lt div gt

42 lt d i v s t y l e = c l e a r bo th gt

lt div gt

44 lt div gt

lt d i v i d = f o o t e r gt

46 F o o t e r c o n t e n t

lt div gt

48 lt i c e form gt

52

41 ARQUITECTURA GLOBAL

lt f view gt

50 lt body gt

lt html gt Coacutedigo 3 Coacutedigo do template principal do portal

Na listagem de coacutedigo 3 podemos ver a vermelho as aacutereas que foram definidas comodinacircmicas no coacutedigo 4 tambeacutem a vermelho podemos ver as respectivas aacutereas num cenaacuteriode implementaccedilatildeo de uma paacutegina

1 lt u i c o m p o s i t i o n

t e m p l a t e =WEBminusINF incminust e m p l a t e s mainminust e m p l a t e j s p x

3 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

5 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

7

9 lt u i d e f i n e name= c o n t e n t gt

[ ]

11 lt u i d e f i n e gt

13 lt u i d e f i n e name= s i d e b a r gt

[ ]

15 lt u i d e f i n e gt

17 lt u i c o m p o s i t i o n gt Coacutedigo 4 Coacutedigo da paacutegina inicial do portal

415 Suporte multi-liacutengua

O wexsys foi desenvolvido considerando um factor bastante relevante numa aplicaccedilatildeoactual o suporte multi-liacutengua Este suporte eacute uma das vantagens do sistema e foiimplementado recorrendo a ficheiros de recursos (properties) de forma a exteriorizartodos os textos de saiacuteda

Desta forma para dar suporte a uma nova liacutengua apenas teremos que traduzir os textosnos ficheiros de recursos e de alterar a aplicaccedilatildeo de forma a permitir seleccionar o idioma

53

CAPIacuteTULO 4 WEXSYS

A alteraccedilatildeo a ser efectuada na aplicaccedilatildeo eacute muito simples jaacute que basta passar o valor doatributo ldquolocalerdquo da tag ldquofviewrdquo como sendo a liacutengua pretendida

42 Motor de inferecircncia

Para este trabalho foi definida a criaccedilatildeo de um motor de inferecircncia de raiz que pudesseefectivamente substituir o utilizado no sistema base O novo motor desenvolvido teraacute quesuportar uma seacuterie de especificaccedilotildees a comeccedilar pela capacidade de operar num ambientemulti-utilizador

O motor de inferecircncia deve estar preparado para lidar com conhecimento incerto foiescolhido a teacutecnica dos factores de certeza por ser uma teacutecnica simples de reproduzir eeficaz na sua utilizaccedilatildeo

Para aleacutem disto e tratando-se um sistema pericial o motor de inferecircncia deveraacuteser independente da base de conhecimento utilizada e deveraacute idealmente suportar umsistema de explicaccedilotildees que responda a eventuais pedidos por parte dos utilizadores quepretendam ver mais detalhadamente quais as regras que conduziram agrave conclusatildeo obtidaTambeacutem seraacute possiacutevel saber porque eacute que determinada questatildeo eacute colocada (explicaccedilotildeesvulgarmente denominadas de como e porquecirc)

421 Multi-utilizador

Quando se pretende que um sistema pericial tenha uma utilizaccedilatildeo mono-posto (comoera o caso do GISPSA) apenas eacute criada uma instacircncia por cada vez que eacute chamado omotor de inferecircncia No nosso caso tendo sido estabelecido que o novo sistema teriaque permitir uma utilizaccedilatildeo multi-utilizador eacute necessaacuterio desenvolver os mecanismosnecessaacuterios para permitir execuccedilotildees de vaacuterias instacircncias para o novo motor de inferecircncia

A classe WexsysEngineFactory5 eacute a responsaacutevel por criar uma instacircncia do motorde inferecircncia por cada utilizador que inicia a utilizaccedilatildeo do sistema Esta classe tem ummeacutetodo do tipo static o meacutetodo getInferenceEngine que tem como paracircmetros de entradaum utilizador e devolve uma instacircncia do motor de inferecircncia As instacircncias activas satildeoguardadas internamente e sempre que eacute invocado o meacutetodo eacute obtida a respectiva instacircnciaNo caso de ainda natildeo existir uma instacircncia entatildeo eacute criada uma nova e guardada

1

C r e a t e s an i n s t a n c e o f I n f e r e n c e E n g i n e

54

42 MOTOR DE INFEREcircNCIA

3

param usernameKey

5 The usernameKey t o use

7 return I n f e r e n c e E n g i n e i n s t a n c e

throws WexsysArgumen tExcep t ion

9

p u b l i c s t a t i c WexsysEngineImpl g e t I n f e r e n c e E n g i n e ( S t r i n g

usernameKey )

11 throws WexsysArgumentExcept ion

i f ( g e t R u l e U r l ( ) == n u l l | | g e t R u l e U r l ( ) l e n g t h ( ) == 0)

13 throw new WexsysArgumentExcept ion ( mainKnowledgeBaseUrl

r u l e U r l )

15 WexsysEngineImpl i n f e r e n c e E n g i n e = n u l l

17 Have we a l r e a d y c r e a t e d an i n s t a n c e

i f ( g e t I n f e r e n c e E n g i n e s ( ) c o n t a i n s K e y ( usernameKey ) )

19 Obta in t h e i n s t a n c e a s s o c i a t e d t o t h e s p e c i f i e d key

i n f e r e n c e E n g i n e = g e t I n f e r e n c e E n g i n e s ( ) g e t ( usernameKey )

21 e l s e

Cr ea t e a new i n s t a n c e and s t o r e i t i n t h e h o l d e r

23 i n f e r e n c e E n g i n e = new WexsysEngineImpl ( usernameKey

r u l e U r l kb sUr l )

g e t I n f e r e n c e E n g i n e s ( ) p u t ( usernameKey i n f e r e n c e E n g i n e )

25

27 re turn i n f e r e n c e E n g i n e

Coacutedigo 5 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo

422 Base de conhecimento inicial

Ao partir para o desenvolvimento de um sistema pericial eacute necessaacuterio adoptar uma basede conhecimento inicial simples que sirva de suporte ao desenvolvimento do mesmo

55

CAPIacuteTULO 4 WEXSYS

A base de conhecimento inicial foi adoptada a partir do estudo de Merritt (1989) Foiseleccionada devido a duas caracteriacutesticas principais

bull simplicidade - no sentido em que as regras satildeo pequenas e simples de interligar

bull abrangecircncia - existem alguns cenaacuterios possiacuteveis de serem testados com o protoacutetipocomo por exemplo raciociacutenio sobre incerteza e conclusotildees intermeacutedias

A base de conhecimento inicial escolhida tem a seguinte estrutura

bull rule 1 if not turn_over and battery_bad then problem is battery cf 100

bull rule 2 if lights_weak then battery_bad cf 50

bull rule 3 if radio_weak then battery_bad cf 50

bull rule 4 if turn_over and smell_gas then problem is flooded cf 80

bull rule 5 if turn_over and gas_gauge is empty then problem is out_of_gas cf 90

bull rule 6 if turn_over and gas_gauge is low then problem is out_of_gas cf 30

423 Protoacutetipo do motor de inferecircncia

Para o desenvolvimento do protoacutetipo inicial do motor de inferecircncia foi necessaacuterio definiralguns aspectos essenciais tais como

1 Formato da regras

2 Formato das questotildees

3 Interacccedilatildeo assiacutencrona de questotildees e respostas

4 Algoritmos a utilizar

4231 Formato das regras

O formato das regras foi definido tendo em conta alguns pressupostos Entre elessalientam-se a necessidade da utilizaccedilatildeo de graus de confianccedila e a capacidade de guardaruma descriccedilatildeo para cada regra

O formato escolhido para a representaccedilatildeo de uma regra foi o seguinte

56

42 MOTOR DE INFEREcircNCIA

rule(

ltcodigogt rsquoDescriccedilatildeo da regrarsquo

lhs([

ev(ltpremissagt ltvalor da premissagt)

ev(ltpremissa_ngt ltvalor da premissa_ngt)

])

rhs(ev(ltsoluccedilatildeogt ltvalor da soluccedilatildeogt) CF)

)

Na definiccedilatildeo do ltLHSgt eacute possiacutevel definir uma lista de premissas e respectivos valoresno caso da regra conter mais do que uma premissa Um aspecto relevante relacionado coma lista de premissas eacute que esta considera apenas o operador conjunccedilatildeo entre premissas

4232 Formato das questotildees

O formato das questotildees foi tambeacutem definido assumindo alguns princiacutepios tais como apossibilidade de respostas muacuteltiplas e ainda a atribuiccedilatildeo de um texto quer agrave questatildeo a serapresentada quer agraves hipoacuteteses colocadas

O formato escolhido para a representaccedilatildeo de uma questatildeo foi o seguinte

question(

turn_over

rsquoO carro ligarsquo

[

answer(ltvalorgt ltdescriccedilatildeo do valorgt)

answer(ltvalor_ngt ltdescriccedilatildeo do valor_ngt)

]

ltescolha_multipla = 1 0gt

)

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas

Numa qualquer execuccedilatildeo de um software instalado e executado localmente numa maacutequinao funcionamento normal seraacute a execuccedilatildeo de um conjunto de instruccedilotildees ateacute ao ponto emque seja necessaacuteria a interacccedilatildeo com um utilizador Quando isso acontece o programafica suspenso ateacute que o utilizador responda ao que lhe foi solicitado continuando depoiscom a sua execuccedilatildeo a partir do ponto onde parou

57

CAPIacuteTULO 4 WEXSYS

No caso de um programa desenvolvido em prolog e mais especificamente um sistemapericial o conceito atraacutes descrito eacute exactamente o mesmo jaacute que o programa apenassuspende a execuccedilatildeo quando eacute necessaacuterio colocar uma questatildeo que o utilizador teraacute queforccedilosamente responder para dar continuidade ao programa

Se no entanto considerarmos a realidade de uma aplicaccedilatildeo web este princiacutepio jaacutenatildeo seraacute tatildeo linear porque um servidor web recebe um pedido executa-o e devolve umresultado O mesmo seraacute dizer que numa execuccedilatildeo de um componente prolog a partirde um servidor web a pilha de execuccedilatildeo eacute interrompida quando eacute necessaacuterio questionaro utilizador mas natildeo eacute possiacutevel continuar a execuccedilatildeo da mesma a partir do ponto ondeparou Em vez disso seraacute necessaacuterio desfazer a pilha de execuccedilatildeo criada e assim queexistir a resposta do utilizador (eacute feito novo pedido ao servidor) a execuccedilatildeo eacute realizadanovamente desde o iniacutecio mas desta vez considerando a resposta recebida

As razotildees para este comportamento justificam-se pela utilizaccedilatildeo do protocolo HTTPem que eacute necessaacuterio existir um pedido e uma resposta O que obriga a que a colocaccedilatildeoda pergunta e a resposta sejam assiacutencronos podendo existir entre as duas acccedilotildees vaacuteriospedidos (pedidos de explicaccedilotildees por exemplo)

Este ldquoproblemardquo levou agrave necessidade do desenvolvimento de um mecanismo quepermita um funcionamento coerente num programa que utilize (como neste caso) oprolog simulando o comportamento que este teria numa situaccedilatildeo de execuccedilatildeo local

O mecanismo proposto foi a alteraccedilatildeo do predicado responsaacutevel pelo processo re-cursivo especificando um atributo auxiliar de controlo que acompanha a execuccedilatildeo dopredicado Esse atributo auxiliar quando detectada a necessidade de colocaccedilatildeo de umaquestatildeo eacute instanciado e impede a prossecuccedilatildeo do predicado retornando a execuccedilatildeo paraa web com a respectiva questatildeo

Este mecanismo permite uma comunicaccedilatildeo assiacutencrona com a parte web mantendo asvantagens da recursividade do prolog

4234 Estrutura da base de conhecimento

A base de conhecimento apoacutes a definiccedilatildeo do formato de representaccedilatildeo das regras e dasquestotildees eacute a seguinte

q u e s t i o n ( t u r n _ o v e r rsquoO c a r r o l i g a rsquo

2 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

4 q u e s t i o n ( l i g h t s _ w e a k rsquoAs l u z e s e s t a o f r a c a s rsquo

58

42 MOTOR DE INFEREcircNCIA

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

6

q u e s t i o n ( rad io_weak rsquoO r a d i o e s t a f r a c o rsquo

8 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

10 q u e s t i o n ( s m e l l _ g a s rsquo C h e i r a a g a s o l i n a rsquo

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

12

q u e s t i o n ( gas_gauge rsquoO que marca o p o n t e i r o do d e p o s i t o da

g a s o l i n a rsquo

14 [ answer ( empty rsquo Vazio rsquo ) answer ( high rsquo S u f i c i e n t e rsquo ) answer

( low rsquo Rese rva rsquo ) ] 0 )

16 r u l e ( r u l e _ 1 rsquo Rule 1 rsquo

l h s ( [ ev ( t u r n _ o v e r no ) ev ( b a t t e r y _ b a d yes ) ] ) r h s ( ev (

problem b a t t e r y ) 100) )

18

r u l e ( r u l e _ 2 rsquo Rule 2 rsquo

20 l h s ( [ ev ( l i g h t s _ w e a k yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

22 r u l e ( r u l e _ 3 rsquo Rule 3 rsquo

l h s ( [ ev ( rad io_weak yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

24

r u l e ( r u l e _ 4 rsquo Rule 4 rsquo

26 l h s ( [ ev ( s m e l l _ g a s yes ) ev ( t u r n _ o v e r yes ) ] ) r h s ( ev ( problem

f l o o d e d ) 80) )

28 r u l e ( r u l e _ 5 rsquo Rule 5 rsquo

l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge empty ) ] ) r h s ( ev (

problem o u t _ o f _ g a s ) 90) )

30

r u l e ( r u l e _ 6 rsquo Rule 6 rsquo

32 l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge low ) ] ) r h s ( ev ( problem

o u t _ o f _ g a s ) 30) ) Coacutedigo 6 Representaccedilatildeo da base de conhecimento do protoacutetipo

59

CAPIacuteTULO 4 WEXSYS

4235 Algoritmos a utilizar

Um dos paracircmetros mais relevantes para o funcionamento do algoritmo inicial eacute o graumiacutenimo de confianccedila que eacute indicado no iniacutecio da utilizaccedilatildeo do sistema na paacutegina inicialSe o valor indicado para este paracircmetro for demasiado elevado poderaacute inibir algumasregras impedindo o seu disparo no caso de natildeo ser atingido o grau de confianccedila necessaacuterioPor outro lado se o valor introduzido for demasiado baixo permitiraacute que qualquer regradispare independentemente do seu grau de confianccedila traduzindo-se numa maior aacutervorede pesquisa

O motor de inferecircncia eacute executado mediante o recurso a um predicado principal Estepredicado seraacute o responsaacutevel pelo iniacutecio do processo de inferecircncia De seguida seratildeoapresentados alguns dos algoritmos considerados mais relevantes Os algoritmos 1 2 e 3representam atraveacutes da utilizaccedilatildeo de pseudo-coacutedigo alguma da loacutegica implementada nomotor de inferecircncia

Algoritmo 1 Algoritmo principal do motor de inferecircnciabegin tryToProve

while empty ControlObj doobtemRegra (r)disparoPremissaslarr truefor premissa isin LHS do

ControlObjdisparoularr verificaPremissa (p)disparoPremissaslarr disparoPremissas ampamp disparouif not empty ControlObj then

termina o algoritmoend

endif empty ControlObj then

if disparoTodasPremissas thenfireRules

endend

endend

60

42 MOTOR DE INFEREcircNCIA

Algoritmo 2 Verifica se uma premissa eacute verdadeirainput Premissa poutput ControlObj disparoubegin verificaPremissa

disparoularr false ControlObjlarr nullif checkExistFact (p) ou checkExistQuestionFact (p) oucheckExistRuleFact (pControlObj) then

disparoularr true exitend

end

Algoritmo 3 Dispara as regras que possam ser disparadasbegin fireRules

for regra isin basedeconhecimento doif regra not fired then

if regra pode disparar thencalcula grau de confianccediladispara regraif regra dispara soluccedilatildeo final then

termina execuccedilatildeo preenchendo ControlObjendif regra natildeo dispara soluccedilatildeo final then

continuaend

endend

endend

61

CAPIacuteTULO 4 WEXSYS

424 Resultado final

Apoacutes a implementaccedilatildeo do protoacutetipo inicial do motor de inferecircncia e dos testes necessaacuteriosagrave verificaccedilatildeo do bom funcionamento do mesmo chegamos ao resultado final que foiutilizado no wexsys

Este novo motor de inferecircncia foi desenvolvido levando em consideraccedilatildeo todasas caracteriacutesticas consideradas essenciais tanto para a execuccedilatildeo num ambiente multi-utilizador como para a execuccedilatildeo num servidor web e que foram jaacute descritas nas secccedilotildeesanteriores De referir ainda que face ao motor de inferecircncia do sistema base esteapresenta uma seacuterie de melhorias tais como rapidez de funcionamento e abstracccedilatildeo dabase de conhecimento utilizada

4241 Arranque da execuccedilatildeo

Como jaacute referido o motor de inferecircncia segue os algoritmos descritos na secccedilatildeo 4235 enesta secccedilatildeo seraacute abordado o processo utilizado desde o arranque do motor de inferecircnciaateacute agrave apresentaccedilatildeo dos dados como podemos ver na figura 19

Figura 19 Paacutegina inicial do motor de inferecircncia

O utilizador comeccedila na paacutegina inicial e selecciona a opccedilatildeo ldquoMotor de InferecircnciardquoDepois eacute apresentada uma paacutegina que permite iniciar o motor de inferecircncia utilizando a

62

42 MOTOR DE INFEREcircNCIA

opccedilatildeo ldquoiniciarrdquo Isto despoleta o mecanismo de inferecircncia como podemos verificar nafigura 20

Figura 20 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia

A classe YProlog invoca o predicado top_goals que mais natildeo eacute que o ponto de entradano motor de inferecircncia A sua funccedilatildeo seraacute obter qual a ldquoconclusatildeo final a procurarrdquo (estetoacutepico seraacute descrito na secccedilatildeo 432) para se poder iniciar o algoritmo propriamentedito Na listagem de coacutedigo 7 eacute possiacutevel consultar os predicados responsaacuteveis pelaimplementaccedilatildeo dos algoritmos Apenas estatildeo listados os predicados principais

Eacute possiacutevel consultar o coacutedigo do motor de inferecircncia no anexo A

t o p _ g o a l s ( Con t ro lOb j MinCF ) minus

2 t o p _ g o a l ( TopGoal )

t o p ( TopGoal Con t ro lOb j MinCF )

63

CAPIacuteTULO 4 WEXSYS

4

t o p ( TopGoal Con t ro lOb j MinCF ) minus6 r e t r a c t a l l ( h i s t 2 ) s e t ( l en 0 )

g e t R u l e M o r e R e l e v a n t ( TopGoal Rule )

8 t r y T o P r o v e ( Rule Con t ro lOb j MinCF )

10 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) minusr u l e ( Rule _ l h s (LHS) _ )

12 p r o v e L i s t H y p (LHS Con t ro lOb j MinCF )

g e t ( l en LEN) LEN1 i s LEN + 1

14 a s s e r t ( h i s t ( LEN1 Rule ) )

s e t ( l en LEN1)

16 (

check i f r u l e has re turn c o n t r o l o b j e c t

18 ( v a r ( C o n t r o l O b j ) ) minusgt(

no c o n t r o l o b j e c t found check i f o t h e r r u l e s needs t o

be f i r e d

20 f i r e R u l e s ( Con t ro lOb j MinCF )

) (

22 c o n t r o l o b j e c t found

t rue24 )

)

26

p r o v e L i s t H y p ( [ ] Con t ro lOb j MinCF )

28 p r o v e L i s t H y p ( [H | T ] Con t ro lOb j MinCF ) minusproveHyp (H Con t ro lOb j MinCF )

30 (

( v a r ( C o n t r o l O b j ) ) minusgt (

32 p r o v e L i s t H y p ( T Con t ro lOb j MinCF )

) (

34 t rue)

36 )

38

f a c t a l r e a d y known

40 proveHyp (H Con t ro lOb j MinCF ) minus

64

42 MOTOR DE INFEREcircNCIA

H = ev (X Y) f a c t (X Y _ )

42

t h e r e i s a q u e s t i o n t h a t can l e a d t o a f a c t

44 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

n o t ( f a c t (X _ _ ) )

46 q u e s t i o n (X _ _ _ )

n o t ( n o t _ q u e s t i o n (X) )

48 C o n t r o l O b j = ask (X)

50 t h e r e i s a c o n c l u s i o n t h a t can

l e a d t o a q u e s t i o n t h a t can l e a d t o a f a c t

52 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

r u l e ( Rule _ l h s (LHS) r h s ( ev (X _ ) V) )

54 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) Coacutedigo 7 Predicados principais do motor de inferecircncia

4242 Mecanismo de respostas

O mecanismo de respostas eacute algo similar ao processo descrito anteriormente A suafunccedilatildeo seraacute guardar a resposta que foi seleccionada pelo utilizador e prosseguir com oalgoritmo de forma a que uma nova questatildeo seja colocada ou a soluccedilatildeo final alcanccedilada

Um paracircmetro considerado obrigatoacuterio na submissatildeo de uma resposta eacute o grau deconfianccedila Este valor serviraacute para realizar o caacutelculo do grau de confianccedila da regra quandoa mesma puder ser disparada

Podemos ver na figura 21 o processo de resposta a uma questatildeo

65

CAPIacuteTULO 4 WEXSYS

Figura 21 Fluxo de invocaccedilatildeo de resposta a uma questatildeo

Eacute ainda possiacutevel natildeo responder agrave questatildeo colocada utilizando a opccedilatildeo ldquonatildeo sei natildeoresponderrdquo Esta opccedilatildeo iraacute guardar internamente uma indicaccedilatildeo para natildeo voltar a colocara questatildeo ignorada evitando entrar em ciclos

Agrave medida que o processo avanccedila eacute possiacutevel acompanhar o estado actual do motor deinferecircncia Este acompanhamento eacute realizado mediante a anaacutelise da zona situada do ladodireito da paacutegina e que vai sendo actualizada a cada interacccedilatildeo com o motor de inferecircnciaA zona referida permite obter informaccedilotildees acerca de

bull Regras que jaacute foram disparadas

bull Factos que foram inferidos pelo disparo das regras

bull Factos que foram facultados pelo utilizador ao responder agraves questotildees

bull Factos conhecidos antes do iniacutecio do processo de inferecircncia

66

42 MOTOR DE INFEREcircNCIA

Estes factos satildeo obtidos atraveacutes do predicado ldquoinf_sys((L_Rules L_Inf_Facts L_Know_FactsL_Init_Facts)rdquo Este predicado eacute invocado apoacutes cada interacccedilatildeo com o motor de inferecircnciae desta forma os dados estatildeo sempre actualizados

4243 Conclusatildeo final encontrada

Quando o disparo de uma regra leva a que seja adicionado um facto que corresponde auma soluccedilatildeo final o motor de inferecircncia termina a sua execuccedilatildeo devolvendo a conclusatildeofinal a que chegou bem como o respectivo grau de confianccedila Na figura 22 podemos ver afase final do processo de inferecircncia O grau de confianccedila da conclusatildeo final eacute atribuiacutedocom recurso agrave foacutermula seguinte

Dada uma regra X com premissas P1 a Pn e CF =CF (X) entatildeo temos

CF(X P1 Pn) = min [CF(P1) CF(Pn)]timesCF(X)

Figura 22 Conclusatildeo da inferecircncia

4244 Explicaccedilotildees

Eacute possiacutevel em qualquer altura colocar a questatildeo ldquoporquecircrdquo antes de submetermos umaresposta ou a questatildeo ldquocomordquo apoacutes uma conclusatildeo final Este tipo de explicaccedilotildeescontribui para a fase de validaccedilatildeo do sistema pericial colocando-as ao dispor do perito

67

CAPIacuteTULO 4 WEXSYS

responsaacutevel pela validaccedilatildeo expondo desta forma o raciociacutenio seguido no decorrer dainferecircncia Exemplos da solicitaccedilatildeo de explicaccedilotildees podem ser consultados atraveacutes dasfiguras 23 24 e 25

Figura 23 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo

68

42 MOTOR DE INFEREcircNCIA

Figura 24 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia

Figura 25 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final

69

CAPIacuteTULO 4 WEXSYS

As explicaccedilotildees ldquoporquecircrdquo foram implementadas recorrendo a predicados temporaacuterios(hist) que acompanham o desenrolar do motor de inferecircncia Eacute possiacutevel em qualqueraltura consultar esses predicados para obter de uma forma imediata a explicaccedilatildeo doporquecirc da questatildeo estar a ser feita

As explicaccedilotildees ldquocomordquo jaacute seguem um mecanismo mais complexo Quando umaregra eacute disparada origina conclusotildees intermeacutedias ou finais essas conclusotildees natildeo satildeo maisdo que simples factos O motor de inferecircncia sempre que dispara uma regra associa aofacto a regra que o originou por intermeacutedio do predicado inf_exp_how

Desta forma basta algum coacutedigo para que seja possiacutevel a obtenccedilatildeo de ambas asexplicaccedilotildees Esse coacutedigo pode ser consultado na listagem 8 em que os predicados why ehow se referem agraves explicaccedilotildees ldquoporquecircrdquo e ldquocomordquo respectivamente

why ( L ) minus

2 f i n d a l l ( r (OX) h i s t (OX) L )

4 how ( A t t r Value R e s u l t ) minusin f_exp_how ( A t t r Value Ru le s )

6 explainHow ( Rules E x p l a n a t i o n )

append ( Rules E x p l a n a t i o n R e s u l t )

8

explainHow ( [ ] [ ] )

10 explainHow ( [H | T ] R e s u l t ) minusi n n e r E x p l a i n (H E x p l a n a t i o n H )

12 explainHow ( T E x p l a n a t i o n R u l e s )

append ( Explana t ionH E x p l a n a t i o n R u l e s R e s u l t )

14

16 i n n e r E x p l a i n ( Rule E x p l a n a t i o n ) minusr u l e ( Rule _ l h s (LHS) _ )

18 expla inLHS (LHS E x p l a n a t i o n )

20 expla inLHS ( [ ] [ ] )

expla inLHS ( [ ev ( A t t r Value ) | T ] E x p l a n a t i o n A ) minus22 n o t ( inf_exp_how ( A t t r Value _ ) )

f a c t ( A t t r Value _ )

24 expla inLHS ( T E x p l a n a t i o n A )

70

43 BASE DE CONHECIMENTO

26 expla inLHS ( [ ev ( A t t r Value ) | T ] Resu l tA ) minushow ( A t t r Value E x p l a n a t i o n A )

28 expla inLHS ( T E x p l a n a t i o n )

append ( Explana t ionA E x p l a n a t i o n Resu l tA ) Coacutedigo 8 Predicados principais do sistema de explicaccedilotildees

43 Base de conhecimento

A base de conhecimento armazena o conhecimento extraiacutedo de um ou mais peritos e con-siste numa seacuterie de factos e regras acerca de um determinado domiacutenio Sendo dependenteda aacuterea que se pretende abranger com o sistema pericial a base de conhecimento eacute deconstruccedilatildeo especiacutefica para cada situaccedilatildeo em que seja necessaacuterio desenvolver este tipo desistema

Os procedimentos de inserccedilatildeo actualizaccedilatildeo e remoccedilatildeo dos factos e regras que com-potildeem a base de conhecimento (gestatildeo da base de conhecimento) teratildeo que ser na medidado possiacutevel procedimentos simples que sejam facilmente compreendidos pelos utilizado-res

As funcionalidades de gestatildeo da base de conhecimento estatildeo disponiacuteveis na opccedilatildeoldquoBase de Conhecimentordquo da paacutegina inicial como podemos observar na figura 26

71

CAPIacuteTULO 4 WEXSYS

Figura 26 Paacutegina inicial da gestatildeo da base de conhecimento

431 Leitura da base de conhecimento

Ao iniciar a execuccedilatildeo a base de conhecimento eacute carregada para memoacuteria a partir de umficheiro Este processo eacute realizado de forma iterativa e de acordo com uma determinadasequecircncia regras questotildees conclusatildeo final e por uacuteltimo os factos iniciais

Por sua vez o carregamento das regras eacute efectuado em duas fases sendo que primeirosatildeo obtidas as regras existentes (ldquoretrieve_rules(L)rdquo) e depois para cada regra eacute construiacutedaa sua estrutura (ldquobuildRuleObjectrdquo) Podemos observar a descriccedilatildeo deste processo nafigura 27

72

43 BASE DE CONHECIMENTO

Figura 27 Processo de carregamento das regras

Quanto ao carregamento das questotildees eacute similar ao das regras jaacute que eacute efectuadoigualmente em duas fases Primeiro obtecircm-se todas as questotildees (ldquoretrieve_questions(L)rdquo)e depois para cada questatildeo eacute preenchida a sua estrutura (ldquobuildQuestionObjectrdquo)

Jaacute o carregamento da conclusatildeo final eacute realizado atraveacutes do predicado ldquotop_goal(L)rdquoEste predicado vai devolver a conclusatildeo final guardada

Por fim os factos iniciais satildeo obtidos reutilizando um processo de obtenccedilatildeo de factos(ldquoinf_sys((L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)rdquo) Este processo jaacute foireferido na secccedilatildeo que descreve o motor de inferecircncia (4242)

432 Conclusatildeo final a encontrar

A conclusatildeo final a encontrar representa o predicado que vai ser considerado comoobjectivo no decorrer do motor de inferecircncia Soacute vatildeo ser consideradas soluccedilotildees queconvergem para uma soluccedilatildeo final que contenha o predicado especificado no RHS

Para definir uma conclusatildeo final basta especificar o nome do predicado da soluccedilatildeoque pretendemos encontrar com o motor de inferecircncia

73

CAPIacuteTULO 4 WEXSYS

433 Factos iniciais

Os factos iniciais permitem adicionar conhecimento preacutevio a uma base de conhecimentoPara adicionaacute-los eacute necessaacuterio utilizar o botatildeo ldquoAdicionar facto inicialrdquo e preencher oscampos necessaacuterios Para remover um facto inicial previamente inserido eacute utilizado obotatildeo ldquoRemover facto inicialrdquo e eacute necessaacuterio confirmar a acccedilatildeo que se estaacute a efectuar deforma a evitar uma remoccedilatildeo acidental

434 Regras

As regras satildeo o ponto essencial da gestatildeo da base de conhecimento As regras satildeo osdados disponiacuteveis para a aplicaccedilatildeo e como tal quanto melhor forem definidas melhorqualidade a aplicaccedilatildeo teraacute no sentido em que os resultados seratildeo mais correctos e fiaacuteveis

4341 CriarAlterar uma regra

O processo de criaccedilatildeo de uma nova regra foi simplificado Jaacute natildeo eacute necessaacuterio conhecera sintaxe das regras e tambeacutem jaacute natildeo eacute necessaacuterio conhecer os factos a utilizar comopremissas

Para adicionar uma regra apenas temos que arrastar questotildees eou conclusotildees inter-meacutedias de forma a construir a regra que pretendemos inserir

No caso de estarmos a alterar uma regra ou no caso de termos adicionado uma questatildeoou conclusatildeo intermeacutedia incorrectamente podemos eliminar essa premissa simplesmenteseleccionando a ldquocheckboxrdquo respectiva e utilizar a opccedilatildeo ldquoRemover seleccionadosrdquo

74

43 BASE DE CONHECIMENTO

Figura 28 Introduzir uma nova regra

Apoacutes termos arrastado todas as questotildees eou conclusotildees intermeacutedias para a lista depremissas temos que indicar os respectivos valores Este processo estaacute simplificado nosentido em que apenas temos que utilizar a caixa de selecccedilatildeo agrave frente de cada controlo eseleccionar o respectivo valor

Os valores apresentados satildeo obtidos de forma diferente quer se trate de uma questatildeo oude uma conclusatildeo intermeacutedia No caso das questotildees os valores obtidos satildeo os indicadosaquando da sua inserccedilatildeo No caso das conclusotildees intermeacutedias satildeo obtidos todos os valoresutilizados nas regras ateacute ao momento Sempre que uma regra eacute inserida ou actualizadaeacute despoletado um processo que actualiza os valores das conclusotildees intermeacutedias com osnovos valores introduzidos

75

CAPIacuteTULO 4 WEXSYS

Figura 29 Apresentaccedilatildeo de valores configurados na questatildeo

4342 Questotildees

As questotildees acabam por ser o ponto de contacto da aplicaccedilatildeo com o utilizador Sempreque eacute necessaacuterio suspender o processamento para questionar o utilizador este teraacute ahipoacutetese de intervir na execuccedilatildeo Atraveacutes das questotildees colocadas vai ser possiacutevel inferiroutros factos que no final e numa situaccedilatildeo ideal conduzem a uma soluccedilatildeo possiacutevel

Uma questatildeo eacute identificada por um coacutedigo por uma descriccedilatildeo e ainda por um conjuntode valores possiacuteveis as respostas Quando inserimos uma nova regra podemos criar novasquestotildees utilizando a opccedilatildeo ldquoAdicionar uma questatildeordquo Surge entatildeo o formulaacuterio deintroduccedilatildeo de uma questatildeo como podemos ver na figura 30

Figura 30 Formulaacuterio de introduccedilatildeo de uma questatildeo

As respostas configuradas no formulaacuterio de introduccedilatildeo seratildeo as respostas que iratildeoaparecer quando inserirmos uma nova regra e arrastarmos a questatildeo para a lista depremissas

76

43 BASE DE CONHECIMENTO

4343 Verificaccedilatildeo

Apoacutes a introduccedilatildeo ou alteraccedilatildeo das regras deve ser realizado o processo de verificaccedilatildeoda base de conhecimento De uma forma quase imperceptiacutevel na fase de introduccedilatildeode regras estamos a activar este processo jaacute que eacute garantido que as regras introduzidasestatildeo coerentes e que os valores das premissas efectivamente existem Podemos dizerque estamos perante a primeira fase do processo de verificaccedilatildeo designado por verificaccedilatildeoproacute-activa

Para este trabalho foi considerado a verificaccedilatildeo de dois tipos de anomalia na base deregras redundacircncia e regras duplicadas A inclusatildeo de novos mecanismos de verificaccedilatildeoeacute possiacutevel bastando para isso a alteraccedilatildeo do predicado ldquoverification(L)rdquo

A grande diferenccedila entre os dois meacutetodos implementados eacute que uma regra redundanteadiciona conhecimento desnecessaacuterio agrave base de conhecimento enquanto que uma regraduplicada como o nome indica eacute apenas uma duplicaccedilatildeo do conhecimento

Na figura 31 podemos verificar o mecanismo de verificaccedilatildeo implementado que permiteidentificar que regra estaacute em conflito com que outra regra e qual o tipo de conflito

Figura 31 Verificaccedilatildeo da base de conhecimento

435 Gravaccedilatildeo da base de conhecimento

O processo de gravaccedilatildeo da base de conhecimento eacute similar ao processo de leitura com adiferenccedila de natildeo ser iterativo O processo de gravaccedilatildeo da base de conhecimento iniciacom a acccedilatildeo do utilizador na opccedilatildeo ldquoFinalizarrdquo que invoca o meacutetodo ldquosaveAll()rdquo doWexsysKBBean O resto do processo pode ser observado na figura 32

77

CAPIacuteTULO 4 WEXSYS

Figura 32 Processo de gravaccedilatildeo da base de conhecimento

436 Conversatildeo GISPSA

A conversatildeo da base de conhecimento do GISPSA para o formato wexsys foi efectuada emduas fases Na primeira fase foi feita uma migraccedilatildeo sintaacutectica da forma de representaccedilatildeode regras utilizada para a forma utilizada pelo wexsys Na segunda fase foi efectuadoum processo manual de conversatildeo

O sistema anterior delegava nas regras alguns predicados utilizados unicamente parao sistema de explicaccedilotildees Esta caracteriacutestica tornou a migraccedilatildeo algo morosa jaacute que eranecessaacuterio proceder agrave anaacutelise regra a regra de quais os predicados necessaacuterios e quais osdescartaacuteveis

78

44 ANAacuteLISE GRAacuteFICA

44 Anaacutelise graacutefica

Para aleacutem do motor de inferecircncia e da gestatildeo da base de conhecimento foi implemen-tado como prova de conceito um sistema graacutefico que permite observar facilmente arepresentaccedilatildeo de uma base de conhecimento sob a forma de um grafo

Este sistema permite visualizar e consultar a explosatildeo combinatoacuteria das regras edas premissas que as compotildeem Este tipo de ferramenta pode ser bastante uacutetil quandoutilizado nas tarefas de validaccedilatildeo por parte do perito Desta forma o perito consegue deuma forma visual e simples verificar o relacionamento entre as conclusotildees e as premissas

441 Implementaccedilatildeo

Esta funcionalidade foi implementada recorrendo agrave utilizaccedilatildeo de um controlo externodesignado por TGGraphLayout e desenvolvido por Alexander Shapiro (2010) O controlodisponibiliza uma applet que encapsula funcionalidades que permitem a interacccedilatildeo graacuteficacom a representaccedilatildeo de um grafo

Por se tratar de uma applet a comunicaccedilatildeo com os managed beans torna-se tecnica-mente mais difiacutecil de implementar Esse motivo levou agrave necessidade de criaccedilatildeo de umaservlet para simplificar o processo de interacccedilatildeo entre a aplicaccedilatildeo e a applet do controlovisual

A servlet WexsysServlet foi criada para dar suporte agrave comunicaccedilatildeo com o mana-

ged bean WexsysKBBean sendo este responsaacutevel pela obtenccedilatildeo dos dados no formatoreconhecido pelo controlo

O controlo teve que ser alterado de forma a permitir a interacccedilatildeo com a servlet bemcomo efectuar o tratamento dos dados no formato especificado ou seja criar uma espeacuteciede protocolo de comunicaccedilatildeo

O algoritmo 4 resume a implementaccedilatildeo efectuada ao niacutevel da applet e o algoritmo 5demonstra de que forma esses dados satildeo obtidos

442 Funcionamento

O grafo resultante eacute construiacutedo a partir de uma posiccedilatildeo inicial designada por ponto departida Eacute utilizada a designaccedilatildeo ldquordquo para simplificar a identificaccedilatildeo no grafo eeacute possiacutevel ver o resultado da paacutegina inicial na figura 33

As conclusotildees satildeo representadas por rectacircngulos com um fundo branco e as premissassatildeo identificadas por rectacircngulos com fundo azul

79

CAPIacuteTULO 4 WEXSYS

Algoritmo 4 Algoritmo responsaacutevel pelo desenho da appletinput graphPaths graphConclusionsbegin drawGraph

initializeNodes ()for path isin graphPaths do

init oldfor step isin path do

if nodes do not contain step thenbuildNode (step)

endif step is first then

oldlarr stepelse

addEdge (old step)oldlarr step

endend

endcreateStartNode ()linkUnlinkedNodesToStartNode ()

end

O ponto de partida liga-se entatildeo agraves regras que apenas contenham premissas quesejam questotildees construindo o grafo de possibilidades Apoacutes identificar as regras quesatildeo representadas com ligaccedilatildeo ao ponto de partida satildeo tratadas as restantes regrasconstruindo o resto do grafo agrave medida que as regras satildeo avaliadas

Eacute possiacutevel centrar o grafo numa premissa ou numa conclusatildeo Ao centrarmos ografo satildeo mantidos apenas os noacutes que se ligam directamente ao noacute que seleccionaacutemosNo entanto eacute possiacutevel expandir um noacute sem este tipo de comportamento bastando paraisso utilizar as funcionalidades disponiacuteveis ao pressionar a tecla direita do rato sobre o

Figura 33 Paacutegina inicial da anaacutelise graacutefica

80

44 ANAacuteLISE GRAacuteFICA

Algoritmo 5 Algoritmo para construccedilatildeo dos dados do grafooutput graphPaths and grapConclusionsbegin retrieveGraphPathAndConclusions

questionslarr gatherQuestionfor rule isin rules do

isFinalRulelarr conclusaoFinal igual RHS de ruleif isFinalRule then

add rule to grapConclusionssimpleRulelarr truegraphPathslarr nullfor premissa isin ruleLHS do

isConditionAskablelarr questions contains premissaif isConditionAskable then

add premissa and value to graphPathselse

simpleRulelarr falseretrieveGraphFromAtom (premissa)add result to graphPaths

endend

endend

end

respectivo noacute As funcionalidades disponiacuteveis satildeo expandir colapsar esconder e centrare satildeo auto-descritivas pelo que dispensam qualquer explicaccedilatildeo do seu funcionamento

Figura 34 Exemplo de grafo totalmente expandido

Eacute possiacutevel utilizar esta funcionalidade para identificarmos um cenaacuterio especiacuteficopor exemplo para consultar quais as premissas necessaacuterias para a obtenccedilatildeo de umadeterminada soluccedilatildeo

81

CAPIacuteTULO 4 WEXSYS

Figura 35 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto

443 Limitaccedilotildees

Esta funcionalidade no seu estado actual apresenta algumas limitaccedilotildees Conveacutem referirantes de mais que esta soluccedilatildeo natildeo eacute uma alternativa ao motor de inferecircncia mas sim umaferramenta de apoio visual auxiliar ao mesmo

Das limitaccedilotildees existentes salientam-se as seguintes

bull a utilizaccedilatildeo deste controlo obriga a que o utilizador esteja familiarizado com aspremissas e os seus valores Natildeo estatildeo disponiacuteveis os textos de apoio para aspremissas da mesma forma que satildeo mostrados no motor de inferecircncia Umapossiacutevel soluccedilatildeo passaria pela interacccedilatildeo da applet com a servlet para atraveacutes domecanismo de ajax push despoletar a actualizaccedilatildeo da JSP mostrando o texto doelemento seleccionado

bull o tamanho dos noacutes eacute grande quando comparado com o espaccedilo disponiacutevel nocontrolo o que por vezes obriga a algumas sobreposiccedilotildees dos noacutes tornado-oimperceptiacutevel Este problema pode ser observado na figura 34 Para atenuar esteproblema existem controlos que permitem modificar o factor de ampliaccedilatildeo rodar ocontrolo e controlar o grau de visualizaccedilatildeo hiperboacutelica

bull apoacutes a navegaccedilatildeo no grafo perde-se de alguma forma o contexto que o originouEste problema pode ser observado na figura 35

82

5Conclusotildees

Ateacute que ponto eacute que um software consegue efectivamente substituir um ser humanoquando estamos a falar de raciociacutenio Se esse raciociacutenio for estritamente linear seguindoum determinado percurso com alguns desvios ao longo do mesmo que acabam por ditarum desfecho diferente consoante as decisotildees que vatildeo sendo tomadas a substituiccedilatildeo podemesmo ser efectiva e ateacute mesmo melhor em alguns casos

Um perito natildeo eacute no entanto algueacutem que se limita a dizer sim ou natildeo ou algueacutem queapenas decide se eacute necessaacuterio seguir por este caminho ou aquele Um perito normalmenteobserva dados e factos e infere sobre os mesmos tendo a sensibilidade para em muitasocasiotildees conseguir ateacute mesmo obter a soluccedilatildeo final muito antes de terminar a anaacutelise detodos os paracircmetros A isso chama-se conhecimento heuriacutestico natildeo linear afectada poruma enormidade de factores que apenas eacute possiacutevel encontrar num ser humano

Estes factores podem ter tanto de beneacutefico como de nocivo Ao natildeo analisar atotalidade dos dados um perito poderaacute incorrer num erro ou mesmo tendo-os analisadoateacute ao fim poderaacute natildeo ter estado completamente atento ou compenetrado no que estavaa fazer pelo mero facto de poder estar cansado ou indisposto para executar tal tarefanaquele preciso momento

Um sistema pericial pode realmente ser uma mais valia no sentido em que estaacutetotalmente desprovido de emoccedilotildees e fadiga ao contraacuterio de um ser humano Paraaleacutem disto natildeo eacute necessaacuterio temer que o sistema pericial se desloque a uma qualquerlocalizaccedilatildeo remota e de difiacutecil acesso ou que chegue fora do horaacuterio previsto limitadopelos atrasos de uma simples viagem

Todos estes factos podem realmente ser considerados quando analisamos o funciona-mento do GISPSA Efectivamente trata-se de um sistema pericial estaacute sempre disponiacutevele totalmente desprovido de caracteriacutesticas humanas que poderiam eventualmente toldaro raciociacutenio do mesmo No entanto este sistema carecia de algo muito importante a

83

CAPIacuteTULO 5 CONCLUSOtildeES

acessibilidade a partir de qualquer local em qualquer hora e por parte de vaacuterios utilizado-res em simultacircneo de modo imediato e sem preacute-aviso Antes de mais o GISPSA eacute umaaplicaccedilatildeo de execuccedilatildeo local e natildeo foi de todo desenvolvida para funcionamento em redeComo tal o acesso agrave mesma estava agrave partida bastante limitado Depois cada instalaccedilatildeoapenas permitia a interacccedilatildeo com um utilizador de cada vez Existem ainda algumaslimitaccedilotildees identificadas no GISPSA que foram ultrapassadas com o desenvolvimento dowexsys tais como manutenccedilatildeo da base de conhecimento capacidade de raciocinar sobreconhecimento incerto e a implementaccedilatildeo de meacutetodos de verificaccedilatildeo

Hoje em dia eacute possiacutevel aceder a uma rede global (a internet) a partir de qualquer pontodo planeta e isto torna igualmente possiacutevel disponibilizar uma aplicaccedilatildeo de forma a quequalquer pessoa a consiga utilizar a qualquer hora e a partir de qualquer local O wexsysaplica essa transformaccedilatildeo ao GISPSA e leva-o ao proacuteximo patamar evolutivo

Como qualquer evoluccedilatildeo tambeacutem esta pretende natildeo soacute dotar a nova versatildeo comfuncionalidades que a anterior natildeo possuiacutea como tambeacutem pretende melhorar e corrigiros problemas que eventualmente foram encontrados Ao longo do tempo de utilizaccedilatildeodo GISPSA verificaram-se algumas coisas que podiam e deviam ser substituiacutedas Aleacutemdisto a proacutepria evoluccedilatildeo dos sistemas graacuteficos e de interacccedilatildeo colocaram o GISPSAcomo uma aplicaccedilatildeo de visual jaacute algo ultrapassado aspecto que tambeacutem carecia de umarevisatildeo para a realidade mais actual

A opccedilatildeo pela incorporaccedilatildeo do wexsys num portal teve a ver com as grandes capacida-des que este tipo de infra-estuturas tem hoje em dia Impulsionados por empresas comoa IBM os portais web representam janelas de negoacutecio com ligaccedilatildeo ao mundo e com aspotencialidades que daiacute advecircm Caracteriacutesticas como a facilidade de acesso sistemas debackup manutenccedilatildeo de tempos de uptime elevados rapidez de funcionamento facilidadede funcionamento e leitura entre muitas outras representam uma mais valia para estetipo de alojamento de aplicaccedilotildees

51 Contributos da soluccedilatildeo desenvolvida

O grande objectivo a que este trabalho se propunha foi alcanccedilado e consistia na criaccedilatildeode um sistema pericial baseado no GISPSA mas que pudesse ser acedido a partir deuma rede tornando-o global Os restantes objectivos foram igualmente alcanccedilados e oresultado final mostra-se soacutelido e fiaacutevel para candidato efectivo agrave substituiccedilatildeo do sistemaque lhe daacute a base No entanto existem outros pontos positivos na soluccedilatildeo encontradaquando comparada com outros sistemas periciais jaacute referidos nos capiacutetulos anteriores

84

51 CONTRIBUTOS DA SOLUCcedilAtildeO DESENVOLVIDA

Esses sistemas satildeo o LOMA o MDSS e o Whale watcherAo proceder a uma comparaccedilatildeo com estes sistemas a soluccedilatildeo desenvolvida neste

trabalho apresenta algumas vantagens Desde logo estamos a falar de aplicaccedilotildees web

com periacuteodos de desenvolvimento diferentes o que implica a utilizaccedilatildeo de tecnologiasdiferentes A vantagem da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo mais recentes dinacircmi-cas eficazes e visualmente mais apelativas coloca o wexsys num patamar efectivamentesuperior Para aleacutem disso o wexsys pode (como resultado da utilizaccedilatildeo dessas mesmastecnologias) ser facilmente integrado noutras aplicaccedilotildees como webservices ou portaisenquanto que os outros sistemas natildeo

Outra das particularidades dos sistemas estudados eacute que natildeo possuem (de acordocom as respectivas documentaccedilotildees) mecanismos de verificaccedilatildeo de regras e sempre queeacute necessaacuterio proceder a alteraccedilotildees a essas mesmas regras o utilizador teraacute que ter umconhecimento profundo acerca da sintaxe utilizada (gramaacutetica riacutegida) Para aleacutem distotambeacutem natildeo possuem (com excepccedilatildeo do MDSS) suporte a vaacuterias liacutenguas

Jaacute quanto agrave questatildeo da capacidade de funcionamento multi-utilizador apesar deestarmos a falar de aplicaccedilotildees web os sistemas estudados neste documento natildeo estatildeopreparados para cargas de processamento demasiado elevadas porque natildeo foi contempladaa possibilidade de um funcionamento distribuiacutedo o que permitiria aliviar a carga deprocessos e aumentar o nuacutemero maacuteximo de utilizadores

Para descrever mais em detalhe os objectivos alcanccedilados com a soluccedilatildeo propostapassamos a enunciaacute-los

bull Criaccedilatildeo de uma aplicaccedilatildeo web - Ao criar a nova aplicaccedilatildeo a questatildeo da distribuiccedilatildeodessa mesma aplicaccedilatildeo atraveacutes de uma rede era fulcral jaacute que permitiria uma seacuteriede factores que ateacute aqui natildeo estavam disponiacuteveis A possibilidade de utilizaccedilatildeo deuma base de conhecimento global onde todos os utilizadores pudessem contribuirpara o seu melhoramento facilidade de acesso a partir de qualquer localizaccedilatildeodisponibilidade a qualquer hora e dia capacidade de realizaccedilatildeo de backups paragarantir a continuidade dos dados e muacuteltiplos acessos simultacircneos foram questotildeesque ficaram resolvidas com a concretizaccedilatildeo deste objectivo

bull Verificaccedilatildeo das regras - Uma das lacunas do sistema base o GISPSA era a faltade capacidade para realizar a verificaccedilatildeo das regras que era colocadas na basede conhecimento Era possiacutevel chegar a cenaacuterios de inconsistecircncia atraveacutes dacontradiccedilatildeo de regras podendo chegar a cenaacuterios em que simplesmente natildeo erapossiacutevel prosseguir com a inferecircncia das regras nem tatildeo pouco chegar a umaconclusatildeo ou soluccedilatildeo possiacutevel

85

CAPIacuteTULO 5 CONCLUSOtildeES

Ao adicionar um mecanismo de verificaccedilatildeo de regras como o foi neste caso assisti-mos natildeo soacute ao cumprimento de mais um objectivo mas tambeacutem a uma evoluccedilatildeosignificativa do novo sistema pericial que com esta caracteriacutestica se torna maisfiaacutevel e eficaz

bull Manutenccedilatildeo da base de conhecimento - Neste novo sistema eacute mais simples procederagrave actualizaccedilatildeo da base de conhecimento quer para adicionar alterar ou removerfactos na mesma Jaacute natildeo eacute necessaacuterio ter formaccedilatildeo sobre a sintaxe necessaacuteria pararealizar estas operaccedilotildees deixando de lado a rigidez que era necessaacuteria aplicarno sistema base Isto permite alargar o leque de utilizaccedilatildeo do sistema a outrosutilizadores que na versatildeo anterior natildeo teriam oportunidade para o fazer

bull Melhor usabilidade - Uma das grandes transformaccedilotildees para quem conhecia osistema anterior e encontra a nova versatildeo passa pelo aspecto visual Quando umutilizador eacute confrontado com uma aplicaccedilatildeo aquilo com que se depara eacute a parte deinteracccedilatildeo responsaacutevel por mediar o diaacutelogo entre o utilizador e a aplicaccedilatildeo per si

Quando uma aplicaccedilatildeo qualquer que ela seja possui um visual pouco atraente eapelativo para o utilizador com bototildees e janelas pouco interessantes componentesmal colocados atalhos escondidos e de difiacutecil percepccedilatildeo ou ateacute mesmo comcores pouco agradaacuteveis o utilizador acaba por seja de forma gradual ou imediataabandonar a aplicaccedilatildeo e mostra pouco interesse em voltar a utilizaacute-la a natildeo ser queseja efectivamente obrigado a fazecirc-lo

Neste trabalho atraveacutes da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo web tais comoJavascript e Ajax e ainda atraveacutes da utilizaccedilatildeo do Icefaces foi possiacutevel chegar aum visual considerado por muitos utilizadores como interessante e actual o que vaiplenamente de encontro ao objectivo proposto para este ponto

bull Multi-utilizador - Uma das grandes criacuteticas do sistema base tinha efectivamente aver com o facto de natildeo ser possiacutevel colocar mais do que um utilizador a trabalharao mesmo tempo Para tal ser possiacutevel seria necessaacuterio proceder agrave instalaccedilatildeo dosistema noutro computador e consequentemente adquirir outra licenccedila comercialde utilizaccedilatildeo

Ao adicionar a capacidade de vaacuterios utilizadores poderem estar a trabalhar nosistema em simultacircneo este objectivo verifica-se como estando cumprido na to-talidade pois natildeo apenas isso jaacute eacute possiacutevel neste novo sistema pericial como acapacidade de processamento natildeo eacute afectada jaacute que eacute possiacutevel proceder agrave colocaccedilatildeo

86

52 LIMITACcedilOtildeES E TRABALHO FUTURO

da aplicaccedilatildeo num sistema de clustering em caso de deacutefices ou carga excessiva deprocessamento

bull Sistema de explicaccedilotildees - A soluccedilatildeo proposta conteacutem um sistema de explicaccedilotildees quepode ser utilizado para obter explicaccedilotildees a perguntas do tipo ldquocomordquo e ldquoporquecircrdquoEste ponto natildeo representa uma melhoria mas sim a manutenccedilatildeo de uma funcionali-dade que o GISPSA jaacute disponibilizava

bull Anaacutelise graacutefica - Este moacutedulo eacute uma nova abordagem agrave anaacutelise de uma base deconhecimento que natildeo eacute normalmente utilizado nos sistemas periciais conhecidos eque possibilita uma anaacutelise visual facilitadora do comportamento e funcionamentoda nova soluccedilatildeo

bull Suporte a vaacuterias liacutenguas - A soluccedilatildeo proposta permite de uma forma bastantesimples a implementaccedilatildeo de novas linguagens A parte da soluccedilatildeo que envolveo sistema pericial e a parte da aplicaccedilatildeo web estatildeo preparados para esta tipo desuporte contudo a base de conhecimento natildeo contempla este mecanismo e teriaque ser implementado

bull Arquitectura - O tipo de arquitectura da soluccedilatildeo proposta permite uma simplesintegraccedilatildeo com outros tipos de aplicaccedilatildeo web como por exemplo webservices ouportais Possibilita ainda como jaacute referido a separaccedilatildeo da aplicaccedilatildeo de uma formamodular permitindo uma distribuiccedilatildeo ao niacutevel do processamento

bull Migraccedilatildeo - No processo de migraccedilatildeo da base de conhecimento foram detectados ecorrigidos alguns problemas Regras inconsistentes regras repetidas e regras quenatildeo trazem novo conhecimento foram adaptadas e resolvidas evoluindo a novabase de conhecimento para uma entidade mais fiaacutevel e consistente

52 Limitaccedilotildees e trabalho futuro

Este trabalho representa um esforccedilo no sentido de apresentar uma versatildeo melhorada dosistema GISPSA e apesar de o conseguir em muitos aspectos e essencialmente em todosaqueles que foram inicialmente propostos ficam alguns aspectos que ainda poderatildeo serimplementados futuramente e que certamente contribuiratildeo para um sistema ainda melhor

Assim apresentam-se as limitaccedilotildees identificadas e as perspectivas de trabalho futuro

87

CAPIacuteTULO 5 CONCLUSOtildeES

bull Validaccedilatildeo de regras - Apesar de ser jaacute possiacutevel neste novo sistema pericial procederagrave verificaccedilatildeo de regras como mecanismo de prevenccedilatildeo de redundacircncias e contradi-ccedilotildees ainda natildeo eacute possiacutevel a validaccedilatildeo por parte de um perito dessas mesmas regrasa natildeo ser que essa validaccedilatildeo seja feita em modo ad hoc

Seria importante a criaccedilatildeo de um modo lsquosupervisorrsquo ou modo lsquoperitorsquo paraque a aplicaccedilatildeo pudesse adoptar uma postura natildeo soacute de linguagem adaptada aum utilizador com maior formaccedilatildeo na aacuterea (como seraacute o caso de perito) mastambeacutem pudesse assumir uma postura de simulaccedilatildeo em que seriam apresentadosnatildeo soacute os passos tomados como eventuais cenaacuterios em caso de respostas diferentesIsto permitiria a um perito confrontar o seu proacuteprio conhecimento com o sistemapericial realizando desta forma uma validaccedilatildeo do funcionamento do sistema e dabase de conhecimento

Para aleacutem disto sendo uma aplicaccedilatildeo web o modo lsquosupervisorrsquo ou modo lsquope-ritorsquo poderia ser acedido a partir de qualquer siacutetio e a qualquer hora Se o responsaacute-vel pela validaccedilatildeo da base de conhecimento (normalmente o perito que contribuiucom o conhecimento) natildeo estiver disponiacutevel para o fazer por motivos de ausecircnciaou incompatibilidade de horaacuterios poderaacute sempre realizar o acesso agrave aplicaccedilatildeoa partir de um outro local agrave hora que mais lhe aprouver sem qualquer tipo deprejuiacutezo quer para o perito quer para o proacuteprio sistema

bull Muacuteltiplas conclusotildees - Com o trabalho desenvolvido apenas eacute possiacutevel atraveacutesdo disparo de uma regra final chegar a uma uacutenica conclusatildeo Deveria ser possiacutevelchegar a muacuteltiplas conclusotildees pelo que natildeo tendo sido implementado nesta versatildeoconsidera-se como uma possibilidade de trabalho futuro

Aparentemente sem qualquer relaccedilatildeo a necessidade evidenciada no ponto anteriorde criar um modo lsquosupervisorrsquo ou modo lsquoperitorsquo poderaacute levar um futurodesenvolvimento no sentido de criar as muacuteltiplas conclusotildees aqui referidas jaacute queao permitir este modo de funcionamento tambeacutem deveraacute ser possiacutevel inferir sobrevaacuterios cenaacuterios possiacuteveis e respectivas conclusotildees

bull Negaccedilatildeo de premissas - Nesta versatildeo do trabalho apenas eacute possiacutevel criar regrassem negaccedilatildeo Por exemplo num cenaacuterio em que uma pergunta ao utilizador tem aforma

Qual a cor (Vermelho Azul Verde)

e as regras que satildeo candidatas a disparo forem

88

52 LIMITACcedilOtildeES E TRABALHO FUTURO

R1 - SE cor Vermelho R2 - SE cor Azul R3 SE cor Verde

entatildeo natildeo eacute possiacutevel caso seja necessaacuterio ter uma regra do tipo

Rx - SE cor NOT XXXXX

Isso apenas seria possiacutevel se a pergunta inicial fosse

Qual NAtildeO Eacute a cor (Vermelho Azul Verde)

para assim permitir regras do tipo

Rx - SE NAtildeO Eacute cor XXXXX

Assim sendo aponta-se como uma limitaccedilatildeo e eventual trabalho futuro a desenvol-ver para outras versotildees da aplicaccedilatildeo a criaccedilatildeo de um sistema que permita a negaccedilatildeode premissas para que o exemplo atraacutes indicado seja de possiacutevel implementaccedilatildeo

bull Contemplar factos iniciais nas regras - A versatildeo actual do sistema natildeo permite ainclusatildeo de factos inicias nas premissas das regras

bull Pesquisa de muacuteltiplas soluccedilotildees finais - Actualmente soacute eacute permitido executar omotor de inferecircncia com uma soluccedilatildeo final como objectivo Seria uma evidentemais valia a inclusatildeo da capacidade de pesquisa por muacuteltiplas soluccedilotildees

bull Metaconhecimento - ao ser adicionado metaconhecimento podemos aumentar odesempenho do motor de inferecircncia nos cenaacuterios em que temos bases de conheci-mento consideravelmente grandes

bull Regra mais relevante para iniciar o motor de inferecircncia - desenvolver um algoritmopara obter uma regra que tenha uma maior probabilidade de sucesso de forma aminimizar iteraccedilotildees desnecessaacuterias

bull Validaccedilatildeo automaacutetica - quando as questotildees satildeo apagadas deve ser realizada arespectiva verificaccedilatildeo de utilizaccedilatildeo dessas questotildees como condiccedilotildees de regras paraprevenir possiacuteveis inconsistecircncias

bull Suporte a vaacuterias liacutenguas - a base de conhecimento natildeo foi projectada para imple-mentar esta funcionalidade

89

Bibliografia

Acquired Intelligence (2010) Acquire httpwwwaiincca Junho de 201025

Alexander Shapiro (2010) Tggraphlayout httpsourceforgenet

projectstouchgraph Julho de 2010 49 79

Barnett J A (1991) Calculating dempster-shafer plausibility IEEE Transactions on

Pattern Analysis and Machine Intelligence 13 599ndash602 16

Boris van Schooten (2005) Yprolog httpwwwvfutwentenl

~schootenyprolog Junho de 2010 37

Carlos Figueira Filho (2010) JEOPS - Integraccedilatildeo entre Objetos e Regras de Produccedilatildeoem Java httpwwwcinufpebr~jeops Julho de 2010 36

CoAJRA J (1997) The basics of expert (knowledge based) systems 18

Dokas I M (2005) Developing web sites for web based expert systems A webengineering approach In In Proceedings of the Second International ICSC Symposium

on Information Technologies in Environmental Engineering (Magdeburg pages 202ndash217 Shaker Verlag 26

Drakopoulos J (1994) Probabilities possibilities and fuzzy sets Fuzzy Sets and

Systems 75 1ndash15 16

Elie Levy (2010) Zilonis httpwwwzilonisorgindexphp Junho de2010 37

Ernest Friedman-Hill (2010) Jess httpwwwjessrulescom Julho de 201025 36

EXSYS (2010) Exsys corvid httpwwwexsyscom Junho de 2010 24

Filho A R (2010) Mdss medical diagnosis support system LPA - Logic ProgrammingAssociates Ltd 30

Giarratano C J Riley and D G (1998) Expert Systems - Principles and Programming

Thirds Edition Principles and Programing Course Technology 3ed edition 6 18

91

BIBLIOGRAFIA

Hammurapi Group (2010) Hammurapi rules httpwwwhammurapicom

dokuwikidokuphp Junho de 2010 36

Heckerman D (1992) The certainty-factor model 16

IBM (2010) Jlog httpwww-01ibmcomsoftwarewebsphere

productsbusiness-rule-management Junho de 2010 36

Kozlenkov Alex and Paschke (2010) Prova rule language httpprovaws

indexhtml Junho de 2010 37

Logic Programming Associaties Ltd (2010) Lpa webflex httpwwwlpacouk Abril de 2010 24

Lucas P (2001) Certainty-factor-like structures in bayesian belief networks Knowledge-

Based Systems 14 327ndash335 16

Maarten Menken (2010) Jclips httpsourceforgenetprojects

jclips Julho de 2010 25 36

Mcarniel (2010) Jruleengine httpjruleenginesourceforgenet

indexhtml Junho de 2010 37

Merritt D (1989) Building expert systems in Prolog 6 56

Michael Giordano (2010) Webclips httpclipsinterfacesourceforgenetWebCLIPSwchomehtm 28 de Julho de 2003 24

OpenL (2010) Openl tablets httpopenl-tabletssourceforgenetJulho de 2010 37

OpenRules Inc (2010) Open rules engine httpopenrulescomindex

htm Julho de 2010 37

Pinto A (1998) GISPSA - GIS problem solver adviser 1 20

RedHat (2010) Drools httpwwwjbossorgdroolsdrools-experthtml Junho de 2010 36

Shortliffe E H and Buchanan B G (1990) A model of inexact reasoning in medicinepages 259ndash275 16

Wilson N (2000) Algorithms for dempster-shafer theory In Algorithms for Uncertainty

and Defeasible Reasoning pages 421ndash475 Kluwer Academic Publishers 16

92

Anexos

93

ACoacutedigo do motor de inferecircncia

Iniacutecio do motor de inferencia

init_inference- retractall(hist2) consult(rsquokbsyplrsquo)

top_goals(ControlObj MinCF) - top_goal(TopGoal) top(TopGoal ControlObj MinCF)

top(TopGoal ControlObj MinCF) - retractall(hist2) set(len 0)

getRuleMoreRelevant(TopGoal Rule) tryToProove(Rule ControlObj MinCF)

tryToProove(Rule ControlObj MinCF)- rule(Rule _ lhs(LHS) _)

proveListHyp(LHS ControlObj MinCF)get(len LEN)println(LEN)

LEN1 is LEN + 1assert(hist(LEN1Rule))println(LEN1)

set(len LEN1)

(

check if rule has return control object

(var(ControlObj)) -gt(

no control object found check if other rules needs to be fired

fireRules(ControlObj MinCF)

)(

control object found

true

)

)

proveListHyp([] ControlObj MinCF)

proveListHyp([H|T] ControlObj MinCF)-proveHyp(H ControlObj MinCF)

((var(ControlObj)) -gt (proveListHyp(T ControlObj MinCF))(true))

fact already known

proveHyp(H ControlObj MinCF)- H = ev(X Y) fact(X Y_ )

there is a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _)

not(fact(X _ _))question(X _ _ _)

not(not_question(X))ControlObj = ask(X)

95

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

there is a conclusion that can lead to a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _) rule(Rule _ lhs(LHS)

rhs(ev(X_) V))

tryToProove(Rule ControlObj MinCF)

ADD A FACT

av(Attr Value Confidence ControlObj MinCF) - retractall(hist2)set(len 0)

saveFact(Attr Value Confidence 1 CF_FINAL _)

fireRules(ControlObj MinCF)

nav(Attr)-assert(not_question(Attr))

fireRules(ControlObj MinCF)- rule(X _ lhs(LHS) rhs(ev(Y R) Conf))

not(inf_rules_fired(X_)) evaluate(LHS ConfLhs 1)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF)

get(len LEN) LEN1 is LEN + 1 assert(hist(LEN1Rule))

set(len LEN1)

(

(var(ControlObj)) -gt(

(top_goal(Y)) -gt (

ControlObj = answerFound(Y R ConfRet)

)(

true fireRules(ControlObj MinCF)

))(

true

)

)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF) -

calculateConfidence(ConfLhs Conf ConfRet)

ConfRet gt MinCF

saveFact(Y R ConfRet 2 CF_FINAL X)

assert(inf_rules_fired(X ConfRet))

evaluate([] [] 1)- true

evaluate([H|T] [FactConf|LConf] RetCode)-

H = ev(X Ans)fact(X Ans FactConf)

evaluate(T LConf RetCode)

calculateConfidence(ConfLhs RuleCF ResultCF)-min_in_list(ConfLhs MinLHSCF)

ResultCF is MinLHSCF RuleCF 100

min_in_list([Min]Min)

min_in_list([HK|T]M) - H lt= K min_in_list([H|T]M)

min_in_list([HK|T]M) - H gt K min_in_list([K|T]M)

1 - fornecido 2 - inferido

we have a fact saved with the same conclusion already

96

saveFact(Attr Value Confidence Mode CF_Final Rule)-

fact(Attr Value OldConfidence)

combine(OldConfidence Confidence CF_Final)

retract(fact(Attr Value OldConfidence))

retract(inf_sys_fact(Attr Value OldConfidence _))

assert(fact(Attr Value CF_Final))

assert(inf_sys_fact(Attr Value CF_Final Mode))

linkFactToRule(Rule Attr Value Mode)

we donrsquot have any fact saved

saveFact(Attr Value Confidence Mode Confidence Rule)-

assert(fact(Attr Value Confidence))

assert(inf_sys_fact(Attr Value Confidence Mode))

linkFactToRule(Rule Attr Value Mode)

linkFactToRule(___1)

linkFactToRule(RuleAttrValue2)-

inf_exp_how(Attr Value oldRules)

retract(inf_exp_how(Attr Value oldRules))

assert(inf_exp_how(Attr Value [Rule|oldRules]))

linkFactToRule(RuleAttrValue2)-

assert(inf_exp_how(Attr Value [Rule]))

println(rsquosaved line with information on explanation howrsquo) listing

combine(CF1 CF2 CF) - CF1 gt= 0 CF2 gt= 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CF is CF1 + Calc

combine(CF1 CF2 CF) - CF1 lt 0 CF2 lt 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CFAux is CF1 + Calc CF is 0-CFAux

combine(CF1 CF2 CF) - (CF1 lt 0 CF2 lt 0) (CF1 gt 0 CF2 gt 0)

SumCFs is CF1 + CF2 abs_minimum(CF1 CF2 MCF)

Rest is 100 - MCFCF is 100 SumCFs Rest

abs_minimum(ABX) - absolute(A AA) absolute(B BB)minimum(AABBX)

absolute(X X) -X gt= 0

absolute(X Y) -X lt 0Y is 0-X

minimum(XYX) -X lt= Y

minimum(XYY) -Y lt= X

Rule verification

verification(L)-retractall(validation_fired1)

retractall(verification_error4)set(nextid 0)

findall(IDverification_rule_1(ID _ _ _)L)

verification_rule_1(ID RuleInError RuleRelated Result)-

rule(A _ lhs(CA) RA)rule(B _ lhs(CB) RB)

not( B = A)not(validation_fired(B))

checkConditionsSimilar(CA CB FullMatch)

checkResultSimilar(FullMatch RA RB Result)

assert(validation_fired(B))

97

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

get(nextid CURR_ID)ID is CURR_ID + 1

set(nextid ID)

assert(verification_error(ID B A Result))

RuleInError = B RuleRelated = A

checkConditionsSimilar(CA CB FullMatch)-checkConditionsSimilar_1(CACB)

lent(CA X) lent(CB Y) testCheck(X Y FullMatch)

testCheck(X X 1)

testCheck(X Y 0)- not(X = Y)

checkConditionsSimilar_1([] L)

checkConditionsSimilar_1([H|R] L)- member(H L) checkConditionsSimilar_1(R L)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueB) CFB) 2)-

not(ValueA = ValueB)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueA) CFB) 2)

checkResultSimilar(0 rhs(ev(Atom Value) CFA) rhs(ev(Atom Value) CFB) 1)-

CFB lt= CFA

lent([] 0)

lent([_|R] SizeT)- lent(R Size)SizeT is Size + 1

Rule verification

retrieve_rules(L)-

findall(X rule(X _ __) L)

retrieve_questions(L)-

findall(X question(X ___) L)

Information predicates

inf_sys(L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)-

i_sys_rules(L_Rules)i_sys_inf_fact(L_Inf_Facts)

i_sys_know_fact(L_Know_Facts) i_sys_init_fact(L_Init_Facts)

i_sys_rules(L)-

findall(r(Rule Conf) inf_rules_fired(Rule Conf) L) member(C L)

i_sys_rules([])

i_sys_inf_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 2) L) member(C L)

i_sys_inf_fact([])

i_sys_know_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 1) L) member(C L)

i_sys_know_fact([])

98

i_sys_init_fact(L)-

findall(f(Attr Value Conf) condition_init(Attr Value Conf) L) member(C L)

i_sys_init_fact([])

condition_init(Attr Value Conf)-fact(Attr Value Conf)

not(inf_sys_fact(Attr _ _ _))

explanations

why(L)-findall(r(OX) hist(OX) L)

how(Attr Value Result)- inf_exp_how(Attr Value Rules)

explainHow(Rules Explanation)append(Rules Explanation Result)

explainHow([] [])

explainHow([H|T] Result)- innerExplain(H ExplanationH)

explainHow(T ExplanationRules) append(ExplanationH ExplanationRules Result)

innerExplain(Rule Explanation)- rule(Rule _ lhs(LHS) _)

explainLHS(LHS Explanation)

explainLHS([] [])

explainLHS([ev(Attr Value)|T] ExplanationA)-

not(inf_exp_how(Attr Value _))

fact(Attr Value _) print(rsquoinitial factrsquo)

explainLHS(T ExplanationA)

explainLHS([ev(Attr Value)|T] ResultA)-

how(Attr Value ExplanationA)

explainLHS(T Explanation)

append(ExplanationA Explanation ResultA)

append([] L L)

append(L [] L)

append([H|T] M [H|N])-append(L M N)

Map methods

buildValidationReport(Id RErr RRel ErrType)-

verification_error(Id RErr RRel ErrType)

buildQuestionObject(ask(X) X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

buildQuestionObject_by_code(X X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

99

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

buildSolutionObject(answerFound(Y R Found) Y R Found)

buildRuleObject(Rule Descr LHS RHS CF)-

rule(Rule Descr lhs(I_LHS) rhs(I_RHS CF))

lhs_flatten(I_LHS LHS)

rhs_flatten(I_RHS RHS)

flatten(L LO)- iflatten(L LO)

iflatten([] [])

iflatten([H|R] [AD|L])- H = answer(A D) iflatten(R L)

lhs_flatten(L LO)- ilhs_iflatten(L LO)

ilhs_iflatten([] [])

ilhs_iflatten([H|R] [[ADCB]|L])-H = ev(A D)question(A C LL _)

findMember(LLDB)ilhs_iflatten(R L)

ilhs_iflatten([H|R] [[ADAD]|L])-H = ev(A D)not(question(A _ _ _))

ilhs_iflatten(R L)

rhs_flatten(ev(AB) [AB])

findMember([] D D)-

findMember([H|T] D B)-H = answer(D B)

findMember([H|T] D B)-findMember(T D B)

attempt to Get more relevant rule

getRuleMoreRelevant(TopGoal Rule)-

rule(Rule_ _ rhs(ev(P V) X)) top_goal(P)

find the rules that contains a direct solution

findall(X rule(X lhs(LLHS) rhs(ev(TopGoal _)_)) LX)

debugLine(trc1rsquogtrsquo)debugList(LX)

For the main rules apply the algorithm

fillMainRules(LX LOUT)

bubble_sort(LOUT LREALLYOUT)

LREALLYOUT = [ score_table(Rule _ _ _) | _ ]

debugLine(trc1rsquogtrsquo)debugList(LREALLYOUT)

fillMainRules([] [])-

fillMainRules([HIN|RIN] [HOUT|LOUT])- calculateCurrentRule(HIN HOUT)

fillMainRules(RIN LOUT)

calculateCurrentRule(HIN HOUT)-rule(HIN _ lhs(LHS) rhs(_ Confidence))

calculateScoreBasedOnLHS(LHS 0 Score)

OrderIndice is Score Confidence

HOUT = score_table(HIN Score Confidence OrderIndice)

calculateScoreBasedOnLHS([] ScoreResult ScoreResult)-

100

calculateScoreBasedOnLHS([HLHS|RLHS] Score ScoreResult)-

calculateScoreBasedOnLHSCurrent(HLHS Score ScoreAfter)

calculateScoreBasedOnLHS(RLHS ScoreAfter ScoreResult)

calculateScoreBasedOnLHSCurrent(ev(X _) Score ScoreAfter)-

question(X _ _ _) not(fact(X _ _))

ScoreAfter is Score + 1

calculateScoreBasedOnLHSCurrent(ev(X _) Score Score)-

helper methods

bubble_sort(ListSorted)-b_sort(List[]Sorted)

b_sort([]AccAcc)

b_sort([H|T]AccSorted)-bubble(HTNTMax)b_sort(NT[Max|Acc]Sorted)

bubble(X[][]X)

bubble(X[Y|T][Y|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C lt= D bubble(XTNTMax)

bubble(X[Y|T][X|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C gt Dbubble(YTNTMax)

bubble_sort2(ListSorted)-b_sort2(List[]Sorted)

b_sort2([]AccAcc)

b_sort2([H|T]AccSorted)-bubble2(HTNTMax)b_sort2(NT[Max|Acc]Sorted)

bubble2(X[][]X)

bubble2(X[Y|T][Y|NT]Max)- X = r(D _) Y = r(C _) C lt= D bubble(XTNTMax)

bubble2(X[Y|T][X|NT]Max)- X = r(D _) Y = r(C _) C gt Dbubble(YTNTMax)

Allows to get a Bag of all the X that makes Goal evaluate to true

Bag can contain duplicated X

findall(XGoalBag) - post_it(XGoal) gather([]Bag)

Aux

post_it(XGoal) - call(Goal) asserta(data999(X)) fail

post_it(__)

gather(BBag) - data999(X) retract(data999(X)) gather([X|B]Bag)

gather(SS)

member(X[X|_])-

member(X[_|Y]) - member(XY)

101

BBase de conhecimento do protoacutetipo

question(turn_over rsquoO carro ligarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(lights_weak rsquoAs luzes estatildeo fracasrsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(radio_weak rsquoO raacutedio estaacute fracorsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(smell_gas rsquoCheira a gasolinarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(gas_gauge rsquoO que marca o ponteiro do depoacutesito da gasolinarsquo

[ answer(empty rsquoVaziorsquo) answer(high rsquoSuficientersquo) answer(low rsquoReservarsquo)]0)

rule(rule_1 rsquoRule 1rsquolhs([ev(turn_over no) ev(battery_bad yes)])

rhs(ev(problem battery) 100))

rule(rule_2 rsquoRule 2rsquolhs([ev(lights_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_3 rsquoRule 3rsquolhs([ev(radio_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_4 rsquoRule 4rsquolhs([ev(smell_gas yes) ev(turn_over yes)])

rhs(ev(problem flooded) 80))

rule(rule_5 rsquoRule 5rsquolhs([ev(turn_over yes) ev(gas_gauge empty)])

rhs(ev(problem out_of_gas) 90))

rule(rule_6 rsquoRule 6rsquolhs([ev(turn_over yes) ev(gas_gauge low)])

rhs(ev(problem out_of_gas) 30))

rule(rule_7 rsquoRule 7rsquolhs([ev(gas_gauge low)ev(turn_over yes)])

rhs(ev(problem out_of_gas) 30))

103

ANEXO B BASE DE CONHECIMENTO DO PROTOacuteTIPO

rule(rule_8 rsquoRule 8rsquo

lhs([ev(turn_over yes) ev(gas_gauge low) ev(smell_gas no)])

rhs(ev(problem out_of_gas) 30))

top_goal(problem)

104

CBase de conhecimento GISPSA

question(qs_tema_ger rsquoQual o tipo de Problemarsquo

[ answer(c_ger_map rsquoMapas Configuraacuteveisrsquo) answer(c_ger_inq rsquoInqueacuteritos e Listagensrsquo)

answer(c_ger_mov rsquoCGMOVIGrsquo) answer(c_ger_pla rsquoCGDCGERrsquo)

answer(c_ger_acm rsquoCGVACUMCGTACUMrsquo)]0)

question(qs_plareg rsquoA Conta tem regra de construcccedilatildeo associada rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipr rsquoExiste Conta Pai do Tipo R no Planorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaent rsquoConta aberta por entidadesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipa rsquoConta do Tipo Arsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plalim rsquoEntidade encontra-se nos limitesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaexis rsquoEntidade Existentersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plamix rsquoContas Valor entre Contas Movimentorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acumul rsquoQual o problema de acumuladosrsquo

[ answer(c_acm_avm rsquoCGVACUM ltgt CGMOVIGrsquo)

answer(c_acm_si rsquoSaldos Iniciaisrsquo)

answer(c_acm_cna rsquoContas Nao Acumulamrsquo)

answer(c_acm_avat rsquoCGVACUM ltgt CGTACUMrsquo)]0)

question(qs_incmov rsquoInconsistecircncias no CGMOVIGrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

105

ANEXO C BASE DE CONHECIMENTO GISPSA

question(qs_incpla rsquoInconsistecircncias no CGDCGERrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acmsia rsquoSaldos Iniciais Alteradosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movi rsquoQual o problema dos movimentosrsquo

[ answer(c_mov_lan rsquoLanccedilamentos nao balanceadosrsquo)

answer(c_mov_con rsquoProblema de Contasrsquo)

answer(c_mov_cgca rsquoMovimentos CG ltgt CArsquo)]0)

question(qs_movvdif rsquoValores CG gt CArsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlgca rsquoCC Ligados a Analiticarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlg100 rsquoTodas as Ligacoes a 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movm100 rsquoDiferencas Correspondem a CC com Mais de 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcna rsquoLancamento em Contas nao Existentesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movci rsquoLancamento em Contas Invalidasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcdf rsquoContas correctasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_inquer rsquoInqueacuterito ou listagemrsquo

[ answer(c_inq_bal rsquoBalancetersquo) answer(c_inq_dia rsquoExtractoDiariorsquo)]0)

question(qs_inqsal rsquoProblema de saldosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapa rsquoProblema dos mapasrsquo

[ answer(c_map_imp rsquoErro na Impressaorsquo) answer(c_map_cal rsquoErro no Calculorsquo)

answer(c_map_mic rsquoErro na Transferencia P Microrsquo)]0)

question(qs_mapcol0 rsquoA ultima linha calculada tem a coluna 0 configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapfunc

rsquoA ultima linha calculada apresenta colunas com funcoes invalidas ou sintaxe erradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin0 rsquoA Linha 000 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin9 rsquoA Linha 999 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

106

question(qs_map2alg rsquoTodos os Valores da Linha 999 tem 2 Algarismosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_map198 rsquoA Soma dos Valores da Linha 999 Ultrapassa 198rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapsys rsquoO Sistema Permite a Utilizacao de Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapuser rsquoO Utilizador Tem Acesso a Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapflr rsquoO Folder Existersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

rule(r_pla_1 r_pla_1lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plareg c_sim)])

rhs(ev(dominio d_pla_reg) 100)

)

rule(r_pla_2 r_pla_2lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plaent c_sim)])

rhs(ev(dominio d_pla_ent) 100)

)

rule(r_pla_3 r_pla_3lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plamix c_sim)])

rhs(ev(correccao cr_pla_mix) 100)

)

rule(r_pla_11 r_pla_11lhs([ev(dominio d_pla_reg) ev(qs_platipr c_nao)])

rhs(ev(correccao cr_pla_tipr) 100)

)

rule(r_pla_21 r_pla_21lhs([ev(dominio d_pla_ent) ev(qs_platipa c_nao)])

rhs(ev(correccao cr_pla_tipa) 100)

)

rule(r_pla_22 r_pla_22lhs([ev(dominio d_pla_ent) ev(qs_plalim c_nao)])

rhs(ev(correccao cr_pla_lim) 100)

)

rule(r_pla_23 r_pla_23lhs([ev(dominio d_pla_ent) ev(qs_plaexis c_nao)])

rhs(ev(correccao cr_pla_exis) 100)

)

rule(r_acm_1 r_acm_1

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_2 r_acm_2

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_3 r_acm_3

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_4 r_acm_4

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_5 r_acm_5

107

ANEXO C BASE DE CONHECIMENTO GISPSA

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_6 r_acm_6

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_7 r_acm_7

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_si) ev(qs_acmsia c_nao)])

rhs(ev(correccao cr_acm_si) 100)

)

rule(r_mov_1 r_mov_1lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_lan)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_2 r_mov_2lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_cgca)])

rhs(ev(dominio d_mov_cgca) 100)

)

rule(r_mov_21 r_mov_21lhs([ev(dominio d_mov_cgca) ev(qs_movvdif c_sim)])

rhs(ev(subdominio d_mov_cgca_1) 100)

)

rule(r_mov_22 r_mov_22lhs([ev(dominio d_mov_cgca) ev(qs_movm100 c_sim)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_23 r_mov_23lhs([ev(dominio d_mov_cgca)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_3 r_mov_3lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_con)])

rhs(ev(dominio d_mov_con) 100)

)

rule(r_mov_31 r_mov_31lhs([ev(dominio d_mov_con) ev(qs_movcna c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_32 r_mov_32lhs([ev(dominio d_mov_con) ev(qs_movci c_nao)])

rhs(ev(correccao cr_mov_inc_soft) 100)

)

rule(r_mov_33 r_mov_33lhs([ev(dominio d_mov_con) ev(qs_movcdf c_nao)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_34 r_mov_34lhs([ev(dominio d_mov_con)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_211 r_mov_211lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlgca c_nao)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_212 r_mov_212lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlg100 c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_213 r_mov_213lhs([ev(subdominio d_mov_cgca_1)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_inq_1 r_inq_1lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inquer c_inq_bal)])

rhs(ev(correccao cr_inq_bal) 100)

)

rule(r_inq_2 r_inq_2lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inqsal c_sim)])

108

rhs(ev(correccao cr_inq_dia) 100)

)

rule(r_map_1 r_map_1lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_cal)])

rhs(ev(dominio d_map_cal) 100)

)

rule(r_map_2 r_map_2lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_imp)])

rhs(ev(dominio d_map_imp) 100)

)

rule(r_map_3 r_map_3lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_mic)])

rhs(ev(dominio d_map_mic) 100)

)

rule(r_map_11 r_map_11lhs([ev(dominio d_map_cal) ev(qs_mapcol0 c_sim)])

rhs(ev(correccao cr_map_cal_col0) 100)

)

rule(r_map_12 r_map_12lhs([ev(dominio d_map_cal) ev(qs_mapfunc c_sim)])

rhs(ev(correccao cr_map_cal_func) 100)

)

rule(r_map_13 r_map_13lhs([ev(dominio d_map_cal)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_21 r_map_21lhs([ev(dominio d_map_imp) ev(qs_maplin0 c_nao)])

rhs(ev(correccao cr_map_imp_lin0) 100)

)

rule(r_map_22 r_map_22lhs([ev(dominio d_map_imp) ev(qs_maplin9 c_nao)])

rhs(ev(correccao cr_map_imp_lin9) 100)

)

rule(r_map_23 r_map_23lhs([ev(dominio d_map_imp) ev(qs_map2alg c_nao)])

rhs(ev(correccao cr_map_imp_2alg) 100)

)

rule(r_map_24 r_map_24lhs([ev(dominio d_map_imp) ev(qs_map198 c_nao)])

rhs(ev(correccao cr_map_imp_198) 100)

)

rule(r_map_25 r_map_25lhs([ev(dominio d_map_imp)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_31 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapsys c_nao)])

rhs(ev(correccao cr_map_sys) 100)

)

rule(r_map_32 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapuser c_nao)])

rhs(ev(correccao cr_map_user) 100)

)

rule(r_map_33 r_map_33lhs([ev(dominio d_map_mic) ev(qs_mapflr c_nao)])

rhs(ev(correccao cr_map_mic_flr) 100)

)

rule(r_map_34 r_map_34lhs([ev(dominio d_map_mic)])

rhs(ev(correccao cr_map_soft) 100)

)

top_goal(correccao)

109

  • Lista de Figuras
  • Lista de Tabelas
  • Lista de Coacutedigo
  • Lista de Algoritmos
  • Lista de Acroacutenimos
  • Introduccedilatildeo
    • Enquadramento
    • Objectivos
    • Planeamento
    • Estruturaccedilatildeo da dissertaccedilatildeo
      • Estado da arte
        • Sistemas periciais
          • Arquitectura
          • Base de conhecimento
            • Regras
            • Frames
            • Redes semacircnticas
            • Mecanismos de inferecircncia
            • Manutenccedilatildeo de uma base de conhecimento
              • Raciociacutenio sobre incerteza
                • Factores de certeza
                  • Vantagens e desvantagens
                    • GISPSA - GIS Problem Solver Advisor
                      • Arquitectura
                      • Funcionamento
                      • Limitaccedilotildees
                        • Web Expert Systems
                          • Casos de estudo
                            • LOMA - Landfill Operation Management Advisor
                            • MDSS - Medical Diagnosis Support System
                            • Whale watcher
                              • Ferramentas utilizadas
                                • Ambiente de desenvolvimento
                                • Motor de inferecircncia
                                  • Fase I - Recolha de candidatos
                                  • Fase II - Requisitos base
                                  • Fase III - Viabilidade econoacutemica
                                  • Fase IV - Viabilidade teacutecnica
                                  • Fase V - Prova de conceito
                                  • Conclusatildeo e fundamentaccedilatildeo da escolha
                                      • Wexsys
                                        • Arquitectura global
                                          • Moacutedulo pWexsysEAR
                                          • Moacutedulo WexsysEAR
                                          • Interligaccedilatildeo e integraccedilatildeo dos moacutedulos
                                            • Camada de acesso puacuteblico
                                            • Camada de acesso protegido
                                            • Camada de acesso privado
                                            • Fluxo de invocaccedilatildeo
                                              • Portal
                                                • Templates
                                                  • Suporte multi-liacutengua
                                                    • Motor de inferecircncia
                                                      • Multi-utilizador
                                                      • Base de conhecimento inicial
                                                      • Protoacutetipo do motor de inferecircncia
                                                        • Formato das regras
                                                        • Formato das questotildees
                                                        • Interacccedilatildeo assiacutencrona de questotildees e respostas
                                                        • Estrutura da base de conhecimento
                                                        • Algoritmos a utilizar
                                                          • Resultado final
                                                            • Arranque da execuccedilatildeo
                                                            • Mecanismo de respostas
                                                            • Conclusatildeo final encontrada
                                                            • Explicaccedilotildees
                                                                • Base de conhecimento
                                                                  • Leitura da base de conhecimento
                                                                  • Conclusatildeo final a encontrar
                                                                  • Factos iniciais
                                                                  • Regras
                                                                    • CriarAlterar uma regra
                                                                    • Questotildees
                                                                    • Verificaccedilatildeo
                                                                      • Gravaccedilatildeo da base de conhecimento
                                                                      • Conversatildeo GISPSA
                                                                        • Anaacutelise graacutefica
                                                                          • Implementaccedilatildeo
                                                                          • Funcionamento
                                                                          • Limitaccedilotildees
                                                                              • Conclusotildees
                                                                                • Contributos da soluccedilatildeo desenvolvida
                                                                                • Limitaccedilotildees e trabalho futuro
                                                                                  • Bibliografia
                                                                                  • Anexos
                                                                                  • Coacutedigo do motor de inferecircncia
                                                                                  • Base de conhecimento do protoacutetipo
                                                                                  • Base de conhecimento GISPSA
Page 9: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System

Lista de Figuras

1 Arquitectura de um sistema pericial 82 GISPSA menu inicial 213 GISPSA interacccedilatildeo inicial 224 GISPSA exemplo de interacccedilatildeo pergunta-resposta 225 Arquitectura do LOMA 276 Paacutegina inicial do sistema pericial LOMA 287 Sub-moacutedulo extra 288 Sugestatildeo de problemas do sub-moacutedulo extra 299 Sub-moacutedulo especializado 2910 Paacutegina principal do sistema pericial Whale Watcher 3111 Paacutegina final do sistema pericial Whale Watcher 31

12 Arquitectura da soluccedilatildeo 4413 Arquitectura do moacutedulo visual 4414 Arquitectura do moacutedulo de negoacutecio 4515 Wexsys - Integraccedilatildeo dos componentes 4616 Diagrama de classes principais 4917 Diagrama de sequecircncia do fluxo de invocaccedilatildeo 5018 Wexsys - Paacutegina inicial 5119 Paacutegina inicial do motor de inferecircncia 6220 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia 6321 Fluxo de invocaccedilatildeo de resposta a uma questatildeo 6622 Conclusatildeo da inferecircncia 6723 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo 6824 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia 6925 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final 6926 Paacutegina inicial da gestatildeo da base de conhecimento 7227 Processo de carregamento das regras 7328 Introduzir uma nova regra 7529 Apresentaccedilatildeo de valores configurados na questatildeo 7630 Formulaacuterio de introduccedilatildeo de uma questatildeo 7631 Verificaccedilatildeo da base de conhecimento 7732 Processo de gravaccedilatildeo da base de conhecimento 7833 Paacutegina inicial da anaacutelise graacutefica 80

xv

34 Exemplo de grafo totalmente expandido 8135 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto 82

xvi

Lista de Tabelas

1 Listagem de produtos da Fase I 362 Listagem de produtos excluiacutedos na Fase II 383 Listagem de produtos excluiacutedos na Fase III 384 Listagem de produtos excluiacutedos na Fase IV 395 JClips - Vantagens e desvantagens 396 Prova - Vantagens e desvantagens 407 YProlog - Vantagens e desvantagens 40

xvii

Lista de Coacutedigo

1 Excerto da classe RuleView 472 Excerto da classe Rule 473 Coacutedigo do template principal do portal 514 Coacutedigo da paacutegina inicial do portal 535 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo 546 Representaccedilatildeo da base de conhecimento do protoacutetipo 587 Predicados principais do motor de inferecircncia 638 Predicados principais do sistema de explicaccedilotildees 70

xix

Lista de Algoritmos

1 Algoritmo principal do motor de inferecircncia 602 Verifica se uma premissa eacute verdadeira 613 Dispara as regras que possam ser disparadas 614 Algoritmo responsaacutevel pelo desenho da applet 805 Algoritmo para construccedilatildeo dos dados do grafo 81

xxi

Lista de Acroacutenimos

AI Artificial Intelligence ou Inteligecircncia Artificial

BRMS Business Rule Management System

CF Certainty Factors ou Factores de Certeza

CLIPS C Language Integrated Production System

DTO Data Transfer Object

ES Expert System

GIS Gestatildeo Integrada de Seguros

GISPSA GIS Problem Solver Advisor

IDE Integrated Development Environment

JEOPS Java Embedded Object Production System

JSF JavaServer Faces

LHS Left-Handed Side

LOMA Landfill Operation Management Advisor

MDSS Medical Diagnosis Support System

ODBC Open Data Base Connectivity

OO Object Oriented

RHS Right-Handed Side

SP Sistema Pericial

SDK Software Development Kit

xxiii

1Introduccedilatildeo

Este trabalho eacute desenvolvido no acircmbito do Mestrado em Engenharia Informaacutetica ramode Tecnologias do Conhecimento e Decisatildeo e teve a sua origem a partir de um sistemadoravante designado por sistema base desenvolvido por Pinto Este sistema base foidesenvolvido durante a realizaccedilatildeo de um trabalho acadeacutemico (Pinto (1998)) cujo principalobjectivo era a construccedilatildeo de um sistema pericial

Na altura da sua criaccedilatildeo o sistema base apenas estava preparado para uma utilizaccedilatildeodo tipo mono-posto Ficava assim estabelecida a condiccedilatildeo de apenas um utilizador decada vez ter acesso ao sistema base Natildeo era exigiacutevel nem sequer necessaacuterio que outrocenaacuterio fosse equacionado dado tratar-se de um trabalho acadeacutemico O sistema ficoudesta forma limitado

Assim somos remetidos a um dos objectivos iniciais que levaram ao desenvolvimentodo trabalho que agora aqui se apresenta Proceder agrave evoluccedilatildeo do sistema base garantindoque o mesmo possa ser acedido por muacuteltiplos utilizadores de forma simultacircnea e a suadisponibilizaccedilatildeo num ambiente de acesso global mediante a utilizaccedilatildeo de redes sendoque a preferecircncia recai sobre a rede mais global que existe a internet Referindo-nos aeste tipo de disponibilizaccedilatildeo com todas as vantagens que lhe estatildeo afectas o proacuteximopasso loacutegico seria a integraccedilatildeo do novo sistema num portal

Eacute tambeacutem um objectivo inicial proceder agrave alteraccedilatildeo da actual forma de manutenccedilatildeo doconhecimento Pretende-se desenvolver um mecanismo de manutenccedilatildeo de conhecimentoque simplifique a interacccedilatildeo com o utilizador

Por uacuteltimo os objectivos deste trabalho passam igualmente pelo melhoramento dosistema base tentando eliminar alguns erros que foram detectados ao longo do tempo eacrescentando algumas caracteriacutesticas que entretanto surgiram e que foram consideradasnecessaacuterias

1

CAPIacuteTULO 1 INTRODUCcedilAtildeO

11 Enquadramento

O sistema a desenvolver embora tenha como ponto de partida um sistema base criado parautilizaccedilatildeo mono-posto faraacute parte de um portal onde seraacute integrado como uma ferramentade apoio na resoluccedilatildeo de problemas operacionais

Para aleacutem de actualmente fazer muito mais sentido a disponibilizaccedilatildeo do sistemanum ambiente de acesso globalizado e com a possibilidade de vaacuterios utilizadores emsimultacircneo a grande vantagem reside no facto de poder utilizar a mesma base de conhe-cimento que alimenta o sistema pericial independentemente do local onde se realizem osacessos Fica assim garantida a uniformidade a fiabilidade e a estabilidade do sistema

Por uacuteltimo a globalizaccedilatildeo do sistema garante igualmente que sempre que este eacuteutilizado natildeo para consulta ou apoio na resoluccedilatildeo de problemas mas para acrescentarnovos factos e dados agrave base de conhecimento estes estejam imediatamente disponiacuteveispara novas consultas ou para resoluccedilotildees de problemas de forma mais eficaz

12 Objectivos

O objectivo principal deste trabalho passa pela integraccedilatildeo do GIS Problem SolverAdvisor (GISPSA) (sistema base) num portal Aleacutem deste outros objectivos podemser considerados como de eventual ou relevante importacircncia podendo ser caracterizadosda seguinte forma

bull Objectivos globais

ndash Desenvolvimento de um sistema pericial rArr Pretende-se desenvolver umcandidato agrave substituiccedilatildeo do GISPSA

ndash Manutenccedilatildeo da base de conhecimento rArr Gerir a base de conhecimentorelativamente agrave inserccedilatildeo e actualizaccedilatildeo de regras de conhecimento bem comoimplementaccedilatildeo de mecanismos de verificaccedilatildeo das regras

bull Objectivos especiacuteficos

ndash Adaptar o motor de inferecircncia existente ou desenvolver novorArr Desenvolvi-mento de um motor de inferecircncia que se enquadre com os objectivos definidos

ndash Alterar o mecanismo de interacccedilatildeo do utilizador com a base de conheci-mentorArr Facilitar a manipulaccedilatildeo da base de conhecimento de forma a evitarproblemas na alteraccedilatildeo da base de conhecimento

2

13 PLANEAMENTO

ndash Verificar e detectar inconsistecircncias na base de conhecimentorArr Implementarmecanismos de verificaccedilatildeo das regras existentes para minimizar problemas

13 Planeamento

O planeamento deste trabalho foi estruturado em quatro fases A composiccedilatildeo dessas faseseacute a seguinte

1 Requisitos

bull Levantamento de requisitos

bull Estado da arte

bull Ferramentas existentes

2 Protoacutetipo

bull Protoacutetipo do motor de inferecircncia

bull Implementaccedilatildeo do gestor da base de conhecimento

3 Verificaccedilatildeo

bull Implementaccedilatildeo de meacutetodos de verificaccedilatildeo e detecccedilatildeo de inconsistecircncias

4 Elaboraccedilatildeo da dissertaccedilatildeo

bull Redacccedilatildeo final da dissertaccedilatildeo

14 Estruturaccedilatildeo da dissertaccedilatildeo

Nesta secccedilatildeo eacute apresentada a estrutura da dissertaccedilatildeo composta por cinco capiacutetulosNo primeiro capiacutetulo ldquoIntroduccedilatildeordquo eacute apresentado o problema actual quais os objec-

tivos a alcanccedilar e qual o planeamento para a prossecuccedilatildeo desses objectivosNo segundo capiacutetulo ldquoEstado da Arterdquo eacute apresentado a soluccedilatildeo GISPSA e tambeacutem o

estado da arte na aacuterea dos sistemas periciaisNo terceiro capiacutetulo ldquoFerramentas utilizadasrdquo eacute apresentado o estudo efectuado sobre

as ferramentas utilizadas e quais as conclusotildees do mesmoNo quarto capiacutetulo ldquoWexsysrdquo eacute descrita a soluccedilatildeo proposta e implementadaNo quinto e uacuteltimo capiacutetulo ldquoConclusotildeesrdquo satildeo apresentadas as conclusotildees finais bem

como os objectivos alcanccedilados e as actuais limitaccedilotildees

3

2Estado da arte

Num estado da arte pretende-se essencialmente fazer o enquadramento do estaacutegio deevoluccedilatildeo e eventuais casos de estudo relacionados com as tecnologias sistemas oupropostas que satildeo utilizadas ou apresentadas ao longo de um trabalho

Para o nosso caso em concreto vamos focalizar esse enquadramento sobre os sistemaspericiais no seu sentido mais abstracto e ainda sobre o sistema base jaacute indicado oGISPSA Apesar de o sistema base ser por si soacute um sistema pericial e como tal poderser apresentado como um caso de estudo inserido nos sistemas periciais generalizados ofacto de servir como ponto de partida para este trabalho em concreto confere-lhe umaimportacircncia muito superior sendo quase obrigatoacuteria a reserva de uma secccedilatildeo proacutepria parao mesmo

21 Sistemas periciais

Os sistemas periciais pertencem a um dos ramos da Artificial Intelligence ou InteligecircnciaArtificial (AI) e surgiram a partir da necessidade que alguns investigadores sentiram emcriar um software que demonstrasse raciociacutenio e comportamento inteligente durante aresoluccedilatildeo de problemas

Um Sistema Pericial (SP) tambeacutem conhecido como Expert System (ES) caracteriza-se como sendo um programa que permite a consulta e utilizaccedilatildeo de conhecimento extraiacutedode um ou mais peritos em determinada aacuterea Esse conhecimento estaacute normalmenteguardado naquilo que eacute mais habitualmente designado por base de conhecimento e agrave qualo programa tem o devido acesso

Na criaccedilatildeo de um SP o ideal seraacute sempre consultar os melhores peritos dentro daaacuterea pretendida e ainda que estes estejam disponiacuteveis para partilhar e disponibilizar oseu conhecimento Tal seria efectivamente a situaccedilatildeo ideal mas que nem sempre se

5

CAPIacuteTULO 2 ESTADO DA ARTE

aproxima da realidade Aliaacutes o verdadeiro sucesso de um sistema pericial reside naqualidade da sua base de conhecimento

Antes de mais devemos considerar que algueacutem que eacute perito em algo certamente oseraacute por uma seacuterie de factores conjugados Experiecircncia adquirida ao longo de vaacuteriosanos formaccedilatildeo especiacutefica dedicaccedilatildeo e estudo profundo seratildeo alguns desses factoresSempre que um indiviacuteduo se encontra numa posiccedilatildeo de excelecircncia em que eacute consideradoum verdadeiro perito encontra-se tambeacutem numa posiccedilatildeo em que lhe eacute bastante difiacutecilencontrar o tempo necessaacuterio para se submeter a uma extracccedilatildeo do conhecimento quedeteacutem Se a isto juntar-mos o facto do objectivo pelo qual se procede agrave extracccedilatildeo deconhecimento eacute a criaccedilatildeo de um programa que seraacute equiparado ao proacuteprio perito emtermos de conhecimento certamente que haveraacute algum desconforto

Aqui surgem as primeiras duacutevidas Seraacute que o sistema pericial tomaraacute o lugar deum ou mais peritos Apesar desta e de outras preocupaccedilotildees os peritos normalmentecontribuem de forma positiva para o enriquecimento de um sistema pericial tornando-odesta forma num sistema com maior qualidade e do qual eles proacuteprios poderatildeo usufruirjaacute que quando eacute possiacutevel agregar o conhecimento de muacuteltiplas pessoas obteacutem-se umconhecimento global superior ao individual

Para aleacutem disto o sistema pericial tende a proceder a um raciociacutenio mais linear loacutegicoe coerente quando comparado com um ser humano que poderaacute deixar que factores comopor exemplo o cansaccedilo ou os sentimentos o influenciem

Merritt define um sistema pericial como sendo um programa que utiliza conhecimentoe meacutetodos de inferecircncia para resolver problemas que satildeo suficientemente complexos pararequerer um especialista para a sua resoluccedilatildeo

ldquo an intelligent computer program that uses knowledge and inference procedures to

solve problems that are difficult enough to require significant human expertise for their

solutionsrdquo Merritt (1989)

A definiccedilatildeo de Giarratano et al eacute mais relacionada com o tipo de problemas tratadospor um sistema pericial

ldquo computer application wich embody some non-algorithmic expertise for solving certain

types of problemsrdquo Giarratano et al (1998)

Esta definiccedilatildeo enquadra de uma forma global as definiccedilotildees reconhecidas aos siste-mas periciais ldquoum sistema pericial pretende emular um perito na identificaccedilatildeo de umdeterminado problema cuja resoluccedilatildeo envolva conhecimento natildeo algoriacutetmicordquo

Existe uma clara separaccedilatildeo entre conhecimento e raciociacutenio o conhecimento eacute obtidocomo jaacute foi referido recorrendo a um ou mais peritos na aacuterea Os dados obtidos satildeo depois

6

21 SISTEMAS PERICIAIS

codificados atraveacutes de um determinado esquema de representaccedilatildeo No passo seguinteeacute adicionada a capacidade de raciociacutenio ao sistema pericial recorrendo a estrateacutegiasheuriacutesticas na tentativa de fornecer um resultado semelhante ao que um perito forneceriae aqui uma vez mais o papel do perito eacute fundamental para o sucesso do sistema pericial

Para aleacutem de contribuir com o conhecimento o perito deveraacute igualmente contribuircom o raciociacutenio utilizado para o manuseamento desse mesmo conhecimento Isto porquea resoluccedilatildeo de um problema poderaacute em determinadas situaccedilotildees necessitar de pequenosajustes que fogem agrave linearidade de um processamento computacional mas que podemperfeitamente ser simuladas e recriadas na construccedilatildeo do raciociacutenio do programa

Eacute necessaacuterio compreender que um perito para aleacutem de ser algueacutem que eacute consideradoum especialista na sua aacuterea eacute habitualmente algueacutem com pouco ou nenhum tempodisponiacutevel o que dificulta bastante a realizaccedilatildeo da recolha do conhecimento O seutempo eacute dispendioso e tem por norma poucos espaccedilos de manobra devido agraves muitassolicitaccedilotildees que lhe satildeo dirigidas Aqui impera o factor de resistecircncia ora porque o peritonatildeo acredita que o sistema seja tatildeo eficaz como ele ora porque existe o receio de sersubstituiacutedo ou passar a ter menos solicitaccedilotildees Quanto maior a colaboraccedilatildeo do ou dosperitos envolvidos na criaccedilatildeo de um qualquer sistema pericial melhor e mais eficaz seraacuteesse sistema pericial

211 Arquitectura

As duas grandes componentes do sistema pericial e que permitem a separaccedilatildeo referidaentre conhecimento e raciociacutenio satildeo a base de conhecimento (depende do domiacutenio ou daaacuterea abrangida) e o bloco de raciociacutenio (natildeo depende do domiacutenio) Este uacuteltimo eacute aindadividido em trecircs partes distintas o motor de inferecircncia o sistema de explicaccedilotildees e ainterface com o utilizador

Um sistema pericial deve ser estruturado de forma a que possa ser actualizado facil-mente sem que seja necessaacuteria qualquer alteraccedilatildeo ao niacutevel funcional do programa

7

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 1 Arquitectura de um sistema pericial

A figura 1 mostra a composiccedilatildeo de um sistema pericial e que mais detalhadamente eacutea seguinte

bull Interface com o utilizador

um sistema pericial deveraacute permitir a interacccedilatildeo com o utilizador Nos casosmais habituais os utilizadores que usufruem dos benefiacutecios destes sistemas natildeosatildeo peritos da aacuterea e pretendem aconselhamento ou ajuda na resoluccedilatildeo de umproblema Noutros casos o utilizador poderaacute ser um perito da aacuterea que apenaspretende testar o sistema pericial ou confrontar as conclusotildees deste com as suasproacuteprias conclusotildees para perceber se sendo diferentes qual o motivo para queisso aconteccedila Isto poderaacute permitir que um perito aprofunde ou corrija o seuproacuteprio conhecimento ou que por outro lado se procedam a correcccedilotildees agrave base deconhecimento do sistema pericial mediante se trate de erro por parte de um ou deoutro

De qualquer forma a interface com o utilizador deveraacute permitir a interacccedilatildeo entreo sistema pericial e o utilizador (qualquer que este seja) para que o utilizadorresponda agraves questotildees que lhe satildeo colocadas e peccedila explicaccedilotildees para os passos econclusotildees que percorre e descobre ao longo da utilizaccedilatildeo do programa

bull Base de conhecimento

o conhecimento extraiacutedo de um ou mais peritos eacute armazenado e mantido aquiDurante a execuccedilatildeo do programa o sistema pericial acede a esta base para consultaros dados disponiacuteveis Eacute sempre possiacutevel em qualquer altura retirar acrescentarou corrigir factos na base de conhecimento Isto contribui para uma evoluccedilatildeo damesma no sentido de melhorar sempre o funcionamento do proacuteprio sistema pericial

8

21 SISTEMAS PERICIAIS

bull Motor de inferecircncia

este bloco eacute o grande responsaacutevel por interpretar o conhecimento e colocarde uma forma estruturada questotildees ao utilizador O raciociacutenio extraiacutedo do ou dosperitos eacute aqui consultado para que mediante as questotildees que satildeo colocadas aoutilizador e as consultas que satildeo efectuadas agrave base de conhecimento este motor deinferecircncia determine qual a proacutexima questatildeo a colocar qual a proacutexima consulta arealizar ou qual a conclusatildeo a apresentar

bull Sistema de explicaccedilotildees

sempre que o utilizador pretende que lhe seja dada uma explicaccedilatildeo para aquestatildeo que estaacute a ser colocada ou para a conclusatildeo que foi determinada este blocoseraacute o responsaacutevel por dar essa mesma explicaccedilatildeo

Esta divisatildeo permite que os moacutedulos funcionais do programa possam ser isoladoscomo podemos observar na figura 1 de forma a facilitar futuras correcccedilotildees e actualizaccedilotildeesda base de conhecimento contribuindo positivamente para a evoluccedilatildeo da mesma eevitando assim que o sistema pericial fique obsoleto

212 Base de conhecimento

Uma base de conhecimento eacute um conjunto de informaccedilatildeo representada de forma a quepossa ser processada pelo motor de inferecircncia Existem vaacuterias formas de representa-ccedilatildeo de conhecimento no entanto as mais conhecidas satildeo a representaccedilatildeo por regrasrepresentaccedilatildeo por ldquoframesrdquo e ainda as redes semacircnticas

Ao representar conhecimento um dos factores determinantes para o meacutetodo necessaacute-rio a essa representaccedilatildeo eacute o domiacutenio do problema ou aacuterea a modelar A tiacutetulo de exemplose um problema segue um padratildeo ou algum tipo de linearidade na busca da soluccedilatildeonecessaacuteria ou ainda se a soluccedilatildeo puder ser obtida atraveacutes de questotildees cujas respostassatildeo maioritariamente simples (sim natildeo valores numeacutericos etc) a representaccedilatildeo doconhecimento eacute feita utilizando os meacutetodos de regras ou ldquoframesrdquo

Como jaacute foi referido o papel de um perito natildeo estaacute limitado apenas agrave contribuiccedilatildeocom o conhecimento para a base necessaacuteria Este exerce um outro papel igualmenteimportante que tem a ver mais com o aspecto de raciociacutenio Desta forma ao consultar abase de conhecimento satildeo tomadas algumas decisotildees tais como verificaccedilatildeo de eventuaissoluccedilotildees jaacute possiacuteveis em pontos intermeacutedios ou qual a proacutexima questatildeo a colocar Estemeacutetodo de interacccedilatildeo com a base de conhecimento poderaacute eventualmente entrar em

9

CAPIacuteTULO 2 ESTADO DA ARTE

conflito com a independecircncia de domiacutenio que foi referida na arquitectura de um sistemapericial No entanto este aspecto fundamental da criaccedilatildeo de um sistema pericial contribuilargamente para o bom funcionamento do mesmo

Para aleacutem disto a base de conhecimento deveraacute sempre contemplar as funcionalidadesnecessaacuterias que permitam ao utilizador em qualquer altura proceder agrave adiccedilatildeo de novosfactos agrave correcccedilatildeo dos jaacute existentes ou ainda agrave eliminaccedilatildeo dos mesmos Isto permitemanter uma base de conhecimento sempre actualizada fiaacutevel e consistente Estas razotildeescontribuem para a resoluccedilatildeo cada vez mais eficaz dos problemas que satildeo colocadosPara novos problemas que surgem poderatildeo ser necessaacuterias novas soluccedilotildees ou novosmeacutetodos para as encontrar Para problemas jaacute conhecidos poderatildeo ser encontradas novasformas ou novas soluccedilotildees de os resolver eventualmente consideradas mais eficazes ou deimplementaccedilatildeo mais simples

Por tudo isto considera-se que a base de conhecimento apesar de natildeo ser o verdadeiromotor de um sistema pericial poderaacute ser encarada como o verdadeiro combustiacutevelque o move e sem o qual natildeo seria possiacutevel qualquer tipo de evoluccedilatildeo pelo que a natildeocontribuiccedilatildeo para o seu melhoramento estagna o proacuteprio sistema provocando mais cedoou mais tarde o abandono do mesmo por parte dos utilizadores que entretanto podemperder a confianccedila que lhe depositaram

Os meacutetodos de representaccedilatildeo de conhecimento podem ser seleccionados de acordocom as caracteriacutesticas que lhes estatildeo inerentes e que se descrevem de seguida

2121 Regras

Uma das teacutecnicas de representaccedilatildeo de conhecimento mais utilizadas eacute a representaccedilatildeopor regras Estas satildeo utilizadas para representar heuriacutesticas e caracterizam-se por umconjunto de premissas que desencadeiam ou conduzem a uma soluccedilatildeo

As regras tecircm o formato ltidentificaccedilatildeogt Se ltLeft-Handed Side (LHS)gt EntatildeoltRight-Handed Side (RHS)gt

Onde

ltidentificaccedilatildeogt - identificaccedilatildeo da regra

ltLHSgt ndash ldquoLeft-Handed Siderdquo define as premissas que teratildeo que ser satisfeitas deforma a que a regra possa ser disparada

ltRHSgt ndash ldquoRight-Handed Siderdquo define as acccedilotildees ou conclusotildees que seratildeo verificadascom o disparo da regra

As premissas satildeo definidas recorrendo a factos que podem ser previamente conhecidosou inferidos a partir de outras regras A utilizaccedilatildeo de regras promove uma separaccedilatildeo

10

21 SISTEMAS PERICIAIS

entre a parte loacutegica e a funcional isto eacute permite-nos uma abstracccedilatildeo de implementaccedilatildeofocando-se na loacutegica

Vantagens

bull expressividade - as regras satildeo normalmente representadas de uma forma naturalque pode mesmo chegar a ser declarativa Eacute perfeitamente normal uma regra estarescrita num vocabulaacuterio que pode ser lido e compreendido por algueacutem que natildeo sejao programador o perito ou algueacutem com formaccedilatildeo na aacuterea em questatildeo

bull modularidade - as regras satildeo independentes entre si o que possibilita uma maisfaacutecil manutenccedilatildeo da base de conhecimento Isto permite e facilita a remoccedilatildeo deregras a adiccedilatildeo de outras ou a alteraccedilatildeo das jaacute existentes

bull separaccedilatildeo loacutegica - as regras satildeo independentes do motor de inferecircncia e estenatildeo carece de alteraccedilotildees ou actualizaccedilotildees quando as regras satildeo modificadas Ofuncionamento do sistema natildeo eacute alterado quando as regras o satildeo apenas as soluccedilotildeesque o sistema obteacutem eacute que poderatildeo ser diferentes (normalmente para melhor)

bull gramaacutetica riacutegida - as regras obedecem a estruturas que estatildeo perfeitamente defi-nidas agrave partida Isto implica que as mesmas possam ser validadas ou ateacute mesmoconstruiacutedas recorrendo a outros sistemas

bull execuccedilatildeo loacutegica - eacute sempre possiacutevel em qualquer altura do funcionamento dosistema pericial solicitar o desencadeamento ou disparo de uma sucessatildeo deregras A isto chama-se uma explosatildeo combinatoacuteria das regras e permite quesejam contemplados vaacuterios cenaacuterios possiacuteveis utilizando apenas uma execuccedilatildeoEsta execuccedilatildeo loacutegica tem sempre o mesmo resultado desde que se mantenham osparacircmetros iniciais

bull sistema de explicaccedilotildees - ao proceder a disparos de regras eacute possiacutevel dar indicaccedilatildeode qual a loacutegica utilizada para disparar uma determinada regra Isto permite de umaforma didaacutectica e simples justificar a razatildeo dos disparos auxiliando o utilizador nacompreensatildeo da evoluccedilatildeo que o sistema segue para atingir determinada soluccedilatildeo

Desvantagens

bull explicaccedilotildees - se um utilizador natildeo conhecer as regras ou natildeo as aceitar o sistemade explicaccedilotildees natildeo seraacute uma mais valia Poderaacute ateacute eventualmente tornar-se emalgo que confunde mais do que aquilo que auxilia

11

CAPIacuteTULO 2 ESTADO DA ARTE

bull gramaacutetica riacutegida - apesar de o meacutetodo de utilizaccedilatildeo de estruturas poder ser con-siderado importante porque estabelece um padratildeo a ser seguido pode conduzir aproblemas de expressividade quando utilizado em domiacutenios complexos

bull inconsistecircncia - um dos maiores problemas que podem surgir num sistema queutiliza a representaccedilatildeo do conhecimento atraveacutes de regras tem a ver com a possibi-lidade da existecircncia de inconsistecircncias e incoerecircncias nas regras Isto reduz-se ouevita-se atraveacutes da utilizaccedilatildeo exaustiva do sistema numa fase de testes em que satildeoequacionados o maior nuacutemero de casos ou cenaacuterios que possam despoletar todas asregras existentes na base de conhecimento

2122 Frames

Uma frame representa um conceito e eacute composta por slots que que natildeo satildeo mais do que adefiniccedilatildeo de um conjunto ltatributo valorgt Um valor pode ser um elemento uacutenico ouuma lista de valores e em termos de dados pode conter um tipo de dados primitivo ouuma referecircncia a outra frame

Esta representaccedilatildeo tem uma ligaccedilatildeo muito forte com o paradigma da programaccedilatildeoorientada a objectos jaacute que a ideia eacute a mesma representar objectos e conceitos do mundoreal utilizando a descriccedilatildeo a composiccedilatildeo e a heranccedila

Como vantagens temos

bull associaccedilatildeo - as frames definem e representam o conhecimento de uma formaassociativa (associaccedilatildeo normal de conceitos)

Desvantagens

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as frames podem representar um espaccedilo que natildeo estaacuterestringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

12

21 SISTEMAS PERICIAIS

2123 Redes semacircnticas

Uma rede semacircntica eacute um modelo formal em que satildeo descritos conceitos e relaccedilotildeesrecorrendo a um grafo dirigido Os conceitos satildeo representados por noacutes as relaccedilotildees porarcos e existe uma heranccedila de conceitos agrave medida que se procede agrave navegaccedilatildeo pelas vaacuteriasrelaccedilotildees

Como vantagens temos

bull exploraccedilatildeo graacutefica - a representaccedilatildeo de conhecimento atraveacutes de redes semacircnticaspermite a um utilizador explorar um domiacutenio graficamente Isto facilita a interacccedilatildeoe utilizaccedilatildeo do sistema

bull facilidade na adiccedilatildeo de clusters relacionados - utilizando o modo graacutefico de repre-sentaccedilatildeo torna-se mais faacutecil adicionar novos clusters em que existam conceitosrelacionados

bull faacutecil assimilaccedilatildeo - os seres humanos relacionam-se bem com ambientes graacuteficose tecircm uma tendecircncia a natildeo soacute aceitaacute-los melhor como tambeacutem a proceder a umautilizaccedilatildeo mais atractiva simples e de raacutepida aprendizagem com um miacutenimo deformaccedilatildeo

Como desvantagens temos

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as redes semacircnticas podem representar um espaccedilo que natildeoestaacute restringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

bull falta de estrutura e formalidade - natildeo existe uma semacircntica formal para a represen-taccedilatildeo simboacutelica das ligaccedilotildees o que deixa demasiado espaccedilo para a criatividade eeventualmente para o surgimento de problemas associados ao facto de poderemexistir muacuteltiplas formas de representaccedilatildeo

13

CAPIacuteTULO 2 ESTADO DA ARTE

2124 Mecanismos de inferecircncia

A base de conhecimento representa o caminho para encontrar uma determinada soluccedilatildeomas o motor de inferecircncia eacute a entidade que efectivamente percorre esse caminho Ummotor de inferecircncia pode utilizar diferentes estrateacutegias de raciociacutenio para a obtenccedilatildeode respostas As mais conhecidas satildeo a estrateacutegia de encadeamento directo e a deencadeamento inverso Contudo eacute possiacutevel combinar as duas no mesmo sistema naquiloque eacute vulgarmente conhecido como uma estrateacutegia de encadeamento misto

Encadeamento directo (Forward Chaining) ndash Um ser humano no seu dia a dia utilizaesta estrateacutegia para processamento de raciociacutenio Consoante assistimos a acontecimentoso ceacuterebro processa-os e analisa-os decidindo o que fazer de seguida De igual modo aestrateacutegia de raciociacutenio por encadeamento directo comeccedila por percorrer os factos baacutesicosque vatildeo originar o disparo de regras o que levaraacute agrave obtenccedilatildeo de conclusotildees intermeacutediasque por sua vez iratildeo originar o disparo de mais regras e assim sucessivamente Oprocesso continua ateacute que se obtenham conclusotildees finais se tal for possiacutevel ou natildeo hajamais lugar agrave possibilidade de disparo de novas regras

Devido agraves suas caracteriacutesticas esta estrateacutegia eacute mais apropriada para planeamentomonitorizaccedilatildeo controlo e interpretaccedilatildeo

Encadeamento inverso (Backward Chaining) ndash No encadeamento inverso o motorde inferecircncia tenta provar as conclusotildees finais que aparecem no lado direito das regras(RHS) Essas conclusotildees finais tambeacutem satildeo designadas como objectivos e eacute normaldizer-se que o motor de inferecircncia com encadeamento inverso eacute orientado aos objectivos(goal driven)

Para provarmos uma dada conclusatildeo teremos que provar as condiccedilotildees que aparecemno lado esquerdo da regra (LHS) que poderatildeo ser suportadas por conclusotildees intermeacutediasde outras regras ou por factos baacutesicos Sendo assim o mecanismo de encadeamentoinverso assume um caraacutecter essencialmente recursivo (para provar uma conclusatildeo vamoster que provar as condiccedilotildees)

Este tipo de estrateacutegia eacute mais apropriada para diagnoacutesticos jaacute que temos uma hipoacuteteseque necessita de ser provada de forma a chegar a uma conclusatildeo

Eacute importante salientar que a forma de representaccedilatildeo das regras eacute independente daestrateacutegia utilizada pelo motor de inferecircncia No entanto eacute possiacutevel melhorar a eficaacuteciado sistema se adaptarmos essa representaccedilatildeo consoante o encadeamento utilizado

14

21 SISTEMAS PERICIAIS

2125 Manutenccedilatildeo de uma base de conhecimento

A manutenccedilatildeo de uma base de conhecimento embora seja considerada vital para asobrevivecircncia do sistema pericial eacute um processo bastante complexo no sentido emque implica cuidados que nem sempre satildeo tidos ou considerados Eacute habitual existiremproblemas de validaccedilatildeo verificaccedilatildeo redundacircncia e contradiccedilotildees

De forma a garantir que a base de conhecimento se mantenha fiaacutevel e bem definidadevem ser desenvolvidos mecanismos que evitem a ocorrecircncia deste tipo de problemas

Redundacircncia - Considera-se aplicaccedilatildeo de redundacircncia a uma base de conhecimentoquando ao inserir uma regra estamos a adicionar conhecimento que jaacute estava contido nabase de conhecimento Podemos observar o seguinte exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X tem_barbatanas entatildeo X nada

regra3 se X nada E X tem_barbatanas entatildeo X eacute_peixe

Neste exemplo eacute possiacutevel verificar que esta base de conhecimento manteacutem-se idecircntica(o conhecimento eacute o mesmo) se removermos a regra3 considerada redundante Esta regranatildeo trouxe nenhum conhecimento novo ao sistema e pode ser descartada

Contradiccedilatildeo - Considera-se regra contraditoacuteria toda a regra que contradiz conheci-mento jaacute existente na base de conhecimento Por exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X nada entatildeo X natildeo_eacute_peixe

A regra2 contradiz claramente a regra1 pelo que eacute considerada contraditoacuteria Um dosgrandes problemas na anaacutelise de duas ou mais regras contraditoacuterias passa por determinarquais as que correspondem ao conhecimento correcto

Verificaccedilatildeo - acccedilatildeo desencadeada ainda na fase de implementaccedilatildeo inicial da base deconhecimento onde se pretende minimizar problemas essencialmente de redundacircncia e decontradiccedilatildeo que possam ser provocados pelo programador Toda a base de conhecimentoeacute verificada e confrontada com as notas apontamentos e indicaccedilotildees a que o programadorteve acesso e que serviram de alicerce para a construccedilatildeo da mesma

Validaccedilatildeo - a acccedilatildeo preventiva de erros iniciais levada a cabo logo apoacutes a implementa-ccedilatildeo da base de conhecimento precede a acccedilatildeo seguinte que consiste em validar a referidabase atraveacutes da intervenccedilatildeo de um perito o qual utiliza vaacuterios cenaacuterios de testes ondetenta obter as respostas ao mesmo tempo que vai consultando as explicaccedilotildees disponiacuteveisao longo do percurso

Apesar de ser habitual proceder a esta validaccedilatildeo com o perito que contribuiu como conhecimento eacute igualmente habitual e ateacute beneacutefico utilizar outros peritos da mesma

15

CAPIacuteTULO 2 ESTADO DA ARTE

aacuterea que para aleacutem de validarem a base de conhecimento em causa poderatildeo inclusiveconfrontar o seu proacuteprio conhecimento com o do perito original procedendo a correcccedilotildeesa eles proacuteprios ou agrave base per si Quanto maior a taxa de intervenccedilatildeo construtiva por partede peritos numa base de conhecimento melhor seraacute a qualidade associada agrave mesma

213 Raciociacutenio sobre incerteza

Raciociacutenio sobre incerteza eacute o nome dado ao processo de formulaccedilatildeo de conhecimentobaseado em fontes de informaccedilatildeo que detenham algum tipo de incerteza na sua especifi-caccedilatildeo

O conhecimento que detemos natildeo se limita a observaccedilotildees loacutegicas do tipo ldquose Obser-vaccedilatildeo_A entatildeo conclusatildeo_Brdquo Em vaacuterias situaccedilotildees necessitamos de lidar com informaccedilatildeoincompleta incorrecta ou ateacute mesmo ausente

Quando lidamos com conhecimento de peritos num determinado domiacutenio surge aindaoutro tipo de conhecimento este originado atraveacutes da observaccedilatildeo e experiecircncia

Existe entatildeo a necessidade de representaccedilatildeo de conhecimento e respectivo grau decerteza Para este efeito existem algumas teacutecnicas tais como loacutegica Fuzzy teorias deprobabilidades tais como Bayes ou Dempster-Shafer factores de certeza entre outros

Os seguintes autores podem ser consultados para referecircncia das teacutecnicas acima men-cionadas

bull Loacutegica Fuzzy - Drakopoulos (1994)

bull Bayes - Lucas (2001)

bull Dempster-Shafer - Wilson (2000) e Barnett (1991)

De seguida vai ser descrita a teacutecnica dos factores de certeza que foi a teacutecnica adoptadapara o desenvolvimento da soluccedilatildeo

2131 Factores de certeza

A teacutecnica dos Certainty Factors ou Factores de Certeza (CF) eacute um do meacutetodos detratamento de incertezas num sistema pericial A teacutecnica foi desenvolvida por Shortliffeand Buchanan para o projecto MYCIN um sistema pericial de diagnoacutestico e tratamentode meningite e tratamento do sangue Desde entatildeo que esta teacutecnica eacute o padratildeo seguido nodesenvolvimento de sistemas periciais baseados em regras Heckerman (1992)

16

21 SISTEMAS PERICIAIS

De um ponto de vista funcional caracteriza-se pela atribuiccedilatildeo de um nuacutemero o graude certeza a factos e regras Esse grau de certeza eacute uma medida relativa probabiliacutesticaque pode ser positiva ou negativa sendo normalmente usados valores no intervalo de -1 a1

A sua definiccedilatildeo original baseou-se na seguinte foacutermula FC [HE] = MC [HE]minusMD [HE]

O factor de certeza da hipoacutetese H dado uma evidecircncia E eacute dado pela diferenccedila entre

bull a medida de certeza de H dado Erarr MC [HE]

bull a medida de descrenccedila de H dado Erarr MD [HE]

O CF final de uma regra com uma premissa baseada num facto ou noutra regra eacute dadopela foacutermula 21

Quando as premissas estatildeo associadas atraveacutes do operador conjunccedilatildeo eacute aplicada afoacutermula 22

Quando existe mais do que uma regra a suportar uma determinada conclusatildeo o CFfinal eacute o resultado da foacutermula 23

CFf inal =CFpremissatimesCFregra 21

CFf inal = min[CFpremissa1 CFpremissan

]timesCFregra

22

X Y gt 0CF (X Y ) = X +Y (100˘X)100 23a

X ou Y lt 0CF (X Y ) = X +Y(1˘min(X Y)) 23b

X Y lt 0CF (X Y ) =minusCF (minusX minusY ) 23c

214 Vantagens e desvantagens

Apesar de tudo o que foi descrito um sistema pericial natildeo representa de forma alguma aferramenta mais apropriada para resolver todos os problemas com recurso a conhecimentoque de outra forma estaria reservado apenas a peritos das vaacuterias aacutereas Ao utilizarmosum sistema pericial estamos sujeitos a aspectos positivos e negativos cabendo a noacutes opapel de determinar se quando confrontados com um determinado problema a utilizaccedilatildeodeste tipo de ferramenta eacute a mais apropriada

17

CAPIacuteTULO 2 ESTADO DA ARTE

Para observar quais as principais vantagens de um sistema pericial podemos consultaras opiniotildees partilhadas por Giarratano et al (1998) CoAJRA (1997)

bull Elevada disponibilidaderArr um sistema pericial estaacute sempre disponiacutevel em termosde tempo e local pronto a funcionar sob qualquer condiccedilatildeo enquanto que umperito natildeo dispotildee dessa total disponibilidade

bull Baixo risco de utilizaccedilatildeorArr pode ser utilizado em ambientes considerados perigo-sos e hostis para um ser humano

bull Baixo custo rArr o custo de providenciar conhecimento por utilizador eacute bastantereduzido

bull DurabilidaderArr o conhecimento eacute permanente ao contraacuterio de um especialista queestaacute sujeito a ausecircncias

bull Conhecimento de vaacuterios especialistasrArr quando agregado o conhecimento reco-lhido a partir de vaacuterios especialistas poderaacute conduzir a resultados mais adequadose considerados melhores quando confrontados com o conhecimento individual e osresultados que daiacute advecircm

bull Capacidade de explicaccedilatildeorArr um sistema pericial consegue explicar detalhadamenteos passos que levaram agrave resposta dada enquanto que um ser humano pode natildeo tera disponibilidade nem a vontade de explicar todo o processo de raciociacutenio seguido

bull EmotividaderArr um sistema pericial natildeo estaacute sujeito a emoccedilotildees o seu funciona-mento e as respostas que providencia natildeo satildeo influenciadas pelo meio em que estaacuteinserido como por exemplo situaccedilotildees de stress ou situaccedilotildees de perigo iminente (aqueda de um aviatildeo ou uma central nuclear em risco)

bull Natildeo influenciaacutevelrArr acontecimentos mais actuais tecircm o mesmo peso na tomada dedecisatildeo evitando assim o fenoacutemeno de ldquoviciaccedilatildeordquo da base de conhecimento

No entanto um sistema pericial comporta tambeacutem algumas desvantagens das quaisse salientam

bull Emotividade rArr o facto de natildeo ser emotivo tambeacutem pode ser visto como umadesvantagem jaacute que natildeo recorrer a emoccedilotildees pode ser problemaacutetico por exemploem situaccedilotildees que necessitem de senso comum

18

21 SISTEMAS PERICIAIS

bull ManutenccedilatildeorArr se natildeo for devidamente mantido e actualizado um sistema pericialcorre o risco de ldquoenvelhecerrdquo no sentido em que deixa de ser um sistema fiaacutevel aque possamos recorrer e que corre o risco de abandono

bull CriatividaderArr um sistema pericial natildeo tem capacidade de reagir de forma diferentea problemas colocados seguindo sempre uma linha estaacutevel de raciociacutenio

bull Adaptaccedilatildeo sensorial rArr um sistema pericial natildeo consegue reagir a informaccedilatildeosensorial do meio que o rodeia entenda-se sensorial como sentidos humanos taiscomo o cheiro o tacto e a visatildeo

19

CAPIacuteTULO 2 ESTADO DA ARTE

22 GISPSA - GIS Problem Solver Advisor

O Gestatildeo Integrada de Seguros (GIS) eacute um Sistema de Informaccedilatildeo vocacionado para aactividade seguradora residente na plataforma AS400 da IBM Umas das caracteriacutesticasmais interessantes deste sistema acabou por ser tambeacutem um dos grandes proporciona-dores de eventuais problemas O GIS possui uma grande capacidade de configuraccedilatildeo oque sendo muito uacutetil para a adaptabilidade deste a cenaacuterios situaccedilotildees ou utilizadoresdiferentes acaba por originar vaacuterios problemas operacionais atraveacutes de inconsistecircnciasna proacutepria configuraccedilatildeo

Dada esta facilidade aparente de ocorrecircncia de problemas e a falta de sensibilidadee formaccedilatildeo teacutecnica dos utilizadores para os resolver a equipa de assistecircncia teacutecnicaafecta ao GIS estava muitas vezes com sobrecarga de pedidos por parte dos clientes quepretendem estes problemas solucionados Existiam periacuteodos de especial relevacircncia noque toca a estas sobrecargas tais como os fechos de ano das empresas

A partir daqui surge a ideia e a necessidade da criaccedilatildeo do GISPSA com o intuito dealiviar a sobrecarga da equipa de assistecircncia teacutecnica mas essencialmente com o grandeobjectivo de assegurar que um cliente natildeo fica sem soluccedilatildeo para os problemas com que sedepara apenas porque natildeo estatildeo teacutecnicos disponiacuteveis A grande vantagem de um sistemapericial foi e seraacute sempre essa poder substituir um perito sem ter que enfrentar questotildeescomo a disponibilidade custos ou tempo

Assim surge o GISPSA que mais natildeo eacute que um projecto criado por Pinto no acircmbito deum projecto acadeacutemico cujo objectivo inicial passava por criar um Sistema Pericial paradiagnoacutestico de problemas operacionais do GIS Este sistema teve por base o conhecimentoe o respectivo raciociacutenio extraiacutedos de um perito da aacuterea Administrativa-Financeira doGIS

No caso de problemas mais complexos em que o Sistema Pericial natildeo consiga determi-nar os factores de erro eacute remetida a resoluccedilatildeo para um teacutecnico da empresa comunicandoesse facto ao utilizador Pinto (1998)

221 Arquitectura

Sendo um sistema pericial o GISPSA teria que ser desenvolvido utilizando uma lingua-gem que tivesse uma seacuterie de caracteriacutesticas A existecircncia de uma base de conhecimento apossibilidade de consultar factos adicionar novos factos ou ainda de remover factos nessamesma base e aspectos como o backtracking na realizaccedilatildeo de raciociacutenio ao inferir sobreesses mesmos factos natildeo permitia um leque muito alargado na escolha da linguagem de

20

22 GISPSA - GIS PROBLEM SOLVER ADVISOR

desenvolvimento

Desta forma ficou decidido que o GISPSA seria desenvolvido em prolog (maisespecificamente winprolog) Devido agrave simplicidade de utilizaccedilatildeo e extensa documentaccedilatildeode apoio o LPAProlog foi usado como motor de inferecircncia e o LPAFlex foi usado paraestabelecer a declaraccedilatildeo de regras

Como jaacute foi referido anteriormente o GISPSA eacute uma aplicaccedilatildeo standalone desenhadae desenvolvida para uma execuccedilatildeo local em mono-posto e sujeita agrave obtenccedilatildeo de umalicenccedila de utilizaccedilatildeo para garantir o seu funcionamento

Figura 2 GISPSA menu inicial

A aplicaccedilatildeo dispotildee de uma interface graacutefica tambeacutem criada em winprolog que utilizarecursos especiacuteficos do sistema operativo Windows

A base de conhecimento eacute armazenada num uacutenico ficheiro ksl e o seu carregamentonatildeo eacute parcial O mesmo seraacute dizer que toda a base de conhecimento eacute passada paramemoacuteria de trabalho assim que o programa arranca

222 Funcionamento

Em termos funcionais a aplicaccedilatildeo permite mudar o tipo de linguagem a ser empreguenas conversaccedilotildees estabelecidas com o utilizador consoante esta esteja a ser utilizadapor um teacutecnico (habitualmente os teacutecnicos com formaccedilatildeo na aacuterea) ou um utilizadornormal (o cliente que adquiriu a aplicaccedilatildeo e cuja formaccedilatildeo eacute mais reduzida ou ateacute mesmoinexistente)

Apoacutes a definiccedilatildeo da linguagem de interacccedilatildeo a utilizar o sistema inicia entatildeo o pedidode assistecircncia apresentando a mensagem ldquoSeleccione a aplicaccedilatildeordquo (figura 3) que permitenuma primeira instacircncia direccionar o raciociacutenio face agrave resposta do utilizador

21

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 3 GISPSA interacccedilatildeo inicial

Figura 4 GISPSA exemplo de interacccedilatildeo pergunta-resposta

223 Limitaccedilotildees

Apesar de ser inovadora na aacuterea esta aplicaccedilatildeo foi no iniacutecio bastante utilizada por algunsclientes tendo sofrido algum abandono de forma gradual ao longo do tempo de vida quejaacute leva Apoacutes uma anaacutelise chegou-se agrave conclusatildeo que as principais causas na origemdesse abandono seriam as seguintes

bull Adicionar regras implicava o conhecimento da sintaxe das mesmas Verificou-se que esta tarefa era demasiado complexa para um utilizador sem formaccedilatildeo esensibilidade suficientes na aacuterea da programaccedilatildeo

bull O acto de proceder agrave ediccedilatildeo de regras existentes na base de conhecimento traduz-senuma tarefa que para aleacutem de morosa eacute essencialmente de risco no sentido em

22

23 WEB EXPERT SYSTEMS

que natildeo existe uma verdadeira noccedilatildeo do impacto que estas alteraccedilotildees possam vir ater no comportamento global do sistema

bull O sistema apenas pode ser instalado em mono-posto o que obriga agrave obtenccedilatildeo deuma licenccedila por cada instalaccedilatildeo que se pretende realizar

bull O sistema natildeo permite a integraccedilatildeo com ambientes baseados em redes e sistemasdistribuiacutedos

bull Natildeo existe nenhum mecanismo de verificaccedilatildeo da base de conhecimento

bull O aspecto visual da aplicaccedilatildeo estaacute ultrapassado e eacute pouco apelativo

23 Web Expert Systems

Actualmente uma grande maioria dos sistemas periciais desenvolvidos satildeo desenhadospara um funcionamento em ambientes web As razotildees apontadas para esta orientaccedilatildeo satildeovaacuterias destacando-se a evoluccedilatildeo da proacutepria tecnologia as velocidades de transmissatildeode dados em redes a possibilidade de acesso em muacuteltiplas localizaccedilotildees geograacuteficas(desde que assegurado o necessaacuterio acesso agrave rede) e ainda o desenvolvimento de novasferramentas que possibilitam maior facilidade na criaccedilatildeo destes novos sistemas

Algumas das ferramentas que permitem actualmente o desenvolvimento de um sistemapericial baseado em ambientes web satildeo as seguintes

1 WebFlex - LPA Flex

2 EXSYS CORVID

3 WebCLIPS

4 JCLIPS

5 JESS

6 Acquire

WebFlex - Esta ferramenta permite a publicaccedilatildeo de um sistema pericial desenvolvidoem ldquoLPA Prologrdquo Os sistemas periciais desenvolvidos a partir deste meacutetodo necessitamainda de outra ferramenta para garantir o funcionamento o ldquoLPA ProWeb Serverrdquo Eacute

23

CAPIacuteTULO 2 ESTADO DA ARTE

possiacutevel adaptar um sistema pericial jaacute desenvolvido para ser disponibilizado numarede sem ser necessaacuterio efectuar qualquer tipo de alteraccedilatildeo No entanto se for pretendidoalgum tipo de configuraccedilatildeo extra por exemplo incluir imagens ou alterar a aparecircncia dealguns controlos eacute uma alteraccedilatildeo extremamente morosa e complexa

WebFlex allows you to deliver your flex-based expert systems onto Intranets

and Extranets easily Just create your rules and frames and questions as per normal

in flex and WebFlex will construct a web server-based solution using ProWeb where

all the questions are sent automatically configured for a standard HTMLJavascript

browserLogic Programming Associaties Ltd (2010)

Eacute possiacutevel alterar o HTML de saiacuteda que o webflex utiliza por defeito no entanto estaconfiguraccedilatildeo natildeo eacute tatildeo simples quanto poderaacute parecer agrave partida e obriga agrave alteraccedilatildeo dosistema pericial

Esta ferramenta funciona apenas em sistemas windows e eacute necessaacuteria a obtenccedilatildeo deuma licenccedila de utilizaccedilatildeo (natildeo eacute gratuita)

EXSYS CORVID - Eacute uma ferramenta composta por dois moacutedulos Exsys CORVID

Knowledge Automation Expert System Software e Exsys Servlet Runtime EXSYS (2010)

Natildeo foi possiacutevel encontrar nenhum sistema desenvolvido por esta ferramenta pormotivos de confidencialidade eou vantagem competitiva Estatildeo no entanto disponiacuteveisaplicaccedilotildees de demonstraccedilatildeo na paacutegina oficial da empresa Verificou-se que nenhumadas aplicaccedilotildees de demonstraccedilatildeo disponiacuteveis possui capacidades de dar explicaccedilotildees oujustificaccedilotildees

De acordo com EXSYS as aplicaccedilotildees construiacutedas com esta ferramenta podem seracedidas por Servlet Applet ou standalone e esta ferramenta necessita da obtenccedilatildeo deuma licenccedila de desenvolvimento

WebCLIPS - Segundo Michael Giordano o WebCLIPS eacute uma implementaccedilatildeo CGI

que envolve o C Language Integrated Production System (CLIPS) como aplicaccedilatildeo internaO CLIPS eacute uma ferramenta de desenvolvimento de sistemas periciais

Esta ferramenta foi desenvolvida em linguagem C o que significa que em termos deportabilidade desde que se possua o coacutedigo fonte este poderaacute ser compilado em qualquersistema operativo jaacute que o compilador para a linguagem estaacute disponiacutevel para todas as

24

23 WEB EXPERT SYSTEMS

versotildees existentes no mercado No entanto o WebCLIPS apenas foi desenvolvido parafuncionamento em sistemas windows e linux

O CLIPS eacute uma ferramenta livre que permite o desenvolvimento de sistemas baseadosem regras Pode ser integrado com algumas linguagens das quais se destacam C Java

(JCLIPS) FORTRAN entre outras Esta eacute provavelmente a ferramenta mais utilizada nodesenvolvimento de sistemas periciais devido agrave sua rapidez eficiecircncia e pelo facto de sergratuita

JCLIPS - Eacute uma biblioteca que permite integraccedilatildeo com Java e permite igualmentea utilizaccedilatildeo do motor do CLIPS a partir de uma classe Java Esta interligaccedilatildeo eacute feitaatraveacutes da importaccedilatildeo do ficheiro (dll ou so consoante o sistema operativo) e permite aexecuccedilatildeo de uma instacircncia ou seja permite ter apenas uma sessatildeo de um sistema pericialde cada vez Maarten Menken (2010)

JESS - O JESS eacute uma extensatildeo do CLIPS em JAVA Eacute basicamente uma bibliotecacujo objectivo natildeo passa por gerar uma aplicaccedilatildeo web mas sim servir de base para quepossa ser integrada ou utilizada para esse efeito Ernest Friedman-Hill (2010)

Utiliza uma linguagem especiacutefica designada JESS language equivalente ao CLIPSmas com novos componentes que a tornam uma linguagem complexa e de difiacutecil utilizaccedilatildeopor algueacutem sem conhecimentos de inteligecircncia artificial

Acquire - Eacute um produto bastante avanccedilado do ponto de vista tecnoloacutegico face aosconcorrentes no sentido em que permite uma separaccedilatildeo evidente entre a camada aplicaci-onal e a camada de apresentaccedilatildeo Promove uma separaccedilatildeo cliente-servidor e disponibilizaum Software Development Kit (SDK) que permite a integraccedilatildeo com outras aplicaccedilotildees

De acordo com Acquired Intelligence o produto estaacute sujeito a uma licenccedila de utilizaccedilatildeoe eacute disponibilizado ainda um serviccedilo online de alojamento de sistemas periciais omyAcquire disponiacutevel mediante uma subscriccedilatildeo semestral

231 Casos de estudo

Os sistemas periciais mais especificamente aqueles que satildeo baseados em sistemas webtecircm conhecido nos uacuteltimos anos uma evoluccedilatildeo gradual e consistente devido em grandeparte agrave simplicidade e disponibilidade que possibilitam Podem ser acedidos a partir dequalquer local no mundo 24 horas por dia e sem qualquer tipo de limitaccedilatildeo bastando

25

CAPIacuteTULO 2 ESTADO DA ARTE

apenas que se garanta o acesso agrave rede onde o sistema pericial estaacute colocado

As interfaces satildeo mais apelativas e chegam a fazer uso de imagens e outros meiosgraacuteficos ou de multimeacutedia cujo objectivo natildeo eacute apenas o de tornar os sistemas maisinteressantes mas tambeacutem mais eficazes jaacute que auxiliam de forma mais simples eesclarecida Os controlos utilizados as caixas de interacccedilatildeo e ateacute mesmo as explicaccedilotildees ejustificaccedilotildees (nos sistemas que o permitam) ajudam a ter uma ideia cada vez mais clarasobre o funcionamento dos sistemas obtendo-se assim melhores resultados

Alguns dos casos de estudo de sistemas periciais baseados em sistemas web existentesactualmente tecircm como um dos seus maiores objectivos a disponibilidade global dosmesmos (satildeo disponibilizados normalmente atraveacutes da internet) e os mais conhecidossatildeo

bull Landfill Operation Management Advisor (LOMA)

bull Medical Diagnosis Support System (MDSS)

bull Whale watcher

2311 LOMA - Landfill Operation Management Advisor

O LOMA eacute um sistema pericial online que analisa problemas operacionais falhas eacidentes em aterros comuns Aleacutem disso o LOMA fornece conselhos sobre como umgestor pode evitar esses problemas e em caso de ocorrecircncia sobre como diminuir oimpacto das suas consequecircncias Encontra-se disponiacutevel em httplomacivil

duthgr e eacute de utilizaccedilatildeo puacuteblica

O sistema pericial foi desenvolvido por Dokas recorrendo agraves ferramentas WebFlex eLPA ProWeb Server

A arquitectura da aplicaccedilatildeo web pode ser visualizada na figura 5 e consiste nosseguintes moacutedulos Dokas (2005)

bull Sistema pericial LOMA

bull Moacutedulo de aconselhamento

bull Moacutedulo operacional de problemas-causa

bull Eventos inicias

bull Problemas operacionais

26

23 WEB EXPERT SYSTEMS

bull Moacutedulo de explicaccedilotildees

bull Moacutedulo de submissatildeo de conhecimento e informaccedilatildeo

Figura 5 Arquitectura do LOMA

O moacutedulo mais relevante para o acircmbito desta dissertaccedilatildeo eacute o ldquoSistema pericial LOMArdquoe eacute tambeacutem o moacutedulo mais importante para a aplicaccedilatildeo LOMA

Eacute composto por vinte e quatro sub-moacutedulos cada um deles responsaacutevel por analisarum tipo especiacutefico de problema e ainda por um sub-moacutedulo extra que eacute responsaacutevel pelocontrolo do sistema

O sub-moacutedulo extra questiona o utilizador que descreve o problema (ver 6 e 7) ecom base na sua descriccedilatildeo apresenta uma lista de possiacuteveis problemas (ver 8) Quandoo utilizador selecciona um problema da lista de resultados eacute activado o respectivo sub-moacutedulo que por sua vez iraacute fornecer informaccedilatildeo de como prevenir o problema ou nocaso de este jaacute ter acontecido como minimizar as suas consequecircncias (ver 9)

27

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 6 Paacutegina inicial do sistema pericial LOMA

Figura 7 Sub-moacutedulo extra

28

23 WEB EXPERT SYSTEMS

Figura 8 Sugestatildeo de problemas do sub-moacutedulo extra

Figura 9 Sub-moacutedulo especializado

29

CAPIacuteTULO 2 ESTADO DA ARTE

2312 MDSS - Medical Diagnosis Support System

O MDSS eacute um sistema pericial utilizado na aacuterea da medicina e foi desenvolvido paraajudar no diagnoacutestico e tratamento da diabetes A diabetes pode afectar vaacuterias partes docorpo provocando diversos sintomas e complicaccedilotildees Quando detectada atempadamenteeacute mais facilmente controlaacutevel e menos perigosa Por todos estes motivos foi criado umsistema pericial online o MDSS que permite inferir sobre uma seacuterie de sintomas parachegar a um diagnoacutestico

Na opiniatildeo de Filho uma das vantagens deste sistema pericial eacute que possibilita quemeacutedicos em ambientes rurais ou perigosos e de difiacutecil acesso com recursos limitadospossam aceder ao sistema pericial de forma a terem uma ajuda no diagnoacutestico destadoenccedila O que comeccedilou como um sistema pericial vocacionado e orientado para adiabetes rapidamente cresceu e tornou-se algo mais do que isso sendo hoje utilizadocomo sistema de diagnoacutestico para vaacuterias doenccedilas

No que diz respeito agrave sua arquitectura o MDSS foi desenvolvido em LPA Prolog

recorrendo aos moacutedulos ProWeb e ProData e utilizando Open Data Base Connectivity

(ODBC) para acesso agrave base de dados Utiliza loacutegica fuzzy para raciociacutenio sobre incertezaspara lidar com conhecimento parcial

O sistema eacute composto por trecircs moacutedulos No primeiro moacutedulo eacute possiacutevel um es-pecialista definir sintomas exames cliacutenicos exames de laboratoacuterio e exames relativosa uma ou mais doenccedilas Eacute ainda possiacutevel a atribuiccedilatildeo de valores (pesos estatiacutesticos)ou de resultados que definem uma doenccedila Isso permite por exemplo que a pressatildeoarterial possa estar associada ao diagnoacutestico de pressatildeo alta diabetes gravidez de riscoou insuficiecircncia renal entre outros Informaccedilotildees de consultas anteriores e exames satildeoautomaticamente ligadas e analisadas sob fundamentaccedilatildeo loacutegico temporal

No segundo moacutedulo o sistema permite consultas atraveacutes do qual os dados relevantespara o paciente satildeo registados e relacionados com outros exames correlacionados Durantea fase de diagnoacutestico o sistema pode sugerir outros testes ou procedimentos para entatildeoinferir se haacute outros riscos e doenccedilas a serem investigados

No terceiro moacutedulo eacute efectuado o diagnoacutestico O sistema iraacute localizar automatica-mente os diagnoacutesticos jaacute registados noutras consultas incluindo aquelas feitas por outrosmeacutedicos Aleacutem disso o sistema pesquisa niacuteveis de doenccedilas de acordo com os resultadosdos exames Pode tambeacutem sugerir uma investigaccedilatildeo mais aprofundada sempre que osdados natildeo sejam suficientes para garantir um diagnoacutestico preciso

30

23 WEB EXPERT SYSTEMS

2313 Whale watcher

O sistema pericial Whale watcher eacute um sistema de demonstraccedilatildeo da plataforma AcquireEste e outros sistemas periciais similares estatildeo disponiacuteveis na paacutegina da Acquire (httpwwwaiinccademos)

Figura 10 Paacutegina principal do sistema pericial Whale Watcher

Figura 11 Paacutegina final do sistema pericial Whale Watcher

Atraveacutes das demonstraccedilotildees facultadas pela Acquire natildeo eacute possiacutevel concluir se existealgum tipo de sistema de explicaccedilotildees No entanto no final de cada sessatildeo do sistemapericial eacute possiacutevel consultar um resumo (ver 11) que funciona como uma explicaccedilatildeomuito baacutesica da inferecircncia realizada pelo sistema pericial jaacute que se limita apenas amostrar os factos que foram respondidos durante a sessatildeo

31

3Ferramentas utilizadas

Durante o desenvolvimento deste trabalho foi necessaacuterio decidir sobre quais as ferramen-tas a utilizar para a criaccedilatildeo do novo sistema pericial Atendendo a algumas caracteriacutesticasproacuteprias e objectivos traccedilados era necessaacuterio utilizar alguma especificidade na escolhapara garantir a exclusividade do resultado Desenvolvimento web capacidade de pro-ceder a inferecircncia sobre conhecimento representado atraveacutes de regras simplicidade deutilizaccedilatildeo actualidade da tecnologia entre outras caracteriacutesticas influenciaram significa-tivamente nesta escolha

Entre os vaacuterios ambientes de desenvolvimento disponiacuteveis a opccedilatildeo recaiu sobre umque para aleacutem de simples e eficiente era utilizado regularmente em situaccedilatildeo profissi-onal pelo criador deste projecto pelo que aqui foi relativamente simples chegar a umaconclusatildeo

Indo de encontro agraves razotildees que levaram agrave escolha da linguagem do motor de inferecircnciautilizada no projecto que deu origem a este trabalho tambeacutem aqui foi escolhida umalinguagem que possibilita o backtracking de forma eficaz e simplificada caracteriacutesticaessencial para o bom funcionamento do motor de inferecircncia e que contribui largamentepara o sucesso do sistema pericial

31 Ambiente de desenvolvimento

O ambiente de desenvolvimento e respectiva linguagem de programaccedilatildeo utilizados para acriaccedilatildeo do interface do sistema pericial foram seleccionados levando em conta algunsrequisitos e factores considerados necessaacuterios e ateacute mesmo essenciais para a soluccedilatildeo finalA listagem dessas caracteriacutesticas eacute a seguinte

bull Baixo custo de disponibilizaccedilatildeo

33

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

bull Independecircncia do sistema operativo

bull Simples escalabilidade

bull Visual apelativo

Com base nesta lista de caracteriacutesticas consideradas desejaacuteveis ou ateacute mesmo essen-ciais para a soluccedilatildeo final e considerando tambeacutem a jaacute longa experiecircncia de utilizaccedilatildeonesta plataforma foi escolhida a linguagem Java J2EE utilizando a framework Icefaces eo portal Glassfish Podemos considerar para esta escolha uma seacuterie de paracircmetros paraaleacutem dos jaacute evidenciados

bull O J2EE eacute uma linguagem independente do sistema operativo

bull O J2EE caracteriza-se pela sua modularidade

bull Glassfish eacute um portal open source com suporte para J2EE

bull Icefaces eacute uma framework JavaServer Faces (JSF) compatiacutevel com o Glassfish

bull Icefaces permite a criaccedilatildeo de interfaces graacuteficos de uma forma simples

bull Existecircncia de boa documentaccedilatildeo relativamente a todos os produtos

Para aleacutem disto podemos ainda considerar e referir outros produtos e componentesque natildeo sendo menos importantes tambeacutem foram utilizados durante o desenvolvimentodeste trabalho A lista completa de ferramentas eacute a seguinte

bull Java J2EE 60

bull Eclipse Galileo (com plugins para Glassfish e svn) - Integrated Development

Environment (IDE) para Java

bull Icefaces 182

bull GlassFish - portal

bull Visual SVN Server e Tortoise - controlo de versotildees

bull MikTeX - latex

bull TexnicCenter - IDE para latex

34

32 MOTOR DE INFEREcircNCIA

32 Motor de inferecircncia

Em qualquer sistema pericial o motor de inferecircncia eacute o cerne do mesmo O seu desenvol-vimento obriga habitualmente a um esforccedilo e concentraccedilatildeo maiores porque aqui residea forma como o sistema iraacute percorrer as vaacuterias etapas necessaacuterias para alcanccedilar umasoluccedilatildeo

Tambeacutem neste trabalho o motor de inferecircncia eacute um ponto essencial e a sua implemen-taccedilatildeo teve um papel destacado no processo de anaacutelise realizado Actualmente existemalguns produtos que podem ser utilizados integral ou parcialmente como motor deinferecircncia de um sistema pericial esses produtos podem ser frameworks ou shells ouainda Business Rule Management System (BRMS)

Os termos framework e shell satildeo muitas vezes utilizados como sinoacutenimo umaframework eacute uma abstracccedilatildeo que permite agregar formas de resoluccedilatildeo de problemascomuns uma shell eacute similar no sentido em que disponibiliza uma camada de abstracccedilatildeouma ldquoconchardquo que encapsula os serviccedilos

No sentido de tentar reutilizar um produto jaacute existente foi elaborado um estudo acercados actuais produtos e das suas caracteriacutesticas A abordagem seguida para esse estudo foiuma abordagem por fases em que gradualmente se foi estreitando o conjunto de soluccedilotildeesaceitaacuteveis mediante a utilizaccedilatildeo de alguns criteacuterios

Foram consideradas cinco fases

bull Fase I - Recolha de candidatos

bull Fase II - Requisitos base

bull Fase III - Viabilidade econoacutemica

bull Fase IV - Viabilidade teacutecnica

bull Fase V - Prova de conceito

321 Fase I - Recolha de candidatos

A fase I teve como objectivo recolher alguns dos actuais produtos que possuam caracteriacutes-ticas desejadas para um sistema deste geacutenero Natildeo foram considerados alguns produtosque satisfaziam os requisitos mas que natildeo permitem uma integraccedilatildeo com Java Foramidentificados os seguintes produtos como potenciais integradores do projecto

35

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

Produto BRMS FrameworkDrools X XHammurapi Rules XILog XJCLIPS XJESS XJEOPS XJRuleEngine XOpenL Tablets XOpenRules XProva language XYprolog XZilonis X

Tabela 1 Listagem de produtos da Fase I

Drools - ou JBoss Rules eacute um produto open source da RedHat (2010) Define umalinguagem especiacutefica para as regras Eacute desenvolvido em Java e utiliza um mecanismo deencadeamento directo baseado em regras natildeo implementa justificaccedilotildees

Hammurapi Rules - eacute um produto desenvolvido em Java por Hammurapi GroupEste motor de inferecircncia utiliza a sintaxe da linguagem Java para definiccedilatildeo de regras Eacutepossiacutevel definir grupos de regras em XML e estaacute disponiacutevel um plug-in para Eclipse quepermite a ediccedilatildeo destes grupos Suporta encadeamento directo e indirecto

ILOG - WebSphere ILOG Business Rule Management Systems eacute como o nome indicaum BRMS eacute um produto da IBM (2010) que requer licenciamento adequado Eacute necessaacuteriaa instalaccedilatildeo e configuraccedilatildeo de alguns componentes de forma a que o produto possa serutilizado por exemplo Rule Team Server Rule Execution Server Http server entreoutros

JCLIPS - eacute um produto open source mantido por uma comunidade e permite aintegraccedilatildeo entre Java e CLIPS O CLIPS ldquoC Language Integrated Production Systemrdquo eacuteum sistema pericial desenvolvido em linguagem C Maarten Menken (2010)

JESS - eacute um produto comercial da Sandia National Laboratories desenvolvidoem Java Eacute necessaacuterio adquirir licenccedilas para efectivar a utilizaccedilatildeo do mesmo ErnestFriedman-Hill (2010)

JEOPS - Java Embedded Object Production System (JEOPS) eacute uma framework open

source desenvolvida num acircmbito acadeacutemico por Carlos Figueira Filho

36

32 MOTOR DE INFEREcircNCIA

JRuleEngine - eacute um produto open source desenvolvido em Java e mantido porMcarniel (2010) As regras satildeo compiladas para classes Java

OpenL Tablets - eacute um BRMS open source cuja principal vantagem eacute a integraccedilatildeocom a folhas de caacutelculo Excel Permite a utilizaccedilatildeo de tabelas de decisatildeo no formatoExcel OpenL (2010)

OpenRules - eacute um produto da OpenRules Inc sujeito a licenccedila de utilizaccedilatildeo Eacutetotalmente orientado para a folha de caacutelculo Excel da Microsoft

Prova language - eacute um produto open source desenvolvido em Java por KozlenkovAlex and Paschke Disponibiliza uma linguagem muito semelhante ao prolog Eacute umproduto bastante direccionado para a comunicaccedilatildeo entre agentes expondo inclusiveacute umsistema multi-agente

Yprolog - eacute um produto open source desenvolvido em Java por Boris van SchootenEacute uma reacuteplica do prolog desenvolvida totalmente em Java Foi evoluindo ao longo dotempo a partir de produtos como o WProlog e o XProlog

Zilonis - eacute um produto desenvolvido em Java por Elie Levy O formato das regras eacutesemelhante ao CLIPS

322 Fase II - Requisitos base

A fase II teve como objectivo filtrar a lista de candidatos no sentido de excluir produtosque natildeo se enquadrem directamente com os requisitos do sistema a desenvolver Assimsendo foram excluiacutedos alguns dos candidatos jaacute indicados e os principais motivos daexclusatildeo satildeo

bull Natildeo permitirem a integraccedilatildeo com um portal

bull Formato das regras eacute fechado natildeo possibilitando possiacuteveis e futuras evoluccedilotildees

bull Natildeo disponibilizaccedilatildeo de acesso aos serviccedilos internos mais concretamente natildeofornecem uma framework de controlo Desta forma natildeo eacute possiacutevel reutilizar partesdo motor de inferecircncia ou do sistema de gestatildeo de regras sem que este seja feitoatraveacutes do proacuteprio produto

Candidatos excluiacutedos pelas razotildees atraacutes expostas

37

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProdutoILogOpenRulesOpenL Tablets

Tabela 2 Listagem de produtos excluiacutedos na Fase II

323 Fase III - Viabilidade econoacutemica

Sendo um paracircmetro com importacircncia relativa dada a possiacutevel aplicaccedilatildeo comercial deum produto baseado neste trabalho natildeo deixa de ser importante para o estudo realizadoDesta forma a fase III teve como objectivo filtrar a lista de resultados no sentido de excluirprodutos que natildeo sejam economicamente viaacuteveis quer por motivos de licenciamentocomercial quer por motivos de licenccedilas de utilizaccedilatildeo

Foram entatildeo considerados os produtos constantes da tabela 3 como natildeo viaacuteveis nosentido em que existem produtos open source similares para o efeito pretendido

ProdutoDroolsJESS

Tabela 3 Listagem de produtos excluiacutedos na Fase III

324 Fase IV - Viabilidade teacutecnica

Esta fase teve por objectivo filtrar a lista de resultados de forma a que os produtos natildeoviaacuteveis do ponto de vista teacutecnico natildeo sejam considerados para a escolha final

Os produtos que natildeo foram considerados viaacuteveis por questotildees teacutecnicas satildeo

38

32 MOTOR DE INFEREcircNCIA

Produto RazatildeoJEOPS Documentaccedilatildeo disponiacutevel bastante vaga projecto desconti-

nuado e natildeo estaacutevelJRuleEngine As regras satildeo compiladas para Java natildeo permite escalabili-

dade sem compilar o projectoZilonis Natildeo estaacute preparado para ser utilizado como framework ape-

nas permite uma aplicaccedilatildeo stand-alone

Hammurapi Rules As regras satildeo compiladas para Java natildeo permite escalabili-dade sem compilar o projecto

Tabela 4 Listagem de produtos excluiacutedos na Fase IV

325 Fase V - Prova de conceito

Nesta uacuteltima fase restaram trecircs produtos JClips Prova e YProlog Apoacutes a realizaccedilatildeode uma prova de conceito com estes produtos foram encontradas algumas vantagens edesvantagens Esta anaacutelise pode ser consultada nas tabelas 5 6 e 7

JClipsVantagens Desvantagens

bull Linguagem CLIPS bull Apenas permite 1 execuccedilatildeo deforma a permitir vaacuterias utilizaccedilotildeesdo motor de inferecircncia eacute necessaacuterioimplementar loacutegica especiacutefica

bull Ausecircncia de documentaccedilatildeo

Tabela 5 JClips - Vantagens e desvantagens

39

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProvaVantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza exemplos de uti-lizaccedilatildeo

bull Uacuteltima actualizaccedilatildeo em 10 deJunho de 2010

bull Instaacutevel

bull Bastante ocupaccedilatildeo de recursos(CPU e memoacuteria)

bull Disponibilizaccedilatildeo de pouca docu-mentaccedilatildeo

bull Ao invocar um predicado natildeo ins-tancia apenas as variaacuteveis na pri-meira vez mas devolve uma lista detodos os resultados possiacuteveis simi-lar ao predicado findall do LPA Pro-log

Tabela 6 Prova - Vantagens e desvantagens

YProlog

Vantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza documentaccedilatildeo eexemplos de utilizaccedilatildeo

bull Operaccedilotildees baacutesicas do Prologtecircm o mesmo comportamento

bull Uacuteltima actualizaccedilatildeo em 21 de Abrilde 2006

Tabela 7 YProlog - Vantagens e desvantagens

326 Conclusatildeo e fundamentaccedilatildeo da escolha

Tratando-se do nuacutecleo do sistema pericial e sabendo que natildeo existe actualmente ummotor de inferecircncia que corresponda totalmente aos requisitos necessaacuterios foi decidido

40

32 MOTOR DE INFEREcircNCIA

desenvolver um motor de inferecircncia de raiz recorrendo a um produto que permitisse umdesenvolvimento raacutepido e com uma curva de aprendizagem pouco acentuada Para tale depois do estudo realizado perante as vaacuterias hipoacuteteses disponiacuteveis foi decidido optarpelo YProlog

Na uacuteltima fase do estudo apresentado entre os candidatos disponiacuteveis este aparececomo o mais viaacutevel quer pelos aspectos de adaptabilidade funcionamento e facilidadede utilizaccedilatildeo quer ainda pelo nuacutemero reduzido de desvantagens encontradas face aosrestantes

41

4Wexsys

Este trabalho baseia-se na criaccedilatildeo de um sistema pericial baseado no GISPSA e oobjectivo principal passa pela integraccedilatildeo do novo sistema num ambiente de acesso globalou mais especificamente num portal web Para atingir tal meta foi descrito nos capiacutetulosanteriores quais as ferramentas a utilizar sendo que agora vamos compreender como eacuteque a soluccedilatildeo em si foi desenvolvida

O sistema que nasceu a partir desta implementaccedilatildeo foi baptizado com o nome wexsys- ldquoWeb Expert Systemrdquo Partindo da base do GISPSA o wexsys possui um motor deinferecircncia totalmente novo criado especificamente no acircmbito deste trabalho e ainda umabase de conhecimento Foi decidido adoptar o princiacutepio de utilizaccedilatildeo de regras para arepresentaccedilatildeo da base de conhecimento

De referir ainda que o raciociacutenio utilizado no motor de inferecircncia segue uma filosofiado tipo backward chaining princiacutepio jaacute descrito nos capiacutetulos anteriores

Detentor de uma interface considerada actual para os paracircmetros utilizados nos diasque correm este novo sistema pericial foi criado atraveacutes da utilizaccedilatildeo de J2EE e Icefaces

que lhe conferem um aspecto renovado e extremamente apelativo aos utilizadores Satildeoutilizadas teacutecnicas tais como Ajax que providenciam uma dinacircmica de funcionamentomuito interessante do ponto de vista da utilizaccedilatildeo

41 Arquitectura global

A soluccedilatildeo foi projectada de acordo com a arquitectura J2EE ou seja utilizando uma sepa-raccedilatildeo em moacutedulos ou componentes Foram criados dois moacutedulos principais pWexsysEAR

e WexsysEAR estes moacutedulos satildeo a separaccedilatildeo da aplicaccedilatildeo em duas grandes camadas acamada web e a camada de negoacutecio

Esta separaccedilatildeo permite a instalaccedilatildeo da aplicaccedilatildeo num uacutenico servidor ou uma instala-

43

CAPIacuteTULO 4 WEXSYS

ccedilatildeo distribuiacuteda por vaacuterios servidores possibilitando tambeacutem a utilizaccedilatildeo de clusters Estaseparaccedilatildeo torna-se bastante uacutetil se pretendermos expandir a aplicaccedilatildeo para uma utilizaccedilatildeomais intensa ao niacutevel dos acessos A possibilidade de instalaccedilatildeo em muacuteltiplas maacutequinaspermite a obtenccedilatildeo de melhores resultados quando confrontada com a utilizaccedilatildeo de umambiente com apenas um uacutenico servidor

Figura 12 Arquitectura da soluccedilatildeo

411 Moacutedulo pWexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente visual da soluccedilatildeo tambeacutem conhecida porPresentation Layer Este moacutedulo eacute composto pelos componentes descritos na figura 13

Figura 13 Arquitectura do moacutedulo visual

bull pWexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

44

41 ARQUITECTURA GLOBAL

bull wWexsysGUI - componente principal que conteacutem as JSPrsquos servlet e managed

beans

bull jWexsysWebClient - classes utilizadas na camada visual

bull TGGraphLayout - componente externo que disponibiliza um controlo que permitea definiccedilatildeo de um grafo este componente vai ser descrito na secccedilatildeo 4133

bull jWexsysLog - permite o registo da ocorrecircncia de erros

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

412 Moacutedulo WexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente de negoacutecio da aplicaccedilatildeo tambeacutem conhecidapor Business Layer eacute o centro de controlo de toda a soluccedilatildeo Este moacutedulo eacute compostopor alguns componentes como podemos ver na figura 14

Figura 14 Arquitectura do moacutedulo de negoacutecio

bull WexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

bull eWexsys - componente principal responsaacutevel pela criaccedilatildeo dos serviccedilos

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

bull jWexsysUtils - classes utilitaacuterias internas

45

CAPIacuteTULO 4 WEXSYS

bull jWexsysLog - componente auxiliar para permitir o tratamento de erros

bull jWexsysEngine - responsaacutevel pela implementaccedilatildeo do motor de inferecircncia

bull YProlog - permite a interpretaccedilatildeo de coacutedigo prolog Este componente vai serdescrito na secccedilatildeo 4133

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos

Como jaacute foi referido o wexsys foi desenvolvido respeitando a arquitectura J2EE como talos componentes que integram a aplicaccedilatildeo foram tambeacutem criados seguindo esse conceitoTodos os componentes foram estruturados de forma a poderem ser reutilizados com omiacutenimo de dependecircncias e toda a aplicaccedilatildeo foi projectada de forma a retirar o maacuteximopartido desta divisatildeo

Podemos ver na figura 15 um diagrama que permite verificar de que forma os compo-nentes estatildeo a ser utilizados O diagrama tem trecircs agrupamentos que pretendem descreverutilizando uma linguagem Object Oriented (OO) a sua visibilidade Os temos publicprotected e private satildeo utilizados como analogias aos respectivos conceitos na linguagemOO

4131 Camada de acesso puacuteblico

A camada de acesso puacuteblico expotildee os meacutetodos de interacccedilatildeo com a aplicaccedilatildeo sendocomposta por trecircs componentes wWexsysGUI jWexsysWebClient e eWexsysClient

Figura 15 Wexsys - Integraccedilatildeo dos componentes

46

41 ARQUITECTURA GLOBAL

Os componentes eWexsysClient e jWexsysWebClient contecircm interfaces de ligaccedilatildeoentre a camada visual e a camada de negoacutecio

eWexsysClient - disponibiliza as classes designadas Data Transfer Object (DTO) eainda o interface para os serviccedilos disponibilizados pelo wexsys

jWexsysWebClient - disponibiliza classes que caracterizam os conceitos de negoacuteciomas que contecircm atributos adicionais A razatildeo da existecircncia deste componente justificandashsecom a eventual expansatildeo da aplicaccedilatildeo para uma nova camada visual Os exemplos decoacutedigo 1 e 2 permitem-nos observar uma utilizaccedilatildeo de atributos extra na classe visualpara controlo de ocorrecircncia de erros

1 p u b l i c c l a s s RuleView

3 p r i v a t e i n t l e v e l = 0

5 Rule i d e n t i f i e r

7 p r i v a t e S t r i n g i d e n t i f i e r = n u l l

9 p r i v a t e S t r i n g i d e n t i f i e r E r r = n u l l

11 p r i v a t e b o o l e a n i d e n t i f i e r I n E r r = f a l s e

13

Rule d e s c r i p t i o n

15

p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

17

p r i v a t e S t r i n g d e s c r i p t i o n E r r = n u l l

19

p r i v a t e b o o l e a n d e s c r i p t i o n I n E r r = f a l s e

21

Coacutedigo 1 Excerto da classe RuleView

p u b l i c c l a s s Rule implemen t s S e r i a l i z a b l e

47

CAPIacuteTULO 4 WEXSYS

2

p r i v a t e i n t l e v e l = 0

4

Rule i d e n t i f i e r

6

p r i v a t e S t r i n g i d e n t i f i e r = n u l l

8

10 Rule d e s c r i p t i o n

12 p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

14 Coacutedigo 2 Excerto da classe Rule

O outro componente envolvido na camada puacuteblica o wWexsysGUI eacute o responsaacute-vel pela interacccedilatildeo com aplicaccedilatildeo Eacute o componente que disponibiliza as paacuteginas e oresponsaacutevel pela coordenaccedilatildeo de todo o processo web

4132 Camada de acesso protegido

A camada de acesso protegido disponibiliza componentes que podem ser utilizados pelosdois moacutedulos mas que natildeo estatildeo disponiacuteveis para o exterior Neste caso existe apenas umcomponente nestas condiccedilotildees o jWexsysLog cuja funccedilatildeo eacute assegurar o registo de erros

jWexsysLog - componente responsaacutevel pelo registo de erros utiliza internamente aframework log4j

4133 Camada de acesso privado

A camada de acesso privado incluiacute todos os componentes responsaacuteveis por processa-mento interno Os componentes responsaacuteveis pelo processamento interno satildeo eWexsysjWexsysEngine e jWexsysUtils Tambeacutem incluiacutedos no conceito de processamento internoestatildeo os componentes TGGraphLayout e YProlog

eWexsys - eacute o componente responsaacutevel pela implementaccedilatildeo do interface de negoacuteciodelegando as funcionalidades em classes especializadas ou no componente responsaacutevelpela integraccedilatildeo com o nuacutecleo da aplicaccedilatildeo o jWexsysEngine

48

41 ARQUITECTURA GLOBAL

jWexsysEngine - eacute o componente responsaacutevel pelo nuacutecleo da aplicaccedilatildeo ou sejaeacute o responsaacutevel pela integraccedilatildeo do java com o prolog e vice-versa Eacute o componenteresponsaacutevel pelo mapeamento das classes de java para as classes de comunicaccedilatildeo com oprolog

jWexsysUtils - eacute um componente auxiliar que disponibiliza e encapsula utilitaacuteriospara uma melhor organizaccedilatildeo interna da aplicaccedilatildeo

TGGraphLayout - eacute um componente tambeacutem conhecido por TouchGraph eacute umprojecto mantido por uma comunidade e estaacute disponiacutevel no sourceforge AlexanderShapiro (2010)

YProlog - este componente foi o escolhido durante a fase de estudo da implementaccedilatildeopara ser a base do motor de inferecircncia (321)

4134 Fluxo de invocaccedilatildeo

A aplicaccedilatildeo foi desenvolvida de forma a que todos os pedidos seguissem um mesmo fluxode invocaccedilatildeo de forma a uniformizar o processo Na figura 16 temos uma relaccedilatildeo dasclasses principais da aplicaccedilatildeo

Figura 16 Diagrama de classes principais

O fluxo de invocaccedilatildeo inicia-se atraveacutes do WexsysBean no caso de funcionalidades

49

CAPIacuteTULO 4 WEXSYS

do motor de inferecircncia ou atraveacutes do WexsysKBBean no caso de funcionalidades dabase de conhecimento Ambos os managed beans delegam no WexsysViewManager querecorrendo agrave classe WexsysViewHelper converte as classes view para classes DTO Aclasse WexsysViewManager por sua vez delega no session bean WexsysSessionBean quemediante o tipo de pedido delega nas classes de validaccedilatildeo ou nas classes do motor deinferecircncia WexsysEngineImpl

Este processo pode ser observado na figura 17 que representa um diagrama de sequecircn-cia exemplificativo do fluxo de invocaccedilatildeo geneacuterico

Figura 17 Diagrama de sequecircncia do fluxo de invocaccedilatildeo

414 Portal

O wexsys tem como ponto de entrada na aplicaccedilatildeo uma paacutegina inicial que permite aidentificaccedilatildeo do utilizador no sistema pericial Como se trata de um trabalho acadeacutemico aparte de validaccedilatildeo e autenticaccedilatildeo de utilizadores natildeo foi contemplada como tal eacute possiacutevelautenticar-se com qualquer utilizador Para aleacutem da autenticaccedilatildeo eacute ainda possiacutevel indicarpara a sessatildeo actual qual o miacutenimo grau de confianccedila para a apresentaccedilatildeo de uma resposta

50

41 ARQUITECTURA GLOBAL

O endereccedilo da aplicaccedilatildeo respeita o seguinte formato httpservidorportawWexsysGUI onde servidor e porta satildeo os dados de configuraccedilatildeo do Portal Server

Figura 18 Wexsys - Paacutegina inicial

Quando o utilizador inicia a utilizaccedilatildeo do sistema ficam disponiacuteveis trecircs funcionali-dades que seratildeo referidas nas secccedilotildees seguintes

4141 Templates

Um dos aspectos comuns a toda a aplicaccedilatildeo eacute o aspecto graacutefico tendo este sido imple-mentado recorrendo a Facelets Um template facelets define-se pela criaccedilatildeo de umapaacutegina modelo em que existem zonas dinacircmicas Este conceito eacute conhecido de outrastecnologias por exemplo Web Parts ou Master Pages desenvolvidos pela Microsoft

O coacutedigo 3 permite ver como foi desenvolvido o template principal

lthtml

2 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

4 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

6

lt i c e o u t p u t D e c l a r a t i o n

8 doc typeRoo t =HTML

d o c t y p e P u b l i c =minus W3C DTD XHTML 1 0 S t r i c t EN

10 doc typeSys tem = h t t p www w3 org TR xhtml1 DTD xhtml1minus s t r i c t

d t d gt

51

CAPIacuteTULO 4 WEXSYS

12 lthead gt

lt t i t l e gtwexsys minus p a g e T i t l e lt t i t l e gt

14 [ meta t a g s e l i n k t o c s s f i l e s ]

lt head gt

16 ltbody gt

lt f view l o c a l e = f a c e s C o n t e x t e x t e r n a l C o n t e x t r e q u e s t L o c a l e gt

18 lt i c e l o a d B u n d l e basename =com wexsys g u i r e s o u r c e s bund leRes

v a r = bund leRes gt

lt i c e form p a r t i a l S u b m i t = t r u e gt

20 lt d i v i d = wrapper gt

lt d i v i d = logo gt

22 lth1gtlta h r e f = gtWExSys lt a gt lt h1gt

lth2gtweb e x p e r t system lt h2gt

24 lt div gt

lt d i v i d = h e a d e r gt

26 lt d i v i d =menugt

[ Menu c o n t e n t ]

28 lt div gt

lt div gt

30 lt div gt

lt d i v i d = page gt

32 lt d i v i d = c o n t e n t gt

lt u i i n s e r t name= c o n t e n t gt

34 D e f a u l t C o n t e n t

lt u i i n s e r t gt

36 lt div gt

lt d i v i d = s i d e b a r gt

38 lt u i i n s e r t name= s i d e b a r gt

S i d e b a r c o n t e n t

40 lt u i i n s e r t gt

lt div gt

42 lt d i v s t y l e = c l e a r bo th gt

lt div gt

44 lt div gt

lt d i v i d = f o o t e r gt

46 F o o t e r c o n t e n t

lt div gt

48 lt i c e form gt

52

41 ARQUITECTURA GLOBAL

lt f view gt

50 lt body gt

lt html gt Coacutedigo 3 Coacutedigo do template principal do portal

Na listagem de coacutedigo 3 podemos ver a vermelho as aacutereas que foram definidas comodinacircmicas no coacutedigo 4 tambeacutem a vermelho podemos ver as respectivas aacutereas num cenaacuteriode implementaccedilatildeo de uma paacutegina

1 lt u i c o m p o s i t i o n

t e m p l a t e =WEBminusINF incminust e m p l a t e s mainminust e m p l a t e j s p x

3 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

5 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

7

9 lt u i d e f i n e name= c o n t e n t gt

[ ]

11 lt u i d e f i n e gt

13 lt u i d e f i n e name= s i d e b a r gt

[ ]

15 lt u i d e f i n e gt

17 lt u i c o m p o s i t i o n gt Coacutedigo 4 Coacutedigo da paacutegina inicial do portal

415 Suporte multi-liacutengua

O wexsys foi desenvolvido considerando um factor bastante relevante numa aplicaccedilatildeoactual o suporte multi-liacutengua Este suporte eacute uma das vantagens do sistema e foiimplementado recorrendo a ficheiros de recursos (properties) de forma a exteriorizartodos os textos de saiacuteda

Desta forma para dar suporte a uma nova liacutengua apenas teremos que traduzir os textosnos ficheiros de recursos e de alterar a aplicaccedilatildeo de forma a permitir seleccionar o idioma

53

CAPIacuteTULO 4 WEXSYS

A alteraccedilatildeo a ser efectuada na aplicaccedilatildeo eacute muito simples jaacute que basta passar o valor doatributo ldquolocalerdquo da tag ldquofviewrdquo como sendo a liacutengua pretendida

42 Motor de inferecircncia

Para este trabalho foi definida a criaccedilatildeo de um motor de inferecircncia de raiz que pudesseefectivamente substituir o utilizado no sistema base O novo motor desenvolvido teraacute quesuportar uma seacuterie de especificaccedilotildees a comeccedilar pela capacidade de operar num ambientemulti-utilizador

O motor de inferecircncia deve estar preparado para lidar com conhecimento incerto foiescolhido a teacutecnica dos factores de certeza por ser uma teacutecnica simples de reproduzir eeficaz na sua utilizaccedilatildeo

Para aleacutem disto e tratando-se um sistema pericial o motor de inferecircncia deveraacuteser independente da base de conhecimento utilizada e deveraacute idealmente suportar umsistema de explicaccedilotildees que responda a eventuais pedidos por parte dos utilizadores quepretendam ver mais detalhadamente quais as regras que conduziram agrave conclusatildeo obtidaTambeacutem seraacute possiacutevel saber porque eacute que determinada questatildeo eacute colocada (explicaccedilotildeesvulgarmente denominadas de como e porquecirc)

421 Multi-utilizador

Quando se pretende que um sistema pericial tenha uma utilizaccedilatildeo mono-posto (comoera o caso do GISPSA) apenas eacute criada uma instacircncia por cada vez que eacute chamado omotor de inferecircncia No nosso caso tendo sido estabelecido que o novo sistema teriaque permitir uma utilizaccedilatildeo multi-utilizador eacute necessaacuterio desenvolver os mecanismosnecessaacuterios para permitir execuccedilotildees de vaacuterias instacircncias para o novo motor de inferecircncia

A classe WexsysEngineFactory5 eacute a responsaacutevel por criar uma instacircncia do motorde inferecircncia por cada utilizador que inicia a utilizaccedilatildeo do sistema Esta classe tem ummeacutetodo do tipo static o meacutetodo getInferenceEngine que tem como paracircmetros de entradaum utilizador e devolve uma instacircncia do motor de inferecircncia As instacircncias activas satildeoguardadas internamente e sempre que eacute invocado o meacutetodo eacute obtida a respectiva instacircnciaNo caso de ainda natildeo existir uma instacircncia entatildeo eacute criada uma nova e guardada

1

C r e a t e s an i n s t a n c e o f I n f e r e n c e E n g i n e

54

42 MOTOR DE INFEREcircNCIA

3

param usernameKey

5 The usernameKey t o use

7 return I n f e r e n c e E n g i n e i n s t a n c e

throws WexsysArgumen tExcep t ion

9

p u b l i c s t a t i c WexsysEngineImpl g e t I n f e r e n c e E n g i n e ( S t r i n g

usernameKey )

11 throws WexsysArgumentExcept ion

i f ( g e t R u l e U r l ( ) == n u l l | | g e t R u l e U r l ( ) l e n g t h ( ) == 0)

13 throw new WexsysArgumentExcept ion ( mainKnowledgeBaseUrl

r u l e U r l )

15 WexsysEngineImpl i n f e r e n c e E n g i n e = n u l l

17 Have we a l r e a d y c r e a t e d an i n s t a n c e

i f ( g e t I n f e r e n c e E n g i n e s ( ) c o n t a i n s K e y ( usernameKey ) )

19 Obta in t h e i n s t a n c e a s s o c i a t e d t o t h e s p e c i f i e d key

i n f e r e n c e E n g i n e = g e t I n f e r e n c e E n g i n e s ( ) g e t ( usernameKey )

21 e l s e

Cr ea t e a new i n s t a n c e and s t o r e i t i n t h e h o l d e r

23 i n f e r e n c e E n g i n e = new WexsysEngineImpl ( usernameKey

r u l e U r l kb sUr l )

g e t I n f e r e n c e E n g i n e s ( ) p u t ( usernameKey i n f e r e n c e E n g i n e )

25

27 re turn i n f e r e n c e E n g i n e

Coacutedigo 5 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo

422 Base de conhecimento inicial

Ao partir para o desenvolvimento de um sistema pericial eacute necessaacuterio adoptar uma basede conhecimento inicial simples que sirva de suporte ao desenvolvimento do mesmo

55

CAPIacuteTULO 4 WEXSYS

A base de conhecimento inicial foi adoptada a partir do estudo de Merritt (1989) Foiseleccionada devido a duas caracteriacutesticas principais

bull simplicidade - no sentido em que as regras satildeo pequenas e simples de interligar

bull abrangecircncia - existem alguns cenaacuterios possiacuteveis de serem testados com o protoacutetipocomo por exemplo raciociacutenio sobre incerteza e conclusotildees intermeacutedias

A base de conhecimento inicial escolhida tem a seguinte estrutura

bull rule 1 if not turn_over and battery_bad then problem is battery cf 100

bull rule 2 if lights_weak then battery_bad cf 50

bull rule 3 if radio_weak then battery_bad cf 50

bull rule 4 if turn_over and smell_gas then problem is flooded cf 80

bull rule 5 if turn_over and gas_gauge is empty then problem is out_of_gas cf 90

bull rule 6 if turn_over and gas_gauge is low then problem is out_of_gas cf 30

423 Protoacutetipo do motor de inferecircncia

Para o desenvolvimento do protoacutetipo inicial do motor de inferecircncia foi necessaacuterio definiralguns aspectos essenciais tais como

1 Formato da regras

2 Formato das questotildees

3 Interacccedilatildeo assiacutencrona de questotildees e respostas

4 Algoritmos a utilizar

4231 Formato das regras

O formato das regras foi definido tendo em conta alguns pressupostos Entre elessalientam-se a necessidade da utilizaccedilatildeo de graus de confianccedila e a capacidade de guardaruma descriccedilatildeo para cada regra

O formato escolhido para a representaccedilatildeo de uma regra foi o seguinte

56

42 MOTOR DE INFEREcircNCIA

rule(

ltcodigogt rsquoDescriccedilatildeo da regrarsquo

lhs([

ev(ltpremissagt ltvalor da premissagt)

ev(ltpremissa_ngt ltvalor da premissa_ngt)

])

rhs(ev(ltsoluccedilatildeogt ltvalor da soluccedilatildeogt) CF)

)

Na definiccedilatildeo do ltLHSgt eacute possiacutevel definir uma lista de premissas e respectivos valoresno caso da regra conter mais do que uma premissa Um aspecto relevante relacionado coma lista de premissas eacute que esta considera apenas o operador conjunccedilatildeo entre premissas

4232 Formato das questotildees

O formato das questotildees foi tambeacutem definido assumindo alguns princiacutepios tais como apossibilidade de respostas muacuteltiplas e ainda a atribuiccedilatildeo de um texto quer agrave questatildeo a serapresentada quer agraves hipoacuteteses colocadas

O formato escolhido para a representaccedilatildeo de uma questatildeo foi o seguinte

question(

turn_over

rsquoO carro ligarsquo

[

answer(ltvalorgt ltdescriccedilatildeo do valorgt)

answer(ltvalor_ngt ltdescriccedilatildeo do valor_ngt)

]

ltescolha_multipla = 1 0gt

)

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas

Numa qualquer execuccedilatildeo de um software instalado e executado localmente numa maacutequinao funcionamento normal seraacute a execuccedilatildeo de um conjunto de instruccedilotildees ateacute ao ponto emque seja necessaacuteria a interacccedilatildeo com um utilizador Quando isso acontece o programafica suspenso ateacute que o utilizador responda ao que lhe foi solicitado continuando depoiscom a sua execuccedilatildeo a partir do ponto onde parou

57

CAPIacuteTULO 4 WEXSYS

No caso de um programa desenvolvido em prolog e mais especificamente um sistemapericial o conceito atraacutes descrito eacute exactamente o mesmo jaacute que o programa apenassuspende a execuccedilatildeo quando eacute necessaacuterio colocar uma questatildeo que o utilizador teraacute queforccedilosamente responder para dar continuidade ao programa

Se no entanto considerarmos a realidade de uma aplicaccedilatildeo web este princiacutepio jaacutenatildeo seraacute tatildeo linear porque um servidor web recebe um pedido executa-o e devolve umresultado O mesmo seraacute dizer que numa execuccedilatildeo de um componente prolog a partirde um servidor web a pilha de execuccedilatildeo eacute interrompida quando eacute necessaacuterio questionaro utilizador mas natildeo eacute possiacutevel continuar a execuccedilatildeo da mesma a partir do ponto ondeparou Em vez disso seraacute necessaacuterio desfazer a pilha de execuccedilatildeo criada e assim queexistir a resposta do utilizador (eacute feito novo pedido ao servidor) a execuccedilatildeo eacute realizadanovamente desde o iniacutecio mas desta vez considerando a resposta recebida

As razotildees para este comportamento justificam-se pela utilizaccedilatildeo do protocolo HTTPem que eacute necessaacuterio existir um pedido e uma resposta O que obriga a que a colocaccedilatildeoda pergunta e a resposta sejam assiacutencronos podendo existir entre as duas acccedilotildees vaacuteriospedidos (pedidos de explicaccedilotildees por exemplo)

Este ldquoproblemardquo levou agrave necessidade do desenvolvimento de um mecanismo quepermita um funcionamento coerente num programa que utilize (como neste caso) oprolog simulando o comportamento que este teria numa situaccedilatildeo de execuccedilatildeo local

O mecanismo proposto foi a alteraccedilatildeo do predicado responsaacutevel pelo processo re-cursivo especificando um atributo auxiliar de controlo que acompanha a execuccedilatildeo dopredicado Esse atributo auxiliar quando detectada a necessidade de colocaccedilatildeo de umaquestatildeo eacute instanciado e impede a prossecuccedilatildeo do predicado retornando a execuccedilatildeo paraa web com a respectiva questatildeo

Este mecanismo permite uma comunicaccedilatildeo assiacutencrona com a parte web mantendo asvantagens da recursividade do prolog

4234 Estrutura da base de conhecimento

A base de conhecimento apoacutes a definiccedilatildeo do formato de representaccedilatildeo das regras e dasquestotildees eacute a seguinte

q u e s t i o n ( t u r n _ o v e r rsquoO c a r r o l i g a rsquo

2 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

4 q u e s t i o n ( l i g h t s _ w e a k rsquoAs l u z e s e s t a o f r a c a s rsquo

58

42 MOTOR DE INFEREcircNCIA

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

6

q u e s t i o n ( rad io_weak rsquoO r a d i o e s t a f r a c o rsquo

8 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

10 q u e s t i o n ( s m e l l _ g a s rsquo C h e i r a a g a s o l i n a rsquo

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

12

q u e s t i o n ( gas_gauge rsquoO que marca o p o n t e i r o do d e p o s i t o da

g a s o l i n a rsquo

14 [ answer ( empty rsquo Vazio rsquo ) answer ( high rsquo S u f i c i e n t e rsquo ) answer

( low rsquo Rese rva rsquo ) ] 0 )

16 r u l e ( r u l e _ 1 rsquo Rule 1 rsquo

l h s ( [ ev ( t u r n _ o v e r no ) ev ( b a t t e r y _ b a d yes ) ] ) r h s ( ev (

problem b a t t e r y ) 100) )

18

r u l e ( r u l e _ 2 rsquo Rule 2 rsquo

20 l h s ( [ ev ( l i g h t s _ w e a k yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

22 r u l e ( r u l e _ 3 rsquo Rule 3 rsquo

l h s ( [ ev ( rad io_weak yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

24

r u l e ( r u l e _ 4 rsquo Rule 4 rsquo

26 l h s ( [ ev ( s m e l l _ g a s yes ) ev ( t u r n _ o v e r yes ) ] ) r h s ( ev ( problem

f l o o d e d ) 80) )

28 r u l e ( r u l e _ 5 rsquo Rule 5 rsquo

l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge empty ) ] ) r h s ( ev (

problem o u t _ o f _ g a s ) 90) )

30

r u l e ( r u l e _ 6 rsquo Rule 6 rsquo

32 l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge low ) ] ) r h s ( ev ( problem

o u t _ o f _ g a s ) 30) ) Coacutedigo 6 Representaccedilatildeo da base de conhecimento do protoacutetipo

59

CAPIacuteTULO 4 WEXSYS

4235 Algoritmos a utilizar

Um dos paracircmetros mais relevantes para o funcionamento do algoritmo inicial eacute o graumiacutenimo de confianccedila que eacute indicado no iniacutecio da utilizaccedilatildeo do sistema na paacutegina inicialSe o valor indicado para este paracircmetro for demasiado elevado poderaacute inibir algumasregras impedindo o seu disparo no caso de natildeo ser atingido o grau de confianccedila necessaacuterioPor outro lado se o valor introduzido for demasiado baixo permitiraacute que qualquer regradispare independentemente do seu grau de confianccedila traduzindo-se numa maior aacutervorede pesquisa

O motor de inferecircncia eacute executado mediante o recurso a um predicado principal Estepredicado seraacute o responsaacutevel pelo iniacutecio do processo de inferecircncia De seguida seratildeoapresentados alguns dos algoritmos considerados mais relevantes Os algoritmos 1 2 e 3representam atraveacutes da utilizaccedilatildeo de pseudo-coacutedigo alguma da loacutegica implementada nomotor de inferecircncia

Algoritmo 1 Algoritmo principal do motor de inferecircnciabegin tryToProve

while empty ControlObj doobtemRegra (r)disparoPremissaslarr truefor premissa isin LHS do

ControlObjdisparoularr verificaPremissa (p)disparoPremissaslarr disparoPremissas ampamp disparouif not empty ControlObj then

termina o algoritmoend

endif empty ControlObj then

if disparoTodasPremissas thenfireRules

endend

endend

60

42 MOTOR DE INFEREcircNCIA

Algoritmo 2 Verifica se uma premissa eacute verdadeirainput Premissa poutput ControlObj disparoubegin verificaPremissa

disparoularr false ControlObjlarr nullif checkExistFact (p) ou checkExistQuestionFact (p) oucheckExistRuleFact (pControlObj) then

disparoularr true exitend

end

Algoritmo 3 Dispara as regras que possam ser disparadasbegin fireRules

for regra isin basedeconhecimento doif regra not fired then

if regra pode disparar thencalcula grau de confianccediladispara regraif regra dispara soluccedilatildeo final then

termina execuccedilatildeo preenchendo ControlObjendif regra natildeo dispara soluccedilatildeo final then

continuaend

endend

endend

61

CAPIacuteTULO 4 WEXSYS

424 Resultado final

Apoacutes a implementaccedilatildeo do protoacutetipo inicial do motor de inferecircncia e dos testes necessaacuteriosagrave verificaccedilatildeo do bom funcionamento do mesmo chegamos ao resultado final que foiutilizado no wexsys

Este novo motor de inferecircncia foi desenvolvido levando em consideraccedilatildeo todasas caracteriacutesticas consideradas essenciais tanto para a execuccedilatildeo num ambiente multi-utilizador como para a execuccedilatildeo num servidor web e que foram jaacute descritas nas secccedilotildeesanteriores De referir ainda que face ao motor de inferecircncia do sistema base esteapresenta uma seacuterie de melhorias tais como rapidez de funcionamento e abstracccedilatildeo dabase de conhecimento utilizada

4241 Arranque da execuccedilatildeo

Como jaacute referido o motor de inferecircncia segue os algoritmos descritos na secccedilatildeo 4235 enesta secccedilatildeo seraacute abordado o processo utilizado desde o arranque do motor de inferecircnciaateacute agrave apresentaccedilatildeo dos dados como podemos ver na figura 19

Figura 19 Paacutegina inicial do motor de inferecircncia

O utilizador comeccedila na paacutegina inicial e selecciona a opccedilatildeo ldquoMotor de InferecircnciardquoDepois eacute apresentada uma paacutegina que permite iniciar o motor de inferecircncia utilizando a

62

42 MOTOR DE INFEREcircNCIA

opccedilatildeo ldquoiniciarrdquo Isto despoleta o mecanismo de inferecircncia como podemos verificar nafigura 20

Figura 20 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia

A classe YProlog invoca o predicado top_goals que mais natildeo eacute que o ponto de entradano motor de inferecircncia A sua funccedilatildeo seraacute obter qual a ldquoconclusatildeo final a procurarrdquo (estetoacutepico seraacute descrito na secccedilatildeo 432) para se poder iniciar o algoritmo propriamentedito Na listagem de coacutedigo 7 eacute possiacutevel consultar os predicados responsaacuteveis pelaimplementaccedilatildeo dos algoritmos Apenas estatildeo listados os predicados principais

Eacute possiacutevel consultar o coacutedigo do motor de inferecircncia no anexo A

t o p _ g o a l s ( Con t ro lOb j MinCF ) minus

2 t o p _ g o a l ( TopGoal )

t o p ( TopGoal Con t ro lOb j MinCF )

63

CAPIacuteTULO 4 WEXSYS

4

t o p ( TopGoal Con t ro lOb j MinCF ) minus6 r e t r a c t a l l ( h i s t 2 ) s e t ( l en 0 )

g e t R u l e M o r e R e l e v a n t ( TopGoal Rule )

8 t r y T o P r o v e ( Rule Con t ro lOb j MinCF )

10 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) minusr u l e ( Rule _ l h s (LHS) _ )

12 p r o v e L i s t H y p (LHS Con t ro lOb j MinCF )

g e t ( l en LEN) LEN1 i s LEN + 1

14 a s s e r t ( h i s t ( LEN1 Rule ) )

s e t ( l en LEN1)

16 (

check i f r u l e has re turn c o n t r o l o b j e c t

18 ( v a r ( C o n t r o l O b j ) ) minusgt(

no c o n t r o l o b j e c t found check i f o t h e r r u l e s needs t o

be f i r e d

20 f i r e R u l e s ( Con t ro lOb j MinCF )

) (

22 c o n t r o l o b j e c t found

t rue24 )

)

26

p r o v e L i s t H y p ( [ ] Con t ro lOb j MinCF )

28 p r o v e L i s t H y p ( [H | T ] Con t ro lOb j MinCF ) minusproveHyp (H Con t ro lOb j MinCF )

30 (

( v a r ( C o n t r o l O b j ) ) minusgt (

32 p r o v e L i s t H y p ( T Con t ro lOb j MinCF )

) (

34 t rue)

36 )

38

f a c t a l r e a d y known

40 proveHyp (H Con t ro lOb j MinCF ) minus

64

42 MOTOR DE INFEREcircNCIA

H = ev (X Y) f a c t (X Y _ )

42

t h e r e i s a q u e s t i o n t h a t can l e a d t o a f a c t

44 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

n o t ( f a c t (X _ _ ) )

46 q u e s t i o n (X _ _ _ )

n o t ( n o t _ q u e s t i o n (X) )

48 C o n t r o l O b j = ask (X)

50 t h e r e i s a c o n c l u s i o n t h a t can

l e a d t o a q u e s t i o n t h a t can l e a d t o a f a c t

52 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

r u l e ( Rule _ l h s (LHS) r h s ( ev (X _ ) V) )

54 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) Coacutedigo 7 Predicados principais do motor de inferecircncia

4242 Mecanismo de respostas

O mecanismo de respostas eacute algo similar ao processo descrito anteriormente A suafunccedilatildeo seraacute guardar a resposta que foi seleccionada pelo utilizador e prosseguir com oalgoritmo de forma a que uma nova questatildeo seja colocada ou a soluccedilatildeo final alcanccedilada

Um paracircmetro considerado obrigatoacuterio na submissatildeo de uma resposta eacute o grau deconfianccedila Este valor serviraacute para realizar o caacutelculo do grau de confianccedila da regra quandoa mesma puder ser disparada

Podemos ver na figura 21 o processo de resposta a uma questatildeo

65

CAPIacuteTULO 4 WEXSYS

Figura 21 Fluxo de invocaccedilatildeo de resposta a uma questatildeo

Eacute ainda possiacutevel natildeo responder agrave questatildeo colocada utilizando a opccedilatildeo ldquonatildeo sei natildeoresponderrdquo Esta opccedilatildeo iraacute guardar internamente uma indicaccedilatildeo para natildeo voltar a colocara questatildeo ignorada evitando entrar em ciclos

Agrave medida que o processo avanccedila eacute possiacutevel acompanhar o estado actual do motor deinferecircncia Este acompanhamento eacute realizado mediante a anaacutelise da zona situada do ladodireito da paacutegina e que vai sendo actualizada a cada interacccedilatildeo com o motor de inferecircnciaA zona referida permite obter informaccedilotildees acerca de

bull Regras que jaacute foram disparadas

bull Factos que foram inferidos pelo disparo das regras

bull Factos que foram facultados pelo utilizador ao responder agraves questotildees

bull Factos conhecidos antes do iniacutecio do processo de inferecircncia

66

42 MOTOR DE INFEREcircNCIA

Estes factos satildeo obtidos atraveacutes do predicado ldquoinf_sys((L_Rules L_Inf_Facts L_Know_FactsL_Init_Facts)rdquo Este predicado eacute invocado apoacutes cada interacccedilatildeo com o motor de inferecircnciae desta forma os dados estatildeo sempre actualizados

4243 Conclusatildeo final encontrada

Quando o disparo de uma regra leva a que seja adicionado um facto que corresponde auma soluccedilatildeo final o motor de inferecircncia termina a sua execuccedilatildeo devolvendo a conclusatildeofinal a que chegou bem como o respectivo grau de confianccedila Na figura 22 podemos ver afase final do processo de inferecircncia O grau de confianccedila da conclusatildeo final eacute atribuiacutedocom recurso agrave foacutermula seguinte

Dada uma regra X com premissas P1 a Pn e CF =CF (X) entatildeo temos

CF(X P1 Pn) = min [CF(P1) CF(Pn)]timesCF(X)

Figura 22 Conclusatildeo da inferecircncia

4244 Explicaccedilotildees

Eacute possiacutevel em qualquer altura colocar a questatildeo ldquoporquecircrdquo antes de submetermos umaresposta ou a questatildeo ldquocomordquo apoacutes uma conclusatildeo final Este tipo de explicaccedilotildeescontribui para a fase de validaccedilatildeo do sistema pericial colocando-as ao dispor do perito

67

CAPIacuteTULO 4 WEXSYS

responsaacutevel pela validaccedilatildeo expondo desta forma o raciociacutenio seguido no decorrer dainferecircncia Exemplos da solicitaccedilatildeo de explicaccedilotildees podem ser consultados atraveacutes dasfiguras 23 24 e 25

Figura 23 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo

68

42 MOTOR DE INFEREcircNCIA

Figura 24 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia

Figura 25 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final

69

CAPIacuteTULO 4 WEXSYS

As explicaccedilotildees ldquoporquecircrdquo foram implementadas recorrendo a predicados temporaacuterios(hist) que acompanham o desenrolar do motor de inferecircncia Eacute possiacutevel em qualqueraltura consultar esses predicados para obter de uma forma imediata a explicaccedilatildeo doporquecirc da questatildeo estar a ser feita

As explicaccedilotildees ldquocomordquo jaacute seguem um mecanismo mais complexo Quando umaregra eacute disparada origina conclusotildees intermeacutedias ou finais essas conclusotildees natildeo satildeo maisdo que simples factos O motor de inferecircncia sempre que dispara uma regra associa aofacto a regra que o originou por intermeacutedio do predicado inf_exp_how

Desta forma basta algum coacutedigo para que seja possiacutevel a obtenccedilatildeo de ambas asexplicaccedilotildees Esse coacutedigo pode ser consultado na listagem 8 em que os predicados why ehow se referem agraves explicaccedilotildees ldquoporquecircrdquo e ldquocomordquo respectivamente

why ( L ) minus

2 f i n d a l l ( r (OX) h i s t (OX) L )

4 how ( A t t r Value R e s u l t ) minusin f_exp_how ( A t t r Value Ru le s )

6 explainHow ( Rules E x p l a n a t i o n )

append ( Rules E x p l a n a t i o n R e s u l t )

8

explainHow ( [ ] [ ] )

10 explainHow ( [H | T ] R e s u l t ) minusi n n e r E x p l a i n (H E x p l a n a t i o n H )

12 explainHow ( T E x p l a n a t i o n R u l e s )

append ( Explana t ionH E x p l a n a t i o n R u l e s R e s u l t )

14

16 i n n e r E x p l a i n ( Rule E x p l a n a t i o n ) minusr u l e ( Rule _ l h s (LHS) _ )

18 expla inLHS (LHS E x p l a n a t i o n )

20 expla inLHS ( [ ] [ ] )

expla inLHS ( [ ev ( A t t r Value ) | T ] E x p l a n a t i o n A ) minus22 n o t ( inf_exp_how ( A t t r Value _ ) )

f a c t ( A t t r Value _ )

24 expla inLHS ( T E x p l a n a t i o n A )

70

43 BASE DE CONHECIMENTO

26 expla inLHS ( [ ev ( A t t r Value ) | T ] Resu l tA ) minushow ( A t t r Value E x p l a n a t i o n A )

28 expla inLHS ( T E x p l a n a t i o n )

append ( Explana t ionA E x p l a n a t i o n Resu l tA ) Coacutedigo 8 Predicados principais do sistema de explicaccedilotildees

43 Base de conhecimento

A base de conhecimento armazena o conhecimento extraiacutedo de um ou mais peritos e con-siste numa seacuterie de factos e regras acerca de um determinado domiacutenio Sendo dependenteda aacuterea que se pretende abranger com o sistema pericial a base de conhecimento eacute deconstruccedilatildeo especiacutefica para cada situaccedilatildeo em que seja necessaacuterio desenvolver este tipo desistema

Os procedimentos de inserccedilatildeo actualizaccedilatildeo e remoccedilatildeo dos factos e regras que com-potildeem a base de conhecimento (gestatildeo da base de conhecimento) teratildeo que ser na medidado possiacutevel procedimentos simples que sejam facilmente compreendidos pelos utilizado-res

As funcionalidades de gestatildeo da base de conhecimento estatildeo disponiacuteveis na opccedilatildeoldquoBase de Conhecimentordquo da paacutegina inicial como podemos observar na figura 26

71

CAPIacuteTULO 4 WEXSYS

Figura 26 Paacutegina inicial da gestatildeo da base de conhecimento

431 Leitura da base de conhecimento

Ao iniciar a execuccedilatildeo a base de conhecimento eacute carregada para memoacuteria a partir de umficheiro Este processo eacute realizado de forma iterativa e de acordo com uma determinadasequecircncia regras questotildees conclusatildeo final e por uacuteltimo os factos iniciais

Por sua vez o carregamento das regras eacute efectuado em duas fases sendo que primeirosatildeo obtidas as regras existentes (ldquoretrieve_rules(L)rdquo) e depois para cada regra eacute construiacutedaa sua estrutura (ldquobuildRuleObjectrdquo) Podemos observar a descriccedilatildeo deste processo nafigura 27

72

43 BASE DE CONHECIMENTO

Figura 27 Processo de carregamento das regras

Quanto ao carregamento das questotildees eacute similar ao das regras jaacute que eacute efectuadoigualmente em duas fases Primeiro obtecircm-se todas as questotildees (ldquoretrieve_questions(L)rdquo)e depois para cada questatildeo eacute preenchida a sua estrutura (ldquobuildQuestionObjectrdquo)

Jaacute o carregamento da conclusatildeo final eacute realizado atraveacutes do predicado ldquotop_goal(L)rdquoEste predicado vai devolver a conclusatildeo final guardada

Por fim os factos iniciais satildeo obtidos reutilizando um processo de obtenccedilatildeo de factos(ldquoinf_sys((L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)rdquo) Este processo jaacute foireferido na secccedilatildeo que descreve o motor de inferecircncia (4242)

432 Conclusatildeo final a encontrar

A conclusatildeo final a encontrar representa o predicado que vai ser considerado comoobjectivo no decorrer do motor de inferecircncia Soacute vatildeo ser consideradas soluccedilotildees queconvergem para uma soluccedilatildeo final que contenha o predicado especificado no RHS

Para definir uma conclusatildeo final basta especificar o nome do predicado da soluccedilatildeoque pretendemos encontrar com o motor de inferecircncia

73

CAPIacuteTULO 4 WEXSYS

433 Factos iniciais

Os factos iniciais permitem adicionar conhecimento preacutevio a uma base de conhecimentoPara adicionaacute-los eacute necessaacuterio utilizar o botatildeo ldquoAdicionar facto inicialrdquo e preencher oscampos necessaacuterios Para remover um facto inicial previamente inserido eacute utilizado obotatildeo ldquoRemover facto inicialrdquo e eacute necessaacuterio confirmar a acccedilatildeo que se estaacute a efectuar deforma a evitar uma remoccedilatildeo acidental

434 Regras

As regras satildeo o ponto essencial da gestatildeo da base de conhecimento As regras satildeo osdados disponiacuteveis para a aplicaccedilatildeo e como tal quanto melhor forem definidas melhorqualidade a aplicaccedilatildeo teraacute no sentido em que os resultados seratildeo mais correctos e fiaacuteveis

4341 CriarAlterar uma regra

O processo de criaccedilatildeo de uma nova regra foi simplificado Jaacute natildeo eacute necessaacuterio conhecera sintaxe das regras e tambeacutem jaacute natildeo eacute necessaacuterio conhecer os factos a utilizar comopremissas

Para adicionar uma regra apenas temos que arrastar questotildees eou conclusotildees inter-meacutedias de forma a construir a regra que pretendemos inserir

No caso de estarmos a alterar uma regra ou no caso de termos adicionado uma questatildeoou conclusatildeo intermeacutedia incorrectamente podemos eliminar essa premissa simplesmenteseleccionando a ldquocheckboxrdquo respectiva e utilizar a opccedilatildeo ldquoRemover seleccionadosrdquo

74

43 BASE DE CONHECIMENTO

Figura 28 Introduzir uma nova regra

Apoacutes termos arrastado todas as questotildees eou conclusotildees intermeacutedias para a lista depremissas temos que indicar os respectivos valores Este processo estaacute simplificado nosentido em que apenas temos que utilizar a caixa de selecccedilatildeo agrave frente de cada controlo eseleccionar o respectivo valor

Os valores apresentados satildeo obtidos de forma diferente quer se trate de uma questatildeo oude uma conclusatildeo intermeacutedia No caso das questotildees os valores obtidos satildeo os indicadosaquando da sua inserccedilatildeo No caso das conclusotildees intermeacutedias satildeo obtidos todos os valoresutilizados nas regras ateacute ao momento Sempre que uma regra eacute inserida ou actualizadaeacute despoletado um processo que actualiza os valores das conclusotildees intermeacutedias com osnovos valores introduzidos

75

CAPIacuteTULO 4 WEXSYS

Figura 29 Apresentaccedilatildeo de valores configurados na questatildeo

4342 Questotildees

As questotildees acabam por ser o ponto de contacto da aplicaccedilatildeo com o utilizador Sempreque eacute necessaacuterio suspender o processamento para questionar o utilizador este teraacute ahipoacutetese de intervir na execuccedilatildeo Atraveacutes das questotildees colocadas vai ser possiacutevel inferiroutros factos que no final e numa situaccedilatildeo ideal conduzem a uma soluccedilatildeo possiacutevel

Uma questatildeo eacute identificada por um coacutedigo por uma descriccedilatildeo e ainda por um conjuntode valores possiacuteveis as respostas Quando inserimos uma nova regra podemos criar novasquestotildees utilizando a opccedilatildeo ldquoAdicionar uma questatildeordquo Surge entatildeo o formulaacuterio deintroduccedilatildeo de uma questatildeo como podemos ver na figura 30

Figura 30 Formulaacuterio de introduccedilatildeo de uma questatildeo

As respostas configuradas no formulaacuterio de introduccedilatildeo seratildeo as respostas que iratildeoaparecer quando inserirmos uma nova regra e arrastarmos a questatildeo para a lista depremissas

76

43 BASE DE CONHECIMENTO

4343 Verificaccedilatildeo

Apoacutes a introduccedilatildeo ou alteraccedilatildeo das regras deve ser realizado o processo de verificaccedilatildeoda base de conhecimento De uma forma quase imperceptiacutevel na fase de introduccedilatildeode regras estamos a activar este processo jaacute que eacute garantido que as regras introduzidasestatildeo coerentes e que os valores das premissas efectivamente existem Podemos dizerque estamos perante a primeira fase do processo de verificaccedilatildeo designado por verificaccedilatildeoproacute-activa

Para este trabalho foi considerado a verificaccedilatildeo de dois tipos de anomalia na base deregras redundacircncia e regras duplicadas A inclusatildeo de novos mecanismos de verificaccedilatildeoeacute possiacutevel bastando para isso a alteraccedilatildeo do predicado ldquoverification(L)rdquo

A grande diferenccedila entre os dois meacutetodos implementados eacute que uma regra redundanteadiciona conhecimento desnecessaacuterio agrave base de conhecimento enquanto que uma regraduplicada como o nome indica eacute apenas uma duplicaccedilatildeo do conhecimento

Na figura 31 podemos verificar o mecanismo de verificaccedilatildeo implementado que permiteidentificar que regra estaacute em conflito com que outra regra e qual o tipo de conflito

Figura 31 Verificaccedilatildeo da base de conhecimento

435 Gravaccedilatildeo da base de conhecimento

O processo de gravaccedilatildeo da base de conhecimento eacute similar ao processo de leitura com adiferenccedila de natildeo ser iterativo O processo de gravaccedilatildeo da base de conhecimento iniciacom a acccedilatildeo do utilizador na opccedilatildeo ldquoFinalizarrdquo que invoca o meacutetodo ldquosaveAll()rdquo doWexsysKBBean O resto do processo pode ser observado na figura 32

77

CAPIacuteTULO 4 WEXSYS

Figura 32 Processo de gravaccedilatildeo da base de conhecimento

436 Conversatildeo GISPSA

A conversatildeo da base de conhecimento do GISPSA para o formato wexsys foi efectuada emduas fases Na primeira fase foi feita uma migraccedilatildeo sintaacutectica da forma de representaccedilatildeode regras utilizada para a forma utilizada pelo wexsys Na segunda fase foi efectuadoum processo manual de conversatildeo

O sistema anterior delegava nas regras alguns predicados utilizados unicamente parao sistema de explicaccedilotildees Esta caracteriacutestica tornou a migraccedilatildeo algo morosa jaacute que eranecessaacuterio proceder agrave anaacutelise regra a regra de quais os predicados necessaacuterios e quais osdescartaacuteveis

78

44 ANAacuteLISE GRAacuteFICA

44 Anaacutelise graacutefica

Para aleacutem do motor de inferecircncia e da gestatildeo da base de conhecimento foi implemen-tado como prova de conceito um sistema graacutefico que permite observar facilmente arepresentaccedilatildeo de uma base de conhecimento sob a forma de um grafo

Este sistema permite visualizar e consultar a explosatildeo combinatoacuteria das regras edas premissas que as compotildeem Este tipo de ferramenta pode ser bastante uacutetil quandoutilizado nas tarefas de validaccedilatildeo por parte do perito Desta forma o perito consegue deuma forma visual e simples verificar o relacionamento entre as conclusotildees e as premissas

441 Implementaccedilatildeo

Esta funcionalidade foi implementada recorrendo agrave utilizaccedilatildeo de um controlo externodesignado por TGGraphLayout e desenvolvido por Alexander Shapiro (2010) O controlodisponibiliza uma applet que encapsula funcionalidades que permitem a interacccedilatildeo graacuteficacom a representaccedilatildeo de um grafo

Por se tratar de uma applet a comunicaccedilatildeo com os managed beans torna-se tecnica-mente mais difiacutecil de implementar Esse motivo levou agrave necessidade de criaccedilatildeo de umaservlet para simplificar o processo de interacccedilatildeo entre a aplicaccedilatildeo e a applet do controlovisual

A servlet WexsysServlet foi criada para dar suporte agrave comunicaccedilatildeo com o mana-

ged bean WexsysKBBean sendo este responsaacutevel pela obtenccedilatildeo dos dados no formatoreconhecido pelo controlo

O controlo teve que ser alterado de forma a permitir a interacccedilatildeo com a servlet bemcomo efectuar o tratamento dos dados no formato especificado ou seja criar uma espeacuteciede protocolo de comunicaccedilatildeo

O algoritmo 4 resume a implementaccedilatildeo efectuada ao niacutevel da applet e o algoritmo 5demonstra de que forma esses dados satildeo obtidos

442 Funcionamento

O grafo resultante eacute construiacutedo a partir de uma posiccedilatildeo inicial designada por ponto departida Eacute utilizada a designaccedilatildeo ldquordquo para simplificar a identificaccedilatildeo no grafo eeacute possiacutevel ver o resultado da paacutegina inicial na figura 33

As conclusotildees satildeo representadas por rectacircngulos com um fundo branco e as premissassatildeo identificadas por rectacircngulos com fundo azul

79

CAPIacuteTULO 4 WEXSYS

Algoritmo 4 Algoritmo responsaacutevel pelo desenho da appletinput graphPaths graphConclusionsbegin drawGraph

initializeNodes ()for path isin graphPaths do

init oldfor step isin path do

if nodes do not contain step thenbuildNode (step)

endif step is first then

oldlarr stepelse

addEdge (old step)oldlarr step

endend

endcreateStartNode ()linkUnlinkedNodesToStartNode ()

end

O ponto de partida liga-se entatildeo agraves regras que apenas contenham premissas quesejam questotildees construindo o grafo de possibilidades Apoacutes identificar as regras quesatildeo representadas com ligaccedilatildeo ao ponto de partida satildeo tratadas as restantes regrasconstruindo o resto do grafo agrave medida que as regras satildeo avaliadas

Eacute possiacutevel centrar o grafo numa premissa ou numa conclusatildeo Ao centrarmos ografo satildeo mantidos apenas os noacutes que se ligam directamente ao noacute que seleccionaacutemosNo entanto eacute possiacutevel expandir um noacute sem este tipo de comportamento bastando paraisso utilizar as funcionalidades disponiacuteveis ao pressionar a tecla direita do rato sobre o

Figura 33 Paacutegina inicial da anaacutelise graacutefica

80

44 ANAacuteLISE GRAacuteFICA

Algoritmo 5 Algoritmo para construccedilatildeo dos dados do grafooutput graphPaths and grapConclusionsbegin retrieveGraphPathAndConclusions

questionslarr gatherQuestionfor rule isin rules do

isFinalRulelarr conclusaoFinal igual RHS de ruleif isFinalRule then

add rule to grapConclusionssimpleRulelarr truegraphPathslarr nullfor premissa isin ruleLHS do

isConditionAskablelarr questions contains premissaif isConditionAskable then

add premissa and value to graphPathselse

simpleRulelarr falseretrieveGraphFromAtom (premissa)add result to graphPaths

endend

endend

end

respectivo noacute As funcionalidades disponiacuteveis satildeo expandir colapsar esconder e centrare satildeo auto-descritivas pelo que dispensam qualquer explicaccedilatildeo do seu funcionamento

Figura 34 Exemplo de grafo totalmente expandido

Eacute possiacutevel utilizar esta funcionalidade para identificarmos um cenaacuterio especiacuteficopor exemplo para consultar quais as premissas necessaacuterias para a obtenccedilatildeo de umadeterminada soluccedilatildeo

81

CAPIacuteTULO 4 WEXSYS

Figura 35 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto

443 Limitaccedilotildees

Esta funcionalidade no seu estado actual apresenta algumas limitaccedilotildees Conveacutem referirantes de mais que esta soluccedilatildeo natildeo eacute uma alternativa ao motor de inferecircncia mas sim umaferramenta de apoio visual auxiliar ao mesmo

Das limitaccedilotildees existentes salientam-se as seguintes

bull a utilizaccedilatildeo deste controlo obriga a que o utilizador esteja familiarizado com aspremissas e os seus valores Natildeo estatildeo disponiacuteveis os textos de apoio para aspremissas da mesma forma que satildeo mostrados no motor de inferecircncia Umapossiacutevel soluccedilatildeo passaria pela interacccedilatildeo da applet com a servlet para atraveacutes domecanismo de ajax push despoletar a actualizaccedilatildeo da JSP mostrando o texto doelemento seleccionado

bull o tamanho dos noacutes eacute grande quando comparado com o espaccedilo disponiacutevel nocontrolo o que por vezes obriga a algumas sobreposiccedilotildees dos noacutes tornado-oimperceptiacutevel Este problema pode ser observado na figura 34 Para atenuar esteproblema existem controlos que permitem modificar o factor de ampliaccedilatildeo rodar ocontrolo e controlar o grau de visualizaccedilatildeo hiperboacutelica

bull apoacutes a navegaccedilatildeo no grafo perde-se de alguma forma o contexto que o originouEste problema pode ser observado na figura 35

82

5Conclusotildees

Ateacute que ponto eacute que um software consegue efectivamente substituir um ser humanoquando estamos a falar de raciociacutenio Se esse raciociacutenio for estritamente linear seguindoum determinado percurso com alguns desvios ao longo do mesmo que acabam por ditarum desfecho diferente consoante as decisotildees que vatildeo sendo tomadas a substituiccedilatildeo podemesmo ser efectiva e ateacute mesmo melhor em alguns casos

Um perito natildeo eacute no entanto algueacutem que se limita a dizer sim ou natildeo ou algueacutem queapenas decide se eacute necessaacuterio seguir por este caminho ou aquele Um perito normalmenteobserva dados e factos e infere sobre os mesmos tendo a sensibilidade para em muitasocasiotildees conseguir ateacute mesmo obter a soluccedilatildeo final muito antes de terminar a anaacutelise detodos os paracircmetros A isso chama-se conhecimento heuriacutestico natildeo linear afectada poruma enormidade de factores que apenas eacute possiacutevel encontrar num ser humano

Estes factores podem ter tanto de beneacutefico como de nocivo Ao natildeo analisar atotalidade dos dados um perito poderaacute incorrer num erro ou mesmo tendo-os analisadoateacute ao fim poderaacute natildeo ter estado completamente atento ou compenetrado no que estavaa fazer pelo mero facto de poder estar cansado ou indisposto para executar tal tarefanaquele preciso momento

Um sistema pericial pode realmente ser uma mais valia no sentido em que estaacutetotalmente desprovido de emoccedilotildees e fadiga ao contraacuterio de um ser humano Paraaleacutem disto natildeo eacute necessaacuterio temer que o sistema pericial se desloque a uma qualquerlocalizaccedilatildeo remota e de difiacutecil acesso ou que chegue fora do horaacuterio previsto limitadopelos atrasos de uma simples viagem

Todos estes factos podem realmente ser considerados quando analisamos o funciona-mento do GISPSA Efectivamente trata-se de um sistema pericial estaacute sempre disponiacutevele totalmente desprovido de caracteriacutesticas humanas que poderiam eventualmente toldaro raciociacutenio do mesmo No entanto este sistema carecia de algo muito importante a

83

CAPIacuteTULO 5 CONCLUSOtildeES

acessibilidade a partir de qualquer local em qualquer hora e por parte de vaacuterios utilizado-res em simultacircneo de modo imediato e sem preacute-aviso Antes de mais o GISPSA eacute umaaplicaccedilatildeo de execuccedilatildeo local e natildeo foi de todo desenvolvida para funcionamento em redeComo tal o acesso agrave mesma estava agrave partida bastante limitado Depois cada instalaccedilatildeoapenas permitia a interacccedilatildeo com um utilizador de cada vez Existem ainda algumaslimitaccedilotildees identificadas no GISPSA que foram ultrapassadas com o desenvolvimento dowexsys tais como manutenccedilatildeo da base de conhecimento capacidade de raciocinar sobreconhecimento incerto e a implementaccedilatildeo de meacutetodos de verificaccedilatildeo

Hoje em dia eacute possiacutevel aceder a uma rede global (a internet) a partir de qualquer pontodo planeta e isto torna igualmente possiacutevel disponibilizar uma aplicaccedilatildeo de forma a quequalquer pessoa a consiga utilizar a qualquer hora e a partir de qualquer local O wexsysaplica essa transformaccedilatildeo ao GISPSA e leva-o ao proacuteximo patamar evolutivo

Como qualquer evoluccedilatildeo tambeacutem esta pretende natildeo soacute dotar a nova versatildeo comfuncionalidades que a anterior natildeo possuiacutea como tambeacutem pretende melhorar e corrigiros problemas que eventualmente foram encontrados Ao longo do tempo de utilizaccedilatildeodo GISPSA verificaram-se algumas coisas que podiam e deviam ser substituiacutedas Aleacutemdisto a proacutepria evoluccedilatildeo dos sistemas graacuteficos e de interacccedilatildeo colocaram o GISPSAcomo uma aplicaccedilatildeo de visual jaacute algo ultrapassado aspecto que tambeacutem carecia de umarevisatildeo para a realidade mais actual

A opccedilatildeo pela incorporaccedilatildeo do wexsys num portal teve a ver com as grandes capacida-des que este tipo de infra-estuturas tem hoje em dia Impulsionados por empresas comoa IBM os portais web representam janelas de negoacutecio com ligaccedilatildeo ao mundo e com aspotencialidades que daiacute advecircm Caracteriacutesticas como a facilidade de acesso sistemas debackup manutenccedilatildeo de tempos de uptime elevados rapidez de funcionamento facilidadede funcionamento e leitura entre muitas outras representam uma mais valia para estetipo de alojamento de aplicaccedilotildees

51 Contributos da soluccedilatildeo desenvolvida

O grande objectivo a que este trabalho se propunha foi alcanccedilado e consistia na criaccedilatildeode um sistema pericial baseado no GISPSA mas que pudesse ser acedido a partir deuma rede tornando-o global Os restantes objectivos foram igualmente alcanccedilados e oresultado final mostra-se soacutelido e fiaacutevel para candidato efectivo agrave substituiccedilatildeo do sistemaque lhe daacute a base No entanto existem outros pontos positivos na soluccedilatildeo encontradaquando comparada com outros sistemas periciais jaacute referidos nos capiacutetulos anteriores

84

51 CONTRIBUTOS DA SOLUCcedilAtildeO DESENVOLVIDA

Esses sistemas satildeo o LOMA o MDSS e o Whale watcherAo proceder a uma comparaccedilatildeo com estes sistemas a soluccedilatildeo desenvolvida neste

trabalho apresenta algumas vantagens Desde logo estamos a falar de aplicaccedilotildees web

com periacuteodos de desenvolvimento diferentes o que implica a utilizaccedilatildeo de tecnologiasdiferentes A vantagem da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo mais recentes dinacircmi-cas eficazes e visualmente mais apelativas coloca o wexsys num patamar efectivamentesuperior Para aleacutem disso o wexsys pode (como resultado da utilizaccedilatildeo dessas mesmastecnologias) ser facilmente integrado noutras aplicaccedilotildees como webservices ou portaisenquanto que os outros sistemas natildeo

Outra das particularidades dos sistemas estudados eacute que natildeo possuem (de acordocom as respectivas documentaccedilotildees) mecanismos de verificaccedilatildeo de regras e sempre queeacute necessaacuterio proceder a alteraccedilotildees a essas mesmas regras o utilizador teraacute que ter umconhecimento profundo acerca da sintaxe utilizada (gramaacutetica riacutegida) Para aleacutem distotambeacutem natildeo possuem (com excepccedilatildeo do MDSS) suporte a vaacuterias liacutenguas

Jaacute quanto agrave questatildeo da capacidade de funcionamento multi-utilizador apesar deestarmos a falar de aplicaccedilotildees web os sistemas estudados neste documento natildeo estatildeopreparados para cargas de processamento demasiado elevadas porque natildeo foi contempladaa possibilidade de um funcionamento distribuiacutedo o que permitiria aliviar a carga deprocessos e aumentar o nuacutemero maacuteximo de utilizadores

Para descrever mais em detalhe os objectivos alcanccedilados com a soluccedilatildeo propostapassamos a enunciaacute-los

bull Criaccedilatildeo de uma aplicaccedilatildeo web - Ao criar a nova aplicaccedilatildeo a questatildeo da distribuiccedilatildeodessa mesma aplicaccedilatildeo atraveacutes de uma rede era fulcral jaacute que permitiria uma seacuteriede factores que ateacute aqui natildeo estavam disponiacuteveis A possibilidade de utilizaccedilatildeo deuma base de conhecimento global onde todos os utilizadores pudessem contribuirpara o seu melhoramento facilidade de acesso a partir de qualquer localizaccedilatildeodisponibilidade a qualquer hora e dia capacidade de realizaccedilatildeo de backups paragarantir a continuidade dos dados e muacuteltiplos acessos simultacircneos foram questotildeesque ficaram resolvidas com a concretizaccedilatildeo deste objectivo

bull Verificaccedilatildeo das regras - Uma das lacunas do sistema base o GISPSA era a faltade capacidade para realizar a verificaccedilatildeo das regras que era colocadas na basede conhecimento Era possiacutevel chegar a cenaacuterios de inconsistecircncia atraveacutes dacontradiccedilatildeo de regras podendo chegar a cenaacuterios em que simplesmente natildeo erapossiacutevel prosseguir com a inferecircncia das regras nem tatildeo pouco chegar a umaconclusatildeo ou soluccedilatildeo possiacutevel

85

CAPIacuteTULO 5 CONCLUSOtildeES

Ao adicionar um mecanismo de verificaccedilatildeo de regras como o foi neste caso assisti-mos natildeo soacute ao cumprimento de mais um objectivo mas tambeacutem a uma evoluccedilatildeosignificativa do novo sistema pericial que com esta caracteriacutestica se torna maisfiaacutevel e eficaz

bull Manutenccedilatildeo da base de conhecimento - Neste novo sistema eacute mais simples procederagrave actualizaccedilatildeo da base de conhecimento quer para adicionar alterar ou removerfactos na mesma Jaacute natildeo eacute necessaacuterio ter formaccedilatildeo sobre a sintaxe necessaacuteria pararealizar estas operaccedilotildees deixando de lado a rigidez que era necessaacuteria aplicarno sistema base Isto permite alargar o leque de utilizaccedilatildeo do sistema a outrosutilizadores que na versatildeo anterior natildeo teriam oportunidade para o fazer

bull Melhor usabilidade - Uma das grandes transformaccedilotildees para quem conhecia osistema anterior e encontra a nova versatildeo passa pelo aspecto visual Quando umutilizador eacute confrontado com uma aplicaccedilatildeo aquilo com que se depara eacute a parte deinteracccedilatildeo responsaacutevel por mediar o diaacutelogo entre o utilizador e a aplicaccedilatildeo per si

Quando uma aplicaccedilatildeo qualquer que ela seja possui um visual pouco atraente eapelativo para o utilizador com bototildees e janelas pouco interessantes componentesmal colocados atalhos escondidos e de difiacutecil percepccedilatildeo ou ateacute mesmo comcores pouco agradaacuteveis o utilizador acaba por seja de forma gradual ou imediataabandonar a aplicaccedilatildeo e mostra pouco interesse em voltar a utilizaacute-la a natildeo ser queseja efectivamente obrigado a fazecirc-lo

Neste trabalho atraveacutes da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo web tais comoJavascript e Ajax e ainda atraveacutes da utilizaccedilatildeo do Icefaces foi possiacutevel chegar aum visual considerado por muitos utilizadores como interessante e actual o que vaiplenamente de encontro ao objectivo proposto para este ponto

bull Multi-utilizador - Uma das grandes criacuteticas do sistema base tinha efectivamente aver com o facto de natildeo ser possiacutevel colocar mais do que um utilizador a trabalharao mesmo tempo Para tal ser possiacutevel seria necessaacuterio proceder agrave instalaccedilatildeo dosistema noutro computador e consequentemente adquirir outra licenccedila comercialde utilizaccedilatildeo

Ao adicionar a capacidade de vaacuterios utilizadores poderem estar a trabalhar nosistema em simultacircneo este objectivo verifica-se como estando cumprido na to-talidade pois natildeo apenas isso jaacute eacute possiacutevel neste novo sistema pericial como acapacidade de processamento natildeo eacute afectada jaacute que eacute possiacutevel proceder agrave colocaccedilatildeo

86

52 LIMITACcedilOtildeES E TRABALHO FUTURO

da aplicaccedilatildeo num sistema de clustering em caso de deacutefices ou carga excessiva deprocessamento

bull Sistema de explicaccedilotildees - A soluccedilatildeo proposta conteacutem um sistema de explicaccedilotildees quepode ser utilizado para obter explicaccedilotildees a perguntas do tipo ldquocomordquo e ldquoporquecircrdquoEste ponto natildeo representa uma melhoria mas sim a manutenccedilatildeo de uma funcionali-dade que o GISPSA jaacute disponibilizava

bull Anaacutelise graacutefica - Este moacutedulo eacute uma nova abordagem agrave anaacutelise de uma base deconhecimento que natildeo eacute normalmente utilizado nos sistemas periciais conhecidos eque possibilita uma anaacutelise visual facilitadora do comportamento e funcionamentoda nova soluccedilatildeo

bull Suporte a vaacuterias liacutenguas - A soluccedilatildeo proposta permite de uma forma bastantesimples a implementaccedilatildeo de novas linguagens A parte da soluccedilatildeo que envolveo sistema pericial e a parte da aplicaccedilatildeo web estatildeo preparados para esta tipo desuporte contudo a base de conhecimento natildeo contempla este mecanismo e teriaque ser implementado

bull Arquitectura - O tipo de arquitectura da soluccedilatildeo proposta permite uma simplesintegraccedilatildeo com outros tipos de aplicaccedilatildeo web como por exemplo webservices ouportais Possibilita ainda como jaacute referido a separaccedilatildeo da aplicaccedilatildeo de uma formamodular permitindo uma distribuiccedilatildeo ao niacutevel do processamento

bull Migraccedilatildeo - No processo de migraccedilatildeo da base de conhecimento foram detectados ecorrigidos alguns problemas Regras inconsistentes regras repetidas e regras quenatildeo trazem novo conhecimento foram adaptadas e resolvidas evoluindo a novabase de conhecimento para uma entidade mais fiaacutevel e consistente

52 Limitaccedilotildees e trabalho futuro

Este trabalho representa um esforccedilo no sentido de apresentar uma versatildeo melhorada dosistema GISPSA e apesar de o conseguir em muitos aspectos e essencialmente em todosaqueles que foram inicialmente propostos ficam alguns aspectos que ainda poderatildeo serimplementados futuramente e que certamente contribuiratildeo para um sistema ainda melhor

Assim apresentam-se as limitaccedilotildees identificadas e as perspectivas de trabalho futuro

87

CAPIacuteTULO 5 CONCLUSOtildeES

bull Validaccedilatildeo de regras - Apesar de ser jaacute possiacutevel neste novo sistema pericial procederagrave verificaccedilatildeo de regras como mecanismo de prevenccedilatildeo de redundacircncias e contradi-ccedilotildees ainda natildeo eacute possiacutevel a validaccedilatildeo por parte de um perito dessas mesmas regrasa natildeo ser que essa validaccedilatildeo seja feita em modo ad hoc

Seria importante a criaccedilatildeo de um modo lsquosupervisorrsquo ou modo lsquoperitorsquo paraque a aplicaccedilatildeo pudesse adoptar uma postura natildeo soacute de linguagem adaptada aum utilizador com maior formaccedilatildeo na aacuterea (como seraacute o caso de perito) mastambeacutem pudesse assumir uma postura de simulaccedilatildeo em que seriam apresentadosnatildeo soacute os passos tomados como eventuais cenaacuterios em caso de respostas diferentesIsto permitiria a um perito confrontar o seu proacuteprio conhecimento com o sistemapericial realizando desta forma uma validaccedilatildeo do funcionamento do sistema e dabase de conhecimento

Para aleacutem disto sendo uma aplicaccedilatildeo web o modo lsquosupervisorrsquo ou modo lsquope-ritorsquo poderia ser acedido a partir de qualquer siacutetio e a qualquer hora Se o responsaacute-vel pela validaccedilatildeo da base de conhecimento (normalmente o perito que contribuiucom o conhecimento) natildeo estiver disponiacutevel para o fazer por motivos de ausecircnciaou incompatibilidade de horaacuterios poderaacute sempre realizar o acesso agrave aplicaccedilatildeoa partir de um outro local agrave hora que mais lhe aprouver sem qualquer tipo deprejuiacutezo quer para o perito quer para o proacuteprio sistema

bull Muacuteltiplas conclusotildees - Com o trabalho desenvolvido apenas eacute possiacutevel atraveacutesdo disparo de uma regra final chegar a uma uacutenica conclusatildeo Deveria ser possiacutevelchegar a muacuteltiplas conclusotildees pelo que natildeo tendo sido implementado nesta versatildeoconsidera-se como uma possibilidade de trabalho futuro

Aparentemente sem qualquer relaccedilatildeo a necessidade evidenciada no ponto anteriorde criar um modo lsquosupervisorrsquo ou modo lsquoperitorsquo poderaacute levar um futurodesenvolvimento no sentido de criar as muacuteltiplas conclusotildees aqui referidas jaacute queao permitir este modo de funcionamento tambeacutem deveraacute ser possiacutevel inferir sobrevaacuterios cenaacuterios possiacuteveis e respectivas conclusotildees

bull Negaccedilatildeo de premissas - Nesta versatildeo do trabalho apenas eacute possiacutevel criar regrassem negaccedilatildeo Por exemplo num cenaacuterio em que uma pergunta ao utilizador tem aforma

Qual a cor (Vermelho Azul Verde)

e as regras que satildeo candidatas a disparo forem

88

52 LIMITACcedilOtildeES E TRABALHO FUTURO

R1 - SE cor Vermelho R2 - SE cor Azul R3 SE cor Verde

entatildeo natildeo eacute possiacutevel caso seja necessaacuterio ter uma regra do tipo

Rx - SE cor NOT XXXXX

Isso apenas seria possiacutevel se a pergunta inicial fosse

Qual NAtildeO Eacute a cor (Vermelho Azul Verde)

para assim permitir regras do tipo

Rx - SE NAtildeO Eacute cor XXXXX

Assim sendo aponta-se como uma limitaccedilatildeo e eventual trabalho futuro a desenvol-ver para outras versotildees da aplicaccedilatildeo a criaccedilatildeo de um sistema que permita a negaccedilatildeode premissas para que o exemplo atraacutes indicado seja de possiacutevel implementaccedilatildeo

bull Contemplar factos iniciais nas regras - A versatildeo actual do sistema natildeo permite ainclusatildeo de factos inicias nas premissas das regras

bull Pesquisa de muacuteltiplas soluccedilotildees finais - Actualmente soacute eacute permitido executar omotor de inferecircncia com uma soluccedilatildeo final como objectivo Seria uma evidentemais valia a inclusatildeo da capacidade de pesquisa por muacuteltiplas soluccedilotildees

bull Metaconhecimento - ao ser adicionado metaconhecimento podemos aumentar odesempenho do motor de inferecircncia nos cenaacuterios em que temos bases de conheci-mento consideravelmente grandes

bull Regra mais relevante para iniciar o motor de inferecircncia - desenvolver um algoritmopara obter uma regra que tenha uma maior probabilidade de sucesso de forma aminimizar iteraccedilotildees desnecessaacuterias

bull Validaccedilatildeo automaacutetica - quando as questotildees satildeo apagadas deve ser realizada arespectiva verificaccedilatildeo de utilizaccedilatildeo dessas questotildees como condiccedilotildees de regras paraprevenir possiacuteveis inconsistecircncias

bull Suporte a vaacuterias liacutenguas - a base de conhecimento natildeo foi projectada para imple-mentar esta funcionalidade

89

Bibliografia

Acquired Intelligence (2010) Acquire httpwwwaiincca Junho de 201025

Alexander Shapiro (2010) Tggraphlayout httpsourceforgenet

projectstouchgraph Julho de 2010 49 79

Barnett J A (1991) Calculating dempster-shafer plausibility IEEE Transactions on

Pattern Analysis and Machine Intelligence 13 599ndash602 16

Boris van Schooten (2005) Yprolog httpwwwvfutwentenl

~schootenyprolog Junho de 2010 37

Carlos Figueira Filho (2010) JEOPS - Integraccedilatildeo entre Objetos e Regras de Produccedilatildeoem Java httpwwwcinufpebr~jeops Julho de 2010 36

CoAJRA J (1997) The basics of expert (knowledge based) systems 18

Dokas I M (2005) Developing web sites for web based expert systems A webengineering approach In In Proceedings of the Second International ICSC Symposium

on Information Technologies in Environmental Engineering (Magdeburg pages 202ndash217 Shaker Verlag 26

Drakopoulos J (1994) Probabilities possibilities and fuzzy sets Fuzzy Sets and

Systems 75 1ndash15 16

Elie Levy (2010) Zilonis httpwwwzilonisorgindexphp Junho de2010 37

Ernest Friedman-Hill (2010) Jess httpwwwjessrulescom Julho de 201025 36

EXSYS (2010) Exsys corvid httpwwwexsyscom Junho de 2010 24

Filho A R (2010) Mdss medical diagnosis support system LPA - Logic ProgrammingAssociates Ltd 30

Giarratano C J Riley and D G (1998) Expert Systems - Principles and Programming

Thirds Edition Principles and Programing Course Technology 3ed edition 6 18

91

BIBLIOGRAFIA

Hammurapi Group (2010) Hammurapi rules httpwwwhammurapicom

dokuwikidokuphp Junho de 2010 36

Heckerman D (1992) The certainty-factor model 16

IBM (2010) Jlog httpwww-01ibmcomsoftwarewebsphere

productsbusiness-rule-management Junho de 2010 36

Kozlenkov Alex and Paschke (2010) Prova rule language httpprovaws

indexhtml Junho de 2010 37

Logic Programming Associaties Ltd (2010) Lpa webflex httpwwwlpacouk Abril de 2010 24

Lucas P (2001) Certainty-factor-like structures in bayesian belief networks Knowledge-

Based Systems 14 327ndash335 16

Maarten Menken (2010) Jclips httpsourceforgenetprojects

jclips Julho de 2010 25 36

Mcarniel (2010) Jruleengine httpjruleenginesourceforgenet

indexhtml Junho de 2010 37

Merritt D (1989) Building expert systems in Prolog 6 56

Michael Giordano (2010) Webclips httpclipsinterfacesourceforgenetWebCLIPSwchomehtm 28 de Julho de 2003 24

OpenL (2010) Openl tablets httpopenl-tabletssourceforgenetJulho de 2010 37

OpenRules Inc (2010) Open rules engine httpopenrulescomindex

htm Julho de 2010 37

Pinto A (1998) GISPSA - GIS problem solver adviser 1 20

RedHat (2010) Drools httpwwwjbossorgdroolsdrools-experthtml Junho de 2010 36

Shortliffe E H and Buchanan B G (1990) A model of inexact reasoning in medicinepages 259ndash275 16

Wilson N (2000) Algorithms for dempster-shafer theory In Algorithms for Uncertainty

and Defeasible Reasoning pages 421ndash475 Kluwer Academic Publishers 16

92

Anexos

93

ACoacutedigo do motor de inferecircncia

Iniacutecio do motor de inferencia

init_inference- retractall(hist2) consult(rsquokbsyplrsquo)

top_goals(ControlObj MinCF) - top_goal(TopGoal) top(TopGoal ControlObj MinCF)

top(TopGoal ControlObj MinCF) - retractall(hist2) set(len 0)

getRuleMoreRelevant(TopGoal Rule) tryToProove(Rule ControlObj MinCF)

tryToProove(Rule ControlObj MinCF)- rule(Rule _ lhs(LHS) _)

proveListHyp(LHS ControlObj MinCF)get(len LEN)println(LEN)

LEN1 is LEN + 1assert(hist(LEN1Rule))println(LEN1)

set(len LEN1)

(

check if rule has return control object

(var(ControlObj)) -gt(

no control object found check if other rules needs to be fired

fireRules(ControlObj MinCF)

)(

control object found

true

)

)

proveListHyp([] ControlObj MinCF)

proveListHyp([H|T] ControlObj MinCF)-proveHyp(H ControlObj MinCF)

((var(ControlObj)) -gt (proveListHyp(T ControlObj MinCF))(true))

fact already known

proveHyp(H ControlObj MinCF)- H = ev(X Y) fact(X Y_ )

there is a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _)

not(fact(X _ _))question(X _ _ _)

not(not_question(X))ControlObj = ask(X)

95

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

there is a conclusion that can lead to a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _) rule(Rule _ lhs(LHS)

rhs(ev(X_) V))

tryToProove(Rule ControlObj MinCF)

ADD A FACT

av(Attr Value Confidence ControlObj MinCF) - retractall(hist2)set(len 0)

saveFact(Attr Value Confidence 1 CF_FINAL _)

fireRules(ControlObj MinCF)

nav(Attr)-assert(not_question(Attr))

fireRules(ControlObj MinCF)- rule(X _ lhs(LHS) rhs(ev(Y R) Conf))

not(inf_rules_fired(X_)) evaluate(LHS ConfLhs 1)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF)

get(len LEN) LEN1 is LEN + 1 assert(hist(LEN1Rule))

set(len LEN1)

(

(var(ControlObj)) -gt(

(top_goal(Y)) -gt (

ControlObj = answerFound(Y R ConfRet)

)(

true fireRules(ControlObj MinCF)

))(

true

)

)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF) -

calculateConfidence(ConfLhs Conf ConfRet)

ConfRet gt MinCF

saveFact(Y R ConfRet 2 CF_FINAL X)

assert(inf_rules_fired(X ConfRet))

evaluate([] [] 1)- true

evaluate([H|T] [FactConf|LConf] RetCode)-

H = ev(X Ans)fact(X Ans FactConf)

evaluate(T LConf RetCode)

calculateConfidence(ConfLhs RuleCF ResultCF)-min_in_list(ConfLhs MinLHSCF)

ResultCF is MinLHSCF RuleCF 100

min_in_list([Min]Min)

min_in_list([HK|T]M) - H lt= K min_in_list([H|T]M)

min_in_list([HK|T]M) - H gt K min_in_list([K|T]M)

1 - fornecido 2 - inferido

we have a fact saved with the same conclusion already

96

saveFact(Attr Value Confidence Mode CF_Final Rule)-

fact(Attr Value OldConfidence)

combine(OldConfidence Confidence CF_Final)

retract(fact(Attr Value OldConfidence))

retract(inf_sys_fact(Attr Value OldConfidence _))

assert(fact(Attr Value CF_Final))

assert(inf_sys_fact(Attr Value CF_Final Mode))

linkFactToRule(Rule Attr Value Mode)

we donrsquot have any fact saved

saveFact(Attr Value Confidence Mode Confidence Rule)-

assert(fact(Attr Value Confidence))

assert(inf_sys_fact(Attr Value Confidence Mode))

linkFactToRule(Rule Attr Value Mode)

linkFactToRule(___1)

linkFactToRule(RuleAttrValue2)-

inf_exp_how(Attr Value oldRules)

retract(inf_exp_how(Attr Value oldRules))

assert(inf_exp_how(Attr Value [Rule|oldRules]))

linkFactToRule(RuleAttrValue2)-

assert(inf_exp_how(Attr Value [Rule]))

println(rsquosaved line with information on explanation howrsquo) listing

combine(CF1 CF2 CF) - CF1 gt= 0 CF2 gt= 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CF is CF1 + Calc

combine(CF1 CF2 CF) - CF1 lt 0 CF2 lt 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CFAux is CF1 + Calc CF is 0-CFAux

combine(CF1 CF2 CF) - (CF1 lt 0 CF2 lt 0) (CF1 gt 0 CF2 gt 0)

SumCFs is CF1 + CF2 abs_minimum(CF1 CF2 MCF)

Rest is 100 - MCFCF is 100 SumCFs Rest

abs_minimum(ABX) - absolute(A AA) absolute(B BB)minimum(AABBX)

absolute(X X) -X gt= 0

absolute(X Y) -X lt 0Y is 0-X

minimum(XYX) -X lt= Y

minimum(XYY) -Y lt= X

Rule verification

verification(L)-retractall(validation_fired1)

retractall(verification_error4)set(nextid 0)

findall(IDverification_rule_1(ID _ _ _)L)

verification_rule_1(ID RuleInError RuleRelated Result)-

rule(A _ lhs(CA) RA)rule(B _ lhs(CB) RB)

not( B = A)not(validation_fired(B))

checkConditionsSimilar(CA CB FullMatch)

checkResultSimilar(FullMatch RA RB Result)

assert(validation_fired(B))

97

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

get(nextid CURR_ID)ID is CURR_ID + 1

set(nextid ID)

assert(verification_error(ID B A Result))

RuleInError = B RuleRelated = A

checkConditionsSimilar(CA CB FullMatch)-checkConditionsSimilar_1(CACB)

lent(CA X) lent(CB Y) testCheck(X Y FullMatch)

testCheck(X X 1)

testCheck(X Y 0)- not(X = Y)

checkConditionsSimilar_1([] L)

checkConditionsSimilar_1([H|R] L)- member(H L) checkConditionsSimilar_1(R L)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueB) CFB) 2)-

not(ValueA = ValueB)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueA) CFB) 2)

checkResultSimilar(0 rhs(ev(Atom Value) CFA) rhs(ev(Atom Value) CFB) 1)-

CFB lt= CFA

lent([] 0)

lent([_|R] SizeT)- lent(R Size)SizeT is Size + 1

Rule verification

retrieve_rules(L)-

findall(X rule(X _ __) L)

retrieve_questions(L)-

findall(X question(X ___) L)

Information predicates

inf_sys(L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)-

i_sys_rules(L_Rules)i_sys_inf_fact(L_Inf_Facts)

i_sys_know_fact(L_Know_Facts) i_sys_init_fact(L_Init_Facts)

i_sys_rules(L)-

findall(r(Rule Conf) inf_rules_fired(Rule Conf) L) member(C L)

i_sys_rules([])

i_sys_inf_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 2) L) member(C L)

i_sys_inf_fact([])

i_sys_know_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 1) L) member(C L)

i_sys_know_fact([])

98

i_sys_init_fact(L)-

findall(f(Attr Value Conf) condition_init(Attr Value Conf) L) member(C L)

i_sys_init_fact([])

condition_init(Attr Value Conf)-fact(Attr Value Conf)

not(inf_sys_fact(Attr _ _ _))

explanations

why(L)-findall(r(OX) hist(OX) L)

how(Attr Value Result)- inf_exp_how(Attr Value Rules)

explainHow(Rules Explanation)append(Rules Explanation Result)

explainHow([] [])

explainHow([H|T] Result)- innerExplain(H ExplanationH)

explainHow(T ExplanationRules) append(ExplanationH ExplanationRules Result)

innerExplain(Rule Explanation)- rule(Rule _ lhs(LHS) _)

explainLHS(LHS Explanation)

explainLHS([] [])

explainLHS([ev(Attr Value)|T] ExplanationA)-

not(inf_exp_how(Attr Value _))

fact(Attr Value _) print(rsquoinitial factrsquo)

explainLHS(T ExplanationA)

explainLHS([ev(Attr Value)|T] ResultA)-

how(Attr Value ExplanationA)

explainLHS(T Explanation)

append(ExplanationA Explanation ResultA)

append([] L L)

append(L [] L)

append([H|T] M [H|N])-append(L M N)

Map methods

buildValidationReport(Id RErr RRel ErrType)-

verification_error(Id RErr RRel ErrType)

buildQuestionObject(ask(X) X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

buildQuestionObject_by_code(X X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

99

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

buildSolutionObject(answerFound(Y R Found) Y R Found)

buildRuleObject(Rule Descr LHS RHS CF)-

rule(Rule Descr lhs(I_LHS) rhs(I_RHS CF))

lhs_flatten(I_LHS LHS)

rhs_flatten(I_RHS RHS)

flatten(L LO)- iflatten(L LO)

iflatten([] [])

iflatten([H|R] [AD|L])- H = answer(A D) iflatten(R L)

lhs_flatten(L LO)- ilhs_iflatten(L LO)

ilhs_iflatten([] [])

ilhs_iflatten([H|R] [[ADCB]|L])-H = ev(A D)question(A C LL _)

findMember(LLDB)ilhs_iflatten(R L)

ilhs_iflatten([H|R] [[ADAD]|L])-H = ev(A D)not(question(A _ _ _))

ilhs_iflatten(R L)

rhs_flatten(ev(AB) [AB])

findMember([] D D)-

findMember([H|T] D B)-H = answer(D B)

findMember([H|T] D B)-findMember(T D B)

attempt to Get more relevant rule

getRuleMoreRelevant(TopGoal Rule)-

rule(Rule_ _ rhs(ev(P V) X)) top_goal(P)

find the rules that contains a direct solution

findall(X rule(X lhs(LLHS) rhs(ev(TopGoal _)_)) LX)

debugLine(trc1rsquogtrsquo)debugList(LX)

For the main rules apply the algorithm

fillMainRules(LX LOUT)

bubble_sort(LOUT LREALLYOUT)

LREALLYOUT = [ score_table(Rule _ _ _) | _ ]

debugLine(trc1rsquogtrsquo)debugList(LREALLYOUT)

fillMainRules([] [])-

fillMainRules([HIN|RIN] [HOUT|LOUT])- calculateCurrentRule(HIN HOUT)

fillMainRules(RIN LOUT)

calculateCurrentRule(HIN HOUT)-rule(HIN _ lhs(LHS) rhs(_ Confidence))

calculateScoreBasedOnLHS(LHS 0 Score)

OrderIndice is Score Confidence

HOUT = score_table(HIN Score Confidence OrderIndice)

calculateScoreBasedOnLHS([] ScoreResult ScoreResult)-

100

calculateScoreBasedOnLHS([HLHS|RLHS] Score ScoreResult)-

calculateScoreBasedOnLHSCurrent(HLHS Score ScoreAfter)

calculateScoreBasedOnLHS(RLHS ScoreAfter ScoreResult)

calculateScoreBasedOnLHSCurrent(ev(X _) Score ScoreAfter)-

question(X _ _ _) not(fact(X _ _))

ScoreAfter is Score + 1

calculateScoreBasedOnLHSCurrent(ev(X _) Score Score)-

helper methods

bubble_sort(ListSorted)-b_sort(List[]Sorted)

b_sort([]AccAcc)

b_sort([H|T]AccSorted)-bubble(HTNTMax)b_sort(NT[Max|Acc]Sorted)

bubble(X[][]X)

bubble(X[Y|T][Y|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C lt= D bubble(XTNTMax)

bubble(X[Y|T][X|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C gt Dbubble(YTNTMax)

bubble_sort2(ListSorted)-b_sort2(List[]Sorted)

b_sort2([]AccAcc)

b_sort2([H|T]AccSorted)-bubble2(HTNTMax)b_sort2(NT[Max|Acc]Sorted)

bubble2(X[][]X)

bubble2(X[Y|T][Y|NT]Max)- X = r(D _) Y = r(C _) C lt= D bubble(XTNTMax)

bubble2(X[Y|T][X|NT]Max)- X = r(D _) Y = r(C _) C gt Dbubble(YTNTMax)

Allows to get a Bag of all the X that makes Goal evaluate to true

Bag can contain duplicated X

findall(XGoalBag) - post_it(XGoal) gather([]Bag)

Aux

post_it(XGoal) - call(Goal) asserta(data999(X)) fail

post_it(__)

gather(BBag) - data999(X) retract(data999(X)) gather([X|B]Bag)

gather(SS)

member(X[X|_])-

member(X[_|Y]) - member(XY)

101

BBase de conhecimento do protoacutetipo

question(turn_over rsquoO carro ligarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(lights_weak rsquoAs luzes estatildeo fracasrsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(radio_weak rsquoO raacutedio estaacute fracorsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(smell_gas rsquoCheira a gasolinarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(gas_gauge rsquoO que marca o ponteiro do depoacutesito da gasolinarsquo

[ answer(empty rsquoVaziorsquo) answer(high rsquoSuficientersquo) answer(low rsquoReservarsquo)]0)

rule(rule_1 rsquoRule 1rsquolhs([ev(turn_over no) ev(battery_bad yes)])

rhs(ev(problem battery) 100))

rule(rule_2 rsquoRule 2rsquolhs([ev(lights_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_3 rsquoRule 3rsquolhs([ev(radio_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_4 rsquoRule 4rsquolhs([ev(smell_gas yes) ev(turn_over yes)])

rhs(ev(problem flooded) 80))

rule(rule_5 rsquoRule 5rsquolhs([ev(turn_over yes) ev(gas_gauge empty)])

rhs(ev(problem out_of_gas) 90))

rule(rule_6 rsquoRule 6rsquolhs([ev(turn_over yes) ev(gas_gauge low)])

rhs(ev(problem out_of_gas) 30))

rule(rule_7 rsquoRule 7rsquolhs([ev(gas_gauge low)ev(turn_over yes)])

rhs(ev(problem out_of_gas) 30))

103

ANEXO B BASE DE CONHECIMENTO DO PROTOacuteTIPO

rule(rule_8 rsquoRule 8rsquo

lhs([ev(turn_over yes) ev(gas_gauge low) ev(smell_gas no)])

rhs(ev(problem out_of_gas) 30))

top_goal(problem)

104

CBase de conhecimento GISPSA

question(qs_tema_ger rsquoQual o tipo de Problemarsquo

[ answer(c_ger_map rsquoMapas Configuraacuteveisrsquo) answer(c_ger_inq rsquoInqueacuteritos e Listagensrsquo)

answer(c_ger_mov rsquoCGMOVIGrsquo) answer(c_ger_pla rsquoCGDCGERrsquo)

answer(c_ger_acm rsquoCGVACUMCGTACUMrsquo)]0)

question(qs_plareg rsquoA Conta tem regra de construcccedilatildeo associada rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipr rsquoExiste Conta Pai do Tipo R no Planorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaent rsquoConta aberta por entidadesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipa rsquoConta do Tipo Arsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plalim rsquoEntidade encontra-se nos limitesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaexis rsquoEntidade Existentersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plamix rsquoContas Valor entre Contas Movimentorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acumul rsquoQual o problema de acumuladosrsquo

[ answer(c_acm_avm rsquoCGVACUM ltgt CGMOVIGrsquo)

answer(c_acm_si rsquoSaldos Iniciaisrsquo)

answer(c_acm_cna rsquoContas Nao Acumulamrsquo)

answer(c_acm_avat rsquoCGVACUM ltgt CGTACUMrsquo)]0)

question(qs_incmov rsquoInconsistecircncias no CGMOVIGrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

105

ANEXO C BASE DE CONHECIMENTO GISPSA

question(qs_incpla rsquoInconsistecircncias no CGDCGERrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acmsia rsquoSaldos Iniciais Alteradosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movi rsquoQual o problema dos movimentosrsquo

[ answer(c_mov_lan rsquoLanccedilamentos nao balanceadosrsquo)

answer(c_mov_con rsquoProblema de Contasrsquo)

answer(c_mov_cgca rsquoMovimentos CG ltgt CArsquo)]0)

question(qs_movvdif rsquoValores CG gt CArsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlgca rsquoCC Ligados a Analiticarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlg100 rsquoTodas as Ligacoes a 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movm100 rsquoDiferencas Correspondem a CC com Mais de 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcna rsquoLancamento em Contas nao Existentesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movci rsquoLancamento em Contas Invalidasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcdf rsquoContas correctasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_inquer rsquoInqueacuterito ou listagemrsquo

[ answer(c_inq_bal rsquoBalancetersquo) answer(c_inq_dia rsquoExtractoDiariorsquo)]0)

question(qs_inqsal rsquoProblema de saldosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapa rsquoProblema dos mapasrsquo

[ answer(c_map_imp rsquoErro na Impressaorsquo) answer(c_map_cal rsquoErro no Calculorsquo)

answer(c_map_mic rsquoErro na Transferencia P Microrsquo)]0)

question(qs_mapcol0 rsquoA ultima linha calculada tem a coluna 0 configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapfunc

rsquoA ultima linha calculada apresenta colunas com funcoes invalidas ou sintaxe erradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin0 rsquoA Linha 000 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin9 rsquoA Linha 999 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

106

question(qs_map2alg rsquoTodos os Valores da Linha 999 tem 2 Algarismosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_map198 rsquoA Soma dos Valores da Linha 999 Ultrapassa 198rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapsys rsquoO Sistema Permite a Utilizacao de Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapuser rsquoO Utilizador Tem Acesso a Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapflr rsquoO Folder Existersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

rule(r_pla_1 r_pla_1lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plareg c_sim)])

rhs(ev(dominio d_pla_reg) 100)

)

rule(r_pla_2 r_pla_2lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plaent c_sim)])

rhs(ev(dominio d_pla_ent) 100)

)

rule(r_pla_3 r_pla_3lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plamix c_sim)])

rhs(ev(correccao cr_pla_mix) 100)

)

rule(r_pla_11 r_pla_11lhs([ev(dominio d_pla_reg) ev(qs_platipr c_nao)])

rhs(ev(correccao cr_pla_tipr) 100)

)

rule(r_pla_21 r_pla_21lhs([ev(dominio d_pla_ent) ev(qs_platipa c_nao)])

rhs(ev(correccao cr_pla_tipa) 100)

)

rule(r_pla_22 r_pla_22lhs([ev(dominio d_pla_ent) ev(qs_plalim c_nao)])

rhs(ev(correccao cr_pla_lim) 100)

)

rule(r_pla_23 r_pla_23lhs([ev(dominio d_pla_ent) ev(qs_plaexis c_nao)])

rhs(ev(correccao cr_pla_exis) 100)

)

rule(r_acm_1 r_acm_1

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_2 r_acm_2

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_3 r_acm_3

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_4 r_acm_4

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_5 r_acm_5

107

ANEXO C BASE DE CONHECIMENTO GISPSA

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_6 r_acm_6

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_7 r_acm_7

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_si) ev(qs_acmsia c_nao)])

rhs(ev(correccao cr_acm_si) 100)

)

rule(r_mov_1 r_mov_1lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_lan)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_2 r_mov_2lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_cgca)])

rhs(ev(dominio d_mov_cgca) 100)

)

rule(r_mov_21 r_mov_21lhs([ev(dominio d_mov_cgca) ev(qs_movvdif c_sim)])

rhs(ev(subdominio d_mov_cgca_1) 100)

)

rule(r_mov_22 r_mov_22lhs([ev(dominio d_mov_cgca) ev(qs_movm100 c_sim)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_23 r_mov_23lhs([ev(dominio d_mov_cgca)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_3 r_mov_3lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_con)])

rhs(ev(dominio d_mov_con) 100)

)

rule(r_mov_31 r_mov_31lhs([ev(dominio d_mov_con) ev(qs_movcna c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_32 r_mov_32lhs([ev(dominio d_mov_con) ev(qs_movci c_nao)])

rhs(ev(correccao cr_mov_inc_soft) 100)

)

rule(r_mov_33 r_mov_33lhs([ev(dominio d_mov_con) ev(qs_movcdf c_nao)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_34 r_mov_34lhs([ev(dominio d_mov_con)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_211 r_mov_211lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlgca c_nao)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_212 r_mov_212lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlg100 c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_213 r_mov_213lhs([ev(subdominio d_mov_cgca_1)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_inq_1 r_inq_1lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inquer c_inq_bal)])

rhs(ev(correccao cr_inq_bal) 100)

)

rule(r_inq_2 r_inq_2lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inqsal c_sim)])

108

rhs(ev(correccao cr_inq_dia) 100)

)

rule(r_map_1 r_map_1lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_cal)])

rhs(ev(dominio d_map_cal) 100)

)

rule(r_map_2 r_map_2lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_imp)])

rhs(ev(dominio d_map_imp) 100)

)

rule(r_map_3 r_map_3lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_mic)])

rhs(ev(dominio d_map_mic) 100)

)

rule(r_map_11 r_map_11lhs([ev(dominio d_map_cal) ev(qs_mapcol0 c_sim)])

rhs(ev(correccao cr_map_cal_col0) 100)

)

rule(r_map_12 r_map_12lhs([ev(dominio d_map_cal) ev(qs_mapfunc c_sim)])

rhs(ev(correccao cr_map_cal_func) 100)

)

rule(r_map_13 r_map_13lhs([ev(dominio d_map_cal)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_21 r_map_21lhs([ev(dominio d_map_imp) ev(qs_maplin0 c_nao)])

rhs(ev(correccao cr_map_imp_lin0) 100)

)

rule(r_map_22 r_map_22lhs([ev(dominio d_map_imp) ev(qs_maplin9 c_nao)])

rhs(ev(correccao cr_map_imp_lin9) 100)

)

rule(r_map_23 r_map_23lhs([ev(dominio d_map_imp) ev(qs_map2alg c_nao)])

rhs(ev(correccao cr_map_imp_2alg) 100)

)

rule(r_map_24 r_map_24lhs([ev(dominio d_map_imp) ev(qs_map198 c_nao)])

rhs(ev(correccao cr_map_imp_198) 100)

)

rule(r_map_25 r_map_25lhs([ev(dominio d_map_imp)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_31 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapsys c_nao)])

rhs(ev(correccao cr_map_sys) 100)

)

rule(r_map_32 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapuser c_nao)])

rhs(ev(correccao cr_map_user) 100)

)

rule(r_map_33 r_map_33lhs([ev(dominio d_map_mic) ev(qs_mapflr c_nao)])

rhs(ev(correccao cr_map_mic_flr) 100)

)

rule(r_map_34 r_map_34lhs([ev(dominio d_map_mic)])

rhs(ev(correccao cr_map_soft) 100)

)

top_goal(correccao)

109

  • Lista de Figuras
  • Lista de Tabelas
  • Lista de Coacutedigo
  • Lista de Algoritmos
  • Lista de Acroacutenimos
  • Introduccedilatildeo
    • Enquadramento
    • Objectivos
    • Planeamento
    • Estruturaccedilatildeo da dissertaccedilatildeo
      • Estado da arte
        • Sistemas periciais
          • Arquitectura
          • Base de conhecimento
            • Regras
            • Frames
            • Redes semacircnticas
            • Mecanismos de inferecircncia
            • Manutenccedilatildeo de uma base de conhecimento
              • Raciociacutenio sobre incerteza
                • Factores de certeza
                  • Vantagens e desvantagens
                    • GISPSA - GIS Problem Solver Advisor
                      • Arquitectura
                      • Funcionamento
                      • Limitaccedilotildees
                        • Web Expert Systems
                          • Casos de estudo
                            • LOMA - Landfill Operation Management Advisor
                            • MDSS - Medical Diagnosis Support System
                            • Whale watcher
                              • Ferramentas utilizadas
                                • Ambiente de desenvolvimento
                                • Motor de inferecircncia
                                  • Fase I - Recolha de candidatos
                                  • Fase II - Requisitos base
                                  • Fase III - Viabilidade econoacutemica
                                  • Fase IV - Viabilidade teacutecnica
                                  • Fase V - Prova de conceito
                                  • Conclusatildeo e fundamentaccedilatildeo da escolha
                                      • Wexsys
                                        • Arquitectura global
                                          • Moacutedulo pWexsysEAR
                                          • Moacutedulo WexsysEAR
                                          • Interligaccedilatildeo e integraccedilatildeo dos moacutedulos
                                            • Camada de acesso puacuteblico
                                            • Camada de acesso protegido
                                            • Camada de acesso privado
                                            • Fluxo de invocaccedilatildeo
                                              • Portal
                                                • Templates
                                                  • Suporte multi-liacutengua
                                                    • Motor de inferecircncia
                                                      • Multi-utilizador
                                                      • Base de conhecimento inicial
                                                      • Protoacutetipo do motor de inferecircncia
                                                        • Formato das regras
                                                        • Formato das questotildees
                                                        • Interacccedilatildeo assiacutencrona de questotildees e respostas
                                                        • Estrutura da base de conhecimento
                                                        • Algoritmos a utilizar
                                                          • Resultado final
                                                            • Arranque da execuccedilatildeo
                                                            • Mecanismo de respostas
                                                            • Conclusatildeo final encontrada
                                                            • Explicaccedilotildees
                                                                • Base de conhecimento
                                                                  • Leitura da base de conhecimento
                                                                  • Conclusatildeo final a encontrar
                                                                  • Factos iniciais
                                                                  • Regras
                                                                    • CriarAlterar uma regra
                                                                    • Questotildees
                                                                    • Verificaccedilatildeo
                                                                      • Gravaccedilatildeo da base de conhecimento
                                                                      • Conversatildeo GISPSA
                                                                        • Anaacutelise graacutefica
                                                                          • Implementaccedilatildeo
                                                                          • Funcionamento
                                                                          • Limitaccedilotildees
                                                                              • Conclusotildees
                                                                                • Contributos da soluccedilatildeo desenvolvida
                                                                                • Limitaccedilotildees e trabalho futuro
                                                                                  • Bibliografia
                                                                                  • Anexos
                                                                                  • Coacutedigo do motor de inferecircncia
                                                                                  • Base de conhecimento do protoacutetipo
                                                                                  • Base de conhecimento GISPSA
Page 10: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System

34 Exemplo de grafo totalmente expandido 8135 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto 82

xvi

Lista de Tabelas

1 Listagem de produtos da Fase I 362 Listagem de produtos excluiacutedos na Fase II 383 Listagem de produtos excluiacutedos na Fase III 384 Listagem de produtos excluiacutedos na Fase IV 395 JClips - Vantagens e desvantagens 396 Prova - Vantagens e desvantagens 407 YProlog - Vantagens e desvantagens 40

xvii

Lista de Coacutedigo

1 Excerto da classe RuleView 472 Excerto da classe Rule 473 Coacutedigo do template principal do portal 514 Coacutedigo da paacutegina inicial do portal 535 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo 546 Representaccedilatildeo da base de conhecimento do protoacutetipo 587 Predicados principais do motor de inferecircncia 638 Predicados principais do sistema de explicaccedilotildees 70

xix

Lista de Algoritmos

1 Algoritmo principal do motor de inferecircncia 602 Verifica se uma premissa eacute verdadeira 613 Dispara as regras que possam ser disparadas 614 Algoritmo responsaacutevel pelo desenho da applet 805 Algoritmo para construccedilatildeo dos dados do grafo 81

xxi

Lista de Acroacutenimos

AI Artificial Intelligence ou Inteligecircncia Artificial

BRMS Business Rule Management System

CF Certainty Factors ou Factores de Certeza

CLIPS C Language Integrated Production System

DTO Data Transfer Object

ES Expert System

GIS Gestatildeo Integrada de Seguros

GISPSA GIS Problem Solver Advisor

IDE Integrated Development Environment

JEOPS Java Embedded Object Production System

JSF JavaServer Faces

LHS Left-Handed Side

LOMA Landfill Operation Management Advisor

MDSS Medical Diagnosis Support System

ODBC Open Data Base Connectivity

OO Object Oriented

RHS Right-Handed Side

SP Sistema Pericial

SDK Software Development Kit

xxiii

1Introduccedilatildeo

Este trabalho eacute desenvolvido no acircmbito do Mestrado em Engenharia Informaacutetica ramode Tecnologias do Conhecimento e Decisatildeo e teve a sua origem a partir de um sistemadoravante designado por sistema base desenvolvido por Pinto Este sistema base foidesenvolvido durante a realizaccedilatildeo de um trabalho acadeacutemico (Pinto (1998)) cujo principalobjectivo era a construccedilatildeo de um sistema pericial

Na altura da sua criaccedilatildeo o sistema base apenas estava preparado para uma utilizaccedilatildeodo tipo mono-posto Ficava assim estabelecida a condiccedilatildeo de apenas um utilizador decada vez ter acesso ao sistema base Natildeo era exigiacutevel nem sequer necessaacuterio que outrocenaacuterio fosse equacionado dado tratar-se de um trabalho acadeacutemico O sistema ficoudesta forma limitado

Assim somos remetidos a um dos objectivos iniciais que levaram ao desenvolvimentodo trabalho que agora aqui se apresenta Proceder agrave evoluccedilatildeo do sistema base garantindoque o mesmo possa ser acedido por muacuteltiplos utilizadores de forma simultacircnea e a suadisponibilizaccedilatildeo num ambiente de acesso global mediante a utilizaccedilatildeo de redes sendoque a preferecircncia recai sobre a rede mais global que existe a internet Referindo-nos aeste tipo de disponibilizaccedilatildeo com todas as vantagens que lhe estatildeo afectas o proacuteximopasso loacutegico seria a integraccedilatildeo do novo sistema num portal

Eacute tambeacutem um objectivo inicial proceder agrave alteraccedilatildeo da actual forma de manutenccedilatildeo doconhecimento Pretende-se desenvolver um mecanismo de manutenccedilatildeo de conhecimentoque simplifique a interacccedilatildeo com o utilizador

Por uacuteltimo os objectivos deste trabalho passam igualmente pelo melhoramento dosistema base tentando eliminar alguns erros que foram detectados ao longo do tempo eacrescentando algumas caracteriacutesticas que entretanto surgiram e que foram consideradasnecessaacuterias

1

CAPIacuteTULO 1 INTRODUCcedilAtildeO

11 Enquadramento

O sistema a desenvolver embora tenha como ponto de partida um sistema base criado parautilizaccedilatildeo mono-posto faraacute parte de um portal onde seraacute integrado como uma ferramentade apoio na resoluccedilatildeo de problemas operacionais

Para aleacutem de actualmente fazer muito mais sentido a disponibilizaccedilatildeo do sistemanum ambiente de acesso globalizado e com a possibilidade de vaacuterios utilizadores emsimultacircneo a grande vantagem reside no facto de poder utilizar a mesma base de conhe-cimento que alimenta o sistema pericial independentemente do local onde se realizem osacessos Fica assim garantida a uniformidade a fiabilidade e a estabilidade do sistema

Por uacuteltimo a globalizaccedilatildeo do sistema garante igualmente que sempre que este eacuteutilizado natildeo para consulta ou apoio na resoluccedilatildeo de problemas mas para acrescentarnovos factos e dados agrave base de conhecimento estes estejam imediatamente disponiacuteveispara novas consultas ou para resoluccedilotildees de problemas de forma mais eficaz

12 Objectivos

O objectivo principal deste trabalho passa pela integraccedilatildeo do GIS Problem SolverAdvisor (GISPSA) (sistema base) num portal Aleacutem deste outros objectivos podemser considerados como de eventual ou relevante importacircncia podendo ser caracterizadosda seguinte forma

bull Objectivos globais

ndash Desenvolvimento de um sistema pericial rArr Pretende-se desenvolver umcandidato agrave substituiccedilatildeo do GISPSA

ndash Manutenccedilatildeo da base de conhecimento rArr Gerir a base de conhecimentorelativamente agrave inserccedilatildeo e actualizaccedilatildeo de regras de conhecimento bem comoimplementaccedilatildeo de mecanismos de verificaccedilatildeo das regras

bull Objectivos especiacuteficos

ndash Adaptar o motor de inferecircncia existente ou desenvolver novorArr Desenvolvi-mento de um motor de inferecircncia que se enquadre com os objectivos definidos

ndash Alterar o mecanismo de interacccedilatildeo do utilizador com a base de conheci-mentorArr Facilitar a manipulaccedilatildeo da base de conhecimento de forma a evitarproblemas na alteraccedilatildeo da base de conhecimento

2

13 PLANEAMENTO

ndash Verificar e detectar inconsistecircncias na base de conhecimentorArr Implementarmecanismos de verificaccedilatildeo das regras existentes para minimizar problemas

13 Planeamento

O planeamento deste trabalho foi estruturado em quatro fases A composiccedilatildeo dessas faseseacute a seguinte

1 Requisitos

bull Levantamento de requisitos

bull Estado da arte

bull Ferramentas existentes

2 Protoacutetipo

bull Protoacutetipo do motor de inferecircncia

bull Implementaccedilatildeo do gestor da base de conhecimento

3 Verificaccedilatildeo

bull Implementaccedilatildeo de meacutetodos de verificaccedilatildeo e detecccedilatildeo de inconsistecircncias

4 Elaboraccedilatildeo da dissertaccedilatildeo

bull Redacccedilatildeo final da dissertaccedilatildeo

14 Estruturaccedilatildeo da dissertaccedilatildeo

Nesta secccedilatildeo eacute apresentada a estrutura da dissertaccedilatildeo composta por cinco capiacutetulosNo primeiro capiacutetulo ldquoIntroduccedilatildeordquo eacute apresentado o problema actual quais os objec-

tivos a alcanccedilar e qual o planeamento para a prossecuccedilatildeo desses objectivosNo segundo capiacutetulo ldquoEstado da Arterdquo eacute apresentado a soluccedilatildeo GISPSA e tambeacutem o

estado da arte na aacuterea dos sistemas periciaisNo terceiro capiacutetulo ldquoFerramentas utilizadasrdquo eacute apresentado o estudo efectuado sobre

as ferramentas utilizadas e quais as conclusotildees do mesmoNo quarto capiacutetulo ldquoWexsysrdquo eacute descrita a soluccedilatildeo proposta e implementadaNo quinto e uacuteltimo capiacutetulo ldquoConclusotildeesrdquo satildeo apresentadas as conclusotildees finais bem

como os objectivos alcanccedilados e as actuais limitaccedilotildees

3

2Estado da arte

Num estado da arte pretende-se essencialmente fazer o enquadramento do estaacutegio deevoluccedilatildeo e eventuais casos de estudo relacionados com as tecnologias sistemas oupropostas que satildeo utilizadas ou apresentadas ao longo de um trabalho

Para o nosso caso em concreto vamos focalizar esse enquadramento sobre os sistemaspericiais no seu sentido mais abstracto e ainda sobre o sistema base jaacute indicado oGISPSA Apesar de o sistema base ser por si soacute um sistema pericial e como tal poderser apresentado como um caso de estudo inserido nos sistemas periciais generalizados ofacto de servir como ponto de partida para este trabalho em concreto confere-lhe umaimportacircncia muito superior sendo quase obrigatoacuteria a reserva de uma secccedilatildeo proacutepria parao mesmo

21 Sistemas periciais

Os sistemas periciais pertencem a um dos ramos da Artificial Intelligence ou InteligecircnciaArtificial (AI) e surgiram a partir da necessidade que alguns investigadores sentiram emcriar um software que demonstrasse raciociacutenio e comportamento inteligente durante aresoluccedilatildeo de problemas

Um Sistema Pericial (SP) tambeacutem conhecido como Expert System (ES) caracteriza-se como sendo um programa que permite a consulta e utilizaccedilatildeo de conhecimento extraiacutedode um ou mais peritos em determinada aacuterea Esse conhecimento estaacute normalmenteguardado naquilo que eacute mais habitualmente designado por base de conhecimento e agrave qualo programa tem o devido acesso

Na criaccedilatildeo de um SP o ideal seraacute sempre consultar os melhores peritos dentro daaacuterea pretendida e ainda que estes estejam disponiacuteveis para partilhar e disponibilizar oseu conhecimento Tal seria efectivamente a situaccedilatildeo ideal mas que nem sempre se

5

CAPIacuteTULO 2 ESTADO DA ARTE

aproxima da realidade Aliaacutes o verdadeiro sucesso de um sistema pericial reside naqualidade da sua base de conhecimento

Antes de mais devemos considerar que algueacutem que eacute perito em algo certamente oseraacute por uma seacuterie de factores conjugados Experiecircncia adquirida ao longo de vaacuteriosanos formaccedilatildeo especiacutefica dedicaccedilatildeo e estudo profundo seratildeo alguns desses factoresSempre que um indiviacuteduo se encontra numa posiccedilatildeo de excelecircncia em que eacute consideradoum verdadeiro perito encontra-se tambeacutem numa posiccedilatildeo em que lhe eacute bastante difiacutecilencontrar o tempo necessaacuterio para se submeter a uma extracccedilatildeo do conhecimento quedeteacutem Se a isto juntar-mos o facto do objectivo pelo qual se procede agrave extracccedilatildeo deconhecimento eacute a criaccedilatildeo de um programa que seraacute equiparado ao proacuteprio perito emtermos de conhecimento certamente que haveraacute algum desconforto

Aqui surgem as primeiras duacutevidas Seraacute que o sistema pericial tomaraacute o lugar deum ou mais peritos Apesar desta e de outras preocupaccedilotildees os peritos normalmentecontribuem de forma positiva para o enriquecimento de um sistema pericial tornando-odesta forma num sistema com maior qualidade e do qual eles proacuteprios poderatildeo usufruirjaacute que quando eacute possiacutevel agregar o conhecimento de muacuteltiplas pessoas obteacutem-se umconhecimento global superior ao individual

Para aleacutem disto o sistema pericial tende a proceder a um raciociacutenio mais linear loacutegicoe coerente quando comparado com um ser humano que poderaacute deixar que factores comopor exemplo o cansaccedilo ou os sentimentos o influenciem

Merritt define um sistema pericial como sendo um programa que utiliza conhecimentoe meacutetodos de inferecircncia para resolver problemas que satildeo suficientemente complexos pararequerer um especialista para a sua resoluccedilatildeo

ldquo an intelligent computer program that uses knowledge and inference procedures to

solve problems that are difficult enough to require significant human expertise for their

solutionsrdquo Merritt (1989)

A definiccedilatildeo de Giarratano et al eacute mais relacionada com o tipo de problemas tratadospor um sistema pericial

ldquo computer application wich embody some non-algorithmic expertise for solving certain

types of problemsrdquo Giarratano et al (1998)

Esta definiccedilatildeo enquadra de uma forma global as definiccedilotildees reconhecidas aos siste-mas periciais ldquoum sistema pericial pretende emular um perito na identificaccedilatildeo de umdeterminado problema cuja resoluccedilatildeo envolva conhecimento natildeo algoriacutetmicordquo

Existe uma clara separaccedilatildeo entre conhecimento e raciociacutenio o conhecimento eacute obtidocomo jaacute foi referido recorrendo a um ou mais peritos na aacuterea Os dados obtidos satildeo depois

6

21 SISTEMAS PERICIAIS

codificados atraveacutes de um determinado esquema de representaccedilatildeo No passo seguinteeacute adicionada a capacidade de raciociacutenio ao sistema pericial recorrendo a estrateacutegiasheuriacutesticas na tentativa de fornecer um resultado semelhante ao que um perito forneceriae aqui uma vez mais o papel do perito eacute fundamental para o sucesso do sistema pericial

Para aleacutem de contribuir com o conhecimento o perito deveraacute igualmente contribuircom o raciociacutenio utilizado para o manuseamento desse mesmo conhecimento Isto porquea resoluccedilatildeo de um problema poderaacute em determinadas situaccedilotildees necessitar de pequenosajustes que fogem agrave linearidade de um processamento computacional mas que podemperfeitamente ser simuladas e recriadas na construccedilatildeo do raciociacutenio do programa

Eacute necessaacuterio compreender que um perito para aleacutem de ser algueacutem que eacute consideradoum especialista na sua aacuterea eacute habitualmente algueacutem com pouco ou nenhum tempodisponiacutevel o que dificulta bastante a realizaccedilatildeo da recolha do conhecimento O seutempo eacute dispendioso e tem por norma poucos espaccedilos de manobra devido agraves muitassolicitaccedilotildees que lhe satildeo dirigidas Aqui impera o factor de resistecircncia ora porque o peritonatildeo acredita que o sistema seja tatildeo eficaz como ele ora porque existe o receio de sersubstituiacutedo ou passar a ter menos solicitaccedilotildees Quanto maior a colaboraccedilatildeo do ou dosperitos envolvidos na criaccedilatildeo de um qualquer sistema pericial melhor e mais eficaz seraacuteesse sistema pericial

211 Arquitectura

As duas grandes componentes do sistema pericial e que permitem a separaccedilatildeo referidaentre conhecimento e raciociacutenio satildeo a base de conhecimento (depende do domiacutenio ou daaacuterea abrangida) e o bloco de raciociacutenio (natildeo depende do domiacutenio) Este uacuteltimo eacute aindadividido em trecircs partes distintas o motor de inferecircncia o sistema de explicaccedilotildees e ainterface com o utilizador

Um sistema pericial deve ser estruturado de forma a que possa ser actualizado facil-mente sem que seja necessaacuteria qualquer alteraccedilatildeo ao niacutevel funcional do programa

7

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 1 Arquitectura de um sistema pericial

A figura 1 mostra a composiccedilatildeo de um sistema pericial e que mais detalhadamente eacutea seguinte

bull Interface com o utilizador

um sistema pericial deveraacute permitir a interacccedilatildeo com o utilizador Nos casosmais habituais os utilizadores que usufruem dos benefiacutecios destes sistemas natildeosatildeo peritos da aacuterea e pretendem aconselhamento ou ajuda na resoluccedilatildeo de umproblema Noutros casos o utilizador poderaacute ser um perito da aacuterea que apenaspretende testar o sistema pericial ou confrontar as conclusotildees deste com as suasproacuteprias conclusotildees para perceber se sendo diferentes qual o motivo para queisso aconteccedila Isto poderaacute permitir que um perito aprofunde ou corrija o seuproacuteprio conhecimento ou que por outro lado se procedam a correcccedilotildees agrave base deconhecimento do sistema pericial mediante se trate de erro por parte de um ou deoutro

De qualquer forma a interface com o utilizador deveraacute permitir a interacccedilatildeo entreo sistema pericial e o utilizador (qualquer que este seja) para que o utilizadorresponda agraves questotildees que lhe satildeo colocadas e peccedila explicaccedilotildees para os passos econclusotildees que percorre e descobre ao longo da utilizaccedilatildeo do programa

bull Base de conhecimento

o conhecimento extraiacutedo de um ou mais peritos eacute armazenado e mantido aquiDurante a execuccedilatildeo do programa o sistema pericial acede a esta base para consultaros dados disponiacuteveis Eacute sempre possiacutevel em qualquer altura retirar acrescentarou corrigir factos na base de conhecimento Isto contribui para uma evoluccedilatildeo damesma no sentido de melhorar sempre o funcionamento do proacuteprio sistema pericial

8

21 SISTEMAS PERICIAIS

bull Motor de inferecircncia

este bloco eacute o grande responsaacutevel por interpretar o conhecimento e colocarde uma forma estruturada questotildees ao utilizador O raciociacutenio extraiacutedo do ou dosperitos eacute aqui consultado para que mediante as questotildees que satildeo colocadas aoutilizador e as consultas que satildeo efectuadas agrave base de conhecimento este motor deinferecircncia determine qual a proacutexima questatildeo a colocar qual a proacutexima consulta arealizar ou qual a conclusatildeo a apresentar

bull Sistema de explicaccedilotildees

sempre que o utilizador pretende que lhe seja dada uma explicaccedilatildeo para aquestatildeo que estaacute a ser colocada ou para a conclusatildeo que foi determinada este blocoseraacute o responsaacutevel por dar essa mesma explicaccedilatildeo

Esta divisatildeo permite que os moacutedulos funcionais do programa possam ser isoladoscomo podemos observar na figura 1 de forma a facilitar futuras correcccedilotildees e actualizaccedilotildeesda base de conhecimento contribuindo positivamente para a evoluccedilatildeo da mesma eevitando assim que o sistema pericial fique obsoleto

212 Base de conhecimento

Uma base de conhecimento eacute um conjunto de informaccedilatildeo representada de forma a quepossa ser processada pelo motor de inferecircncia Existem vaacuterias formas de representa-ccedilatildeo de conhecimento no entanto as mais conhecidas satildeo a representaccedilatildeo por regrasrepresentaccedilatildeo por ldquoframesrdquo e ainda as redes semacircnticas

Ao representar conhecimento um dos factores determinantes para o meacutetodo necessaacute-rio a essa representaccedilatildeo eacute o domiacutenio do problema ou aacuterea a modelar A tiacutetulo de exemplose um problema segue um padratildeo ou algum tipo de linearidade na busca da soluccedilatildeonecessaacuteria ou ainda se a soluccedilatildeo puder ser obtida atraveacutes de questotildees cujas respostassatildeo maioritariamente simples (sim natildeo valores numeacutericos etc) a representaccedilatildeo doconhecimento eacute feita utilizando os meacutetodos de regras ou ldquoframesrdquo

Como jaacute foi referido o papel de um perito natildeo estaacute limitado apenas agrave contribuiccedilatildeocom o conhecimento para a base necessaacuteria Este exerce um outro papel igualmenteimportante que tem a ver mais com o aspecto de raciociacutenio Desta forma ao consultar abase de conhecimento satildeo tomadas algumas decisotildees tais como verificaccedilatildeo de eventuaissoluccedilotildees jaacute possiacuteveis em pontos intermeacutedios ou qual a proacutexima questatildeo a colocar Estemeacutetodo de interacccedilatildeo com a base de conhecimento poderaacute eventualmente entrar em

9

CAPIacuteTULO 2 ESTADO DA ARTE

conflito com a independecircncia de domiacutenio que foi referida na arquitectura de um sistemapericial No entanto este aspecto fundamental da criaccedilatildeo de um sistema pericial contribuilargamente para o bom funcionamento do mesmo

Para aleacutem disto a base de conhecimento deveraacute sempre contemplar as funcionalidadesnecessaacuterias que permitam ao utilizador em qualquer altura proceder agrave adiccedilatildeo de novosfactos agrave correcccedilatildeo dos jaacute existentes ou ainda agrave eliminaccedilatildeo dos mesmos Isto permitemanter uma base de conhecimento sempre actualizada fiaacutevel e consistente Estas razotildeescontribuem para a resoluccedilatildeo cada vez mais eficaz dos problemas que satildeo colocadosPara novos problemas que surgem poderatildeo ser necessaacuterias novas soluccedilotildees ou novosmeacutetodos para as encontrar Para problemas jaacute conhecidos poderatildeo ser encontradas novasformas ou novas soluccedilotildees de os resolver eventualmente consideradas mais eficazes ou deimplementaccedilatildeo mais simples

Por tudo isto considera-se que a base de conhecimento apesar de natildeo ser o verdadeiromotor de um sistema pericial poderaacute ser encarada como o verdadeiro combustiacutevelque o move e sem o qual natildeo seria possiacutevel qualquer tipo de evoluccedilatildeo pelo que a natildeocontribuiccedilatildeo para o seu melhoramento estagna o proacuteprio sistema provocando mais cedoou mais tarde o abandono do mesmo por parte dos utilizadores que entretanto podemperder a confianccedila que lhe depositaram

Os meacutetodos de representaccedilatildeo de conhecimento podem ser seleccionados de acordocom as caracteriacutesticas que lhes estatildeo inerentes e que se descrevem de seguida

2121 Regras

Uma das teacutecnicas de representaccedilatildeo de conhecimento mais utilizadas eacute a representaccedilatildeopor regras Estas satildeo utilizadas para representar heuriacutesticas e caracterizam-se por umconjunto de premissas que desencadeiam ou conduzem a uma soluccedilatildeo

As regras tecircm o formato ltidentificaccedilatildeogt Se ltLeft-Handed Side (LHS)gt EntatildeoltRight-Handed Side (RHS)gt

Onde

ltidentificaccedilatildeogt - identificaccedilatildeo da regra

ltLHSgt ndash ldquoLeft-Handed Siderdquo define as premissas que teratildeo que ser satisfeitas deforma a que a regra possa ser disparada

ltRHSgt ndash ldquoRight-Handed Siderdquo define as acccedilotildees ou conclusotildees que seratildeo verificadascom o disparo da regra

As premissas satildeo definidas recorrendo a factos que podem ser previamente conhecidosou inferidos a partir de outras regras A utilizaccedilatildeo de regras promove uma separaccedilatildeo

10

21 SISTEMAS PERICIAIS

entre a parte loacutegica e a funcional isto eacute permite-nos uma abstracccedilatildeo de implementaccedilatildeofocando-se na loacutegica

Vantagens

bull expressividade - as regras satildeo normalmente representadas de uma forma naturalque pode mesmo chegar a ser declarativa Eacute perfeitamente normal uma regra estarescrita num vocabulaacuterio que pode ser lido e compreendido por algueacutem que natildeo sejao programador o perito ou algueacutem com formaccedilatildeo na aacuterea em questatildeo

bull modularidade - as regras satildeo independentes entre si o que possibilita uma maisfaacutecil manutenccedilatildeo da base de conhecimento Isto permite e facilita a remoccedilatildeo deregras a adiccedilatildeo de outras ou a alteraccedilatildeo das jaacute existentes

bull separaccedilatildeo loacutegica - as regras satildeo independentes do motor de inferecircncia e estenatildeo carece de alteraccedilotildees ou actualizaccedilotildees quando as regras satildeo modificadas Ofuncionamento do sistema natildeo eacute alterado quando as regras o satildeo apenas as soluccedilotildeesque o sistema obteacutem eacute que poderatildeo ser diferentes (normalmente para melhor)

bull gramaacutetica riacutegida - as regras obedecem a estruturas que estatildeo perfeitamente defi-nidas agrave partida Isto implica que as mesmas possam ser validadas ou ateacute mesmoconstruiacutedas recorrendo a outros sistemas

bull execuccedilatildeo loacutegica - eacute sempre possiacutevel em qualquer altura do funcionamento dosistema pericial solicitar o desencadeamento ou disparo de uma sucessatildeo deregras A isto chama-se uma explosatildeo combinatoacuteria das regras e permite quesejam contemplados vaacuterios cenaacuterios possiacuteveis utilizando apenas uma execuccedilatildeoEsta execuccedilatildeo loacutegica tem sempre o mesmo resultado desde que se mantenham osparacircmetros iniciais

bull sistema de explicaccedilotildees - ao proceder a disparos de regras eacute possiacutevel dar indicaccedilatildeode qual a loacutegica utilizada para disparar uma determinada regra Isto permite de umaforma didaacutectica e simples justificar a razatildeo dos disparos auxiliando o utilizador nacompreensatildeo da evoluccedilatildeo que o sistema segue para atingir determinada soluccedilatildeo

Desvantagens

bull explicaccedilotildees - se um utilizador natildeo conhecer as regras ou natildeo as aceitar o sistemade explicaccedilotildees natildeo seraacute uma mais valia Poderaacute ateacute eventualmente tornar-se emalgo que confunde mais do que aquilo que auxilia

11

CAPIacuteTULO 2 ESTADO DA ARTE

bull gramaacutetica riacutegida - apesar de o meacutetodo de utilizaccedilatildeo de estruturas poder ser con-siderado importante porque estabelece um padratildeo a ser seguido pode conduzir aproblemas de expressividade quando utilizado em domiacutenios complexos

bull inconsistecircncia - um dos maiores problemas que podem surgir num sistema queutiliza a representaccedilatildeo do conhecimento atraveacutes de regras tem a ver com a possibi-lidade da existecircncia de inconsistecircncias e incoerecircncias nas regras Isto reduz-se ouevita-se atraveacutes da utilizaccedilatildeo exaustiva do sistema numa fase de testes em que satildeoequacionados o maior nuacutemero de casos ou cenaacuterios que possam despoletar todas asregras existentes na base de conhecimento

2122 Frames

Uma frame representa um conceito e eacute composta por slots que que natildeo satildeo mais do que adefiniccedilatildeo de um conjunto ltatributo valorgt Um valor pode ser um elemento uacutenico ouuma lista de valores e em termos de dados pode conter um tipo de dados primitivo ouuma referecircncia a outra frame

Esta representaccedilatildeo tem uma ligaccedilatildeo muito forte com o paradigma da programaccedilatildeoorientada a objectos jaacute que a ideia eacute a mesma representar objectos e conceitos do mundoreal utilizando a descriccedilatildeo a composiccedilatildeo e a heranccedila

Como vantagens temos

bull associaccedilatildeo - as frames definem e representam o conhecimento de uma formaassociativa (associaccedilatildeo normal de conceitos)

Desvantagens

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as frames podem representar um espaccedilo que natildeo estaacuterestringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

12

21 SISTEMAS PERICIAIS

2123 Redes semacircnticas

Uma rede semacircntica eacute um modelo formal em que satildeo descritos conceitos e relaccedilotildeesrecorrendo a um grafo dirigido Os conceitos satildeo representados por noacutes as relaccedilotildees porarcos e existe uma heranccedila de conceitos agrave medida que se procede agrave navegaccedilatildeo pelas vaacuteriasrelaccedilotildees

Como vantagens temos

bull exploraccedilatildeo graacutefica - a representaccedilatildeo de conhecimento atraveacutes de redes semacircnticaspermite a um utilizador explorar um domiacutenio graficamente Isto facilita a interacccedilatildeoe utilizaccedilatildeo do sistema

bull facilidade na adiccedilatildeo de clusters relacionados - utilizando o modo graacutefico de repre-sentaccedilatildeo torna-se mais faacutecil adicionar novos clusters em que existam conceitosrelacionados

bull faacutecil assimilaccedilatildeo - os seres humanos relacionam-se bem com ambientes graacuteficose tecircm uma tendecircncia a natildeo soacute aceitaacute-los melhor como tambeacutem a proceder a umautilizaccedilatildeo mais atractiva simples e de raacutepida aprendizagem com um miacutenimo deformaccedilatildeo

Como desvantagens temos

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as redes semacircnticas podem representar um espaccedilo que natildeoestaacute restringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

bull falta de estrutura e formalidade - natildeo existe uma semacircntica formal para a represen-taccedilatildeo simboacutelica das ligaccedilotildees o que deixa demasiado espaccedilo para a criatividade eeventualmente para o surgimento de problemas associados ao facto de poderemexistir muacuteltiplas formas de representaccedilatildeo

13

CAPIacuteTULO 2 ESTADO DA ARTE

2124 Mecanismos de inferecircncia

A base de conhecimento representa o caminho para encontrar uma determinada soluccedilatildeomas o motor de inferecircncia eacute a entidade que efectivamente percorre esse caminho Ummotor de inferecircncia pode utilizar diferentes estrateacutegias de raciociacutenio para a obtenccedilatildeode respostas As mais conhecidas satildeo a estrateacutegia de encadeamento directo e a deencadeamento inverso Contudo eacute possiacutevel combinar as duas no mesmo sistema naquiloque eacute vulgarmente conhecido como uma estrateacutegia de encadeamento misto

Encadeamento directo (Forward Chaining) ndash Um ser humano no seu dia a dia utilizaesta estrateacutegia para processamento de raciociacutenio Consoante assistimos a acontecimentoso ceacuterebro processa-os e analisa-os decidindo o que fazer de seguida De igual modo aestrateacutegia de raciociacutenio por encadeamento directo comeccedila por percorrer os factos baacutesicosque vatildeo originar o disparo de regras o que levaraacute agrave obtenccedilatildeo de conclusotildees intermeacutediasque por sua vez iratildeo originar o disparo de mais regras e assim sucessivamente Oprocesso continua ateacute que se obtenham conclusotildees finais se tal for possiacutevel ou natildeo hajamais lugar agrave possibilidade de disparo de novas regras

Devido agraves suas caracteriacutesticas esta estrateacutegia eacute mais apropriada para planeamentomonitorizaccedilatildeo controlo e interpretaccedilatildeo

Encadeamento inverso (Backward Chaining) ndash No encadeamento inverso o motorde inferecircncia tenta provar as conclusotildees finais que aparecem no lado direito das regras(RHS) Essas conclusotildees finais tambeacutem satildeo designadas como objectivos e eacute normaldizer-se que o motor de inferecircncia com encadeamento inverso eacute orientado aos objectivos(goal driven)

Para provarmos uma dada conclusatildeo teremos que provar as condiccedilotildees que aparecemno lado esquerdo da regra (LHS) que poderatildeo ser suportadas por conclusotildees intermeacutediasde outras regras ou por factos baacutesicos Sendo assim o mecanismo de encadeamentoinverso assume um caraacutecter essencialmente recursivo (para provar uma conclusatildeo vamoster que provar as condiccedilotildees)

Este tipo de estrateacutegia eacute mais apropriada para diagnoacutesticos jaacute que temos uma hipoacuteteseque necessita de ser provada de forma a chegar a uma conclusatildeo

Eacute importante salientar que a forma de representaccedilatildeo das regras eacute independente daestrateacutegia utilizada pelo motor de inferecircncia No entanto eacute possiacutevel melhorar a eficaacuteciado sistema se adaptarmos essa representaccedilatildeo consoante o encadeamento utilizado

14

21 SISTEMAS PERICIAIS

2125 Manutenccedilatildeo de uma base de conhecimento

A manutenccedilatildeo de uma base de conhecimento embora seja considerada vital para asobrevivecircncia do sistema pericial eacute um processo bastante complexo no sentido emque implica cuidados que nem sempre satildeo tidos ou considerados Eacute habitual existiremproblemas de validaccedilatildeo verificaccedilatildeo redundacircncia e contradiccedilotildees

De forma a garantir que a base de conhecimento se mantenha fiaacutevel e bem definidadevem ser desenvolvidos mecanismos que evitem a ocorrecircncia deste tipo de problemas

Redundacircncia - Considera-se aplicaccedilatildeo de redundacircncia a uma base de conhecimentoquando ao inserir uma regra estamos a adicionar conhecimento que jaacute estava contido nabase de conhecimento Podemos observar o seguinte exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X tem_barbatanas entatildeo X nada

regra3 se X nada E X tem_barbatanas entatildeo X eacute_peixe

Neste exemplo eacute possiacutevel verificar que esta base de conhecimento manteacutem-se idecircntica(o conhecimento eacute o mesmo) se removermos a regra3 considerada redundante Esta regranatildeo trouxe nenhum conhecimento novo ao sistema e pode ser descartada

Contradiccedilatildeo - Considera-se regra contraditoacuteria toda a regra que contradiz conheci-mento jaacute existente na base de conhecimento Por exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X nada entatildeo X natildeo_eacute_peixe

A regra2 contradiz claramente a regra1 pelo que eacute considerada contraditoacuteria Um dosgrandes problemas na anaacutelise de duas ou mais regras contraditoacuterias passa por determinarquais as que correspondem ao conhecimento correcto

Verificaccedilatildeo - acccedilatildeo desencadeada ainda na fase de implementaccedilatildeo inicial da base deconhecimento onde se pretende minimizar problemas essencialmente de redundacircncia e decontradiccedilatildeo que possam ser provocados pelo programador Toda a base de conhecimentoeacute verificada e confrontada com as notas apontamentos e indicaccedilotildees a que o programadorteve acesso e que serviram de alicerce para a construccedilatildeo da mesma

Validaccedilatildeo - a acccedilatildeo preventiva de erros iniciais levada a cabo logo apoacutes a implementa-ccedilatildeo da base de conhecimento precede a acccedilatildeo seguinte que consiste em validar a referidabase atraveacutes da intervenccedilatildeo de um perito o qual utiliza vaacuterios cenaacuterios de testes ondetenta obter as respostas ao mesmo tempo que vai consultando as explicaccedilotildees disponiacuteveisao longo do percurso

Apesar de ser habitual proceder a esta validaccedilatildeo com o perito que contribuiu como conhecimento eacute igualmente habitual e ateacute beneacutefico utilizar outros peritos da mesma

15

CAPIacuteTULO 2 ESTADO DA ARTE

aacuterea que para aleacutem de validarem a base de conhecimento em causa poderatildeo inclusiveconfrontar o seu proacuteprio conhecimento com o do perito original procedendo a correcccedilotildeesa eles proacuteprios ou agrave base per si Quanto maior a taxa de intervenccedilatildeo construtiva por partede peritos numa base de conhecimento melhor seraacute a qualidade associada agrave mesma

213 Raciociacutenio sobre incerteza

Raciociacutenio sobre incerteza eacute o nome dado ao processo de formulaccedilatildeo de conhecimentobaseado em fontes de informaccedilatildeo que detenham algum tipo de incerteza na sua especifi-caccedilatildeo

O conhecimento que detemos natildeo se limita a observaccedilotildees loacutegicas do tipo ldquose Obser-vaccedilatildeo_A entatildeo conclusatildeo_Brdquo Em vaacuterias situaccedilotildees necessitamos de lidar com informaccedilatildeoincompleta incorrecta ou ateacute mesmo ausente

Quando lidamos com conhecimento de peritos num determinado domiacutenio surge aindaoutro tipo de conhecimento este originado atraveacutes da observaccedilatildeo e experiecircncia

Existe entatildeo a necessidade de representaccedilatildeo de conhecimento e respectivo grau decerteza Para este efeito existem algumas teacutecnicas tais como loacutegica Fuzzy teorias deprobabilidades tais como Bayes ou Dempster-Shafer factores de certeza entre outros

Os seguintes autores podem ser consultados para referecircncia das teacutecnicas acima men-cionadas

bull Loacutegica Fuzzy - Drakopoulos (1994)

bull Bayes - Lucas (2001)

bull Dempster-Shafer - Wilson (2000) e Barnett (1991)

De seguida vai ser descrita a teacutecnica dos factores de certeza que foi a teacutecnica adoptadapara o desenvolvimento da soluccedilatildeo

2131 Factores de certeza

A teacutecnica dos Certainty Factors ou Factores de Certeza (CF) eacute um do meacutetodos detratamento de incertezas num sistema pericial A teacutecnica foi desenvolvida por Shortliffeand Buchanan para o projecto MYCIN um sistema pericial de diagnoacutestico e tratamentode meningite e tratamento do sangue Desde entatildeo que esta teacutecnica eacute o padratildeo seguido nodesenvolvimento de sistemas periciais baseados em regras Heckerman (1992)

16

21 SISTEMAS PERICIAIS

De um ponto de vista funcional caracteriza-se pela atribuiccedilatildeo de um nuacutemero o graude certeza a factos e regras Esse grau de certeza eacute uma medida relativa probabiliacutesticaque pode ser positiva ou negativa sendo normalmente usados valores no intervalo de -1 a1

A sua definiccedilatildeo original baseou-se na seguinte foacutermula FC [HE] = MC [HE]minusMD [HE]

O factor de certeza da hipoacutetese H dado uma evidecircncia E eacute dado pela diferenccedila entre

bull a medida de certeza de H dado Erarr MC [HE]

bull a medida de descrenccedila de H dado Erarr MD [HE]

O CF final de uma regra com uma premissa baseada num facto ou noutra regra eacute dadopela foacutermula 21

Quando as premissas estatildeo associadas atraveacutes do operador conjunccedilatildeo eacute aplicada afoacutermula 22

Quando existe mais do que uma regra a suportar uma determinada conclusatildeo o CFfinal eacute o resultado da foacutermula 23

CFf inal =CFpremissatimesCFregra 21

CFf inal = min[CFpremissa1 CFpremissan

]timesCFregra

22

X Y gt 0CF (X Y ) = X +Y (100˘X)100 23a

X ou Y lt 0CF (X Y ) = X +Y(1˘min(X Y)) 23b

X Y lt 0CF (X Y ) =minusCF (minusX minusY ) 23c

214 Vantagens e desvantagens

Apesar de tudo o que foi descrito um sistema pericial natildeo representa de forma alguma aferramenta mais apropriada para resolver todos os problemas com recurso a conhecimentoque de outra forma estaria reservado apenas a peritos das vaacuterias aacutereas Ao utilizarmosum sistema pericial estamos sujeitos a aspectos positivos e negativos cabendo a noacutes opapel de determinar se quando confrontados com um determinado problema a utilizaccedilatildeodeste tipo de ferramenta eacute a mais apropriada

17

CAPIacuteTULO 2 ESTADO DA ARTE

Para observar quais as principais vantagens de um sistema pericial podemos consultaras opiniotildees partilhadas por Giarratano et al (1998) CoAJRA (1997)

bull Elevada disponibilidaderArr um sistema pericial estaacute sempre disponiacutevel em termosde tempo e local pronto a funcionar sob qualquer condiccedilatildeo enquanto que umperito natildeo dispotildee dessa total disponibilidade

bull Baixo risco de utilizaccedilatildeorArr pode ser utilizado em ambientes considerados perigo-sos e hostis para um ser humano

bull Baixo custo rArr o custo de providenciar conhecimento por utilizador eacute bastantereduzido

bull DurabilidaderArr o conhecimento eacute permanente ao contraacuterio de um especialista queestaacute sujeito a ausecircncias

bull Conhecimento de vaacuterios especialistasrArr quando agregado o conhecimento reco-lhido a partir de vaacuterios especialistas poderaacute conduzir a resultados mais adequadose considerados melhores quando confrontados com o conhecimento individual e osresultados que daiacute advecircm

bull Capacidade de explicaccedilatildeorArr um sistema pericial consegue explicar detalhadamenteos passos que levaram agrave resposta dada enquanto que um ser humano pode natildeo tera disponibilidade nem a vontade de explicar todo o processo de raciociacutenio seguido

bull EmotividaderArr um sistema pericial natildeo estaacute sujeito a emoccedilotildees o seu funciona-mento e as respostas que providencia natildeo satildeo influenciadas pelo meio em que estaacuteinserido como por exemplo situaccedilotildees de stress ou situaccedilotildees de perigo iminente (aqueda de um aviatildeo ou uma central nuclear em risco)

bull Natildeo influenciaacutevelrArr acontecimentos mais actuais tecircm o mesmo peso na tomada dedecisatildeo evitando assim o fenoacutemeno de ldquoviciaccedilatildeordquo da base de conhecimento

No entanto um sistema pericial comporta tambeacutem algumas desvantagens das quaisse salientam

bull Emotividade rArr o facto de natildeo ser emotivo tambeacutem pode ser visto como umadesvantagem jaacute que natildeo recorrer a emoccedilotildees pode ser problemaacutetico por exemploem situaccedilotildees que necessitem de senso comum

18

21 SISTEMAS PERICIAIS

bull ManutenccedilatildeorArr se natildeo for devidamente mantido e actualizado um sistema pericialcorre o risco de ldquoenvelhecerrdquo no sentido em que deixa de ser um sistema fiaacutevel aque possamos recorrer e que corre o risco de abandono

bull CriatividaderArr um sistema pericial natildeo tem capacidade de reagir de forma diferentea problemas colocados seguindo sempre uma linha estaacutevel de raciociacutenio

bull Adaptaccedilatildeo sensorial rArr um sistema pericial natildeo consegue reagir a informaccedilatildeosensorial do meio que o rodeia entenda-se sensorial como sentidos humanos taiscomo o cheiro o tacto e a visatildeo

19

CAPIacuteTULO 2 ESTADO DA ARTE

22 GISPSA - GIS Problem Solver Advisor

O Gestatildeo Integrada de Seguros (GIS) eacute um Sistema de Informaccedilatildeo vocacionado para aactividade seguradora residente na plataforma AS400 da IBM Umas das caracteriacutesticasmais interessantes deste sistema acabou por ser tambeacutem um dos grandes proporciona-dores de eventuais problemas O GIS possui uma grande capacidade de configuraccedilatildeo oque sendo muito uacutetil para a adaptabilidade deste a cenaacuterios situaccedilotildees ou utilizadoresdiferentes acaba por originar vaacuterios problemas operacionais atraveacutes de inconsistecircnciasna proacutepria configuraccedilatildeo

Dada esta facilidade aparente de ocorrecircncia de problemas e a falta de sensibilidadee formaccedilatildeo teacutecnica dos utilizadores para os resolver a equipa de assistecircncia teacutecnicaafecta ao GIS estava muitas vezes com sobrecarga de pedidos por parte dos clientes quepretendem estes problemas solucionados Existiam periacuteodos de especial relevacircncia noque toca a estas sobrecargas tais como os fechos de ano das empresas

A partir daqui surge a ideia e a necessidade da criaccedilatildeo do GISPSA com o intuito dealiviar a sobrecarga da equipa de assistecircncia teacutecnica mas essencialmente com o grandeobjectivo de assegurar que um cliente natildeo fica sem soluccedilatildeo para os problemas com que sedepara apenas porque natildeo estatildeo teacutecnicos disponiacuteveis A grande vantagem de um sistemapericial foi e seraacute sempre essa poder substituir um perito sem ter que enfrentar questotildeescomo a disponibilidade custos ou tempo

Assim surge o GISPSA que mais natildeo eacute que um projecto criado por Pinto no acircmbito deum projecto acadeacutemico cujo objectivo inicial passava por criar um Sistema Pericial paradiagnoacutestico de problemas operacionais do GIS Este sistema teve por base o conhecimentoe o respectivo raciociacutenio extraiacutedos de um perito da aacuterea Administrativa-Financeira doGIS

No caso de problemas mais complexos em que o Sistema Pericial natildeo consiga determi-nar os factores de erro eacute remetida a resoluccedilatildeo para um teacutecnico da empresa comunicandoesse facto ao utilizador Pinto (1998)

221 Arquitectura

Sendo um sistema pericial o GISPSA teria que ser desenvolvido utilizando uma lingua-gem que tivesse uma seacuterie de caracteriacutesticas A existecircncia de uma base de conhecimento apossibilidade de consultar factos adicionar novos factos ou ainda de remover factos nessamesma base e aspectos como o backtracking na realizaccedilatildeo de raciociacutenio ao inferir sobreesses mesmos factos natildeo permitia um leque muito alargado na escolha da linguagem de

20

22 GISPSA - GIS PROBLEM SOLVER ADVISOR

desenvolvimento

Desta forma ficou decidido que o GISPSA seria desenvolvido em prolog (maisespecificamente winprolog) Devido agrave simplicidade de utilizaccedilatildeo e extensa documentaccedilatildeode apoio o LPAProlog foi usado como motor de inferecircncia e o LPAFlex foi usado paraestabelecer a declaraccedilatildeo de regras

Como jaacute foi referido anteriormente o GISPSA eacute uma aplicaccedilatildeo standalone desenhadae desenvolvida para uma execuccedilatildeo local em mono-posto e sujeita agrave obtenccedilatildeo de umalicenccedila de utilizaccedilatildeo para garantir o seu funcionamento

Figura 2 GISPSA menu inicial

A aplicaccedilatildeo dispotildee de uma interface graacutefica tambeacutem criada em winprolog que utilizarecursos especiacuteficos do sistema operativo Windows

A base de conhecimento eacute armazenada num uacutenico ficheiro ksl e o seu carregamentonatildeo eacute parcial O mesmo seraacute dizer que toda a base de conhecimento eacute passada paramemoacuteria de trabalho assim que o programa arranca

222 Funcionamento

Em termos funcionais a aplicaccedilatildeo permite mudar o tipo de linguagem a ser empreguenas conversaccedilotildees estabelecidas com o utilizador consoante esta esteja a ser utilizadapor um teacutecnico (habitualmente os teacutecnicos com formaccedilatildeo na aacuterea) ou um utilizadornormal (o cliente que adquiriu a aplicaccedilatildeo e cuja formaccedilatildeo eacute mais reduzida ou ateacute mesmoinexistente)

Apoacutes a definiccedilatildeo da linguagem de interacccedilatildeo a utilizar o sistema inicia entatildeo o pedidode assistecircncia apresentando a mensagem ldquoSeleccione a aplicaccedilatildeordquo (figura 3) que permitenuma primeira instacircncia direccionar o raciociacutenio face agrave resposta do utilizador

21

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 3 GISPSA interacccedilatildeo inicial

Figura 4 GISPSA exemplo de interacccedilatildeo pergunta-resposta

223 Limitaccedilotildees

Apesar de ser inovadora na aacuterea esta aplicaccedilatildeo foi no iniacutecio bastante utilizada por algunsclientes tendo sofrido algum abandono de forma gradual ao longo do tempo de vida quejaacute leva Apoacutes uma anaacutelise chegou-se agrave conclusatildeo que as principais causas na origemdesse abandono seriam as seguintes

bull Adicionar regras implicava o conhecimento da sintaxe das mesmas Verificou-se que esta tarefa era demasiado complexa para um utilizador sem formaccedilatildeo esensibilidade suficientes na aacuterea da programaccedilatildeo

bull O acto de proceder agrave ediccedilatildeo de regras existentes na base de conhecimento traduz-senuma tarefa que para aleacutem de morosa eacute essencialmente de risco no sentido em

22

23 WEB EXPERT SYSTEMS

que natildeo existe uma verdadeira noccedilatildeo do impacto que estas alteraccedilotildees possam vir ater no comportamento global do sistema

bull O sistema apenas pode ser instalado em mono-posto o que obriga agrave obtenccedilatildeo deuma licenccedila por cada instalaccedilatildeo que se pretende realizar

bull O sistema natildeo permite a integraccedilatildeo com ambientes baseados em redes e sistemasdistribuiacutedos

bull Natildeo existe nenhum mecanismo de verificaccedilatildeo da base de conhecimento

bull O aspecto visual da aplicaccedilatildeo estaacute ultrapassado e eacute pouco apelativo

23 Web Expert Systems

Actualmente uma grande maioria dos sistemas periciais desenvolvidos satildeo desenhadospara um funcionamento em ambientes web As razotildees apontadas para esta orientaccedilatildeo satildeovaacuterias destacando-se a evoluccedilatildeo da proacutepria tecnologia as velocidades de transmissatildeode dados em redes a possibilidade de acesso em muacuteltiplas localizaccedilotildees geograacuteficas(desde que assegurado o necessaacuterio acesso agrave rede) e ainda o desenvolvimento de novasferramentas que possibilitam maior facilidade na criaccedilatildeo destes novos sistemas

Algumas das ferramentas que permitem actualmente o desenvolvimento de um sistemapericial baseado em ambientes web satildeo as seguintes

1 WebFlex - LPA Flex

2 EXSYS CORVID

3 WebCLIPS

4 JCLIPS

5 JESS

6 Acquire

WebFlex - Esta ferramenta permite a publicaccedilatildeo de um sistema pericial desenvolvidoem ldquoLPA Prologrdquo Os sistemas periciais desenvolvidos a partir deste meacutetodo necessitamainda de outra ferramenta para garantir o funcionamento o ldquoLPA ProWeb Serverrdquo Eacute

23

CAPIacuteTULO 2 ESTADO DA ARTE

possiacutevel adaptar um sistema pericial jaacute desenvolvido para ser disponibilizado numarede sem ser necessaacuterio efectuar qualquer tipo de alteraccedilatildeo No entanto se for pretendidoalgum tipo de configuraccedilatildeo extra por exemplo incluir imagens ou alterar a aparecircncia dealguns controlos eacute uma alteraccedilatildeo extremamente morosa e complexa

WebFlex allows you to deliver your flex-based expert systems onto Intranets

and Extranets easily Just create your rules and frames and questions as per normal

in flex and WebFlex will construct a web server-based solution using ProWeb where

all the questions are sent automatically configured for a standard HTMLJavascript

browserLogic Programming Associaties Ltd (2010)

Eacute possiacutevel alterar o HTML de saiacuteda que o webflex utiliza por defeito no entanto estaconfiguraccedilatildeo natildeo eacute tatildeo simples quanto poderaacute parecer agrave partida e obriga agrave alteraccedilatildeo dosistema pericial

Esta ferramenta funciona apenas em sistemas windows e eacute necessaacuteria a obtenccedilatildeo deuma licenccedila de utilizaccedilatildeo (natildeo eacute gratuita)

EXSYS CORVID - Eacute uma ferramenta composta por dois moacutedulos Exsys CORVID

Knowledge Automation Expert System Software e Exsys Servlet Runtime EXSYS (2010)

Natildeo foi possiacutevel encontrar nenhum sistema desenvolvido por esta ferramenta pormotivos de confidencialidade eou vantagem competitiva Estatildeo no entanto disponiacuteveisaplicaccedilotildees de demonstraccedilatildeo na paacutegina oficial da empresa Verificou-se que nenhumadas aplicaccedilotildees de demonstraccedilatildeo disponiacuteveis possui capacidades de dar explicaccedilotildees oujustificaccedilotildees

De acordo com EXSYS as aplicaccedilotildees construiacutedas com esta ferramenta podem seracedidas por Servlet Applet ou standalone e esta ferramenta necessita da obtenccedilatildeo deuma licenccedila de desenvolvimento

WebCLIPS - Segundo Michael Giordano o WebCLIPS eacute uma implementaccedilatildeo CGI

que envolve o C Language Integrated Production System (CLIPS) como aplicaccedilatildeo internaO CLIPS eacute uma ferramenta de desenvolvimento de sistemas periciais

Esta ferramenta foi desenvolvida em linguagem C o que significa que em termos deportabilidade desde que se possua o coacutedigo fonte este poderaacute ser compilado em qualquersistema operativo jaacute que o compilador para a linguagem estaacute disponiacutevel para todas as

24

23 WEB EXPERT SYSTEMS

versotildees existentes no mercado No entanto o WebCLIPS apenas foi desenvolvido parafuncionamento em sistemas windows e linux

O CLIPS eacute uma ferramenta livre que permite o desenvolvimento de sistemas baseadosem regras Pode ser integrado com algumas linguagens das quais se destacam C Java

(JCLIPS) FORTRAN entre outras Esta eacute provavelmente a ferramenta mais utilizada nodesenvolvimento de sistemas periciais devido agrave sua rapidez eficiecircncia e pelo facto de sergratuita

JCLIPS - Eacute uma biblioteca que permite integraccedilatildeo com Java e permite igualmentea utilizaccedilatildeo do motor do CLIPS a partir de uma classe Java Esta interligaccedilatildeo eacute feitaatraveacutes da importaccedilatildeo do ficheiro (dll ou so consoante o sistema operativo) e permite aexecuccedilatildeo de uma instacircncia ou seja permite ter apenas uma sessatildeo de um sistema pericialde cada vez Maarten Menken (2010)

JESS - O JESS eacute uma extensatildeo do CLIPS em JAVA Eacute basicamente uma bibliotecacujo objectivo natildeo passa por gerar uma aplicaccedilatildeo web mas sim servir de base para quepossa ser integrada ou utilizada para esse efeito Ernest Friedman-Hill (2010)

Utiliza uma linguagem especiacutefica designada JESS language equivalente ao CLIPSmas com novos componentes que a tornam uma linguagem complexa e de difiacutecil utilizaccedilatildeopor algueacutem sem conhecimentos de inteligecircncia artificial

Acquire - Eacute um produto bastante avanccedilado do ponto de vista tecnoloacutegico face aosconcorrentes no sentido em que permite uma separaccedilatildeo evidente entre a camada aplicaci-onal e a camada de apresentaccedilatildeo Promove uma separaccedilatildeo cliente-servidor e disponibilizaum Software Development Kit (SDK) que permite a integraccedilatildeo com outras aplicaccedilotildees

De acordo com Acquired Intelligence o produto estaacute sujeito a uma licenccedila de utilizaccedilatildeoe eacute disponibilizado ainda um serviccedilo online de alojamento de sistemas periciais omyAcquire disponiacutevel mediante uma subscriccedilatildeo semestral

231 Casos de estudo

Os sistemas periciais mais especificamente aqueles que satildeo baseados em sistemas webtecircm conhecido nos uacuteltimos anos uma evoluccedilatildeo gradual e consistente devido em grandeparte agrave simplicidade e disponibilidade que possibilitam Podem ser acedidos a partir dequalquer local no mundo 24 horas por dia e sem qualquer tipo de limitaccedilatildeo bastando

25

CAPIacuteTULO 2 ESTADO DA ARTE

apenas que se garanta o acesso agrave rede onde o sistema pericial estaacute colocado

As interfaces satildeo mais apelativas e chegam a fazer uso de imagens e outros meiosgraacuteficos ou de multimeacutedia cujo objectivo natildeo eacute apenas o de tornar os sistemas maisinteressantes mas tambeacutem mais eficazes jaacute que auxiliam de forma mais simples eesclarecida Os controlos utilizados as caixas de interacccedilatildeo e ateacute mesmo as explicaccedilotildees ejustificaccedilotildees (nos sistemas que o permitam) ajudam a ter uma ideia cada vez mais clarasobre o funcionamento dos sistemas obtendo-se assim melhores resultados

Alguns dos casos de estudo de sistemas periciais baseados em sistemas web existentesactualmente tecircm como um dos seus maiores objectivos a disponibilidade global dosmesmos (satildeo disponibilizados normalmente atraveacutes da internet) e os mais conhecidossatildeo

bull Landfill Operation Management Advisor (LOMA)

bull Medical Diagnosis Support System (MDSS)

bull Whale watcher

2311 LOMA - Landfill Operation Management Advisor

O LOMA eacute um sistema pericial online que analisa problemas operacionais falhas eacidentes em aterros comuns Aleacutem disso o LOMA fornece conselhos sobre como umgestor pode evitar esses problemas e em caso de ocorrecircncia sobre como diminuir oimpacto das suas consequecircncias Encontra-se disponiacutevel em httplomacivil

duthgr e eacute de utilizaccedilatildeo puacuteblica

O sistema pericial foi desenvolvido por Dokas recorrendo agraves ferramentas WebFlex eLPA ProWeb Server

A arquitectura da aplicaccedilatildeo web pode ser visualizada na figura 5 e consiste nosseguintes moacutedulos Dokas (2005)

bull Sistema pericial LOMA

bull Moacutedulo de aconselhamento

bull Moacutedulo operacional de problemas-causa

bull Eventos inicias

bull Problemas operacionais

26

23 WEB EXPERT SYSTEMS

bull Moacutedulo de explicaccedilotildees

bull Moacutedulo de submissatildeo de conhecimento e informaccedilatildeo

Figura 5 Arquitectura do LOMA

O moacutedulo mais relevante para o acircmbito desta dissertaccedilatildeo eacute o ldquoSistema pericial LOMArdquoe eacute tambeacutem o moacutedulo mais importante para a aplicaccedilatildeo LOMA

Eacute composto por vinte e quatro sub-moacutedulos cada um deles responsaacutevel por analisarum tipo especiacutefico de problema e ainda por um sub-moacutedulo extra que eacute responsaacutevel pelocontrolo do sistema

O sub-moacutedulo extra questiona o utilizador que descreve o problema (ver 6 e 7) ecom base na sua descriccedilatildeo apresenta uma lista de possiacuteveis problemas (ver 8) Quandoo utilizador selecciona um problema da lista de resultados eacute activado o respectivo sub-moacutedulo que por sua vez iraacute fornecer informaccedilatildeo de como prevenir o problema ou nocaso de este jaacute ter acontecido como minimizar as suas consequecircncias (ver 9)

27

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 6 Paacutegina inicial do sistema pericial LOMA

Figura 7 Sub-moacutedulo extra

28

23 WEB EXPERT SYSTEMS

Figura 8 Sugestatildeo de problemas do sub-moacutedulo extra

Figura 9 Sub-moacutedulo especializado

29

CAPIacuteTULO 2 ESTADO DA ARTE

2312 MDSS - Medical Diagnosis Support System

O MDSS eacute um sistema pericial utilizado na aacuterea da medicina e foi desenvolvido paraajudar no diagnoacutestico e tratamento da diabetes A diabetes pode afectar vaacuterias partes docorpo provocando diversos sintomas e complicaccedilotildees Quando detectada atempadamenteeacute mais facilmente controlaacutevel e menos perigosa Por todos estes motivos foi criado umsistema pericial online o MDSS que permite inferir sobre uma seacuterie de sintomas parachegar a um diagnoacutestico

Na opiniatildeo de Filho uma das vantagens deste sistema pericial eacute que possibilita quemeacutedicos em ambientes rurais ou perigosos e de difiacutecil acesso com recursos limitadospossam aceder ao sistema pericial de forma a terem uma ajuda no diagnoacutestico destadoenccedila O que comeccedilou como um sistema pericial vocacionado e orientado para adiabetes rapidamente cresceu e tornou-se algo mais do que isso sendo hoje utilizadocomo sistema de diagnoacutestico para vaacuterias doenccedilas

No que diz respeito agrave sua arquitectura o MDSS foi desenvolvido em LPA Prolog

recorrendo aos moacutedulos ProWeb e ProData e utilizando Open Data Base Connectivity

(ODBC) para acesso agrave base de dados Utiliza loacutegica fuzzy para raciociacutenio sobre incertezaspara lidar com conhecimento parcial

O sistema eacute composto por trecircs moacutedulos No primeiro moacutedulo eacute possiacutevel um es-pecialista definir sintomas exames cliacutenicos exames de laboratoacuterio e exames relativosa uma ou mais doenccedilas Eacute ainda possiacutevel a atribuiccedilatildeo de valores (pesos estatiacutesticos)ou de resultados que definem uma doenccedila Isso permite por exemplo que a pressatildeoarterial possa estar associada ao diagnoacutestico de pressatildeo alta diabetes gravidez de riscoou insuficiecircncia renal entre outros Informaccedilotildees de consultas anteriores e exames satildeoautomaticamente ligadas e analisadas sob fundamentaccedilatildeo loacutegico temporal

No segundo moacutedulo o sistema permite consultas atraveacutes do qual os dados relevantespara o paciente satildeo registados e relacionados com outros exames correlacionados Durantea fase de diagnoacutestico o sistema pode sugerir outros testes ou procedimentos para entatildeoinferir se haacute outros riscos e doenccedilas a serem investigados

No terceiro moacutedulo eacute efectuado o diagnoacutestico O sistema iraacute localizar automatica-mente os diagnoacutesticos jaacute registados noutras consultas incluindo aquelas feitas por outrosmeacutedicos Aleacutem disso o sistema pesquisa niacuteveis de doenccedilas de acordo com os resultadosdos exames Pode tambeacutem sugerir uma investigaccedilatildeo mais aprofundada sempre que osdados natildeo sejam suficientes para garantir um diagnoacutestico preciso

30

23 WEB EXPERT SYSTEMS

2313 Whale watcher

O sistema pericial Whale watcher eacute um sistema de demonstraccedilatildeo da plataforma AcquireEste e outros sistemas periciais similares estatildeo disponiacuteveis na paacutegina da Acquire (httpwwwaiinccademos)

Figura 10 Paacutegina principal do sistema pericial Whale Watcher

Figura 11 Paacutegina final do sistema pericial Whale Watcher

Atraveacutes das demonstraccedilotildees facultadas pela Acquire natildeo eacute possiacutevel concluir se existealgum tipo de sistema de explicaccedilotildees No entanto no final de cada sessatildeo do sistemapericial eacute possiacutevel consultar um resumo (ver 11) que funciona como uma explicaccedilatildeomuito baacutesica da inferecircncia realizada pelo sistema pericial jaacute que se limita apenas amostrar os factos que foram respondidos durante a sessatildeo

31

3Ferramentas utilizadas

Durante o desenvolvimento deste trabalho foi necessaacuterio decidir sobre quais as ferramen-tas a utilizar para a criaccedilatildeo do novo sistema pericial Atendendo a algumas caracteriacutesticasproacuteprias e objectivos traccedilados era necessaacuterio utilizar alguma especificidade na escolhapara garantir a exclusividade do resultado Desenvolvimento web capacidade de pro-ceder a inferecircncia sobre conhecimento representado atraveacutes de regras simplicidade deutilizaccedilatildeo actualidade da tecnologia entre outras caracteriacutesticas influenciaram significa-tivamente nesta escolha

Entre os vaacuterios ambientes de desenvolvimento disponiacuteveis a opccedilatildeo recaiu sobre umque para aleacutem de simples e eficiente era utilizado regularmente em situaccedilatildeo profissi-onal pelo criador deste projecto pelo que aqui foi relativamente simples chegar a umaconclusatildeo

Indo de encontro agraves razotildees que levaram agrave escolha da linguagem do motor de inferecircnciautilizada no projecto que deu origem a este trabalho tambeacutem aqui foi escolhida umalinguagem que possibilita o backtracking de forma eficaz e simplificada caracteriacutesticaessencial para o bom funcionamento do motor de inferecircncia e que contribui largamentepara o sucesso do sistema pericial

31 Ambiente de desenvolvimento

O ambiente de desenvolvimento e respectiva linguagem de programaccedilatildeo utilizados para acriaccedilatildeo do interface do sistema pericial foram seleccionados levando em conta algunsrequisitos e factores considerados necessaacuterios e ateacute mesmo essenciais para a soluccedilatildeo finalA listagem dessas caracteriacutesticas eacute a seguinte

bull Baixo custo de disponibilizaccedilatildeo

33

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

bull Independecircncia do sistema operativo

bull Simples escalabilidade

bull Visual apelativo

Com base nesta lista de caracteriacutesticas consideradas desejaacuteveis ou ateacute mesmo essen-ciais para a soluccedilatildeo final e considerando tambeacutem a jaacute longa experiecircncia de utilizaccedilatildeonesta plataforma foi escolhida a linguagem Java J2EE utilizando a framework Icefaces eo portal Glassfish Podemos considerar para esta escolha uma seacuterie de paracircmetros paraaleacutem dos jaacute evidenciados

bull O J2EE eacute uma linguagem independente do sistema operativo

bull O J2EE caracteriza-se pela sua modularidade

bull Glassfish eacute um portal open source com suporte para J2EE

bull Icefaces eacute uma framework JavaServer Faces (JSF) compatiacutevel com o Glassfish

bull Icefaces permite a criaccedilatildeo de interfaces graacuteficos de uma forma simples

bull Existecircncia de boa documentaccedilatildeo relativamente a todos os produtos

Para aleacutem disto podemos ainda considerar e referir outros produtos e componentesque natildeo sendo menos importantes tambeacutem foram utilizados durante o desenvolvimentodeste trabalho A lista completa de ferramentas eacute a seguinte

bull Java J2EE 60

bull Eclipse Galileo (com plugins para Glassfish e svn) - Integrated Development

Environment (IDE) para Java

bull Icefaces 182

bull GlassFish - portal

bull Visual SVN Server e Tortoise - controlo de versotildees

bull MikTeX - latex

bull TexnicCenter - IDE para latex

34

32 MOTOR DE INFEREcircNCIA

32 Motor de inferecircncia

Em qualquer sistema pericial o motor de inferecircncia eacute o cerne do mesmo O seu desenvol-vimento obriga habitualmente a um esforccedilo e concentraccedilatildeo maiores porque aqui residea forma como o sistema iraacute percorrer as vaacuterias etapas necessaacuterias para alcanccedilar umasoluccedilatildeo

Tambeacutem neste trabalho o motor de inferecircncia eacute um ponto essencial e a sua implemen-taccedilatildeo teve um papel destacado no processo de anaacutelise realizado Actualmente existemalguns produtos que podem ser utilizados integral ou parcialmente como motor deinferecircncia de um sistema pericial esses produtos podem ser frameworks ou shells ouainda Business Rule Management System (BRMS)

Os termos framework e shell satildeo muitas vezes utilizados como sinoacutenimo umaframework eacute uma abstracccedilatildeo que permite agregar formas de resoluccedilatildeo de problemascomuns uma shell eacute similar no sentido em que disponibiliza uma camada de abstracccedilatildeouma ldquoconchardquo que encapsula os serviccedilos

No sentido de tentar reutilizar um produto jaacute existente foi elaborado um estudo acercados actuais produtos e das suas caracteriacutesticas A abordagem seguida para esse estudo foiuma abordagem por fases em que gradualmente se foi estreitando o conjunto de soluccedilotildeesaceitaacuteveis mediante a utilizaccedilatildeo de alguns criteacuterios

Foram consideradas cinco fases

bull Fase I - Recolha de candidatos

bull Fase II - Requisitos base

bull Fase III - Viabilidade econoacutemica

bull Fase IV - Viabilidade teacutecnica

bull Fase V - Prova de conceito

321 Fase I - Recolha de candidatos

A fase I teve como objectivo recolher alguns dos actuais produtos que possuam caracteriacutes-ticas desejadas para um sistema deste geacutenero Natildeo foram considerados alguns produtosque satisfaziam os requisitos mas que natildeo permitem uma integraccedilatildeo com Java Foramidentificados os seguintes produtos como potenciais integradores do projecto

35

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

Produto BRMS FrameworkDrools X XHammurapi Rules XILog XJCLIPS XJESS XJEOPS XJRuleEngine XOpenL Tablets XOpenRules XProva language XYprolog XZilonis X

Tabela 1 Listagem de produtos da Fase I

Drools - ou JBoss Rules eacute um produto open source da RedHat (2010) Define umalinguagem especiacutefica para as regras Eacute desenvolvido em Java e utiliza um mecanismo deencadeamento directo baseado em regras natildeo implementa justificaccedilotildees

Hammurapi Rules - eacute um produto desenvolvido em Java por Hammurapi GroupEste motor de inferecircncia utiliza a sintaxe da linguagem Java para definiccedilatildeo de regras Eacutepossiacutevel definir grupos de regras em XML e estaacute disponiacutevel um plug-in para Eclipse quepermite a ediccedilatildeo destes grupos Suporta encadeamento directo e indirecto

ILOG - WebSphere ILOG Business Rule Management Systems eacute como o nome indicaum BRMS eacute um produto da IBM (2010) que requer licenciamento adequado Eacute necessaacuteriaa instalaccedilatildeo e configuraccedilatildeo de alguns componentes de forma a que o produto possa serutilizado por exemplo Rule Team Server Rule Execution Server Http server entreoutros

JCLIPS - eacute um produto open source mantido por uma comunidade e permite aintegraccedilatildeo entre Java e CLIPS O CLIPS ldquoC Language Integrated Production Systemrdquo eacuteum sistema pericial desenvolvido em linguagem C Maarten Menken (2010)

JESS - eacute um produto comercial da Sandia National Laboratories desenvolvidoem Java Eacute necessaacuterio adquirir licenccedilas para efectivar a utilizaccedilatildeo do mesmo ErnestFriedman-Hill (2010)

JEOPS - Java Embedded Object Production System (JEOPS) eacute uma framework open

source desenvolvida num acircmbito acadeacutemico por Carlos Figueira Filho

36

32 MOTOR DE INFEREcircNCIA

JRuleEngine - eacute um produto open source desenvolvido em Java e mantido porMcarniel (2010) As regras satildeo compiladas para classes Java

OpenL Tablets - eacute um BRMS open source cuja principal vantagem eacute a integraccedilatildeocom a folhas de caacutelculo Excel Permite a utilizaccedilatildeo de tabelas de decisatildeo no formatoExcel OpenL (2010)

OpenRules - eacute um produto da OpenRules Inc sujeito a licenccedila de utilizaccedilatildeo Eacutetotalmente orientado para a folha de caacutelculo Excel da Microsoft

Prova language - eacute um produto open source desenvolvido em Java por KozlenkovAlex and Paschke Disponibiliza uma linguagem muito semelhante ao prolog Eacute umproduto bastante direccionado para a comunicaccedilatildeo entre agentes expondo inclusiveacute umsistema multi-agente

Yprolog - eacute um produto open source desenvolvido em Java por Boris van SchootenEacute uma reacuteplica do prolog desenvolvida totalmente em Java Foi evoluindo ao longo dotempo a partir de produtos como o WProlog e o XProlog

Zilonis - eacute um produto desenvolvido em Java por Elie Levy O formato das regras eacutesemelhante ao CLIPS

322 Fase II - Requisitos base

A fase II teve como objectivo filtrar a lista de candidatos no sentido de excluir produtosque natildeo se enquadrem directamente com os requisitos do sistema a desenvolver Assimsendo foram excluiacutedos alguns dos candidatos jaacute indicados e os principais motivos daexclusatildeo satildeo

bull Natildeo permitirem a integraccedilatildeo com um portal

bull Formato das regras eacute fechado natildeo possibilitando possiacuteveis e futuras evoluccedilotildees

bull Natildeo disponibilizaccedilatildeo de acesso aos serviccedilos internos mais concretamente natildeofornecem uma framework de controlo Desta forma natildeo eacute possiacutevel reutilizar partesdo motor de inferecircncia ou do sistema de gestatildeo de regras sem que este seja feitoatraveacutes do proacuteprio produto

Candidatos excluiacutedos pelas razotildees atraacutes expostas

37

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProdutoILogOpenRulesOpenL Tablets

Tabela 2 Listagem de produtos excluiacutedos na Fase II

323 Fase III - Viabilidade econoacutemica

Sendo um paracircmetro com importacircncia relativa dada a possiacutevel aplicaccedilatildeo comercial deum produto baseado neste trabalho natildeo deixa de ser importante para o estudo realizadoDesta forma a fase III teve como objectivo filtrar a lista de resultados no sentido de excluirprodutos que natildeo sejam economicamente viaacuteveis quer por motivos de licenciamentocomercial quer por motivos de licenccedilas de utilizaccedilatildeo

Foram entatildeo considerados os produtos constantes da tabela 3 como natildeo viaacuteveis nosentido em que existem produtos open source similares para o efeito pretendido

ProdutoDroolsJESS

Tabela 3 Listagem de produtos excluiacutedos na Fase III

324 Fase IV - Viabilidade teacutecnica

Esta fase teve por objectivo filtrar a lista de resultados de forma a que os produtos natildeoviaacuteveis do ponto de vista teacutecnico natildeo sejam considerados para a escolha final

Os produtos que natildeo foram considerados viaacuteveis por questotildees teacutecnicas satildeo

38

32 MOTOR DE INFEREcircNCIA

Produto RazatildeoJEOPS Documentaccedilatildeo disponiacutevel bastante vaga projecto desconti-

nuado e natildeo estaacutevelJRuleEngine As regras satildeo compiladas para Java natildeo permite escalabili-

dade sem compilar o projectoZilonis Natildeo estaacute preparado para ser utilizado como framework ape-

nas permite uma aplicaccedilatildeo stand-alone

Hammurapi Rules As regras satildeo compiladas para Java natildeo permite escalabili-dade sem compilar o projecto

Tabela 4 Listagem de produtos excluiacutedos na Fase IV

325 Fase V - Prova de conceito

Nesta uacuteltima fase restaram trecircs produtos JClips Prova e YProlog Apoacutes a realizaccedilatildeode uma prova de conceito com estes produtos foram encontradas algumas vantagens edesvantagens Esta anaacutelise pode ser consultada nas tabelas 5 6 e 7

JClipsVantagens Desvantagens

bull Linguagem CLIPS bull Apenas permite 1 execuccedilatildeo deforma a permitir vaacuterias utilizaccedilotildeesdo motor de inferecircncia eacute necessaacuterioimplementar loacutegica especiacutefica

bull Ausecircncia de documentaccedilatildeo

Tabela 5 JClips - Vantagens e desvantagens

39

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProvaVantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza exemplos de uti-lizaccedilatildeo

bull Uacuteltima actualizaccedilatildeo em 10 deJunho de 2010

bull Instaacutevel

bull Bastante ocupaccedilatildeo de recursos(CPU e memoacuteria)

bull Disponibilizaccedilatildeo de pouca docu-mentaccedilatildeo

bull Ao invocar um predicado natildeo ins-tancia apenas as variaacuteveis na pri-meira vez mas devolve uma lista detodos os resultados possiacuteveis simi-lar ao predicado findall do LPA Pro-log

Tabela 6 Prova - Vantagens e desvantagens

YProlog

Vantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza documentaccedilatildeo eexemplos de utilizaccedilatildeo

bull Operaccedilotildees baacutesicas do Prologtecircm o mesmo comportamento

bull Uacuteltima actualizaccedilatildeo em 21 de Abrilde 2006

Tabela 7 YProlog - Vantagens e desvantagens

326 Conclusatildeo e fundamentaccedilatildeo da escolha

Tratando-se do nuacutecleo do sistema pericial e sabendo que natildeo existe actualmente ummotor de inferecircncia que corresponda totalmente aos requisitos necessaacuterios foi decidido

40

32 MOTOR DE INFEREcircNCIA

desenvolver um motor de inferecircncia de raiz recorrendo a um produto que permitisse umdesenvolvimento raacutepido e com uma curva de aprendizagem pouco acentuada Para tale depois do estudo realizado perante as vaacuterias hipoacuteteses disponiacuteveis foi decidido optarpelo YProlog

Na uacuteltima fase do estudo apresentado entre os candidatos disponiacuteveis este aparececomo o mais viaacutevel quer pelos aspectos de adaptabilidade funcionamento e facilidadede utilizaccedilatildeo quer ainda pelo nuacutemero reduzido de desvantagens encontradas face aosrestantes

41

4Wexsys

Este trabalho baseia-se na criaccedilatildeo de um sistema pericial baseado no GISPSA e oobjectivo principal passa pela integraccedilatildeo do novo sistema num ambiente de acesso globalou mais especificamente num portal web Para atingir tal meta foi descrito nos capiacutetulosanteriores quais as ferramentas a utilizar sendo que agora vamos compreender como eacuteque a soluccedilatildeo em si foi desenvolvida

O sistema que nasceu a partir desta implementaccedilatildeo foi baptizado com o nome wexsys- ldquoWeb Expert Systemrdquo Partindo da base do GISPSA o wexsys possui um motor deinferecircncia totalmente novo criado especificamente no acircmbito deste trabalho e ainda umabase de conhecimento Foi decidido adoptar o princiacutepio de utilizaccedilatildeo de regras para arepresentaccedilatildeo da base de conhecimento

De referir ainda que o raciociacutenio utilizado no motor de inferecircncia segue uma filosofiado tipo backward chaining princiacutepio jaacute descrito nos capiacutetulos anteriores

Detentor de uma interface considerada actual para os paracircmetros utilizados nos diasque correm este novo sistema pericial foi criado atraveacutes da utilizaccedilatildeo de J2EE e Icefaces

que lhe conferem um aspecto renovado e extremamente apelativo aos utilizadores Satildeoutilizadas teacutecnicas tais como Ajax que providenciam uma dinacircmica de funcionamentomuito interessante do ponto de vista da utilizaccedilatildeo

41 Arquitectura global

A soluccedilatildeo foi projectada de acordo com a arquitectura J2EE ou seja utilizando uma sepa-raccedilatildeo em moacutedulos ou componentes Foram criados dois moacutedulos principais pWexsysEAR

e WexsysEAR estes moacutedulos satildeo a separaccedilatildeo da aplicaccedilatildeo em duas grandes camadas acamada web e a camada de negoacutecio

Esta separaccedilatildeo permite a instalaccedilatildeo da aplicaccedilatildeo num uacutenico servidor ou uma instala-

43

CAPIacuteTULO 4 WEXSYS

ccedilatildeo distribuiacuteda por vaacuterios servidores possibilitando tambeacutem a utilizaccedilatildeo de clusters Estaseparaccedilatildeo torna-se bastante uacutetil se pretendermos expandir a aplicaccedilatildeo para uma utilizaccedilatildeomais intensa ao niacutevel dos acessos A possibilidade de instalaccedilatildeo em muacuteltiplas maacutequinaspermite a obtenccedilatildeo de melhores resultados quando confrontada com a utilizaccedilatildeo de umambiente com apenas um uacutenico servidor

Figura 12 Arquitectura da soluccedilatildeo

411 Moacutedulo pWexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente visual da soluccedilatildeo tambeacutem conhecida porPresentation Layer Este moacutedulo eacute composto pelos componentes descritos na figura 13

Figura 13 Arquitectura do moacutedulo visual

bull pWexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

44

41 ARQUITECTURA GLOBAL

bull wWexsysGUI - componente principal que conteacutem as JSPrsquos servlet e managed

beans

bull jWexsysWebClient - classes utilizadas na camada visual

bull TGGraphLayout - componente externo que disponibiliza um controlo que permitea definiccedilatildeo de um grafo este componente vai ser descrito na secccedilatildeo 4133

bull jWexsysLog - permite o registo da ocorrecircncia de erros

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

412 Moacutedulo WexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente de negoacutecio da aplicaccedilatildeo tambeacutem conhecidapor Business Layer eacute o centro de controlo de toda a soluccedilatildeo Este moacutedulo eacute compostopor alguns componentes como podemos ver na figura 14

Figura 14 Arquitectura do moacutedulo de negoacutecio

bull WexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

bull eWexsys - componente principal responsaacutevel pela criaccedilatildeo dos serviccedilos

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

bull jWexsysUtils - classes utilitaacuterias internas

45

CAPIacuteTULO 4 WEXSYS

bull jWexsysLog - componente auxiliar para permitir o tratamento de erros

bull jWexsysEngine - responsaacutevel pela implementaccedilatildeo do motor de inferecircncia

bull YProlog - permite a interpretaccedilatildeo de coacutedigo prolog Este componente vai serdescrito na secccedilatildeo 4133

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos

Como jaacute foi referido o wexsys foi desenvolvido respeitando a arquitectura J2EE como talos componentes que integram a aplicaccedilatildeo foram tambeacutem criados seguindo esse conceitoTodos os componentes foram estruturados de forma a poderem ser reutilizados com omiacutenimo de dependecircncias e toda a aplicaccedilatildeo foi projectada de forma a retirar o maacuteximopartido desta divisatildeo

Podemos ver na figura 15 um diagrama que permite verificar de que forma os compo-nentes estatildeo a ser utilizados O diagrama tem trecircs agrupamentos que pretendem descreverutilizando uma linguagem Object Oriented (OO) a sua visibilidade Os temos publicprotected e private satildeo utilizados como analogias aos respectivos conceitos na linguagemOO

4131 Camada de acesso puacuteblico

A camada de acesso puacuteblico expotildee os meacutetodos de interacccedilatildeo com a aplicaccedilatildeo sendocomposta por trecircs componentes wWexsysGUI jWexsysWebClient e eWexsysClient

Figura 15 Wexsys - Integraccedilatildeo dos componentes

46

41 ARQUITECTURA GLOBAL

Os componentes eWexsysClient e jWexsysWebClient contecircm interfaces de ligaccedilatildeoentre a camada visual e a camada de negoacutecio

eWexsysClient - disponibiliza as classes designadas Data Transfer Object (DTO) eainda o interface para os serviccedilos disponibilizados pelo wexsys

jWexsysWebClient - disponibiliza classes que caracterizam os conceitos de negoacuteciomas que contecircm atributos adicionais A razatildeo da existecircncia deste componente justificandashsecom a eventual expansatildeo da aplicaccedilatildeo para uma nova camada visual Os exemplos decoacutedigo 1 e 2 permitem-nos observar uma utilizaccedilatildeo de atributos extra na classe visualpara controlo de ocorrecircncia de erros

1 p u b l i c c l a s s RuleView

3 p r i v a t e i n t l e v e l = 0

5 Rule i d e n t i f i e r

7 p r i v a t e S t r i n g i d e n t i f i e r = n u l l

9 p r i v a t e S t r i n g i d e n t i f i e r E r r = n u l l

11 p r i v a t e b o o l e a n i d e n t i f i e r I n E r r = f a l s e

13

Rule d e s c r i p t i o n

15

p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

17

p r i v a t e S t r i n g d e s c r i p t i o n E r r = n u l l

19

p r i v a t e b o o l e a n d e s c r i p t i o n I n E r r = f a l s e

21

Coacutedigo 1 Excerto da classe RuleView

p u b l i c c l a s s Rule implemen t s S e r i a l i z a b l e

47

CAPIacuteTULO 4 WEXSYS

2

p r i v a t e i n t l e v e l = 0

4

Rule i d e n t i f i e r

6

p r i v a t e S t r i n g i d e n t i f i e r = n u l l

8

10 Rule d e s c r i p t i o n

12 p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

14 Coacutedigo 2 Excerto da classe Rule

O outro componente envolvido na camada puacuteblica o wWexsysGUI eacute o responsaacute-vel pela interacccedilatildeo com aplicaccedilatildeo Eacute o componente que disponibiliza as paacuteginas e oresponsaacutevel pela coordenaccedilatildeo de todo o processo web

4132 Camada de acesso protegido

A camada de acesso protegido disponibiliza componentes que podem ser utilizados pelosdois moacutedulos mas que natildeo estatildeo disponiacuteveis para o exterior Neste caso existe apenas umcomponente nestas condiccedilotildees o jWexsysLog cuja funccedilatildeo eacute assegurar o registo de erros

jWexsysLog - componente responsaacutevel pelo registo de erros utiliza internamente aframework log4j

4133 Camada de acesso privado

A camada de acesso privado incluiacute todos os componentes responsaacuteveis por processa-mento interno Os componentes responsaacuteveis pelo processamento interno satildeo eWexsysjWexsysEngine e jWexsysUtils Tambeacutem incluiacutedos no conceito de processamento internoestatildeo os componentes TGGraphLayout e YProlog

eWexsys - eacute o componente responsaacutevel pela implementaccedilatildeo do interface de negoacuteciodelegando as funcionalidades em classes especializadas ou no componente responsaacutevelpela integraccedilatildeo com o nuacutecleo da aplicaccedilatildeo o jWexsysEngine

48

41 ARQUITECTURA GLOBAL

jWexsysEngine - eacute o componente responsaacutevel pelo nuacutecleo da aplicaccedilatildeo ou sejaeacute o responsaacutevel pela integraccedilatildeo do java com o prolog e vice-versa Eacute o componenteresponsaacutevel pelo mapeamento das classes de java para as classes de comunicaccedilatildeo com oprolog

jWexsysUtils - eacute um componente auxiliar que disponibiliza e encapsula utilitaacuteriospara uma melhor organizaccedilatildeo interna da aplicaccedilatildeo

TGGraphLayout - eacute um componente tambeacutem conhecido por TouchGraph eacute umprojecto mantido por uma comunidade e estaacute disponiacutevel no sourceforge AlexanderShapiro (2010)

YProlog - este componente foi o escolhido durante a fase de estudo da implementaccedilatildeopara ser a base do motor de inferecircncia (321)

4134 Fluxo de invocaccedilatildeo

A aplicaccedilatildeo foi desenvolvida de forma a que todos os pedidos seguissem um mesmo fluxode invocaccedilatildeo de forma a uniformizar o processo Na figura 16 temos uma relaccedilatildeo dasclasses principais da aplicaccedilatildeo

Figura 16 Diagrama de classes principais

O fluxo de invocaccedilatildeo inicia-se atraveacutes do WexsysBean no caso de funcionalidades

49

CAPIacuteTULO 4 WEXSYS

do motor de inferecircncia ou atraveacutes do WexsysKBBean no caso de funcionalidades dabase de conhecimento Ambos os managed beans delegam no WexsysViewManager querecorrendo agrave classe WexsysViewHelper converte as classes view para classes DTO Aclasse WexsysViewManager por sua vez delega no session bean WexsysSessionBean quemediante o tipo de pedido delega nas classes de validaccedilatildeo ou nas classes do motor deinferecircncia WexsysEngineImpl

Este processo pode ser observado na figura 17 que representa um diagrama de sequecircn-cia exemplificativo do fluxo de invocaccedilatildeo geneacuterico

Figura 17 Diagrama de sequecircncia do fluxo de invocaccedilatildeo

414 Portal

O wexsys tem como ponto de entrada na aplicaccedilatildeo uma paacutegina inicial que permite aidentificaccedilatildeo do utilizador no sistema pericial Como se trata de um trabalho acadeacutemico aparte de validaccedilatildeo e autenticaccedilatildeo de utilizadores natildeo foi contemplada como tal eacute possiacutevelautenticar-se com qualquer utilizador Para aleacutem da autenticaccedilatildeo eacute ainda possiacutevel indicarpara a sessatildeo actual qual o miacutenimo grau de confianccedila para a apresentaccedilatildeo de uma resposta

50

41 ARQUITECTURA GLOBAL

O endereccedilo da aplicaccedilatildeo respeita o seguinte formato httpservidorportawWexsysGUI onde servidor e porta satildeo os dados de configuraccedilatildeo do Portal Server

Figura 18 Wexsys - Paacutegina inicial

Quando o utilizador inicia a utilizaccedilatildeo do sistema ficam disponiacuteveis trecircs funcionali-dades que seratildeo referidas nas secccedilotildees seguintes

4141 Templates

Um dos aspectos comuns a toda a aplicaccedilatildeo eacute o aspecto graacutefico tendo este sido imple-mentado recorrendo a Facelets Um template facelets define-se pela criaccedilatildeo de umapaacutegina modelo em que existem zonas dinacircmicas Este conceito eacute conhecido de outrastecnologias por exemplo Web Parts ou Master Pages desenvolvidos pela Microsoft

O coacutedigo 3 permite ver como foi desenvolvido o template principal

lthtml

2 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

4 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

6

lt i c e o u t p u t D e c l a r a t i o n

8 doc typeRoo t =HTML

d o c t y p e P u b l i c =minus W3C DTD XHTML 1 0 S t r i c t EN

10 doc typeSys tem = h t t p www w3 org TR xhtml1 DTD xhtml1minus s t r i c t

d t d gt

51

CAPIacuteTULO 4 WEXSYS

12 lthead gt

lt t i t l e gtwexsys minus p a g e T i t l e lt t i t l e gt

14 [ meta t a g s e l i n k t o c s s f i l e s ]

lt head gt

16 ltbody gt

lt f view l o c a l e = f a c e s C o n t e x t e x t e r n a l C o n t e x t r e q u e s t L o c a l e gt

18 lt i c e l o a d B u n d l e basename =com wexsys g u i r e s o u r c e s bund leRes

v a r = bund leRes gt

lt i c e form p a r t i a l S u b m i t = t r u e gt

20 lt d i v i d = wrapper gt

lt d i v i d = logo gt

22 lth1gtlta h r e f = gtWExSys lt a gt lt h1gt

lth2gtweb e x p e r t system lt h2gt

24 lt div gt

lt d i v i d = h e a d e r gt

26 lt d i v i d =menugt

[ Menu c o n t e n t ]

28 lt div gt

lt div gt

30 lt div gt

lt d i v i d = page gt

32 lt d i v i d = c o n t e n t gt

lt u i i n s e r t name= c o n t e n t gt

34 D e f a u l t C o n t e n t

lt u i i n s e r t gt

36 lt div gt

lt d i v i d = s i d e b a r gt

38 lt u i i n s e r t name= s i d e b a r gt

S i d e b a r c o n t e n t

40 lt u i i n s e r t gt

lt div gt

42 lt d i v s t y l e = c l e a r bo th gt

lt div gt

44 lt div gt

lt d i v i d = f o o t e r gt

46 F o o t e r c o n t e n t

lt div gt

48 lt i c e form gt

52

41 ARQUITECTURA GLOBAL

lt f view gt

50 lt body gt

lt html gt Coacutedigo 3 Coacutedigo do template principal do portal

Na listagem de coacutedigo 3 podemos ver a vermelho as aacutereas que foram definidas comodinacircmicas no coacutedigo 4 tambeacutem a vermelho podemos ver as respectivas aacutereas num cenaacuteriode implementaccedilatildeo de uma paacutegina

1 lt u i c o m p o s i t i o n

t e m p l a t e =WEBminusINF incminust e m p l a t e s mainminust e m p l a t e j s p x

3 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

5 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

7

9 lt u i d e f i n e name= c o n t e n t gt

[ ]

11 lt u i d e f i n e gt

13 lt u i d e f i n e name= s i d e b a r gt

[ ]

15 lt u i d e f i n e gt

17 lt u i c o m p o s i t i o n gt Coacutedigo 4 Coacutedigo da paacutegina inicial do portal

415 Suporte multi-liacutengua

O wexsys foi desenvolvido considerando um factor bastante relevante numa aplicaccedilatildeoactual o suporte multi-liacutengua Este suporte eacute uma das vantagens do sistema e foiimplementado recorrendo a ficheiros de recursos (properties) de forma a exteriorizartodos os textos de saiacuteda

Desta forma para dar suporte a uma nova liacutengua apenas teremos que traduzir os textosnos ficheiros de recursos e de alterar a aplicaccedilatildeo de forma a permitir seleccionar o idioma

53

CAPIacuteTULO 4 WEXSYS

A alteraccedilatildeo a ser efectuada na aplicaccedilatildeo eacute muito simples jaacute que basta passar o valor doatributo ldquolocalerdquo da tag ldquofviewrdquo como sendo a liacutengua pretendida

42 Motor de inferecircncia

Para este trabalho foi definida a criaccedilatildeo de um motor de inferecircncia de raiz que pudesseefectivamente substituir o utilizado no sistema base O novo motor desenvolvido teraacute quesuportar uma seacuterie de especificaccedilotildees a comeccedilar pela capacidade de operar num ambientemulti-utilizador

O motor de inferecircncia deve estar preparado para lidar com conhecimento incerto foiescolhido a teacutecnica dos factores de certeza por ser uma teacutecnica simples de reproduzir eeficaz na sua utilizaccedilatildeo

Para aleacutem disto e tratando-se um sistema pericial o motor de inferecircncia deveraacuteser independente da base de conhecimento utilizada e deveraacute idealmente suportar umsistema de explicaccedilotildees que responda a eventuais pedidos por parte dos utilizadores quepretendam ver mais detalhadamente quais as regras que conduziram agrave conclusatildeo obtidaTambeacutem seraacute possiacutevel saber porque eacute que determinada questatildeo eacute colocada (explicaccedilotildeesvulgarmente denominadas de como e porquecirc)

421 Multi-utilizador

Quando se pretende que um sistema pericial tenha uma utilizaccedilatildeo mono-posto (comoera o caso do GISPSA) apenas eacute criada uma instacircncia por cada vez que eacute chamado omotor de inferecircncia No nosso caso tendo sido estabelecido que o novo sistema teriaque permitir uma utilizaccedilatildeo multi-utilizador eacute necessaacuterio desenvolver os mecanismosnecessaacuterios para permitir execuccedilotildees de vaacuterias instacircncias para o novo motor de inferecircncia

A classe WexsysEngineFactory5 eacute a responsaacutevel por criar uma instacircncia do motorde inferecircncia por cada utilizador que inicia a utilizaccedilatildeo do sistema Esta classe tem ummeacutetodo do tipo static o meacutetodo getInferenceEngine que tem como paracircmetros de entradaum utilizador e devolve uma instacircncia do motor de inferecircncia As instacircncias activas satildeoguardadas internamente e sempre que eacute invocado o meacutetodo eacute obtida a respectiva instacircnciaNo caso de ainda natildeo existir uma instacircncia entatildeo eacute criada uma nova e guardada

1

C r e a t e s an i n s t a n c e o f I n f e r e n c e E n g i n e

54

42 MOTOR DE INFEREcircNCIA

3

param usernameKey

5 The usernameKey t o use

7 return I n f e r e n c e E n g i n e i n s t a n c e

throws WexsysArgumen tExcep t ion

9

p u b l i c s t a t i c WexsysEngineImpl g e t I n f e r e n c e E n g i n e ( S t r i n g

usernameKey )

11 throws WexsysArgumentExcept ion

i f ( g e t R u l e U r l ( ) == n u l l | | g e t R u l e U r l ( ) l e n g t h ( ) == 0)

13 throw new WexsysArgumentExcept ion ( mainKnowledgeBaseUrl

r u l e U r l )

15 WexsysEngineImpl i n f e r e n c e E n g i n e = n u l l

17 Have we a l r e a d y c r e a t e d an i n s t a n c e

i f ( g e t I n f e r e n c e E n g i n e s ( ) c o n t a i n s K e y ( usernameKey ) )

19 Obta in t h e i n s t a n c e a s s o c i a t e d t o t h e s p e c i f i e d key

i n f e r e n c e E n g i n e = g e t I n f e r e n c e E n g i n e s ( ) g e t ( usernameKey )

21 e l s e

Cr ea t e a new i n s t a n c e and s t o r e i t i n t h e h o l d e r

23 i n f e r e n c e E n g i n e = new WexsysEngineImpl ( usernameKey

r u l e U r l kb sUr l )

g e t I n f e r e n c e E n g i n e s ( ) p u t ( usernameKey i n f e r e n c e E n g i n e )

25

27 re turn i n f e r e n c e E n g i n e

Coacutedigo 5 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo

422 Base de conhecimento inicial

Ao partir para o desenvolvimento de um sistema pericial eacute necessaacuterio adoptar uma basede conhecimento inicial simples que sirva de suporte ao desenvolvimento do mesmo

55

CAPIacuteTULO 4 WEXSYS

A base de conhecimento inicial foi adoptada a partir do estudo de Merritt (1989) Foiseleccionada devido a duas caracteriacutesticas principais

bull simplicidade - no sentido em que as regras satildeo pequenas e simples de interligar

bull abrangecircncia - existem alguns cenaacuterios possiacuteveis de serem testados com o protoacutetipocomo por exemplo raciociacutenio sobre incerteza e conclusotildees intermeacutedias

A base de conhecimento inicial escolhida tem a seguinte estrutura

bull rule 1 if not turn_over and battery_bad then problem is battery cf 100

bull rule 2 if lights_weak then battery_bad cf 50

bull rule 3 if radio_weak then battery_bad cf 50

bull rule 4 if turn_over and smell_gas then problem is flooded cf 80

bull rule 5 if turn_over and gas_gauge is empty then problem is out_of_gas cf 90

bull rule 6 if turn_over and gas_gauge is low then problem is out_of_gas cf 30

423 Protoacutetipo do motor de inferecircncia

Para o desenvolvimento do protoacutetipo inicial do motor de inferecircncia foi necessaacuterio definiralguns aspectos essenciais tais como

1 Formato da regras

2 Formato das questotildees

3 Interacccedilatildeo assiacutencrona de questotildees e respostas

4 Algoritmos a utilizar

4231 Formato das regras

O formato das regras foi definido tendo em conta alguns pressupostos Entre elessalientam-se a necessidade da utilizaccedilatildeo de graus de confianccedila e a capacidade de guardaruma descriccedilatildeo para cada regra

O formato escolhido para a representaccedilatildeo de uma regra foi o seguinte

56

42 MOTOR DE INFEREcircNCIA

rule(

ltcodigogt rsquoDescriccedilatildeo da regrarsquo

lhs([

ev(ltpremissagt ltvalor da premissagt)

ev(ltpremissa_ngt ltvalor da premissa_ngt)

])

rhs(ev(ltsoluccedilatildeogt ltvalor da soluccedilatildeogt) CF)

)

Na definiccedilatildeo do ltLHSgt eacute possiacutevel definir uma lista de premissas e respectivos valoresno caso da regra conter mais do que uma premissa Um aspecto relevante relacionado coma lista de premissas eacute que esta considera apenas o operador conjunccedilatildeo entre premissas

4232 Formato das questotildees

O formato das questotildees foi tambeacutem definido assumindo alguns princiacutepios tais como apossibilidade de respostas muacuteltiplas e ainda a atribuiccedilatildeo de um texto quer agrave questatildeo a serapresentada quer agraves hipoacuteteses colocadas

O formato escolhido para a representaccedilatildeo de uma questatildeo foi o seguinte

question(

turn_over

rsquoO carro ligarsquo

[

answer(ltvalorgt ltdescriccedilatildeo do valorgt)

answer(ltvalor_ngt ltdescriccedilatildeo do valor_ngt)

]

ltescolha_multipla = 1 0gt

)

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas

Numa qualquer execuccedilatildeo de um software instalado e executado localmente numa maacutequinao funcionamento normal seraacute a execuccedilatildeo de um conjunto de instruccedilotildees ateacute ao ponto emque seja necessaacuteria a interacccedilatildeo com um utilizador Quando isso acontece o programafica suspenso ateacute que o utilizador responda ao que lhe foi solicitado continuando depoiscom a sua execuccedilatildeo a partir do ponto onde parou

57

CAPIacuteTULO 4 WEXSYS

No caso de um programa desenvolvido em prolog e mais especificamente um sistemapericial o conceito atraacutes descrito eacute exactamente o mesmo jaacute que o programa apenassuspende a execuccedilatildeo quando eacute necessaacuterio colocar uma questatildeo que o utilizador teraacute queforccedilosamente responder para dar continuidade ao programa

Se no entanto considerarmos a realidade de uma aplicaccedilatildeo web este princiacutepio jaacutenatildeo seraacute tatildeo linear porque um servidor web recebe um pedido executa-o e devolve umresultado O mesmo seraacute dizer que numa execuccedilatildeo de um componente prolog a partirde um servidor web a pilha de execuccedilatildeo eacute interrompida quando eacute necessaacuterio questionaro utilizador mas natildeo eacute possiacutevel continuar a execuccedilatildeo da mesma a partir do ponto ondeparou Em vez disso seraacute necessaacuterio desfazer a pilha de execuccedilatildeo criada e assim queexistir a resposta do utilizador (eacute feito novo pedido ao servidor) a execuccedilatildeo eacute realizadanovamente desde o iniacutecio mas desta vez considerando a resposta recebida

As razotildees para este comportamento justificam-se pela utilizaccedilatildeo do protocolo HTTPem que eacute necessaacuterio existir um pedido e uma resposta O que obriga a que a colocaccedilatildeoda pergunta e a resposta sejam assiacutencronos podendo existir entre as duas acccedilotildees vaacuteriospedidos (pedidos de explicaccedilotildees por exemplo)

Este ldquoproblemardquo levou agrave necessidade do desenvolvimento de um mecanismo quepermita um funcionamento coerente num programa que utilize (como neste caso) oprolog simulando o comportamento que este teria numa situaccedilatildeo de execuccedilatildeo local

O mecanismo proposto foi a alteraccedilatildeo do predicado responsaacutevel pelo processo re-cursivo especificando um atributo auxiliar de controlo que acompanha a execuccedilatildeo dopredicado Esse atributo auxiliar quando detectada a necessidade de colocaccedilatildeo de umaquestatildeo eacute instanciado e impede a prossecuccedilatildeo do predicado retornando a execuccedilatildeo paraa web com a respectiva questatildeo

Este mecanismo permite uma comunicaccedilatildeo assiacutencrona com a parte web mantendo asvantagens da recursividade do prolog

4234 Estrutura da base de conhecimento

A base de conhecimento apoacutes a definiccedilatildeo do formato de representaccedilatildeo das regras e dasquestotildees eacute a seguinte

q u e s t i o n ( t u r n _ o v e r rsquoO c a r r o l i g a rsquo

2 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

4 q u e s t i o n ( l i g h t s _ w e a k rsquoAs l u z e s e s t a o f r a c a s rsquo

58

42 MOTOR DE INFEREcircNCIA

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

6

q u e s t i o n ( rad io_weak rsquoO r a d i o e s t a f r a c o rsquo

8 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

10 q u e s t i o n ( s m e l l _ g a s rsquo C h e i r a a g a s o l i n a rsquo

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

12

q u e s t i o n ( gas_gauge rsquoO que marca o p o n t e i r o do d e p o s i t o da

g a s o l i n a rsquo

14 [ answer ( empty rsquo Vazio rsquo ) answer ( high rsquo S u f i c i e n t e rsquo ) answer

( low rsquo Rese rva rsquo ) ] 0 )

16 r u l e ( r u l e _ 1 rsquo Rule 1 rsquo

l h s ( [ ev ( t u r n _ o v e r no ) ev ( b a t t e r y _ b a d yes ) ] ) r h s ( ev (

problem b a t t e r y ) 100) )

18

r u l e ( r u l e _ 2 rsquo Rule 2 rsquo

20 l h s ( [ ev ( l i g h t s _ w e a k yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

22 r u l e ( r u l e _ 3 rsquo Rule 3 rsquo

l h s ( [ ev ( rad io_weak yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

24

r u l e ( r u l e _ 4 rsquo Rule 4 rsquo

26 l h s ( [ ev ( s m e l l _ g a s yes ) ev ( t u r n _ o v e r yes ) ] ) r h s ( ev ( problem

f l o o d e d ) 80) )

28 r u l e ( r u l e _ 5 rsquo Rule 5 rsquo

l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge empty ) ] ) r h s ( ev (

problem o u t _ o f _ g a s ) 90) )

30

r u l e ( r u l e _ 6 rsquo Rule 6 rsquo

32 l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge low ) ] ) r h s ( ev ( problem

o u t _ o f _ g a s ) 30) ) Coacutedigo 6 Representaccedilatildeo da base de conhecimento do protoacutetipo

59

CAPIacuteTULO 4 WEXSYS

4235 Algoritmos a utilizar

Um dos paracircmetros mais relevantes para o funcionamento do algoritmo inicial eacute o graumiacutenimo de confianccedila que eacute indicado no iniacutecio da utilizaccedilatildeo do sistema na paacutegina inicialSe o valor indicado para este paracircmetro for demasiado elevado poderaacute inibir algumasregras impedindo o seu disparo no caso de natildeo ser atingido o grau de confianccedila necessaacuterioPor outro lado se o valor introduzido for demasiado baixo permitiraacute que qualquer regradispare independentemente do seu grau de confianccedila traduzindo-se numa maior aacutervorede pesquisa

O motor de inferecircncia eacute executado mediante o recurso a um predicado principal Estepredicado seraacute o responsaacutevel pelo iniacutecio do processo de inferecircncia De seguida seratildeoapresentados alguns dos algoritmos considerados mais relevantes Os algoritmos 1 2 e 3representam atraveacutes da utilizaccedilatildeo de pseudo-coacutedigo alguma da loacutegica implementada nomotor de inferecircncia

Algoritmo 1 Algoritmo principal do motor de inferecircnciabegin tryToProve

while empty ControlObj doobtemRegra (r)disparoPremissaslarr truefor premissa isin LHS do

ControlObjdisparoularr verificaPremissa (p)disparoPremissaslarr disparoPremissas ampamp disparouif not empty ControlObj then

termina o algoritmoend

endif empty ControlObj then

if disparoTodasPremissas thenfireRules

endend

endend

60

42 MOTOR DE INFEREcircNCIA

Algoritmo 2 Verifica se uma premissa eacute verdadeirainput Premissa poutput ControlObj disparoubegin verificaPremissa

disparoularr false ControlObjlarr nullif checkExistFact (p) ou checkExistQuestionFact (p) oucheckExistRuleFact (pControlObj) then

disparoularr true exitend

end

Algoritmo 3 Dispara as regras que possam ser disparadasbegin fireRules

for regra isin basedeconhecimento doif regra not fired then

if regra pode disparar thencalcula grau de confianccediladispara regraif regra dispara soluccedilatildeo final then

termina execuccedilatildeo preenchendo ControlObjendif regra natildeo dispara soluccedilatildeo final then

continuaend

endend

endend

61

CAPIacuteTULO 4 WEXSYS

424 Resultado final

Apoacutes a implementaccedilatildeo do protoacutetipo inicial do motor de inferecircncia e dos testes necessaacuteriosagrave verificaccedilatildeo do bom funcionamento do mesmo chegamos ao resultado final que foiutilizado no wexsys

Este novo motor de inferecircncia foi desenvolvido levando em consideraccedilatildeo todasas caracteriacutesticas consideradas essenciais tanto para a execuccedilatildeo num ambiente multi-utilizador como para a execuccedilatildeo num servidor web e que foram jaacute descritas nas secccedilotildeesanteriores De referir ainda que face ao motor de inferecircncia do sistema base esteapresenta uma seacuterie de melhorias tais como rapidez de funcionamento e abstracccedilatildeo dabase de conhecimento utilizada

4241 Arranque da execuccedilatildeo

Como jaacute referido o motor de inferecircncia segue os algoritmos descritos na secccedilatildeo 4235 enesta secccedilatildeo seraacute abordado o processo utilizado desde o arranque do motor de inferecircnciaateacute agrave apresentaccedilatildeo dos dados como podemos ver na figura 19

Figura 19 Paacutegina inicial do motor de inferecircncia

O utilizador comeccedila na paacutegina inicial e selecciona a opccedilatildeo ldquoMotor de InferecircnciardquoDepois eacute apresentada uma paacutegina que permite iniciar o motor de inferecircncia utilizando a

62

42 MOTOR DE INFEREcircNCIA

opccedilatildeo ldquoiniciarrdquo Isto despoleta o mecanismo de inferecircncia como podemos verificar nafigura 20

Figura 20 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia

A classe YProlog invoca o predicado top_goals que mais natildeo eacute que o ponto de entradano motor de inferecircncia A sua funccedilatildeo seraacute obter qual a ldquoconclusatildeo final a procurarrdquo (estetoacutepico seraacute descrito na secccedilatildeo 432) para se poder iniciar o algoritmo propriamentedito Na listagem de coacutedigo 7 eacute possiacutevel consultar os predicados responsaacuteveis pelaimplementaccedilatildeo dos algoritmos Apenas estatildeo listados os predicados principais

Eacute possiacutevel consultar o coacutedigo do motor de inferecircncia no anexo A

t o p _ g o a l s ( Con t ro lOb j MinCF ) minus

2 t o p _ g o a l ( TopGoal )

t o p ( TopGoal Con t ro lOb j MinCF )

63

CAPIacuteTULO 4 WEXSYS

4

t o p ( TopGoal Con t ro lOb j MinCF ) minus6 r e t r a c t a l l ( h i s t 2 ) s e t ( l en 0 )

g e t R u l e M o r e R e l e v a n t ( TopGoal Rule )

8 t r y T o P r o v e ( Rule Con t ro lOb j MinCF )

10 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) minusr u l e ( Rule _ l h s (LHS) _ )

12 p r o v e L i s t H y p (LHS Con t ro lOb j MinCF )

g e t ( l en LEN) LEN1 i s LEN + 1

14 a s s e r t ( h i s t ( LEN1 Rule ) )

s e t ( l en LEN1)

16 (

check i f r u l e has re turn c o n t r o l o b j e c t

18 ( v a r ( C o n t r o l O b j ) ) minusgt(

no c o n t r o l o b j e c t found check i f o t h e r r u l e s needs t o

be f i r e d

20 f i r e R u l e s ( Con t ro lOb j MinCF )

) (

22 c o n t r o l o b j e c t found

t rue24 )

)

26

p r o v e L i s t H y p ( [ ] Con t ro lOb j MinCF )

28 p r o v e L i s t H y p ( [H | T ] Con t ro lOb j MinCF ) minusproveHyp (H Con t ro lOb j MinCF )

30 (

( v a r ( C o n t r o l O b j ) ) minusgt (

32 p r o v e L i s t H y p ( T Con t ro lOb j MinCF )

) (

34 t rue)

36 )

38

f a c t a l r e a d y known

40 proveHyp (H Con t ro lOb j MinCF ) minus

64

42 MOTOR DE INFEREcircNCIA

H = ev (X Y) f a c t (X Y _ )

42

t h e r e i s a q u e s t i o n t h a t can l e a d t o a f a c t

44 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

n o t ( f a c t (X _ _ ) )

46 q u e s t i o n (X _ _ _ )

n o t ( n o t _ q u e s t i o n (X) )

48 C o n t r o l O b j = ask (X)

50 t h e r e i s a c o n c l u s i o n t h a t can

l e a d t o a q u e s t i o n t h a t can l e a d t o a f a c t

52 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

r u l e ( Rule _ l h s (LHS) r h s ( ev (X _ ) V) )

54 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) Coacutedigo 7 Predicados principais do motor de inferecircncia

4242 Mecanismo de respostas

O mecanismo de respostas eacute algo similar ao processo descrito anteriormente A suafunccedilatildeo seraacute guardar a resposta que foi seleccionada pelo utilizador e prosseguir com oalgoritmo de forma a que uma nova questatildeo seja colocada ou a soluccedilatildeo final alcanccedilada

Um paracircmetro considerado obrigatoacuterio na submissatildeo de uma resposta eacute o grau deconfianccedila Este valor serviraacute para realizar o caacutelculo do grau de confianccedila da regra quandoa mesma puder ser disparada

Podemos ver na figura 21 o processo de resposta a uma questatildeo

65

CAPIacuteTULO 4 WEXSYS

Figura 21 Fluxo de invocaccedilatildeo de resposta a uma questatildeo

Eacute ainda possiacutevel natildeo responder agrave questatildeo colocada utilizando a opccedilatildeo ldquonatildeo sei natildeoresponderrdquo Esta opccedilatildeo iraacute guardar internamente uma indicaccedilatildeo para natildeo voltar a colocara questatildeo ignorada evitando entrar em ciclos

Agrave medida que o processo avanccedila eacute possiacutevel acompanhar o estado actual do motor deinferecircncia Este acompanhamento eacute realizado mediante a anaacutelise da zona situada do ladodireito da paacutegina e que vai sendo actualizada a cada interacccedilatildeo com o motor de inferecircnciaA zona referida permite obter informaccedilotildees acerca de

bull Regras que jaacute foram disparadas

bull Factos que foram inferidos pelo disparo das regras

bull Factos que foram facultados pelo utilizador ao responder agraves questotildees

bull Factos conhecidos antes do iniacutecio do processo de inferecircncia

66

42 MOTOR DE INFEREcircNCIA

Estes factos satildeo obtidos atraveacutes do predicado ldquoinf_sys((L_Rules L_Inf_Facts L_Know_FactsL_Init_Facts)rdquo Este predicado eacute invocado apoacutes cada interacccedilatildeo com o motor de inferecircnciae desta forma os dados estatildeo sempre actualizados

4243 Conclusatildeo final encontrada

Quando o disparo de uma regra leva a que seja adicionado um facto que corresponde auma soluccedilatildeo final o motor de inferecircncia termina a sua execuccedilatildeo devolvendo a conclusatildeofinal a que chegou bem como o respectivo grau de confianccedila Na figura 22 podemos ver afase final do processo de inferecircncia O grau de confianccedila da conclusatildeo final eacute atribuiacutedocom recurso agrave foacutermula seguinte

Dada uma regra X com premissas P1 a Pn e CF =CF (X) entatildeo temos

CF(X P1 Pn) = min [CF(P1) CF(Pn)]timesCF(X)

Figura 22 Conclusatildeo da inferecircncia

4244 Explicaccedilotildees

Eacute possiacutevel em qualquer altura colocar a questatildeo ldquoporquecircrdquo antes de submetermos umaresposta ou a questatildeo ldquocomordquo apoacutes uma conclusatildeo final Este tipo de explicaccedilotildeescontribui para a fase de validaccedilatildeo do sistema pericial colocando-as ao dispor do perito

67

CAPIacuteTULO 4 WEXSYS

responsaacutevel pela validaccedilatildeo expondo desta forma o raciociacutenio seguido no decorrer dainferecircncia Exemplos da solicitaccedilatildeo de explicaccedilotildees podem ser consultados atraveacutes dasfiguras 23 24 e 25

Figura 23 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo

68

42 MOTOR DE INFEREcircNCIA

Figura 24 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia

Figura 25 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final

69

CAPIacuteTULO 4 WEXSYS

As explicaccedilotildees ldquoporquecircrdquo foram implementadas recorrendo a predicados temporaacuterios(hist) que acompanham o desenrolar do motor de inferecircncia Eacute possiacutevel em qualqueraltura consultar esses predicados para obter de uma forma imediata a explicaccedilatildeo doporquecirc da questatildeo estar a ser feita

As explicaccedilotildees ldquocomordquo jaacute seguem um mecanismo mais complexo Quando umaregra eacute disparada origina conclusotildees intermeacutedias ou finais essas conclusotildees natildeo satildeo maisdo que simples factos O motor de inferecircncia sempre que dispara uma regra associa aofacto a regra que o originou por intermeacutedio do predicado inf_exp_how

Desta forma basta algum coacutedigo para que seja possiacutevel a obtenccedilatildeo de ambas asexplicaccedilotildees Esse coacutedigo pode ser consultado na listagem 8 em que os predicados why ehow se referem agraves explicaccedilotildees ldquoporquecircrdquo e ldquocomordquo respectivamente

why ( L ) minus

2 f i n d a l l ( r (OX) h i s t (OX) L )

4 how ( A t t r Value R e s u l t ) minusin f_exp_how ( A t t r Value Ru le s )

6 explainHow ( Rules E x p l a n a t i o n )

append ( Rules E x p l a n a t i o n R e s u l t )

8

explainHow ( [ ] [ ] )

10 explainHow ( [H | T ] R e s u l t ) minusi n n e r E x p l a i n (H E x p l a n a t i o n H )

12 explainHow ( T E x p l a n a t i o n R u l e s )

append ( Explana t ionH E x p l a n a t i o n R u l e s R e s u l t )

14

16 i n n e r E x p l a i n ( Rule E x p l a n a t i o n ) minusr u l e ( Rule _ l h s (LHS) _ )

18 expla inLHS (LHS E x p l a n a t i o n )

20 expla inLHS ( [ ] [ ] )

expla inLHS ( [ ev ( A t t r Value ) | T ] E x p l a n a t i o n A ) minus22 n o t ( inf_exp_how ( A t t r Value _ ) )

f a c t ( A t t r Value _ )

24 expla inLHS ( T E x p l a n a t i o n A )

70

43 BASE DE CONHECIMENTO

26 expla inLHS ( [ ev ( A t t r Value ) | T ] Resu l tA ) minushow ( A t t r Value E x p l a n a t i o n A )

28 expla inLHS ( T E x p l a n a t i o n )

append ( Explana t ionA E x p l a n a t i o n Resu l tA ) Coacutedigo 8 Predicados principais do sistema de explicaccedilotildees

43 Base de conhecimento

A base de conhecimento armazena o conhecimento extraiacutedo de um ou mais peritos e con-siste numa seacuterie de factos e regras acerca de um determinado domiacutenio Sendo dependenteda aacuterea que se pretende abranger com o sistema pericial a base de conhecimento eacute deconstruccedilatildeo especiacutefica para cada situaccedilatildeo em que seja necessaacuterio desenvolver este tipo desistema

Os procedimentos de inserccedilatildeo actualizaccedilatildeo e remoccedilatildeo dos factos e regras que com-potildeem a base de conhecimento (gestatildeo da base de conhecimento) teratildeo que ser na medidado possiacutevel procedimentos simples que sejam facilmente compreendidos pelos utilizado-res

As funcionalidades de gestatildeo da base de conhecimento estatildeo disponiacuteveis na opccedilatildeoldquoBase de Conhecimentordquo da paacutegina inicial como podemos observar na figura 26

71

CAPIacuteTULO 4 WEXSYS

Figura 26 Paacutegina inicial da gestatildeo da base de conhecimento

431 Leitura da base de conhecimento

Ao iniciar a execuccedilatildeo a base de conhecimento eacute carregada para memoacuteria a partir de umficheiro Este processo eacute realizado de forma iterativa e de acordo com uma determinadasequecircncia regras questotildees conclusatildeo final e por uacuteltimo os factos iniciais

Por sua vez o carregamento das regras eacute efectuado em duas fases sendo que primeirosatildeo obtidas as regras existentes (ldquoretrieve_rules(L)rdquo) e depois para cada regra eacute construiacutedaa sua estrutura (ldquobuildRuleObjectrdquo) Podemos observar a descriccedilatildeo deste processo nafigura 27

72

43 BASE DE CONHECIMENTO

Figura 27 Processo de carregamento das regras

Quanto ao carregamento das questotildees eacute similar ao das regras jaacute que eacute efectuadoigualmente em duas fases Primeiro obtecircm-se todas as questotildees (ldquoretrieve_questions(L)rdquo)e depois para cada questatildeo eacute preenchida a sua estrutura (ldquobuildQuestionObjectrdquo)

Jaacute o carregamento da conclusatildeo final eacute realizado atraveacutes do predicado ldquotop_goal(L)rdquoEste predicado vai devolver a conclusatildeo final guardada

Por fim os factos iniciais satildeo obtidos reutilizando um processo de obtenccedilatildeo de factos(ldquoinf_sys((L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)rdquo) Este processo jaacute foireferido na secccedilatildeo que descreve o motor de inferecircncia (4242)

432 Conclusatildeo final a encontrar

A conclusatildeo final a encontrar representa o predicado que vai ser considerado comoobjectivo no decorrer do motor de inferecircncia Soacute vatildeo ser consideradas soluccedilotildees queconvergem para uma soluccedilatildeo final que contenha o predicado especificado no RHS

Para definir uma conclusatildeo final basta especificar o nome do predicado da soluccedilatildeoque pretendemos encontrar com o motor de inferecircncia

73

CAPIacuteTULO 4 WEXSYS

433 Factos iniciais

Os factos iniciais permitem adicionar conhecimento preacutevio a uma base de conhecimentoPara adicionaacute-los eacute necessaacuterio utilizar o botatildeo ldquoAdicionar facto inicialrdquo e preencher oscampos necessaacuterios Para remover um facto inicial previamente inserido eacute utilizado obotatildeo ldquoRemover facto inicialrdquo e eacute necessaacuterio confirmar a acccedilatildeo que se estaacute a efectuar deforma a evitar uma remoccedilatildeo acidental

434 Regras

As regras satildeo o ponto essencial da gestatildeo da base de conhecimento As regras satildeo osdados disponiacuteveis para a aplicaccedilatildeo e como tal quanto melhor forem definidas melhorqualidade a aplicaccedilatildeo teraacute no sentido em que os resultados seratildeo mais correctos e fiaacuteveis

4341 CriarAlterar uma regra

O processo de criaccedilatildeo de uma nova regra foi simplificado Jaacute natildeo eacute necessaacuterio conhecera sintaxe das regras e tambeacutem jaacute natildeo eacute necessaacuterio conhecer os factos a utilizar comopremissas

Para adicionar uma regra apenas temos que arrastar questotildees eou conclusotildees inter-meacutedias de forma a construir a regra que pretendemos inserir

No caso de estarmos a alterar uma regra ou no caso de termos adicionado uma questatildeoou conclusatildeo intermeacutedia incorrectamente podemos eliminar essa premissa simplesmenteseleccionando a ldquocheckboxrdquo respectiva e utilizar a opccedilatildeo ldquoRemover seleccionadosrdquo

74

43 BASE DE CONHECIMENTO

Figura 28 Introduzir uma nova regra

Apoacutes termos arrastado todas as questotildees eou conclusotildees intermeacutedias para a lista depremissas temos que indicar os respectivos valores Este processo estaacute simplificado nosentido em que apenas temos que utilizar a caixa de selecccedilatildeo agrave frente de cada controlo eseleccionar o respectivo valor

Os valores apresentados satildeo obtidos de forma diferente quer se trate de uma questatildeo oude uma conclusatildeo intermeacutedia No caso das questotildees os valores obtidos satildeo os indicadosaquando da sua inserccedilatildeo No caso das conclusotildees intermeacutedias satildeo obtidos todos os valoresutilizados nas regras ateacute ao momento Sempre que uma regra eacute inserida ou actualizadaeacute despoletado um processo que actualiza os valores das conclusotildees intermeacutedias com osnovos valores introduzidos

75

CAPIacuteTULO 4 WEXSYS

Figura 29 Apresentaccedilatildeo de valores configurados na questatildeo

4342 Questotildees

As questotildees acabam por ser o ponto de contacto da aplicaccedilatildeo com o utilizador Sempreque eacute necessaacuterio suspender o processamento para questionar o utilizador este teraacute ahipoacutetese de intervir na execuccedilatildeo Atraveacutes das questotildees colocadas vai ser possiacutevel inferiroutros factos que no final e numa situaccedilatildeo ideal conduzem a uma soluccedilatildeo possiacutevel

Uma questatildeo eacute identificada por um coacutedigo por uma descriccedilatildeo e ainda por um conjuntode valores possiacuteveis as respostas Quando inserimos uma nova regra podemos criar novasquestotildees utilizando a opccedilatildeo ldquoAdicionar uma questatildeordquo Surge entatildeo o formulaacuterio deintroduccedilatildeo de uma questatildeo como podemos ver na figura 30

Figura 30 Formulaacuterio de introduccedilatildeo de uma questatildeo

As respostas configuradas no formulaacuterio de introduccedilatildeo seratildeo as respostas que iratildeoaparecer quando inserirmos uma nova regra e arrastarmos a questatildeo para a lista depremissas

76

43 BASE DE CONHECIMENTO

4343 Verificaccedilatildeo

Apoacutes a introduccedilatildeo ou alteraccedilatildeo das regras deve ser realizado o processo de verificaccedilatildeoda base de conhecimento De uma forma quase imperceptiacutevel na fase de introduccedilatildeode regras estamos a activar este processo jaacute que eacute garantido que as regras introduzidasestatildeo coerentes e que os valores das premissas efectivamente existem Podemos dizerque estamos perante a primeira fase do processo de verificaccedilatildeo designado por verificaccedilatildeoproacute-activa

Para este trabalho foi considerado a verificaccedilatildeo de dois tipos de anomalia na base deregras redundacircncia e regras duplicadas A inclusatildeo de novos mecanismos de verificaccedilatildeoeacute possiacutevel bastando para isso a alteraccedilatildeo do predicado ldquoverification(L)rdquo

A grande diferenccedila entre os dois meacutetodos implementados eacute que uma regra redundanteadiciona conhecimento desnecessaacuterio agrave base de conhecimento enquanto que uma regraduplicada como o nome indica eacute apenas uma duplicaccedilatildeo do conhecimento

Na figura 31 podemos verificar o mecanismo de verificaccedilatildeo implementado que permiteidentificar que regra estaacute em conflito com que outra regra e qual o tipo de conflito

Figura 31 Verificaccedilatildeo da base de conhecimento

435 Gravaccedilatildeo da base de conhecimento

O processo de gravaccedilatildeo da base de conhecimento eacute similar ao processo de leitura com adiferenccedila de natildeo ser iterativo O processo de gravaccedilatildeo da base de conhecimento iniciacom a acccedilatildeo do utilizador na opccedilatildeo ldquoFinalizarrdquo que invoca o meacutetodo ldquosaveAll()rdquo doWexsysKBBean O resto do processo pode ser observado na figura 32

77

CAPIacuteTULO 4 WEXSYS

Figura 32 Processo de gravaccedilatildeo da base de conhecimento

436 Conversatildeo GISPSA

A conversatildeo da base de conhecimento do GISPSA para o formato wexsys foi efectuada emduas fases Na primeira fase foi feita uma migraccedilatildeo sintaacutectica da forma de representaccedilatildeode regras utilizada para a forma utilizada pelo wexsys Na segunda fase foi efectuadoum processo manual de conversatildeo

O sistema anterior delegava nas regras alguns predicados utilizados unicamente parao sistema de explicaccedilotildees Esta caracteriacutestica tornou a migraccedilatildeo algo morosa jaacute que eranecessaacuterio proceder agrave anaacutelise regra a regra de quais os predicados necessaacuterios e quais osdescartaacuteveis

78

44 ANAacuteLISE GRAacuteFICA

44 Anaacutelise graacutefica

Para aleacutem do motor de inferecircncia e da gestatildeo da base de conhecimento foi implemen-tado como prova de conceito um sistema graacutefico que permite observar facilmente arepresentaccedilatildeo de uma base de conhecimento sob a forma de um grafo

Este sistema permite visualizar e consultar a explosatildeo combinatoacuteria das regras edas premissas que as compotildeem Este tipo de ferramenta pode ser bastante uacutetil quandoutilizado nas tarefas de validaccedilatildeo por parte do perito Desta forma o perito consegue deuma forma visual e simples verificar o relacionamento entre as conclusotildees e as premissas

441 Implementaccedilatildeo

Esta funcionalidade foi implementada recorrendo agrave utilizaccedilatildeo de um controlo externodesignado por TGGraphLayout e desenvolvido por Alexander Shapiro (2010) O controlodisponibiliza uma applet que encapsula funcionalidades que permitem a interacccedilatildeo graacuteficacom a representaccedilatildeo de um grafo

Por se tratar de uma applet a comunicaccedilatildeo com os managed beans torna-se tecnica-mente mais difiacutecil de implementar Esse motivo levou agrave necessidade de criaccedilatildeo de umaservlet para simplificar o processo de interacccedilatildeo entre a aplicaccedilatildeo e a applet do controlovisual

A servlet WexsysServlet foi criada para dar suporte agrave comunicaccedilatildeo com o mana-

ged bean WexsysKBBean sendo este responsaacutevel pela obtenccedilatildeo dos dados no formatoreconhecido pelo controlo

O controlo teve que ser alterado de forma a permitir a interacccedilatildeo com a servlet bemcomo efectuar o tratamento dos dados no formato especificado ou seja criar uma espeacuteciede protocolo de comunicaccedilatildeo

O algoritmo 4 resume a implementaccedilatildeo efectuada ao niacutevel da applet e o algoritmo 5demonstra de que forma esses dados satildeo obtidos

442 Funcionamento

O grafo resultante eacute construiacutedo a partir de uma posiccedilatildeo inicial designada por ponto departida Eacute utilizada a designaccedilatildeo ldquordquo para simplificar a identificaccedilatildeo no grafo eeacute possiacutevel ver o resultado da paacutegina inicial na figura 33

As conclusotildees satildeo representadas por rectacircngulos com um fundo branco e as premissassatildeo identificadas por rectacircngulos com fundo azul

79

CAPIacuteTULO 4 WEXSYS

Algoritmo 4 Algoritmo responsaacutevel pelo desenho da appletinput graphPaths graphConclusionsbegin drawGraph

initializeNodes ()for path isin graphPaths do

init oldfor step isin path do

if nodes do not contain step thenbuildNode (step)

endif step is first then

oldlarr stepelse

addEdge (old step)oldlarr step

endend

endcreateStartNode ()linkUnlinkedNodesToStartNode ()

end

O ponto de partida liga-se entatildeo agraves regras que apenas contenham premissas quesejam questotildees construindo o grafo de possibilidades Apoacutes identificar as regras quesatildeo representadas com ligaccedilatildeo ao ponto de partida satildeo tratadas as restantes regrasconstruindo o resto do grafo agrave medida que as regras satildeo avaliadas

Eacute possiacutevel centrar o grafo numa premissa ou numa conclusatildeo Ao centrarmos ografo satildeo mantidos apenas os noacutes que se ligam directamente ao noacute que seleccionaacutemosNo entanto eacute possiacutevel expandir um noacute sem este tipo de comportamento bastando paraisso utilizar as funcionalidades disponiacuteveis ao pressionar a tecla direita do rato sobre o

Figura 33 Paacutegina inicial da anaacutelise graacutefica

80

44 ANAacuteLISE GRAacuteFICA

Algoritmo 5 Algoritmo para construccedilatildeo dos dados do grafooutput graphPaths and grapConclusionsbegin retrieveGraphPathAndConclusions

questionslarr gatherQuestionfor rule isin rules do

isFinalRulelarr conclusaoFinal igual RHS de ruleif isFinalRule then

add rule to grapConclusionssimpleRulelarr truegraphPathslarr nullfor premissa isin ruleLHS do

isConditionAskablelarr questions contains premissaif isConditionAskable then

add premissa and value to graphPathselse

simpleRulelarr falseretrieveGraphFromAtom (premissa)add result to graphPaths

endend

endend

end

respectivo noacute As funcionalidades disponiacuteveis satildeo expandir colapsar esconder e centrare satildeo auto-descritivas pelo que dispensam qualquer explicaccedilatildeo do seu funcionamento

Figura 34 Exemplo de grafo totalmente expandido

Eacute possiacutevel utilizar esta funcionalidade para identificarmos um cenaacuterio especiacuteficopor exemplo para consultar quais as premissas necessaacuterias para a obtenccedilatildeo de umadeterminada soluccedilatildeo

81

CAPIacuteTULO 4 WEXSYS

Figura 35 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto

443 Limitaccedilotildees

Esta funcionalidade no seu estado actual apresenta algumas limitaccedilotildees Conveacutem referirantes de mais que esta soluccedilatildeo natildeo eacute uma alternativa ao motor de inferecircncia mas sim umaferramenta de apoio visual auxiliar ao mesmo

Das limitaccedilotildees existentes salientam-se as seguintes

bull a utilizaccedilatildeo deste controlo obriga a que o utilizador esteja familiarizado com aspremissas e os seus valores Natildeo estatildeo disponiacuteveis os textos de apoio para aspremissas da mesma forma que satildeo mostrados no motor de inferecircncia Umapossiacutevel soluccedilatildeo passaria pela interacccedilatildeo da applet com a servlet para atraveacutes domecanismo de ajax push despoletar a actualizaccedilatildeo da JSP mostrando o texto doelemento seleccionado

bull o tamanho dos noacutes eacute grande quando comparado com o espaccedilo disponiacutevel nocontrolo o que por vezes obriga a algumas sobreposiccedilotildees dos noacutes tornado-oimperceptiacutevel Este problema pode ser observado na figura 34 Para atenuar esteproblema existem controlos que permitem modificar o factor de ampliaccedilatildeo rodar ocontrolo e controlar o grau de visualizaccedilatildeo hiperboacutelica

bull apoacutes a navegaccedilatildeo no grafo perde-se de alguma forma o contexto que o originouEste problema pode ser observado na figura 35

82

5Conclusotildees

Ateacute que ponto eacute que um software consegue efectivamente substituir um ser humanoquando estamos a falar de raciociacutenio Se esse raciociacutenio for estritamente linear seguindoum determinado percurso com alguns desvios ao longo do mesmo que acabam por ditarum desfecho diferente consoante as decisotildees que vatildeo sendo tomadas a substituiccedilatildeo podemesmo ser efectiva e ateacute mesmo melhor em alguns casos

Um perito natildeo eacute no entanto algueacutem que se limita a dizer sim ou natildeo ou algueacutem queapenas decide se eacute necessaacuterio seguir por este caminho ou aquele Um perito normalmenteobserva dados e factos e infere sobre os mesmos tendo a sensibilidade para em muitasocasiotildees conseguir ateacute mesmo obter a soluccedilatildeo final muito antes de terminar a anaacutelise detodos os paracircmetros A isso chama-se conhecimento heuriacutestico natildeo linear afectada poruma enormidade de factores que apenas eacute possiacutevel encontrar num ser humano

Estes factores podem ter tanto de beneacutefico como de nocivo Ao natildeo analisar atotalidade dos dados um perito poderaacute incorrer num erro ou mesmo tendo-os analisadoateacute ao fim poderaacute natildeo ter estado completamente atento ou compenetrado no que estavaa fazer pelo mero facto de poder estar cansado ou indisposto para executar tal tarefanaquele preciso momento

Um sistema pericial pode realmente ser uma mais valia no sentido em que estaacutetotalmente desprovido de emoccedilotildees e fadiga ao contraacuterio de um ser humano Paraaleacutem disto natildeo eacute necessaacuterio temer que o sistema pericial se desloque a uma qualquerlocalizaccedilatildeo remota e de difiacutecil acesso ou que chegue fora do horaacuterio previsto limitadopelos atrasos de uma simples viagem

Todos estes factos podem realmente ser considerados quando analisamos o funciona-mento do GISPSA Efectivamente trata-se de um sistema pericial estaacute sempre disponiacutevele totalmente desprovido de caracteriacutesticas humanas que poderiam eventualmente toldaro raciociacutenio do mesmo No entanto este sistema carecia de algo muito importante a

83

CAPIacuteTULO 5 CONCLUSOtildeES

acessibilidade a partir de qualquer local em qualquer hora e por parte de vaacuterios utilizado-res em simultacircneo de modo imediato e sem preacute-aviso Antes de mais o GISPSA eacute umaaplicaccedilatildeo de execuccedilatildeo local e natildeo foi de todo desenvolvida para funcionamento em redeComo tal o acesso agrave mesma estava agrave partida bastante limitado Depois cada instalaccedilatildeoapenas permitia a interacccedilatildeo com um utilizador de cada vez Existem ainda algumaslimitaccedilotildees identificadas no GISPSA que foram ultrapassadas com o desenvolvimento dowexsys tais como manutenccedilatildeo da base de conhecimento capacidade de raciocinar sobreconhecimento incerto e a implementaccedilatildeo de meacutetodos de verificaccedilatildeo

Hoje em dia eacute possiacutevel aceder a uma rede global (a internet) a partir de qualquer pontodo planeta e isto torna igualmente possiacutevel disponibilizar uma aplicaccedilatildeo de forma a quequalquer pessoa a consiga utilizar a qualquer hora e a partir de qualquer local O wexsysaplica essa transformaccedilatildeo ao GISPSA e leva-o ao proacuteximo patamar evolutivo

Como qualquer evoluccedilatildeo tambeacutem esta pretende natildeo soacute dotar a nova versatildeo comfuncionalidades que a anterior natildeo possuiacutea como tambeacutem pretende melhorar e corrigiros problemas que eventualmente foram encontrados Ao longo do tempo de utilizaccedilatildeodo GISPSA verificaram-se algumas coisas que podiam e deviam ser substituiacutedas Aleacutemdisto a proacutepria evoluccedilatildeo dos sistemas graacuteficos e de interacccedilatildeo colocaram o GISPSAcomo uma aplicaccedilatildeo de visual jaacute algo ultrapassado aspecto que tambeacutem carecia de umarevisatildeo para a realidade mais actual

A opccedilatildeo pela incorporaccedilatildeo do wexsys num portal teve a ver com as grandes capacida-des que este tipo de infra-estuturas tem hoje em dia Impulsionados por empresas comoa IBM os portais web representam janelas de negoacutecio com ligaccedilatildeo ao mundo e com aspotencialidades que daiacute advecircm Caracteriacutesticas como a facilidade de acesso sistemas debackup manutenccedilatildeo de tempos de uptime elevados rapidez de funcionamento facilidadede funcionamento e leitura entre muitas outras representam uma mais valia para estetipo de alojamento de aplicaccedilotildees

51 Contributos da soluccedilatildeo desenvolvida

O grande objectivo a que este trabalho se propunha foi alcanccedilado e consistia na criaccedilatildeode um sistema pericial baseado no GISPSA mas que pudesse ser acedido a partir deuma rede tornando-o global Os restantes objectivos foram igualmente alcanccedilados e oresultado final mostra-se soacutelido e fiaacutevel para candidato efectivo agrave substituiccedilatildeo do sistemaque lhe daacute a base No entanto existem outros pontos positivos na soluccedilatildeo encontradaquando comparada com outros sistemas periciais jaacute referidos nos capiacutetulos anteriores

84

51 CONTRIBUTOS DA SOLUCcedilAtildeO DESENVOLVIDA

Esses sistemas satildeo o LOMA o MDSS e o Whale watcherAo proceder a uma comparaccedilatildeo com estes sistemas a soluccedilatildeo desenvolvida neste

trabalho apresenta algumas vantagens Desde logo estamos a falar de aplicaccedilotildees web

com periacuteodos de desenvolvimento diferentes o que implica a utilizaccedilatildeo de tecnologiasdiferentes A vantagem da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo mais recentes dinacircmi-cas eficazes e visualmente mais apelativas coloca o wexsys num patamar efectivamentesuperior Para aleacutem disso o wexsys pode (como resultado da utilizaccedilatildeo dessas mesmastecnologias) ser facilmente integrado noutras aplicaccedilotildees como webservices ou portaisenquanto que os outros sistemas natildeo

Outra das particularidades dos sistemas estudados eacute que natildeo possuem (de acordocom as respectivas documentaccedilotildees) mecanismos de verificaccedilatildeo de regras e sempre queeacute necessaacuterio proceder a alteraccedilotildees a essas mesmas regras o utilizador teraacute que ter umconhecimento profundo acerca da sintaxe utilizada (gramaacutetica riacutegida) Para aleacutem distotambeacutem natildeo possuem (com excepccedilatildeo do MDSS) suporte a vaacuterias liacutenguas

Jaacute quanto agrave questatildeo da capacidade de funcionamento multi-utilizador apesar deestarmos a falar de aplicaccedilotildees web os sistemas estudados neste documento natildeo estatildeopreparados para cargas de processamento demasiado elevadas porque natildeo foi contempladaa possibilidade de um funcionamento distribuiacutedo o que permitiria aliviar a carga deprocessos e aumentar o nuacutemero maacuteximo de utilizadores

Para descrever mais em detalhe os objectivos alcanccedilados com a soluccedilatildeo propostapassamos a enunciaacute-los

bull Criaccedilatildeo de uma aplicaccedilatildeo web - Ao criar a nova aplicaccedilatildeo a questatildeo da distribuiccedilatildeodessa mesma aplicaccedilatildeo atraveacutes de uma rede era fulcral jaacute que permitiria uma seacuteriede factores que ateacute aqui natildeo estavam disponiacuteveis A possibilidade de utilizaccedilatildeo deuma base de conhecimento global onde todos os utilizadores pudessem contribuirpara o seu melhoramento facilidade de acesso a partir de qualquer localizaccedilatildeodisponibilidade a qualquer hora e dia capacidade de realizaccedilatildeo de backups paragarantir a continuidade dos dados e muacuteltiplos acessos simultacircneos foram questotildeesque ficaram resolvidas com a concretizaccedilatildeo deste objectivo

bull Verificaccedilatildeo das regras - Uma das lacunas do sistema base o GISPSA era a faltade capacidade para realizar a verificaccedilatildeo das regras que era colocadas na basede conhecimento Era possiacutevel chegar a cenaacuterios de inconsistecircncia atraveacutes dacontradiccedilatildeo de regras podendo chegar a cenaacuterios em que simplesmente natildeo erapossiacutevel prosseguir com a inferecircncia das regras nem tatildeo pouco chegar a umaconclusatildeo ou soluccedilatildeo possiacutevel

85

CAPIacuteTULO 5 CONCLUSOtildeES

Ao adicionar um mecanismo de verificaccedilatildeo de regras como o foi neste caso assisti-mos natildeo soacute ao cumprimento de mais um objectivo mas tambeacutem a uma evoluccedilatildeosignificativa do novo sistema pericial que com esta caracteriacutestica se torna maisfiaacutevel e eficaz

bull Manutenccedilatildeo da base de conhecimento - Neste novo sistema eacute mais simples procederagrave actualizaccedilatildeo da base de conhecimento quer para adicionar alterar ou removerfactos na mesma Jaacute natildeo eacute necessaacuterio ter formaccedilatildeo sobre a sintaxe necessaacuteria pararealizar estas operaccedilotildees deixando de lado a rigidez que era necessaacuteria aplicarno sistema base Isto permite alargar o leque de utilizaccedilatildeo do sistema a outrosutilizadores que na versatildeo anterior natildeo teriam oportunidade para o fazer

bull Melhor usabilidade - Uma das grandes transformaccedilotildees para quem conhecia osistema anterior e encontra a nova versatildeo passa pelo aspecto visual Quando umutilizador eacute confrontado com uma aplicaccedilatildeo aquilo com que se depara eacute a parte deinteracccedilatildeo responsaacutevel por mediar o diaacutelogo entre o utilizador e a aplicaccedilatildeo per si

Quando uma aplicaccedilatildeo qualquer que ela seja possui um visual pouco atraente eapelativo para o utilizador com bototildees e janelas pouco interessantes componentesmal colocados atalhos escondidos e de difiacutecil percepccedilatildeo ou ateacute mesmo comcores pouco agradaacuteveis o utilizador acaba por seja de forma gradual ou imediataabandonar a aplicaccedilatildeo e mostra pouco interesse em voltar a utilizaacute-la a natildeo ser queseja efectivamente obrigado a fazecirc-lo

Neste trabalho atraveacutes da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo web tais comoJavascript e Ajax e ainda atraveacutes da utilizaccedilatildeo do Icefaces foi possiacutevel chegar aum visual considerado por muitos utilizadores como interessante e actual o que vaiplenamente de encontro ao objectivo proposto para este ponto

bull Multi-utilizador - Uma das grandes criacuteticas do sistema base tinha efectivamente aver com o facto de natildeo ser possiacutevel colocar mais do que um utilizador a trabalharao mesmo tempo Para tal ser possiacutevel seria necessaacuterio proceder agrave instalaccedilatildeo dosistema noutro computador e consequentemente adquirir outra licenccedila comercialde utilizaccedilatildeo

Ao adicionar a capacidade de vaacuterios utilizadores poderem estar a trabalhar nosistema em simultacircneo este objectivo verifica-se como estando cumprido na to-talidade pois natildeo apenas isso jaacute eacute possiacutevel neste novo sistema pericial como acapacidade de processamento natildeo eacute afectada jaacute que eacute possiacutevel proceder agrave colocaccedilatildeo

86

52 LIMITACcedilOtildeES E TRABALHO FUTURO

da aplicaccedilatildeo num sistema de clustering em caso de deacutefices ou carga excessiva deprocessamento

bull Sistema de explicaccedilotildees - A soluccedilatildeo proposta conteacutem um sistema de explicaccedilotildees quepode ser utilizado para obter explicaccedilotildees a perguntas do tipo ldquocomordquo e ldquoporquecircrdquoEste ponto natildeo representa uma melhoria mas sim a manutenccedilatildeo de uma funcionali-dade que o GISPSA jaacute disponibilizava

bull Anaacutelise graacutefica - Este moacutedulo eacute uma nova abordagem agrave anaacutelise de uma base deconhecimento que natildeo eacute normalmente utilizado nos sistemas periciais conhecidos eque possibilita uma anaacutelise visual facilitadora do comportamento e funcionamentoda nova soluccedilatildeo

bull Suporte a vaacuterias liacutenguas - A soluccedilatildeo proposta permite de uma forma bastantesimples a implementaccedilatildeo de novas linguagens A parte da soluccedilatildeo que envolveo sistema pericial e a parte da aplicaccedilatildeo web estatildeo preparados para esta tipo desuporte contudo a base de conhecimento natildeo contempla este mecanismo e teriaque ser implementado

bull Arquitectura - O tipo de arquitectura da soluccedilatildeo proposta permite uma simplesintegraccedilatildeo com outros tipos de aplicaccedilatildeo web como por exemplo webservices ouportais Possibilita ainda como jaacute referido a separaccedilatildeo da aplicaccedilatildeo de uma formamodular permitindo uma distribuiccedilatildeo ao niacutevel do processamento

bull Migraccedilatildeo - No processo de migraccedilatildeo da base de conhecimento foram detectados ecorrigidos alguns problemas Regras inconsistentes regras repetidas e regras quenatildeo trazem novo conhecimento foram adaptadas e resolvidas evoluindo a novabase de conhecimento para uma entidade mais fiaacutevel e consistente

52 Limitaccedilotildees e trabalho futuro

Este trabalho representa um esforccedilo no sentido de apresentar uma versatildeo melhorada dosistema GISPSA e apesar de o conseguir em muitos aspectos e essencialmente em todosaqueles que foram inicialmente propostos ficam alguns aspectos que ainda poderatildeo serimplementados futuramente e que certamente contribuiratildeo para um sistema ainda melhor

Assim apresentam-se as limitaccedilotildees identificadas e as perspectivas de trabalho futuro

87

CAPIacuteTULO 5 CONCLUSOtildeES

bull Validaccedilatildeo de regras - Apesar de ser jaacute possiacutevel neste novo sistema pericial procederagrave verificaccedilatildeo de regras como mecanismo de prevenccedilatildeo de redundacircncias e contradi-ccedilotildees ainda natildeo eacute possiacutevel a validaccedilatildeo por parte de um perito dessas mesmas regrasa natildeo ser que essa validaccedilatildeo seja feita em modo ad hoc

Seria importante a criaccedilatildeo de um modo lsquosupervisorrsquo ou modo lsquoperitorsquo paraque a aplicaccedilatildeo pudesse adoptar uma postura natildeo soacute de linguagem adaptada aum utilizador com maior formaccedilatildeo na aacuterea (como seraacute o caso de perito) mastambeacutem pudesse assumir uma postura de simulaccedilatildeo em que seriam apresentadosnatildeo soacute os passos tomados como eventuais cenaacuterios em caso de respostas diferentesIsto permitiria a um perito confrontar o seu proacuteprio conhecimento com o sistemapericial realizando desta forma uma validaccedilatildeo do funcionamento do sistema e dabase de conhecimento

Para aleacutem disto sendo uma aplicaccedilatildeo web o modo lsquosupervisorrsquo ou modo lsquope-ritorsquo poderia ser acedido a partir de qualquer siacutetio e a qualquer hora Se o responsaacute-vel pela validaccedilatildeo da base de conhecimento (normalmente o perito que contribuiucom o conhecimento) natildeo estiver disponiacutevel para o fazer por motivos de ausecircnciaou incompatibilidade de horaacuterios poderaacute sempre realizar o acesso agrave aplicaccedilatildeoa partir de um outro local agrave hora que mais lhe aprouver sem qualquer tipo deprejuiacutezo quer para o perito quer para o proacuteprio sistema

bull Muacuteltiplas conclusotildees - Com o trabalho desenvolvido apenas eacute possiacutevel atraveacutesdo disparo de uma regra final chegar a uma uacutenica conclusatildeo Deveria ser possiacutevelchegar a muacuteltiplas conclusotildees pelo que natildeo tendo sido implementado nesta versatildeoconsidera-se como uma possibilidade de trabalho futuro

Aparentemente sem qualquer relaccedilatildeo a necessidade evidenciada no ponto anteriorde criar um modo lsquosupervisorrsquo ou modo lsquoperitorsquo poderaacute levar um futurodesenvolvimento no sentido de criar as muacuteltiplas conclusotildees aqui referidas jaacute queao permitir este modo de funcionamento tambeacutem deveraacute ser possiacutevel inferir sobrevaacuterios cenaacuterios possiacuteveis e respectivas conclusotildees

bull Negaccedilatildeo de premissas - Nesta versatildeo do trabalho apenas eacute possiacutevel criar regrassem negaccedilatildeo Por exemplo num cenaacuterio em que uma pergunta ao utilizador tem aforma

Qual a cor (Vermelho Azul Verde)

e as regras que satildeo candidatas a disparo forem

88

52 LIMITACcedilOtildeES E TRABALHO FUTURO

R1 - SE cor Vermelho R2 - SE cor Azul R3 SE cor Verde

entatildeo natildeo eacute possiacutevel caso seja necessaacuterio ter uma regra do tipo

Rx - SE cor NOT XXXXX

Isso apenas seria possiacutevel se a pergunta inicial fosse

Qual NAtildeO Eacute a cor (Vermelho Azul Verde)

para assim permitir regras do tipo

Rx - SE NAtildeO Eacute cor XXXXX

Assim sendo aponta-se como uma limitaccedilatildeo e eventual trabalho futuro a desenvol-ver para outras versotildees da aplicaccedilatildeo a criaccedilatildeo de um sistema que permita a negaccedilatildeode premissas para que o exemplo atraacutes indicado seja de possiacutevel implementaccedilatildeo

bull Contemplar factos iniciais nas regras - A versatildeo actual do sistema natildeo permite ainclusatildeo de factos inicias nas premissas das regras

bull Pesquisa de muacuteltiplas soluccedilotildees finais - Actualmente soacute eacute permitido executar omotor de inferecircncia com uma soluccedilatildeo final como objectivo Seria uma evidentemais valia a inclusatildeo da capacidade de pesquisa por muacuteltiplas soluccedilotildees

bull Metaconhecimento - ao ser adicionado metaconhecimento podemos aumentar odesempenho do motor de inferecircncia nos cenaacuterios em que temos bases de conheci-mento consideravelmente grandes

bull Regra mais relevante para iniciar o motor de inferecircncia - desenvolver um algoritmopara obter uma regra que tenha uma maior probabilidade de sucesso de forma aminimizar iteraccedilotildees desnecessaacuterias

bull Validaccedilatildeo automaacutetica - quando as questotildees satildeo apagadas deve ser realizada arespectiva verificaccedilatildeo de utilizaccedilatildeo dessas questotildees como condiccedilotildees de regras paraprevenir possiacuteveis inconsistecircncias

bull Suporte a vaacuterias liacutenguas - a base de conhecimento natildeo foi projectada para imple-mentar esta funcionalidade

89

Bibliografia

Acquired Intelligence (2010) Acquire httpwwwaiincca Junho de 201025

Alexander Shapiro (2010) Tggraphlayout httpsourceforgenet

projectstouchgraph Julho de 2010 49 79

Barnett J A (1991) Calculating dempster-shafer plausibility IEEE Transactions on

Pattern Analysis and Machine Intelligence 13 599ndash602 16

Boris van Schooten (2005) Yprolog httpwwwvfutwentenl

~schootenyprolog Junho de 2010 37

Carlos Figueira Filho (2010) JEOPS - Integraccedilatildeo entre Objetos e Regras de Produccedilatildeoem Java httpwwwcinufpebr~jeops Julho de 2010 36

CoAJRA J (1997) The basics of expert (knowledge based) systems 18

Dokas I M (2005) Developing web sites for web based expert systems A webengineering approach In In Proceedings of the Second International ICSC Symposium

on Information Technologies in Environmental Engineering (Magdeburg pages 202ndash217 Shaker Verlag 26

Drakopoulos J (1994) Probabilities possibilities and fuzzy sets Fuzzy Sets and

Systems 75 1ndash15 16

Elie Levy (2010) Zilonis httpwwwzilonisorgindexphp Junho de2010 37

Ernest Friedman-Hill (2010) Jess httpwwwjessrulescom Julho de 201025 36

EXSYS (2010) Exsys corvid httpwwwexsyscom Junho de 2010 24

Filho A R (2010) Mdss medical diagnosis support system LPA - Logic ProgrammingAssociates Ltd 30

Giarratano C J Riley and D G (1998) Expert Systems - Principles and Programming

Thirds Edition Principles and Programing Course Technology 3ed edition 6 18

91

BIBLIOGRAFIA

Hammurapi Group (2010) Hammurapi rules httpwwwhammurapicom

dokuwikidokuphp Junho de 2010 36

Heckerman D (1992) The certainty-factor model 16

IBM (2010) Jlog httpwww-01ibmcomsoftwarewebsphere

productsbusiness-rule-management Junho de 2010 36

Kozlenkov Alex and Paschke (2010) Prova rule language httpprovaws

indexhtml Junho de 2010 37

Logic Programming Associaties Ltd (2010) Lpa webflex httpwwwlpacouk Abril de 2010 24

Lucas P (2001) Certainty-factor-like structures in bayesian belief networks Knowledge-

Based Systems 14 327ndash335 16

Maarten Menken (2010) Jclips httpsourceforgenetprojects

jclips Julho de 2010 25 36

Mcarniel (2010) Jruleengine httpjruleenginesourceforgenet

indexhtml Junho de 2010 37

Merritt D (1989) Building expert systems in Prolog 6 56

Michael Giordano (2010) Webclips httpclipsinterfacesourceforgenetWebCLIPSwchomehtm 28 de Julho de 2003 24

OpenL (2010) Openl tablets httpopenl-tabletssourceforgenetJulho de 2010 37

OpenRules Inc (2010) Open rules engine httpopenrulescomindex

htm Julho de 2010 37

Pinto A (1998) GISPSA - GIS problem solver adviser 1 20

RedHat (2010) Drools httpwwwjbossorgdroolsdrools-experthtml Junho de 2010 36

Shortliffe E H and Buchanan B G (1990) A model of inexact reasoning in medicinepages 259ndash275 16

Wilson N (2000) Algorithms for dempster-shafer theory In Algorithms for Uncertainty

and Defeasible Reasoning pages 421ndash475 Kluwer Academic Publishers 16

92

Anexos

93

ACoacutedigo do motor de inferecircncia

Iniacutecio do motor de inferencia

init_inference- retractall(hist2) consult(rsquokbsyplrsquo)

top_goals(ControlObj MinCF) - top_goal(TopGoal) top(TopGoal ControlObj MinCF)

top(TopGoal ControlObj MinCF) - retractall(hist2) set(len 0)

getRuleMoreRelevant(TopGoal Rule) tryToProove(Rule ControlObj MinCF)

tryToProove(Rule ControlObj MinCF)- rule(Rule _ lhs(LHS) _)

proveListHyp(LHS ControlObj MinCF)get(len LEN)println(LEN)

LEN1 is LEN + 1assert(hist(LEN1Rule))println(LEN1)

set(len LEN1)

(

check if rule has return control object

(var(ControlObj)) -gt(

no control object found check if other rules needs to be fired

fireRules(ControlObj MinCF)

)(

control object found

true

)

)

proveListHyp([] ControlObj MinCF)

proveListHyp([H|T] ControlObj MinCF)-proveHyp(H ControlObj MinCF)

((var(ControlObj)) -gt (proveListHyp(T ControlObj MinCF))(true))

fact already known

proveHyp(H ControlObj MinCF)- H = ev(X Y) fact(X Y_ )

there is a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _)

not(fact(X _ _))question(X _ _ _)

not(not_question(X))ControlObj = ask(X)

95

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

there is a conclusion that can lead to a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _) rule(Rule _ lhs(LHS)

rhs(ev(X_) V))

tryToProove(Rule ControlObj MinCF)

ADD A FACT

av(Attr Value Confidence ControlObj MinCF) - retractall(hist2)set(len 0)

saveFact(Attr Value Confidence 1 CF_FINAL _)

fireRules(ControlObj MinCF)

nav(Attr)-assert(not_question(Attr))

fireRules(ControlObj MinCF)- rule(X _ lhs(LHS) rhs(ev(Y R) Conf))

not(inf_rules_fired(X_)) evaluate(LHS ConfLhs 1)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF)

get(len LEN) LEN1 is LEN + 1 assert(hist(LEN1Rule))

set(len LEN1)

(

(var(ControlObj)) -gt(

(top_goal(Y)) -gt (

ControlObj = answerFound(Y R ConfRet)

)(

true fireRules(ControlObj MinCF)

))(

true

)

)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF) -

calculateConfidence(ConfLhs Conf ConfRet)

ConfRet gt MinCF

saveFact(Y R ConfRet 2 CF_FINAL X)

assert(inf_rules_fired(X ConfRet))

evaluate([] [] 1)- true

evaluate([H|T] [FactConf|LConf] RetCode)-

H = ev(X Ans)fact(X Ans FactConf)

evaluate(T LConf RetCode)

calculateConfidence(ConfLhs RuleCF ResultCF)-min_in_list(ConfLhs MinLHSCF)

ResultCF is MinLHSCF RuleCF 100

min_in_list([Min]Min)

min_in_list([HK|T]M) - H lt= K min_in_list([H|T]M)

min_in_list([HK|T]M) - H gt K min_in_list([K|T]M)

1 - fornecido 2 - inferido

we have a fact saved with the same conclusion already

96

saveFact(Attr Value Confidence Mode CF_Final Rule)-

fact(Attr Value OldConfidence)

combine(OldConfidence Confidence CF_Final)

retract(fact(Attr Value OldConfidence))

retract(inf_sys_fact(Attr Value OldConfidence _))

assert(fact(Attr Value CF_Final))

assert(inf_sys_fact(Attr Value CF_Final Mode))

linkFactToRule(Rule Attr Value Mode)

we donrsquot have any fact saved

saveFact(Attr Value Confidence Mode Confidence Rule)-

assert(fact(Attr Value Confidence))

assert(inf_sys_fact(Attr Value Confidence Mode))

linkFactToRule(Rule Attr Value Mode)

linkFactToRule(___1)

linkFactToRule(RuleAttrValue2)-

inf_exp_how(Attr Value oldRules)

retract(inf_exp_how(Attr Value oldRules))

assert(inf_exp_how(Attr Value [Rule|oldRules]))

linkFactToRule(RuleAttrValue2)-

assert(inf_exp_how(Attr Value [Rule]))

println(rsquosaved line with information on explanation howrsquo) listing

combine(CF1 CF2 CF) - CF1 gt= 0 CF2 gt= 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CF is CF1 + Calc

combine(CF1 CF2 CF) - CF1 lt 0 CF2 lt 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CFAux is CF1 + Calc CF is 0-CFAux

combine(CF1 CF2 CF) - (CF1 lt 0 CF2 lt 0) (CF1 gt 0 CF2 gt 0)

SumCFs is CF1 + CF2 abs_minimum(CF1 CF2 MCF)

Rest is 100 - MCFCF is 100 SumCFs Rest

abs_minimum(ABX) - absolute(A AA) absolute(B BB)minimum(AABBX)

absolute(X X) -X gt= 0

absolute(X Y) -X lt 0Y is 0-X

minimum(XYX) -X lt= Y

minimum(XYY) -Y lt= X

Rule verification

verification(L)-retractall(validation_fired1)

retractall(verification_error4)set(nextid 0)

findall(IDverification_rule_1(ID _ _ _)L)

verification_rule_1(ID RuleInError RuleRelated Result)-

rule(A _ lhs(CA) RA)rule(B _ lhs(CB) RB)

not( B = A)not(validation_fired(B))

checkConditionsSimilar(CA CB FullMatch)

checkResultSimilar(FullMatch RA RB Result)

assert(validation_fired(B))

97

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

get(nextid CURR_ID)ID is CURR_ID + 1

set(nextid ID)

assert(verification_error(ID B A Result))

RuleInError = B RuleRelated = A

checkConditionsSimilar(CA CB FullMatch)-checkConditionsSimilar_1(CACB)

lent(CA X) lent(CB Y) testCheck(X Y FullMatch)

testCheck(X X 1)

testCheck(X Y 0)- not(X = Y)

checkConditionsSimilar_1([] L)

checkConditionsSimilar_1([H|R] L)- member(H L) checkConditionsSimilar_1(R L)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueB) CFB) 2)-

not(ValueA = ValueB)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueA) CFB) 2)

checkResultSimilar(0 rhs(ev(Atom Value) CFA) rhs(ev(Atom Value) CFB) 1)-

CFB lt= CFA

lent([] 0)

lent([_|R] SizeT)- lent(R Size)SizeT is Size + 1

Rule verification

retrieve_rules(L)-

findall(X rule(X _ __) L)

retrieve_questions(L)-

findall(X question(X ___) L)

Information predicates

inf_sys(L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)-

i_sys_rules(L_Rules)i_sys_inf_fact(L_Inf_Facts)

i_sys_know_fact(L_Know_Facts) i_sys_init_fact(L_Init_Facts)

i_sys_rules(L)-

findall(r(Rule Conf) inf_rules_fired(Rule Conf) L) member(C L)

i_sys_rules([])

i_sys_inf_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 2) L) member(C L)

i_sys_inf_fact([])

i_sys_know_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 1) L) member(C L)

i_sys_know_fact([])

98

i_sys_init_fact(L)-

findall(f(Attr Value Conf) condition_init(Attr Value Conf) L) member(C L)

i_sys_init_fact([])

condition_init(Attr Value Conf)-fact(Attr Value Conf)

not(inf_sys_fact(Attr _ _ _))

explanations

why(L)-findall(r(OX) hist(OX) L)

how(Attr Value Result)- inf_exp_how(Attr Value Rules)

explainHow(Rules Explanation)append(Rules Explanation Result)

explainHow([] [])

explainHow([H|T] Result)- innerExplain(H ExplanationH)

explainHow(T ExplanationRules) append(ExplanationH ExplanationRules Result)

innerExplain(Rule Explanation)- rule(Rule _ lhs(LHS) _)

explainLHS(LHS Explanation)

explainLHS([] [])

explainLHS([ev(Attr Value)|T] ExplanationA)-

not(inf_exp_how(Attr Value _))

fact(Attr Value _) print(rsquoinitial factrsquo)

explainLHS(T ExplanationA)

explainLHS([ev(Attr Value)|T] ResultA)-

how(Attr Value ExplanationA)

explainLHS(T Explanation)

append(ExplanationA Explanation ResultA)

append([] L L)

append(L [] L)

append([H|T] M [H|N])-append(L M N)

Map methods

buildValidationReport(Id RErr RRel ErrType)-

verification_error(Id RErr RRel ErrType)

buildQuestionObject(ask(X) X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

buildQuestionObject_by_code(X X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

99

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

buildSolutionObject(answerFound(Y R Found) Y R Found)

buildRuleObject(Rule Descr LHS RHS CF)-

rule(Rule Descr lhs(I_LHS) rhs(I_RHS CF))

lhs_flatten(I_LHS LHS)

rhs_flatten(I_RHS RHS)

flatten(L LO)- iflatten(L LO)

iflatten([] [])

iflatten([H|R] [AD|L])- H = answer(A D) iflatten(R L)

lhs_flatten(L LO)- ilhs_iflatten(L LO)

ilhs_iflatten([] [])

ilhs_iflatten([H|R] [[ADCB]|L])-H = ev(A D)question(A C LL _)

findMember(LLDB)ilhs_iflatten(R L)

ilhs_iflatten([H|R] [[ADAD]|L])-H = ev(A D)not(question(A _ _ _))

ilhs_iflatten(R L)

rhs_flatten(ev(AB) [AB])

findMember([] D D)-

findMember([H|T] D B)-H = answer(D B)

findMember([H|T] D B)-findMember(T D B)

attempt to Get more relevant rule

getRuleMoreRelevant(TopGoal Rule)-

rule(Rule_ _ rhs(ev(P V) X)) top_goal(P)

find the rules that contains a direct solution

findall(X rule(X lhs(LLHS) rhs(ev(TopGoal _)_)) LX)

debugLine(trc1rsquogtrsquo)debugList(LX)

For the main rules apply the algorithm

fillMainRules(LX LOUT)

bubble_sort(LOUT LREALLYOUT)

LREALLYOUT = [ score_table(Rule _ _ _) | _ ]

debugLine(trc1rsquogtrsquo)debugList(LREALLYOUT)

fillMainRules([] [])-

fillMainRules([HIN|RIN] [HOUT|LOUT])- calculateCurrentRule(HIN HOUT)

fillMainRules(RIN LOUT)

calculateCurrentRule(HIN HOUT)-rule(HIN _ lhs(LHS) rhs(_ Confidence))

calculateScoreBasedOnLHS(LHS 0 Score)

OrderIndice is Score Confidence

HOUT = score_table(HIN Score Confidence OrderIndice)

calculateScoreBasedOnLHS([] ScoreResult ScoreResult)-

100

calculateScoreBasedOnLHS([HLHS|RLHS] Score ScoreResult)-

calculateScoreBasedOnLHSCurrent(HLHS Score ScoreAfter)

calculateScoreBasedOnLHS(RLHS ScoreAfter ScoreResult)

calculateScoreBasedOnLHSCurrent(ev(X _) Score ScoreAfter)-

question(X _ _ _) not(fact(X _ _))

ScoreAfter is Score + 1

calculateScoreBasedOnLHSCurrent(ev(X _) Score Score)-

helper methods

bubble_sort(ListSorted)-b_sort(List[]Sorted)

b_sort([]AccAcc)

b_sort([H|T]AccSorted)-bubble(HTNTMax)b_sort(NT[Max|Acc]Sorted)

bubble(X[][]X)

bubble(X[Y|T][Y|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C lt= D bubble(XTNTMax)

bubble(X[Y|T][X|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C gt Dbubble(YTNTMax)

bubble_sort2(ListSorted)-b_sort2(List[]Sorted)

b_sort2([]AccAcc)

b_sort2([H|T]AccSorted)-bubble2(HTNTMax)b_sort2(NT[Max|Acc]Sorted)

bubble2(X[][]X)

bubble2(X[Y|T][Y|NT]Max)- X = r(D _) Y = r(C _) C lt= D bubble(XTNTMax)

bubble2(X[Y|T][X|NT]Max)- X = r(D _) Y = r(C _) C gt Dbubble(YTNTMax)

Allows to get a Bag of all the X that makes Goal evaluate to true

Bag can contain duplicated X

findall(XGoalBag) - post_it(XGoal) gather([]Bag)

Aux

post_it(XGoal) - call(Goal) asserta(data999(X)) fail

post_it(__)

gather(BBag) - data999(X) retract(data999(X)) gather([X|B]Bag)

gather(SS)

member(X[X|_])-

member(X[_|Y]) - member(XY)

101

BBase de conhecimento do protoacutetipo

question(turn_over rsquoO carro ligarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(lights_weak rsquoAs luzes estatildeo fracasrsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(radio_weak rsquoO raacutedio estaacute fracorsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(smell_gas rsquoCheira a gasolinarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(gas_gauge rsquoO que marca o ponteiro do depoacutesito da gasolinarsquo

[ answer(empty rsquoVaziorsquo) answer(high rsquoSuficientersquo) answer(low rsquoReservarsquo)]0)

rule(rule_1 rsquoRule 1rsquolhs([ev(turn_over no) ev(battery_bad yes)])

rhs(ev(problem battery) 100))

rule(rule_2 rsquoRule 2rsquolhs([ev(lights_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_3 rsquoRule 3rsquolhs([ev(radio_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_4 rsquoRule 4rsquolhs([ev(smell_gas yes) ev(turn_over yes)])

rhs(ev(problem flooded) 80))

rule(rule_5 rsquoRule 5rsquolhs([ev(turn_over yes) ev(gas_gauge empty)])

rhs(ev(problem out_of_gas) 90))

rule(rule_6 rsquoRule 6rsquolhs([ev(turn_over yes) ev(gas_gauge low)])

rhs(ev(problem out_of_gas) 30))

rule(rule_7 rsquoRule 7rsquolhs([ev(gas_gauge low)ev(turn_over yes)])

rhs(ev(problem out_of_gas) 30))

103

ANEXO B BASE DE CONHECIMENTO DO PROTOacuteTIPO

rule(rule_8 rsquoRule 8rsquo

lhs([ev(turn_over yes) ev(gas_gauge low) ev(smell_gas no)])

rhs(ev(problem out_of_gas) 30))

top_goal(problem)

104

CBase de conhecimento GISPSA

question(qs_tema_ger rsquoQual o tipo de Problemarsquo

[ answer(c_ger_map rsquoMapas Configuraacuteveisrsquo) answer(c_ger_inq rsquoInqueacuteritos e Listagensrsquo)

answer(c_ger_mov rsquoCGMOVIGrsquo) answer(c_ger_pla rsquoCGDCGERrsquo)

answer(c_ger_acm rsquoCGVACUMCGTACUMrsquo)]0)

question(qs_plareg rsquoA Conta tem regra de construcccedilatildeo associada rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipr rsquoExiste Conta Pai do Tipo R no Planorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaent rsquoConta aberta por entidadesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipa rsquoConta do Tipo Arsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plalim rsquoEntidade encontra-se nos limitesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaexis rsquoEntidade Existentersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plamix rsquoContas Valor entre Contas Movimentorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acumul rsquoQual o problema de acumuladosrsquo

[ answer(c_acm_avm rsquoCGVACUM ltgt CGMOVIGrsquo)

answer(c_acm_si rsquoSaldos Iniciaisrsquo)

answer(c_acm_cna rsquoContas Nao Acumulamrsquo)

answer(c_acm_avat rsquoCGVACUM ltgt CGTACUMrsquo)]0)

question(qs_incmov rsquoInconsistecircncias no CGMOVIGrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

105

ANEXO C BASE DE CONHECIMENTO GISPSA

question(qs_incpla rsquoInconsistecircncias no CGDCGERrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acmsia rsquoSaldos Iniciais Alteradosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movi rsquoQual o problema dos movimentosrsquo

[ answer(c_mov_lan rsquoLanccedilamentos nao balanceadosrsquo)

answer(c_mov_con rsquoProblema de Contasrsquo)

answer(c_mov_cgca rsquoMovimentos CG ltgt CArsquo)]0)

question(qs_movvdif rsquoValores CG gt CArsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlgca rsquoCC Ligados a Analiticarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlg100 rsquoTodas as Ligacoes a 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movm100 rsquoDiferencas Correspondem a CC com Mais de 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcna rsquoLancamento em Contas nao Existentesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movci rsquoLancamento em Contas Invalidasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcdf rsquoContas correctasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_inquer rsquoInqueacuterito ou listagemrsquo

[ answer(c_inq_bal rsquoBalancetersquo) answer(c_inq_dia rsquoExtractoDiariorsquo)]0)

question(qs_inqsal rsquoProblema de saldosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapa rsquoProblema dos mapasrsquo

[ answer(c_map_imp rsquoErro na Impressaorsquo) answer(c_map_cal rsquoErro no Calculorsquo)

answer(c_map_mic rsquoErro na Transferencia P Microrsquo)]0)

question(qs_mapcol0 rsquoA ultima linha calculada tem a coluna 0 configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapfunc

rsquoA ultima linha calculada apresenta colunas com funcoes invalidas ou sintaxe erradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin0 rsquoA Linha 000 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin9 rsquoA Linha 999 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

106

question(qs_map2alg rsquoTodos os Valores da Linha 999 tem 2 Algarismosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_map198 rsquoA Soma dos Valores da Linha 999 Ultrapassa 198rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapsys rsquoO Sistema Permite a Utilizacao de Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapuser rsquoO Utilizador Tem Acesso a Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapflr rsquoO Folder Existersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

rule(r_pla_1 r_pla_1lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plareg c_sim)])

rhs(ev(dominio d_pla_reg) 100)

)

rule(r_pla_2 r_pla_2lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plaent c_sim)])

rhs(ev(dominio d_pla_ent) 100)

)

rule(r_pla_3 r_pla_3lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plamix c_sim)])

rhs(ev(correccao cr_pla_mix) 100)

)

rule(r_pla_11 r_pla_11lhs([ev(dominio d_pla_reg) ev(qs_platipr c_nao)])

rhs(ev(correccao cr_pla_tipr) 100)

)

rule(r_pla_21 r_pla_21lhs([ev(dominio d_pla_ent) ev(qs_platipa c_nao)])

rhs(ev(correccao cr_pla_tipa) 100)

)

rule(r_pla_22 r_pla_22lhs([ev(dominio d_pla_ent) ev(qs_plalim c_nao)])

rhs(ev(correccao cr_pla_lim) 100)

)

rule(r_pla_23 r_pla_23lhs([ev(dominio d_pla_ent) ev(qs_plaexis c_nao)])

rhs(ev(correccao cr_pla_exis) 100)

)

rule(r_acm_1 r_acm_1

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_2 r_acm_2

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_3 r_acm_3

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_4 r_acm_4

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_5 r_acm_5

107

ANEXO C BASE DE CONHECIMENTO GISPSA

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_6 r_acm_6

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_7 r_acm_7

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_si) ev(qs_acmsia c_nao)])

rhs(ev(correccao cr_acm_si) 100)

)

rule(r_mov_1 r_mov_1lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_lan)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_2 r_mov_2lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_cgca)])

rhs(ev(dominio d_mov_cgca) 100)

)

rule(r_mov_21 r_mov_21lhs([ev(dominio d_mov_cgca) ev(qs_movvdif c_sim)])

rhs(ev(subdominio d_mov_cgca_1) 100)

)

rule(r_mov_22 r_mov_22lhs([ev(dominio d_mov_cgca) ev(qs_movm100 c_sim)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_23 r_mov_23lhs([ev(dominio d_mov_cgca)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_3 r_mov_3lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_con)])

rhs(ev(dominio d_mov_con) 100)

)

rule(r_mov_31 r_mov_31lhs([ev(dominio d_mov_con) ev(qs_movcna c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_32 r_mov_32lhs([ev(dominio d_mov_con) ev(qs_movci c_nao)])

rhs(ev(correccao cr_mov_inc_soft) 100)

)

rule(r_mov_33 r_mov_33lhs([ev(dominio d_mov_con) ev(qs_movcdf c_nao)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_34 r_mov_34lhs([ev(dominio d_mov_con)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_211 r_mov_211lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlgca c_nao)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_212 r_mov_212lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlg100 c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_213 r_mov_213lhs([ev(subdominio d_mov_cgca_1)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_inq_1 r_inq_1lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inquer c_inq_bal)])

rhs(ev(correccao cr_inq_bal) 100)

)

rule(r_inq_2 r_inq_2lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inqsal c_sim)])

108

rhs(ev(correccao cr_inq_dia) 100)

)

rule(r_map_1 r_map_1lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_cal)])

rhs(ev(dominio d_map_cal) 100)

)

rule(r_map_2 r_map_2lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_imp)])

rhs(ev(dominio d_map_imp) 100)

)

rule(r_map_3 r_map_3lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_mic)])

rhs(ev(dominio d_map_mic) 100)

)

rule(r_map_11 r_map_11lhs([ev(dominio d_map_cal) ev(qs_mapcol0 c_sim)])

rhs(ev(correccao cr_map_cal_col0) 100)

)

rule(r_map_12 r_map_12lhs([ev(dominio d_map_cal) ev(qs_mapfunc c_sim)])

rhs(ev(correccao cr_map_cal_func) 100)

)

rule(r_map_13 r_map_13lhs([ev(dominio d_map_cal)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_21 r_map_21lhs([ev(dominio d_map_imp) ev(qs_maplin0 c_nao)])

rhs(ev(correccao cr_map_imp_lin0) 100)

)

rule(r_map_22 r_map_22lhs([ev(dominio d_map_imp) ev(qs_maplin9 c_nao)])

rhs(ev(correccao cr_map_imp_lin9) 100)

)

rule(r_map_23 r_map_23lhs([ev(dominio d_map_imp) ev(qs_map2alg c_nao)])

rhs(ev(correccao cr_map_imp_2alg) 100)

)

rule(r_map_24 r_map_24lhs([ev(dominio d_map_imp) ev(qs_map198 c_nao)])

rhs(ev(correccao cr_map_imp_198) 100)

)

rule(r_map_25 r_map_25lhs([ev(dominio d_map_imp)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_31 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapsys c_nao)])

rhs(ev(correccao cr_map_sys) 100)

)

rule(r_map_32 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapuser c_nao)])

rhs(ev(correccao cr_map_user) 100)

)

rule(r_map_33 r_map_33lhs([ev(dominio d_map_mic) ev(qs_mapflr c_nao)])

rhs(ev(correccao cr_map_mic_flr) 100)

)

rule(r_map_34 r_map_34lhs([ev(dominio d_map_mic)])

rhs(ev(correccao cr_map_soft) 100)

)

top_goal(correccao)

109

  • Lista de Figuras
  • Lista de Tabelas
  • Lista de Coacutedigo
  • Lista de Algoritmos
  • Lista de Acroacutenimos
  • Introduccedilatildeo
    • Enquadramento
    • Objectivos
    • Planeamento
    • Estruturaccedilatildeo da dissertaccedilatildeo
      • Estado da arte
        • Sistemas periciais
          • Arquitectura
          • Base de conhecimento
            • Regras
            • Frames
            • Redes semacircnticas
            • Mecanismos de inferecircncia
            • Manutenccedilatildeo de uma base de conhecimento
              • Raciociacutenio sobre incerteza
                • Factores de certeza
                  • Vantagens e desvantagens
                    • GISPSA - GIS Problem Solver Advisor
                      • Arquitectura
                      • Funcionamento
                      • Limitaccedilotildees
                        • Web Expert Systems
                          • Casos de estudo
                            • LOMA - Landfill Operation Management Advisor
                            • MDSS - Medical Diagnosis Support System
                            • Whale watcher
                              • Ferramentas utilizadas
                                • Ambiente de desenvolvimento
                                • Motor de inferecircncia
                                  • Fase I - Recolha de candidatos
                                  • Fase II - Requisitos base
                                  • Fase III - Viabilidade econoacutemica
                                  • Fase IV - Viabilidade teacutecnica
                                  • Fase V - Prova de conceito
                                  • Conclusatildeo e fundamentaccedilatildeo da escolha
                                      • Wexsys
                                        • Arquitectura global
                                          • Moacutedulo pWexsysEAR
                                          • Moacutedulo WexsysEAR
                                          • Interligaccedilatildeo e integraccedilatildeo dos moacutedulos
                                            • Camada de acesso puacuteblico
                                            • Camada de acesso protegido
                                            • Camada de acesso privado
                                            • Fluxo de invocaccedilatildeo
                                              • Portal
                                                • Templates
                                                  • Suporte multi-liacutengua
                                                    • Motor de inferecircncia
                                                      • Multi-utilizador
                                                      • Base de conhecimento inicial
                                                      • Protoacutetipo do motor de inferecircncia
                                                        • Formato das regras
                                                        • Formato das questotildees
                                                        • Interacccedilatildeo assiacutencrona de questotildees e respostas
                                                        • Estrutura da base de conhecimento
                                                        • Algoritmos a utilizar
                                                          • Resultado final
                                                            • Arranque da execuccedilatildeo
                                                            • Mecanismo de respostas
                                                            • Conclusatildeo final encontrada
                                                            • Explicaccedilotildees
                                                                • Base de conhecimento
                                                                  • Leitura da base de conhecimento
                                                                  • Conclusatildeo final a encontrar
                                                                  • Factos iniciais
                                                                  • Regras
                                                                    • CriarAlterar uma regra
                                                                    • Questotildees
                                                                    • Verificaccedilatildeo
                                                                      • Gravaccedilatildeo da base de conhecimento
                                                                      • Conversatildeo GISPSA
                                                                        • Anaacutelise graacutefica
                                                                          • Implementaccedilatildeo
                                                                          • Funcionamento
                                                                          • Limitaccedilotildees
                                                                              • Conclusotildees
                                                                                • Contributos da soluccedilatildeo desenvolvida
                                                                                • Limitaccedilotildees e trabalho futuro
                                                                                  • Bibliografia
                                                                                  • Anexos
                                                                                  • Coacutedigo do motor de inferecircncia
                                                                                  • Base de conhecimento do protoacutetipo
                                                                                  • Base de conhecimento GISPSA
Page 11: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System

Lista de Tabelas

1 Listagem de produtos da Fase I 362 Listagem de produtos excluiacutedos na Fase II 383 Listagem de produtos excluiacutedos na Fase III 384 Listagem de produtos excluiacutedos na Fase IV 395 JClips - Vantagens e desvantagens 396 Prova - Vantagens e desvantagens 407 YProlog - Vantagens e desvantagens 40

xvii

Lista de Coacutedigo

1 Excerto da classe RuleView 472 Excerto da classe Rule 473 Coacutedigo do template principal do portal 514 Coacutedigo da paacutegina inicial do portal 535 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo 546 Representaccedilatildeo da base de conhecimento do protoacutetipo 587 Predicados principais do motor de inferecircncia 638 Predicados principais do sistema de explicaccedilotildees 70

xix

Lista de Algoritmos

1 Algoritmo principal do motor de inferecircncia 602 Verifica se uma premissa eacute verdadeira 613 Dispara as regras que possam ser disparadas 614 Algoritmo responsaacutevel pelo desenho da applet 805 Algoritmo para construccedilatildeo dos dados do grafo 81

xxi

Lista de Acroacutenimos

AI Artificial Intelligence ou Inteligecircncia Artificial

BRMS Business Rule Management System

CF Certainty Factors ou Factores de Certeza

CLIPS C Language Integrated Production System

DTO Data Transfer Object

ES Expert System

GIS Gestatildeo Integrada de Seguros

GISPSA GIS Problem Solver Advisor

IDE Integrated Development Environment

JEOPS Java Embedded Object Production System

JSF JavaServer Faces

LHS Left-Handed Side

LOMA Landfill Operation Management Advisor

MDSS Medical Diagnosis Support System

ODBC Open Data Base Connectivity

OO Object Oriented

RHS Right-Handed Side

SP Sistema Pericial

SDK Software Development Kit

xxiii

1Introduccedilatildeo

Este trabalho eacute desenvolvido no acircmbito do Mestrado em Engenharia Informaacutetica ramode Tecnologias do Conhecimento e Decisatildeo e teve a sua origem a partir de um sistemadoravante designado por sistema base desenvolvido por Pinto Este sistema base foidesenvolvido durante a realizaccedilatildeo de um trabalho acadeacutemico (Pinto (1998)) cujo principalobjectivo era a construccedilatildeo de um sistema pericial

Na altura da sua criaccedilatildeo o sistema base apenas estava preparado para uma utilizaccedilatildeodo tipo mono-posto Ficava assim estabelecida a condiccedilatildeo de apenas um utilizador decada vez ter acesso ao sistema base Natildeo era exigiacutevel nem sequer necessaacuterio que outrocenaacuterio fosse equacionado dado tratar-se de um trabalho acadeacutemico O sistema ficoudesta forma limitado

Assim somos remetidos a um dos objectivos iniciais que levaram ao desenvolvimentodo trabalho que agora aqui se apresenta Proceder agrave evoluccedilatildeo do sistema base garantindoque o mesmo possa ser acedido por muacuteltiplos utilizadores de forma simultacircnea e a suadisponibilizaccedilatildeo num ambiente de acesso global mediante a utilizaccedilatildeo de redes sendoque a preferecircncia recai sobre a rede mais global que existe a internet Referindo-nos aeste tipo de disponibilizaccedilatildeo com todas as vantagens que lhe estatildeo afectas o proacuteximopasso loacutegico seria a integraccedilatildeo do novo sistema num portal

Eacute tambeacutem um objectivo inicial proceder agrave alteraccedilatildeo da actual forma de manutenccedilatildeo doconhecimento Pretende-se desenvolver um mecanismo de manutenccedilatildeo de conhecimentoque simplifique a interacccedilatildeo com o utilizador

Por uacuteltimo os objectivos deste trabalho passam igualmente pelo melhoramento dosistema base tentando eliminar alguns erros que foram detectados ao longo do tempo eacrescentando algumas caracteriacutesticas que entretanto surgiram e que foram consideradasnecessaacuterias

1

CAPIacuteTULO 1 INTRODUCcedilAtildeO

11 Enquadramento

O sistema a desenvolver embora tenha como ponto de partida um sistema base criado parautilizaccedilatildeo mono-posto faraacute parte de um portal onde seraacute integrado como uma ferramentade apoio na resoluccedilatildeo de problemas operacionais

Para aleacutem de actualmente fazer muito mais sentido a disponibilizaccedilatildeo do sistemanum ambiente de acesso globalizado e com a possibilidade de vaacuterios utilizadores emsimultacircneo a grande vantagem reside no facto de poder utilizar a mesma base de conhe-cimento que alimenta o sistema pericial independentemente do local onde se realizem osacessos Fica assim garantida a uniformidade a fiabilidade e a estabilidade do sistema

Por uacuteltimo a globalizaccedilatildeo do sistema garante igualmente que sempre que este eacuteutilizado natildeo para consulta ou apoio na resoluccedilatildeo de problemas mas para acrescentarnovos factos e dados agrave base de conhecimento estes estejam imediatamente disponiacuteveispara novas consultas ou para resoluccedilotildees de problemas de forma mais eficaz

12 Objectivos

O objectivo principal deste trabalho passa pela integraccedilatildeo do GIS Problem SolverAdvisor (GISPSA) (sistema base) num portal Aleacutem deste outros objectivos podemser considerados como de eventual ou relevante importacircncia podendo ser caracterizadosda seguinte forma

bull Objectivos globais

ndash Desenvolvimento de um sistema pericial rArr Pretende-se desenvolver umcandidato agrave substituiccedilatildeo do GISPSA

ndash Manutenccedilatildeo da base de conhecimento rArr Gerir a base de conhecimentorelativamente agrave inserccedilatildeo e actualizaccedilatildeo de regras de conhecimento bem comoimplementaccedilatildeo de mecanismos de verificaccedilatildeo das regras

bull Objectivos especiacuteficos

ndash Adaptar o motor de inferecircncia existente ou desenvolver novorArr Desenvolvi-mento de um motor de inferecircncia que se enquadre com os objectivos definidos

ndash Alterar o mecanismo de interacccedilatildeo do utilizador com a base de conheci-mentorArr Facilitar a manipulaccedilatildeo da base de conhecimento de forma a evitarproblemas na alteraccedilatildeo da base de conhecimento

2

13 PLANEAMENTO

ndash Verificar e detectar inconsistecircncias na base de conhecimentorArr Implementarmecanismos de verificaccedilatildeo das regras existentes para minimizar problemas

13 Planeamento

O planeamento deste trabalho foi estruturado em quatro fases A composiccedilatildeo dessas faseseacute a seguinte

1 Requisitos

bull Levantamento de requisitos

bull Estado da arte

bull Ferramentas existentes

2 Protoacutetipo

bull Protoacutetipo do motor de inferecircncia

bull Implementaccedilatildeo do gestor da base de conhecimento

3 Verificaccedilatildeo

bull Implementaccedilatildeo de meacutetodos de verificaccedilatildeo e detecccedilatildeo de inconsistecircncias

4 Elaboraccedilatildeo da dissertaccedilatildeo

bull Redacccedilatildeo final da dissertaccedilatildeo

14 Estruturaccedilatildeo da dissertaccedilatildeo

Nesta secccedilatildeo eacute apresentada a estrutura da dissertaccedilatildeo composta por cinco capiacutetulosNo primeiro capiacutetulo ldquoIntroduccedilatildeordquo eacute apresentado o problema actual quais os objec-

tivos a alcanccedilar e qual o planeamento para a prossecuccedilatildeo desses objectivosNo segundo capiacutetulo ldquoEstado da Arterdquo eacute apresentado a soluccedilatildeo GISPSA e tambeacutem o

estado da arte na aacuterea dos sistemas periciaisNo terceiro capiacutetulo ldquoFerramentas utilizadasrdquo eacute apresentado o estudo efectuado sobre

as ferramentas utilizadas e quais as conclusotildees do mesmoNo quarto capiacutetulo ldquoWexsysrdquo eacute descrita a soluccedilatildeo proposta e implementadaNo quinto e uacuteltimo capiacutetulo ldquoConclusotildeesrdquo satildeo apresentadas as conclusotildees finais bem

como os objectivos alcanccedilados e as actuais limitaccedilotildees

3

2Estado da arte

Num estado da arte pretende-se essencialmente fazer o enquadramento do estaacutegio deevoluccedilatildeo e eventuais casos de estudo relacionados com as tecnologias sistemas oupropostas que satildeo utilizadas ou apresentadas ao longo de um trabalho

Para o nosso caso em concreto vamos focalizar esse enquadramento sobre os sistemaspericiais no seu sentido mais abstracto e ainda sobre o sistema base jaacute indicado oGISPSA Apesar de o sistema base ser por si soacute um sistema pericial e como tal poderser apresentado como um caso de estudo inserido nos sistemas periciais generalizados ofacto de servir como ponto de partida para este trabalho em concreto confere-lhe umaimportacircncia muito superior sendo quase obrigatoacuteria a reserva de uma secccedilatildeo proacutepria parao mesmo

21 Sistemas periciais

Os sistemas periciais pertencem a um dos ramos da Artificial Intelligence ou InteligecircnciaArtificial (AI) e surgiram a partir da necessidade que alguns investigadores sentiram emcriar um software que demonstrasse raciociacutenio e comportamento inteligente durante aresoluccedilatildeo de problemas

Um Sistema Pericial (SP) tambeacutem conhecido como Expert System (ES) caracteriza-se como sendo um programa que permite a consulta e utilizaccedilatildeo de conhecimento extraiacutedode um ou mais peritos em determinada aacuterea Esse conhecimento estaacute normalmenteguardado naquilo que eacute mais habitualmente designado por base de conhecimento e agrave qualo programa tem o devido acesso

Na criaccedilatildeo de um SP o ideal seraacute sempre consultar os melhores peritos dentro daaacuterea pretendida e ainda que estes estejam disponiacuteveis para partilhar e disponibilizar oseu conhecimento Tal seria efectivamente a situaccedilatildeo ideal mas que nem sempre se

5

CAPIacuteTULO 2 ESTADO DA ARTE

aproxima da realidade Aliaacutes o verdadeiro sucesso de um sistema pericial reside naqualidade da sua base de conhecimento

Antes de mais devemos considerar que algueacutem que eacute perito em algo certamente oseraacute por uma seacuterie de factores conjugados Experiecircncia adquirida ao longo de vaacuteriosanos formaccedilatildeo especiacutefica dedicaccedilatildeo e estudo profundo seratildeo alguns desses factoresSempre que um indiviacuteduo se encontra numa posiccedilatildeo de excelecircncia em que eacute consideradoum verdadeiro perito encontra-se tambeacutem numa posiccedilatildeo em que lhe eacute bastante difiacutecilencontrar o tempo necessaacuterio para se submeter a uma extracccedilatildeo do conhecimento quedeteacutem Se a isto juntar-mos o facto do objectivo pelo qual se procede agrave extracccedilatildeo deconhecimento eacute a criaccedilatildeo de um programa que seraacute equiparado ao proacuteprio perito emtermos de conhecimento certamente que haveraacute algum desconforto

Aqui surgem as primeiras duacutevidas Seraacute que o sistema pericial tomaraacute o lugar deum ou mais peritos Apesar desta e de outras preocupaccedilotildees os peritos normalmentecontribuem de forma positiva para o enriquecimento de um sistema pericial tornando-odesta forma num sistema com maior qualidade e do qual eles proacuteprios poderatildeo usufruirjaacute que quando eacute possiacutevel agregar o conhecimento de muacuteltiplas pessoas obteacutem-se umconhecimento global superior ao individual

Para aleacutem disto o sistema pericial tende a proceder a um raciociacutenio mais linear loacutegicoe coerente quando comparado com um ser humano que poderaacute deixar que factores comopor exemplo o cansaccedilo ou os sentimentos o influenciem

Merritt define um sistema pericial como sendo um programa que utiliza conhecimentoe meacutetodos de inferecircncia para resolver problemas que satildeo suficientemente complexos pararequerer um especialista para a sua resoluccedilatildeo

ldquo an intelligent computer program that uses knowledge and inference procedures to

solve problems that are difficult enough to require significant human expertise for their

solutionsrdquo Merritt (1989)

A definiccedilatildeo de Giarratano et al eacute mais relacionada com o tipo de problemas tratadospor um sistema pericial

ldquo computer application wich embody some non-algorithmic expertise for solving certain

types of problemsrdquo Giarratano et al (1998)

Esta definiccedilatildeo enquadra de uma forma global as definiccedilotildees reconhecidas aos siste-mas periciais ldquoum sistema pericial pretende emular um perito na identificaccedilatildeo de umdeterminado problema cuja resoluccedilatildeo envolva conhecimento natildeo algoriacutetmicordquo

Existe uma clara separaccedilatildeo entre conhecimento e raciociacutenio o conhecimento eacute obtidocomo jaacute foi referido recorrendo a um ou mais peritos na aacuterea Os dados obtidos satildeo depois

6

21 SISTEMAS PERICIAIS

codificados atraveacutes de um determinado esquema de representaccedilatildeo No passo seguinteeacute adicionada a capacidade de raciociacutenio ao sistema pericial recorrendo a estrateacutegiasheuriacutesticas na tentativa de fornecer um resultado semelhante ao que um perito forneceriae aqui uma vez mais o papel do perito eacute fundamental para o sucesso do sistema pericial

Para aleacutem de contribuir com o conhecimento o perito deveraacute igualmente contribuircom o raciociacutenio utilizado para o manuseamento desse mesmo conhecimento Isto porquea resoluccedilatildeo de um problema poderaacute em determinadas situaccedilotildees necessitar de pequenosajustes que fogem agrave linearidade de um processamento computacional mas que podemperfeitamente ser simuladas e recriadas na construccedilatildeo do raciociacutenio do programa

Eacute necessaacuterio compreender que um perito para aleacutem de ser algueacutem que eacute consideradoum especialista na sua aacuterea eacute habitualmente algueacutem com pouco ou nenhum tempodisponiacutevel o que dificulta bastante a realizaccedilatildeo da recolha do conhecimento O seutempo eacute dispendioso e tem por norma poucos espaccedilos de manobra devido agraves muitassolicitaccedilotildees que lhe satildeo dirigidas Aqui impera o factor de resistecircncia ora porque o peritonatildeo acredita que o sistema seja tatildeo eficaz como ele ora porque existe o receio de sersubstituiacutedo ou passar a ter menos solicitaccedilotildees Quanto maior a colaboraccedilatildeo do ou dosperitos envolvidos na criaccedilatildeo de um qualquer sistema pericial melhor e mais eficaz seraacuteesse sistema pericial

211 Arquitectura

As duas grandes componentes do sistema pericial e que permitem a separaccedilatildeo referidaentre conhecimento e raciociacutenio satildeo a base de conhecimento (depende do domiacutenio ou daaacuterea abrangida) e o bloco de raciociacutenio (natildeo depende do domiacutenio) Este uacuteltimo eacute aindadividido em trecircs partes distintas o motor de inferecircncia o sistema de explicaccedilotildees e ainterface com o utilizador

Um sistema pericial deve ser estruturado de forma a que possa ser actualizado facil-mente sem que seja necessaacuteria qualquer alteraccedilatildeo ao niacutevel funcional do programa

7

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 1 Arquitectura de um sistema pericial

A figura 1 mostra a composiccedilatildeo de um sistema pericial e que mais detalhadamente eacutea seguinte

bull Interface com o utilizador

um sistema pericial deveraacute permitir a interacccedilatildeo com o utilizador Nos casosmais habituais os utilizadores que usufruem dos benefiacutecios destes sistemas natildeosatildeo peritos da aacuterea e pretendem aconselhamento ou ajuda na resoluccedilatildeo de umproblema Noutros casos o utilizador poderaacute ser um perito da aacuterea que apenaspretende testar o sistema pericial ou confrontar as conclusotildees deste com as suasproacuteprias conclusotildees para perceber se sendo diferentes qual o motivo para queisso aconteccedila Isto poderaacute permitir que um perito aprofunde ou corrija o seuproacuteprio conhecimento ou que por outro lado se procedam a correcccedilotildees agrave base deconhecimento do sistema pericial mediante se trate de erro por parte de um ou deoutro

De qualquer forma a interface com o utilizador deveraacute permitir a interacccedilatildeo entreo sistema pericial e o utilizador (qualquer que este seja) para que o utilizadorresponda agraves questotildees que lhe satildeo colocadas e peccedila explicaccedilotildees para os passos econclusotildees que percorre e descobre ao longo da utilizaccedilatildeo do programa

bull Base de conhecimento

o conhecimento extraiacutedo de um ou mais peritos eacute armazenado e mantido aquiDurante a execuccedilatildeo do programa o sistema pericial acede a esta base para consultaros dados disponiacuteveis Eacute sempre possiacutevel em qualquer altura retirar acrescentarou corrigir factos na base de conhecimento Isto contribui para uma evoluccedilatildeo damesma no sentido de melhorar sempre o funcionamento do proacuteprio sistema pericial

8

21 SISTEMAS PERICIAIS

bull Motor de inferecircncia

este bloco eacute o grande responsaacutevel por interpretar o conhecimento e colocarde uma forma estruturada questotildees ao utilizador O raciociacutenio extraiacutedo do ou dosperitos eacute aqui consultado para que mediante as questotildees que satildeo colocadas aoutilizador e as consultas que satildeo efectuadas agrave base de conhecimento este motor deinferecircncia determine qual a proacutexima questatildeo a colocar qual a proacutexima consulta arealizar ou qual a conclusatildeo a apresentar

bull Sistema de explicaccedilotildees

sempre que o utilizador pretende que lhe seja dada uma explicaccedilatildeo para aquestatildeo que estaacute a ser colocada ou para a conclusatildeo que foi determinada este blocoseraacute o responsaacutevel por dar essa mesma explicaccedilatildeo

Esta divisatildeo permite que os moacutedulos funcionais do programa possam ser isoladoscomo podemos observar na figura 1 de forma a facilitar futuras correcccedilotildees e actualizaccedilotildeesda base de conhecimento contribuindo positivamente para a evoluccedilatildeo da mesma eevitando assim que o sistema pericial fique obsoleto

212 Base de conhecimento

Uma base de conhecimento eacute um conjunto de informaccedilatildeo representada de forma a quepossa ser processada pelo motor de inferecircncia Existem vaacuterias formas de representa-ccedilatildeo de conhecimento no entanto as mais conhecidas satildeo a representaccedilatildeo por regrasrepresentaccedilatildeo por ldquoframesrdquo e ainda as redes semacircnticas

Ao representar conhecimento um dos factores determinantes para o meacutetodo necessaacute-rio a essa representaccedilatildeo eacute o domiacutenio do problema ou aacuterea a modelar A tiacutetulo de exemplose um problema segue um padratildeo ou algum tipo de linearidade na busca da soluccedilatildeonecessaacuteria ou ainda se a soluccedilatildeo puder ser obtida atraveacutes de questotildees cujas respostassatildeo maioritariamente simples (sim natildeo valores numeacutericos etc) a representaccedilatildeo doconhecimento eacute feita utilizando os meacutetodos de regras ou ldquoframesrdquo

Como jaacute foi referido o papel de um perito natildeo estaacute limitado apenas agrave contribuiccedilatildeocom o conhecimento para a base necessaacuteria Este exerce um outro papel igualmenteimportante que tem a ver mais com o aspecto de raciociacutenio Desta forma ao consultar abase de conhecimento satildeo tomadas algumas decisotildees tais como verificaccedilatildeo de eventuaissoluccedilotildees jaacute possiacuteveis em pontos intermeacutedios ou qual a proacutexima questatildeo a colocar Estemeacutetodo de interacccedilatildeo com a base de conhecimento poderaacute eventualmente entrar em

9

CAPIacuteTULO 2 ESTADO DA ARTE

conflito com a independecircncia de domiacutenio que foi referida na arquitectura de um sistemapericial No entanto este aspecto fundamental da criaccedilatildeo de um sistema pericial contribuilargamente para o bom funcionamento do mesmo

Para aleacutem disto a base de conhecimento deveraacute sempre contemplar as funcionalidadesnecessaacuterias que permitam ao utilizador em qualquer altura proceder agrave adiccedilatildeo de novosfactos agrave correcccedilatildeo dos jaacute existentes ou ainda agrave eliminaccedilatildeo dos mesmos Isto permitemanter uma base de conhecimento sempre actualizada fiaacutevel e consistente Estas razotildeescontribuem para a resoluccedilatildeo cada vez mais eficaz dos problemas que satildeo colocadosPara novos problemas que surgem poderatildeo ser necessaacuterias novas soluccedilotildees ou novosmeacutetodos para as encontrar Para problemas jaacute conhecidos poderatildeo ser encontradas novasformas ou novas soluccedilotildees de os resolver eventualmente consideradas mais eficazes ou deimplementaccedilatildeo mais simples

Por tudo isto considera-se que a base de conhecimento apesar de natildeo ser o verdadeiromotor de um sistema pericial poderaacute ser encarada como o verdadeiro combustiacutevelque o move e sem o qual natildeo seria possiacutevel qualquer tipo de evoluccedilatildeo pelo que a natildeocontribuiccedilatildeo para o seu melhoramento estagna o proacuteprio sistema provocando mais cedoou mais tarde o abandono do mesmo por parte dos utilizadores que entretanto podemperder a confianccedila que lhe depositaram

Os meacutetodos de representaccedilatildeo de conhecimento podem ser seleccionados de acordocom as caracteriacutesticas que lhes estatildeo inerentes e que se descrevem de seguida

2121 Regras

Uma das teacutecnicas de representaccedilatildeo de conhecimento mais utilizadas eacute a representaccedilatildeopor regras Estas satildeo utilizadas para representar heuriacutesticas e caracterizam-se por umconjunto de premissas que desencadeiam ou conduzem a uma soluccedilatildeo

As regras tecircm o formato ltidentificaccedilatildeogt Se ltLeft-Handed Side (LHS)gt EntatildeoltRight-Handed Side (RHS)gt

Onde

ltidentificaccedilatildeogt - identificaccedilatildeo da regra

ltLHSgt ndash ldquoLeft-Handed Siderdquo define as premissas que teratildeo que ser satisfeitas deforma a que a regra possa ser disparada

ltRHSgt ndash ldquoRight-Handed Siderdquo define as acccedilotildees ou conclusotildees que seratildeo verificadascom o disparo da regra

As premissas satildeo definidas recorrendo a factos que podem ser previamente conhecidosou inferidos a partir de outras regras A utilizaccedilatildeo de regras promove uma separaccedilatildeo

10

21 SISTEMAS PERICIAIS

entre a parte loacutegica e a funcional isto eacute permite-nos uma abstracccedilatildeo de implementaccedilatildeofocando-se na loacutegica

Vantagens

bull expressividade - as regras satildeo normalmente representadas de uma forma naturalque pode mesmo chegar a ser declarativa Eacute perfeitamente normal uma regra estarescrita num vocabulaacuterio que pode ser lido e compreendido por algueacutem que natildeo sejao programador o perito ou algueacutem com formaccedilatildeo na aacuterea em questatildeo

bull modularidade - as regras satildeo independentes entre si o que possibilita uma maisfaacutecil manutenccedilatildeo da base de conhecimento Isto permite e facilita a remoccedilatildeo deregras a adiccedilatildeo de outras ou a alteraccedilatildeo das jaacute existentes

bull separaccedilatildeo loacutegica - as regras satildeo independentes do motor de inferecircncia e estenatildeo carece de alteraccedilotildees ou actualizaccedilotildees quando as regras satildeo modificadas Ofuncionamento do sistema natildeo eacute alterado quando as regras o satildeo apenas as soluccedilotildeesque o sistema obteacutem eacute que poderatildeo ser diferentes (normalmente para melhor)

bull gramaacutetica riacutegida - as regras obedecem a estruturas que estatildeo perfeitamente defi-nidas agrave partida Isto implica que as mesmas possam ser validadas ou ateacute mesmoconstruiacutedas recorrendo a outros sistemas

bull execuccedilatildeo loacutegica - eacute sempre possiacutevel em qualquer altura do funcionamento dosistema pericial solicitar o desencadeamento ou disparo de uma sucessatildeo deregras A isto chama-se uma explosatildeo combinatoacuteria das regras e permite quesejam contemplados vaacuterios cenaacuterios possiacuteveis utilizando apenas uma execuccedilatildeoEsta execuccedilatildeo loacutegica tem sempre o mesmo resultado desde que se mantenham osparacircmetros iniciais

bull sistema de explicaccedilotildees - ao proceder a disparos de regras eacute possiacutevel dar indicaccedilatildeode qual a loacutegica utilizada para disparar uma determinada regra Isto permite de umaforma didaacutectica e simples justificar a razatildeo dos disparos auxiliando o utilizador nacompreensatildeo da evoluccedilatildeo que o sistema segue para atingir determinada soluccedilatildeo

Desvantagens

bull explicaccedilotildees - se um utilizador natildeo conhecer as regras ou natildeo as aceitar o sistemade explicaccedilotildees natildeo seraacute uma mais valia Poderaacute ateacute eventualmente tornar-se emalgo que confunde mais do que aquilo que auxilia

11

CAPIacuteTULO 2 ESTADO DA ARTE

bull gramaacutetica riacutegida - apesar de o meacutetodo de utilizaccedilatildeo de estruturas poder ser con-siderado importante porque estabelece um padratildeo a ser seguido pode conduzir aproblemas de expressividade quando utilizado em domiacutenios complexos

bull inconsistecircncia - um dos maiores problemas que podem surgir num sistema queutiliza a representaccedilatildeo do conhecimento atraveacutes de regras tem a ver com a possibi-lidade da existecircncia de inconsistecircncias e incoerecircncias nas regras Isto reduz-se ouevita-se atraveacutes da utilizaccedilatildeo exaustiva do sistema numa fase de testes em que satildeoequacionados o maior nuacutemero de casos ou cenaacuterios que possam despoletar todas asregras existentes na base de conhecimento

2122 Frames

Uma frame representa um conceito e eacute composta por slots que que natildeo satildeo mais do que adefiniccedilatildeo de um conjunto ltatributo valorgt Um valor pode ser um elemento uacutenico ouuma lista de valores e em termos de dados pode conter um tipo de dados primitivo ouuma referecircncia a outra frame

Esta representaccedilatildeo tem uma ligaccedilatildeo muito forte com o paradigma da programaccedilatildeoorientada a objectos jaacute que a ideia eacute a mesma representar objectos e conceitos do mundoreal utilizando a descriccedilatildeo a composiccedilatildeo e a heranccedila

Como vantagens temos

bull associaccedilatildeo - as frames definem e representam o conhecimento de uma formaassociativa (associaccedilatildeo normal de conceitos)

Desvantagens

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as frames podem representar um espaccedilo que natildeo estaacuterestringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

12

21 SISTEMAS PERICIAIS

2123 Redes semacircnticas

Uma rede semacircntica eacute um modelo formal em que satildeo descritos conceitos e relaccedilotildeesrecorrendo a um grafo dirigido Os conceitos satildeo representados por noacutes as relaccedilotildees porarcos e existe uma heranccedila de conceitos agrave medida que se procede agrave navegaccedilatildeo pelas vaacuteriasrelaccedilotildees

Como vantagens temos

bull exploraccedilatildeo graacutefica - a representaccedilatildeo de conhecimento atraveacutes de redes semacircnticaspermite a um utilizador explorar um domiacutenio graficamente Isto facilita a interacccedilatildeoe utilizaccedilatildeo do sistema

bull facilidade na adiccedilatildeo de clusters relacionados - utilizando o modo graacutefico de repre-sentaccedilatildeo torna-se mais faacutecil adicionar novos clusters em que existam conceitosrelacionados

bull faacutecil assimilaccedilatildeo - os seres humanos relacionam-se bem com ambientes graacuteficose tecircm uma tendecircncia a natildeo soacute aceitaacute-los melhor como tambeacutem a proceder a umautilizaccedilatildeo mais atractiva simples e de raacutepida aprendizagem com um miacutenimo deformaccedilatildeo

Como desvantagens temos

bull conhecimento preacutevio - esta forma de representaccedilatildeo de conhecimento exige quetodo o espaccedilo do problema seja conhecido de uma forma exaustiva por parte dosutilizadores Natildeo eacute muito faacutecil para um utilizador que natildeo esteja envolvido deforma profunda na aacuterea em questatildeo utilizar de forma eficaz o sistema pericial nestesmoldes

bull alargamento do espaccedilo - as redes semacircnticas podem representar um espaccedilo que natildeoestaacute restringido ao domiacutenio do problema Isto conduz a dificuldades acrescidas nautilizaccedilatildeo do sistema

bull falta de estrutura e formalidade - natildeo existe uma semacircntica formal para a represen-taccedilatildeo simboacutelica das ligaccedilotildees o que deixa demasiado espaccedilo para a criatividade eeventualmente para o surgimento de problemas associados ao facto de poderemexistir muacuteltiplas formas de representaccedilatildeo

13

CAPIacuteTULO 2 ESTADO DA ARTE

2124 Mecanismos de inferecircncia

A base de conhecimento representa o caminho para encontrar uma determinada soluccedilatildeomas o motor de inferecircncia eacute a entidade que efectivamente percorre esse caminho Ummotor de inferecircncia pode utilizar diferentes estrateacutegias de raciociacutenio para a obtenccedilatildeode respostas As mais conhecidas satildeo a estrateacutegia de encadeamento directo e a deencadeamento inverso Contudo eacute possiacutevel combinar as duas no mesmo sistema naquiloque eacute vulgarmente conhecido como uma estrateacutegia de encadeamento misto

Encadeamento directo (Forward Chaining) ndash Um ser humano no seu dia a dia utilizaesta estrateacutegia para processamento de raciociacutenio Consoante assistimos a acontecimentoso ceacuterebro processa-os e analisa-os decidindo o que fazer de seguida De igual modo aestrateacutegia de raciociacutenio por encadeamento directo comeccedila por percorrer os factos baacutesicosque vatildeo originar o disparo de regras o que levaraacute agrave obtenccedilatildeo de conclusotildees intermeacutediasque por sua vez iratildeo originar o disparo de mais regras e assim sucessivamente Oprocesso continua ateacute que se obtenham conclusotildees finais se tal for possiacutevel ou natildeo hajamais lugar agrave possibilidade de disparo de novas regras

Devido agraves suas caracteriacutesticas esta estrateacutegia eacute mais apropriada para planeamentomonitorizaccedilatildeo controlo e interpretaccedilatildeo

Encadeamento inverso (Backward Chaining) ndash No encadeamento inverso o motorde inferecircncia tenta provar as conclusotildees finais que aparecem no lado direito das regras(RHS) Essas conclusotildees finais tambeacutem satildeo designadas como objectivos e eacute normaldizer-se que o motor de inferecircncia com encadeamento inverso eacute orientado aos objectivos(goal driven)

Para provarmos uma dada conclusatildeo teremos que provar as condiccedilotildees que aparecemno lado esquerdo da regra (LHS) que poderatildeo ser suportadas por conclusotildees intermeacutediasde outras regras ou por factos baacutesicos Sendo assim o mecanismo de encadeamentoinverso assume um caraacutecter essencialmente recursivo (para provar uma conclusatildeo vamoster que provar as condiccedilotildees)

Este tipo de estrateacutegia eacute mais apropriada para diagnoacutesticos jaacute que temos uma hipoacuteteseque necessita de ser provada de forma a chegar a uma conclusatildeo

Eacute importante salientar que a forma de representaccedilatildeo das regras eacute independente daestrateacutegia utilizada pelo motor de inferecircncia No entanto eacute possiacutevel melhorar a eficaacuteciado sistema se adaptarmos essa representaccedilatildeo consoante o encadeamento utilizado

14

21 SISTEMAS PERICIAIS

2125 Manutenccedilatildeo de uma base de conhecimento

A manutenccedilatildeo de uma base de conhecimento embora seja considerada vital para asobrevivecircncia do sistema pericial eacute um processo bastante complexo no sentido emque implica cuidados que nem sempre satildeo tidos ou considerados Eacute habitual existiremproblemas de validaccedilatildeo verificaccedilatildeo redundacircncia e contradiccedilotildees

De forma a garantir que a base de conhecimento se mantenha fiaacutevel e bem definidadevem ser desenvolvidos mecanismos que evitem a ocorrecircncia deste tipo de problemas

Redundacircncia - Considera-se aplicaccedilatildeo de redundacircncia a uma base de conhecimentoquando ao inserir uma regra estamos a adicionar conhecimento que jaacute estava contido nabase de conhecimento Podemos observar o seguinte exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X tem_barbatanas entatildeo X nada

regra3 se X nada E X tem_barbatanas entatildeo X eacute_peixe

Neste exemplo eacute possiacutevel verificar que esta base de conhecimento manteacutem-se idecircntica(o conhecimento eacute o mesmo) se removermos a regra3 considerada redundante Esta regranatildeo trouxe nenhum conhecimento novo ao sistema e pode ser descartada

Contradiccedilatildeo - Considera-se regra contraditoacuteria toda a regra que contradiz conheci-mento jaacute existente na base de conhecimento Por exemplo

regra1 se X nada entatildeo X eacute_peixe

regra2 se X nada entatildeo X natildeo_eacute_peixe

A regra2 contradiz claramente a regra1 pelo que eacute considerada contraditoacuteria Um dosgrandes problemas na anaacutelise de duas ou mais regras contraditoacuterias passa por determinarquais as que correspondem ao conhecimento correcto

Verificaccedilatildeo - acccedilatildeo desencadeada ainda na fase de implementaccedilatildeo inicial da base deconhecimento onde se pretende minimizar problemas essencialmente de redundacircncia e decontradiccedilatildeo que possam ser provocados pelo programador Toda a base de conhecimentoeacute verificada e confrontada com as notas apontamentos e indicaccedilotildees a que o programadorteve acesso e que serviram de alicerce para a construccedilatildeo da mesma

Validaccedilatildeo - a acccedilatildeo preventiva de erros iniciais levada a cabo logo apoacutes a implementa-ccedilatildeo da base de conhecimento precede a acccedilatildeo seguinte que consiste em validar a referidabase atraveacutes da intervenccedilatildeo de um perito o qual utiliza vaacuterios cenaacuterios de testes ondetenta obter as respostas ao mesmo tempo que vai consultando as explicaccedilotildees disponiacuteveisao longo do percurso

Apesar de ser habitual proceder a esta validaccedilatildeo com o perito que contribuiu como conhecimento eacute igualmente habitual e ateacute beneacutefico utilizar outros peritos da mesma

15

CAPIacuteTULO 2 ESTADO DA ARTE

aacuterea que para aleacutem de validarem a base de conhecimento em causa poderatildeo inclusiveconfrontar o seu proacuteprio conhecimento com o do perito original procedendo a correcccedilotildeesa eles proacuteprios ou agrave base per si Quanto maior a taxa de intervenccedilatildeo construtiva por partede peritos numa base de conhecimento melhor seraacute a qualidade associada agrave mesma

213 Raciociacutenio sobre incerteza

Raciociacutenio sobre incerteza eacute o nome dado ao processo de formulaccedilatildeo de conhecimentobaseado em fontes de informaccedilatildeo que detenham algum tipo de incerteza na sua especifi-caccedilatildeo

O conhecimento que detemos natildeo se limita a observaccedilotildees loacutegicas do tipo ldquose Obser-vaccedilatildeo_A entatildeo conclusatildeo_Brdquo Em vaacuterias situaccedilotildees necessitamos de lidar com informaccedilatildeoincompleta incorrecta ou ateacute mesmo ausente

Quando lidamos com conhecimento de peritos num determinado domiacutenio surge aindaoutro tipo de conhecimento este originado atraveacutes da observaccedilatildeo e experiecircncia

Existe entatildeo a necessidade de representaccedilatildeo de conhecimento e respectivo grau decerteza Para este efeito existem algumas teacutecnicas tais como loacutegica Fuzzy teorias deprobabilidades tais como Bayes ou Dempster-Shafer factores de certeza entre outros

Os seguintes autores podem ser consultados para referecircncia das teacutecnicas acima men-cionadas

bull Loacutegica Fuzzy - Drakopoulos (1994)

bull Bayes - Lucas (2001)

bull Dempster-Shafer - Wilson (2000) e Barnett (1991)

De seguida vai ser descrita a teacutecnica dos factores de certeza que foi a teacutecnica adoptadapara o desenvolvimento da soluccedilatildeo

2131 Factores de certeza

A teacutecnica dos Certainty Factors ou Factores de Certeza (CF) eacute um do meacutetodos detratamento de incertezas num sistema pericial A teacutecnica foi desenvolvida por Shortliffeand Buchanan para o projecto MYCIN um sistema pericial de diagnoacutestico e tratamentode meningite e tratamento do sangue Desde entatildeo que esta teacutecnica eacute o padratildeo seguido nodesenvolvimento de sistemas periciais baseados em regras Heckerman (1992)

16

21 SISTEMAS PERICIAIS

De um ponto de vista funcional caracteriza-se pela atribuiccedilatildeo de um nuacutemero o graude certeza a factos e regras Esse grau de certeza eacute uma medida relativa probabiliacutesticaque pode ser positiva ou negativa sendo normalmente usados valores no intervalo de -1 a1

A sua definiccedilatildeo original baseou-se na seguinte foacutermula FC [HE] = MC [HE]minusMD [HE]

O factor de certeza da hipoacutetese H dado uma evidecircncia E eacute dado pela diferenccedila entre

bull a medida de certeza de H dado Erarr MC [HE]

bull a medida de descrenccedila de H dado Erarr MD [HE]

O CF final de uma regra com uma premissa baseada num facto ou noutra regra eacute dadopela foacutermula 21

Quando as premissas estatildeo associadas atraveacutes do operador conjunccedilatildeo eacute aplicada afoacutermula 22

Quando existe mais do que uma regra a suportar uma determinada conclusatildeo o CFfinal eacute o resultado da foacutermula 23

CFf inal =CFpremissatimesCFregra 21

CFf inal = min[CFpremissa1 CFpremissan

]timesCFregra

22

X Y gt 0CF (X Y ) = X +Y (100˘X)100 23a

X ou Y lt 0CF (X Y ) = X +Y(1˘min(X Y)) 23b

X Y lt 0CF (X Y ) =minusCF (minusX minusY ) 23c

214 Vantagens e desvantagens

Apesar de tudo o que foi descrito um sistema pericial natildeo representa de forma alguma aferramenta mais apropriada para resolver todos os problemas com recurso a conhecimentoque de outra forma estaria reservado apenas a peritos das vaacuterias aacutereas Ao utilizarmosum sistema pericial estamos sujeitos a aspectos positivos e negativos cabendo a noacutes opapel de determinar se quando confrontados com um determinado problema a utilizaccedilatildeodeste tipo de ferramenta eacute a mais apropriada

17

CAPIacuteTULO 2 ESTADO DA ARTE

Para observar quais as principais vantagens de um sistema pericial podemos consultaras opiniotildees partilhadas por Giarratano et al (1998) CoAJRA (1997)

bull Elevada disponibilidaderArr um sistema pericial estaacute sempre disponiacutevel em termosde tempo e local pronto a funcionar sob qualquer condiccedilatildeo enquanto que umperito natildeo dispotildee dessa total disponibilidade

bull Baixo risco de utilizaccedilatildeorArr pode ser utilizado em ambientes considerados perigo-sos e hostis para um ser humano

bull Baixo custo rArr o custo de providenciar conhecimento por utilizador eacute bastantereduzido

bull DurabilidaderArr o conhecimento eacute permanente ao contraacuterio de um especialista queestaacute sujeito a ausecircncias

bull Conhecimento de vaacuterios especialistasrArr quando agregado o conhecimento reco-lhido a partir de vaacuterios especialistas poderaacute conduzir a resultados mais adequadose considerados melhores quando confrontados com o conhecimento individual e osresultados que daiacute advecircm

bull Capacidade de explicaccedilatildeorArr um sistema pericial consegue explicar detalhadamenteos passos que levaram agrave resposta dada enquanto que um ser humano pode natildeo tera disponibilidade nem a vontade de explicar todo o processo de raciociacutenio seguido

bull EmotividaderArr um sistema pericial natildeo estaacute sujeito a emoccedilotildees o seu funciona-mento e as respostas que providencia natildeo satildeo influenciadas pelo meio em que estaacuteinserido como por exemplo situaccedilotildees de stress ou situaccedilotildees de perigo iminente (aqueda de um aviatildeo ou uma central nuclear em risco)

bull Natildeo influenciaacutevelrArr acontecimentos mais actuais tecircm o mesmo peso na tomada dedecisatildeo evitando assim o fenoacutemeno de ldquoviciaccedilatildeordquo da base de conhecimento

No entanto um sistema pericial comporta tambeacutem algumas desvantagens das quaisse salientam

bull Emotividade rArr o facto de natildeo ser emotivo tambeacutem pode ser visto como umadesvantagem jaacute que natildeo recorrer a emoccedilotildees pode ser problemaacutetico por exemploem situaccedilotildees que necessitem de senso comum

18

21 SISTEMAS PERICIAIS

bull ManutenccedilatildeorArr se natildeo for devidamente mantido e actualizado um sistema pericialcorre o risco de ldquoenvelhecerrdquo no sentido em que deixa de ser um sistema fiaacutevel aque possamos recorrer e que corre o risco de abandono

bull CriatividaderArr um sistema pericial natildeo tem capacidade de reagir de forma diferentea problemas colocados seguindo sempre uma linha estaacutevel de raciociacutenio

bull Adaptaccedilatildeo sensorial rArr um sistema pericial natildeo consegue reagir a informaccedilatildeosensorial do meio que o rodeia entenda-se sensorial como sentidos humanos taiscomo o cheiro o tacto e a visatildeo

19

CAPIacuteTULO 2 ESTADO DA ARTE

22 GISPSA - GIS Problem Solver Advisor

O Gestatildeo Integrada de Seguros (GIS) eacute um Sistema de Informaccedilatildeo vocacionado para aactividade seguradora residente na plataforma AS400 da IBM Umas das caracteriacutesticasmais interessantes deste sistema acabou por ser tambeacutem um dos grandes proporciona-dores de eventuais problemas O GIS possui uma grande capacidade de configuraccedilatildeo oque sendo muito uacutetil para a adaptabilidade deste a cenaacuterios situaccedilotildees ou utilizadoresdiferentes acaba por originar vaacuterios problemas operacionais atraveacutes de inconsistecircnciasna proacutepria configuraccedilatildeo

Dada esta facilidade aparente de ocorrecircncia de problemas e a falta de sensibilidadee formaccedilatildeo teacutecnica dos utilizadores para os resolver a equipa de assistecircncia teacutecnicaafecta ao GIS estava muitas vezes com sobrecarga de pedidos por parte dos clientes quepretendem estes problemas solucionados Existiam periacuteodos de especial relevacircncia noque toca a estas sobrecargas tais como os fechos de ano das empresas

A partir daqui surge a ideia e a necessidade da criaccedilatildeo do GISPSA com o intuito dealiviar a sobrecarga da equipa de assistecircncia teacutecnica mas essencialmente com o grandeobjectivo de assegurar que um cliente natildeo fica sem soluccedilatildeo para os problemas com que sedepara apenas porque natildeo estatildeo teacutecnicos disponiacuteveis A grande vantagem de um sistemapericial foi e seraacute sempre essa poder substituir um perito sem ter que enfrentar questotildeescomo a disponibilidade custos ou tempo

Assim surge o GISPSA que mais natildeo eacute que um projecto criado por Pinto no acircmbito deum projecto acadeacutemico cujo objectivo inicial passava por criar um Sistema Pericial paradiagnoacutestico de problemas operacionais do GIS Este sistema teve por base o conhecimentoe o respectivo raciociacutenio extraiacutedos de um perito da aacuterea Administrativa-Financeira doGIS

No caso de problemas mais complexos em que o Sistema Pericial natildeo consiga determi-nar os factores de erro eacute remetida a resoluccedilatildeo para um teacutecnico da empresa comunicandoesse facto ao utilizador Pinto (1998)

221 Arquitectura

Sendo um sistema pericial o GISPSA teria que ser desenvolvido utilizando uma lingua-gem que tivesse uma seacuterie de caracteriacutesticas A existecircncia de uma base de conhecimento apossibilidade de consultar factos adicionar novos factos ou ainda de remover factos nessamesma base e aspectos como o backtracking na realizaccedilatildeo de raciociacutenio ao inferir sobreesses mesmos factos natildeo permitia um leque muito alargado na escolha da linguagem de

20

22 GISPSA - GIS PROBLEM SOLVER ADVISOR

desenvolvimento

Desta forma ficou decidido que o GISPSA seria desenvolvido em prolog (maisespecificamente winprolog) Devido agrave simplicidade de utilizaccedilatildeo e extensa documentaccedilatildeode apoio o LPAProlog foi usado como motor de inferecircncia e o LPAFlex foi usado paraestabelecer a declaraccedilatildeo de regras

Como jaacute foi referido anteriormente o GISPSA eacute uma aplicaccedilatildeo standalone desenhadae desenvolvida para uma execuccedilatildeo local em mono-posto e sujeita agrave obtenccedilatildeo de umalicenccedila de utilizaccedilatildeo para garantir o seu funcionamento

Figura 2 GISPSA menu inicial

A aplicaccedilatildeo dispotildee de uma interface graacutefica tambeacutem criada em winprolog que utilizarecursos especiacuteficos do sistema operativo Windows

A base de conhecimento eacute armazenada num uacutenico ficheiro ksl e o seu carregamentonatildeo eacute parcial O mesmo seraacute dizer que toda a base de conhecimento eacute passada paramemoacuteria de trabalho assim que o programa arranca

222 Funcionamento

Em termos funcionais a aplicaccedilatildeo permite mudar o tipo de linguagem a ser empreguenas conversaccedilotildees estabelecidas com o utilizador consoante esta esteja a ser utilizadapor um teacutecnico (habitualmente os teacutecnicos com formaccedilatildeo na aacuterea) ou um utilizadornormal (o cliente que adquiriu a aplicaccedilatildeo e cuja formaccedilatildeo eacute mais reduzida ou ateacute mesmoinexistente)

Apoacutes a definiccedilatildeo da linguagem de interacccedilatildeo a utilizar o sistema inicia entatildeo o pedidode assistecircncia apresentando a mensagem ldquoSeleccione a aplicaccedilatildeordquo (figura 3) que permitenuma primeira instacircncia direccionar o raciociacutenio face agrave resposta do utilizador

21

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 3 GISPSA interacccedilatildeo inicial

Figura 4 GISPSA exemplo de interacccedilatildeo pergunta-resposta

223 Limitaccedilotildees

Apesar de ser inovadora na aacuterea esta aplicaccedilatildeo foi no iniacutecio bastante utilizada por algunsclientes tendo sofrido algum abandono de forma gradual ao longo do tempo de vida quejaacute leva Apoacutes uma anaacutelise chegou-se agrave conclusatildeo que as principais causas na origemdesse abandono seriam as seguintes

bull Adicionar regras implicava o conhecimento da sintaxe das mesmas Verificou-se que esta tarefa era demasiado complexa para um utilizador sem formaccedilatildeo esensibilidade suficientes na aacuterea da programaccedilatildeo

bull O acto de proceder agrave ediccedilatildeo de regras existentes na base de conhecimento traduz-senuma tarefa que para aleacutem de morosa eacute essencialmente de risco no sentido em

22

23 WEB EXPERT SYSTEMS

que natildeo existe uma verdadeira noccedilatildeo do impacto que estas alteraccedilotildees possam vir ater no comportamento global do sistema

bull O sistema apenas pode ser instalado em mono-posto o que obriga agrave obtenccedilatildeo deuma licenccedila por cada instalaccedilatildeo que se pretende realizar

bull O sistema natildeo permite a integraccedilatildeo com ambientes baseados em redes e sistemasdistribuiacutedos

bull Natildeo existe nenhum mecanismo de verificaccedilatildeo da base de conhecimento

bull O aspecto visual da aplicaccedilatildeo estaacute ultrapassado e eacute pouco apelativo

23 Web Expert Systems

Actualmente uma grande maioria dos sistemas periciais desenvolvidos satildeo desenhadospara um funcionamento em ambientes web As razotildees apontadas para esta orientaccedilatildeo satildeovaacuterias destacando-se a evoluccedilatildeo da proacutepria tecnologia as velocidades de transmissatildeode dados em redes a possibilidade de acesso em muacuteltiplas localizaccedilotildees geograacuteficas(desde que assegurado o necessaacuterio acesso agrave rede) e ainda o desenvolvimento de novasferramentas que possibilitam maior facilidade na criaccedilatildeo destes novos sistemas

Algumas das ferramentas que permitem actualmente o desenvolvimento de um sistemapericial baseado em ambientes web satildeo as seguintes

1 WebFlex - LPA Flex

2 EXSYS CORVID

3 WebCLIPS

4 JCLIPS

5 JESS

6 Acquire

WebFlex - Esta ferramenta permite a publicaccedilatildeo de um sistema pericial desenvolvidoem ldquoLPA Prologrdquo Os sistemas periciais desenvolvidos a partir deste meacutetodo necessitamainda de outra ferramenta para garantir o funcionamento o ldquoLPA ProWeb Serverrdquo Eacute

23

CAPIacuteTULO 2 ESTADO DA ARTE

possiacutevel adaptar um sistema pericial jaacute desenvolvido para ser disponibilizado numarede sem ser necessaacuterio efectuar qualquer tipo de alteraccedilatildeo No entanto se for pretendidoalgum tipo de configuraccedilatildeo extra por exemplo incluir imagens ou alterar a aparecircncia dealguns controlos eacute uma alteraccedilatildeo extremamente morosa e complexa

WebFlex allows you to deliver your flex-based expert systems onto Intranets

and Extranets easily Just create your rules and frames and questions as per normal

in flex and WebFlex will construct a web server-based solution using ProWeb where

all the questions are sent automatically configured for a standard HTMLJavascript

browserLogic Programming Associaties Ltd (2010)

Eacute possiacutevel alterar o HTML de saiacuteda que o webflex utiliza por defeito no entanto estaconfiguraccedilatildeo natildeo eacute tatildeo simples quanto poderaacute parecer agrave partida e obriga agrave alteraccedilatildeo dosistema pericial

Esta ferramenta funciona apenas em sistemas windows e eacute necessaacuteria a obtenccedilatildeo deuma licenccedila de utilizaccedilatildeo (natildeo eacute gratuita)

EXSYS CORVID - Eacute uma ferramenta composta por dois moacutedulos Exsys CORVID

Knowledge Automation Expert System Software e Exsys Servlet Runtime EXSYS (2010)

Natildeo foi possiacutevel encontrar nenhum sistema desenvolvido por esta ferramenta pormotivos de confidencialidade eou vantagem competitiva Estatildeo no entanto disponiacuteveisaplicaccedilotildees de demonstraccedilatildeo na paacutegina oficial da empresa Verificou-se que nenhumadas aplicaccedilotildees de demonstraccedilatildeo disponiacuteveis possui capacidades de dar explicaccedilotildees oujustificaccedilotildees

De acordo com EXSYS as aplicaccedilotildees construiacutedas com esta ferramenta podem seracedidas por Servlet Applet ou standalone e esta ferramenta necessita da obtenccedilatildeo deuma licenccedila de desenvolvimento

WebCLIPS - Segundo Michael Giordano o WebCLIPS eacute uma implementaccedilatildeo CGI

que envolve o C Language Integrated Production System (CLIPS) como aplicaccedilatildeo internaO CLIPS eacute uma ferramenta de desenvolvimento de sistemas periciais

Esta ferramenta foi desenvolvida em linguagem C o que significa que em termos deportabilidade desde que se possua o coacutedigo fonte este poderaacute ser compilado em qualquersistema operativo jaacute que o compilador para a linguagem estaacute disponiacutevel para todas as

24

23 WEB EXPERT SYSTEMS

versotildees existentes no mercado No entanto o WebCLIPS apenas foi desenvolvido parafuncionamento em sistemas windows e linux

O CLIPS eacute uma ferramenta livre que permite o desenvolvimento de sistemas baseadosem regras Pode ser integrado com algumas linguagens das quais se destacam C Java

(JCLIPS) FORTRAN entre outras Esta eacute provavelmente a ferramenta mais utilizada nodesenvolvimento de sistemas periciais devido agrave sua rapidez eficiecircncia e pelo facto de sergratuita

JCLIPS - Eacute uma biblioteca que permite integraccedilatildeo com Java e permite igualmentea utilizaccedilatildeo do motor do CLIPS a partir de uma classe Java Esta interligaccedilatildeo eacute feitaatraveacutes da importaccedilatildeo do ficheiro (dll ou so consoante o sistema operativo) e permite aexecuccedilatildeo de uma instacircncia ou seja permite ter apenas uma sessatildeo de um sistema pericialde cada vez Maarten Menken (2010)

JESS - O JESS eacute uma extensatildeo do CLIPS em JAVA Eacute basicamente uma bibliotecacujo objectivo natildeo passa por gerar uma aplicaccedilatildeo web mas sim servir de base para quepossa ser integrada ou utilizada para esse efeito Ernest Friedman-Hill (2010)

Utiliza uma linguagem especiacutefica designada JESS language equivalente ao CLIPSmas com novos componentes que a tornam uma linguagem complexa e de difiacutecil utilizaccedilatildeopor algueacutem sem conhecimentos de inteligecircncia artificial

Acquire - Eacute um produto bastante avanccedilado do ponto de vista tecnoloacutegico face aosconcorrentes no sentido em que permite uma separaccedilatildeo evidente entre a camada aplicaci-onal e a camada de apresentaccedilatildeo Promove uma separaccedilatildeo cliente-servidor e disponibilizaum Software Development Kit (SDK) que permite a integraccedilatildeo com outras aplicaccedilotildees

De acordo com Acquired Intelligence o produto estaacute sujeito a uma licenccedila de utilizaccedilatildeoe eacute disponibilizado ainda um serviccedilo online de alojamento de sistemas periciais omyAcquire disponiacutevel mediante uma subscriccedilatildeo semestral

231 Casos de estudo

Os sistemas periciais mais especificamente aqueles que satildeo baseados em sistemas webtecircm conhecido nos uacuteltimos anos uma evoluccedilatildeo gradual e consistente devido em grandeparte agrave simplicidade e disponibilidade que possibilitam Podem ser acedidos a partir dequalquer local no mundo 24 horas por dia e sem qualquer tipo de limitaccedilatildeo bastando

25

CAPIacuteTULO 2 ESTADO DA ARTE

apenas que se garanta o acesso agrave rede onde o sistema pericial estaacute colocado

As interfaces satildeo mais apelativas e chegam a fazer uso de imagens e outros meiosgraacuteficos ou de multimeacutedia cujo objectivo natildeo eacute apenas o de tornar os sistemas maisinteressantes mas tambeacutem mais eficazes jaacute que auxiliam de forma mais simples eesclarecida Os controlos utilizados as caixas de interacccedilatildeo e ateacute mesmo as explicaccedilotildees ejustificaccedilotildees (nos sistemas que o permitam) ajudam a ter uma ideia cada vez mais clarasobre o funcionamento dos sistemas obtendo-se assim melhores resultados

Alguns dos casos de estudo de sistemas periciais baseados em sistemas web existentesactualmente tecircm como um dos seus maiores objectivos a disponibilidade global dosmesmos (satildeo disponibilizados normalmente atraveacutes da internet) e os mais conhecidossatildeo

bull Landfill Operation Management Advisor (LOMA)

bull Medical Diagnosis Support System (MDSS)

bull Whale watcher

2311 LOMA - Landfill Operation Management Advisor

O LOMA eacute um sistema pericial online que analisa problemas operacionais falhas eacidentes em aterros comuns Aleacutem disso o LOMA fornece conselhos sobre como umgestor pode evitar esses problemas e em caso de ocorrecircncia sobre como diminuir oimpacto das suas consequecircncias Encontra-se disponiacutevel em httplomacivil

duthgr e eacute de utilizaccedilatildeo puacuteblica

O sistema pericial foi desenvolvido por Dokas recorrendo agraves ferramentas WebFlex eLPA ProWeb Server

A arquitectura da aplicaccedilatildeo web pode ser visualizada na figura 5 e consiste nosseguintes moacutedulos Dokas (2005)

bull Sistema pericial LOMA

bull Moacutedulo de aconselhamento

bull Moacutedulo operacional de problemas-causa

bull Eventos inicias

bull Problemas operacionais

26

23 WEB EXPERT SYSTEMS

bull Moacutedulo de explicaccedilotildees

bull Moacutedulo de submissatildeo de conhecimento e informaccedilatildeo

Figura 5 Arquitectura do LOMA

O moacutedulo mais relevante para o acircmbito desta dissertaccedilatildeo eacute o ldquoSistema pericial LOMArdquoe eacute tambeacutem o moacutedulo mais importante para a aplicaccedilatildeo LOMA

Eacute composto por vinte e quatro sub-moacutedulos cada um deles responsaacutevel por analisarum tipo especiacutefico de problema e ainda por um sub-moacutedulo extra que eacute responsaacutevel pelocontrolo do sistema

O sub-moacutedulo extra questiona o utilizador que descreve o problema (ver 6 e 7) ecom base na sua descriccedilatildeo apresenta uma lista de possiacuteveis problemas (ver 8) Quandoo utilizador selecciona um problema da lista de resultados eacute activado o respectivo sub-moacutedulo que por sua vez iraacute fornecer informaccedilatildeo de como prevenir o problema ou nocaso de este jaacute ter acontecido como minimizar as suas consequecircncias (ver 9)

27

CAPIacuteTULO 2 ESTADO DA ARTE

Figura 6 Paacutegina inicial do sistema pericial LOMA

Figura 7 Sub-moacutedulo extra

28

23 WEB EXPERT SYSTEMS

Figura 8 Sugestatildeo de problemas do sub-moacutedulo extra

Figura 9 Sub-moacutedulo especializado

29

CAPIacuteTULO 2 ESTADO DA ARTE

2312 MDSS - Medical Diagnosis Support System

O MDSS eacute um sistema pericial utilizado na aacuterea da medicina e foi desenvolvido paraajudar no diagnoacutestico e tratamento da diabetes A diabetes pode afectar vaacuterias partes docorpo provocando diversos sintomas e complicaccedilotildees Quando detectada atempadamenteeacute mais facilmente controlaacutevel e menos perigosa Por todos estes motivos foi criado umsistema pericial online o MDSS que permite inferir sobre uma seacuterie de sintomas parachegar a um diagnoacutestico

Na opiniatildeo de Filho uma das vantagens deste sistema pericial eacute que possibilita quemeacutedicos em ambientes rurais ou perigosos e de difiacutecil acesso com recursos limitadospossam aceder ao sistema pericial de forma a terem uma ajuda no diagnoacutestico destadoenccedila O que comeccedilou como um sistema pericial vocacionado e orientado para adiabetes rapidamente cresceu e tornou-se algo mais do que isso sendo hoje utilizadocomo sistema de diagnoacutestico para vaacuterias doenccedilas

No que diz respeito agrave sua arquitectura o MDSS foi desenvolvido em LPA Prolog

recorrendo aos moacutedulos ProWeb e ProData e utilizando Open Data Base Connectivity

(ODBC) para acesso agrave base de dados Utiliza loacutegica fuzzy para raciociacutenio sobre incertezaspara lidar com conhecimento parcial

O sistema eacute composto por trecircs moacutedulos No primeiro moacutedulo eacute possiacutevel um es-pecialista definir sintomas exames cliacutenicos exames de laboratoacuterio e exames relativosa uma ou mais doenccedilas Eacute ainda possiacutevel a atribuiccedilatildeo de valores (pesos estatiacutesticos)ou de resultados que definem uma doenccedila Isso permite por exemplo que a pressatildeoarterial possa estar associada ao diagnoacutestico de pressatildeo alta diabetes gravidez de riscoou insuficiecircncia renal entre outros Informaccedilotildees de consultas anteriores e exames satildeoautomaticamente ligadas e analisadas sob fundamentaccedilatildeo loacutegico temporal

No segundo moacutedulo o sistema permite consultas atraveacutes do qual os dados relevantespara o paciente satildeo registados e relacionados com outros exames correlacionados Durantea fase de diagnoacutestico o sistema pode sugerir outros testes ou procedimentos para entatildeoinferir se haacute outros riscos e doenccedilas a serem investigados

No terceiro moacutedulo eacute efectuado o diagnoacutestico O sistema iraacute localizar automatica-mente os diagnoacutesticos jaacute registados noutras consultas incluindo aquelas feitas por outrosmeacutedicos Aleacutem disso o sistema pesquisa niacuteveis de doenccedilas de acordo com os resultadosdos exames Pode tambeacutem sugerir uma investigaccedilatildeo mais aprofundada sempre que osdados natildeo sejam suficientes para garantir um diagnoacutestico preciso

30

23 WEB EXPERT SYSTEMS

2313 Whale watcher

O sistema pericial Whale watcher eacute um sistema de demonstraccedilatildeo da plataforma AcquireEste e outros sistemas periciais similares estatildeo disponiacuteveis na paacutegina da Acquire (httpwwwaiinccademos)

Figura 10 Paacutegina principal do sistema pericial Whale Watcher

Figura 11 Paacutegina final do sistema pericial Whale Watcher

Atraveacutes das demonstraccedilotildees facultadas pela Acquire natildeo eacute possiacutevel concluir se existealgum tipo de sistema de explicaccedilotildees No entanto no final de cada sessatildeo do sistemapericial eacute possiacutevel consultar um resumo (ver 11) que funciona como uma explicaccedilatildeomuito baacutesica da inferecircncia realizada pelo sistema pericial jaacute que se limita apenas amostrar os factos que foram respondidos durante a sessatildeo

31

3Ferramentas utilizadas

Durante o desenvolvimento deste trabalho foi necessaacuterio decidir sobre quais as ferramen-tas a utilizar para a criaccedilatildeo do novo sistema pericial Atendendo a algumas caracteriacutesticasproacuteprias e objectivos traccedilados era necessaacuterio utilizar alguma especificidade na escolhapara garantir a exclusividade do resultado Desenvolvimento web capacidade de pro-ceder a inferecircncia sobre conhecimento representado atraveacutes de regras simplicidade deutilizaccedilatildeo actualidade da tecnologia entre outras caracteriacutesticas influenciaram significa-tivamente nesta escolha

Entre os vaacuterios ambientes de desenvolvimento disponiacuteveis a opccedilatildeo recaiu sobre umque para aleacutem de simples e eficiente era utilizado regularmente em situaccedilatildeo profissi-onal pelo criador deste projecto pelo que aqui foi relativamente simples chegar a umaconclusatildeo

Indo de encontro agraves razotildees que levaram agrave escolha da linguagem do motor de inferecircnciautilizada no projecto que deu origem a este trabalho tambeacutem aqui foi escolhida umalinguagem que possibilita o backtracking de forma eficaz e simplificada caracteriacutesticaessencial para o bom funcionamento do motor de inferecircncia e que contribui largamentepara o sucesso do sistema pericial

31 Ambiente de desenvolvimento

O ambiente de desenvolvimento e respectiva linguagem de programaccedilatildeo utilizados para acriaccedilatildeo do interface do sistema pericial foram seleccionados levando em conta algunsrequisitos e factores considerados necessaacuterios e ateacute mesmo essenciais para a soluccedilatildeo finalA listagem dessas caracteriacutesticas eacute a seguinte

bull Baixo custo de disponibilizaccedilatildeo

33

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

bull Independecircncia do sistema operativo

bull Simples escalabilidade

bull Visual apelativo

Com base nesta lista de caracteriacutesticas consideradas desejaacuteveis ou ateacute mesmo essen-ciais para a soluccedilatildeo final e considerando tambeacutem a jaacute longa experiecircncia de utilizaccedilatildeonesta plataforma foi escolhida a linguagem Java J2EE utilizando a framework Icefaces eo portal Glassfish Podemos considerar para esta escolha uma seacuterie de paracircmetros paraaleacutem dos jaacute evidenciados

bull O J2EE eacute uma linguagem independente do sistema operativo

bull O J2EE caracteriza-se pela sua modularidade

bull Glassfish eacute um portal open source com suporte para J2EE

bull Icefaces eacute uma framework JavaServer Faces (JSF) compatiacutevel com o Glassfish

bull Icefaces permite a criaccedilatildeo de interfaces graacuteficos de uma forma simples

bull Existecircncia de boa documentaccedilatildeo relativamente a todos os produtos

Para aleacutem disto podemos ainda considerar e referir outros produtos e componentesque natildeo sendo menos importantes tambeacutem foram utilizados durante o desenvolvimentodeste trabalho A lista completa de ferramentas eacute a seguinte

bull Java J2EE 60

bull Eclipse Galileo (com plugins para Glassfish e svn) - Integrated Development

Environment (IDE) para Java

bull Icefaces 182

bull GlassFish - portal

bull Visual SVN Server e Tortoise - controlo de versotildees

bull MikTeX - latex

bull TexnicCenter - IDE para latex

34

32 MOTOR DE INFEREcircNCIA

32 Motor de inferecircncia

Em qualquer sistema pericial o motor de inferecircncia eacute o cerne do mesmo O seu desenvol-vimento obriga habitualmente a um esforccedilo e concentraccedilatildeo maiores porque aqui residea forma como o sistema iraacute percorrer as vaacuterias etapas necessaacuterias para alcanccedilar umasoluccedilatildeo

Tambeacutem neste trabalho o motor de inferecircncia eacute um ponto essencial e a sua implemen-taccedilatildeo teve um papel destacado no processo de anaacutelise realizado Actualmente existemalguns produtos que podem ser utilizados integral ou parcialmente como motor deinferecircncia de um sistema pericial esses produtos podem ser frameworks ou shells ouainda Business Rule Management System (BRMS)

Os termos framework e shell satildeo muitas vezes utilizados como sinoacutenimo umaframework eacute uma abstracccedilatildeo que permite agregar formas de resoluccedilatildeo de problemascomuns uma shell eacute similar no sentido em que disponibiliza uma camada de abstracccedilatildeouma ldquoconchardquo que encapsula os serviccedilos

No sentido de tentar reutilizar um produto jaacute existente foi elaborado um estudo acercados actuais produtos e das suas caracteriacutesticas A abordagem seguida para esse estudo foiuma abordagem por fases em que gradualmente se foi estreitando o conjunto de soluccedilotildeesaceitaacuteveis mediante a utilizaccedilatildeo de alguns criteacuterios

Foram consideradas cinco fases

bull Fase I - Recolha de candidatos

bull Fase II - Requisitos base

bull Fase III - Viabilidade econoacutemica

bull Fase IV - Viabilidade teacutecnica

bull Fase V - Prova de conceito

321 Fase I - Recolha de candidatos

A fase I teve como objectivo recolher alguns dos actuais produtos que possuam caracteriacutes-ticas desejadas para um sistema deste geacutenero Natildeo foram considerados alguns produtosque satisfaziam os requisitos mas que natildeo permitem uma integraccedilatildeo com Java Foramidentificados os seguintes produtos como potenciais integradores do projecto

35

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

Produto BRMS FrameworkDrools X XHammurapi Rules XILog XJCLIPS XJESS XJEOPS XJRuleEngine XOpenL Tablets XOpenRules XProva language XYprolog XZilonis X

Tabela 1 Listagem de produtos da Fase I

Drools - ou JBoss Rules eacute um produto open source da RedHat (2010) Define umalinguagem especiacutefica para as regras Eacute desenvolvido em Java e utiliza um mecanismo deencadeamento directo baseado em regras natildeo implementa justificaccedilotildees

Hammurapi Rules - eacute um produto desenvolvido em Java por Hammurapi GroupEste motor de inferecircncia utiliza a sintaxe da linguagem Java para definiccedilatildeo de regras Eacutepossiacutevel definir grupos de regras em XML e estaacute disponiacutevel um plug-in para Eclipse quepermite a ediccedilatildeo destes grupos Suporta encadeamento directo e indirecto

ILOG - WebSphere ILOG Business Rule Management Systems eacute como o nome indicaum BRMS eacute um produto da IBM (2010) que requer licenciamento adequado Eacute necessaacuteriaa instalaccedilatildeo e configuraccedilatildeo de alguns componentes de forma a que o produto possa serutilizado por exemplo Rule Team Server Rule Execution Server Http server entreoutros

JCLIPS - eacute um produto open source mantido por uma comunidade e permite aintegraccedilatildeo entre Java e CLIPS O CLIPS ldquoC Language Integrated Production Systemrdquo eacuteum sistema pericial desenvolvido em linguagem C Maarten Menken (2010)

JESS - eacute um produto comercial da Sandia National Laboratories desenvolvidoem Java Eacute necessaacuterio adquirir licenccedilas para efectivar a utilizaccedilatildeo do mesmo ErnestFriedman-Hill (2010)

JEOPS - Java Embedded Object Production System (JEOPS) eacute uma framework open

source desenvolvida num acircmbito acadeacutemico por Carlos Figueira Filho

36

32 MOTOR DE INFEREcircNCIA

JRuleEngine - eacute um produto open source desenvolvido em Java e mantido porMcarniel (2010) As regras satildeo compiladas para classes Java

OpenL Tablets - eacute um BRMS open source cuja principal vantagem eacute a integraccedilatildeocom a folhas de caacutelculo Excel Permite a utilizaccedilatildeo de tabelas de decisatildeo no formatoExcel OpenL (2010)

OpenRules - eacute um produto da OpenRules Inc sujeito a licenccedila de utilizaccedilatildeo Eacutetotalmente orientado para a folha de caacutelculo Excel da Microsoft

Prova language - eacute um produto open source desenvolvido em Java por KozlenkovAlex and Paschke Disponibiliza uma linguagem muito semelhante ao prolog Eacute umproduto bastante direccionado para a comunicaccedilatildeo entre agentes expondo inclusiveacute umsistema multi-agente

Yprolog - eacute um produto open source desenvolvido em Java por Boris van SchootenEacute uma reacuteplica do prolog desenvolvida totalmente em Java Foi evoluindo ao longo dotempo a partir de produtos como o WProlog e o XProlog

Zilonis - eacute um produto desenvolvido em Java por Elie Levy O formato das regras eacutesemelhante ao CLIPS

322 Fase II - Requisitos base

A fase II teve como objectivo filtrar a lista de candidatos no sentido de excluir produtosque natildeo se enquadrem directamente com os requisitos do sistema a desenvolver Assimsendo foram excluiacutedos alguns dos candidatos jaacute indicados e os principais motivos daexclusatildeo satildeo

bull Natildeo permitirem a integraccedilatildeo com um portal

bull Formato das regras eacute fechado natildeo possibilitando possiacuteveis e futuras evoluccedilotildees

bull Natildeo disponibilizaccedilatildeo de acesso aos serviccedilos internos mais concretamente natildeofornecem uma framework de controlo Desta forma natildeo eacute possiacutevel reutilizar partesdo motor de inferecircncia ou do sistema de gestatildeo de regras sem que este seja feitoatraveacutes do proacuteprio produto

Candidatos excluiacutedos pelas razotildees atraacutes expostas

37

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProdutoILogOpenRulesOpenL Tablets

Tabela 2 Listagem de produtos excluiacutedos na Fase II

323 Fase III - Viabilidade econoacutemica

Sendo um paracircmetro com importacircncia relativa dada a possiacutevel aplicaccedilatildeo comercial deum produto baseado neste trabalho natildeo deixa de ser importante para o estudo realizadoDesta forma a fase III teve como objectivo filtrar a lista de resultados no sentido de excluirprodutos que natildeo sejam economicamente viaacuteveis quer por motivos de licenciamentocomercial quer por motivos de licenccedilas de utilizaccedilatildeo

Foram entatildeo considerados os produtos constantes da tabela 3 como natildeo viaacuteveis nosentido em que existem produtos open source similares para o efeito pretendido

ProdutoDroolsJESS

Tabela 3 Listagem de produtos excluiacutedos na Fase III

324 Fase IV - Viabilidade teacutecnica

Esta fase teve por objectivo filtrar a lista de resultados de forma a que os produtos natildeoviaacuteveis do ponto de vista teacutecnico natildeo sejam considerados para a escolha final

Os produtos que natildeo foram considerados viaacuteveis por questotildees teacutecnicas satildeo

38

32 MOTOR DE INFEREcircNCIA

Produto RazatildeoJEOPS Documentaccedilatildeo disponiacutevel bastante vaga projecto desconti-

nuado e natildeo estaacutevelJRuleEngine As regras satildeo compiladas para Java natildeo permite escalabili-

dade sem compilar o projectoZilonis Natildeo estaacute preparado para ser utilizado como framework ape-

nas permite uma aplicaccedilatildeo stand-alone

Hammurapi Rules As regras satildeo compiladas para Java natildeo permite escalabili-dade sem compilar o projecto

Tabela 4 Listagem de produtos excluiacutedos na Fase IV

325 Fase V - Prova de conceito

Nesta uacuteltima fase restaram trecircs produtos JClips Prova e YProlog Apoacutes a realizaccedilatildeode uma prova de conceito com estes produtos foram encontradas algumas vantagens edesvantagens Esta anaacutelise pode ser consultada nas tabelas 5 6 e 7

JClipsVantagens Desvantagens

bull Linguagem CLIPS bull Apenas permite 1 execuccedilatildeo deforma a permitir vaacuterias utilizaccedilotildeesdo motor de inferecircncia eacute necessaacuterioimplementar loacutegica especiacutefica

bull Ausecircncia de documentaccedilatildeo

Tabela 5 JClips - Vantagens e desvantagens

39

CAPIacuteTULO 3 FERRAMENTAS UTILIZADAS

ProvaVantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza exemplos de uti-lizaccedilatildeo

bull Uacuteltima actualizaccedilatildeo em 10 deJunho de 2010

bull Instaacutevel

bull Bastante ocupaccedilatildeo de recursos(CPU e memoacuteria)

bull Disponibilizaccedilatildeo de pouca docu-mentaccedilatildeo

bull Ao invocar um predicado natildeo ins-tancia apenas as variaacuteveis na pri-meira vez mas devolve uma lista detodos os resultados possiacuteveis simi-lar ao predicado findall do LPA Pro-log

Tabela 6 Prova - Vantagens e desvantagens

YProlog

Vantagens Desvantagens

bull Linguagem Prolog

bull Permite muacuteltiplas execuccedilotildeesem simultacircneo

bull Disponibiliza documentaccedilatildeo eexemplos de utilizaccedilatildeo

bull Operaccedilotildees baacutesicas do Prologtecircm o mesmo comportamento

bull Uacuteltima actualizaccedilatildeo em 21 de Abrilde 2006

Tabela 7 YProlog - Vantagens e desvantagens

326 Conclusatildeo e fundamentaccedilatildeo da escolha

Tratando-se do nuacutecleo do sistema pericial e sabendo que natildeo existe actualmente ummotor de inferecircncia que corresponda totalmente aos requisitos necessaacuterios foi decidido

40

32 MOTOR DE INFEREcircNCIA

desenvolver um motor de inferecircncia de raiz recorrendo a um produto que permitisse umdesenvolvimento raacutepido e com uma curva de aprendizagem pouco acentuada Para tale depois do estudo realizado perante as vaacuterias hipoacuteteses disponiacuteveis foi decidido optarpelo YProlog

Na uacuteltima fase do estudo apresentado entre os candidatos disponiacuteveis este aparececomo o mais viaacutevel quer pelos aspectos de adaptabilidade funcionamento e facilidadede utilizaccedilatildeo quer ainda pelo nuacutemero reduzido de desvantagens encontradas face aosrestantes

41

4Wexsys

Este trabalho baseia-se na criaccedilatildeo de um sistema pericial baseado no GISPSA e oobjectivo principal passa pela integraccedilatildeo do novo sistema num ambiente de acesso globalou mais especificamente num portal web Para atingir tal meta foi descrito nos capiacutetulosanteriores quais as ferramentas a utilizar sendo que agora vamos compreender como eacuteque a soluccedilatildeo em si foi desenvolvida

O sistema que nasceu a partir desta implementaccedilatildeo foi baptizado com o nome wexsys- ldquoWeb Expert Systemrdquo Partindo da base do GISPSA o wexsys possui um motor deinferecircncia totalmente novo criado especificamente no acircmbito deste trabalho e ainda umabase de conhecimento Foi decidido adoptar o princiacutepio de utilizaccedilatildeo de regras para arepresentaccedilatildeo da base de conhecimento

De referir ainda que o raciociacutenio utilizado no motor de inferecircncia segue uma filosofiado tipo backward chaining princiacutepio jaacute descrito nos capiacutetulos anteriores

Detentor de uma interface considerada actual para os paracircmetros utilizados nos diasque correm este novo sistema pericial foi criado atraveacutes da utilizaccedilatildeo de J2EE e Icefaces

que lhe conferem um aspecto renovado e extremamente apelativo aos utilizadores Satildeoutilizadas teacutecnicas tais como Ajax que providenciam uma dinacircmica de funcionamentomuito interessante do ponto de vista da utilizaccedilatildeo

41 Arquitectura global

A soluccedilatildeo foi projectada de acordo com a arquitectura J2EE ou seja utilizando uma sepa-raccedilatildeo em moacutedulos ou componentes Foram criados dois moacutedulos principais pWexsysEAR

e WexsysEAR estes moacutedulos satildeo a separaccedilatildeo da aplicaccedilatildeo em duas grandes camadas acamada web e a camada de negoacutecio

Esta separaccedilatildeo permite a instalaccedilatildeo da aplicaccedilatildeo num uacutenico servidor ou uma instala-

43

CAPIacuteTULO 4 WEXSYS

ccedilatildeo distribuiacuteda por vaacuterios servidores possibilitando tambeacutem a utilizaccedilatildeo de clusters Estaseparaccedilatildeo torna-se bastante uacutetil se pretendermos expandir a aplicaccedilatildeo para uma utilizaccedilatildeomais intensa ao niacutevel dos acessos A possibilidade de instalaccedilatildeo em muacuteltiplas maacutequinaspermite a obtenccedilatildeo de melhores resultados quando confrontada com a utilizaccedilatildeo de umambiente com apenas um uacutenico servidor

Figura 12 Arquitectura da soluccedilatildeo

411 Moacutedulo pWexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente visual da soluccedilatildeo tambeacutem conhecida porPresentation Layer Este moacutedulo eacute composto pelos componentes descritos na figura 13

Figura 13 Arquitectura do moacutedulo visual

bull pWexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

44

41 ARQUITECTURA GLOBAL

bull wWexsysGUI - componente principal que conteacutem as JSPrsquos servlet e managed

beans

bull jWexsysWebClient - classes utilizadas na camada visual

bull TGGraphLayout - componente externo que disponibiliza um controlo que permitea definiccedilatildeo de um grafo este componente vai ser descrito na secccedilatildeo 4133

bull jWexsysLog - permite o registo da ocorrecircncia de erros

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

412 Moacutedulo WexsysEAR

Este eacute o moacutedulo responsaacutevel pela componente de negoacutecio da aplicaccedilatildeo tambeacutem conhecidapor Business Layer eacute o centro de controlo de toda a soluccedilatildeo Este moacutedulo eacute compostopor alguns componentes como podemos ver na figura 14

Figura 14 Arquitectura do moacutedulo de negoacutecio

bull WexsysEAR - responsaacutevel pela criaccedilatildeo da aplicaccedilatildeo e da declaraccedilatildeo das depen-decircncias externas e internas

bull eWexsys - componente principal responsaacutevel pela criaccedilatildeo dos serviccedilos

bull eWexsysClient - classes utilizadas como objectos de transferecircncia bem como uminterface para o moacutedulo de negoacutecio

bull jWexsysUtils - classes utilitaacuterias internas

45

CAPIacuteTULO 4 WEXSYS

bull jWexsysLog - componente auxiliar para permitir o tratamento de erros

bull jWexsysEngine - responsaacutevel pela implementaccedilatildeo do motor de inferecircncia

bull YProlog - permite a interpretaccedilatildeo de coacutedigo prolog Este componente vai serdescrito na secccedilatildeo 4133

413 Interligaccedilatildeo e integraccedilatildeo dos moacutedulos

Como jaacute foi referido o wexsys foi desenvolvido respeitando a arquitectura J2EE como talos componentes que integram a aplicaccedilatildeo foram tambeacutem criados seguindo esse conceitoTodos os componentes foram estruturados de forma a poderem ser reutilizados com omiacutenimo de dependecircncias e toda a aplicaccedilatildeo foi projectada de forma a retirar o maacuteximopartido desta divisatildeo

Podemos ver na figura 15 um diagrama que permite verificar de que forma os compo-nentes estatildeo a ser utilizados O diagrama tem trecircs agrupamentos que pretendem descreverutilizando uma linguagem Object Oriented (OO) a sua visibilidade Os temos publicprotected e private satildeo utilizados como analogias aos respectivos conceitos na linguagemOO

4131 Camada de acesso puacuteblico

A camada de acesso puacuteblico expotildee os meacutetodos de interacccedilatildeo com a aplicaccedilatildeo sendocomposta por trecircs componentes wWexsysGUI jWexsysWebClient e eWexsysClient

Figura 15 Wexsys - Integraccedilatildeo dos componentes

46

41 ARQUITECTURA GLOBAL

Os componentes eWexsysClient e jWexsysWebClient contecircm interfaces de ligaccedilatildeoentre a camada visual e a camada de negoacutecio

eWexsysClient - disponibiliza as classes designadas Data Transfer Object (DTO) eainda o interface para os serviccedilos disponibilizados pelo wexsys

jWexsysWebClient - disponibiliza classes que caracterizam os conceitos de negoacuteciomas que contecircm atributos adicionais A razatildeo da existecircncia deste componente justificandashsecom a eventual expansatildeo da aplicaccedilatildeo para uma nova camada visual Os exemplos decoacutedigo 1 e 2 permitem-nos observar uma utilizaccedilatildeo de atributos extra na classe visualpara controlo de ocorrecircncia de erros

1 p u b l i c c l a s s RuleView

3 p r i v a t e i n t l e v e l = 0

5 Rule i d e n t i f i e r

7 p r i v a t e S t r i n g i d e n t i f i e r = n u l l

9 p r i v a t e S t r i n g i d e n t i f i e r E r r = n u l l

11 p r i v a t e b o o l e a n i d e n t i f i e r I n E r r = f a l s e

13

Rule d e s c r i p t i o n

15

p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

17

p r i v a t e S t r i n g d e s c r i p t i o n E r r = n u l l

19

p r i v a t e b o o l e a n d e s c r i p t i o n I n E r r = f a l s e

21

Coacutedigo 1 Excerto da classe RuleView

p u b l i c c l a s s Rule implemen t s S e r i a l i z a b l e

47

CAPIacuteTULO 4 WEXSYS

2

p r i v a t e i n t l e v e l = 0

4

Rule i d e n t i f i e r

6

p r i v a t e S t r i n g i d e n t i f i e r = n u l l

8

10 Rule d e s c r i p t i o n

12 p r i v a t e S t r i n g d e s c r i p t i o n = n u l l

14 Coacutedigo 2 Excerto da classe Rule

O outro componente envolvido na camada puacuteblica o wWexsysGUI eacute o responsaacute-vel pela interacccedilatildeo com aplicaccedilatildeo Eacute o componente que disponibiliza as paacuteginas e oresponsaacutevel pela coordenaccedilatildeo de todo o processo web

4132 Camada de acesso protegido

A camada de acesso protegido disponibiliza componentes que podem ser utilizados pelosdois moacutedulos mas que natildeo estatildeo disponiacuteveis para o exterior Neste caso existe apenas umcomponente nestas condiccedilotildees o jWexsysLog cuja funccedilatildeo eacute assegurar o registo de erros

jWexsysLog - componente responsaacutevel pelo registo de erros utiliza internamente aframework log4j

4133 Camada de acesso privado

A camada de acesso privado incluiacute todos os componentes responsaacuteveis por processa-mento interno Os componentes responsaacuteveis pelo processamento interno satildeo eWexsysjWexsysEngine e jWexsysUtils Tambeacutem incluiacutedos no conceito de processamento internoestatildeo os componentes TGGraphLayout e YProlog

eWexsys - eacute o componente responsaacutevel pela implementaccedilatildeo do interface de negoacuteciodelegando as funcionalidades em classes especializadas ou no componente responsaacutevelpela integraccedilatildeo com o nuacutecleo da aplicaccedilatildeo o jWexsysEngine

48

41 ARQUITECTURA GLOBAL

jWexsysEngine - eacute o componente responsaacutevel pelo nuacutecleo da aplicaccedilatildeo ou sejaeacute o responsaacutevel pela integraccedilatildeo do java com o prolog e vice-versa Eacute o componenteresponsaacutevel pelo mapeamento das classes de java para as classes de comunicaccedilatildeo com oprolog

jWexsysUtils - eacute um componente auxiliar que disponibiliza e encapsula utilitaacuteriospara uma melhor organizaccedilatildeo interna da aplicaccedilatildeo

TGGraphLayout - eacute um componente tambeacutem conhecido por TouchGraph eacute umprojecto mantido por uma comunidade e estaacute disponiacutevel no sourceforge AlexanderShapiro (2010)

YProlog - este componente foi o escolhido durante a fase de estudo da implementaccedilatildeopara ser a base do motor de inferecircncia (321)

4134 Fluxo de invocaccedilatildeo

A aplicaccedilatildeo foi desenvolvida de forma a que todos os pedidos seguissem um mesmo fluxode invocaccedilatildeo de forma a uniformizar o processo Na figura 16 temos uma relaccedilatildeo dasclasses principais da aplicaccedilatildeo

Figura 16 Diagrama de classes principais

O fluxo de invocaccedilatildeo inicia-se atraveacutes do WexsysBean no caso de funcionalidades

49

CAPIacuteTULO 4 WEXSYS

do motor de inferecircncia ou atraveacutes do WexsysKBBean no caso de funcionalidades dabase de conhecimento Ambos os managed beans delegam no WexsysViewManager querecorrendo agrave classe WexsysViewHelper converte as classes view para classes DTO Aclasse WexsysViewManager por sua vez delega no session bean WexsysSessionBean quemediante o tipo de pedido delega nas classes de validaccedilatildeo ou nas classes do motor deinferecircncia WexsysEngineImpl

Este processo pode ser observado na figura 17 que representa um diagrama de sequecircn-cia exemplificativo do fluxo de invocaccedilatildeo geneacuterico

Figura 17 Diagrama de sequecircncia do fluxo de invocaccedilatildeo

414 Portal

O wexsys tem como ponto de entrada na aplicaccedilatildeo uma paacutegina inicial que permite aidentificaccedilatildeo do utilizador no sistema pericial Como se trata de um trabalho acadeacutemico aparte de validaccedilatildeo e autenticaccedilatildeo de utilizadores natildeo foi contemplada como tal eacute possiacutevelautenticar-se com qualquer utilizador Para aleacutem da autenticaccedilatildeo eacute ainda possiacutevel indicarpara a sessatildeo actual qual o miacutenimo grau de confianccedila para a apresentaccedilatildeo de uma resposta

50

41 ARQUITECTURA GLOBAL

O endereccedilo da aplicaccedilatildeo respeita o seguinte formato httpservidorportawWexsysGUI onde servidor e porta satildeo os dados de configuraccedilatildeo do Portal Server

Figura 18 Wexsys - Paacutegina inicial

Quando o utilizador inicia a utilizaccedilatildeo do sistema ficam disponiacuteveis trecircs funcionali-dades que seratildeo referidas nas secccedilotildees seguintes

4141 Templates

Um dos aspectos comuns a toda a aplicaccedilatildeo eacute o aspecto graacutefico tendo este sido imple-mentado recorrendo a Facelets Um template facelets define-se pela criaccedilatildeo de umapaacutegina modelo em que existem zonas dinacircmicas Este conceito eacute conhecido de outrastecnologias por exemplo Web Parts ou Master Pages desenvolvidos pela Microsoft

O coacutedigo 3 permite ver como foi desenvolvido o template principal

lthtml

2 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

4 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

6

lt i c e o u t p u t D e c l a r a t i o n

8 doc typeRoo t =HTML

d o c t y p e P u b l i c =minus W3C DTD XHTML 1 0 S t r i c t EN

10 doc typeSys tem = h t t p www w3 org TR xhtml1 DTD xhtml1minus s t r i c t

d t d gt

51

CAPIacuteTULO 4 WEXSYS

12 lthead gt

lt t i t l e gtwexsys minus p a g e T i t l e lt t i t l e gt

14 [ meta t a g s e l i n k t o c s s f i l e s ]

lt head gt

16 ltbody gt

lt f view l o c a l e = f a c e s C o n t e x t e x t e r n a l C o n t e x t r e q u e s t L o c a l e gt

18 lt i c e l o a d B u n d l e basename =com wexsys g u i r e s o u r c e s bund leRes

v a r = bund leRes gt

lt i c e form p a r t i a l S u b m i t = t r u e gt

20 lt d i v i d = wrapper gt

lt d i v i d = logo gt

22 lth1gtlta h r e f = gtWExSys lt a gt lt h1gt

lth2gtweb e x p e r t system lt h2gt

24 lt div gt

lt d i v i d = h e a d e r gt

26 lt d i v i d =menugt

[ Menu c o n t e n t ]

28 lt div gt

lt div gt

30 lt div gt

lt d i v i d = page gt

32 lt d i v i d = c o n t e n t gt

lt u i i n s e r t name= c o n t e n t gt

34 D e f a u l t C o n t e n t

lt u i i n s e r t gt

36 lt div gt

lt d i v i d = s i d e b a r gt

38 lt u i i n s e r t name= s i d e b a r gt

S i d e b a r c o n t e n t

40 lt u i i n s e r t gt

lt div gt

42 lt d i v s t y l e = c l e a r bo th gt

lt div gt

44 lt div gt

lt d i v i d = f o o t e r gt

46 F o o t e r c o n t e n t

lt div gt

48 lt i c e form gt

52

41 ARQUITECTURA GLOBAL

lt f view gt

50 lt body gt

lt html gt Coacutedigo 3 Coacutedigo do template principal do portal

Na listagem de coacutedigo 3 podemos ver a vermelho as aacutereas que foram definidas comodinacircmicas no coacutedigo 4 tambeacutem a vermelho podemos ver as respectivas aacutereas num cenaacuteriode implementaccedilatildeo de uma paacutegina

1 lt u i c o m p o s i t i o n

t e m p l a t e =WEBminusINF incminust e m p l a t e s mainminust e m p l a t e j s p x

3 xmlns = h t t p www w3 org 1 9 9 9 xhtml

xmlns u i = h t t p j a v a sun com j s f f a c e l e t s

5 xmlns f = h t t p j a v a sun com j s f c o r e

xmlns i c e = h t t p www i c e s o f t com i c e f a c e s component gt

7

9 lt u i d e f i n e name= c o n t e n t gt

[ ]

11 lt u i d e f i n e gt

13 lt u i d e f i n e name= s i d e b a r gt

[ ]

15 lt u i d e f i n e gt

17 lt u i c o m p o s i t i o n gt Coacutedigo 4 Coacutedigo da paacutegina inicial do portal

415 Suporte multi-liacutengua

O wexsys foi desenvolvido considerando um factor bastante relevante numa aplicaccedilatildeoactual o suporte multi-liacutengua Este suporte eacute uma das vantagens do sistema e foiimplementado recorrendo a ficheiros de recursos (properties) de forma a exteriorizartodos os textos de saiacuteda

Desta forma para dar suporte a uma nova liacutengua apenas teremos que traduzir os textosnos ficheiros de recursos e de alterar a aplicaccedilatildeo de forma a permitir seleccionar o idioma

53

CAPIacuteTULO 4 WEXSYS

A alteraccedilatildeo a ser efectuada na aplicaccedilatildeo eacute muito simples jaacute que basta passar o valor doatributo ldquolocalerdquo da tag ldquofviewrdquo como sendo a liacutengua pretendida

42 Motor de inferecircncia

Para este trabalho foi definida a criaccedilatildeo de um motor de inferecircncia de raiz que pudesseefectivamente substituir o utilizado no sistema base O novo motor desenvolvido teraacute quesuportar uma seacuterie de especificaccedilotildees a comeccedilar pela capacidade de operar num ambientemulti-utilizador

O motor de inferecircncia deve estar preparado para lidar com conhecimento incerto foiescolhido a teacutecnica dos factores de certeza por ser uma teacutecnica simples de reproduzir eeficaz na sua utilizaccedilatildeo

Para aleacutem disto e tratando-se um sistema pericial o motor de inferecircncia deveraacuteser independente da base de conhecimento utilizada e deveraacute idealmente suportar umsistema de explicaccedilotildees que responda a eventuais pedidos por parte dos utilizadores quepretendam ver mais detalhadamente quais as regras que conduziram agrave conclusatildeo obtidaTambeacutem seraacute possiacutevel saber porque eacute que determinada questatildeo eacute colocada (explicaccedilotildeesvulgarmente denominadas de como e porquecirc)

421 Multi-utilizador

Quando se pretende que um sistema pericial tenha uma utilizaccedilatildeo mono-posto (comoera o caso do GISPSA) apenas eacute criada uma instacircncia por cada vez que eacute chamado omotor de inferecircncia No nosso caso tendo sido estabelecido que o novo sistema teriaque permitir uma utilizaccedilatildeo multi-utilizador eacute necessaacuterio desenvolver os mecanismosnecessaacuterios para permitir execuccedilotildees de vaacuterias instacircncias para o novo motor de inferecircncia

A classe WexsysEngineFactory5 eacute a responsaacutevel por criar uma instacircncia do motorde inferecircncia por cada utilizador que inicia a utilizaccedilatildeo do sistema Esta classe tem ummeacutetodo do tipo static o meacutetodo getInferenceEngine que tem como paracircmetros de entradaum utilizador e devolve uma instacircncia do motor de inferecircncia As instacircncias activas satildeoguardadas internamente e sempre que eacute invocado o meacutetodo eacute obtida a respectiva instacircnciaNo caso de ainda natildeo existir uma instacircncia entatildeo eacute criada uma nova e guardada

1

C r e a t e s an i n s t a n c e o f I n f e r e n c e E n g i n e

54

42 MOTOR DE INFEREcircNCIA

3

param usernameKey

5 The usernameKey t o use

7 return I n f e r e n c e E n g i n e i n s t a n c e

throws WexsysArgumen tExcep t ion

9

p u b l i c s t a t i c WexsysEngineImpl g e t I n f e r e n c e E n g i n e ( S t r i n g

usernameKey )

11 throws WexsysArgumentExcept ion

i f ( g e t R u l e U r l ( ) == n u l l | | g e t R u l e U r l ( ) l e n g t h ( ) == 0)

13 throw new WexsysArgumentExcept ion ( mainKnowledgeBaseUrl

r u l e U r l )

15 WexsysEngineImpl i n f e r e n c e E n g i n e = n u l l

17 Have we a l r e a d y c r e a t e d an i n s t a n c e

i f ( g e t I n f e r e n c e E n g i n e s ( ) c o n t a i n s K e y ( usernameKey ) )

19 Obta in t h e i n s t a n c e a s s o c i a t e d t o t h e s p e c i f i e d key

i n f e r e n c e E n g i n e = g e t I n f e r e n c e E n g i n e s ( ) g e t ( usernameKey )

21 e l s e

Cr ea t e a new i n s t a n c e and s t o r e i t i n t h e h o l d e r

23 i n f e r e n c e E n g i n e = new WexsysEngineImpl ( usernameKey

r u l e U r l kb sUr l )

g e t I n f e r e n c e E n g i n e s ( ) p u t ( usernameKey i n f e r e n c e E n g i n e )

25

27 re turn i n f e r e n c e E n g i n e

Coacutedigo 5 Meacutetodo responsaacutevel pela utilizaccedilatildeo multi-utilizador em paralelo

422 Base de conhecimento inicial

Ao partir para o desenvolvimento de um sistema pericial eacute necessaacuterio adoptar uma basede conhecimento inicial simples que sirva de suporte ao desenvolvimento do mesmo

55

CAPIacuteTULO 4 WEXSYS

A base de conhecimento inicial foi adoptada a partir do estudo de Merritt (1989) Foiseleccionada devido a duas caracteriacutesticas principais

bull simplicidade - no sentido em que as regras satildeo pequenas e simples de interligar

bull abrangecircncia - existem alguns cenaacuterios possiacuteveis de serem testados com o protoacutetipocomo por exemplo raciociacutenio sobre incerteza e conclusotildees intermeacutedias

A base de conhecimento inicial escolhida tem a seguinte estrutura

bull rule 1 if not turn_over and battery_bad then problem is battery cf 100

bull rule 2 if lights_weak then battery_bad cf 50

bull rule 3 if radio_weak then battery_bad cf 50

bull rule 4 if turn_over and smell_gas then problem is flooded cf 80

bull rule 5 if turn_over and gas_gauge is empty then problem is out_of_gas cf 90

bull rule 6 if turn_over and gas_gauge is low then problem is out_of_gas cf 30

423 Protoacutetipo do motor de inferecircncia

Para o desenvolvimento do protoacutetipo inicial do motor de inferecircncia foi necessaacuterio definiralguns aspectos essenciais tais como

1 Formato da regras

2 Formato das questotildees

3 Interacccedilatildeo assiacutencrona de questotildees e respostas

4 Algoritmos a utilizar

4231 Formato das regras

O formato das regras foi definido tendo em conta alguns pressupostos Entre elessalientam-se a necessidade da utilizaccedilatildeo de graus de confianccedila e a capacidade de guardaruma descriccedilatildeo para cada regra

O formato escolhido para a representaccedilatildeo de uma regra foi o seguinte

56

42 MOTOR DE INFEREcircNCIA

rule(

ltcodigogt rsquoDescriccedilatildeo da regrarsquo

lhs([

ev(ltpremissagt ltvalor da premissagt)

ev(ltpremissa_ngt ltvalor da premissa_ngt)

])

rhs(ev(ltsoluccedilatildeogt ltvalor da soluccedilatildeogt) CF)

)

Na definiccedilatildeo do ltLHSgt eacute possiacutevel definir uma lista de premissas e respectivos valoresno caso da regra conter mais do que uma premissa Um aspecto relevante relacionado coma lista de premissas eacute que esta considera apenas o operador conjunccedilatildeo entre premissas

4232 Formato das questotildees

O formato das questotildees foi tambeacutem definido assumindo alguns princiacutepios tais como apossibilidade de respostas muacuteltiplas e ainda a atribuiccedilatildeo de um texto quer agrave questatildeo a serapresentada quer agraves hipoacuteteses colocadas

O formato escolhido para a representaccedilatildeo de uma questatildeo foi o seguinte

question(

turn_over

rsquoO carro ligarsquo

[

answer(ltvalorgt ltdescriccedilatildeo do valorgt)

answer(ltvalor_ngt ltdescriccedilatildeo do valor_ngt)

]

ltescolha_multipla = 1 0gt

)

4233 Interacccedilatildeo assiacutencrona de questotildees e respostas

Numa qualquer execuccedilatildeo de um software instalado e executado localmente numa maacutequinao funcionamento normal seraacute a execuccedilatildeo de um conjunto de instruccedilotildees ateacute ao ponto emque seja necessaacuteria a interacccedilatildeo com um utilizador Quando isso acontece o programafica suspenso ateacute que o utilizador responda ao que lhe foi solicitado continuando depoiscom a sua execuccedilatildeo a partir do ponto onde parou

57

CAPIacuteTULO 4 WEXSYS

No caso de um programa desenvolvido em prolog e mais especificamente um sistemapericial o conceito atraacutes descrito eacute exactamente o mesmo jaacute que o programa apenassuspende a execuccedilatildeo quando eacute necessaacuterio colocar uma questatildeo que o utilizador teraacute queforccedilosamente responder para dar continuidade ao programa

Se no entanto considerarmos a realidade de uma aplicaccedilatildeo web este princiacutepio jaacutenatildeo seraacute tatildeo linear porque um servidor web recebe um pedido executa-o e devolve umresultado O mesmo seraacute dizer que numa execuccedilatildeo de um componente prolog a partirde um servidor web a pilha de execuccedilatildeo eacute interrompida quando eacute necessaacuterio questionaro utilizador mas natildeo eacute possiacutevel continuar a execuccedilatildeo da mesma a partir do ponto ondeparou Em vez disso seraacute necessaacuterio desfazer a pilha de execuccedilatildeo criada e assim queexistir a resposta do utilizador (eacute feito novo pedido ao servidor) a execuccedilatildeo eacute realizadanovamente desde o iniacutecio mas desta vez considerando a resposta recebida

As razotildees para este comportamento justificam-se pela utilizaccedilatildeo do protocolo HTTPem que eacute necessaacuterio existir um pedido e uma resposta O que obriga a que a colocaccedilatildeoda pergunta e a resposta sejam assiacutencronos podendo existir entre as duas acccedilotildees vaacuteriospedidos (pedidos de explicaccedilotildees por exemplo)

Este ldquoproblemardquo levou agrave necessidade do desenvolvimento de um mecanismo quepermita um funcionamento coerente num programa que utilize (como neste caso) oprolog simulando o comportamento que este teria numa situaccedilatildeo de execuccedilatildeo local

O mecanismo proposto foi a alteraccedilatildeo do predicado responsaacutevel pelo processo re-cursivo especificando um atributo auxiliar de controlo que acompanha a execuccedilatildeo dopredicado Esse atributo auxiliar quando detectada a necessidade de colocaccedilatildeo de umaquestatildeo eacute instanciado e impede a prossecuccedilatildeo do predicado retornando a execuccedilatildeo paraa web com a respectiva questatildeo

Este mecanismo permite uma comunicaccedilatildeo assiacutencrona com a parte web mantendo asvantagens da recursividade do prolog

4234 Estrutura da base de conhecimento

A base de conhecimento apoacutes a definiccedilatildeo do formato de representaccedilatildeo das regras e dasquestotildees eacute a seguinte

q u e s t i o n ( t u r n _ o v e r rsquoO c a r r o l i g a rsquo

2 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

4 q u e s t i o n ( l i g h t s _ w e a k rsquoAs l u z e s e s t a o f r a c a s rsquo

58

42 MOTOR DE INFEREcircNCIA

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

6

q u e s t i o n ( rad io_weak rsquoO r a d i o e s t a f r a c o rsquo

8 [ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

10 q u e s t i o n ( s m e l l _ g a s rsquo C h e i r a a g a s o l i n a rsquo

[ answer ( yes rsquo Sim rsquo ) answer ( no rsquoNao rsquo ) ] 0 )

12

q u e s t i o n ( gas_gauge rsquoO que marca o p o n t e i r o do d e p o s i t o da

g a s o l i n a rsquo

14 [ answer ( empty rsquo Vazio rsquo ) answer ( high rsquo S u f i c i e n t e rsquo ) answer

( low rsquo Rese rva rsquo ) ] 0 )

16 r u l e ( r u l e _ 1 rsquo Rule 1 rsquo

l h s ( [ ev ( t u r n _ o v e r no ) ev ( b a t t e r y _ b a d yes ) ] ) r h s ( ev (

problem b a t t e r y ) 100) )

18

r u l e ( r u l e _ 2 rsquo Rule 2 rsquo

20 l h s ( [ ev ( l i g h t s _ w e a k yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

22 r u l e ( r u l e _ 3 rsquo Rule 3 rsquo

l h s ( [ ev ( rad io_weak yes ) ] ) r h s ( ev ( b a t t e r y _ b a d yes ) 50) )

24

r u l e ( r u l e _ 4 rsquo Rule 4 rsquo

26 l h s ( [ ev ( s m e l l _ g a s yes ) ev ( t u r n _ o v e r yes ) ] ) r h s ( ev ( problem

f l o o d e d ) 80) )

28 r u l e ( r u l e _ 5 rsquo Rule 5 rsquo

l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge empty ) ] ) r h s ( ev (

problem o u t _ o f _ g a s ) 90) )

30

r u l e ( r u l e _ 6 rsquo Rule 6 rsquo

32 l h s ( [ ev ( t u r n _ o v e r yes ) ev ( gas_gauge low ) ] ) r h s ( ev ( problem

o u t _ o f _ g a s ) 30) ) Coacutedigo 6 Representaccedilatildeo da base de conhecimento do protoacutetipo

59

CAPIacuteTULO 4 WEXSYS

4235 Algoritmos a utilizar

Um dos paracircmetros mais relevantes para o funcionamento do algoritmo inicial eacute o graumiacutenimo de confianccedila que eacute indicado no iniacutecio da utilizaccedilatildeo do sistema na paacutegina inicialSe o valor indicado para este paracircmetro for demasiado elevado poderaacute inibir algumasregras impedindo o seu disparo no caso de natildeo ser atingido o grau de confianccedila necessaacuterioPor outro lado se o valor introduzido for demasiado baixo permitiraacute que qualquer regradispare independentemente do seu grau de confianccedila traduzindo-se numa maior aacutervorede pesquisa

O motor de inferecircncia eacute executado mediante o recurso a um predicado principal Estepredicado seraacute o responsaacutevel pelo iniacutecio do processo de inferecircncia De seguida seratildeoapresentados alguns dos algoritmos considerados mais relevantes Os algoritmos 1 2 e 3representam atraveacutes da utilizaccedilatildeo de pseudo-coacutedigo alguma da loacutegica implementada nomotor de inferecircncia

Algoritmo 1 Algoritmo principal do motor de inferecircnciabegin tryToProve

while empty ControlObj doobtemRegra (r)disparoPremissaslarr truefor premissa isin LHS do

ControlObjdisparoularr verificaPremissa (p)disparoPremissaslarr disparoPremissas ampamp disparouif not empty ControlObj then

termina o algoritmoend

endif empty ControlObj then

if disparoTodasPremissas thenfireRules

endend

endend

60

42 MOTOR DE INFEREcircNCIA

Algoritmo 2 Verifica se uma premissa eacute verdadeirainput Premissa poutput ControlObj disparoubegin verificaPremissa

disparoularr false ControlObjlarr nullif checkExistFact (p) ou checkExistQuestionFact (p) oucheckExistRuleFact (pControlObj) then

disparoularr true exitend

end

Algoritmo 3 Dispara as regras que possam ser disparadasbegin fireRules

for regra isin basedeconhecimento doif regra not fired then

if regra pode disparar thencalcula grau de confianccediladispara regraif regra dispara soluccedilatildeo final then

termina execuccedilatildeo preenchendo ControlObjendif regra natildeo dispara soluccedilatildeo final then

continuaend

endend

endend

61

CAPIacuteTULO 4 WEXSYS

424 Resultado final

Apoacutes a implementaccedilatildeo do protoacutetipo inicial do motor de inferecircncia e dos testes necessaacuteriosagrave verificaccedilatildeo do bom funcionamento do mesmo chegamos ao resultado final que foiutilizado no wexsys

Este novo motor de inferecircncia foi desenvolvido levando em consideraccedilatildeo todasas caracteriacutesticas consideradas essenciais tanto para a execuccedilatildeo num ambiente multi-utilizador como para a execuccedilatildeo num servidor web e que foram jaacute descritas nas secccedilotildeesanteriores De referir ainda que face ao motor de inferecircncia do sistema base esteapresenta uma seacuterie de melhorias tais como rapidez de funcionamento e abstracccedilatildeo dabase de conhecimento utilizada

4241 Arranque da execuccedilatildeo

Como jaacute referido o motor de inferecircncia segue os algoritmos descritos na secccedilatildeo 4235 enesta secccedilatildeo seraacute abordado o processo utilizado desde o arranque do motor de inferecircnciaateacute agrave apresentaccedilatildeo dos dados como podemos ver na figura 19

Figura 19 Paacutegina inicial do motor de inferecircncia

O utilizador comeccedila na paacutegina inicial e selecciona a opccedilatildeo ldquoMotor de InferecircnciardquoDepois eacute apresentada uma paacutegina que permite iniciar o motor de inferecircncia utilizando a

62

42 MOTOR DE INFEREcircNCIA

opccedilatildeo ldquoiniciarrdquo Isto despoleta o mecanismo de inferecircncia como podemos verificar nafigura 20

Figura 20 Fluxo de invocaccedilatildeo inicial do processo de inferecircncia

A classe YProlog invoca o predicado top_goals que mais natildeo eacute que o ponto de entradano motor de inferecircncia A sua funccedilatildeo seraacute obter qual a ldquoconclusatildeo final a procurarrdquo (estetoacutepico seraacute descrito na secccedilatildeo 432) para se poder iniciar o algoritmo propriamentedito Na listagem de coacutedigo 7 eacute possiacutevel consultar os predicados responsaacuteveis pelaimplementaccedilatildeo dos algoritmos Apenas estatildeo listados os predicados principais

Eacute possiacutevel consultar o coacutedigo do motor de inferecircncia no anexo A

t o p _ g o a l s ( Con t ro lOb j MinCF ) minus

2 t o p _ g o a l ( TopGoal )

t o p ( TopGoal Con t ro lOb j MinCF )

63

CAPIacuteTULO 4 WEXSYS

4

t o p ( TopGoal Con t ro lOb j MinCF ) minus6 r e t r a c t a l l ( h i s t 2 ) s e t ( l en 0 )

g e t R u l e M o r e R e l e v a n t ( TopGoal Rule )

8 t r y T o P r o v e ( Rule Con t ro lOb j MinCF )

10 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) minusr u l e ( Rule _ l h s (LHS) _ )

12 p r o v e L i s t H y p (LHS Con t ro lOb j MinCF )

g e t ( l en LEN) LEN1 i s LEN + 1

14 a s s e r t ( h i s t ( LEN1 Rule ) )

s e t ( l en LEN1)

16 (

check i f r u l e has re turn c o n t r o l o b j e c t

18 ( v a r ( C o n t r o l O b j ) ) minusgt(

no c o n t r o l o b j e c t found check i f o t h e r r u l e s needs t o

be f i r e d

20 f i r e R u l e s ( Con t ro lOb j MinCF )

) (

22 c o n t r o l o b j e c t found

t rue24 )

)

26

p r o v e L i s t H y p ( [ ] Con t ro lOb j MinCF )

28 p r o v e L i s t H y p ( [H | T ] Con t ro lOb j MinCF ) minusproveHyp (H Con t ro lOb j MinCF )

30 (

( v a r ( C o n t r o l O b j ) ) minusgt (

32 p r o v e L i s t H y p ( T Con t ro lOb j MinCF )

) (

34 t rue)

36 )

38

f a c t a l r e a d y known

40 proveHyp (H Con t ro lOb j MinCF ) minus

64

42 MOTOR DE INFEREcircNCIA

H = ev (X Y) f a c t (X Y _ )

42

t h e r e i s a q u e s t i o n t h a t can l e a d t o a f a c t

44 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

n o t ( f a c t (X _ _ ) )

46 q u e s t i o n (X _ _ _ )

n o t ( n o t _ q u e s t i o n (X) )

48 C o n t r o l O b j = ask (X)

50 t h e r e i s a c o n c l u s i o n t h a t can

l e a d t o a q u e s t i o n t h a t can l e a d t o a f a c t

52 proveHyp (H Con t ro lOb j MinCF ) minus H = ev (X _ )

r u l e ( Rule _ l h s (LHS) r h s ( ev (X _ ) V) )

54 t r y T o P r o v e ( Rule Con t ro lOb j MinCF ) Coacutedigo 7 Predicados principais do motor de inferecircncia

4242 Mecanismo de respostas

O mecanismo de respostas eacute algo similar ao processo descrito anteriormente A suafunccedilatildeo seraacute guardar a resposta que foi seleccionada pelo utilizador e prosseguir com oalgoritmo de forma a que uma nova questatildeo seja colocada ou a soluccedilatildeo final alcanccedilada

Um paracircmetro considerado obrigatoacuterio na submissatildeo de uma resposta eacute o grau deconfianccedila Este valor serviraacute para realizar o caacutelculo do grau de confianccedila da regra quandoa mesma puder ser disparada

Podemos ver na figura 21 o processo de resposta a uma questatildeo

65

CAPIacuteTULO 4 WEXSYS

Figura 21 Fluxo de invocaccedilatildeo de resposta a uma questatildeo

Eacute ainda possiacutevel natildeo responder agrave questatildeo colocada utilizando a opccedilatildeo ldquonatildeo sei natildeoresponderrdquo Esta opccedilatildeo iraacute guardar internamente uma indicaccedilatildeo para natildeo voltar a colocara questatildeo ignorada evitando entrar em ciclos

Agrave medida que o processo avanccedila eacute possiacutevel acompanhar o estado actual do motor deinferecircncia Este acompanhamento eacute realizado mediante a anaacutelise da zona situada do ladodireito da paacutegina e que vai sendo actualizada a cada interacccedilatildeo com o motor de inferecircnciaA zona referida permite obter informaccedilotildees acerca de

bull Regras que jaacute foram disparadas

bull Factos que foram inferidos pelo disparo das regras

bull Factos que foram facultados pelo utilizador ao responder agraves questotildees

bull Factos conhecidos antes do iniacutecio do processo de inferecircncia

66

42 MOTOR DE INFEREcircNCIA

Estes factos satildeo obtidos atraveacutes do predicado ldquoinf_sys((L_Rules L_Inf_Facts L_Know_FactsL_Init_Facts)rdquo Este predicado eacute invocado apoacutes cada interacccedilatildeo com o motor de inferecircnciae desta forma os dados estatildeo sempre actualizados

4243 Conclusatildeo final encontrada

Quando o disparo de uma regra leva a que seja adicionado um facto que corresponde auma soluccedilatildeo final o motor de inferecircncia termina a sua execuccedilatildeo devolvendo a conclusatildeofinal a que chegou bem como o respectivo grau de confianccedila Na figura 22 podemos ver afase final do processo de inferecircncia O grau de confianccedila da conclusatildeo final eacute atribuiacutedocom recurso agrave foacutermula seguinte

Dada uma regra X com premissas P1 a Pn e CF =CF (X) entatildeo temos

CF(X P1 Pn) = min [CF(P1) CF(Pn)]timesCF(X)

Figura 22 Conclusatildeo da inferecircncia

4244 Explicaccedilotildees

Eacute possiacutevel em qualquer altura colocar a questatildeo ldquoporquecircrdquo antes de submetermos umaresposta ou a questatildeo ldquocomordquo apoacutes uma conclusatildeo final Este tipo de explicaccedilotildeescontribui para a fase de validaccedilatildeo do sistema pericial colocando-as ao dispor do perito

67

CAPIacuteTULO 4 WEXSYS

responsaacutevel pela validaccedilatildeo expondo desta forma o raciociacutenio seguido no decorrer dainferecircncia Exemplos da solicitaccedilatildeo de explicaccedilotildees podem ser consultados atraveacutes dasfiguras 23 24 e 25

Figura 23 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo

68

42 MOTOR DE INFEREcircNCIA

Figura 24 Utilizaccedilatildeo da explicaccedilatildeo ldquoporquecircrdquo numa regra intermeacutedia

Figura 25 Utilizaccedilatildeo da explicaccedilatildeo ldquocomordquo numa soluccedilatildeo final

69

CAPIacuteTULO 4 WEXSYS

As explicaccedilotildees ldquoporquecircrdquo foram implementadas recorrendo a predicados temporaacuterios(hist) que acompanham o desenrolar do motor de inferecircncia Eacute possiacutevel em qualqueraltura consultar esses predicados para obter de uma forma imediata a explicaccedilatildeo doporquecirc da questatildeo estar a ser feita

As explicaccedilotildees ldquocomordquo jaacute seguem um mecanismo mais complexo Quando umaregra eacute disparada origina conclusotildees intermeacutedias ou finais essas conclusotildees natildeo satildeo maisdo que simples factos O motor de inferecircncia sempre que dispara uma regra associa aofacto a regra que o originou por intermeacutedio do predicado inf_exp_how

Desta forma basta algum coacutedigo para que seja possiacutevel a obtenccedilatildeo de ambas asexplicaccedilotildees Esse coacutedigo pode ser consultado na listagem 8 em que os predicados why ehow se referem agraves explicaccedilotildees ldquoporquecircrdquo e ldquocomordquo respectivamente

why ( L ) minus

2 f i n d a l l ( r (OX) h i s t (OX) L )

4 how ( A t t r Value R e s u l t ) minusin f_exp_how ( A t t r Value Ru le s )

6 explainHow ( Rules E x p l a n a t i o n )

append ( Rules E x p l a n a t i o n R e s u l t )

8

explainHow ( [ ] [ ] )

10 explainHow ( [H | T ] R e s u l t ) minusi n n e r E x p l a i n (H E x p l a n a t i o n H )

12 explainHow ( T E x p l a n a t i o n R u l e s )

append ( Explana t ionH E x p l a n a t i o n R u l e s R e s u l t )

14

16 i n n e r E x p l a i n ( Rule E x p l a n a t i o n ) minusr u l e ( Rule _ l h s (LHS) _ )

18 expla inLHS (LHS E x p l a n a t i o n )

20 expla inLHS ( [ ] [ ] )

expla inLHS ( [ ev ( A t t r Value ) | T ] E x p l a n a t i o n A ) minus22 n o t ( inf_exp_how ( A t t r Value _ ) )

f a c t ( A t t r Value _ )

24 expla inLHS ( T E x p l a n a t i o n A )

70

43 BASE DE CONHECIMENTO

26 expla inLHS ( [ ev ( A t t r Value ) | T ] Resu l tA ) minushow ( A t t r Value E x p l a n a t i o n A )

28 expla inLHS ( T E x p l a n a t i o n )

append ( Explana t ionA E x p l a n a t i o n Resu l tA ) Coacutedigo 8 Predicados principais do sistema de explicaccedilotildees

43 Base de conhecimento

A base de conhecimento armazena o conhecimento extraiacutedo de um ou mais peritos e con-siste numa seacuterie de factos e regras acerca de um determinado domiacutenio Sendo dependenteda aacuterea que se pretende abranger com o sistema pericial a base de conhecimento eacute deconstruccedilatildeo especiacutefica para cada situaccedilatildeo em que seja necessaacuterio desenvolver este tipo desistema

Os procedimentos de inserccedilatildeo actualizaccedilatildeo e remoccedilatildeo dos factos e regras que com-potildeem a base de conhecimento (gestatildeo da base de conhecimento) teratildeo que ser na medidado possiacutevel procedimentos simples que sejam facilmente compreendidos pelos utilizado-res

As funcionalidades de gestatildeo da base de conhecimento estatildeo disponiacuteveis na opccedilatildeoldquoBase de Conhecimentordquo da paacutegina inicial como podemos observar na figura 26

71

CAPIacuteTULO 4 WEXSYS

Figura 26 Paacutegina inicial da gestatildeo da base de conhecimento

431 Leitura da base de conhecimento

Ao iniciar a execuccedilatildeo a base de conhecimento eacute carregada para memoacuteria a partir de umficheiro Este processo eacute realizado de forma iterativa e de acordo com uma determinadasequecircncia regras questotildees conclusatildeo final e por uacuteltimo os factos iniciais

Por sua vez o carregamento das regras eacute efectuado em duas fases sendo que primeirosatildeo obtidas as regras existentes (ldquoretrieve_rules(L)rdquo) e depois para cada regra eacute construiacutedaa sua estrutura (ldquobuildRuleObjectrdquo) Podemos observar a descriccedilatildeo deste processo nafigura 27

72

43 BASE DE CONHECIMENTO

Figura 27 Processo de carregamento das regras

Quanto ao carregamento das questotildees eacute similar ao das regras jaacute que eacute efectuadoigualmente em duas fases Primeiro obtecircm-se todas as questotildees (ldquoretrieve_questions(L)rdquo)e depois para cada questatildeo eacute preenchida a sua estrutura (ldquobuildQuestionObjectrdquo)

Jaacute o carregamento da conclusatildeo final eacute realizado atraveacutes do predicado ldquotop_goal(L)rdquoEste predicado vai devolver a conclusatildeo final guardada

Por fim os factos iniciais satildeo obtidos reutilizando um processo de obtenccedilatildeo de factos(ldquoinf_sys((L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)rdquo) Este processo jaacute foireferido na secccedilatildeo que descreve o motor de inferecircncia (4242)

432 Conclusatildeo final a encontrar

A conclusatildeo final a encontrar representa o predicado que vai ser considerado comoobjectivo no decorrer do motor de inferecircncia Soacute vatildeo ser consideradas soluccedilotildees queconvergem para uma soluccedilatildeo final que contenha o predicado especificado no RHS

Para definir uma conclusatildeo final basta especificar o nome do predicado da soluccedilatildeoque pretendemos encontrar com o motor de inferecircncia

73

CAPIacuteTULO 4 WEXSYS

433 Factos iniciais

Os factos iniciais permitem adicionar conhecimento preacutevio a uma base de conhecimentoPara adicionaacute-los eacute necessaacuterio utilizar o botatildeo ldquoAdicionar facto inicialrdquo e preencher oscampos necessaacuterios Para remover um facto inicial previamente inserido eacute utilizado obotatildeo ldquoRemover facto inicialrdquo e eacute necessaacuterio confirmar a acccedilatildeo que se estaacute a efectuar deforma a evitar uma remoccedilatildeo acidental

434 Regras

As regras satildeo o ponto essencial da gestatildeo da base de conhecimento As regras satildeo osdados disponiacuteveis para a aplicaccedilatildeo e como tal quanto melhor forem definidas melhorqualidade a aplicaccedilatildeo teraacute no sentido em que os resultados seratildeo mais correctos e fiaacuteveis

4341 CriarAlterar uma regra

O processo de criaccedilatildeo de uma nova regra foi simplificado Jaacute natildeo eacute necessaacuterio conhecera sintaxe das regras e tambeacutem jaacute natildeo eacute necessaacuterio conhecer os factos a utilizar comopremissas

Para adicionar uma regra apenas temos que arrastar questotildees eou conclusotildees inter-meacutedias de forma a construir a regra que pretendemos inserir

No caso de estarmos a alterar uma regra ou no caso de termos adicionado uma questatildeoou conclusatildeo intermeacutedia incorrectamente podemos eliminar essa premissa simplesmenteseleccionando a ldquocheckboxrdquo respectiva e utilizar a opccedilatildeo ldquoRemover seleccionadosrdquo

74

43 BASE DE CONHECIMENTO

Figura 28 Introduzir uma nova regra

Apoacutes termos arrastado todas as questotildees eou conclusotildees intermeacutedias para a lista depremissas temos que indicar os respectivos valores Este processo estaacute simplificado nosentido em que apenas temos que utilizar a caixa de selecccedilatildeo agrave frente de cada controlo eseleccionar o respectivo valor

Os valores apresentados satildeo obtidos de forma diferente quer se trate de uma questatildeo oude uma conclusatildeo intermeacutedia No caso das questotildees os valores obtidos satildeo os indicadosaquando da sua inserccedilatildeo No caso das conclusotildees intermeacutedias satildeo obtidos todos os valoresutilizados nas regras ateacute ao momento Sempre que uma regra eacute inserida ou actualizadaeacute despoletado um processo que actualiza os valores das conclusotildees intermeacutedias com osnovos valores introduzidos

75

CAPIacuteTULO 4 WEXSYS

Figura 29 Apresentaccedilatildeo de valores configurados na questatildeo

4342 Questotildees

As questotildees acabam por ser o ponto de contacto da aplicaccedilatildeo com o utilizador Sempreque eacute necessaacuterio suspender o processamento para questionar o utilizador este teraacute ahipoacutetese de intervir na execuccedilatildeo Atraveacutes das questotildees colocadas vai ser possiacutevel inferiroutros factos que no final e numa situaccedilatildeo ideal conduzem a uma soluccedilatildeo possiacutevel

Uma questatildeo eacute identificada por um coacutedigo por uma descriccedilatildeo e ainda por um conjuntode valores possiacuteveis as respostas Quando inserimos uma nova regra podemos criar novasquestotildees utilizando a opccedilatildeo ldquoAdicionar uma questatildeordquo Surge entatildeo o formulaacuterio deintroduccedilatildeo de uma questatildeo como podemos ver na figura 30

Figura 30 Formulaacuterio de introduccedilatildeo de uma questatildeo

As respostas configuradas no formulaacuterio de introduccedilatildeo seratildeo as respostas que iratildeoaparecer quando inserirmos uma nova regra e arrastarmos a questatildeo para a lista depremissas

76

43 BASE DE CONHECIMENTO

4343 Verificaccedilatildeo

Apoacutes a introduccedilatildeo ou alteraccedilatildeo das regras deve ser realizado o processo de verificaccedilatildeoda base de conhecimento De uma forma quase imperceptiacutevel na fase de introduccedilatildeode regras estamos a activar este processo jaacute que eacute garantido que as regras introduzidasestatildeo coerentes e que os valores das premissas efectivamente existem Podemos dizerque estamos perante a primeira fase do processo de verificaccedilatildeo designado por verificaccedilatildeoproacute-activa

Para este trabalho foi considerado a verificaccedilatildeo de dois tipos de anomalia na base deregras redundacircncia e regras duplicadas A inclusatildeo de novos mecanismos de verificaccedilatildeoeacute possiacutevel bastando para isso a alteraccedilatildeo do predicado ldquoverification(L)rdquo

A grande diferenccedila entre os dois meacutetodos implementados eacute que uma regra redundanteadiciona conhecimento desnecessaacuterio agrave base de conhecimento enquanto que uma regraduplicada como o nome indica eacute apenas uma duplicaccedilatildeo do conhecimento

Na figura 31 podemos verificar o mecanismo de verificaccedilatildeo implementado que permiteidentificar que regra estaacute em conflito com que outra regra e qual o tipo de conflito

Figura 31 Verificaccedilatildeo da base de conhecimento

435 Gravaccedilatildeo da base de conhecimento

O processo de gravaccedilatildeo da base de conhecimento eacute similar ao processo de leitura com adiferenccedila de natildeo ser iterativo O processo de gravaccedilatildeo da base de conhecimento iniciacom a acccedilatildeo do utilizador na opccedilatildeo ldquoFinalizarrdquo que invoca o meacutetodo ldquosaveAll()rdquo doWexsysKBBean O resto do processo pode ser observado na figura 32

77

CAPIacuteTULO 4 WEXSYS

Figura 32 Processo de gravaccedilatildeo da base de conhecimento

436 Conversatildeo GISPSA

A conversatildeo da base de conhecimento do GISPSA para o formato wexsys foi efectuada emduas fases Na primeira fase foi feita uma migraccedilatildeo sintaacutectica da forma de representaccedilatildeode regras utilizada para a forma utilizada pelo wexsys Na segunda fase foi efectuadoum processo manual de conversatildeo

O sistema anterior delegava nas regras alguns predicados utilizados unicamente parao sistema de explicaccedilotildees Esta caracteriacutestica tornou a migraccedilatildeo algo morosa jaacute que eranecessaacuterio proceder agrave anaacutelise regra a regra de quais os predicados necessaacuterios e quais osdescartaacuteveis

78

44 ANAacuteLISE GRAacuteFICA

44 Anaacutelise graacutefica

Para aleacutem do motor de inferecircncia e da gestatildeo da base de conhecimento foi implemen-tado como prova de conceito um sistema graacutefico que permite observar facilmente arepresentaccedilatildeo de uma base de conhecimento sob a forma de um grafo

Este sistema permite visualizar e consultar a explosatildeo combinatoacuteria das regras edas premissas que as compotildeem Este tipo de ferramenta pode ser bastante uacutetil quandoutilizado nas tarefas de validaccedilatildeo por parte do perito Desta forma o perito consegue deuma forma visual e simples verificar o relacionamento entre as conclusotildees e as premissas

441 Implementaccedilatildeo

Esta funcionalidade foi implementada recorrendo agrave utilizaccedilatildeo de um controlo externodesignado por TGGraphLayout e desenvolvido por Alexander Shapiro (2010) O controlodisponibiliza uma applet que encapsula funcionalidades que permitem a interacccedilatildeo graacuteficacom a representaccedilatildeo de um grafo

Por se tratar de uma applet a comunicaccedilatildeo com os managed beans torna-se tecnica-mente mais difiacutecil de implementar Esse motivo levou agrave necessidade de criaccedilatildeo de umaservlet para simplificar o processo de interacccedilatildeo entre a aplicaccedilatildeo e a applet do controlovisual

A servlet WexsysServlet foi criada para dar suporte agrave comunicaccedilatildeo com o mana-

ged bean WexsysKBBean sendo este responsaacutevel pela obtenccedilatildeo dos dados no formatoreconhecido pelo controlo

O controlo teve que ser alterado de forma a permitir a interacccedilatildeo com a servlet bemcomo efectuar o tratamento dos dados no formato especificado ou seja criar uma espeacuteciede protocolo de comunicaccedilatildeo

O algoritmo 4 resume a implementaccedilatildeo efectuada ao niacutevel da applet e o algoritmo 5demonstra de que forma esses dados satildeo obtidos

442 Funcionamento

O grafo resultante eacute construiacutedo a partir de uma posiccedilatildeo inicial designada por ponto departida Eacute utilizada a designaccedilatildeo ldquordquo para simplificar a identificaccedilatildeo no grafo eeacute possiacutevel ver o resultado da paacutegina inicial na figura 33

As conclusotildees satildeo representadas por rectacircngulos com um fundo branco e as premissassatildeo identificadas por rectacircngulos com fundo azul

79

CAPIacuteTULO 4 WEXSYS

Algoritmo 4 Algoritmo responsaacutevel pelo desenho da appletinput graphPaths graphConclusionsbegin drawGraph

initializeNodes ()for path isin graphPaths do

init oldfor step isin path do

if nodes do not contain step thenbuildNode (step)

endif step is first then

oldlarr stepelse

addEdge (old step)oldlarr step

endend

endcreateStartNode ()linkUnlinkedNodesToStartNode ()

end

O ponto de partida liga-se entatildeo agraves regras que apenas contenham premissas quesejam questotildees construindo o grafo de possibilidades Apoacutes identificar as regras quesatildeo representadas com ligaccedilatildeo ao ponto de partida satildeo tratadas as restantes regrasconstruindo o resto do grafo agrave medida que as regras satildeo avaliadas

Eacute possiacutevel centrar o grafo numa premissa ou numa conclusatildeo Ao centrarmos ografo satildeo mantidos apenas os noacutes que se ligam directamente ao noacute que seleccionaacutemosNo entanto eacute possiacutevel expandir um noacute sem este tipo de comportamento bastando paraisso utilizar as funcionalidades disponiacuteveis ao pressionar a tecla direita do rato sobre o

Figura 33 Paacutegina inicial da anaacutelise graacutefica

80

44 ANAacuteLISE GRAacuteFICA

Algoritmo 5 Algoritmo para construccedilatildeo dos dados do grafooutput graphPaths and grapConclusionsbegin retrieveGraphPathAndConclusions

questionslarr gatherQuestionfor rule isin rules do

isFinalRulelarr conclusaoFinal igual RHS de ruleif isFinalRule then

add rule to grapConclusionssimpleRulelarr truegraphPathslarr nullfor premissa isin ruleLHS do

isConditionAskablelarr questions contains premissaif isConditionAskable then

add premissa and value to graphPathselse

simpleRulelarr falseretrieveGraphFromAtom (premissa)add result to graphPaths

endend

endend

end

respectivo noacute As funcionalidades disponiacuteveis satildeo expandir colapsar esconder e centrare satildeo auto-descritivas pelo que dispensam qualquer explicaccedilatildeo do seu funcionamento

Figura 34 Exemplo de grafo totalmente expandido

Eacute possiacutevel utilizar esta funcionalidade para identificarmos um cenaacuterio especiacuteficopor exemplo para consultar quais as premissas necessaacuterias para a obtenccedilatildeo de umadeterminada soluccedilatildeo

81

CAPIacuteTULO 4 WEXSYS

Figura 35 Exemplo de utilizaccedilatildeo para identificaccedilatildeo de um cenaacuterio concreto

443 Limitaccedilotildees

Esta funcionalidade no seu estado actual apresenta algumas limitaccedilotildees Conveacutem referirantes de mais que esta soluccedilatildeo natildeo eacute uma alternativa ao motor de inferecircncia mas sim umaferramenta de apoio visual auxiliar ao mesmo

Das limitaccedilotildees existentes salientam-se as seguintes

bull a utilizaccedilatildeo deste controlo obriga a que o utilizador esteja familiarizado com aspremissas e os seus valores Natildeo estatildeo disponiacuteveis os textos de apoio para aspremissas da mesma forma que satildeo mostrados no motor de inferecircncia Umapossiacutevel soluccedilatildeo passaria pela interacccedilatildeo da applet com a servlet para atraveacutes domecanismo de ajax push despoletar a actualizaccedilatildeo da JSP mostrando o texto doelemento seleccionado

bull o tamanho dos noacutes eacute grande quando comparado com o espaccedilo disponiacutevel nocontrolo o que por vezes obriga a algumas sobreposiccedilotildees dos noacutes tornado-oimperceptiacutevel Este problema pode ser observado na figura 34 Para atenuar esteproblema existem controlos que permitem modificar o factor de ampliaccedilatildeo rodar ocontrolo e controlar o grau de visualizaccedilatildeo hiperboacutelica

bull apoacutes a navegaccedilatildeo no grafo perde-se de alguma forma o contexto que o originouEste problema pode ser observado na figura 35

82

5Conclusotildees

Ateacute que ponto eacute que um software consegue efectivamente substituir um ser humanoquando estamos a falar de raciociacutenio Se esse raciociacutenio for estritamente linear seguindoum determinado percurso com alguns desvios ao longo do mesmo que acabam por ditarum desfecho diferente consoante as decisotildees que vatildeo sendo tomadas a substituiccedilatildeo podemesmo ser efectiva e ateacute mesmo melhor em alguns casos

Um perito natildeo eacute no entanto algueacutem que se limita a dizer sim ou natildeo ou algueacutem queapenas decide se eacute necessaacuterio seguir por este caminho ou aquele Um perito normalmenteobserva dados e factos e infere sobre os mesmos tendo a sensibilidade para em muitasocasiotildees conseguir ateacute mesmo obter a soluccedilatildeo final muito antes de terminar a anaacutelise detodos os paracircmetros A isso chama-se conhecimento heuriacutestico natildeo linear afectada poruma enormidade de factores que apenas eacute possiacutevel encontrar num ser humano

Estes factores podem ter tanto de beneacutefico como de nocivo Ao natildeo analisar atotalidade dos dados um perito poderaacute incorrer num erro ou mesmo tendo-os analisadoateacute ao fim poderaacute natildeo ter estado completamente atento ou compenetrado no que estavaa fazer pelo mero facto de poder estar cansado ou indisposto para executar tal tarefanaquele preciso momento

Um sistema pericial pode realmente ser uma mais valia no sentido em que estaacutetotalmente desprovido de emoccedilotildees e fadiga ao contraacuterio de um ser humano Paraaleacutem disto natildeo eacute necessaacuterio temer que o sistema pericial se desloque a uma qualquerlocalizaccedilatildeo remota e de difiacutecil acesso ou que chegue fora do horaacuterio previsto limitadopelos atrasos de uma simples viagem

Todos estes factos podem realmente ser considerados quando analisamos o funciona-mento do GISPSA Efectivamente trata-se de um sistema pericial estaacute sempre disponiacutevele totalmente desprovido de caracteriacutesticas humanas que poderiam eventualmente toldaro raciociacutenio do mesmo No entanto este sistema carecia de algo muito importante a

83

CAPIacuteTULO 5 CONCLUSOtildeES

acessibilidade a partir de qualquer local em qualquer hora e por parte de vaacuterios utilizado-res em simultacircneo de modo imediato e sem preacute-aviso Antes de mais o GISPSA eacute umaaplicaccedilatildeo de execuccedilatildeo local e natildeo foi de todo desenvolvida para funcionamento em redeComo tal o acesso agrave mesma estava agrave partida bastante limitado Depois cada instalaccedilatildeoapenas permitia a interacccedilatildeo com um utilizador de cada vez Existem ainda algumaslimitaccedilotildees identificadas no GISPSA que foram ultrapassadas com o desenvolvimento dowexsys tais como manutenccedilatildeo da base de conhecimento capacidade de raciocinar sobreconhecimento incerto e a implementaccedilatildeo de meacutetodos de verificaccedilatildeo

Hoje em dia eacute possiacutevel aceder a uma rede global (a internet) a partir de qualquer pontodo planeta e isto torna igualmente possiacutevel disponibilizar uma aplicaccedilatildeo de forma a quequalquer pessoa a consiga utilizar a qualquer hora e a partir de qualquer local O wexsysaplica essa transformaccedilatildeo ao GISPSA e leva-o ao proacuteximo patamar evolutivo

Como qualquer evoluccedilatildeo tambeacutem esta pretende natildeo soacute dotar a nova versatildeo comfuncionalidades que a anterior natildeo possuiacutea como tambeacutem pretende melhorar e corrigiros problemas que eventualmente foram encontrados Ao longo do tempo de utilizaccedilatildeodo GISPSA verificaram-se algumas coisas que podiam e deviam ser substituiacutedas Aleacutemdisto a proacutepria evoluccedilatildeo dos sistemas graacuteficos e de interacccedilatildeo colocaram o GISPSAcomo uma aplicaccedilatildeo de visual jaacute algo ultrapassado aspecto que tambeacutem carecia de umarevisatildeo para a realidade mais actual

A opccedilatildeo pela incorporaccedilatildeo do wexsys num portal teve a ver com as grandes capacida-des que este tipo de infra-estuturas tem hoje em dia Impulsionados por empresas comoa IBM os portais web representam janelas de negoacutecio com ligaccedilatildeo ao mundo e com aspotencialidades que daiacute advecircm Caracteriacutesticas como a facilidade de acesso sistemas debackup manutenccedilatildeo de tempos de uptime elevados rapidez de funcionamento facilidadede funcionamento e leitura entre muitas outras representam uma mais valia para estetipo de alojamento de aplicaccedilotildees

51 Contributos da soluccedilatildeo desenvolvida

O grande objectivo a que este trabalho se propunha foi alcanccedilado e consistia na criaccedilatildeode um sistema pericial baseado no GISPSA mas que pudesse ser acedido a partir deuma rede tornando-o global Os restantes objectivos foram igualmente alcanccedilados e oresultado final mostra-se soacutelido e fiaacutevel para candidato efectivo agrave substituiccedilatildeo do sistemaque lhe daacute a base No entanto existem outros pontos positivos na soluccedilatildeo encontradaquando comparada com outros sistemas periciais jaacute referidos nos capiacutetulos anteriores

84

51 CONTRIBUTOS DA SOLUCcedilAtildeO DESENVOLVIDA

Esses sistemas satildeo o LOMA o MDSS e o Whale watcherAo proceder a uma comparaccedilatildeo com estes sistemas a soluccedilatildeo desenvolvida neste

trabalho apresenta algumas vantagens Desde logo estamos a falar de aplicaccedilotildees web

com periacuteodos de desenvolvimento diferentes o que implica a utilizaccedilatildeo de tecnologiasdiferentes A vantagem da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo mais recentes dinacircmi-cas eficazes e visualmente mais apelativas coloca o wexsys num patamar efectivamentesuperior Para aleacutem disso o wexsys pode (como resultado da utilizaccedilatildeo dessas mesmastecnologias) ser facilmente integrado noutras aplicaccedilotildees como webservices ou portaisenquanto que os outros sistemas natildeo

Outra das particularidades dos sistemas estudados eacute que natildeo possuem (de acordocom as respectivas documentaccedilotildees) mecanismos de verificaccedilatildeo de regras e sempre queeacute necessaacuterio proceder a alteraccedilotildees a essas mesmas regras o utilizador teraacute que ter umconhecimento profundo acerca da sintaxe utilizada (gramaacutetica riacutegida) Para aleacutem distotambeacutem natildeo possuem (com excepccedilatildeo do MDSS) suporte a vaacuterias liacutenguas

Jaacute quanto agrave questatildeo da capacidade de funcionamento multi-utilizador apesar deestarmos a falar de aplicaccedilotildees web os sistemas estudados neste documento natildeo estatildeopreparados para cargas de processamento demasiado elevadas porque natildeo foi contempladaa possibilidade de um funcionamento distribuiacutedo o que permitiria aliviar a carga deprocessos e aumentar o nuacutemero maacuteximo de utilizadores

Para descrever mais em detalhe os objectivos alcanccedilados com a soluccedilatildeo propostapassamos a enunciaacute-los

bull Criaccedilatildeo de uma aplicaccedilatildeo web - Ao criar a nova aplicaccedilatildeo a questatildeo da distribuiccedilatildeodessa mesma aplicaccedilatildeo atraveacutes de uma rede era fulcral jaacute que permitiria uma seacuteriede factores que ateacute aqui natildeo estavam disponiacuteveis A possibilidade de utilizaccedilatildeo deuma base de conhecimento global onde todos os utilizadores pudessem contribuirpara o seu melhoramento facilidade de acesso a partir de qualquer localizaccedilatildeodisponibilidade a qualquer hora e dia capacidade de realizaccedilatildeo de backups paragarantir a continuidade dos dados e muacuteltiplos acessos simultacircneos foram questotildeesque ficaram resolvidas com a concretizaccedilatildeo deste objectivo

bull Verificaccedilatildeo das regras - Uma das lacunas do sistema base o GISPSA era a faltade capacidade para realizar a verificaccedilatildeo das regras que era colocadas na basede conhecimento Era possiacutevel chegar a cenaacuterios de inconsistecircncia atraveacutes dacontradiccedilatildeo de regras podendo chegar a cenaacuterios em que simplesmente natildeo erapossiacutevel prosseguir com a inferecircncia das regras nem tatildeo pouco chegar a umaconclusatildeo ou soluccedilatildeo possiacutevel

85

CAPIacuteTULO 5 CONCLUSOtildeES

Ao adicionar um mecanismo de verificaccedilatildeo de regras como o foi neste caso assisti-mos natildeo soacute ao cumprimento de mais um objectivo mas tambeacutem a uma evoluccedilatildeosignificativa do novo sistema pericial que com esta caracteriacutestica se torna maisfiaacutevel e eficaz

bull Manutenccedilatildeo da base de conhecimento - Neste novo sistema eacute mais simples procederagrave actualizaccedilatildeo da base de conhecimento quer para adicionar alterar ou removerfactos na mesma Jaacute natildeo eacute necessaacuterio ter formaccedilatildeo sobre a sintaxe necessaacuteria pararealizar estas operaccedilotildees deixando de lado a rigidez que era necessaacuteria aplicarno sistema base Isto permite alargar o leque de utilizaccedilatildeo do sistema a outrosutilizadores que na versatildeo anterior natildeo teriam oportunidade para o fazer

bull Melhor usabilidade - Uma das grandes transformaccedilotildees para quem conhecia osistema anterior e encontra a nova versatildeo passa pelo aspecto visual Quando umutilizador eacute confrontado com uma aplicaccedilatildeo aquilo com que se depara eacute a parte deinteracccedilatildeo responsaacutevel por mediar o diaacutelogo entre o utilizador e a aplicaccedilatildeo per si

Quando uma aplicaccedilatildeo qualquer que ela seja possui um visual pouco atraente eapelativo para o utilizador com bototildees e janelas pouco interessantes componentesmal colocados atalhos escondidos e de difiacutecil percepccedilatildeo ou ateacute mesmo comcores pouco agradaacuteveis o utilizador acaba por seja de forma gradual ou imediataabandonar a aplicaccedilatildeo e mostra pouco interesse em voltar a utilizaacute-la a natildeo ser queseja efectivamente obrigado a fazecirc-lo

Neste trabalho atraveacutes da utilizaccedilatildeo de teacutecnicas de programaccedilatildeo web tais comoJavascript e Ajax e ainda atraveacutes da utilizaccedilatildeo do Icefaces foi possiacutevel chegar aum visual considerado por muitos utilizadores como interessante e actual o que vaiplenamente de encontro ao objectivo proposto para este ponto

bull Multi-utilizador - Uma das grandes criacuteticas do sistema base tinha efectivamente aver com o facto de natildeo ser possiacutevel colocar mais do que um utilizador a trabalharao mesmo tempo Para tal ser possiacutevel seria necessaacuterio proceder agrave instalaccedilatildeo dosistema noutro computador e consequentemente adquirir outra licenccedila comercialde utilizaccedilatildeo

Ao adicionar a capacidade de vaacuterios utilizadores poderem estar a trabalhar nosistema em simultacircneo este objectivo verifica-se como estando cumprido na to-talidade pois natildeo apenas isso jaacute eacute possiacutevel neste novo sistema pericial como acapacidade de processamento natildeo eacute afectada jaacute que eacute possiacutevel proceder agrave colocaccedilatildeo

86

52 LIMITACcedilOtildeES E TRABALHO FUTURO

da aplicaccedilatildeo num sistema de clustering em caso de deacutefices ou carga excessiva deprocessamento

bull Sistema de explicaccedilotildees - A soluccedilatildeo proposta conteacutem um sistema de explicaccedilotildees quepode ser utilizado para obter explicaccedilotildees a perguntas do tipo ldquocomordquo e ldquoporquecircrdquoEste ponto natildeo representa uma melhoria mas sim a manutenccedilatildeo de uma funcionali-dade que o GISPSA jaacute disponibilizava

bull Anaacutelise graacutefica - Este moacutedulo eacute uma nova abordagem agrave anaacutelise de uma base deconhecimento que natildeo eacute normalmente utilizado nos sistemas periciais conhecidos eque possibilita uma anaacutelise visual facilitadora do comportamento e funcionamentoda nova soluccedilatildeo

bull Suporte a vaacuterias liacutenguas - A soluccedilatildeo proposta permite de uma forma bastantesimples a implementaccedilatildeo de novas linguagens A parte da soluccedilatildeo que envolveo sistema pericial e a parte da aplicaccedilatildeo web estatildeo preparados para esta tipo desuporte contudo a base de conhecimento natildeo contempla este mecanismo e teriaque ser implementado

bull Arquitectura - O tipo de arquitectura da soluccedilatildeo proposta permite uma simplesintegraccedilatildeo com outros tipos de aplicaccedilatildeo web como por exemplo webservices ouportais Possibilita ainda como jaacute referido a separaccedilatildeo da aplicaccedilatildeo de uma formamodular permitindo uma distribuiccedilatildeo ao niacutevel do processamento

bull Migraccedilatildeo - No processo de migraccedilatildeo da base de conhecimento foram detectados ecorrigidos alguns problemas Regras inconsistentes regras repetidas e regras quenatildeo trazem novo conhecimento foram adaptadas e resolvidas evoluindo a novabase de conhecimento para uma entidade mais fiaacutevel e consistente

52 Limitaccedilotildees e trabalho futuro

Este trabalho representa um esforccedilo no sentido de apresentar uma versatildeo melhorada dosistema GISPSA e apesar de o conseguir em muitos aspectos e essencialmente em todosaqueles que foram inicialmente propostos ficam alguns aspectos que ainda poderatildeo serimplementados futuramente e que certamente contribuiratildeo para um sistema ainda melhor

Assim apresentam-se as limitaccedilotildees identificadas e as perspectivas de trabalho futuro

87

CAPIacuteTULO 5 CONCLUSOtildeES

bull Validaccedilatildeo de regras - Apesar de ser jaacute possiacutevel neste novo sistema pericial procederagrave verificaccedilatildeo de regras como mecanismo de prevenccedilatildeo de redundacircncias e contradi-ccedilotildees ainda natildeo eacute possiacutevel a validaccedilatildeo por parte de um perito dessas mesmas regrasa natildeo ser que essa validaccedilatildeo seja feita em modo ad hoc

Seria importante a criaccedilatildeo de um modo lsquosupervisorrsquo ou modo lsquoperitorsquo paraque a aplicaccedilatildeo pudesse adoptar uma postura natildeo soacute de linguagem adaptada aum utilizador com maior formaccedilatildeo na aacuterea (como seraacute o caso de perito) mastambeacutem pudesse assumir uma postura de simulaccedilatildeo em que seriam apresentadosnatildeo soacute os passos tomados como eventuais cenaacuterios em caso de respostas diferentesIsto permitiria a um perito confrontar o seu proacuteprio conhecimento com o sistemapericial realizando desta forma uma validaccedilatildeo do funcionamento do sistema e dabase de conhecimento

Para aleacutem disto sendo uma aplicaccedilatildeo web o modo lsquosupervisorrsquo ou modo lsquope-ritorsquo poderia ser acedido a partir de qualquer siacutetio e a qualquer hora Se o responsaacute-vel pela validaccedilatildeo da base de conhecimento (normalmente o perito que contribuiucom o conhecimento) natildeo estiver disponiacutevel para o fazer por motivos de ausecircnciaou incompatibilidade de horaacuterios poderaacute sempre realizar o acesso agrave aplicaccedilatildeoa partir de um outro local agrave hora que mais lhe aprouver sem qualquer tipo deprejuiacutezo quer para o perito quer para o proacuteprio sistema

bull Muacuteltiplas conclusotildees - Com o trabalho desenvolvido apenas eacute possiacutevel atraveacutesdo disparo de uma regra final chegar a uma uacutenica conclusatildeo Deveria ser possiacutevelchegar a muacuteltiplas conclusotildees pelo que natildeo tendo sido implementado nesta versatildeoconsidera-se como uma possibilidade de trabalho futuro

Aparentemente sem qualquer relaccedilatildeo a necessidade evidenciada no ponto anteriorde criar um modo lsquosupervisorrsquo ou modo lsquoperitorsquo poderaacute levar um futurodesenvolvimento no sentido de criar as muacuteltiplas conclusotildees aqui referidas jaacute queao permitir este modo de funcionamento tambeacutem deveraacute ser possiacutevel inferir sobrevaacuterios cenaacuterios possiacuteveis e respectivas conclusotildees

bull Negaccedilatildeo de premissas - Nesta versatildeo do trabalho apenas eacute possiacutevel criar regrassem negaccedilatildeo Por exemplo num cenaacuterio em que uma pergunta ao utilizador tem aforma

Qual a cor (Vermelho Azul Verde)

e as regras que satildeo candidatas a disparo forem

88

52 LIMITACcedilOtildeES E TRABALHO FUTURO

R1 - SE cor Vermelho R2 - SE cor Azul R3 SE cor Verde

entatildeo natildeo eacute possiacutevel caso seja necessaacuterio ter uma regra do tipo

Rx - SE cor NOT XXXXX

Isso apenas seria possiacutevel se a pergunta inicial fosse

Qual NAtildeO Eacute a cor (Vermelho Azul Verde)

para assim permitir regras do tipo

Rx - SE NAtildeO Eacute cor XXXXX

Assim sendo aponta-se como uma limitaccedilatildeo e eventual trabalho futuro a desenvol-ver para outras versotildees da aplicaccedilatildeo a criaccedilatildeo de um sistema que permita a negaccedilatildeode premissas para que o exemplo atraacutes indicado seja de possiacutevel implementaccedilatildeo

bull Contemplar factos iniciais nas regras - A versatildeo actual do sistema natildeo permite ainclusatildeo de factos inicias nas premissas das regras

bull Pesquisa de muacuteltiplas soluccedilotildees finais - Actualmente soacute eacute permitido executar omotor de inferecircncia com uma soluccedilatildeo final como objectivo Seria uma evidentemais valia a inclusatildeo da capacidade de pesquisa por muacuteltiplas soluccedilotildees

bull Metaconhecimento - ao ser adicionado metaconhecimento podemos aumentar odesempenho do motor de inferecircncia nos cenaacuterios em que temos bases de conheci-mento consideravelmente grandes

bull Regra mais relevante para iniciar o motor de inferecircncia - desenvolver um algoritmopara obter uma regra que tenha uma maior probabilidade de sucesso de forma aminimizar iteraccedilotildees desnecessaacuterias

bull Validaccedilatildeo automaacutetica - quando as questotildees satildeo apagadas deve ser realizada arespectiva verificaccedilatildeo de utilizaccedilatildeo dessas questotildees como condiccedilotildees de regras paraprevenir possiacuteveis inconsistecircncias

bull Suporte a vaacuterias liacutenguas - a base de conhecimento natildeo foi projectada para imple-mentar esta funcionalidade

89

Bibliografia

Acquired Intelligence (2010) Acquire httpwwwaiincca Junho de 201025

Alexander Shapiro (2010) Tggraphlayout httpsourceforgenet

projectstouchgraph Julho de 2010 49 79

Barnett J A (1991) Calculating dempster-shafer plausibility IEEE Transactions on

Pattern Analysis and Machine Intelligence 13 599ndash602 16

Boris van Schooten (2005) Yprolog httpwwwvfutwentenl

~schootenyprolog Junho de 2010 37

Carlos Figueira Filho (2010) JEOPS - Integraccedilatildeo entre Objetos e Regras de Produccedilatildeoem Java httpwwwcinufpebr~jeops Julho de 2010 36

CoAJRA J (1997) The basics of expert (knowledge based) systems 18

Dokas I M (2005) Developing web sites for web based expert systems A webengineering approach In In Proceedings of the Second International ICSC Symposium

on Information Technologies in Environmental Engineering (Magdeburg pages 202ndash217 Shaker Verlag 26

Drakopoulos J (1994) Probabilities possibilities and fuzzy sets Fuzzy Sets and

Systems 75 1ndash15 16

Elie Levy (2010) Zilonis httpwwwzilonisorgindexphp Junho de2010 37

Ernest Friedman-Hill (2010) Jess httpwwwjessrulescom Julho de 201025 36

EXSYS (2010) Exsys corvid httpwwwexsyscom Junho de 2010 24

Filho A R (2010) Mdss medical diagnosis support system LPA - Logic ProgrammingAssociates Ltd 30

Giarratano C J Riley and D G (1998) Expert Systems - Principles and Programming

Thirds Edition Principles and Programing Course Technology 3ed edition 6 18

91

BIBLIOGRAFIA

Hammurapi Group (2010) Hammurapi rules httpwwwhammurapicom

dokuwikidokuphp Junho de 2010 36

Heckerman D (1992) The certainty-factor model 16

IBM (2010) Jlog httpwww-01ibmcomsoftwarewebsphere

productsbusiness-rule-management Junho de 2010 36

Kozlenkov Alex and Paschke (2010) Prova rule language httpprovaws

indexhtml Junho de 2010 37

Logic Programming Associaties Ltd (2010) Lpa webflex httpwwwlpacouk Abril de 2010 24

Lucas P (2001) Certainty-factor-like structures in bayesian belief networks Knowledge-

Based Systems 14 327ndash335 16

Maarten Menken (2010) Jclips httpsourceforgenetprojects

jclips Julho de 2010 25 36

Mcarniel (2010) Jruleengine httpjruleenginesourceforgenet

indexhtml Junho de 2010 37

Merritt D (1989) Building expert systems in Prolog 6 56

Michael Giordano (2010) Webclips httpclipsinterfacesourceforgenetWebCLIPSwchomehtm 28 de Julho de 2003 24

OpenL (2010) Openl tablets httpopenl-tabletssourceforgenetJulho de 2010 37

OpenRules Inc (2010) Open rules engine httpopenrulescomindex

htm Julho de 2010 37

Pinto A (1998) GISPSA - GIS problem solver adviser 1 20

RedHat (2010) Drools httpwwwjbossorgdroolsdrools-experthtml Junho de 2010 36

Shortliffe E H and Buchanan B G (1990) A model of inexact reasoning in medicinepages 259ndash275 16

Wilson N (2000) Algorithms for dempster-shafer theory In Algorithms for Uncertainty

and Defeasible Reasoning pages 421ndash475 Kluwer Academic Publishers 16

92

Anexos

93

ACoacutedigo do motor de inferecircncia

Iniacutecio do motor de inferencia

init_inference- retractall(hist2) consult(rsquokbsyplrsquo)

top_goals(ControlObj MinCF) - top_goal(TopGoal) top(TopGoal ControlObj MinCF)

top(TopGoal ControlObj MinCF) - retractall(hist2) set(len 0)

getRuleMoreRelevant(TopGoal Rule) tryToProove(Rule ControlObj MinCF)

tryToProove(Rule ControlObj MinCF)- rule(Rule _ lhs(LHS) _)

proveListHyp(LHS ControlObj MinCF)get(len LEN)println(LEN)

LEN1 is LEN + 1assert(hist(LEN1Rule))println(LEN1)

set(len LEN1)

(

check if rule has return control object

(var(ControlObj)) -gt(

no control object found check if other rules needs to be fired

fireRules(ControlObj MinCF)

)(

control object found

true

)

)

proveListHyp([] ControlObj MinCF)

proveListHyp([H|T] ControlObj MinCF)-proveHyp(H ControlObj MinCF)

((var(ControlObj)) -gt (proveListHyp(T ControlObj MinCF))(true))

fact already known

proveHyp(H ControlObj MinCF)- H = ev(X Y) fact(X Y_ )

there is a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _)

not(fact(X _ _))question(X _ _ _)

not(not_question(X))ControlObj = ask(X)

95

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

there is a conclusion that can lead to a question that can lead to a fact

proveHyp(H ControlObj MinCF)- H = ev(X _) rule(Rule _ lhs(LHS)

rhs(ev(X_) V))

tryToProove(Rule ControlObj MinCF)

ADD A FACT

av(Attr Value Confidence ControlObj MinCF) - retractall(hist2)set(len 0)

saveFact(Attr Value Confidence 1 CF_FINAL _)

fireRules(ControlObj MinCF)

nav(Attr)-assert(not_question(Attr))

fireRules(ControlObj MinCF)- rule(X _ lhs(LHS) rhs(ev(Y R) Conf))

not(inf_rules_fired(X_)) evaluate(LHS ConfLhs 1)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF)

get(len LEN) LEN1 is LEN + 1 assert(hist(LEN1Rule))

set(len LEN1)

(

(var(ControlObj)) -gt(

(top_goal(Y)) -gt (

ControlObj = answerFound(Y R ConfRet)

)(

true fireRules(ControlObj MinCF)

))(

true

)

)

saveFinalValue(X ConfLhs Y R Conf ConfRet MinCF) -

calculateConfidence(ConfLhs Conf ConfRet)

ConfRet gt MinCF

saveFact(Y R ConfRet 2 CF_FINAL X)

assert(inf_rules_fired(X ConfRet))

evaluate([] [] 1)- true

evaluate([H|T] [FactConf|LConf] RetCode)-

H = ev(X Ans)fact(X Ans FactConf)

evaluate(T LConf RetCode)

calculateConfidence(ConfLhs RuleCF ResultCF)-min_in_list(ConfLhs MinLHSCF)

ResultCF is MinLHSCF RuleCF 100

min_in_list([Min]Min)

min_in_list([HK|T]M) - H lt= K min_in_list([H|T]M)

min_in_list([HK|T]M) - H gt K min_in_list([K|T]M)

1 - fornecido 2 - inferido

we have a fact saved with the same conclusion already

96

saveFact(Attr Value Confidence Mode CF_Final Rule)-

fact(Attr Value OldConfidence)

combine(OldConfidence Confidence CF_Final)

retract(fact(Attr Value OldConfidence))

retract(inf_sys_fact(Attr Value OldConfidence _))

assert(fact(Attr Value CF_Final))

assert(inf_sys_fact(Attr Value CF_Final Mode))

linkFactToRule(Rule Attr Value Mode)

we donrsquot have any fact saved

saveFact(Attr Value Confidence Mode Confidence Rule)-

assert(fact(Attr Value Confidence))

assert(inf_sys_fact(Attr Value Confidence Mode))

linkFactToRule(Rule Attr Value Mode)

linkFactToRule(___1)

linkFactToRule(RuleAttrValue2)-

inf_exp_how(Attr Value oldRules)

retract(inf_exp_how(Attr Value oldRules))

assert(inf_exp_how(Attr Value [Rule|oldRules]))

linkFactToRule(RuleAttrValue2)-

assert(inf_exp_how(Attr Value [Rule]))

println(rsquosaved line with information on explanation howrsquo) listing

combine(CF1 CF2 CF) - CF1 gt= 0 CF2 gt= 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CF is CF1 + Calc

combine(CF1 CF2 CF) - CF1 lt 0 CF2 lt 0 MidPoint is 100 - CF1

Calc is CF2 MidPoint 100 CFAux is CF1 + Calc CF is 0-CFAux

combine(CF1 CF2 CF) - (CF1 lt 0 CF2 lt 0) (CF1 gt 0 CF2 gt 0)

SumCFs is CF1 + CF2 abs_minimum(CF1 CF2 MCF)

Rest is 100 - MCFCF is 100 SumCFs Rest

abs_minimum(ABX) - absolute(A AA) absolute(B BB)minimum(AABBX)

absolute(X X) -X gt= 0

absolute(X Y) -X lt 0Y is 0-X

minimum(XYX) -X lt= Y

minimum(XYY) -Y lt= X

Rule verification

verification(L)-retractall(validation_fired1)

retractall(verification_error4)set(nextid 0)

findall(IDverification_rule_1(ID _ _ _)L)

verification_rule_1(ID RuleInError RuleRelated Result)-

rule(A _ lhs(CA) RA)rule(B _ lhs(CB) RB)

not( B = A)not(validation_fired(B))

checkConditionsSimilar(CA CB FullMatch)

checkResultSimilar(FullMatch RA RB Result)

assert(validation_fired(B))

97

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

get(nextid CURR_ID)ID is CURR_ID + 1

set(nextid ID)

assert(verification_error(ID B A Result))

RuleInError = B RuleRelated = A

checkConditionsSimilar(CA CB FullMatch)-checkConditionsSimilar_1(CACB)

lent(CA X) lent(CB Y) testCheck(X Y FullMatch)

testCheck(X X 1)

testCheck(X Y 0)- not(X = Y)

checkConditionsSimilar_1([] L)

checkConditionsSimilar_1([H|R] L)- member(H L) checkConditionsSimilar_1(R L)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueB) CFB) 2)-

not(ValueA = ValueB)

checkResultSimilar(1 rhs(ev(Atom ValueA) CFA) rhs(ev(Atom ValueA) CFB) 2)

checkResultSimilar(0 rhs(ev(Atom Value) CFA) rhs(ev(Atom Value) CFB) 1)-

CFB lt= CFA

lent([] 0)

lent([_|R] SizeT)- lent(R Size)SizeT is Size + 1

Rule verification

retrieve_rules(L)-

findall(X rule(X _ __) L)

retrieve_questions(L)-

findall(X question(X ___) L)

Information predicates

inf_sys(L_Rules L_Inf_Facts L_Know_Facts L_Init_Facts)-

i_sys_rules(L_Rules)i_sys_inf_fact(L_Inf_Facts)

i_sys_know_fact(L_Know_Facts) i_sys_init_fact(L_Init_Facts)

i_sys_rules(L)-

findall(r(Rule Conf) inf_rules_fired(Rule Conf) L) member(C L)

i_sys_rules([])

i_sys_inf_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 2) L) member(C L)

i_sys_inf_fact([])

i_sys_know_fact(L)-

findall(f(Attr Value Conf) inf_sys_fact(Attr Value Conf 1) L) member(C L)

i_sys_know_fact([])

98

i_sys_init_fact(L)-

findall(f(Attr Value Conf) condition_init(Attr Value Conf) L) member(C L)

i_sys_init_fact([])

condition_init(Attr Value Conf)-fact(Attr Value Conf)

not(inf_sys_fact(Attr _ _ _))

explanations

why(L)-findall(r(OX) hist(OX) L)

how(Attr Value Result)- inf_exp_how(Attr Value Rules)

explainHow(Rules Explanation)append(Rules Explanation Result)

explainHow([] [])

explainHow([H|T] Result)- innerExplain(H ExplanationH)

explainHow(T ExplanationRules) append(ExplanationH ExplanationRules Result)

innerExplain(Rule Explanation)- rule(Rule _ lhs(LHS) _)

explainLHS(LHS Explanation)

explainLHS([] [])

explainLHS([ev(Attr Value)|T] ExplanationA)-

not(inf_exp_how(Attr Value _))

fact(Attr Value _) print(rsquoinitial factrsquo)

explainLHS(T ExplanationA)

explainLHS([ev(Attr Value)|T] ResultA)-

how(Attr Value ExplanationA)

explainLHS(T Explanation)

append(ExplanationA Explanation ResultA)

append([] L L)

append(L [] L)

append([H|T] M [H|N])-append(L M N)

Map methods

buildValidationReport(Id RErr RRel ErrType)-

verification_error(Id RErr RRel ErrType)

buildQuestionObject(ask(X) X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

buildQuestionObject_by_code(X X Question LOut Multi)-

question(X Question L Multi) flatten(L LOut)

99

ANEXO A COacuteDIGO DO MOTOR DE INFEREcircNCIA

buildSolutionObject(answerFound(Y R Found) Y R Found)

buildRuleObject(Rule Descr LHS RHS CF)-

rule(Rule Descr lhs(I_LHS) rhs(I_RHS CF))

lhs_flatten(I_LHS LHS)

rhs_flatten(I_RHS RHS)

flatten(L LO)- iflatten(L LO)

iflatten([] [])

iflatten([H|R] [AD|L])- H = answer(A D) iflatten(R L)

lhs_flatten(L LO)- ilhs_iflatten(L LO)

ilhs_iflatten([] [])

ilhs_iflatten([H|R] [[ADCB]|L])-H = ev(A D)question(A C LL _)

findMember(LLDB)ilhs_iflatten(R L)

ilhs_iflatten([H|R] [[ADAD]|L])-H = ev(A D)not(question(A _ _ _))

ilhs_iflatten(R L)

rhs_flatten(ev(AB) [AB])

findMember([] D D)-

findMember([H|T] D B)-H = answer(D B)

findMember([H|T] D B)-findMember(T D B)

attempt to Get more relevant rule

getRuleMoreRelevant(TopGoal Rule)-

rule(Rule_ _ rhs(ev(P V) X)) top_goal(P)

find the rules that contains a direct solution

findall(X rule(X lhs(LLHS) rhs(ev(TopGoal _)_)) LX)

debugLine(trc1rsquogtrsquo)debugList(LX)

For the main rules apply the algorithm

fillMainRules(LX LOUT)

bubble_sort(LOUT LREALLYOUT)

LREALLYOUT = [ score_table(Rule _ _ _) | _ ]

debugLine(trc1rsquogtrsquo)debugList(LREALLYOUT)

fillMainRules([] [])-

fillMainRules([HIN|RIN] [HOUT|LOUT])- calculateCurrentRule(HIN HOUT)

fillMainRules(RIN LOUT)

calculateCurrentRule(HIN HOUT)-rule(HIN _ lhs(LHS) rhs(_ Confidence))

calculateScoreBasedOnLHS(LHS 0 Score)

OrderIndice is Score Confidence

HOUT = score_table(HIN Score Confidence OrderIndice)

calculateScoreBasedOnLHS([] ScoreResult ScoreResult)-

100

calculateScoreBasedOnLHS([HLHS|RLHS] Score ScoreResult)-

calculateScoreBasedOnLHSCurrent(HLHS Score ScoreAfter)

calculateScoreBasedOnLHS(RLHS ScoreAfter ScoreResult)

calculateScoreBasedOnLHSCurrent(ev(X _) Score ScoreAfter)-

question(X _ _ _) not(fact(X _ _))

ScoreAfter is Score + 1

calculateScoreBasedOnLHSCurrent(ev(X _) Score Score)-

helper methods

bubble_sort(ListSorted)-b_sort(List[]Sorted)

b_sort([]AccAcc)

b_sort([H|T]AccSorted)-bubble(HTNTMax)b_sort(NT[Max|Acc]Sorted)

bubble(X[][]X)

bubble(X[Y|T][Y|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C lt= D bubble(XTNTMax)

bubble(X[Y|T][X|NT]Max)- X = score_table(_ _ _ C)

Y = score_table(_ _ _ D) C gt Dbubble(YTNTMax)

bubble_sort2(ListSorted)-b_sort2(List[]Sorted)

b_sort2([]AccAcc)

b_sort2([H|T]AccSorted)-bubble2(HTNTMax)b_sort2(NT[Max|Acc]Sorted)

bubble2(X[][]X)

bubble2(X[Y|T][Y|NT]Max)- X = r(D _) Y = r(C _) C lt= D bubble(XTNTMax)

bubble2(X[Y|T][X|NT]Max)- X = r(D _) Y = r(C _) C gt Dbubble(YTNTMax)

Allows to get a Bag of all the X that makes Goal evaluate to true

Bag can contain duplicated X

findall(XGoalBag) - post_it(XGoal) gather([]Bag)

Aux

post_it(XGoal) - call(Goal) asserta(data999(X)) fail

post_it(__)

gather(BBag) - data999(X) retract(data999(X)) gather([X|B]Bag)

gather(SS)

member(X[X|_])-

member(X[_|Y]) - member(XY)

101

BBase de conhecimento do protoacutetipo

question(turn_over rsquoO carro ligarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(lights_weak rsquoAs luzes estatildeo fracasrsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(radio_weak rsquoO raacutedio estaacute fracorsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(smell_gas rsquoCheira a gasolinarsquo

[ answer(yes rsquoSimrsquo) answer(no rsquoNatildeorsquo)]0)

question(gas_gauge rsquoO que marca o ponteiro do depoacutesito da gasolinarsquo

[ answer(empty rsquoVaziorsquo) answer(high rsquoSuficientersquo) answer(low rsquoReservarsquo)]0)

rule(rule_1 rsquoRule 1rsquolhs([ev(turn_over no) ev(battery_bad yes)])

rhs(ev(problem battery) 100))

rule(rule_2 rsquoRule 2rsquolhs([ev(lights_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_3 rsquoRule 3rsquolhs([ev(radio_weak yes)])

rhs(ev(battery_bad yes) 50))

rule(rule_4 rsquoRule 4rsquolhs([ev(smell_gas yes) ev(turn_over yes)])

rhs(ev(problem flooded) 80))

rule(rule_5 rsquoRule 5rsquolhs([ev(turn_over yes) ev(gas_gauge empty)])

rhs(ev(problem out_of_gas) 90))

rule(rule_6 rsquoRule 6rsquolhs([ev(turn_over yes) ev(gas_gauge low)])

rhs(ev(problem out_of_gas) 30))

rule(rule_7 rsquoRule 7rsquolhs([ev(gas_gauge low)ev(turn_over yes)])

rhs(ev(problem out_of_gas) 30))

103

ANEXO B BASE DE CONHECIMENTO DO PROTOacuteTIPO

rule(rule_8 rsquoRule 8rsquo

lhs([ev(turn_over yes) ev(gas_gauge low) ev(smell_gas no)])

rhs(ev(problem out_of_gas) 30))

top_goal(problem)

104

CBase de conhecimento GISPSA

question(qs_tema_ger rsquoQual o tipo de Problemarsquo

[ answer(c_ger_map rsquoMapas Configuraacuteveisrsquo) answer(c_ger_inq rsquoInqueacuteritos e Listagensrsquo)

answer(c_ger_mov rsquoCGMOVIGrsquo) answer(c_ger_pla rsquoCGDCGERrsquo)

answer(c_ger_acm rsquoCGVACUMCGTACUMrsquo)]0)

question(qs_plareg rsquoA Conta tem regra de construcccedilatildeo associada rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipr rsquoExiste Conta Pai do Tipo R no Planorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaent rsquoConta aberta por entidadesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_platipa rsquoConta do Tipo Arsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plalim rsquoEntidade encontra-se nos limitesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plaexis rsquoEntidade Existentersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_plamix rsquoContas Valor entre Contas Movimentorsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acumul rsquoQual o problema de acumuladosrsquo

[ answer(c_acm_avm rsquoCGVACUM ltgt CGMOVIGrsquo)

answer(c_acm_si rsquoSaldos Iniciaisrsquo)

answer(c_acm_cna rsquoContas Nao Acumulamrsquo)

answer(c_acm_avat rsquoCGVACUM ltgt CGTACUMrsquo)]0)

question(qs_incmov rsquoInconsistecircncias no CGMOVIGrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

105

ANEXO C BASE DE CONHECIMENTO GISPSA

question(qs_incpla rsquoInconsistecircncias no CGDCGERrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_acmsia rsquoSaldos Iniciais Alteradosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movi rsquoQual o problema dos movimentosrsquo

[ answer(c_mov_lan rsquoLanccedilamentos nao balanceadosrsquo)

answer(c_mov_con rsquoProblema de Contasrsquo)

answer(c_mov_cgca rsquoMovimentos CG ltgt CArsquo)]0)

question(qs_movvdif rsquoValores CG gt CArsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlgca rsquoCC Ligados a Analiticarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movlg100 rsquoTodas as Ligacoes a 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movm100 rsquoDiferencas Correspondem a CC com Mais de 100rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcna rsquoLancamento em Contas nao Existentesrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movci rsquoLancamento em Contas Invalidasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_movcdf rsquoContas correctasrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_inquer rsquoInqueacuterito ou listagemrsquo

[ answer(c_inq_bal rsquoBalancetersquo) answer(c_inq_dia rsquoExtractoDiariorsquo)]0)

question(qs_inqsal rsquoProblema de saldosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapa rsquoProblema dos mapasrsquo

[ answer(c_map_imp rsquoErro na Impressaorsquo) answer(c_map_cal rsquoErro no Calculorsquo)

answer(c_map_mic rsquoErro na Transferencia P Microrsquo)]0)

question(qs_mapcol0 rsquoA ultima linha calculada tem a coluna 0 configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapfunc

rsquoA ultima linha calculada apresenta colunas com funcoes invalidas ou sintaxe erradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin0 rsquoA Linha 000 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_maplin9 rsquoA Linha 999 esta configuradarsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

106

question(qs_map2alg rsquoTodos os Valores da Linha 999 tem 2 Algarismosrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_map198 rsquoA Soma dos Valores da Linha 999 Ultrapassa 198rsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapsys rsquoO Sistema Permite a Utilizacao de Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapuser rsquoO Utilizador Tem Acesso a Foldersrsquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

question(qs_mapflr rsquoO Folder Existersquo

[ answer(c_nao rsquoNatildeorsquo) answer(c_sim rsquoSimrsquo)]0)

rule(r_pla_1 r_pla_1lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plareg c_sim)])

rhs(ev(dominio d_pla_reg) 100)

)

rule(r_pla_2 r_pla_2lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plaent c_sim)])

rhs(ev(dominio d_pla_ent) 100)

)

rule(r_pla_3 r_pla_3lhs([ev(qs_tema_ger c_ger_pla) ev(qs_plamix c_sim)])

rhs(ev(correccao cr_pla_mix) 100)

)

rule(r_pla_11 r_pla_11lhs([ev(dominio d_pla_reg) ev(qs_platipr c_nao)])

rhs(ev(correccao cr_pla_tipr) 100)

)

rule(r_pla_21 r_pla_21lhs([ev(dominio d_pla_ent) ev(qs_platipa c_nao)])

rhs(ev(correccao cr_pla_tipa) 100)

)

rule(r_pla_22 r_pla_22lhs([ev(dominio d_pla_ent) ev(qs_plalim c_nao)])

rhs(ev(correccao cr_pla_lim) 100)

)

rule(r_pla_23 r_pla_23lhs([ev(dominio d_pla_ent) ev(qs_plaexis c_nao)])

rhs(ev(correccao cr_pla_exis) 100)

)

rule(r_acm_1 r_acm_1

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_2 r_acm_2

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avm) ev(qs_incmov c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_3 r_acm_3

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_4 r_acm_4

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_avat) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_at) 100)

)

rule(r_acm_5 r_acm_5

107

ANEXO C BASE DE CONHECIMENTO GISPSA

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_sim)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_6 r_acm_6

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_cna) ev(qs_incpla c_nao)])

rhs(ev(correccao cr_acm_avat) 100)

)

rule(r_acm_7 r_acm_7

lhs([ev(qs_tema_ger c_ger_acm) ev(qs_acumul c_acm_si) ev(qs_acmsia c_nao)])

rhs(ev(correccao cr_acm_si) 100)

)

rule(r_mov_1 r_mov_1lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_lan)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_2 r_mov_2lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_cgca)])

rhs(ev(dominio d_mov_cgca) 100)

)

rule(r_mov_21 r_mov_21lhs([ev(dominio d_mov_cgca) ev(qs_movvdif c_sim)])

rhs(ev(subdominio d_mov_cgca_1) 100)

)

rule(r_mov_22 r_mov_22lhs([ev(dominio d_mov_cgca) ev(qs_movm100 c_sim)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_23 r_mov_23lhs([ev(dominio d_mov_cgca)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_3 r_mov_3lhs([ev(qs_tema_ger c_ger_mov) ev(qs_movi c_mov_con)])

rhs(ev(dominio d_mov_con) 100)

)

rule(r_mov_31 r_mov_31lhs([ev(dominio d_mov_con) ev(qs_movcna c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_32 r_mov_32lhs([ev(dominio d_mov_con) ev(qs_movci c_nao)])

rhs(ev(correccao cr_mov_inc_soft) 100)

)

rule(r_mov_33 r_mov_33lhs([ev(dominio d_mov_con) ev(qs_movcdf c_nao)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_34 r_mov_34lhs([ev(dominio d_mov_con)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_211 r_mov_211lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlgca c_nao)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_mov_212 r_mov_212lhs([ev(subdominio d_mov_cgca_1) ev(qs_movlg100 c_sim)])

rhs(ev(correccao cr_mov_inc) 100)

)

rule(r_mov_213 r_mov_213lhs([ev(subdominio d_mov_cgca_1)])

rhs(ev(correccao cr_mov_inc_cgca) 100)

)

rule(r_inq_1 r_inq_1lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inquer c_inq_bal)])

rhs(ev(correccao cr_inq_bal) 100)

)

rule(r_inq_2 r_inq_2lhs([ev(qs_tema_ger c_ger_inq) ev(qs_inqsal c_sim)])

108

rhs(ev(correccao cr_inq_dia) 100)

)

rule(r_map_1 r_map_1lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_cal)])

rhs(ev(dominio d_map_cal) 100)

)

rule(r_map_2 r_map_2lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_imp)])

rhs(ev(dominio d_map_imp) 100)

)

rule(r_map_3 r_map_3lhs([ev(qs_tema_ger c_ger_map) ev(qs_mapa c_map_mic)])

rhs(ev(dominio d_map_mic) 100)

)

rule(r_map_11 r_map_11lhs([ev(dominio d_map_cal) ev(qs_mapcol0 c_sim)])

rhs(ev(correccao cr_map_cal_col0) 100)

)

rule(r_map_12 r_map_12lhs([ev(dominio d_map_cal) ev(qs_mapfunc c_sim)])

rhs(ev(correccao cr_map_cal_func) 100)

)

rule(r_map_13 r_map_13lhs([ev(dominio d_map_cal)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_21 r_map_21lhs([ev(dominio d_map_imp) ev(qs_maplin0 c_nao)])

rhs(ev(correccao cr_map_imp_lin0) 100)

)

rule(r_map_22 r_map_22lhs([ev(dominio d_map_imp) ev(qs_maplin9 c_nao)])

rhs(ev(correccao cr_map_imp_lin9) 100)

)

rule(r_map_23 r_map_23lhs([ev(dominio d_map_imp) ev(qs_map2alg c_nao)])

rhs(ev(correccao cr_map_imp_2alg) 100)

)

rule(r_map_24 r_map_24lhs([ev(dominio d_map_imp) ev(qs_map198 c_nao)])

rhs(ev(correccao cr_map_imp_198) 100)

)

rule(r_map_25 r_map_25lhs([ev(dominio d_map_imp)])

rhs(ev(correccao cr_map_soft) 100)

)

rule(r_map_31 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapsys c_nao)])

rhs(ev(correccao cr_map_sys) 100)

)

rule(r_map_32 r_map_31lhs([ev(dominio d_map_mic) ev(qs_mapuser c_nao)])

rhs(ev(correccao cr_map_user) 100)

)

rule(r_map_33 r_map_33lhs([ev(dominio d_map_mic) ev(qs_mapflr c_nao)])

rhs(ev(correccao cr_map_mic_flr) 100)

)

rule(r_map_34 r_map_34lhs([ev(dominio d_map_mic)])

rhs(ev(correccao cr_map_soft) 100)

)

top_goal(correccao)

109

  • Lista de Figuras
  • Lista de Tabelas
  • Lista de Coacutedigo
  • Lista de Algoritmos
  • Lista de Acroacutenimos
  • Introduccedilatildeo
    • Enquadramento
    • Objectivos
    • Planeamento
    • Estruturaccedilatildeo da dissertaccedilatildeo
      • Estado da arte
        • Sistemas periciais
          • Arquitectura
          • Base de conhecimento
            • Regras
            • Frames
            • Redes semacircnticas
            • Mecanismos de inferecircncia
            • Manutenccedilatildeo de uma base de conhecimento
              • Raciociacutenio sobre incerteza
                • Factores de certeza
                  • Vantagens e desvantagens
                    • GISPSA - GIS Problem Solver Advisor
                      • Arquitectura
                      • Funcionamento
                      • Limitaccedilotildees
                        • Web Expert Systems
                          • Casos de estudo
                            • LOMA - Landfill Operation Management Advisor
                            • MDSS - Medical Diagnosis Support System
                            • Whale watcher
                              • Ferramentas utilizadas
                                • Ambiente de desenvolvimento
                                • Motor de inferecircncia
                                  • Fase I - Recolha de candidatos
                                  • Fase II - Requisitos base
                                  • Fase III - Viabilidade econoacutemica
                                  • Fase IV - Viabilidade teacutecnica
                                  • Fase V - Prova de conceito
                                  • Conclusatildeo e fundamentaccedilatildeo da escolha
                                      • Wexsys
                                        • Arquitectura global
                                          • Moacutedulo pWexsysEAR
                                          • Moacutedulo WexsysEAR
                                          • Interligaccedilatildeo e integraccedilatildeo dos moacutedulos
                                            • Camada de acesso puacuteblico
                                            • Camada de acesso protegido
                                            • Camada de acesso privado
                                            • Fluxo de invocaccedilatildeo
                                              • Portal
                                                • Templates
                                                  • Suporte multi-liacutengua
                                                    • Motor de inferecircncia
                                                      • Multi-utilizador
                                                      • Base de conhecimento inicial
                                                      • Protoacutetipo do motor de inferecircncia
                                                        • Formato das regras
                                                        • Formato das questotildees
                                                        • Interacccedilatildeo assiacutencrona de questotildees e respostas
                                                        • Estrutura da base de conhecimento
                                                        • Algoritmos a utilizar
                                                          • Resultado final
                                                            • Arranque da execuccedilatildeo
                                                            • Mecanismo de respostas
                                                            • Conclusatildeo final encontrada
                                                            • Explicaccedilotildees
                                                                • Base de conhecimento
                                                                  • Leitura da base de conhecimento
                                                                  • Conclusatildeo final a encontrar
                                                                  • Factos iniciais
                                                                  • Regras
                                                                    • CriarAlterar uma regra
                                                                    • Questotildees
                                                                    • Verificaccedilatildeo
                                                                      • Gravaccedilatildeo da base de conhecimento
                                                                      • Conversatildeo GISPSA
                                                                        • Anaacutelise graacutefica
                                                                          • Implementaccedilatildeo
                                                                          • Funcionamento
                                                                          • Limitaccedilotildees
                                                                              • Conclusotildees
                                                                                • Contributos da soluccedilatildeo desenvolvida
                                                                                • Limitaccedilotildees e trabalho futuro
                                                                                  • Bibliografia
                                                                                  • Anexos
                                                                                  • Coacutedigo do motor de inferecircncia
                                                                                  • Base de conhecimento do protoacutetipo
                                                                                  • Base de conhecimento GISPSA
Page 12: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 13: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 14: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 15: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 16: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 17: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 18: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 19: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 20: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 21: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 22: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 23: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 24: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 25: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 26: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 27: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 28: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 29: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 30: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 31: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 32: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 33: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 34: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 35: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 36: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 37: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 38: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 39: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 40: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 41: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 42: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 43: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 44: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 45: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 46: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 47: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 48: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 49: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 50: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 51: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 52: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 53: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 54: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 55: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 56: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 57: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 58: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 59: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 60: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 61: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 62: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 63: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 64: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 65: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 66: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 67: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 68: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 69: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 70: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 71: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 72: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 73: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 74: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 75: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 76: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 77: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 78: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 79: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 80: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 81: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 82: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 83: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 84: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 85: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 86: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 87: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 88: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 89: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 90: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 91: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 92: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 93: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 94: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 95: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 96: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 97: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 98: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 99: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 100: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 101: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 102: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 103: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 104: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 105: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 106: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 107: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 108: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 109: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 110: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 111: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 112: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 113: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 114: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 115: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 116: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System
Page 117: António Jorge de Almeida Vaz - COnnecting REpositoriesBRMS Business Rule Management System CF Certainty Factors ou Factores de Certeza CLIPS C Language Integrated Production System