O sistema especialista foi implementado com sucesso e testado com os seguintes fatos:
febre alta
tosse
dificuldade para respirar
O que esse código faz:
Define uma estrutura para armazenar fatos e regras.
Aplica lógica proposicional para inferir novos fatos com base nas regras.
Testa o sistema com sintomas reais e verifica se os diagnósticos corretos são inferidos.
Classe que representa a base de conhecimento do sistema
class BaseDeConhecimento:
def init(self):
# Armazena os fatos conhecidos (ex: sintomas relatados)
self.fatos = set()
# Armazena as regras como pares (condições, conclusão)
self.regras = []
# Adiciona um novo fato à base
def adicionar_fato(self, fato):
self.fatos.add(fato)
# Adiciona uma nova regra à base
def adicionar_regra(self, condicoes, conclusao):
# condicoes: lista de fatos necessários
# conclusao: fato que será inferido se as condições forem verdadeiras
self.regras.append((set(condicoes), conclusao))
Classe que representa o sistema especialista
class SistemaEspecialista:
def init(self, base_conhecimento):
# Recebe a base de conhecimento com fatos e regras
self.base = base_conhecimento
# Armazena os diagnósticos inferidos
self.diagnosticos = set()
# Método principal de inferência lógica
def inferir(self):
alterado = True
# Continua aplicando regras enquanto novos fatos forem inferidos
while alterado:
alterado = False
for condicoes, conclusao in self.base.regras:
# Verifica se todas as condições da regra estão nos fatos
if condicoes.issubset(self.base.fatos) and conclusao not in self.base.fatos:
# Adiciona a conclusão como novo fato
self.base.fatos.add(conclusao)
self.diagnosticos.add(conclusao)
alterado = True # Continua o processo de inferência
# Retorna os diagnósticos inferidos
def obter_diagnosticos(self):
return self.diagnosticos
--------------------------
Teste do sistema especialista
--------------------------
Cria a base de conhecimento
base = BaseDeConhecimento()
Adiciona fatos fornecidos pelo paciente
base.adicionar_fato("febre alta")
base.adicionar_fato("tosse")
base.adicionar_fato("dificuldade para respirar")
Adiciona regras de diagnóstico
base.adicionar_regra(["febre alta", "tosse"], "infecção respiratória")
base.adicionar_regra(["infecção respiratória", "dificuldade para respirar"], "pneumonia")
Cria o sistema especialista com a base de conhecimento
sistema = SistemaEspecialista(base)
Executa o mecanismo de inferência
sistema.inferir()
Exibe os diagnósticos inferidos
diagnosticos = sistema.obter_diagnosticos()
print("Diagnósticos inferidos:", diagnosticos)
Diagnósticos inferidos:
infecção respiratória (com base em febre alta e tosse)
pneumonia (com base em infecção respiratória e dificuldade para respirar)