с составлением расписания мероприятий, перечисленных
;; уже включенной в расписание.
(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 в конце главы будет показано, что существуют наборы мероприятий, с которыми программа не может справиться, хотя составить расписание для них с учетом оговоренных ограничений можно.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий