1
resposta

[Projeto] sistema especialista, utilizando uma linguagem de programação

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)

1 resposta

Oi, Lourival! Como vai?

Seu projeto ficou bem estruturado e mostra que você compreendeu como aplicar regras de inferência num sistema especialista. Gostei da forma como você encadeou os fatos para chegar ao diagnóstico final, parabéns!

Continue praticando com outros cenários e regras, pois isso vai reforçar o entendimento da inferência lógica.

Dica: experimente adicionar regras conflitantes ou fatos ambíguos para observar como o sistema se comporta. Isso ajuda a testar a robustez do motor de inferência.

Continue se dedicando aos estudos e qualquer dúvida, compartilhe no fórum.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!