Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Еремеев А.П., Чибизова Н.В. Методическое пособие по курсу «Экспертные системы».doc
Скачиваний:
117
Добавлен:
02.05.2014
Размер:
1.32 Mб
Скачать
      1. Использование математических выражений

В этом примере рассмотрим отгрузку принтеров моделей 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) можно узнать, почему истинна условная часть. При необходимости, можно проследить весь ход вычислений, вплоть до исходных данных.