Использование математических выражений



В этом примере рассмотрим отгрузку принтеров моделей A, B и C, купленных пользователем. Программа будет решать, каким способом отправлять их и вычислять стоимость отгрузки.

Введем название предметной области – «Способы отгрузки принтеров и их стоимость». Данная система не требует использования коэффициентов, поэтому выберем первую шкалу вероятности. При выборе подходящих правил будем просматривать все правила. Выберем режим, при котором применяемые правила не будут отображаться. В данном примере не будем использовать внешние программы.

В рассматриваемом примере используются два способа доставки принтеров – на самолете и на автомобиле. Введем два варианта выбора: Ship by air и Ship by track. Включим режим проверки новых правил.

Вначале введем правило, выражающее выбор метода транспортировки. Если масса груза больше 1000 кг, то транспортировать автомобилем, если масса груза меньше или равна 1000 кг – то самолетом. Естественно, для реальной компании будут более сложные правила с большим числом факторов, но в нашем примере это единственный критерий выбора.

В IF-части правила необходимо определить, масса груза больше 1000 кг, или нет. Для этого введем математическую формулу нажатием клавиши <M>. Применим простую формулу [WEIGHT] > 1000. В качестве описания переменной зададим The weight of the shipment. Затем нужно определить, должно ли отображаться значение этой переменной в конце работы программы. Так как значение этой переменной будет вычислено в процессе работы программы, то мы хотим узнать его. Переменная будет числовой. При запуске программы эта переменная должна быть инициализирована нулем. Так как пользователь не будет задавать значение этой переменной, нет необходимости указывать диапазон возможных значений для нее.

Правило будет выглядеть следующим образом:

RULE NUMBER: 1

IF: (1) [WEIGHT] > 1000

THEN: (1) Ship by truck – Probability = 1

ELSE: (1) Ship by air – Probability = 1

REFERENCE: The Shipping Manual – page 58

Далее введем правила, высчитывающие вес груза. Для этого потребуется информация о том, сколько принтеров и какого типа нужно переправить. Определим квалификатор The type of printer(s) to be shipped is со значениями Model A, Model B и Model C. Допустим, что принтер А весит 10 кг, тогда величина [WEIGHT] должна увеличиваться на (10 * число принтеров модели А). Запишем эту информацию в THEN-части правила: [WEIGHT] + ([NUMBER OF MODEL A] * 10).

Так как определили новую переменную [NUMBER OF MODEL A], то нужно сообщить системе информацию о ней. Поскольку пользователь должен задавать значение этой переменной, то ее значение не будет отображаться по завершении работы программы. Это будет численная переменная. Требуется, чтобы пользователь задавал ее значение, поэтому не нужно инициализировать ее. Укажем нижнюю границу допустимого диапазона ее значений – 0. 

Запишем правило:

RULE NUMBER: 2

IF: (1) The type of printer(s) to be shipped is Model A

THEN:

 (1) [WEIGHT] IS GIVEN THE VALUE [WEIGHT] + ([NUMBER OF MODEL A] * 10)

Аналогично запишем правила для принтеров моделей В и С. По­ложим, что модель В весит 20 кг, а модель С – 45 кг. В результате получим:

RULE NUMBER: 2

IF: (1) The type of printer(s) to be shipped is Model B

THEN:

 (1) [WEIGHT] IS GIVEN THE VALUE [WEIGHT] + ([NUMBER OF MODEL B] * 20)

RULE NUMBER: 3

IF: (1) The type of printer(s) to be shipped is Model С

THEN:

 (1) [WEIGHT] IS GIVEN THE VALUE [WEIGHT] + ([NUMBER OF MODEL B] * 45)

Кроме массы груза хотим также определить и его стоимость. Допустим, что стоимость транспортировки самолетом составляет 225 руб. за 1 кг, автомобилем – 110 руб. Можно использовать правило, определяющее метод транспортировки, для вычисления соответствующей стоимости. Исправим правило 1 следующим образом:

RULE NUMBER: 1

IF:  (1) [WEIGHT] > 1000

THEN: (1) Ship by truck – Probability = 1

and   (2) [COST] IS GIVEN THE VALUE [WEIGHT] * 110

ELSE: (1) Ship by air – Probability = 1

and   (2) [COST] IS GIVEN THE VALUE [WEIGHT] * 225

REFERENCE: The Shipping Manual – page 58

