Опубликован: 18.05.2005 | Уровень: специалист | Доступ: платный | ВУЗ: Московский государственный технологический университет «Станкин»
Лекция 7:

Практическая разработка экспертных систем в среде CLIPS

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >

Программирование в CLIPS экспертной системы управления технологическим процессом.

Программа ЭС управления ТП по обработке деталей сложной формы, разработанная на основе табл. 7.1 и табл. 7.2, выглядит следующим образом.

;;;======================================================
;;;     Control Expert System of technological process
;;;
;;;     This expert system administers technological process 
;;;     of  creations of details of the complex form
;;;
;;;     CLIPS Version 6.0 Example
;;;
;;;     To execute, merely load, reset and run.
;;;======================================================
	(deffacts initial-state
	      (Ds 800)        
	      (Dm 2)     
	      (Da 2)  
              (Dar 1))    
	
	(defrule  rule1
	 (declare (salience 9098))
	  (Ds 10)         
	  (Dm 1)     
	  (Da 1)         
	=>
	 (printout t  "Rule1: Vr=A, Vm=10, T=0, I=1, G=tor "  crlf))
	

	(defrule  rule2
	 (declare (salience 9095))
	  (Ds 10)         
	  (Dm 2)     
	  (Da 2)         
	=>
	 (printout t  "Rule2: Vr=B, Vm=10, T=1, I=1, G=line, Rm=40, J=80, S=60 "  crlf))	

	(defrule  rule3
	 (declare (salience 9092))
	  (Ds 300)         
	  (Dm 2)        
	=>
	 (printout t  "Rule3: Vr=B, Vm=20, T=2, I=1, G=tor "  crlf))

	(defrule  rule4
	 (declare (salience 9097))
	  (Ds 300)            
	  (Da 3)         
	=>
	 (printout t  "Rule4: Vr=C, Vm=40, T=3, I=2, G= line, Rm=50, J=75, S=75"  crlf))

	(defrule  rule5
	 (declare (salience 9094))
	  (Ds 800)         
	  (Dm 2)     
	  (Da 2)         
	  (Dar 1)   
	=>
	 (printout t  "Rule5: Vr=B, Vm=60, T=4, I=2, G= line, Rm=60, J=70, S=70 "  crlf))

	(defrule  rule6_7
	 (declare (salience 9090))
	  (Ds 800)             
	  (Dar ?num)  
	=>
	  (if (< ?num 3)  
	    then
	     (printout t "Rule6: Vr=B, Vm=40, T=6, I=3, G= line, Rm=60, J=60, S=75 "  crlf)
	    else
	     (printout t "Rule7: Vr=C, Vm=80, T=6, I=3, G= line, Rm=60, J=60, S=75 "  crlf))) 
Листинг 7.1. Программа ЭС управления ТП по обработке деталей сложной формы.

Эта программа сохраняется в виде файла с именем, например, robot.clp, далее в среде CLIPS выполняются команды: clear; load robot.clp; reset и run. Эта программа начинает работать. Входные воздействия заданы в данном примере через deffacts initial-state.

Активизация правил БЗ для конкретных воздействий, заданных в программе, дает конфликтное множество (базу целей) - правила rule5 и rule6_7, а затем по критерию максимальной достоверности первым выбирается управляющее воздействие на систему низшего уровня:

Rule5: Vr=B, Vm=60, T=4, I=2, G= line, Rm=60, J=70, S=70

В реальной жизни входные воздействия поступают через оператор read (ввод данных с заданного устройства), например, следующим образом:

(defrule Dar_parameter
(declare (salience 9101))
	(Dar ? num)
=>
(printout t "Ds parameter has value "crlf"
 1) 10 "crlf" 2) 300 "crlf" 3) 800 "crlf" Choose 1—3 =>")
	(assert (Dar =(read))))

Читателю предлагается самостоятельно дописать правила останова программы ( halt ) по условиям Da=Dar или достижению заданного значения Ds, а также правила для проверки граничных условий. Дотошный читатель, разобравшийся в программе, может спросить, зачем мне CLIPS, если такую простую программу я могу написать на любом языке программирования. Во-первых, это учебный пример с простейшей базой знаний. Во-вторых, в реальной жизни база знаний содержит сотни правил, управляющие параметры постоянно считываются с датчиков и видеокамер, и сразу же отрабатывается поиск в сети продукций новых управляющих воздействий. Простой программой в таком случае не обойтись.

Примером более сложной программы для решения задачи планирования последовательности действий робота (лекция 3, рис. 3.4) является фрагмент программы Д. Грим-шоу (www.ryerson.ca/~dgrimsha). Эта программа управления роботом по перекладыванию кубиков. Начальное состояние положения кубиков в стеке 1 и стеке 2 определяется путем перечисления кубиков сверху вниз. Задавая различные комбинации в deffacts initial-state, мы получим конкретные последовательности действий робота.

(deftemplate goal
	(slot move)
	(slot on-top-of))
(deffacts initial-state
	(stack A B C)
	(stack D E F)
	(goal (move C) (on-top-of E)))
(defrule move-directly
	?goal < — (goal (move ?block1) (on-top-of ?block2))
	?stack-1 < — (stack ?block1 $?rest1)
	?stack-2 < — (stack ?block2 $?rest2)
	=>
(retract ?goal ?stack-1 ?stack-2)
	(assert (stack $?rest1))
	(assert (stack ?block1 ?block2 $?rest2))
	(printout t ?block1 "moved on top of" ?block2 crlf))
(defrule move-to-floor >
?goal < — (goal (move ?block1) (on-top-of floor))
?stack-1 < — (stack ?block1 $?rest)
	=>
	(retract ?goal ?stack-1)
	(assert (stack ?block1))
	(assert (stack $?rest))
	(printout t ?block1 "moved to the floor." crlf))
(defrule clear-upper-block
	(goal (move ?block))
	(stack ?top $? ?block $?)
	=>
	(assert (goal (move ?top) (on-top-of floor))))
(defrule clear-lower-block
	(goal (on-top-of ?block))
	(stack ?top $? ?block $?)
	=>
	(assert (goal (move ?top) (on-top-of floor))))

Результат работы CLIPS в данном случае будет следующий:

CLIPS$>$ (run)
A moved to the floor.
B moved to the floor.
D moved to the floor.
C moved on top of E
CLIPS$>$

В завершение лекции читателю может быть рекомендована книга Ж.Гурратано [ 7.7 ] , содержащая множество примеров программирования ЭС на основе CLIPS.

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

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >
Дмитрий Черепанов
Дмитрий Черепанов

Неоднократно находил ошибки в тестах, особенно в экзаменационных вопросах, когда правильно данный ответ на вопрос определялся в итоге как не правильно отвеченный... Из-за этого сильно страдает конечный бал! Да еще в заблуждение студентов вводит! Они-то думают, что это они виноваты!!! Но они тут не причем! Я много раз проверял ответы на некоторые такие "ошибочные" вопросы по нескольким источникам - результат везде одинаковый! Но ИНТУИТ выдавал ошибку... Как это понимать?

Из-за подобных недоразумений приходиться часами перерешивать экзамен на отличную оценку...!!!

Исправьте, пожалуйста, такие "ошибки"...

Анжелика Шлома
Анжелика Шлома

Огромная просьба сделать проще тесты, это просто ужас какой-то! Слишком сложно! 

Ринат Гатауллин
Ринат Гатауллин
Россия
Григорий Усанов
Григорий Усанов
Россия