WWW.DISS.SELUK.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА
(Авторефераты, диссертации, методички, учебные программы, монографии)

 

Pages:     | 1 | 2 ||

«Ю.Ю. Громов, О.Г. Иванова, В.В. Алексеев, М.П. Беляев, Д.П. Швец, А.И. Елисеев ИНТЕЛЛЕКТУАЛЬНЫЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ И ТЕХНОЛОГИИ Рекомендовано федеральным государственным бюджетным образовательным учреждением высшего ...»

-- [ Страница 3 ] --

27. Преобразуйте семантическую сеть классификации автомобилей в ряд фактов, заданных в операторе deffacts. Для описания фактов используйте несколько конструкций deftemplate.

28. Преобразуйте бинарное дерево решений, представляющее информацию о классификации растений в ряд фактов, заданных в операторе deffacts.

1. Адрес языка CLIPS в Интернете: http://www.ghg.net/clips/ CLIPS.html.

2. Базы данных. Интеллектуальная обработка информации / В.В. Корнеев [и др.]. – М. : Нолидж, 2000.

3. Вахтин, А.А. Лабораторный практикум по программированию на языке CLIPS для курса «Представление знаний в информационных системах» : учебно-методическое пособие для вузов / А.А. Вахтин, В.В. Гришина. – Издательско-полиграфический центр ВГУ, 2010. – 95 с.

4. Джарантино, Дж. Экспертные системы: принципы разработки и программирования / Дж. Джарантино, Г. Райли. – 4-е изд. ; пер. с англ. – М. : Изд. дом «Вильямc», 2007. – 1152 с.

5. Джексон, П. Введение в экспертные системы / П. Джексон ;

пер. с англ. – М. : Изд. дом «Вильямc», 2001. – 622 с.

6. Люгер, Дж. Искусственный интеллект: стратегии и методы решения сложных проблем / Дж. Люгер, С. Рассел, П. Норвиг. – 4-е изд. ; пер. с англ. – М. : Изд. дом «Вильямc», 2003. – 864 с.

7. Рассел, С. Искусственный интеллект: современный подход / C. Рассел, П. Норвиг. – 2-е изд. ; пер. с англ. – М. : Изд. дом «Вильямc», 2006. – 1408 с.

8. Частиков, А.П. Разработка экспертных систем. Среда CLIPS / А.П. Частиков,Т.А. Гаврилов, Д.Л. Белов. – СПб. : БХВ-Петербург, 2003. – 608 с.

6. ПРИМЕРЫ РЕАЛИЗАЦИИ ИНТЕЛЛЕКТУАЛЬНЫХ

ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

6.1. Пример объектно-ориентированного программирования Использование объектно-ориентированных средств в CLIPS позволяет значительно упростить программирование правил, поскольку для обновления данных можно применять механизм передачи и обработки сообщений методами классов. Мы продемонстрируем, как это делается на примере, который моделирует правила обращения с полуавтоматическим пистолетом.

Первым делом определим класс pistol, в котором будут перечислены свойства, необходимые для моделирования.

(defclass pistol (is-a USER) (role concrete) (pattern-match reactive) (slot safety (type SYMBOL) (create-accessor read-write)) (slot slide (type SYMBOL) (create-accessor read-write)) (slot hammer (type SYMBOL) (create-accessor read-write)) (slot chamber (type INTEGER) (create-accessor read-write)) (slot magazine (type SYMBOL) (create-accessor read-write)) (slot rounds (type INTEGER) (create-accessor read-write))) Первые три слота – системные. Они нужны объектно-ориентированной надстройке CLIPS (COOL – CLIPS object–oriented language).

Эти слоты COOL извещают о том, что pistol – это пользовательский класс; pistol является конкретным классом, т.е. возможно создание экземпляров этого класса.

Экземпляры класса pistol могут быть использованы в качестве объектов данных, которые можно сопоставлять с условиями в правилах и использовать в действиях, определённых правилами.

Следующие пять слотов представляют свойства и члены данных класса:

слот safety (предохранитель) может содержать символ on или off;

слот slide (затвор) может содержать значение forward или back, т.е. хранит информацию о положении затвора;

слот hammer (курок) содержит информацию о состоянии курка, back или down;

слот chamber (патронник) содержит значение 1 или 0, в зависимости от того, есть ли патрон в патроннике;

слот magazine (обойма) может содержать значение in или out, в зависимости от того, вставлена ли обойма;

слот rounds (патроны) содержит текущее количество патронов в обойме.

Для того чтобы иметь возможность записывать в слот новое значение или считывать текущее, нужно разрешить формирование соответствующих функций доступа через грань акцессоров create-accessor.

Теперь сформируем экземпляр класса pistol с помощью следующего выражения:

(definstances pistols (PPK of pistol (safety on) (slide forward) (hammer down) (chamber 0) (magazine out) (rounds 6))) Этот экземпляр, РРК, правильно уложен – обойма вынута из рукоятки, пистолет установлен на предохранитель, затвор в переднем положении, курок опущен, а патронник пуст. В обойме имеется 6 патронов.

Теперь, имея в программе определение класса и сформировав экземпляр класса, разработаем правила и обработчики сообщений, с помощью которых можно описать отдельные операции обращения с пистолетом и стрельбы из него. Для этого сначала разработаем шаблон задачи. Желательно отслеживать две вещи:

есть ли патрон в патроннике;

произведён ли выстрел.

Для этого можно использовать следующий шаблон:

(deftemplate range-test (field check (type SYMBOL) (default no)) (field fired (type SYMBOL) (default no))) Первое правило будет устанавливать в рабочую память программы задачу range-test.

(defrule start (initial-fact) => (assert (range-test))) Приактивизации этого правила в рабочую память будет добавлено (range-test (chec kno) (fired no)) Следующие три правила будут проверять, правильно ли снаряжён пистолет.

(defrule check (object (name [PPK]) (safety on) (magazine out)) (send [PPK] clear) (modify ?T (check yes))) Правило check заключается в том, что если пистолет стоит на предохранителе (safety on), обойма вынута (magazine out) и пистолет не был проверен, то нужно очистить патронник и проверить, нет ли в нём патрона. Обработчик сообщения clear для класса pistol будет выглядеть следующим образом:



(defmessage-handler pistol clear () (dynamic-put chamber 0) (ppinstance)) В первой строке объявляется, что clear является обработчиком сообщения для класса pistol, причём этот обработчик не требует передачи аргументов. Оператор во второй строке «очищает» патронник. Присвоение выполняется независимо от того, какое текущее значение имеет слот chamber, – 0 или 1. Оператор в третьей строке требует, чтобы экземпляр распечатал информацию о текущем состоянии своих слотов.

В следующих двух правилах обрабатываются ситуации, когда пистолет снаряжён неправильно, – не установлен на предохранитель или в него вставлена обойма. Правило correctl устанавливает пистолет на предохранитель, а правило correct2 извлекает из него обойму.

(defrule correctl (object (name [PPK]) (safety off)) (range-test (check no)) => (send [PPK] safety on)) (defrule correct (object (name [PPK]) (safety on) (magazine in)) (range-test (check no)) => (send [PPK] drop)) Как и при разработке предыдущего правила, нам понадобятся обработчики сообщений safety и drop.

(defmessage-handler pistol safety (?on-off) (dynamic-put safety ?on-off) (if (eq ?on-off on) then (dynamic-put hammer down))) Обработчик сообщения safety принимает единственный аргумент, который может иметь только два символических значения on или off.

В противном случае нам пришлось бы разработать два обработчика:

один для сообщения safety-on, а другой – для сообщения safety-off.

Обработчик сообщения drop просто извлекает обойму из пистолета.

(defmessage-handler pistol drop () (dynamic-put magazine out) Теперь, когда обеспечено правильное исходное снаряжение пистолета, можно приступить к стрельбе. Следующее правило обеспечивает вставку обоймы в пистолет перед стрельбой:

(defrulemag-in (object (name [PPK]) (safety on) (magazine out)) (range-test (fired no) (check yes)) => (send [PPK] seat)) Обработчик сообщения seat выполняет действия, противоположные тем, которые выполняет обработчик drop.

(defmessage-handler pistol seat () (dynamic-put magazine in)) Следующее правило обеспечивает снаряжение обоймы патронами:

(defrule load (object (name [PPK]) (magazine in) (chamber 0)) => (send [PPK] rack)) Обработчик сообщения rack.

(defmessage-handler pistol rack () (bind ?a (dynamic-get rounds)) (dynamic-put chamber 1) (dynamic-put rounds (- ?a 1)) (dynamic-put slide forward) else (dynamic-put chamber 0) (dynamic-put slide back))) В этом обработчике обеспечивается досылка патрона в патронник в том случае, если в обойме имеются патроны. Следующее правило подготавливает пистолет к стрельбе, снимая его с предохранителя. Обратите внимание на то, что в нём повторно используется сообщение safety, но на этот раз с аргументом off.

(defrule ready (object (name [PPK]) (chamber 1)) (send [PPK] safety off)) Правило fire выполняет стрельбу.

(defrule fire (object (name [PPK]) (safety off)) (if (eq (send [PPK] fire) TRUE) then (modify ?T (fired yes)))) Обратите внимание, что в данном правиле используется обработчик сообщения, которое возвращает значение. Анализируя его, можно выяснить, произведён ли выстрел, т.е. выполнена ли в действительности та операция, которая «закреплена» за этим сообщением. Если в патроннике был патрон и пистолет был снят с предохранителя, то обработчик сообщения вернёт значение TRUE (после того, как выведет на экран BANG! ). В противном случае он вернёт FALSE (после того, как выведет на экран click).

(defmessage-handler pistol fire () (if (and (eq (dynamic-get chamber) 1) (eq (dynamic-get safety) off)) then (printout t "BANG!" crlf) TRUE else (printout t "click" crlf) FALSE)) Пусть вас не смущает, что в обработчике сообщения анализируется условие, которое уже было проанализировано правилом, отославшим сообщение (в данном случае речь идёт об условии safety off).

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

Рассмотрим ещё один пример:

