ТОП 10:

Эти правила соответствуют этапу абстрагирования данных.



Правило dish-type вызывается первым, поскольку оно устанавливает модель среды в соответствии с имеющимися фактами при перезапуске исполнительной системы CLIPS,

(defrule dish-type (initial-fact) (task dish) =>

(printout t crlf

"Is the main dish of the meal MEAT, FISH or POULTRY?"

;; Блюдо приготовлено из МЯСА, РЫБЫ или ПТИЦЫ?

T crlf) (assert (meal (property dish-type)

(is read)))) )

;; Правило meat собирает дополнительные сведения

;; о блюде, если известно, что оно приготовлено

;; из мяса, (defrule meat (task dish)

(meal (property dish-type) (is meat)) =>

(printout t crlf

"What kind of meat? For example STEAK, VEAL, LAMB."

;; Из какого мяса? Например, ГОВЯДИНА, ТЕЛЯТИНА, БАРАНИНА.

T crlf) (assert (meal (property meat-type)

(is read)))) )

Аналогичное правило fish для блюда из рыбы напишите самостоятельно. Это правило должно уточнять тип морского продукта, из которого приготовлено блюдо: свежая рыба, моллюски и т.п.

Разработайте и правило poultry для блюд из птицы.

;; ПРАВИЛА, КОТОРЫЕ ИМЕЮТ ДЕЛО С

;; ХАРАКТЕРИСТИКАМИ ВИН.

Эти правила соответствуют этапу эвристического сопоставления.

Правило steak является примером сопоставления вида мясного блюда с классом вин.

(defrule steak

?task <- (task dish) (meal

(property meat-type) (is steak)) =>

(assert (wine (property color) (is red)

(cert 1.0))) (assert (wine (property body) (is full)

(cert 1.0))) (assert (wine (property flavor) (is dry)

(cert 0.7))) (assert (wine (property flavor) (is sweet)

(cert 0.2))) (retract ?task)

(assert (task attributes)) )

;;Такие же правила можно написать и для других

;;видов мясных блюд: из телятины (veal),

;;баранины (lamb) и т.д.

;;Задача dish удалена, поскольку известно,

;;какого типа блюдо.

;;Затем устанавливается задача принятия решения

;;о характеристиках вина.

;;Для блюд из мяса, рыбы и птицы нужно

;;определить правила по умолчанию

;;(default rules), которые будут относиться к

;;любому типу соответствующего исходного

;;продукта (например, подходят и для блюда из

;;аллигатора, если последний отнесен

;;к мясным продуктам).

;;ПРАВИЛА РАБОТЫ С КОЭФФИЦИЕНТАМИ УВЕРЕННОСТИ

;;Если в модели среды существуют две структуры с

;;одними и теми же значениями для одних и тех же

;;атрибутов, но отличаются коэффициентами

;;уверенности, то правило

;;attribute-update создает из них третью

;;структуру с новым значением и удаляет две

;;исходные.

;;Новое значение коэффициента уверенности CF

;;вычисляется по формуле:

;;cf = cfl + с£2(1 - cfl)

(defrule attribute-update (task attributes)

?winel <- (property ?attribute) (is ?value)

(cert ?certl)) ?wine2 <- (property ?attribute) (is ?value)

(cert ?cert2)) (<> ?crtl ?cert2) =>

(bind ?newcert (+ ?certl ( ?cert2

(- 1 ?certl)))) (assert (wine (property ?attribute)

(is ?value) (cert ?newcert))) (retract ?winel) (retract ?wine2) )

;;Разработайте правило preference, к которому

;;следует обращаться только в том случае, если в

;;рабочей памяти существует больше одного

;;возможного значения для некоторого атрибута.

;;Это правило должно запросить у пользователя,

;;какое значение атрибута из существующих для

;;него предпочтительнее, соответственно

;;изменить коэффициент уверенности в выбранном

;;сочетании атрибут-значение, а другое значение

;;удалить из памяти.

;Разработайте правило choose-value, которое

;;будет активизироваться в том случае, если в

;;рабочей памяти существуют две структуры,

;;характеризуемые разными значениями одного и

;;того же атрибута. Правило должно

;;выбирать структуру, у которой коэффициент

;;уверенности больше, а другую удалять.

;Разработайте правило unique, которое будет

;;активизироваться в том случае, если существует

;;только одна структура с определенным значением

;;атрибута. Это правило объявляет, что атрибут

