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



             

Архитектурсистем планирования и метапланирования - часть 6


15.1. Программа планирования мероприятий

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

;; ШАБЛОНЫ

;; Объект мероприятий.

(deftemplate errand

(field name (type SYMBOL)) ; имя

;; интервал времени, в течение которого нужно

;; приступить к выполнению мероприятия

;; не раньше (field earliest (type INTEGER) (default 0))

;; не позже

(field latest (type INTEGER) (default 0))

;; продолжительность

(field duration (type INTEGER) (default 0))

;; приоритет

(field priority (type INTEGER) (default 0))

;; включено в расписание (field done (type SYMBOL)

(default no));

)

; ; Объект расписания (def template schedule

(field task (type SYMBOL))

;; задача

;; интервал времени, в течение которого нужно

;; выполнить задачу

;; начало

(field start (type INTEGER) (default 0))

;; конец

(field finish (type INTEGER) (default 0))

;; приоритет

(field priority (type INTEGER) (default 0))

;; полностью заполнено

(field status (type SYMBOL) (default no))

)

;; Объект цели. Используется для управления поведением

;; программы, принуждая ее к определенному порядку

;; достижения целей. (def template goal

(field subgoal (type SYMBOL)))

;; ФАКТЫ

(deffacts the-facts (goal (subgoal start))

(errand (name hospital) (earliest 1030)

(latest 1030)

(duration 200) (priority 1)) (errand

(namе doctor) (earliest 1430) (latest 1530)

(duration 200) (priority 1))




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