很久以前,我开发了使用Egeria作为专家系统语言的系统。它有一个非常有用的功能,其中变量有三个值,min,max和current。以这种方式,可以计算部分已知值的概率,结果最终作为范围。我不记得语法,但它是这样的: -
A.Min = 1;
A.Max = 5;
A.Current= 4;
B.Min = 2;
B.Max = 4;
B.Current= 4;
A * B = {2, 20, 16}
我的问题是,这个方法叫做什么,并且当前的语言是否实现了它?
答案 0 :(得分:3)
听起来,作为一种“方法”,它可能是fuzzy logic的一种。特别是当你描述它被概率使用时。
答案 1 :(得分:3)
您描述的多值变量可用于基于约束的编程。最近的一篇论文见Radul和Sussman,"The Art of the Propagator"。
先生。 Radul上周在ILC 2009上发表演讲。他举了一个(人们可能会考虑的)多值变量的例子,这些变量代表了对“真理”的概率近似。 (我提前为任何虚假陈述道歉,我没有笔记。)
考虑一个必须协调来自两个热传感器的读数的系统。进一步假设每个传感器的读数都有一定程度的不确定性:传感器A表示温度在A1和A2之间,传感器B表示温度在B1和B2之间。系统是否应该尝试计算温度?也许“真相”可以用读数重叠的范围表示。
答案 2 :(得分:1)
关于Yacc的原始论文的附录C(发表于UNIX程序员手册第7版的第2卷;该论文的日期为1978-07-31)描述了一个“执行浮点间隔算术的桌面计算器”。它使用符号'(min,max)'的间隔并实现基于范围的算法。你所描述的是对“当前”值的扩展。
答案 3 :(得分:0)
大多数面向对象的语言都可以使用类来轻松地完成此任务。
特别是在C ++中,很容易制作一个模板化的类,例如为任何基本类型处理这个。
但我不知道任何支持此语言的语言是核心语言的一部分。