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


           

Это правило разрешает конфликт между


Это правило разрешает конфликт между задачами, одна из которых должна начаться в точно зафиксированное время, а другая уже вставлена в расписание. Для этого вторая задача сдвигается в расписании. Если же в конфликте участвует задача, для которой не оговорено точное время начала, сдвигается та задача, которая имеет более низкий приоритет.

(defrule clash

(declare (salience 100))

(goal (subgoal fix))

?S <- (schedule (task ?M) (start ?M1))

(errand (name ?N)

(earliest ?E1) (latest ?L1)
(duration ?C)) (schedule

(task ?N&"?M)

(start ?Nl&:(and (<= ?M1 ?Nl)

(< ?N1 (+ ?M1 ?C)))))

(errand (name ?N) (duration ?D)
(earliest ?E2) (latest ?L2i:
(< (- ?L2 ?E2) (- ?L1 ?E1)))) =>

(printout t crlf ?M " clashes with " ?N t crlf)
;; ( ?M " конфликтует с " ?N

(modify 7S (start (+t ?N1 ?D))) )

Это правило гласит: "В случае конфликта передвинуть в расписании ту задачу, которая имеет меньшее ограничение". Оно активизируется только в том случае, если текущей является подцель fix. Правила start и finish, которые контролируются подцелями start и finish, остаются без изменений.

Ваша задача — разработать три новых управляющих правила, которые организуют работу правил clash, start и finish.

I) Правило fixstart будет активизироваться в случае, если предложения, сформированные всеми прочими правилами для подцели start, будут нарушать ограничения. Это новое правило выделяет вектор schedule для задачи и присваивает его полю start значение, которое хранится в слоте latest элемента errand.

II) Измените существующее правило unstart таким образом, чтобы оно заменяло подцель в выражении goal с start на fix вместо прежней замены start на finish.

III) Разработайте правило unfix, которое будет заменять подцель в выражении goal с fix на finish.

Затем выполните следующее.

IV) Протестируйте программу и убедитесь, что она справляется с проблемой на наборе исходных данных, установленном в упр. 5.

V) Эвристика, использованная в правиле clash, не может справиться со всеми возможными случаями.

Содержание  Назад  Вперед