(defclass RECTANGLE (defclass CIRCLE (defmessage-handler RECTANGLE compute-area () (defmessage-handler CIRCLE compute-area () (definstances figures (rectangle-1 of RECTANGLE (height 2) (width 4)) (circle-1 of CIRCLE (radius 3))) В данном примере определяются два класса, RECTANGLE и CIRCLE, с соответствующими слотами. За каждым классом закреплён обработчик сообщений compute-area. Этот обработчик сообщений предназначен для вычисления площади каждого объекта. Для класса RECTANGLE площадь экземпляра RECTANGLE вычисляется путём умножения высоты, заданной в экземпляре, на ширину. А для класса CIRCLE площадь экземпляра CIRCLE представляет собой значение числа, возвращаемое функцией pi, которое умножается на значение радиуса, заданное в экземпляре, возведённое в квадрат. Обратите внимание на то, что в обоих обработчиках сообщений используется переменная ?self. Это – специальная переменная, автоматически определяемая для каждого обработчика сообщений. При вызове обработчика сообщений переменной ?self присваивается значение адреса того экземпляра, которому передаётся сообщение. Эта переменная может применяться для передачи в экземпляр сообщений, как и было сделано в рассматриваемом примере для выборки значений слотов height, width и radius.

После определения обработчиков сообщений появляется возможность отправлять сообщения compute-area в экземпляры классов RECTANGLE и CIRCLE для получения информации о площади фигуры, заданной этим экземпляром, как в следующем примере:

CLIPS> (reset) CLIPS> (send [circle-1] compute-area) 28. (send [rectangle-1] compute-area) Здесь заслуживает внимания то, что каждому экземпляру передатся одно и то же сообщение, но, вычисляя площадь фигуры, заданной с его помощью, каждый экземпляр отвечает по-разному. Такая способность различных экземпляров отвечать на одно и то же сообщение в характерной для него форме называется полиморфизмом.

6.2. Использование семантических сетей для представления знаний на языке CLIPS Данный пример наглядно демонстрирует работу с фактами и правилами.

Описание структуры. Создадим шаблон для неупорядоченных фактов.

Для описания структуры генеалогического дерева (рис. 6.1) достаточно четыре слота:

(deftemplate person (slot name) (slot gender) (slot father) (slot wife)) Для проверки добавления шаблона можно воспользоваться специальным инструментом Deftemplate Manager (Менеджер шаблонов), доступным в Windows-версии среды CLIPS. Для запуска менеджера шаблонов воспользуйтесь меню Browse и выберите пункт Deftemplate Manager.

Рис. 6.1. Пример генеалогического дерева Менеджер шаблонов позволяет в отдельном окне просматривать список всех шаблонов, доступных в текущей базе знаний, удалять выбранный шаблон и отображать все его свойства.

На основе шаблона PERSON добавим список фактов, описывающих элементы структуры.

(deffacts people (PERSON (name Vasya) (gender male) (wife Liza)) (PERSON (name Liza) (gender female)) (PERSON (name Vladimir) (gender male) (father Vasya)) (PERSON (name Natasha) (gender female) (father Vasya)) (PERSON (name Viktor) (gender male) (father Vasya)) (PERSON (name Misha) (gender male) (wife Natasha)) (PERSON (name Kostya) (gender male) (father Misha) (wife Liza)) (PERSON (name Masha) (gender female) (father Misha))) Для проверки добавления шаблона можно воспользоваться специальным инструментом Deffacts Manager (Менеджер предопределённых фактов). Для запуска менеджера шаблонов воспользуйтесь меню Browse и выберите пункт Deffacts Manager.

Определение отношений. Определим отношение «Мать» (рис. 6.2).

Создадим шаблон:

(deftemplate mother (slot namel) (slot name2)) Создадим правило, описывающее отношение:

(defrule Mother (PERSON (name ?x) (wife ?y)) (PERSON (name ?z) (father ?x)) (printout t ?y " is mother of " ?z crlf) (assert (mother (namel ?y) (name2 ?z)))) Выполним команды:

CLIPS> (reset) CLIPS> (run) Результат:

CLIPS>Natasha mother of Masha Natasha mother of Kostya Liza mother of Viktor Liza mother of Natasha Liza mother of Vladimir Рис. 6.2. Отображение отношения «Мать»

Определим отношение «Брат» (рис. 6.3).

Создадим шаблон:

(deftemplate brother (slot name2)) Создадим правило, описывающее отношение:

(defrule Brother (PERSON (name ?x) (gender male) (father ?y&~nil)) (PERSON (name ?z&~?x) (gender male) (father ?y&~nil)) (not (brother (namel ?x) (name2 ?z))) (not (brother (namel ?z) (name2 ?x))) => (printout t ?x " brother of " ?z crlf) (assert (brother (namel ?x) (name2 ?z)))) Ограничение ?z&~?x запрещает выводить бессмысленные пары одинаковых имён. Ограничение ?y&~nil запрещает выводить пары, поля «отец» которых не определены (нулевое значение).

Условные элементы:

(not (brother (namel ?x) (name2 ?z))) (not (brother (namel ?z) (name2 ?x))) проверяют наличие фактов типа brother и, тем самым отслеживают, была ли уже обработана данная пара или её перестановка. Если эти факты отсутствуют, то это означает, что обработка ещё не была выполнена. В этом случае правило активируется, и выполняются действия, описанные в правой части правила. А именно выводится на экран сообщение о найденной паре братьев и добавляется соответствующий факт brother, утверждающий, что данная пара уже была обработана.

Выполним команды:

CLIPS> (reset) CLIPS> (run) Результат:

CLIPS>Viktor brother of Vladimir 6.3. Пример учёта неопределённости на языке CLIPS В языке CLIPS непосредственно не предусмотрены какие-либо возможности учёта неопределённости. Тем не менее в программу CLIPS несложно включить средства учёта неопределённости, помещая информацию, касающуюся неопределённости, непосредственно в факты и правила [4]. В качестве примера достаточно указать, что с помощью языка CLIPS может быть эмулирован механизм учёта неопределённости, применяемый в системе MYCIN. Ниже будет показано, как можно перезаписать на языке CLIPS следующее правило MYCIN:

The stain of the organism is gramneg and The morphology of the organism is rod and The patient is a compromised host There is suggestive evidence (0.6) that the identity of the organism is pseudomonas В системе MYCIN фактическая информация представлена в виде троек «объектатрибутзначение» (ObjectAttributeValue – OAV).

Такие тройки OAV могут быть представлены в языке CLIPS с помощью следующей конструкции deftemplate (эта конструкция будет помещена в собственный модуль в целях создания повторно применимого программного компонента):

(defmodule OAV (export deftemplate oav)) (deftemplate OAV::oav (multislot object (type SYMBOL)) (multislot attribute (type SYMBOL)) (multislot value)) Эта конструкция deftemplate позволяет представить некоторые факты, требуемые для части IF приведённого выше правила MYCIN, следующим образом:

(OAV (object organism) (attribute stain) (value gramneg)) (OAV (object organism) (attribute morphology) (OAV (object patient) (attribute is a) (value compromised host)) Кроме того, в системе MYCIN с каждым фактом ассоциируется коэффициент достоверности (Certainty Factor – CF), который характеризует степень доверия к факту. Коэффициент достоверности может иметь значение от –1 до 1; значение –1 показывает, что факт является заведомо ложным, значение 0 говорит о том, что какая-либо информация об этом факте отсутствует (налицо полная неопределённость), а значение 1 свидетельствует, что факт является заведомо истинным.

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

(deftemplate OAV::oav (multislot object (type SYMBOL)) (multislot attribute (type SYMBOL)) (multislot value) (slot CF (type FLOAT) (range -1.0 +1.0))) В качестве примеров фактов можно привести следующее:

(OAV (object organism) (attribute stain) (value gramneg) (oav (object organism) (attribute morphology) (value rod) (CF 0.7)) (OAV (object patient) (attribute is a) (valuecompromisedhost) (CF 0.8)) Для того чтобы факты OAV функционировали должным образом, в программу на языке CLIPS необходимо внести ещё одну модификацию. Система MYCIN позволяет осуществить логический вывод одних и тех же троек OAV с помощью отдельных правил. Затем эти тройки OAV комбинируются для получения единственной тройки OAV, в которой комбинируются коэффициенты достоверности исходных троек OAV. Применяемая в настоящее время конструкция deftemplate с именем OAV позволяет вносить в список фактов две идентичные тройки OAV только в том случае, если в них имеются различные коэффициенты достоверности (поскольку система CLIPS в обычных условиях не позволяет вносить в список фактов два дублирующихся факта). Для того чтобы обеспечить возможность внесения в список фактов идентичных троек OAV, имеющих одинаковые коэффициенты достоверности, можно использовать команду set-fact-duplication для отмены применяемого в системе CLIPS принципа работы, согласно которому предотвращается внесение дублирующихся фактов в список фактов. Указанный принцип действия отменяется с помощью команды, имеющей следующий синтаксис: (set-fact-duplication TRUE) Аналогичным образом, команда, имеющая следующую форму, исключает возможность внесения в список фактов дублирующихся фактов:

(set-fact-duplication FALSE) Как уже было сказано, в системе MYCIN две идентичные тройки OAV комбинируются в одну тройку OAV, имеющую комбинированное значение коэффициента достоверности. Для вычисления нового коэффициента достоверности в системе MYCIN используется следующая s-норма, если оба коэффициента достоверности двух фактов (обозначенные как СF1 и CF2) больше или равны нулю:

New Certainty = (CF1 + CF2) – (CF1 * CF2) Например, предположим, что в списке фактов имеются следующие факты:

(OAV (object organism) (attribute morphology) (oav (object organism) (attribute morphology) Допустим, что CF1 обозначает коэффициент достоверности первого факта, равный 0.7, a CF2 – коэффициент достоверности второго факта, равный 0.5; в таком случае новый коэффициент достоверности для комбинации этих двух фактов вычисляется таким образом:

New Certainty = (0.7 + 0.5) – (0.7 * 0.5) = 1.2 – 0.35 = 0.85, а новый факт, заменяющий два первоначальных факта, принимает следующий вид:

(OAV (object organism) (attribute morphology) (value rod) (CF 0.85)) Как уже было сказано, система CLIPS не обрабатывает автоматически коэффициенты достоверности, относящиеся к фактам. Из этого следует, что CLIPS также не комбинирует автоматически две тройки OAV, полученные с помощью разных правил. Но комбинирование троек OAV можно легко обеспечить с помощью правила, которое осуществляет поиск в списке фактов идентичных троек OAV, подлежащих комбинированию. Ниже показано правило и описан метод, которые демонстрируют, как осуществляются указанные действия применительно к таким попарно обрабатываемым тройкам OAV, в которых коэффициенты достоверности больше или равны нулю.

(defmethod OAV::combine-certainties ((?С1 NUMBER (> ?С1 0))(?С2 NUMBER (> ?С2 0))) (- (+ ?С1 ?С2)(* ?С1 ?С2))) (defrule OAV::combine-certainties (declare (auto-focus TRUE)) ?factl (min ?C1 ?C2 ?C3) 0.2)) (bind ?C4 (* (min ?C1 ?C2 ?C3) 0.6)) (assert (OAV (object organism) (attribute identity) (value pseudomonas) 6.4. Примеры экспертных систем, написанных на языке CLIPS У каждого специалиста, занимающегося диагностикой и устранением неисправностей принтеров, накоплен уникальный опыт, но он не является исчерпывающим. Возникает необходимость объединения подобного опыта для качественного улучшения диагностирования и устранения неисправностей принтеров. В Приложении А приведён код экспертной системы диагностики неисправностей принтеров. Используемый язык для создания внешнего интерфейса – Python. Разработанная экспертная система позволяет объединить различные алгоритмы диагностирования принтеров. Данную экспертную систему могут использовать мастерские, занимающиеся ремонтом принтеров. Система позволит специалистам ускорить процесс поиска неисправности устройства. Содержащиеся в экспертной системе знания помогут начинающим специалистам получить опыт в диагностике и устранении неисправностей принтеров.

В Приложении Б приведён код экспертной системы, которая помогает пользователю с выбором вакансии. Пользователю предлагается заполнить анкету – ему задаются вопросы, ответы на которые система посылает в виде сообщений объекту, представляющего пользователя.

После опроса в системе накапливаются знания об объекте-пользователе, по которым определяется список подходящих ему вакансий.

В итоге пользователю выдаётся результат в виде списка вакансий, на которые он может быть устроен, либо отказ в свободной вакансии. Для создания внешнего интерфейса используются языки HTML, CSS, PHP.

В режиме командной строки вычислите значения выражений:

min (max (43, 62), min (25,52)).

3. Создайте функцию для вычисления площади треугольника по длинам его сторон, S = p ( p a) ( p b) ( p c) (использовать отдельную функцию для вычисления полупериметра).

4. Напишите программу CLIPS, которая складывает два двоичных числа без использования каких-либо арифметических функций.

Используйте для представления двоичных чисел следующую конструкцию deftemplate.

5. Напишите программу CLIPS, которая запрашивает у пользователя значения цветов, а затем выводит список всех государств, флаги которых содержат все указанные цвета.

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

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

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

9. Напишите программу, позволяющую определить цифровые значения букв, после подстановки которых следующая задача решается правильно. Каждой из букв Н, О, С, U, S, Р, R, Е и Т соответствует уникальная цифра от 0 до 9.

10. Напишите программу, позволяющую определить простые множители числа. Например, простыми множителями числа 15 являются 3 и 5.

11. Напишите программу для преобразования сообщения, заданного в виде азбуки Морзе, в эквивалентный этому сообщению ряд знаков алфавита.

12. Напишите программу для ведения игры Жизнь.

13. Пусть множество Е = {1, 2, …, 100} определяет возраст человека. Подмножество А «Молодой» можно задать функцией принадлежности:

Напишите программу, которая по возрасту человека определяет, к какой категории он относится:

молодой среднего возраста 14. Напишите программу, определяющую является ли число n (номер варианта) простым.

15. Постройте генеалогическое дерево своей семьи для трёх поколений. Определить следующие отношения: мать, брат, сестра, дедушка, бабушка, тёща, шурин (брат жены), свояченица (сестра жены), свояк (муж свояченицы), свёкор (отец мужа), золовка (сестра мужа), деверь (брат мужа), сноха (жена сына для его матери), невестка (жена сына для его отца).

16. Предположим, что дана шахматная доска размерами N N, где N – целое число. Напишите программу, которая расставляет N ферзей на шахматной доске таким образом, что ни один ферзь не может напасть на другого.

17. Напишите конструкцию deffunction, которая определяет все простые числа от 1 до указанного целого числа и возвращает эти простые числа в виде многозначного значения.

18. Напишите конструкцию deffunction, которая определяет количество вхождений одной строки в другой строке.

19. Напишите конструкцию deffunction, которая построчно сравнивает два файла и выводит информацию об обнаруженных различиях в файл, указанный логическим именем.

20. Напишите конструкцию deffunction, которая принимает от нуля и больше параметров и возвращает многозначное значение, содержащее значения параметров в обратном порядке.

21. Напишите конструкцию deffunction, в которой не используется рекурсия для вычисления факториала целого числа N.

22. Напишите конструкцию deffunction, которая преобразовывает двоичную строку, состоящую из нулей и единиц, в десятичное число.

23. Без использования функций if или switch напишите ряд методов, предназначенных для преобразования данных, представленных с помощью таких единиц, как дюймы (inches), футы (feet) и ярды (yards).

24. Разработайте экспертную систему для выбора университета, факультета и специальности в соответствии с интересами абитуриента.

25. Разработайте экспертную систему, используя принципы объектно-ориентированного программирования.

1. Адрес языка CLIPS в Интернете: http://www.ghg.net/clips/ CLIPS.html.

2. Базы данных. Интеллектуальная обработка информации / В.В. Корнеев [и др.]. – М. : Нолидж, 2000.

3. Вахтин, А.А. Лабораторный практикум по программированию на языке CLIPS для курса «Представление знаний в информационных системах» : учебно-методическое пособие для вузов / А.А. Вахтин, В.В. Гришина. – Издательско-полиграфический центр ВГУ, 2010. – 95 с.

4. Джарантино, Дж. Экспертные системы: принципы разработки и программирования / Дж. Джарантино, Г. Райли. – 4-е изд. ; пер. с англ. – М. : Изд. дом «Вильямc», 2007. – 1152 с.

5. Джексон, П. Введение в экспертные системы / П. Джексон ;

пер. с англ. – М. : Изд. дом «Вильямc», 2001. – 622 с.

6. Люгер, Дж. Искусственный интеллект: стратегии и методы решения сложных проблем / Дж. Люгер, С. Рассел, П. Норвиг. – 4-е изд. ; пер. с англ. – М. : Изд. дом «Вильямc», 2003. – 864 с.

7. Рассел, С. Искусственный интеллект: современный подход / C. Рассел, П. Норвиг. – 2-е изд. ; пер. с англ. – М. : Изд. дом «Вильямc», 2006. – 1408 с.

8. Частиков, А.П. Разработка экспертных систем. Среда CLIPS / А.П. Частиков, Т.А. Гаврилов, Д.Л. Белов. – СПб. : БХВ-Петербург, 2003. – 608 с.

ЗАКЛЮЧЕНИЕ

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

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

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

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

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

ПРИЛОЖЕНИЯ

Файл kurs.clp ;;;;;;;;;;;;;;;;;;;;;

;Определение классов;

;;;;;;;;;;;;;;;;;;;;;

;;Определение абстрактного класса принтера;;

(defclass PRINTER "Printer defclass"

(role abstract)

(slot power (create-accessor read-write) (slot podkl_el (create-accessor read-write) (slot shnur (create-accessor read-write) (slot napr (create-accessor read-write) (slot print_doc (create-accessor read-write) ;;Определение конкретного класса лазерного принтера;;

(defclass PRINTER_LASER "Laser printer defclass" (pattern-match reactive) (slot zastr_cart (create-accessor read-write) (slot zastr_vyhod (create-accessor read-write) (slot zaderzh (create-accessor read-write) (create-accessor read-write) (slot kachestvo (create-accessor read-write) (slot install_skrip (create-accessor read-write) (slot opred_cart (create-accessor read-write) (slot opred_bum (create-accessor read-write) (slot zahvat_bum (create-accessor read-write) ;;Определение конкретного класса струйного принтера;;

(defclass PRINTER_INK "Inkjet printer defclass" (is-a PRINTER) (role concrete) (pattern-match reactive) (slot otkl_val (type SYMBOL) (create-accessor read-write) (storage local) (default none)) (slot skrip (type SYMBOL) (create-accessor read-write) (storage local) (default none)) (slot bum_perekos (type SYMBOL) (create-accessor read-write) (storage local) (default none)) (slot nesk_listov (type SYMBOL) (create-accessor read-write) (storage local) (default none)) (slot zastr_raboch (type SYMBOL) (create-accessor read-write) (storage local) (default none)) (slot kachestvo (type SYMBOL) (create-accessor read-write) (storage local) (default none)) (slot caret_upor (type SYMBOL) (create-accessor read-write) (storage local) (default none)) (slot coord_lenta (type SYMBOL) (create-accessor read-write) (storage local) (default none)) (slot opred_cart (type SYMBOL) (create-accessor read-write) (storage local) (default none)) (slot pod_bum (create-accessor read-write) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Определение шаблона, описывающего текущее состояние системы;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(deftemplate UI-state (slot cur_quest (type STRING)) (multislot ans (type STRING)) (multislot sys_ans (type SYMBOL)) (slot user_eval (type STRING)) (slot prev_q (type SYMBOL) (default no)) (slot prev_ans (type STRING)) (slot state (type SYMBOL))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Определение функции, сообщающей системе о нажатии кнопки перехода к предыдущему вопросу;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(deffunction prev_q_yes (?f) (modify ?f (prev_q yes))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Определение правил вывода вопросов системы;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule start (initial-fact) (assert (UI-state (cur_quest "Добро пожаловать в экспертную систему диагностики неисправности принтера!

Для продолжения нажмите кнопку \"Далее\".") (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Общие вопросы для диагностики неисправности принтера;

(defrule q_type_printer (modify ?F (cur_quest "Укажите тип принтера:") (sys_ans PRINTER_LASER PRINTER_INK) (user_eval "make-instance [cur_printer] of ") (halt)) (defrule q_type_printer_prev (modify ?F (cur_quest "Добро пожаловать в экспертную систему диагностики неисправности принтера! Для продолжения нажмите кнопку \"Далее\".") (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_power (object (is-a ?x) (name [cur_printer]) (power none)) (if (eq ?pr no) (modify ?F (cur_quest "Включается ли принтер?") (user_eval "send [cur_printer] put-power ") (if (eq ?x PRINTER_LASER) (modify ?F (cur_quest "Укажите тип принтера:") (sys_ans PRINTER_LASER PRINTER_INK) (user_eval "make-instance [cur_printer] of ") (if (eq ?x PRINTER_INK) (modify ?F (cur_quest "Укажите тип принтера:") (sys_ans PRINTER_LASER PRINTER_INK) (user_eval "make-instance [cur_printer] of ") (send [cur_printer] delete)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_podkl_el (object (name [cur_printer]) (power no) (podkl_el none)) (if (eq ?pr no) (modify ?F (cur_quest "Подключён ли принтер к электрической сети?") (modify ?F (cur_quest "Включается ли принтер?") (user_eval "send [cur_printer] put-power ") (send [cur_printer] put-power none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_shnur (object (name [cur_printer]) (power no) (podkl_el yes) (shnur none)) (if (eq ?pr no) (modify ?F (cur_quest "Исправен ли шнур питания принтера?") (user_eval "send [cur_printer] put-shnur ") (modify ?F (cur_quest "Подключён ли принтер к электрической сети?") (send [cur_printer] put-podkl_el none)) (halt)) (defrule r_podkl_el (object (name [cur_printer]) (power no) (podkl_el no)) (if (eq ?pr no) (modify ?F (cur_quest "Для устранения неисправности система предлагает Вам подключить принтер к электросети.

Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Подключён ли принтер к электрической сети?") (send [cur_printer] put-podkl_el none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_napr (object (name [cur_printer]) (power no) (podkl_el yes) (shnur yes) (napr none)) (if (eq ?pr no) (modify ?F (cur_quest "Есть ли напряжение в электрической сети?") (user_eval "send [cur_printer] put-napr ") (modify ?F (cur_quest "Исправен ли шнур питания принтера?") (user_eval "send [cur_printer] put-shnur ") (send [cur_printer] put-shnur none)) (halt)) (defrule r_shnur (object (name [cur_printer]) (power no) (podkl_el yes) (shnur no)) (if (eq ?pr no) (modify ?F (cur_quest "Для устранения неисправности система предлагает заменить сетевой шнур. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Исправен ли шнур питания принтера?") (user_eval "send [cur_printer] put-shnur ") (send [cur_printer] put-shnur none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule r_napr_yes (object (name [cur_printer]) (power no) (podkl_el yes) (shnur yes) (napr yes)) (if (eq ?pr no) (modify ?F (cur_quest "Неисправен блок питания принтера. Для устранения неисправности система предлагает заменить его. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Есть ли напряжение в электрической сети?") (user_eval "send [cur_printer] put-napr ") (send [cur_printer] put-napr none)) (halt)) (defrule r_napr_no (object (name [cur_printer]) (power no) (podkl_el yes) (shnur yes) (napr no)) (if (eq ?pr no) (modify ?F (cur_quest "Для устранения неисправности система предлагает подать напряжение в электрическую сеть. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Есть ли напряжение в электрической сети?") (user_eval "send [cur_printer] put-napr ") (send [cur_printer] put-napr none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

(defrule q_print_doc (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc none)) (if (eq ?pr no) (modify ?F (cur_quest "Выполняется ли печать документа?") (modify ?F (cur_quest "Включается ли принтер?") (user_eval "send [cur_printer] put-power ") (send [cur_printer] put-power none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_zastr_cart (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart none)) (if (eq ?pr no) (modify ?F (cur_quest "После прохождения картриджа листы бумаги застревают?") (modify ?F (cur_quest "Выполняется ли печать документа?") (send [cur_printer] put-print_doc none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_zastr_vyhod (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod none)) (if (eq ?pr no) (modify ?F (cur_quest "Застревают ли листы бумаги на выходе из принтера?") (modify ?F (cur_quest "После прохождения картриджа листы бумаги застревают?") (user_eval "send [cur_printer] putzastr_cart ") (send [cur_printer] put-zastr_cart none)) (halt)) (defrule r_zastr_cart (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart yes)) (if (eq ?pr no) (modify ?F (cur_quest "Дефект вызван тем, что загрязнились резиновые ремни подачи бумаги в фьюзер. Для устранения неисправности система предлагает снять ремни с приводных роликов и очистить. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "После прохождения картриджа листы бумаги застревают?") (send [cur_printer] put-zastr_cart none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_zaderzh (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh none)) (if (eq ?pr no) (modify ?F (cur_quest "Принтер печатает с большой задержкой?") (modify ?F (cur_quest "Застревают ли листы бумаги на выходе из принтера?") (send [cur_printer] put-zastr_vyhod none)) (halt)) (defrule r_zastr_vyhod (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod yes)) (if (eq ?pr no) (modify ?F (cur_quest "Причина подобного дефекта вызвана загрязнением или ослаблением прижима роликов выхода бумаги. Для устранения неисправности система предлагает очистить резиновую поверхность ролика и проверить пружины на ребристых пластмассовых роликах. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Застревают ли листы бумаги на выходе из принтера?") (user_eval "send [cur_printer] putzastr_vyhod ") (send [cur_printer] put-zastr_vyhod none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_shum (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum none)) (if (eq ?pr no) (modify ?F (cur_quest "Слышен ли повышенный шум при работе принтера?") (user_eval "send [cur_printer] put-shum ") (modify ?F (cur_quest "Принтер печатает с большой задержкой?") (send [cur_printer] put-zaderzh none)) (halt)) (defrule r_zaderzh (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh yes)) (if (eq ?pr no) (modify ?F (cur_quest "Подобный дефект вызван отказом интерфейсной платы. Для устранения неисправности система предлагает заменить её. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Принтер печатает с большой задержкой?") (send [cur_printer] put-zaderzh none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_kachestvo_laser (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo none)) (if (eq ?pr no) (modify ?F (cur_quest "Укажите качество отпечатка:") (ans "бледное изображение" "на изображении вертикальные белые полосы" "неравномерная контрастность изображения" "на обратной стороне отпечатка видны посторонние изображения" "не закрепляется часть изображения" "нормальное" "вариант отсутствует в списке") (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv) (modify ?F (cur_quest "Слышен ли повышенный шум при работе принтера?") (user_eval "send [cur_printer] put-shum ") (send [cur_printer] put-shum none)) (halt)) (defrule r_shum (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum yes)) (if (eq ?pr no) (modify ?F (cur_quest "Дефект вызван тем, что загрязнились шестерни главного привода принтера. Для устранения неисправности система предлагает снять редуктор, очистить все шестерни от пыли и тонера, а затем смазать их. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Слышен ли повышенный шум при работе принтера?") (user_eval "send [cur_printer] put-shum ") (send [cur_printer] put-shum none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule r_bled_laser (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo bled)) (if (eq ?pr no) (modify ?F (cur_quest "Бледная печать появляется в результате выхода из строя магнитного вала картриджа.

Для устранения неисправности система предлагает заменить магнитный вал. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Укажите качество отпечатка:") (ans "бледное изображение" "на изображении вертикальные белые полосы" "неравномерная контрастность изображения" "на обратной стороне отпечатка видны посторонние изображения" "не закрепляется часть изображения" "нормальное" "вариант отсутствует в списке") (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv) (prev_ans "бледное изображение") (send [cur_printer] put-kachestvo none)) (halt)) (defrule r_vert_pol_laser (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo vert_pol)) (if (eq ?pr no) (modify ?F (cur_quest "Причина дефекта связана с загрязнением оптической системы лазер-сканера. Для устранения неисправности система предлагает очистить её. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Укажите качество отпечатка:") (ans "бледное изображение" "на изображении вертикальные белые полосы" "неравномерная контрастность изображения" "на обратной стороне отпечатка видны посторонние изображения" "не закрепляется часть изображения" "нормальное" "вариант отсутствует в списке") (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv) (prev_ans "на изображении вертикальные белые полосы") (send [cur_printer] put-kachestvo none)) (halt)) (defrule r_contr_laser (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo contr)) (if (eq ?pr no) (modify ?F (cur_quest "Подобный дефект вызван тем, что сильно загрязнился вал переноса изображения. Для устранения неисправности система предлагает очистить вал от пыли и тонера. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Укажите качество отпечатка:") (ans "бледное изображение" "на изображении вертикальные белые полосы" "неравномерная контрастность изображения" "на обратной стороне отпечатка видны посторонние изображения" "не закрепляется часть изображения" "нормальное" "вариант отсутствует в списке") (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv) изображения") (send [cur_printer] put-kachestvo none)) (halt)) (defrule r_obrat_laser (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo obrat)) (if (eq ?pr no) (modify ?F (cur_quest "Дефект вызван износом краёв силиконового вала. К нему прилипает тонер, который переносится на обратную сторону бумаги. Для устранения неисправности система предлагает заменить силиконовый вал.

Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Укажите качество отпечатка:") (ans "бледное изображение" "на изображении вертикальные белые полосы" "неравномерная контрастность изображения" "на обратной стороне отпечатка видны посторонние изображения" "не закрепляется часть изображения" "нормальное" "вариант отсутствует в списке") (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv) (prev_ans "на обратной стороне отпечатка видны посторонние изображения") (send [cur_printer] put-kachestvo none)) (halt)) (defrule r_zakrep_laser (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo zakrep)) (if (eq ?pr no) (modify ?F (cur_quest "Подобный дефект возникает изза разрыва термоплёнки. Причин может быть много: попадание вместе с бумагой скрепок, высыхание или отсутствие смазки в месте контакта термоплёнки и нагревательного элемента, неравномерный прижим роллера к резиновому валу, брак самой термоплёнки, повреждение термопленки острыми предметами при попытке извлечения застрявшей бумаги и т.д. Для устранения неисправности система предлагает заменить термоплёнку. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Укажите качество отпечатка:") (ans "бледное изображение" "на изображении вертикальные белые полосы" "неравномерная контрастность изображения" "на обратной стороне отпечатка видны посторонние изображения" "не закрепляется часть изображения" "нормальное" "вариант отсутствует в списке") (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv) (prev_ans "не закрепляется часть изображения") (send [cur_printer] put-kachestvo none)) (halt)) (defrule r_norm_laser (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo norm)) (if (eq ?pr no) (modify ?F (cur_quest "Данная система не выявила неисправность в принтере.") (modify ?F (cur_quest "Укажите качество отпечатка:") (ans "бледное изображение" "на изображении вертикальные белые полосы" "неравномерная контрастность изображения" "на обратной стороне отпечатка видны посторонние изображения" "не закрепляется часть изображения" "нормальное" "вариант отсутствует в списке") (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv) (send [cur_printer] put-kachestvo none)) (halt)) (defrule r_drugoi_otv_laser (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod no) (zaderzh no) (shum no) (kachestvo drugoi_otv)) (if (eq ?pr no) (modify ?F (cur_quest "Данная система не может помочь.") (modify ?F (cur_quest "Укажите качество отпечатка:") (ans "бледное изображение" "на изображении вертикальные белые полосы" "неравномерная контрастность изображения" "на обратной стороне отпечатка видны посторонние изображения" "не закрепляется часть изображения" "нормальное" "вариант отсутствует в списке") (sys_ans bled vert_pol contr obrat zakrep norm drugoi_otv) (prev_ans "вариант отсутствует в списке") (send [cur_printer] put-kachestvo none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_install_skrip (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc no) (install_skrip none)) (if (eq ?pr no) (modify ?F (cur_quest "При инсталляции принтера слышен скрип слева?") (user_eval "send [cur_printer] putinstall_skrip ") (modify ?F (cur_quest "Выполняется ли печать документа?") (send [cur_printer] put-print_doc none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_opred_cart_laser (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc no) (install_skrip no) (opred_cart none)) (if (eq ?pr no) (modify ?F (cur_quest "Принтер определяет наличие картриджа?") (modify ?F (cur_quest "При инсталляции принтера слышен скрип слева?") (user_eval "send [cur_printer] putinstall_skrip ") (send [cur_printer] put-install_skrip none)) (halt)) (defrule r_install_skrip (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc no) (install_skrip yes)) (if (eq ?pr no) (modify ?F (cur_quest "Лопнула шестерня основного привода. Для устранения неисправности система предлагает заменить шестерню, удалить старую смазку из привода и нанести новую. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "При инсталляции принтера слышен скрип слева?") (user_eval "send [cur_printer] putinstall_skrip ") (send [cur_printer] put-install_skrip none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_opred_bum_laser (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc no) (install_skrip no) (opred_cart yes) (opred_bum none)) (if (eq ?pr no) (modify ?F (cur_quest "Принтер определяет наличие бумаги в лотке?") (modify ?F (cur_quest "Принтер определяет наличие картриджа?") (send [cur_printer] put-opred_cart none)) (halt)) (defrule r_opred_cart_laser (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc no) (install_skrip no) (opred_cart no)) (if (eq ?pr no) (modify ?F (cur_quest "После закрытия верхней крышки принтера к картриджу с помощью тяги подводится приводная шестерня. В её центре есть подпружиненный штифт-контакт, который подключает к общему проводу вал фоторецептора.

При попадании на штифт тонера цепь размыкается. Для устранения неисправности система предлагает отвернуть винт планки прижима штифта и очистить направляющее отверстие, в котором ходит штифт контакт. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Принтер определяет наличие картриджа?") (send [cur_printer] put-opred_cart none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_zahvat_bum (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc no) (install_skrip no) (opred_cart yes) (opred_bum yes) (zahvat_bum none)) (if (eq ?pr no) (modify ?F (cur_quest "Принтер захватывает бумагу из приёмного лотка?") (modify ?F (cur_quest "Принтер определяет наличие бумаги в лотке?") (user_eval "send [cur_printer] putopred_bum ") (send [cur_printer] put-opred_bum none)) (halt)) (defrule r_opred_bum_laser (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc no) (install_skrip no) (opred_cart yes) (opred_bum no)) (if (eq ?pr no) (modify ?F (cur_quest "Засорился оптический датчик или застрял его активатор. Для устранения неисправности система предлагает очистить оптический датчик от загрязнений и проверить возврат в исходное положение его активатора. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Принтер определяет наличие бумаги в лотке?") (send [cur_printer] put-opred_bum none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule r_zahvat_bum_yes (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc no) (install_skrip no) (opred_cart yes) (opred_bum yes) (zahvat_bum yes)) (if (eq ?pr no) (modify ?F (cur_quest "Данная система не может помочь.") (modify ?F (cur_quest "Принтер захватывает бумагу из приёмного лотка?") (send [cur_printer] put-zahvat_bum none)) (halt)) (defrule r_zahvat_bum_no (object (is-a PRINTER_LASER) (name [cur_printer]) (power yes) (print_doc no) (install_skrip no) (opred_cart yes) (opred_bum yes) (zahvat_bum no)) (if (eq ?pr no) (modify ?F (cur_quest "Неисправен или сильно загрязнён подающий ролик принтера. Для устранения неисправности система предлагает произвести восстановление свойств ролика жидкостью для профилактики резиновых поверхностей или заменить его. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Принтер захватывает бумагу из приёмного лотка?") (send [cur_printer] put-zahvat_bum none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Вопросы для диагностики неисправности струйного принтера;;;;;;;

(defrule q_otkl_val (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val none)) (if (eq ?pr no) (modify ?F (cur_quest "Принтер делает попытку провернуть основной вал и выключается?") (modify ?F (cur_quest "Включается ли принтер?") (user_eval "send [cur_printer] put-power ") (send [cur_printer] put-power none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_print_doc_ink (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc none)) (if (eq ?pr no) (modify ?F (cur_quest "Выполняется ли печать документа?") (user_eval "send [cur_printer] putprint_doc ") (modify ?F (cur_quest "Принтер делает попытку провернуть основной вал и выключается?") (user_eval "send [cur_printer] putotkl_val ") (send [cur_printer] put-otkl_val none)) (halt)) (defrule r_otkl_val (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val yes)) (if (eq ?pr no) (modify ?F (cur_quest "Этот дефект связан с перегрузкой главного привода. Для устранения неисправности система предлагает вначале осмотреть визуально состояние элементов механизма подачи и транспорта бумаги, затем провернуть шестерню двигателя. Если шестерня вращается туго, разобрать механизм и проверить втулки вращения валов. Обычно этой процедуры достаточно для восстановления работоспособности принтера. Но если механизм исправен, а принтер отключается при отсоединённом двигателе, то неисправен сам двигатель. В этом случае его необходимо заменить. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Принтер делает попытку провернуть основной вал и выключается?") (user_eval "send [cur_printer] putotkl_val ") (send [cur_printer] put-otkl_val none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_skrip (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc yes) (skrip none)) (if (eq ?pr no) (modify ?F (cur_quest "Слышен ли скрип при движении каретки?") (user_eval "send [cur_printer] put-skrip ") (modify ?F (cur_quest "Выполняется ли печать документа?") (send [cur_printer] put-print_doc none)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_bum_perekos_ink (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc yes) (skrip no) (bum_perekos none)) (if (eq ?pr no) (modify ?F (cur_quest "Лист бумаги подаётся с перекосом?") (modify ?F (cur_quest "Слышен ли скрип при движении каретки?") (user_eval "send [cur_printer] put-skrip ") (send [cur_printer] put-skrip none)) (halt)) (defrule r_skrip (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc yes) (skrip yes)) (if (eq ?pr no) (modify ?F (cur_quest "Высохла смазка на направляющей оси каретки. Для устранения неисправности система предлагает нанести на направляющую ось каретки смазку, предназначенную для пластмассовых деталей. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Слышен ли скрип при движении каретки?") (user_eval "send [cur_printer] put-skrip ") (send [cur_printer] put-skrip none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_nesk_listov (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc yes) (skrip no) (bum_perekos no) (nesk_listov none)) (if (eq ?pr no) (modify ?F (cur_quest "Принтер одновременно захватывает несколько листов?") (modify ?F (cur_quest "Лист бумаги подаётся с перекосом?") (send [cur_printer] put-bum_perekos)) (halt)) (defrule r_bum_perekos_ink (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc yes) (skrip no) (bum_perekos yes)) (if (eq ?pr no) (modify ?F (cur_quest "Для устранения неисправности система предлагает разобрать весь механизм и очистить все валы и поверхности, по которым движется бумага. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Лист бумаги подаётся с перекосом?") (user_eval "send [cur_printer] putbum_perekos ") (send [cur_printer] put-bum_perekos)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_zastr_raboch (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc yes) (skrip no) (bum_perekos no) (nesk_listov no) (zastr_raboch none)) (if (eq ?pr no) (modify ?F (cur_quest "Застревает ли лист бумаги в рабочей полости принтера?") (modify ?F (cur_quest "Принтер одновременно захватывает несколько листов?") (send [cur_printer] put-nesk_listov)) (defrule r_nesk_listov (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc yes) (skrip no) (bum_perekos no) (nesk_listov yes)) (if (eq ?pr no) (modify ?F (cur_quest "Загрязнилась или стерлась тормозная площадка. Для устранения неисправности система предлагает очистить её или заменить. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Принтер одновременно захватывает несколько листов?") (send [cur_printer] put-nesk_listov)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_kachestvo_ink (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc yes) (skrip no) (bum_perekos no) (nesk_listov no) (zastr_raboch no) (kachestvo none)) (if (eq ?pr no) (modify ?F (cur_quest "Укажите качество отпечатка:") (ans "бледное изображение" "изображение смазано" "на изображении дополнительные горизонтальные полосы" "на изображении \"наезжает\" строка на строку" "нормальное" "вариант отсутствует в списке") (sys_ans bled smaz horiz_pol str_na_str norm drugoi_otv) (user_eval "send [cur_printer] putkachestvo ") (modify ?F (cur_quest "Застревает ли лист бумаги в рабочей полости принтера?") (user_eval "send [cur_printer] putzastr_raboch ") (send [cur_printer] put-zastr_raboch)) (halt)) (defrule r_zastr_raboch (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc yes) (skrip no) (bum_perekos no) (nesk_listov no) (zastr_raboch yes)) (if (eq ?pr no) (modify ?F (cur_quest "Подобная неисправность возникает из-за некорректного вытаскивания замятой бумаги.

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

Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Застревает ли лист бумаги в рабочей полости принтера?") (user_eval "send [cur_printer] putzastr_raboch ") (send [cur_printer] put-zastr_raboch)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule r_bled_ink (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc yes) (skrip no) (bum_perekos no) (nesk_listov no) (zastr_raboch no) (kachestvo bled)) (if (eq ?pr no) (modify ?F (cur_quest "Картридж израсходован. Для устранения неисправности система предлагает заменить его. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Укажите качество отпечатка:") (ans "бледное изображение" "изображение смазано" "на изображении дополнительные горизонтальные полосы" "на изображении \"наезжает\" строка на строку" "нормальное" "вариант отсутствует в списке") (sys_ans bled smaz horiz_pol str_na_str norm drugoi_otv) (prev_ans "бледное изображение") (send [cur_printer] put-kachestvo)) (halt)) (defrule r_smaz_ink (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc yes) (skrip no) (bum_perekos no) (nesk_listov no) (zastr_raboch no) (kachestvo smaz)) (if (eq ?pr no) (modify ?F (cur_quest "Сильно загрязнились резиновые ножи очистки. Для устранения неисправности система предлагает промыть их. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Укажите качество отпечатка:") (ans "бледное изображение" "изображение смазано" "на изображении дополнительные горизонтальные полосы" "на изображении \"наезжает\" строка на строку" "нормальное" "вариант отсутствует в списке") (sys_ans bled smaz horiz_pol str_na_str norm drugoi_otv) (prev_ans "изображение смазано") (send [cur_printer] put-kachestvo)) (halt)) (defrule r_horiz_pol_ink (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc yes) (skrip no) (bum_perekos no) (nesk_listov no) (zastr_raboch no) (kachestvo horiz_pol)) (if (eq ?pr no) (modify ?F (cur_quest "Для устранения неисправности система предлагает снять картриджи и проверить, есть ли на дюзах признаки наличия чернил. Если они есть, необходимо проверить и очистить ракеля очистки. Также влажным материалом очистить поверхность дюз картриджей. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Укажите качество отпечатка:") (ans "бледное изображение" "изображение смазано" "на изображении дополнительные горизонтальные полосы" "на изображении \"наезжает\" строка на строку" "нормальное" "вариант отсутствует в списке") (sys_ans bled smaz horiz_pol str_na_str norm drugoi_otv) (prev_ans "на изображении дополнительные горизонтальные полосы") (send [cur_printer] put-kachestvo)) (halt)) (defrule r_str_na_str_ink (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc yes) (skrip no) (bum_perekos no) (nesk_listov no) (zastr_raboch no) (kachestvo str_na_str)) (if (eq ?pr no) (modify ?F (cur_quest "Загрязнился основной вал, поэтому нет хорошего сцепления с листом бумаги. Для устранения неисправности система предлагает очистить основной вал. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Укажите качество отпечатка:") (ans "бледное изображение" "изображение смазано" "на изображении дополнительные горизонтальные полосы" "на изображении \"наезжает\" строка на строку" "нормальное" "вариант отсутствует в списке") (sys_ans bled smaz horiz_pol str_na_str norm drugoi_otv) (user_eval "send [cur_printer] putkachestvo ") (prev_ans "на изображении \"наезжает\" строка на строку") (send [cur_printer] put-kachestvo)) (halt)) (defrule r_norm_ink (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc yes) (skrip no) (bum_perekos no) (nesk_listov no) (zastr_raboch no) (kachestvo norm)) (if (eq ?pr no) (modify ?F (cur_quest "Данная система не выявила неисправность в принтере.") (modify ?F (cur_quest "Укажите качество отпечатка:") (ans "бледное изображение" "изображение смазано" "на изображении дополнительные горизонтальные полосы" "на изображении \"наезжает\" строка на строку" "нормальное" "вариант отсутствует в списке") (sys_ans bled smaz horiz_pol str_na_str norm drugoi_otv) (send [cur_printer] put-kachestvo)) (halt)) (defrule r_drugoi_otv_ink (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc yes) (skrip no) (bum_perekos no) (nesk_listov no) (zastr_raboch no) (kachestvo drugoi_otv)) (if (eq ?pr no) (modify ?F (cur_quest "Данная система не может помочь.") (modify ?F (cur_quest "Укажите качество отпечатка:") (ans "бледное изображение" "изображение смазано" "на изображении дополнительные горизонтальные полосы" "на изображении \"наезжает\" строка на строку" "нормальное" "вариант отсутствует в списке") (sys_ans bled smaz horiz_pol str_na_str norm drugoi_otv) (prev_ans "вариант отсутствует в списке") (send [cur_printer] put-kachestvo)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_caret_upor (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc no) (caret_upor none)) (if (eq ?pr no) (modify ?F (cur_quest "После включения принтера каретка перемещается до упора в крайнее положение?") (modify ?F (cur_quest "Выполняется ли печать документа?") (user_eval "send [cur_printer] putprint_doc ") (send [cur_printer] put-print_doc)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule q_coord_lenta (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc no) (caret_upor yes) (coord_lenta none)) (if (eq ?pr no) (modify ?F (cur_quest "Координатная лента на месте?") (modify ?F (cur_quest "После включения принтера каретка перемещается до упора в крайнее положение?") (send [cur_printer] put-caret_upor)) (halt)) (defrule q_opred_cart_ink (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc no) (caret_upor no) (opred_cart none)) (if (eq ?pr no) (modify ?F (cur_quest "Принтер определяет наличие картриджей?") (user_eval "send [cur_printer] putopred_cart ") (modify ?F (cur_quest "После включения принтера каретка перемещается до упора в крайнее положение?") (user_eval "send [cur_printer] putcaret_upor ") (send [cur_printer] put-caret_upor)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule r_coord_lenta_yes (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc no) (caret_upor yes) (coord_lenta yes)) (if (eq ?pr no) (modify ?F (cur_quest "Загрязнился оптический датчик определения положения каретки. Для устранения неисправности система предлагает промыть оптический датчик спиртом. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Координатная лента на месте?") (send [cur_printer] put-coord_lenta)) (halt)) (defrule r_coord_lenta_no (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc no) (caret_upor yes) (coord_lenta no)) (if (eq ?pr no) (modify ?F (cur_quest "Для устранения неисправности система предлагает возвратить координатную ленту в нормальное положение. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Координатная лента на месте?") (send [cur_printer] put-coord_lenta)) (halt)) (defrule q_pod_bum (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc no) (caret_upor no) (opred_cart yes) (pod_bum none)) (if (eq ?pr no) (modify ?F (cur_quest "Осуществляется ли подача бумаги?") (modify ?F (cur_quest "Принтер определяет наличие картриджей?") (user_eval "send [cur_printer] putopred_cart ") (send [cur_printer] put-opred_cart)) (halt)) (defrule r_opred_cart_ink (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc no) (caret_upor no) (opred_cart no)) (if (eq ?pr no) (modify ?F (cur_quest "Для устранения неисправности система предлагает вначале убедиться, что картриджи действительно исправны и их контактные площадки чистые, затем вынуть их и очистить контактные группы в корзине каретки. Если это не помогает, то необходимо заменить плату электроники каретки. Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Принтер определяет наличие картриджей?") (send [cur_printer] put-opred_cart)) (halt)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule r_pod_bum_yes (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc no) (caret_upor no) (opred_cart yes) (pod_bum yes)) (if (eq ?pr no) (modify ?F (cur_quest "Данная система не может Вам помочь.") (modify ?F (cur_quest "Осуществляется ли подача бумаги?") (send [cur_printer] put-pod_bum)) (halt)) (defrule r_pod_bum_no (object (is-a PRINTER_INK) (name [cur_printer]) (power yes) (otkl_val no) (print_doc no) (caret_upor no) (opred_cart yes) (pod_bum no)) (if (eq ?pr no) (modify ?F (cur_quest "Для устранения неисправности система предлагает протереть ролик подачи бумаги тканью, смоченной жидкостью для восстановления резиновых роликов. Если это не помогает, необходимо заменить ролик.

Если не все проблемы устранены, попробуйте выполнить диагностику заново.") (modify ?F (cur_quest "Осуществляется ли подача бумаги?") (send [cur_printer] put-pod_bum)) (halt)) Файл kurs.py #!/usr/bin/python # -*- coding: utf-8 -*import sys import clips import wx import wx.lib.buttons import wx.html # Класс главного окна class MainFrame(wx.Frame):

def init(self):

################################## #Создание графического интерфейса# ################################## #Создание окна приложения wx.Frame.init(self, parent = None, id = -1, title = u'Диагностика неисправности принтера', size=(550, 450), style=wx.CAPTION | wx.SYSTEM_MENU | wx.CLIP_CHILDREN | wx.CLOSE_BOX) self.Center(wx.BOTH) self.SetIcon(wx.Icon(u'./img/printer.ico',wx.BITMAP_TYPE _ICO)) #Добавление поля для вывода приветствия, вопросов и рекомендаций self.questText = wx.html.HtmlWindow(id=-1, parent=self, pos=wx.Point(10, 16), style=wx.html.HW_SCROLLBAR_NEVER) #Добавление панели для размещения на ней вариантов ответов self.varPanel = wx.Panel(id=-1, parent=self, pos=wx.Point(42, 134), size=wx.Size(520, 214), style=wx.TAB_TRAVERSAL) #Добавление панели для размещения на ней кнопок управления self.btnPanel = wx.Panel(id=-1, parent=self, pos=wx.Point(30, 360), size=wx.Size(484, 88), style=wx.TAB_TRAVERSAL) #Добавление кнопки "Назад" на форму wx.lib.buttons.GenBitmapTextButton(bitmap=wx.Bitmap(u'./ img/back.png', wx.BITMAP_TYPE_PNG), label=u'Назад', parent=self.btnPanel, pos=wx.Point(21, 26), size=wx.Size(128, 30), style=0) self.backBtn.Bind(wx.EVT_BUTTON, self.handleEvent) #Добавление кнопки "Далее" на форму wx.lib.buttons.GenBitmapTextButton(bitmap=wx.Bitmap(u'./ img/next.png', wx.BITMAP_TYPE_PNG), label=u'Далее', parent=self.btnPanel, pos=wx.Point(336, 26), size=wx.Size(128, 30), style=0) self.nextBtn.Bind(wx.EVT_BUTTON, self.handleEvent) #Добавление кнопки "Заново" на форму wx.lib.buttons.GenBitmapTextButton(bitmap=wx.Bitmap(u'./ img/renew.png', wx.BITMAP_TYPE_PNG), label=u'Заново', parent=self.btnPanel, pos=wx.Point(179, 10), size=wx.Size(128, 30), style=0) self.renewBtn.Bind(wx.EVT_BUTTON, self.handleEvent) #Добавление кнопки "Выход" на форму wx.lib.buttons.GenBitmapTextButton(bitmap=wx.Bitmap(u'./ img/exit.png', wx.BITMAP_TYPE_PNG), label=u'Выход', parent=self.btnPanel, pos=wx.Point(178, 45), size=wx.Size(128, 30), style=0) self.exitBtn.Bind(wx.EVT_BUTTON, self.OnQuit) #Добавление разделительной линии self.sashWindow1 = wx.SashWindow(parent=self, pos=wx.Point(50, 130), size=wx.Size(450, 3), style=wx.CLIP_CHILDREN | wx.SW_3D) #Добавление разделительной линии self.sashWindow2 = wx.SashWindow(parent=self, pos=wx.Point(50, 360), size=wx.Size(450, 3), style=wx.CLIP_CHILDREN | wx.SW_3D) ################################## ################################## #Загрузка и запуск экспертной системы clips.Load("kurs.clp") clips.Reset() self.nextState() #Обновление графического интерфейса в соответствии с текущим состоянием экспертной системы def nextState(self):

factlist = clips.FactList() fState=factlist[1].Slots["state"] fPrevAns=factlist[1].Slots["prev_ans"] fAns=factlist[1].Slots["ans"] fCurQuest=factlist[1].Slots["cur_quest"] #Переопределение параметров кнопок, панелей и разделителей в соответствии с текущим состоянием экспертной системы self.sashWindow1.Hide() self.backBtn.Enable(False) self.nextBtn.Enable(True) self.renewBtn.Enable(False) elif fState == "diag":

self.questText.SetSize(wx.Size(530, 119)) self.sashWindow1.Show() self.backBtn.Enable(True) self.nextBtn.Enable(True) self.renewBtn.Enable(True) self.questText.SetSize(wx.Size(530, 300)) self.sashWindow1.Hide() self.backBtn.Enable(True) self.nextBtn.Enable(False) self.renewBtn.Enable(True) #Переопределение вариантов ответов self.varPanel.DestroyChildren() sizer = wx.BoxSizer(wx.VERTICAL) self.varPanel._buttons = [] r = wx.RadioButton(self.varPanel, -1, answer) self.varPanel._buttons.append(r) self.varPanel.SetSizer(sizer) self.varPanel.Fit() #Переопределение вопроса self.questText.SetPage("%s" % fCurQuest) #Обработка нажатий кнопок в форме def handleEvent(self, event):

factlist = clips.FactList() fState=factlist[1].Slots["state"] fUserEval=factlist[1].Slots["user_eval"] fSysAns=factlist[1].Slots["sys_ans"] fAns=factlist[1].Slots["ans"] #Обработка нажатия кнопоки "Далее" if event.GetEventObject().GetLabel() == u'Далее':

for chkAns in self.varPanel._buttons:

fSysAns[j])) #Обработка нажатия кнопоки "Заново" elif event.GetEventObject().GetLabel() == u'Заново':

#Обработка нажатия кнопоки "Назад" elif event.GetEventObject().GetLabel() == u'Назад':

clips.Eval("(prev_q_yes %s)" % (factlist[1].Index)) self.nextState() #Обработка нажатия кнопки "Выход" def OnQuit(self, event):

self.Close() # завершение работы приложения # Класс приложения class PrintDiagApp(wx.App):

def OnInit(self):

# создание главного окна frame = MainFrame() # отображение главного окна if name == 'main':

app = PrintDiagApp() app.MainLoop() Файл job.clp (defclass human (is-a USER) ;; пользовательский класс (role concrete) (pattern-match reactive) (slot education (type SYMBOL)(create-accessor readwrite)) (slot sphere (type SYMBOL)(create-accessor read-write)) (slot lang (type SYMBOL)(create-accessor read-write)) (slot comp (type SYMBOL)(create-accessor read-write)) (slot managament (type SYMBOL)(create-accessor readwrite)) (slot experience (type SYMBOL)(create-accessor readwrite)) (slot experiencenegotiations (type SYMBOL)(createaccessor read-write)) (slot communicating (type SYMBOL)(create-accessor readwrite)) (slot organized (type SYMBOL)(create-accessor readwrite)) (slot creative (type SYMBOL)(create-accessor readwrite)) (slot paul (type SYMBOL)(create-accessor read-write)) (slot age (type SYMBOL)(create-accessor read-write)) (slot driverscertificate (type SYMBOL)(create-accessor read-write)) (slot graph (type SYMBOL)(create-accessor read-write) ) ) (definstances humans (РРК of human (education 0) (sphere 0) (lang 0) (comp 0) (managament 0) (experience 0) (experiencenegotiations 0) (communicating 0) (organized 0) (creative 0) (paul 0) (age 0) (driverscertificate 0) (graph 0) ) ) (make-instance PPK of human) (deffunction check (?question ?answer) (switch ?question higher)) average-professional)) average)) economic)) humanitarian)) technical)) (case 4 then (send [PPK] put-sphere other)) (case 1 then (send [PPK] put-lang inperfection)) (case 2 then (send [PPK] put-lang talking)) (case 3 then (send [PPK] put-lang reading)) professional)) (case 1 then (send [PPK] put-managament yes)) (case 2 then (send [PPK] put-managament no)) (case 1 then (send [PPK] put-experience yes)) (case 2 then (send [PPK] put-experience no)) (case 1 then (send [PPK] put-communicating yes)) (case 2 then (send [PPK] put-communicating no) ) (case 1 then (send [PPK] put-organized yes)) (case 2 then (send [PPK] put-organized no)) (case 1 then (send [PPK] put-creative yes)) (case 2 then (send [PPK] put-creative no)) (case 2 then (send [PPK] put-paul female)) (send [PPK] put-age ?answer) ) (case 1 then (send [PPK] putdriverscertificate yes)) (case 2 then (send [PPK] putdriverscertificate no)) (case 1 then (send [PPK] put-graph full)) (case 2 then (send [PPK] put-graph free)) unnormalized)) (case 4 then (send [PPK] put-graph short)) (case 1 then (send [PPK] putexperiencenegotiations yes)) (case 2 then (send [PPK] putexperiencenegotiations no)) ;Правила для определения вакансии ; -- менеджер (defrule rule-manager (declare (salience 50)) (object (name [PPK]) (education higher)) (object (name [PPK]) (sphere economic)) (object (name [PPK]) (communicating yes)) (object (name [PPK]) (organized yes)) (object (name [PPK]) (lang in-perfection)) (object (name [PPK]) (comp professional | user)) (object (name [PPK]) (paul male)) (object (name [PPK]) (creative yes)) (object (name [PPK]) (managament yes)) (object (name [PPK]) (experience yes)) (object (name [PPK]) (experiencenegotiations yes)) (object (name [PPK]) (graph full)) (assert (job-title менеджер) ) ) (defrule rule-market (declare (salience 50)) (object (name [PPK]) (education higher)) (object (name [PPK]) (sphere economic)) (object (name [PPK]) (communicating yes)) (object (name [PPK]) (lang in-perfection)) (object (name [PPK]) (comp professional | user)) (object (name [PPK]) (paul male)) (test (< (send [PPK] get-age) 35)) (object (name [PPK]) (creative yes)) (object (name [PPK]) (experiencenegotiations yes))(object (name [PPK]) (graph full)) (assert (job-title маркетолог) ) ) (defrule rule-accountant (declare (salience 50)) (object (name [PPK]) (education higher)) (object (name [PPK]) (sphere economic)) (object (name [PPK]) (comp professional)) (object (name [PPK]) (graph unnormalized | full)) (assert (job-title бухгалтер) ) ) ; -- специалист по связям с общественностью (defrule rule-public-relation (declare (salience 50)) (object (name [PPK]) (education higher)) (object (name [PPK]) (sphere humanitarian)) (object (name [PPK]) (communicating yes))(object (name [PPK]) (organized yes)) (object (name [PPK]) (lang in-perfection)) (object (name [PPK]) (comp professional | user)) (object (name [PPK]) (creative yes)) (object (name [PPK]) (experiencenegotiations yes)) (object (name [PPK]) (graph full)) (assert (job-title специалист по связям с общественностью) ) ) ; -- системный администратор (defrule rule-sys-admin (declare (salience 50)) (object (name [PPK]) (education average | averageprofessional)) (object (name [PPK]) (sphere technical)) (object (name [PPK]) (lang in-perfection | talking | reading)) (object (name [PPK]) (comp professional)) (object (name [PPK]) (paul male)) (object (name [PPK]) (graph full)) (assert (job-title системный администратор) ) ) ; -- разработчик приложений (defrule rule-developer (declare (salience 50)) (object (name [PPK]) (education higher)) (object (name [PPK]) (sphere technical)) (object (name [PPK]) (lang in-perfection | talking | reading)) (object (name [PPK]) (comp professional)) (object (name [PPK]) (graph full | short | free)) (assert (job-title разработчик приложений) ) ) ; -- web-программист (defrule rule-web (declare (salience 50)) (job-title разработчик приложений) (object (name [PPK]) (creative yes)) (assert (job-title web-программист) ) ) ; -- водитель (defrule rule-driver (declare (salience 45)) (object (name [PPK]) (paul male)) (object (name [PPK]) (graph full | short)) (object (name [PPK]) (driverscertificate yes)) (assert (job-title водитель) ) ) ; -- торговый представитель (defrule rule-representative (declare (salience 45)) (object (name [PPK]) (communicating yes)) (object (name [PPK]) (organized yes)) (object (name [PPK]) (graph full | free)) (assert (job-title торговый представитель) ) ) ; -- секретарь (defrule rule-secretary (declare (salience 45)) (object (name [PPK]) (education averageprofessional)) (object (name [PPK]) (communicating yes)) (object (name [PPK]) (organized yes)) (object (name [PPK]) (lang in-perfection)) (object (name [PPK]) (comp professional)) (object (name [PPK]) (paul female)) (object (name [PPK]) (graph full)) (assert (job-title секретарь) ) ) ; -- специалист по связям с общественностью (defrule rule-public-relation (declare (salience 50)) (object (name [PPK]) (education higher)) (object (name [PPK]) (sphere humanitarian)) (object (name [PPK]) (communicating yes)) (object (name [PPK]) (organized yes)) (object (name [PPK]) (lang in-perfection)) (object (name [PPK]) (comp professional | user)) (object (name [PPK]) (creative yes)) (object (name [PPK]) (experiencenegotiations yes)) (object (name [PPK]) (graph full)) (assert (job-title специалист по связям с общественностью) ) ) ; -- системный администратор (defrule rule-sys-admin (declare (salience 50)) (object (name [PPK]) (education average | averageprofessional)) (object (name [PPK]) (sphere technical)) (object (name [PPK]) (lang in-perfection | talking | reading)) (object (name [PPK]) (comp professional)) (object (name [PPK]) (paul male)) (object (name [PPK]) (graph full)) (assert (job-title системный администратор) ) ) ; -- предложение вакансий (defrule rule-list-vacancies (declare (salience 40)) (job-title $?item) (bind ?str (implode$ ?item)) (printout t crlf) (printout t "Вакансия: ") (format t "%s%n" ?str)) ; -- нет вакансий (defrule rule-no-vacancies (declare (salience 40)) (not(job-title ?)) (assert (job-title К сожалению, в данный момент у нас нет вакансий)) Файл index.php Экспертная система для выбора вакансии Далее

ОГЛАВЛЕНИЕ

ПРЕДИСЛОВИЕ ……………………………………………………...

1. ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ – ОСНОВА НОВЫХ

ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ …………………….. 1.1. Основные направления исследований в области интеллектуальных информационных систем ……………….. 1.2. Основные типы интеллектуальных информационных систем и их характеристика ………………………………….. 1.3. Технологии разработки экспертных систем ………………… 1.4. Контрольные вопросы и задания …………………………….. 1.5. Список литературы …………………………………………… 2. НЕЙРОННЫЕ СЕТИ ……………………………………………. 2.1. Модель искусственного нейрона …………………………….. 2.2. Модели нейронных сетей …………………………………….. 2.3. Построение нейронной сети ………………………………….. 2.4. Обучение нейронной сети ……………………………………. 2.5. Способы реализации нейронных сетей ……………………… 2.6. Практическое применение нейросетевых технологий ……... 2.7. Контрольные вопросы и задания …………………………….. 2.8. Список литературы ……………………………………………

3. ЭВОЛЮЦИОННЫЕ АНАЛОГИИ В ИСКУССТВЕННЫХ

ИНТЕЛЛЕКТУАЛЬНЫХ СИСТЕМАХ ………………………. 3.1. Генетические алгоритмы ……………………………………... 3.2. Методы эволюционного программирования ………………... 3.3. Контрольные вопросы и задания …………………………….. 3.4. Список литературы ……………………………………………

4. ИНТЕЛЛЕКТУАЛЬНЫЕ МУЛЬТИАГЕНТНЫЕ

СИСТЕМЫ ………………………………………………………... 4.1. Основные понятия теории агентов …………………………... 4.2. Коллективное поведение агентов ……………………………. 4.3. Примеры мультиагентных систем …………………………… 4.4. Технологии проектирования мультиагентных систем ……... 4.5. Перспективы мультиагентных технологий …………………. 4.6. Контрольные вопросы и задания …………………………….. 4.7. Список литературы ……………………………………………

5. ОСНОВЫ РЕАЛИЗАЦИИ ИНТЕЛЛЕКТУАЛЬНЫХ

ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

НА ОСНОВЕ ЯЗЫКА CLIPS …………………………………… 5.1. Основные теоретические сведения ………………………….. 5.2. Особенности создания баз данных и правил на языке CLIPS 5.3. Типы функций манипулирования данными ………………… 5.4. Особенности решения задач планирования действий системы в заданной предметной области …………………… 5.5. Возможности наследования информации …………………… 5.6. Обработка сообщений ………………………………………… 5.7. Контрольные вопросы и задания …………………………….. 5.8. Список литературы ……………………………………………

6. ПРИМЕРЫ РЕАЛИЗАЦИИ ИНТЕЛЛЕКТУАЛЬНЫХ

ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ …………………….. 6.1. Пример объектно-ориентированного программирования на языке CLIPS ……………………………………………….. 6.2. Использование семантических сетей для представления знаний на языке CLIPS ………………………………………. 6.3. Пример учёта неопределённости на языке CLIPS ………..... 6.4. Примеры экспертных систем, написанных на языке CLIPS 6.5. Контрольные вопросы и задания ……………………………. 6.6. Список литературы …………………………………………... ЗАКЛЮЧЕНИЕ ………………………………………………………. ПРИЛОЖЕНИЯ …………………………………………………….... Приложение А ……………………………………………………. Приложение Б ……………………………………………….........

ИНТЕЛЛЕКТУАЛЬНЫЕ ИНФОРМАЦИОННЫЕ

СИСТЕМЫ И ТЕХНОЛОГИИ

Инженер по компьютерному макетированию М.Н. Р ы ж к о в а Формат 60 84/16. 14,18 усл. печ. л. Тираж 100 экз. Заказ № Издательско-полиграфический центр ФГБОУ ВПО «ТГТУ»



Pages:     | 1 | 2 ||


Похожие работы:

«ВОПРОСЫ К ЗАЧЕТУ ПО ДИСЦИПЛИНЕ ДЕЛОВАЯ ЭТИКА для студентов 1 курса группа 11КЗЭ5 1. Специфика делового общения. 2. Понятие этической нормы. 3. Основные принципы этики деловых отношений. 4. Деловая беседа как вид делового общения. Этикет деловой беседы. 5. Деловые переговоры как вид делового общения. Этикет деловых переговоров. 6. Этика делового телефонного разговора. 7. Групповые формы делового общения. 8. Речевой этикет делового человека. Основные этикетные ситуации. 9. Проявление...»

«Министерство образования и науки РФ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевича Столетовых (ВлГУ) ТВЕРЖДАЮ мной комиссии Саршшдзе А.М. 2013 г. ПРОГРАММА ВСТУПИТЕЛЬНЫХ ИСПЫТАНИЙ ПО МАГИСТРАТУРЕ НАПРАВЛЕНИЯ 033300.68 РЕЛИГИОВЕДЕНИЕ Владимир, 2013 МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПОСТУПАЮЩЕМУ В МАГИСТРАТУРУ: Поступающий в магистратуру должен: 1. Знать...»

«ОБРАЗОВАТЕЛЬНАЯ ПРОГРАММА СРЕДНЕГО ОБЩЕГО ОБРАЗОВАНИЯ ( 10 - 11 КЛАССЫ ФК ГОС) 2 СТРУКТУРА И СОДЕРЖАНИЕ РАЗДЕЛОВ ОБРАЗОВАТЕЛЬНОЙ ПРОГРАММЫ ШКОЛЫ ПОЯСНИТЕЛЬНАЯ ЗАПИСКА 3 РАЗДЕЛ 1. ИНФОРМАЦИОННО – АНАЛИТИЧЕСКИЕ ДАННЫЕ О МАОУ СОШ №88 ГОРОДА ТЮМЕНИ 4 РАЗДЕЛ 2. ЦЕЛИ И ЗАДАЧИ ОБРАЗОВАТЕЛЬНОГО ПРОЦЕССА ШКОЛЫ 9 РАЗДЕЛ 3. УЧЕБНЫЙ ПЛАН И ЕГО ОБОСНОВАНИЕ 11 РАЗДЕЛ 5. СОДЕРЖАНИЕ СРЕДНЕГО ОБЩЕГО ОБРАЗОВАНИЯ РАЗДЕЛ 4. ОСОБЕННОСТИ ОРГАНИЗАЦИИ ОБРАЗОВАТЕЛЬНОГО ПРОЦЕССА РАЗДЕЛ 5. КРИТЕРИИ ЭФФЕКТИВНОСТИ...»

«Учреждение образования БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ ИНЖЕНЕРНАЯ ГЕОДЕЗИЯ Методические указания по проведению учебной практики для студентов специальностей 1-75 01 01 Лесное хозяйство, 1-75 02 01 Садово-парковое строительство Минск 2007 1 УДК 528.4 (075.8) ББК 26.1я7 И 62 Рассмотрены и рекомендованы к изданию редакционно-издательским советом университета Составитель В. Ф. Нестеренок Рецензент: доцент кафедры инженерной геодезии БНТУ, кандидат технических наук В. Г....»

«Учреждение образования БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ ПОЛИГРАФИЧЕСКИЕ МАШИНЫ, АВТОМАТЫ И ПОТОЧНЫЕ ЛИНИИ Программа, контрольные работы и методические указания по одноименной дисциплине для студентов заочной формы обучения специальности 1-47 02 01 Технология полиграфических производств Минск 2006 УДК 681.6 (075.8) ББК 37.8я7 П 50 Рассмотрены и рекомендованы к изданию редакционноиздательским советом университета Составители: А. И. Вирченко, И. И. Колонтай Рецензент...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Государственное образовательное учреждение высшего профессионального образования Оренбургский государственный университет Кафедра менеджмента А. П. ТЯПУХИН ЛОГИСТИКА МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ИЗУЧЕНИЮ КУРСА И ВЫПОЛНЕНИЮ КУРСОВОГО ПРОЕКТА, КОНСПЕКТ ЛЕКЦИЙ Рекомендовано к изданию Редакционно-издательским советом государственного образовательного учреждения высшего профессионального образования Оренбургский государственный университет Оренбург 2004 ББК...»

«Министерство здравоохранения Украины Высшее государственное учебное заведение Украины Украинская медицинская стоматологическая академия Кафедра инфекционных болезней с эпидемиологией МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ для практических занятий студентов 5 курса медицинского факультета по эпидемиологии Смысловой модуль 2 Специальная эпидемиология Полтава – 2010 СОДЕРЖАНИЕ № ТЕМА Час. 5. Противоэпидемические мероприятия в очагах инфекций с фекально- 2 оральным механизмом передачи (шигеллезы, брюшной тиф и...»

«ГБСК ОУ школа №663 Московского района Санкт-Петербурга Конспект урока русского языка в 5 классе на тему Употребление имен существительных множественного числа в речи учителя русского языка и литературы ГБСК ОУ школы №663 Московского района Санкт-Петербурга Кашиной Надежды Ивановны Директор школы (Семенова А.А.) 11.04.2012 г. Санкт-Петербург 2012 г. Программа: Баранов М.Т., Ладыженская Т.А., Шанский Н.М. Программа по русскому языку к учебникам для 5-9 классов, М., Просвещение, 2000 г. Учебник...»

«Конституционное право России Анисимов Л.Н. Конституционное право России: Учебно-методические материалы и программа. Юстицинформ, 2006 г., 168 стр ISBN 5-7205-0728-0 Издание представляет собой учебно-методический комплекс, предназначенный для изучения учебной дисциплины Конституционное право Российской Федерации. В нем дается толкование основных дидактических единиц государственного образовательного стандарта высшего профессионального образования, определены требования к знанию и умению...»

«библиотека трейдера - www.xerurg.ru Dr. Alexander Elder Founder & Director Financial Trading, Inc. Александр Элдер ОСНОВЫ БИРЖЕВОЙ ТОРГОВЛИ Учебное пособие для участников торгов на мировых биржах библиотека трейдера - www.xerurg.ru Содержание ВВЕДЕНИЕ 3 1. Психология — ключевой момент 4 2. Факторы, действующие против вас 5 I. ПСИХОЛОГИЯ ЛИЧНОСТИ 1.1. Зачем играть? 1.2. Фантазии и реальность 1.3. Рыночные гуру 1.4. Саморазрушение 1.5. Психология игры 1.6. Биржевые уроки Анонимных Алкоголиков...»

«МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования _ УХТИНСКИЙ Г ОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ_ ИНСТИТУТ ПОВЫШЕНИЯ КВАЛИФИКАЦИИ - НЕЗАВИСИМЫЙ АТТЕСТАЦИОННО-МЕТОДИЧЕСКИЙ ЦЕНТР 169300, Республика Коми, г. Ухта, ул. М и ра, 4. Тел. (8216) 774-585 факс (8216) 73-61-01 УТВЕРЖДАЮ Проректор по учебно-методической дополнительному )ваншо Щ Т У Б о тн и к о ва 2014 г. РАБОЧАЯ П Р О Г Р А М М А -® ^ по дисциплине Химия нефти и...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ АРИФМЕТИЧЕСКИЕ ОСНОВЫ ЦИФРОВОЙ ТЕХНИКИ УЛЬЯНОВСК 2003 Министерство образования Российской Федерации Ульяновский государственный технический университет АРИФМЕТИЧЕСКИЕ ОСНОВЫ ЦИФРОВОЙ ТЕХНИКИ Методические указания к практическим занятиям по курсу Прикладная теория информации Составители: В.Д. Горбоконенко, В.Е. Шикина Ульяновск 2003 УДК 621.3+681.3 Рецензент канд. техн. наук, доцент кафедры ТОР...»

«Электронный учебно-методический комплекс Турбомашины АЭС доцент каф. ПГТ, к.т.н. А.И. Лебедева Автор: 140700 Ядерная энергетика и теплофизика, Направление профиль: Атомные электрические станции и установки подготовки: Дисциплина: Турбомашины АЭС (6, 7 семестр) Адрес ресурса: Почтовый и актуальный электронный адрес (адреса) авторов Контактная ресурса, по которому можно получить дополнительную информация: информацию, приобрести ресурс или заключить договор об его использовании [email protected]...»

«МУНИЦИПАЛЬНОЕ БЮДЖЕТНОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ГИМНАЗИЯ № 2 (МБОУ ГИМНАЗИЯ № 2) 2 №-а ГИМНАЗИЯ МУНИЦИПАЛЬНЙ ВЕЛДАН СЬМКУД УЧРЕЖДЕНИЕ УТВЕРЖДАЮ Директор МБОУ Гимназия № 2 Н.В. Яловая “ ” г. 20 ПОЛОЖЕНИЕ О БИБЛИОТЕКЕ МУНИЦИПАЛЬНОГО БЮДЖЕТНОГО ОБЩЕОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ГИМНАЗИЯ № 2 1. ОБЩИЕ ПОЛОЖЕНИЯ 1.1. Настоящее положение о библиотеке Муниципального бюджетного общеобразовательного учреждения Гимназия № 2 (далее Положение) разработаны в соответствии в соответствии с п. 2 ст. 27,...»

«Учреждение образования Минский институт управления В.М. Беляев, В.В. Ивашин, О.А. Шатравская ОСНОВЫ ЭКОЛОГИИ И ЭНЕРГОСБЕРЕЖЕНИЯ Учебно-методический комплекс Минск Изд-во МИУ 2010 УДК 330.567:620.91; 504:502.36 ББК 31.15; 20.18 О75; Ш28 Рецензенты: Валицкий С.В. к.т.н., доцент, доцент кафедры экономики и управления производством Минского института управления; В.Б. Кадацкий, профессор кафедры физическая география БГПИ, д.г.н., профессор Дашкевич Е.А. – к.с.-х.н., доцент по специальности...»

«Областное государственное автономное образовательное учреждение дополнительного профессионального образования Институт повышения квалификации педагогических работников ОО Педагогическая ассоциация ЕАО РФ Формы методической работы в ДОУ Из опыта работы Подситковой Ирины Владимировны, старшего воспитателя МДОУ Детский сад “Солнышко” с. Амурзет Биробиджан, 2010 Формы методической работы в ДОУ: Из опыта работы Подситковой Ирины Владимировны, старшего воспитателя МДОУ Детский сад “Солнышко”...»

«Департамент образования Вологодской области БОУ СПО ВО Череповецкий технологический техникум УЧЕБНО-МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ВЫПОЛНЕНИЮ САМОСТОЯТЕЛЬНОЙ РАБОТЫ для студентов специальности 100401 Туризм (код специальности и наименование) по учебной общепрофессиональной дисциплине Менеджмент туризма (наименование учебной дисциплины по учебному плану) Череповец, 2014 Ламанова Л.А., Фазлетдинова Г.Т. Учебно-методические рекомендации по выполнению самостоятельной работы для студентов...»

«Федеральное агентство по здравоохранению и социальному развитию Волгоградский государственный медицинский университет Кафедра физической культуры и здоровья Спортивный бадминтон в занятиях по физическому воспитанию студентов (Учебное пособие) Волгоград, 2009 УДК 796.344:378(07) Рецензенты: Кандидат технических наук, профессор Александр Николаевич Гвоздков – председатель Волгоградской федерации бадминтона, доцент кафедры отопления и вентиляции Волгоградского государственного...»

«АКАДЕМИЯ УПРАВЛЕНИЯ ПРИ ПРЕЗИДЕНТЕ РЕСПУБЛИКИ БЕЛАРУСЬ УТВЕРЖДЕНО Проректором по учебной работе 18 июня 2010 г. Регистрационный № УД-14.Пп /уч. УЧЕБНАЯ ПРОГРАММА ПО ДИСЦИПЛИНЕ ТЕОРИЯ И ОРГАНИЗАЦИЯ СОЦИАЛЬНОЙ РАБОТЫ специальности переподготовки 1-26 01 74 Государственное управление социальной сферой квалификация специалист в области государственного управления в соответствии с типовым учебным планом переподготовки, утвержденным 24.01.2011, регистрационный № 25-11/325 Минск 2010 Разработчики...»

«Департамент здравоохранения Томской области ОГУЗ Томская областная клиническая больница ГОУ ВПО Сибирский государственный медицинский университет Росздрава, кафедра госпитальной терапии с курсом физической реабилитации и спортивной медицины Клинические классификации с принципами оформления клинического и патологоанатомического диагнозов Методические рекомендации для студентов, интернов, ординаторов и врачей Томск-2008 Составители: Варвянская Н.В. – ассистент, к.м.н. Елисеева Л.В. – зав....»






 
2014 www.av.disus.ru - «Бесплатная электронная библиотека - Авторефераты, Диссертации, Монографии, Программы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.