;;окончательно определен.

;Разработайте правило unity, которое будет

;;активизироваться в том случае, если существует

;;структура, обладающая коэффициентом

;;уверенности, равным 1.

;;Это правило объявляет, что атрибут

;;окончательно определен.

;;Если все атрибуты вина определены, вывести отчет,

(defrule all-attributes-done ?task .

<- (task attributes) ?col

<- (color done) ?bod

<- (body done) ?fla

<- (flavor done) (wine (property color)

(is ?color)) (wine (property body)

(is ?body)) (wine (property flavor)

(is ?flavor)) =>

(printout t crlf

"Try a " ?flavor " " ?color " wine with a " ?body " body"

;; "Попробуйте " ?f lavor " " ?color " вино с

;; " ?body " консистенцией."

T crlf)

(retract ?col) (retract ?bod) (retract ?fla)

(retract ?task) (assert (task brand)) )

;;ПРАВИЛА, ИМЕЮЩИЕ ОТНОШЕНИЕ К ВИНУ.

;;Выбор вина по заданному описанию значений ;атрибутов.

;;Правила этой группы соответствуют этапу

;;"конкретизация решения".

;;Прежде чем предложить пользователю выбрать

;;желаемый продукт, нужно сформировать список

;;кандидатов.

;;Разработайте правило go-choose, которое

;;выбирает вино с наивысшим рейтингом, если не

;;активизируются никакие другие правила,

;;дополняющие список вин.

;;Правило soave является примером правила

;;дополнения списка новым названием вина

;;(в данном случае "soave").

;;Разработайте другие аналогичные правила.

(defrule soave (task brand)

(wine (property color) (is white))

(wine (property flavor) (is dry)

(cert ?certl)) (wine (property body) (is fine)

(cert ?cert2)) =>

(assert (wine (property brand) (is soave)

(cert (min ?certl ?cert2))))

)

;; ПРАВИЛА, ОРГАНИЗУЮЩИЕ ВЫБОР ПОЛЬЗОВАТЕЛЕМ ИЗ

;; СПИСКА.

Пользователь отвечает на выводимый запрос вводом "yes" или "по".

Разработайте правило selection, которое выбирает вино с наивысшим рейтингом и предлагает его пользователю.

Разработайте правило rejection, которое активизируется после ввода пользователем отрицательного ответа на текущее предложение.

Правило acceptance завершает текущий сеанс работы с программой, (defrule acceptance

(task choice)

(decision (re ?candidate) (is yes))

=>

(printout

T crlf

"Sir/Madam has impeccable taste "

;; "Сэр/Мадам! У вас исключительно тонкий вкус! "

T crlf) (halt) )

II) Как можно изменить стратегию поиска, например не формировать сначала весь список, а предлагать пользователю вина сразу же после формирования очередного кандидата, причем создавать их в порядке "качества" вина?


ГЛАВА 12. Эвристическая классификация (II)

Инструментальные средства и задачи, решаемые экспертной системой

Эвристическая классификация в системах MUD и MORE

Модель предметной области выполнения буровых работ

Стратегии приобретения знаний

Использование коэффициентов уверенности в программе MORE

Опыт эксплуатации системы MORE

Совершенствование стратегий

Уроки проекта GUIDON

Структура задач в системе NEOMYCIN

Рекомендуемая литература

Упражнения

ГЛАВА 12. Эвристическая классификация (II)

Инструментальные средства и задачи, решаемые экспертной системой

Эвристическая классификация в системах MUD и MORE

12.3. Совершенствование стратегий Рекомендуемая литература Упражнения

Сейчас мы продолжим начатый в предыдущей главе анализ различий между задачами классификации и конструирования. Но теперь основное внимание будет сосредоточено на методах решения проблем, включая и различные способы представления знаний и реализации машины логического вывода. В частности, мы подробно рассмотрим типы инструментальных программных средств, наиболее подходящих для разработки систем эвристической классификации, примеры использования эвристической классификации в экспертных системах, более современных, чем MYCIN и EMYCIN, и увидим, каким образом сказывается обладание знаниями об используемых методах решения проблем на работе автоматизированных систем извлечения знаний.

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

Но в этой главе мы будем считать, что метод решения проблем выбран, а наша задача — проанализировать процесс выбора инструментальных средств для проектируемой экспертной системы и средств приобретения знаний.







Последнее изменение этой страницы: 2016-04-07; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 34.225.194.144 (0.01 с.)