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 значение вероятности убывает линейно.

Наши рекомендации