Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodich.doc
Скачиваний:
5
Добавлен:
06.12.2018
Размер:
348.16 Кб
Скачать

7.Управление стратегией выбора в экспертных системах с помощью эвристик.

ЭС имеют специфическую организацию: программа имеет начальное состояние и осуществляет поиск конечного состояния (цели).Существуют следующие стратегии поиска: поиск в ширину и поиск в глубину. Эти стратегии гарантируют рассмотрение всех возможных вариантов. Поиск оказывается более эффективным, если некоторый механизм в пунктах выбора сам сможет делать наиболее желательный выбор. Это так называемая эвристика поиска. Эвристика - это эмпирическое правило, с помощью которого человек - эксперт в отсутствие формулы или алгоритма пытается осуществить свои намерения.

Существует два типичных способа включения эвристической информациии о конкретной задаче в поисковую структуру: с помощью эвристической оценочной функции, которая "взвешивает" утверждения конкретной задачи и определяет их относительную значимость; с помощью эвристической информации, непосредственно помещённой в правила.

Рассмотрим более подробно второй способ. Допустим, мы хотим создать систему, позволяющую составить оптимальное расписание занятий для студентов колледжа по курсу вычислительной техники. Предварительные предположения:

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

- следует определить обязательные курсы для данной специализации;

- каждому студенту разрешается выбрать факультативные курсы;

- нужно включить в учебный план общеобразовательные дисциплины;

- необходимо обеспечить в каждом семестре хотя бы один факультативный курс.

Эти предположения станут эвристиками, когда будут включены в правила для составления расписания.

Программа на Прологе содержит набор общих данных. Это описание обязательных курсов; факультативных курсов; курсов, которые будут читаться в данном семестре; курсов, пройденных студентом; курсов, предварительных для данного курса (при этом указываются непосредственные предварительные курсы). Фрагмент программы выглядит следующим образом:

reg ("введения в вычисления"). /* обязательные курсы */

reg ("структуры данных").

reg ("ассемблер").

и т. д.

elec ("информатика"). /* факультативные курсы */

elec ("трансляторы").

elec ("анализ алгоритмов").

и т. д.

given_now("введения в вычисления"). /* читают в данном */

given_now("мат. анализ2"). /* семестре */

и т. д.

waived("введение в вычисления"). /* временно отложить */

waived("мат. анализ1").

passed("структуры данных"). /* изученные курсы */

passed("ассемблер").

и т. д.

impreq("структуры данных","введения в вычисления").

impreq("мат. анализ2","мат. анализ1").

/*Непосредственным предварительным условием для изучения "мат. анализ2" является знание "мат. анализ1"*/

Перейдем к описанию правил:

pos_req_course (X): - req (X), /* правило для обязательных курсов */

not (done_with(X)),

given_now (X),

have_preq_for (X).

Здесь утверждается, что X будет возможным обязательным курсом в расписании, если он является обязательным курсом, если студент его еще не прошел, если он должен читаться в этом семестре и если студент изучил все предварительные курсы.

Далее определим курсы, пройденные студентом:

done_with (X): - waived (X).

done_with (X): - passed (X).

all_done_with (X): - findall (Y, done_with(Y), X).

Все пройденные курсы заносятся в список X.

Затем определяются все предварительные курсы в том случае, если все предварительные курсы, необходимые для изучения обязательного:

have_preq_for (X): - all_preq_for (X, Z),

all_done_with (Q),

subset (Z, Q).

/* Студент прошел все предварительные курсы в том случае, если все предварительные для X курсы находятся в списке Z, а все курсы, пройденные или пропущенные им, находятся в списке Q, и Z входит в Q. Другими словами, Z есть подмножество Q. */

Опишем список, содержащий все предварительные курсы для данного курса Y:

all_preq_for (Y, Z): - findall (X, preq (Y, X), Z).

preq (X, Y): - impreq (X, Y) .

preq (X, Y): - impreq (X, Z), preq (Z, Y).

В программе использованы два имени: непосредственный предварительный курс (impreq) и более общий предварительный курс (preq). Это предотвращает зацикливание в дереве поиска.

Правило для факультативного курса выглядит так:

pos_elec_course (X): - elec (X),

not (done_with (X)),

given_now (X),

have_preq_for (X).

Наконец опишем правило, которое выберет вероятное расписание, исходя из cписка возможных курсов. Однако необходимо, чтобы было найдено самое лучшее расписание, а затем все альтернативные. Это обеспечивается порядком использования правил в Прологе. Первым помещается правило, определяющее наилучшее расписание, вторым – для следующего по качеству расписания и т.д. Набор правил имеет вид:

pos_schedule(A, B, C, "gen.elec"): - /*elec-факультативный */

pos_req_course (A), /* курс, который выбрал */

pos_req_course (B), /* студент */

pos_req_course (C),

ordered3 (A, B, C). /* предикат исключает */

/* повторение курсов */

pos_schedule (A, B, C, "gen.elec"): -

pos_req_course (A),

pos_req_course (B),

pos_elec_course (C),

ordered2 (A, B).

pos_schedule (A, B, C, "gen.elec"): -

pos_req_course (A),

pos_elec_course (B),

pos_elec_course (C),

ordered2 (B, C).

pos_schedule (A, B, C, "gen.elec"): -

pos_elec_course (A),

pos_elec_course (B),

pos_elec_course (C),

ordered3 (A, B, C).

pos_schedule (A, B, "gen.elec", "gen.elec"): -

pos_req_course (A),

pos_req_course (B),

ordered2 (A, B).

pos_schedule (A, B, "gen.elec", "gen.elec"): -

pos_req_course (A),

pos_elec_course (B).

pos_schedule (A, B, "gen.elec", "gen.elec"): -

pos_elec_course (A),

pos_elec_course (B),

ordered2 (A, B).

pos_schedule (A, "gen.elec", "gen.elec", "gen.elec"): -

pos_req_course (A).

pos_schedule (A, "gen.elec", "gen.elec", "gen.elec."): -

pos_elec_course (A).

pos_schedule ("gen.elec", "gen.elec", "gen.elec", "gen.elec").

Упражнения:

  1. Какие изменения нужно внести в программу “Помощник студента”, чтобы курсы могли иметь альтернативные предварительные курсы?

  2. Создать модуль, используемый совместно с программой “Помощник студента” и эффективно задающий вопросы об изученных и сданных студентом курсах.

  3. Реализовать пример ЭС, которая составляла бы оптимальное меню для ресторана, используя как образец программу “Помощник студента”.

  4. Реализовать пример ЭС, которая составляла бы комплекс утренней гимнастики на основе индивидуальной подготовки человека.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]