And и or
Вероятность, возвращаемая AND-функцией, принимается самой низкой среди вводимых вероятностей; вероятность OR-функции является наибольшей среди вводимых. Задаваемые параметры для этих функций имеют схожее представление:
AND rulename1
rulename2
rulename3
или
OR rulename1
rulename2
rulename3
NOT
Эта функция имеет единственный параметр:
NOT rulename
Если rulenameсвязано с вероятностью P, NOT-функция возвращает значение вероятности, равное 1–P, ассоциированной с правилом rulename.
YESNO
Пользователь может давать прямые ответы в форме “да”,“нет”или“не знаю”,выбирая из меню. Эта возможность достигается использованием YESNO-функции. Ответы транслируются в значения определенности как следующие:
Yes 5
Don’t know 0
No – 5
Пример правила, содержащего функцию YESNO:
data drive_yourself
display "Do you want to drive yourself?"
yesno
CERTAINTY
В некоторых случаях пользователь может ввести прямое значение определенности, которое затем конвертируется в вероятность. Значения определенности могут изменяться от –5 (определенно не верно) через 0 (не знаю) до +5 (определенно верно).
Пример:
data eats_meat
display "Does it eat meat?"
certainty
Если правило eats_meat оценивается во время выполнения программы, сообщение
Does it eat meat?
появится на экране и пользователь должен будет ввести значение определенности с клавиатуры.
VALUE
Пользователю также позволяется ввести численные значения, и они будут преобразовываться через подходящее соответствие в значения определенности. Такие значения допускаются использованием функцииVALUE, имеющей форму:
VALUE loverlimit upperlimit ,
в которой loverlimit и upperlimit определяют диапазон допустимых числовых значений. Также возможно представить пользователю перечислимый диапазон в виде меню; в этом случае VALUE имеет форму:
VALUE option1 option2 option3 …
Например:
data sun
display "How much sun was there today?"
help "Enter hours of sunshine today"
value 0 24
При оценке этого правила появится сообщение:
How much sun was there today?
Если введенное значение выходит за пределы диапазона (0, 24), будет предложено еще раз ввести значение.
Пример перечислимого диапазона:
data select_frut
display "Which frut do you like most?"
value apple orange banana
тогда во время работы программы появится меню:
apple
orange
banana
don’t know
Из этого меню пользователю предлагается выбрать подходящий параметр.
MAP
Когда выбор делается из меню, как в вышеприведенном примере, такое data-правило может быть связано с промежуточным правилом (типа intermediate), использующим одну из форм MAP-функции. Например:
intermediate healthy_transport_to_work
display "Means of transport is healthy"
PRIOR 0.4
map transport_mode ( walk 0.9 ) ( bike 0.7 ) ( car 0.3 )
data transport_mode
display "Which means of transport will you use?"
value walk bike car
Во время выполнения появится сообщение:
Which means of transport will you use?
и пользователь может выбрать walk,bike,carилиdon’t knowиз результирующего меню. Если выбран параметр bike,то правило healthy_transport_to_workбудет ассоциировано с вероятностью 0.7. Если выбрано don’t know, то это правило получит вероятность 0.4, так как имеет значение параметра PRIOR, равное 0.4.
Численные значения, введенные посредством VALUE, могут быть переведены в вероятность с помощью другой формы MAP-функции:
MAP rulename ( v1 p1 ) ( v2 p2 ) … ( vn pn ).
Здесь rulenameявляется именем data-правила, которое выдает числовое значение. Каждое viявляется этим значением и каждое piсвязано с ассоциированным с этим значением вероятностью. Если n> = 2, система вычисляет вероятность, соответствующую промежуточному значению vi.При этом должно выполняться условие
v1 < v2 < … < vn.
Пример:
intermediate rail_speed
display "Desired journey speed permits rail use"
map speed ( 60 1 ) ( 150 0 )
Здесь значению скорости, равному 60, соответствует вероятность 1 и скорости, равной 150, – вероятность 0. На промежутке от 60 до 150 значение вероятности убывает линейно.