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



             

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


;; уже включенной в расписание.

(defrule priority4

(declare (salience 60))

(goal (subgoal start))

?E <- (errand (name.?N) (earliest ?T)

(duration ?D) (priority ?P) (done no))

(errand (name ?M&~?N) (duration ?C))

(schedule (task ?M)

(start ?U&:(<= ?U ?T)) (finish ?F&:

(<= (+ ?T ?D) ?F)))

)

=>

(printout t crlf ?N " would

occur during " ?M t crlf)

?N " может появиться во время "

?М (modify ?E (earliest (+t ?U ?C)))

)

;; Изменение цели. Новая цель - установка конечного

;; времени выполнения задачи. (defrule change-goal

?G <- (goal (subgoal start)) =>

(modify ?G (subgoal finish))

)

;; Время завершения задачи - это время начала ее

;; выполнения плюс продолжительность . (defrule endpoint

(goal (subgoal finish))

(errand (name ?N) (latest ?L) (duration ?D))

?S <- (schedule (task ?N) (start

?!&:(<= ?T ?L)) (finish 0)) ... =>

(printout t crlf "Fixing end of" ?N t crlf)

;; "Определение завершения " ?N

(modify ?S (finish (+t ?T ?D)))

;; Новая цель - вывести отчет о плане.

(defrule unfinish

?G <- (goal (subgoal finish)) =>

(modify ?G (subgoal report))

)

;; Вывести задачи в хронологическом порядке.

(defrule scheduled

(declare (salience 10)) (goal (subgoal report))

?S <- (schedule (task ?N) (start ?T1) (finish ?T2S"0)

( status 0 ) ) . '(not (schedule (start ?T

3&:(<= ?T3 ?T1)) (status 0)))

)

=>

(printout t crlf ?N " from " ?T1 " till " ?T2t crlf)

;; ?N " от " ?T1 " до " ?T2

(modify ?S (status 1))

)


;; Для некоторых задач в расписании может не найтись

;; места.

(defrule unscheduled

(goal (subgoal report))

?S <- (schedule (task ?N) (finish 0) (status 0))

(printout t crlf ?N " not scheduled. " t crlf)

;; ?N " не включена в расписание. "

(modify ?S (status 1)) )

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




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