Pergunta

Um longo tempo atrás eu desenvolvi sistemas usando Egeria uma linguagem de sistema especialista. Ele tinha uma característica muito útil onde variáveis ??tinha três valores, um min, max e atuais. Desta forma, a probabilidade de um valor parcialmente conhecido poderia determinado e os resultados acabar como um intervalo. Não me lembro a sintaxe, mas era algo assim: -

A.Min = 1;
A.Max = 5;
A.Current= 4;
B.Min = 2;
B.Max = 4;
B.Current= 4;


A * B = {2, 20, 16}

A minha pergunta é, o que é esta abordagem chamada, e não quaisquer linguagens atuais implementá-lo?

Foi útil?

Solução

variáveis ??

Multi-valorizado como os que você descreve pode ser usado em programação baseada em restrições. Para um artigo recente ver Radul e Sussman, "The Art of o " Propagator.

Mr. Radul apresentado na ILC 2009 na semana passada. Ele deu um exemplo de (o que se pode considerar) variáveis ??avaliadas-multi que representam uma aproximação probabilística a "verdade". (Peço desculpas antecipadamente por qualquer deturpação, eu não tenho notas.)

Considere um sistema que deve reconciliar leituras de dois sensores térmicos. Suponha-se ainda que as leituras de cada sensores vêm com um certo grau de incerteza: Um sensor de temperatura é o diz entre A1 e A2, sensor de B diz temperatura é entre B1 e B2. Se o sistema falhar na tentativa de calcular a temperatura? Talvez a "verdade" pode ser expressa em termos de gama, onde as leituras se sobrepõem.

Outras dicas

Parece que, como um "approach", pode ser uma espécie de difusa . Especialmente quando você descrevê-lo sendo usado probabilisticamente.

Anexo C do documento original no Yacc (publicado no Volume 2 do UNIX programador manual para a versão 7, o documento é datado de 1978/07/31) descreveu uma 'uma calculadora de mesa que não ponto flutuante intervalo aritmética'. Usou-se intervalos com a notação '(min, max)' e aritmética baseada no intervalo implementado. O que você descreve é ??uma extensão do que com o valor 'atual' também.

A maioria das linguagens orientadas a objeto poderia fazer isso facilmente usando classes.

Em C ++, em particular, seria muito fácil fazer uma classe de modelo que lidou com isso para você para qualquer tipo de base, por exemplo.

Eu não sei de quaisquer linguagens que aceitam isso como parte da linguagem núcleo, no entanto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top