Определили новую переменную [COST] – стоимость транспортировки. Она должна отображаться по завершении работы программы и должна быть численной. Так как ее значение вычисляется в процессе работы, то не нужно запрашивать его у пользователя, инициализировать или задавать диапазон возможных значений.

Теперь правило 1 определяет метод транспортировки и ее стоимость. Программа автоматически вызовет правила 2, 3 и 4 для вычисления значения переменной [WEIGHT].

Приступим к тестированию созданной БЗ, нажав клавишу <R>. Система предложит выбрать модель принтера. Допустим, что хотим транспортировать модели A и C, для этого введем значения 1, 3. Укажем количество отгружаемых принтеров: модели А – 6, модели С – 2. После этого увидим результат работы:

Values based on 0/1 system VALUE
1. Ship by truck 1
2. The weight of the shipment in pounds 1500.0
3. The cost of shipping 165.0

Так как вес груза превышает 1000 кг, для перевозки будет использован автомобиль. Можно потребовать от системы объяснить полученный результат. Нажав клавишу <3>, соответствующую третьей строке, увидим правило, по которому была вычислена стоимость:

RULE NUMBER: 1

IF:  (1) [WEIGHT] > 1000

THEN: (1) Ship by truck – Probability = 1

and   (2) [COST] IS GIVEN THE VALUE [WEIGHT] * 110

ELSE: (1) Ship by air – Probability = 1

and   (2) [COST] IS GIVEN THE VALUE [WEIGHT] * 225

У этого правила ярким цветом будут выделены IF и THEN-части, использованные в данном случае. Далее (если введем номер строки с условием 1) можно узнать, почему истинна условная часть. При необходимости, можно проследить весь ход вычислений, вплоть до исходных данных.

Редактирование правил

Покажем, как редактировать уже созданные правила. Будем использовать правила из предыдущих примеров. Для этого запустим программу editxs.exe, в качестве файла БЗ укажем файл, который был создан в первом примере.

Система будет задавать вопросы относительно характеристик БЗ. Отметим, что вопросы будут заданы только для тех характеристик, которые мо­гут быть изменены. По умолчанию принимаются ранее установленные значения. Вначале будет предложено изменить режим поиска применимых правил. Оставим его без изменения, т.е. будут просматриваться все правила. Далее следует вопрос об изменении режима отображения применяемых правил. Также оставим этот режим без изменения. Не будем изменять и режим проверки новых правил. На этом заканчиваются вопросы, связанные с изменением характеристик БЗ, и приступим к редактированию правил.

Вызовем первое правило, нажав клавишу <Е> и указав номер правила – 1. На экране появится созданное ранее правило, в нижней части экрана будет находиться меню команд редактирования его частей (рис. 2.2).

Вначале изменим THEN-часть правила. Для этого нажмем клавишу <T>. Программа отобразит три заключения из THEN-части правила. При этом изменятся команды меню (рис.2.3).

Можно удалить, добавить, изменить заключения или изменить их порядок. Добавим заключение нажатием клавиши <A>: High printing speed is unnecessary. При вводе этого заключения использовали квалификатор. Удалим третье заключение, нажав клавишу <D>, а затем указав номер три. Изменим уже новое заключение три. При изменении существующее заключение будет удалено, но автоматически будет вызван квалификатор, и нужно указать его новое значение. Новым значением будет necessary. Порядок заключений в THEN и ELSE-части менее важен, чем порядок условий в IF-

 

части правила. Тем не менее, изменим порядок следования заключений.

 

Рис.2.2. Меню команд редактирования правил

Рис. 2.3. Пример меню

В итоге получим:

1 High printing speed is necessary

2 Model A – Probability = 0/10

3 Model B – Probability = 0/10

Завершим редактирование нажатием клавиши <ENTER>. Появится меню, изображенное на рис. 2.3. Можно выбрать желаемое правило с помощью клавиш <¯>, <­>. Удалим первое правило. При удалении правила система выдаст запрос на подтверждение.

Имеется возможность перестроить порядок правил, при этом можно перенумеровывать целые блоки правил. Для изменения порядка правил необходимо нажать клавишу <M>. Далее нужно указать старые и новые номера правил.

На этом закончим редактирование правил, нажав клавишу <S> для сохранения произведенных изменений и выхода из программы.


Дата добавления: 2018-05-12; просмотров: 253; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!