|  |  |  | 
22.1.1. 
  Программа CHEF
  
 Для демонстрации 
  возможностей экспертной системы, базирующейся на прецедентах, рассмотрим систему 
  CHEF, которая предназначалась для формирования кулинарных рецептов [Hammond, 
  1986]. Эта программа принимает информацию о целевых характеристиках блюда 
  (тип, вкусовые качества, своеобразие) и формирует подходящий рецепт. Например, 
  программа может получить следующий "заказ":
  
 блюдо из 
  баранины (beef);
  
 включает 
  брокколи (broccoli);
  
 использует 
  поджаривание (stir-fry);
  
 блюдо должно 
  получиться хрустящим (crisp).
  
 Заказ оформляется 
  в виде выражения на специальном формальном языке:
  
 dish(beef), 
  include(broccoli), method(stir-frv), texture(crisp)
  
 Результатом 
  работы программы должен быть рецепт— последовательность операций, позволяющая 
  приготовить такое блюдо.
  
 Получив заказ, 
  программа просматривает свою базу прецедентов, отыскивает в ней рецепт приготовления 
  аналогичного блюда и адаптирует его в соответствии с особенностями текущего 
  заказа (проблемы). Например, если в базе уже имеется рецепт для баранины с зеленым 
  горошком, его можно скопировать и вместо горошка вставить брокколи. Этим, правда, 
  адаптация не исчерпывается, поскольку горошек варится, а не жарится, как указано 
  в заказе. Раз блюдо будет жариться, значит, брокколи придется сначала измельчить 
  (если бы нужно было варить, то качанчики брокколи можно было бросать в воду 
  целиком), следовательно, первоначальный план придется дополнить еще одной операцией. 
  Кроме того, если кусочки баранины и броколли жарить вместе, то броколли, вероятно, 
  пропитается соком. Значит, в системе нужно иметь правило, которое определит 
  этот факт и изменит первоначальный простой план, — предложит сначала обжарить 
  брокколи, а затем вынуть их.
  
 На рис. 22.1 
  представлена упрощенная схема той части программы CHEF, которая имеет отношение 
  к манипуляциям с базой прецедентов.
  
 
 
  
Рис. 22.1. 
  Архитектура программы CHEF
  
 Модель извлечения 
  отыскивает в базе прецедентов рецепты, наиболее близкие к текущему заказу. Очевидно, 
  что этот модуль должен обладать способностью обращаться к базе прецедентов как 
  к памяти, адресуемой по содержанию, оценивать степень соответствия между набором 
  входных спецификаций и характеристиками выбранного прецедента и ранжировать 
  отобранные прецеденты на основании этой оценки.
  
 Модуль модификации 
  затем копирует и переименовывает выбранный прецедент и пытается скорректировать 
  его в соответствии с полученной целевой спецификацией. В приведенном выше примере 
  подстановка "брокколи" вместо "зеленый горошек" и модификация 
  плана выполняются именно этим модулем.
  
 После выполнения 
  всех необходимых коррекций новый рецепт записывается модулем сохранения в базу 
  прецедентов.
  
В программе CHEF корректировка неудачного плана (рецепта) в действительности выполняется отдельным модулем, который имеет доступ к специальному словарю термов, описывающих отказы, и индексированному множеству стратегий восстановления. Имеется также и специальный "симулятор", который позволяет "проиграть" сформированный рецепт и выявить в нем подводные камни, не заметные на первый взгляд. По основные модули работы с прецедентами выполняют именно те функции, которые мы описали выше.
|  |  |  |