Os Sistemas Especialistas são um ramo da Inteligência Artificial. Esses sistemas tentam capturar o conhecimento dos Especialistas por meio de um conjunto de regras. A maioria das regras é declarada em linguagem natural. Mas eles precisam ser interpretados pelo mecanismo de regras, portanto, são declarações na forma do clássico if-then-else.
IF
THEN
ELSE
Este sistema especialista específico conterá substâncias e pacientes. Cada regra dá um conselho de acordo com os atributos do paciente, que são armazenados no banco de dados.
Por exemplo:
IF (PatientWeight < 50 AND PatientSex = Male AND DaysInTreatment = 0)
THEN SUBSTANCE_X = 10
IF (PatientWeight < 50 AND PatientSex = Male AND DaysInTreatment > 0)
THEN SUBSTANCE_X = 20 + DaysInTreatment *5
Eu nunca projetei tal sistema. Você pode me dar algumas dicas iniciais para ler? Ou algum conselho?
Na universidade, fiz cursos com os quais trabalhamos e, em seguida, construímos nossos próprios sistemas especialistas (muito simples) em Prolog . Não consigo pensar em uma implementação de RDBMS que seja fácil ou elegante. A maioria deles provavelmente acabaria como um esquema EAV (o que funcionaria - já vi e usei esses sistemas, mas não são bonitos). Um dos primeiros resultados no google para "prolog expert system" é este: http://www.amzi.com/ExpertSystemsInProlog/ Parece longo, mas pode ser um bom recurso.
Depois de ler a resposta de FrustratedWithFormsDesigner, decidi usar a abordagem de script executável.
Um Sistema Especialista consiste nas seguintes partes:
Decidi usar o mecanismo powershell como mecanismo de inferência. Portanto, todas as regras na base de conhecimento são scripts powershell. O mecanismo de inferência fornece os detalhes do paciente para o script e obtém a saída.
Minha GUI mostra scripts. Permita que os usuários testem e atualizem scripts.
Na minha opinião, é apenas uma abordagem razoável para uma abordagem baseada em regras arbitrárias. Eu escolhi isso porque é mais provável que os usuários queiram alterar as regras.
A parte a seguir não está relacionada a problemas de design de banco de dados, portanto, não está completamente relacionada a esta questão.
Decidi usar o powershell pelos seguintes motivos:
Se a linguagem de programação do projeto fosse java, eu teria escolhido groovy.