close

Вход

Забыли?

вход по аккаунту

?

Zhdanova Troshin Halimov Proektir baz dannih i baz znanii

код для вставкиСкачать
Федеральное агентство связи
Государственное федеральное образовательное учреждение
высшего профессионального образования
ПОВОЛЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ТЕЛЕКОММУНИКАЦИЙ И ИНФОРМАТИКИ
ЭЛЕКТРОННАЯ
БИБЛИОТЕЧНАЯ СИСТЕМА
Самара
1
Государственное образовательное учреждение
высшего профессионального образования
Поволжский государственный университет
телекоммуникаций и информатики
Кафедра экономических и информационных систем
ПРОЕКТИРОВАНИЕ
БАЗ ДАННЫХ И БАЗ ЗНАНИЙ
Методические указания
для выполнения лабораторных работ
Составители: Жданова Е.И.,
Трошин Ю.В.,
Халимов Р.Р.
Самара
ИУНЛ ПГУТИ
2011 г.
2
УДК 004.89
Рецензент
Кандидат технических наук, доцент каф. ИСТ СГАУ Симонова Е.В.
Жданова Е.И., Трошин Ю.В., Халимов Р.Р. Проектирование баз данных
и баз знаний: Методические указания для выполнения лабораторных работ.Самара: ПГУТИ, 2011. – 61 с., ил.
Проектирование баз данных и баз знаний – развивающаяся область искусственного интеллекта, изучающая вопросы построения и применения систем, основанных на знаниях, которые не только могут накапливать и передавать
знания специалистам, но и вступать в диалог, объясняя полученные выводы.
В методических указаниях представлены работы, посвященные созданию онтологий в различных предметных областях, проектированию и использованию нейронных сетей разной архитектуры. Также, в одной из работ, изучаются такие методы эволюционных вычислений как генетические алгоритмы.
Кроме того, затронута обширная область искусственного интеллекта – нечѐткая
логика. Изучение и выполнение данных лабораторных работ способствуют получению представлений о практических приложениях теории искусственного
интеллекта, предоставляют возможности изучения основ разработки и реализации гибридных интеллектуальных систем.
Методические указания подготовлены на кафедре "Экономические и
информационные системы" ГОУ ВПО ПГУТИ, предназначены для студентов
всех форм обучения специальности 080801 (Прикладная информатика в экономике) и являются руководством к выполнению лабораторных работ. Могут
быть полезны преподавателям смежных дисциплин.
© ГОУВПО ПГУТИ – 2011.
© Жданова Е.И. – 2011.
© Трошин Ю.В. – 2011.
© Халимов Р.Р. – 2011.
3
Содержание
ЦЕЛИ И ЗАДАЧИ ................................................................................................. 5
ЛАБОРАТОРНЫЙ ПРАКТИКУМ.................................................................... 5
ЛАБОРАТОРНАЯ РАБОТА 1 ............................................................................ 5
1.1 Теоретические сведения. Основные понятия.......................................... 5
1.2 Пример создания онтологии в системе Protégé ..................................... 6
Содержание работы ..................................................................................... 23
ЛАБОРАТОРНАЯ РАБОТА 2 .......................................................................... 24
2.1 Теоретические сведения. Основные понятия........................................ 25
2.2 Алгоритм обратного распространения ошибки .................................. 26
2.3 Построение нейронной сети в Deductor Studio 4.4 .............................. 28
Содержание работы ..................................................................................... 30
ЛАБОРАТОРНАЯ РАБОТА 3 .......................................................................... 31
3.1 Теоретические сведения. Основные понятия........................................ 32
3.1.1 Операции над нечѐткими множествами .......................................... 32
3.1.2 Операции над нечѐткими отношениями.......................................... 35
3.2 Создание нечѐткой экспертной системы в пакете CubiCalc ............ 37
Содержание работы ..................................................................................... 43
ЛАБОРАТОРНАЯ РАБОТА 4 .......................................................................... 45
4.1 Теоретические сведения. Основные понятия........................................ 46
4.1.1 Программные средства реализации генетических алгоритмов .... 47
4.1.2 Задача о коммивояжере ..................................................................... 48
4.2 Решение задачи о коммивояжере в GeneHunter ................................... 49
Содержание работы ..................................................................................... 50
СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ ......................................... 53
4
ЦЕЛИ И ЗАДАЧИ
Цель лабораторного практикума – применение на практике знаний, полученных в процессе изучения курса "Проектирование баз данных и баз знаний",
приобретение практических навыков по использованию различных методов построения, организации и работы с системами, основанными на знаниях.
ЛАБОРАТОРНЫЙ ПРАКТИКУМ
ЛАБОРАТОРНАЯ РАБОТА 1
Тема: «Построение онтологии в системе Protégé».
Цель работы: овладеть основными навыками онтологической инженерии
знаний в системе Protégé v.3.4.4.
Задачи работы:
1. Изучить технологию создания баз знаний на основе фреймовой модели в среде Protégé.
2. Изучить этапы создания проектов, разработки классов и их экземпляров, настройки форм вывода в системе Protégé.
3. Освоить способы создания и сохранения запросов в системе Protégé.
1.1 Теоретические сведения. Основные понятия
Онтология – формальное явное описание классов (иногда их называют
понятиями) в рассматриваемой предметной области, свойств каждого класса –
слотов, и ограничений, наложенных на слоты – фацетов. Онтология вместе с
набором индивидуальных экземпляров классов образует базу знаний.
Онтология описывает основные концепции (положения) предметной области и определяет отношения между ними. Процесс построения онтологий
включает следующие этапы:
— определение классов, организация классов в некоторую иерархию «базовый класс → подкласс»;
— определение свойств каждого класса (cлотов), описывающих различные функциональные возможности и атрибуты концепции;
— определение ограничений по слотам (допустимых значений слотов);
— заполнение значений слотов для экземпляров классов.
Почему возникает необходимость в разработке онтологии? Вот некоторые причины:
— потребность совместного использования людьми или программными
агентами общего понимания структуры информации;
— потребность повторного использования знаний в предметной области;
— потребность делать допущения в предметной области явными;
— требование отделения знаний в предметной области от оперативных
знаний;
5
— требование анализа знаний предметной области.
Для любой предметной области может существовать бесчисленное количество онтологий, поскольку каждая новая онтология – это всего лишь еще
один из способов структурирования концепций и отношений между ними. При
правильном моделировании, онтология представлена предложениями, где объекты описаны существительными, а отношения – глаголами. При этом необходимо помнить, что онтология представляет предметную область – описываемую часть реального окружающего мира, и потому понятия в онтологии также
должны отражать эту реальность.
1.2 Пример создания онтологии в системе Protégé
1.2.1 Постановка задачи
Предположим, что мы хотим разработать модель, которая помогает проанализировать бизнес-процесс взаимоотношений с клиентами региональной телекоммуникационной компании, в частности – управлять деятельностью районного отделения электросвязи. Модель должна отвечать на следующие вопросы:
1. Из каких подразделений состоит отделение?
2. Каков штат работников отделения?
3. С кем взаимодействуют клиенты отделения электросвязи?
4. Каковы расходы на осуществление деятельности департаментов компании?
После того как идея определена, можно расшифровать некоторые из важных особенностей изучаемой системы. Сюда могут войти: основные концепции
и их свойства, а также отношения между ними. Для начала необходимо определить термины, независимо от роли, которую они могут играть в онтологии.
Итак, на любом предприятии есть отделы. Каждый отдел состоит из работников: консультантов, операторов приема платежей, администраторов и т.д. Каждый посетитель взаимодействует с кем-то из персонала, будь то абонент компании или потенциальный клиент. Для каждого работника важно знать его имя и
зарплату, а также у кого он находится в подчинении.
По мере определения понятий неявно определяются и рамки онтологии, а
именно то, что должно быть включено в разрабатываемую модель, а что нет. К
примеру, при начальном рассмотрении термина «работник» можно включить в
это понятие охранника или водителя. Однако, в данном рассматриваемом случае необходимо, чтобы создаваемая онтология была сфокусирована на производственных затратах, связанных напрямую с расчетами между компанией и ее
клиентами. Таким образом, охранник и т.п. не включаются в область рассмотрения. Получив достаточно полный список терминов, можно разделить эти понятия по категориям в зависимости от их функции в онтологии. Понятия (концепции/термины предметной области), являющиеся объектами, такие как, например, администратор или клиент, будут представлены в виде классов. Свойства классов, такие как имя работника или зарплата, представляются в виде
слотов, а ограничения на свойства или отношения между классами – как гра6
ни/аспекты (slot facets). После определения основных понятий, можно приступить к их созданию и структурированию c использованием системы Protégé.
1.2.2 Создание онтологии в системе Protégé
Создание проекта
Начало работы в системе Protégé подразумевает создание нового проекта.
Для этого необходимо выполнить следующие операции:
1. Запустите Protégé (рис. 1.1). Появится диалог приветствия, предлагающий создать новый проект, открыть недавний проект или посмотреть документацию.
Открыть
недавние
проекты
Открыть инструкцию
пользователя
Создать
новый
проект
Рис. 1.1 – Окно приветствия
2. Щелкните мышкой по кнопке New Project. Появится диалоговое окно
«Create New Project», позволяющее выбрать тип проекта. Если у вас нет необходимости в специальном формате для ваших файлов, просто нажмите кнопку
Finish – будет выбран формат файла по умолчанию – Protege Files (.pont and
.pins).
3. Откроется окно проекта Protégé (рис. 1.2). Новый проект всегда открывается в области просмотра классов (Classes Browser). Видно, что в этой области на данный момент находятся только внутренние системные классы Protégé:
THING и SYSTEM-CLASS. Никаких экземпляров классов к этому моменту еще
не создано.
7
Системные
классы
Область
просмотра
классов
Область редактирования классов
Рис. 1.2 – Окно нового проекта
Во время работы с программой можно сохранять промежуточные изменения, для этого щелкните кнопку с изображением дискеты (рис. 1.3) ил выберите пункт Save Project из меню файл File.
Рис. 1.3 – Сохранение проекта
Создание классов
Основное окно программы Protégé состоит из закладок (tabs) которые
отображают различные аспекты модели знаний. Наиболее важной закладкой на
начальном этапе проектирования является закладка классов (Classes). Обычно
классы соответствуют объектам или типам объектов в некоторой предметной
области.
Классы в Protégé отображаются в виде иерархии наследования (inheritance hierarchy), которая располагается в области просмотра, называемой Class
Browser (или навигатор классов) в левой части закладки классов. Свойства
классов выбранных в текущий момент в навигаторе, будут отображены в редакторе классов справа.
8
В нашем примере с отделением электросвязи телекоммуникационной
компании классы будут включать в себя людей, а именно: администраторов,
кассиров, консультантов, а также потенциальных клиентов.
Создадим класс «Консультант» (Consultant) (рис. 1.4):
1. Выберите закладку классов.
2. Найдите область в навигаторе классов (Class Browser), где отображается иерархия классов (Class Hierarchy). Эта область отображает иерархию классов, с выделенным текущим (выбранным) классом.
3. Проверьте: по умолчанию класс THING (вещь, нечто) должен быть выделен. Почти все классы в данном примере будут созданы на уровень ниже
класса THING. Другой класс SYSTEM-CLASS используется для определения
структур различных форм Protégé.
4. Нажмите кнопку создать класс (Create Class) в верхнем правом углу
навигатора классов. Новый класс будет создан со стандартным именем (основанном на имени проекта). В нашем случае это – Telecom_Class0. Имя нового
класса в навигаторе классов после создания будет выделено, для указания на то,
что этот класс выбран в данный момент активным.
Иерархия
классов
Кнопка
создания
класса
Имя класса по
умолчанию
Рис. 1.4 – Создание/редактирование класса
5. В активном поле редактора классов введите Consultant. В системе
Protégé приняты правила наименования, когда первая буква каждого слова имени класса пишется в верхнем регистре, а остальные буквы – в нижнем, при этом
слова разделяются символом подчеркивания.
6. Нажмите ввод или щелкните мышью на отображаемом классе, чтобы
подтвердить и отобразить свои изменения.
7. Если при изменении имени класса у вас возникли проблемы, посмотрите в панель редактора классов справа в главном окне Protégé. Стандартное имя
нового класса должно быть отображено и выделено в поле Name. Если правильное стандартное имя отображается, но не выделено, просто щелкните на
9
поле Name мышкой, для того чтобы его отредактировать. Если имя не правильное, тогда скорее всего вы выбрали неверный класс в области отображения иерархии классов (Class Hierarchy). Щелкните мышью на нужном классе.
Создадим класс «Клиент». Клиентами отделения электросвязи могут
быть как существующие абоненты, так и потенциальные.
1. Выделите класс THING. Если этого не сделать, то будет создан класс,
который станет подклассом класса Consultant.
2. Нажмите кнопку создать класс (Create Сlass) и задайте ему имя «Customer».
3. Нажмите ввод для завершения создания класса.
Создадим подклассы класса «Клиент» (рис. 1.5):
1. Выберите класс Customer в области отображения иерархии классов.
2. Нажмите кнопку Create Сlass и переименуйте новый класс в Abonent
(существующий абонент). Помните, что когда вы создаете новый класс, он автоматически создается как подкласс текущего, выбранного в навигаторе слева,
класса. Также, когда создается первый подкласс текущего класса, слева от родительского класса в навигаторе появляются «иерархические» стрелки. Можно
использовать эти стрелки для того, чтобы показать или скрыть подклассы класса. Продолжая разрабатывать онтологию, создадим еще один подкласс класса
Customer (New_Client). Это потенциальные клиенты компании.
3. Выберите класс Клиент (Customer) в навигаторе классов (Class
Browser).
4. Нажмите кнопку Create Class и переименуйте созданный класс в
New_Client.
Рис. 1.5 – Создание подклассов для базового класса Клиент
Аналогично создадим базовый класс Staff (Персонал), включающий подклассы Administrator (Администратор), Operator (Оператор по приему платежей) и Senior_Cashier (Старший кассир).
10
На данной стадии разработки классы Консультант и Персонал находятся
на одном уровне в создаваемой иерархии, в то время как Администратор, Оператор по приему платежей и Старший кассир являются подклассами класса
Персонал. С точки зрения концепции Консультант является одной из категорий персонала. Значит, текущее расположение в иерархии противоречит принципам онтологий – все классы, имеющие одно и то же более общее понятие,
должны находиться на одном уровне иерархии.
Таким образом, необходимо модифицировать созданную иерархию, чтобы класс Consultant стал подклассом класса Staff, правильно отражая структуру
предметной области (см. рис. 1.6). Для этого необходимо сделать следующее:
1. Щелкните на классе Consultant и перетащите (методом drag-n-drop) его
на класс Staff.
2. Класс Consultant будет удален с текущего места в иерархии и создан в
новом, уже в виде подкласса Staff.
В данном случае, ошибка была введена намерено, в качестве примера.
Однако, при создании собственных онтологий, в процессе разработки могут открываться отличия или сходства между классами, которые не были очевидны
на начальных этапах проектирования. Перемещение, создание, удаление классов необходимы для создания иерархии, оптимально отражающей положение
вещей в предметной области. Также можно сразу уточнить структуру персонала. Разделите весь персонал на два отдела: Расчетный отдел (Accounting_Department)
и
Отдел
по
работе
с
клиентами
(Customer_Relations_Department). Подклассами первого станут Operator и Senior_Cashier, а второго – Administrator и Consultant.
Выделение перемещаемого
класса
Здесь нужно отпустить
перемещаемый класс
Consultant
Рис. 1.6 – Изменение иерархии классов
11
В системе Protégé классы могут быть как конкретными (Concrete), на основе таких классов система может непосредственно создавать готовые экземпляры, так и абстрактными (Abstract), у таких классов не может быть экземпляров. При создании класса ему по умолчанию присваивается тип Concrete. Так
как в рассматриваемом примере понятие клиента является скорее обобщающим, нежели связанным с какой-либо конкретной сущностью, то класс Customer не может сам по себе иметь экземпляров без более детального определения
(к примеру, является ли уже клиент абонентом компании или он только потенциальный). Поэтому классу Customer определяется роль абстрактного класса.
1. Выберите класс Клиент в области иерархии классов (Class Hierarchy).
Далее в редакторе классов, перейдите в поле Роль (Role) (см. рис. 1.7).
Выбор редактируемого класса
Выбор роли
класса
Рис. 1.7 – Выбор роли класса через меню Role
2. Щелкните по стрелке в правой части поля Role и в выпадающем списке
выберите Abstract.
Когда вы меняете роль класса, меняется и иконка перед именем класса. В
данном случае, иконка будет означать, что класс является абстрактным.
Консультант может работать как с потенциальными клиентами, рассказывая им об услугах компании, так и с существующими абонентами в расчетном отделе, проясняя с ними вопросы по начислениям и платежам, тарифам и
специальным предложениям. Поскольку класс Consultant уже создан в классе
Customer_Relations_Department, создавать его снова в виде подкласса Расчетного отдела не требуется. Вместо этого можно сделать так, чтобы существующий класс Consultant стал подклассом Settlement_Department (рис. 1.8). Для этого нужно выполнить следующее:
1. Выберите класс Consultant в навигаторе классов.
12
Выбор
класса
Панель
базовых
классов
Базовый
класс выбранного
подкласса
Кнопка добавления
базового
класса
Выбор и добавление
базового
класса
Рис. 1.8 – Выбор дополнительного базового
класса
2. Найдите панель базовых классов (Superclasses) в нижней левой части
окна системы Protégé (под навигатором классов). Заметьте, что когда выбран
класс Consultant, его базовый класс Customer_Relations_Department отображается в панели.
3. Нажмите кнопку Add Superclass (добавить базовый класс) в верхнем
правом углу панели базовых классов (Superclasses). Появится диалоговое окно,
отображающее в виде иерархии все классы, созданные на данный момент.
4. Выберите класс Settlement_Department и нажмите «OK». Теперь класс
Консультант имеет два базовых класса. Оба класса отображены в панели базовых классов.
Существует еще одна возможность задания базового класса – при помощи механизма перетаскивания (drag-n-drop):
1. Выберите класс Consultant в навигаторе классов.
2. Удерживая нажатой левую кнопку мыши, перетащите его на класс Settlement_Department. Класс Settlement_Department автоматически будет выделен.
3. Перед тем как отпустить кнопку мыши, нажмите и удерживайте клавишу Ctrl, затем отпустите кнопку мыши, для того чтобы перенести класс.
13
Создание слотов
В системе Protégé под классами подразумеваются конкретные понятия
(концепции) предметной области, такие как, например, консультант или расчетный отдел. В то же время классы – это больше чем объекты, объединенные в
иерархию. Они также могут иметь атрибуты (свойства), к примеру, для консультанта это – имя, номер телефона или величина зарплаты, и отношения между ними. Атрибуты класса и их отношения описываются конструкцией под
названием слот. В данном разделе описаны процедуры создания слотов, привязки слотов к классам, описываются отношения между классами, а также механизм наследования слотов.
Создание слота возможно несколькими способами.
1 способ. Создание слота с использованием вкладки Slots.
Для того чтобы создать слот name, используя вкладку Slots, необходимо
(см. рис. 1.9):
1. Щелкнуть на вкладке Slots. Расположение элементов управления на
вкладке слотов схоже с расположением на вкладке классов – готовые слоты
отображаются слева, в области просмотра, а редактирование слотов возможно c
помощью редактора справа.
2. Нажать кнопку создания слота (Create Slot) в правом верхнем углу панели иерархии слотов (Slot Hierarchy). Новый слот будет создан. Также как и
при создании класса, ему присваивается стандартное имя, в нашем случае это –
Telecom_Class0 (после создания слота его имя будет автоматически выделено).
3. Перед переименованием слота, убедитесь, что стандартное имя выделено в редакторе слота. Задайте слоту новое имя – name. Рекомендованные правила наименования, таковы, что имя слота должно быть написано в нижнем регистре, при этом слова в имени разделяются подчеркиванием (например,
«slot_name»). Данные правила (классы с большой буквы, слоты с маленькой)
помогает отличать классы от слотов в созданной онтологии.
4. Значения слота по умолчанию имеют тип String (строка). Тип накладывает ограничения на то, какие значения может принимать слот. Строковый
слот, к примеру, может принимать в качестве значений алфавитно-цифровые
символы (включая пробелы). В данном случае нет необходимости менять в редакторе какие-либо аспекты/грани (facets) созданного слота.
14
Вкладка Slots
Имя слота по
умолчанию
Панель
иерархии
слотов
Кнопка добавления
слота
Тип слота
Рис. 1.9 – Добавление слота
Далее необходимо связать созданный атрибут name (имя) с одним или несколькими классами. К примеру, мы хотим, чтобы каждый из экземпляровподклассов класса Customer_Relations_Department имел имя. Вернемся к вкладке классов и отредактируем класс Customer_Relations_Department. Любой из
создаваемых или связываемых с классом атрибутов будет отображаться в редакторе классов, справа от навигатора классов. Мы уже использовали редактор
классов для смены имени нового класса, а также для изменения роли класса.
Теперь редактор классов используется для просмотра и именования слотов. Для
того чтобы связать слот name с классом (см. рис. 1.10):
1. Перейдите на вкладку классов, расположенную в левой части окна под
панелью инструментов.
2. Выделите класс Customer_Relations_Department в панели иерархии
классов (Class Hierarchy). В области редактора классов (справа) отображается
поле имени, роли класса, а также его документация и ограничения (constraints).
Под этими полями расположена панель шаблонов слотов (Template slots), которая занимает всю оставшуюся нижнюю часть редактора классов. Эта область
показывает слоты, связанные с классом. На текущий момент она должна быть
пуста.
3. Для добавления слота к классу, нажмите кнопку Add Slot. Кнопки
управления слотами находятся в верхнем правом углу панели шаблонов слотов
(Template slots).
4. После того как вы нажмете кнопку, появится диалог выбора слота, в
котором будет отображен список всех доступных слотов проекта (в алфавитном
порядке, за исключением системных классов Protégé, которые будут отображены внизу списка).
5. Выберите созданный ранее слот name и нажмите OK.
15
Кнопка добавления
существующего слота
Редактируемый класс
Добавленный слот
Кнопка создания слота
из вкладки классов
Рис. 1.10 – Добавление нового слота в список шаблонов
Любой подкласс класса автоматически наследует все слоты базового
класса. К примеру, при выборе класса Консультант можно увидеть, что слот
name уже связан с этим подклассом через механизм наследования, при этом
иконка слота отличается от той, которая использовалась в классе Customer_Relations_Department (см. рис. 1.11). Подклассы более чем с одним базовым
классом наследуют слоты от всех базовых классов. К примеру, если для класса
Accounting_Department создать слот зарплата (salary), то класс Consultant унаследует оба слота (name и salary), поскольку имеет два базовых класса. Множественное наследование одна из основополагающих возможностей Protégé.
Рис. 1.11 – Отображение наследованных слотов
2 способ создания слотов. Использование вкладки классов (см. рис. 1.12).
Создадим вышеупомянутый слот salary для класса Settlement_Department:
1. Выберите класс Settlement_Department в панели иерархии классов.
2. Нажмите кнопку создания слота (Create Slot), в правом углу панели
шаблонов слотов – появится окно добавления слота.
3. В поле имя (Name) наберите salary и нажмите ввод.
4. Вернитесь в главное окно (при этом не обязательно закрывать окно редактирования, можно оставить его открытым и вернуться туда позже для редактирования свойств слота). Теперь при выборе класса Settlement_Department новый слот отображается в панели шаблонов слотов.
16
Рис. 1.12 – Создание слота на вкладке классов
Созданные на предыдущем шаге слоты являются простыми. Однако, слоты сами по себе, тоже могут иметь свойства. К примеру, зарплата всегда является числом, так что соответствующий слот может иметь денежный тип. Слоты
также можно использовать для задания отношений между классами. Свойства
слота, называемые аспектами/гранями (facets), могут быть созданы как на
вкладке классов (с использованием диалога спецификации слота), так и на
вкладке слотов (с помощью редактора слотов).
Создание граней слота
Определим аспекты слота salary (зарплата):
1. Выберите класс Settlement_Department в панели иерархии классов.
2. Щелкните на слоте salary в панели шаблонов слотов (Template slots),
откроется форма выбора вида слота. При редактировании данного слота, можно
выбрать, будут ли изменения применяться к слоту и всем связанным с ним
классам (вверх по иерархии до самого верхнего), либо они затронут только текущий класс и всех его потомков.
3. В нашем случае необходимо просмотреть и отредактировать слот верхнего уровня. Убедитесь, что режим просмотра слотов верхнего уровня
(View top-level slot) выбран и нажмите OK. При этом изменение определения
слота будет затрагивать всю онтологию.
4. В открывшейся форме редактирования слота из списка типов значения
(Value Type) выберите Float. Теперь при создании экземпляров данного слота
можно будет вводить их значения только в формате с плавающей запятой.
5. Введите 0 (ноль) в поле Minimum (минимальное значение). Таким образом, любое значение поля salary будет неотрицательным.
6. Закройте, диалог редактирования слота, при этом описание слота в панели шаблонов слотов изменится. В колонке тип теперь указан Float, а в колонке Other facets (другие аспекты) отображено минимальное значение слота, равное нулю.
17
Создание отношений между классами
Система Protégé позволяет создавать слоты, которые могут быть использованы для описания отношений между классами, которые не определены в иерархии классов (см. рис. 1.13). Для этого существуют слоты Instance (экземпляр) или Class (класс). К примеру, Administrator может быть ответственным за
одного или более Consultant.
Создадим новый слот, описывающий связь между ними:
1. В навигаторе классов выберите класс Administrator.
2. Для того чтобы создать и связать новый слот с классом нажмите кнопку Create Slot.
3. В поле имя (Name) открывшейся формы редактирования наберите
«responsible_for» (ответственный за).
4. Из списка типов значений (Value Type) выберите Instance (экземпляр).
Ниже меню выбора типа значения (Value Type) будет отображена панель доступных классов (Allowed Classes).
5. Нажмите кнопку Add Class (в правой верхней части панели
Allowed Classes). Появится окно выбора классов, содержащее все классы проекта. Выберите класс Consultant и нажмите OK.
6. Чтобы разрешить администратору быть ответственным более чем за
одного сотрудника, поставьте галочку в пункте multiple панели мощности
(cardinality).
Имя слота
Тип значения
слота
Свойство множественности связи
Связуемый
класс
Панель доступных классов
Рис. 1.13 – Редактор слота
Аналогично перемещению классов по иерархии, можно перемещать и
слоты. Слоты перемещаются перетаскиванием мышью, в случае копирования –
перетаскиванием с удерживанием клавиши Ctrl.
Скопируйте name и salary в класс Staff.
18
Создание экземпляров классов
Экземпляры классов – это непосредственно данные проектируемой базы
знаний. Создадим два экземпляра класса Administrator (см. рис. 1.14):
1. Перейдите на вкладку экземпляров (instances). Вкладка содержит три
панели. Первая, слева, отображает иерархию классов. Средняя панель, которая
в данный момент пуста, показывает список экземпляров, созданных для конкретного класса. Третья панель соответствует редактору экземпляров класса,
где вводятся значения слотов текущего (выбранного) класса.
2. Раскройте список подклассов класса Customer_Relations_Department.
3. Выберите класс Administrator. Кнопка Create Instance станет активной,
что означает возможность создания экземпляра класса.
4. Нажмите кнопку Create Instance. Будет создан экземпляр класса и появится окно редактора экземпляра. Количество полей данного окна соответствует числу созданных слотов, поля используются для присвоения слотам значений. Заметьте, что отображение класса Administrator в панели иерархии классов
(Class Hierarchy) изменилось после того, как был создан новый экземпляр класса. Единица в скобках означает, что класс имеет один экземпляр.
5. Введите «Игорь Усачев» в поле Имя (Name).
6. Введите «20000» в поле Зарплата (Salary). Если в данное поле ввести
значение, тип которого отличен от заданного типа значений поля (в нашем случае это – Float, число с плавающей запятой), то встроенный редактор подсветит
введенные символы красным цветом. Заметим, что экземпляр в навигаторе экземпляров (Instance Browser) все еще имеет стандартное имя Telecom_Class(4).
Создайте еще один экземпляр класса Administrator – Денис Любимов с зарплатой 40000. Аналогичным образом создайте экземпляры класса Consultant: Михаила Скокова, получающего 15000, и Игоря Сергеенко, с зарплатой 12000.
Закладка
экземпляров
Редактор
экземпляров
Имя экземпляра
Навигатор
классов
Список экземпляров
класса
Кнопка создания экземпляра
Значение
зарплаты
Рис. 1.14 – Вид редактора класса с экземпляром
19
Создание отношений (связей) между экземплярами классов
В этом разделе приводится пример модификации экземпляра Денис Любимов таким образом, чтобы он стал «ответственным» за экземпляр Михаил
Скоков (см. рис. 1.15):
1. Перейдите на вкладку экземпляров (instances), разверните класс Customer_Relations_Department в панели иерархии классов (Class Hierarchy) и выберите класс Administrator. Экземпляры класса Administrator теперь показаны в
навигаторе экземпляров (Instance Browser).
2. Выберите Денис Любимов в навигаторе экземпляров. Слоты для него
будут показаны в редакторе экземпляров, включая слот responsible_for (ответственный за). Заметьте, что система Protégé использует имена слотов в форме
редактора, но автоматически заменяет подчеркивания на пробелы и переводит в
верхний регистр первую букву названия.
3. Нажмите кнопку Add Instance, рядом с полем Responsible For в правой
верхней части окна. Откроется окно диалога с двумя панелями. Слева будет
представлена иерархия доступных классов для слота responsible_for.
4. Выберите класс Consultant. Справа отобразятся все его экземпляры.
Выберите Михаил Скоков и нажмите ОК.
Выполнение перечисленных этапов приводит к созданию отношения
(связи) в онтологии, которая означает, что администратор Денис Любимов является ответственным за консультанта Михаила Скокова.
Доступные
для связи
классы
Доступные
для связи
экземпляры
Кнопка добавления
экземпляра
Рис. 1.15 – Выбор класса для задания связи
20
Настройка формы ввода
Для каждого класса в онтологии, Protégé генерирует форму по умолчанию, которую можно использовать для ввода данных экземпляра. Формы содержат поля ввода данных («виджеты») для каждого слота, связанного с классом. Cтандартная, созданная Protégé, форма может быть изменена на вкладке
форм (Forms) (см. рис. 1.16).
Рис. 1.16 – Конфигурация формы
«Виджет» можно настроить так, чтобы он показывал надпись или список
кнопок, отличные от установленных по умолчанию. К примеру, если требуется
удалить экземпляр слота responsible_for из проекта, досточно просто нажать
кнопку в InstanceListWidget. В свою очередь, для того чтобы отобразить кнопку
удаления необходимо сделать следующее (см. рис. 1.17):
1. Два раза щелкнуть на InstanceListWidget с именем Responsible For в редакторе форм.
2. Перейти на вкладку кнопки.
3. Установить галочку для пункта Show Delete Instance Button (показывать
кнопку удаления экземпляра).
4. Нажать ОК. «Виджет» для слота responsible_for (ответственный за) после проделанных операций будет иметь пять кнопок.
21
Вкладка
«Кнопки»
Свойство отображения кнопки удаления
Кнопка
удаления
Рис. 1.17 – Редактирование свойств «виджета»
Создание и сохранение запросов
Вкладка запросов позволяет записывать и получать сведения по всем экземплярам классов проекта, которые удовлетворяют интересующим критериям.
Для того чтобы создать запрос, необходимо выбрать один или более классов и
один или более слотов в классе (см. рис. 1.18). Можно также сохранять запросы
во встроенной библиотеке для последующего использования (кнопка Add to
Query Library).
Вкладка
«Запросы»
Выбор
класса и
слота
Условия
запроса
Результат
запроса
Библиотека
запросов
Кнопка добавления
запроса в
библиотеку
Рис. 1.18 – Редактор запросов
22
Содержание работы
1. Установить связи Responsible For между старшим кассиром и операторами.
2. Заполнить каждый класс и подкласс минимум двумя экземплярами.
3. Сконструировать и сохранить в библиотеку сложный запрос, включающий как минимум два условия.
4. Установить связи Interact With (взаимодействует с) между существующими абонентами и работниками компании.
5. Построить онтологию заданной предметной области (вариант получить у преподавателя).
Варианты задания
1. Диагностика компьютерной поломки.
2. Выбор подходящей модели сотового телефона.
3. Выбор музыкального инструмента.
4. Составление меню.
5. Выбор желаемого автомобиля.
6. Составление учебных курсов.
10. Выбор бытовой техники.
11. Магазин спортинвентаря;
12. Детский сад;
13. Магазин канцелярских товаров;
14. Железнодорожная касса;
15. Туристическое агентство (подбор туристического продукта);
16. Автосервис;
17. Магазин стройматериалов;
18. Почтовое отделение;
19. Подбор кредитного продукта;
20. Функционирование Университета;
21. Поликлиника;
22. Телекоммуникационная компания;
23. Организация экскурсионных поездок;
24. Функционирование Ресторана;
25. Процесс оплаты коммунальных услуг;
26. Риэлтерское агентство;
27. Деятельность мебельной фабрики;
28. Функционирование Областной библиотеки;
29. Деятельность Издательства еженедельной газеты;
30. Функционирование IT-компании.
Требования к отчету
Отчет о проделанной работе должен содержать:
23
название работы, ее задачи и описание последовательности выполнения;
реализацию онтологии предметной области «Районное отделение
электросвязи»;
реализацию онтологии согласно варианту, полученному у преподавателя.
Контрольные вопросы
1.
2.
Что такое онтологический инжиниринг?
Перечислите основные этапы создания онтологии предметной облас-
3.
4.
Дайте определения понятиям: класс, слот, экземпляр класса.
Поясните этапы создания онтологий в системе Protégé.
ти.
24
ЛАБОРАТОРНАЯ РАБОТА 2
Тема: Искусственные нейронные сети. Многослойный персептрон. Алгоритм обратного распространения ошибки.
Цель работы: закрепление навыков применения математического аппарата искусственных нейронных сетей для решения задач прогнозирования; ознакомление с пакетом Deductor Studio 4.4.
Задачи работы:
1. Изучить структурную схему искусственного нейрона.
2. Изучить алгоритм обучения многослойного персептрона (алгоритм
обратного распространения ошибки).
3. Изучить встроенные средства построения нейронной сети пакета Deductor Studio 4.4.
2.1 Теоретические сведения. Основные понятия
Под искусственной нейронной сетью (НС) понимается математическая
модель, представляющая собой систему из соединенных и взаимодействующих
между собой простых процессоров (искусственных нейронов).
Искусственный нейрон – узел нейронной сети, представляющий собой
упрощенную модель естественного нейрона. С математической точки зрения,
это сумматор всех входящих сигналов, применяющий к полученной сумме некоторую простую функцию.
Структурная схема модели искусственного нейрона приведена на
рисунке 2.1.
x1
x2
x3
w1
w2
w3
ячейка нейрона
n
S
x i wi
i 1
...
F (S)
y
wn
xn
входы веса связей сумматор функция активации выход
Рис. 2.1 – Структурная схема модели искусственного нейрона
25
Входные сигналы xi (i = 1, 2, …, n) суммируются с учетом соответствующих весов Wi в сумматоре (S). Выходной сигнал нейрона yi определяется следующей зависимостью:
yi
F
n
i 1
xiWi
,
где
F(S) – функция активации.
Основные виды функций активации, используемых при построении НС:
линейная, пороговая, сигмоидальная (сигмоид) и др.
Объединение нейронов в общую сеть осуществляется различными способами. В зависимости от выбранной топологии выделяют следующие виды нейронных сетей:
1) полносвязные нейронные сети – структуры, в которых каждый нейрон
сети имеет прямую связь с другими нейронами.
2) многослойные нейронные сети (персептроны) – нейроны объединяются в слои, содержащие совокупность нейронов с едиными входными сигналами.
Могут содержать входной, выходной и N промежуточных слоев.
После того как определено число слоев и число элементов (нейронов) в
каждом из них, нужно найти значения весовых коэффициентов и порогов сети,
которые бы минимизировали ошибку выдаваемого сетью прогноза. Именно для
этого служат алгоритмы обучения. Выделяют обучение с учителем, когда известны желаемые выходные значения нейронов выходного слоя, и обучение без
учителя, когда обучающее множество состоит лишь из входных векторов и веса
сети подстраиваются таким образом, чтобы выходные векторы были согласованы.
2.2 Алгоритм обратного распространения ошибки
Алгоритм обратного распространения ошибки (ОРО, Back Propagation) –
один из алгоритмов обучения с учителем. Алгоритм ОРО реализует два прохода по сети: прямой проход – от входного слоя к выходному и обратный – от выходного слоя к входному. В процессе обучения каждому входному образцу определяется соответствующий выходной образец, который должен получаться
для данного входного, при этом весовые коэффициенты нейронов с каждым новым проходом корректируются. Целью обучения является нахождение такого
набора весовых коэффициентов сети Wi, который обеспечивает решение поставленной задачи.
Рассмотрим пример, демонстрирующий процесс обучения сети методом
ОРО. Пусть сеть состоит из двух слоев нейронов: два нейрона в скрытом слое и
один нейрон в выходном слое (см. рис. 2.2). НС предназначена для прогнозирования курса «доллар США – евро». Обучающая выборка состоит из двух входов (первый – курс «доллар США – евро» позавчера, второй – курс «доллар
США – евро» вчера) и одного выхода (курс «доллар США – евро» сегодня).
Продемонстрируем две итерации обучения и один обратный проход.
Первый прямой проход
На вход скрытого слоя сети подается набор обучающих данных:
26
I сj (i)
где
I1c(1); I2c(1)
= [0.725 0.7],
i – номер итерации;
j – номер входа.
Синаптические матрицы весов для скрытого и выходного слоев имеют
0.1 0.2
0.1 0.2
вид: W(1C)
и W(1в)
0,2
0,1
соответственно.
Рассчитаем взвешенный вход для каждого из нейронов скрытого слоя:
I ci
I1c ; I 2c
0.1 0.2
0.1 0.2
I ciW ic [0.725 0.7]
0.2175 0.21 .
Далее рассчитывается выход скрытого слоя сети, преобразованный функцией активации:
Oci [ FI1ci ; FI2c i ]
1
1
;
1 exp I1ci 1 exp I 2c i
0.554 0.552 .
Выход скрытого слоя является входом для выходного слоя:
O(сi)
I (вi) .
Рассчитываем взвешенный вход для выходного слоя точно так же, как и для
скрытого слоя:
I (вi) [ I1в ; I1в ] I (вi)W(вi)
0.554 0.552
0.2
0.1
0.166 .
Получаем выход сети, преобразованный сигмоидальной функцией активации:
y(вi )
F I (вi )
1
1 exp
в
(i )
O
1
1 e 0.166
0.541.
В то же время рассчитываем желаемое значение выхода сети
D F(y j )
1
0.677 и вычисляем среднеквадратичную ошибку:
0.74
1 e
1 в
1
E
( y(i) D)2
(0.541 0.677)2 0.0092 .
2
2
Далее вычисляем величину скорости реакции ошибки при данном значении выхода сети:
EA y(вi) D 0.541 0.677 0.136 .
Рассчитываем скорость изменения ошибки сети при изменении средневзвешенного входа выходного слоя:
EQ EA yвi 1 yвi
0.136 0.541(1 0.541) 0.034 .
27
Затем рассчитываем вектор значений, на которые следует скорректировать синаптическую матрицу выходного слоя:
T
EW в EQ h1вi ; EQ h2в i
0.034 0.554
0.034 0.552 T
0.019
0.019 T .
Далее необходимо выполнить обратный проход для корректировки весов
сети.
Обратный проход
Изменяем значения весов на входе выходного нейрона (скорость обучения принимаем равной единице =1):
W iв 1 W iв EW в
0.2
0.019
0.219
0.1
0.019
0.119
.
Определяем реакцию ошибки при изменении активности скрытого слоя
для получения корректировочных коэффициентов для скрытого слоя:
EAic EQ Wkc1 EQ 0.2 EQ 0.1
0.07
0.03 ,
где
k – номер нейрона скрытого слоя.
Теперь можно рассчитать корректировочные коэффициенты для синаптической матрицы скрытого слоя:
EW
c
EA1c I1в(1) 1 I1в(1) I1с(1)
EA2c I 2в(1) 1 I1в(1) I1с(1)
EA1c I1в(1) 1 I1в(1) I 2с(1)
EA2c I 2в(1) 1 I1в(1) I 2с(1)
0.07 0.554(1 0.554) 0.725
0.07 0.554(1 0.554) 0.7
0.03 0.552(1 0.552) 0.725
0.03 0.552(1 0.552) 0.7
0.001
0.001
0.001
Р
0.001
ассчитываем скорректированные веса для скрытого слоя:
W ic 1 W ic EW c
0.1 0.2
0.001
0.001
0.101 0.201
0.1 0.2
0.001
0.001
0.101 0.201
.
Для определения степени близости рассматриваемой сети к поставленной
цели, следует выполнить еще один (второй) прямой проход с новыми весами,
но с теми же входами [0.725 0.7].
Описанные итерации повторяются до тех пор, пока ошибка не станет
приемлемой. Далее на вход сети предъявляется новый входной образец и осуществляется прямой проход с вновь полученными весами связей.
2.3 Построение нейронной сети в Deductor Studio 4.4
Deductor Studio содержит полный набор механизмов импорта, обработки,
визуализации и экспорта данных для быстрого и эффективного анализа информации. Реализованные в Deductor Studio механизмы позволяют в рамках одного
приложения пройти весь цикл анализа данных – получить информацию из произвольного источника, провести необходимую обработку (очистку, трансформацию данных, построение моделей), отобразить полученные результаты наиболее удобным образом (OLAP, таблицы, диаграммы, деревья решений и др.) и
экспортировать результаты.
28
Построение НС в системе Deductor Studio происходит в несколько этапов
(в примере реализуется НС, суммирующая числа обучающего набора):
1) Статистическая информация, предназначенная для последующего обучения сети, представляется в формате файла .xls (таблица MS Excel)
(см. рис. 2.2).
Рис. 2.2 – Представление обучающего набора данных
2) Готовый файл с набором обучающих данных загружается в Deductor
Studio (Сценрии → Мастер импорта → MS Excel → Далее):
Рис. 2.3 – Импорт обучающего набора данных
3) Выбирается база данных (Excel-файл с содержащейся в нем статистикой),
строится
нейронная
сеть: MS Excel → Мастер
обработки → Нейросеть → Далее.
4) С помощью запустившегося мастера полученная нейросеть необходимым образом настраивается.
Шаги 3-7 мастера настройки сети изучите самостоятельно.
При определении способа отображения необходимо выбрать способ
«Что-если» (см. рис. 2.4).
29
Рис. 2.4 – Выбор способа отображения
5) Далее, на вкладке «Что-если», путем задания случайных входных значений проверяется работа нейросети (см. рис. 2.5).
Рис. 2.5 – Проверка работы нейросети
Содержание работы
1. Получить номер варианта у преподавателя.
2. Продемонстрировать преподавателю обучение НС методом ОРО (два
прямых прохода и два обратных) согласно варианту.
вариант 1
2
3
4
5
6
7
8
9
10 11 12 13 14 15
30
Входные
значения
Выход
вариант
Входные
значения
Выход
1
2
2
16
10
1
1
10
5
7
17
1
7
3
1
3
4
18
6
3
8
8
2
5
19
2
7
4
1
4
3
20
3
7
6
4
2
2
21
1
9
7
2
2
1
22
9
2
3
10
2
2
23
9
5
5
2
3
6
24
7
6
4
5
5
2
25
6
6
2
1
5
3
26
1
7
8
4
1
3
27
1
9
3
1
6
4
28
6
3
5
5
2
4
29
2
7
3
3
4
2
30
3
7
5
3. Согласно варианту, выданному для выполнения лабораторной работы
№1, реализовать в аналитической платформе Deductor Studio нейронную сеть с
двумя входными, двумя скрытыми и одним выходным слоями. Скорректировать количество нейронов в скрытом слое, количество слоев и количество шагов обучения с целью повышения надежности и достоверности нейронной модели. Проанализировать результаты работы нейросетей различной архитектуры.
Требования к отчету
Отчет о проделанной работе должен содержать:
название работы, ее задачи и описание последовательности выполнения;
расчеты обучения нейронной сети согласно варианту;
реализацию нейронной сети в аналитической платформе Deductor Studio.
Контрольные вопросы
1. Дайте определение понятиям искусственного нейрона, искусственной нейронной сети.
2. Поясните структурную схему модели искусственного нейрона.
3. Что такое алгоритм обучения нейронной сети?
4. Поясните механизм обучения с учителем, обучения без учителя.
31
ЛАБОРАТОРНАЯ РАБОТА 3
Тема: Нечѐткие множества. Моделирование нечѐткой системы средствами инструментария нечѐткой логики.
Цель работы: изучить метод построения нечѐткой системы средствами
инструментария нечѐткой логики.
Задачи работы:
1. Изучить операции над нечѐткими множествами;
2. Изучить операции над нечѐткими отношениями;
3. Изучить инструментарий нечѐткой логики CubiCalc.
3.1 Теоретические сведения. Основные понятия
Нечѐткая логика (fuzzy logic) и теория нечѐтких множеств – обобщение
привычной логики, оперирующей с двоичными числами (истина/ложь), и всех
промежуточных между истиной и ложью состояний. В соответствии с этим нечѐткая логика оперирует числами из интервала [0,1], которые отражают степень
истинности высказывания, при этом, соответственно, 0 ложь, а 1 – истина.
Под
нечѐтким
множеством
А
понимается
совокупность
A
x,
A
x x
X , где X – универсальное множество, а μA(x) – функция
принадлежности (характеристическая функция), характеризующая степень
принадлежности элемента x нечѐткому множеству A.
3.1.1 Операции над нечѐткими множествами
Пересечением нечѐтких множеств A и B (см. рис. 3.1а) называется наибольшее нечѐткое подмножество, содержащееся одновременно в A и B:
( x) min( A ( x), B ( x)) .
A B
Если
А
В
тогда
А∩В
{(x1;1),(x2;0,8),(x3;0),(x4;0),( x5;0)}
{(x1;0,9),(x2;0,7),(x3;1),(x4;0,9),( x5;0,5)}
{(x1;0,9),(x2;0,7),(x3;0),(x4;0),( x5;0)}
32
C
1
1
G
0,9
C
0,9
F
D
0,8
0,8
D
E
0,7
E
0,7
0,6
0,6
B
0,5
0,3
0,3
0,2
0,2
0,1
0,1
x1
x2
x3
x4
x1
x5
H
A
0,4
A
0,4
B
0,5
x2
x3
x4
x5
Рис. 3.1а – Пересечение нечетких
Рис. 3.1б – Объединение нечетких
множеств А и B
множеств А и B
1
0,9
D
D
1
C
E
0,9
E
0,8
0,8
F
G
0,7
C
0,7
0,6
0,6
B
0,5
A
0,4
0,3
0,2
0,2
0,1
0,1
x2
x3
x4
x5
Рис. 3.1в – Разность C=A-B нечетких множеств
F
A
0,4
0,3
x1
B
0,5
x1
x2
x3
x4
x5
Рис. 3.1г – Разность C=B-A нечетких
множеств
33
D
1
E
0,9
0,8
0,7
0,6
C
0,5
A
0,4
0,3
0,2
0,1
x1
x2
x3
x4
x5
Рис. 3.1д – Отрицание A нечеткого множества A
Объединением нечѐтких множеств A и B (см. рис. 3.1б) называется наименьшее нечѐткое подмножество, содержащее одновременно A и B:
A B
( x) max(
A
( x),
B
( x)) .
Если
А
{(x1;1),(x2;0,8),(x3;0),(x4;0),( x5;0)}
В
{(x1;0,9),(x2;0,7),(x3;1),(x4;0,9),( x5;0,5)}
тогда
{(x1;1),(x2;0,8),(x3;1),(x4;0,9),( x5;0,5)}
А В
Отрицанием множества А (см. рис. 3.1д) называется множество
функцией принадлежности
( x) 1 A ( x) .
A
с
A
Если
А
тогда
{(x1;1),(x2;0,8),(x3;0),(x4;0),( x5;0)}
A
{(x1;0),(x2;0,2),(x3;1),(x4;1),( x5;1)}
Отрицание в теории нечетких множеств эквивалентно дополнению множества в математике, однако при этом важно учесть, что результат выполнения
операции отрицания, то есть полученное новое множество, выражено не координатами, а своей размерностью.
Разностью нечѐтких множеств А и В (см. рис. 3.1в, 3.1г) называется такое
нечѐткое множество C A \ B , функция принадлежности которого вычисляется в соответствии с правилом, имеющим следующий вид:
34
c ( x)
Если
А
В
тогда
А\В
A
A\ B ( x)
( x)
B
0, если _
( x), если _
A
( x)
B
A
( x)
B
( x)
( x)
{(x1;1),(x2;0,8),(x3;0),(x4;0),( x5;0)}
{(x1;0,9),(x2;0,7),(x3;1),(x4;0,9),( x5;0,5)}
{(x1;0,1),(x2;0,1),(x3;0),(x4;0),( x5;0)}
Результатом вычитания, как и в случае отрицания, становится размерность множества, а не значения его координат.
3.1.2 Операции над нечѐткими отношениями
Пусть А – нечѐткое множество с элементами из универсального множества X и множеством принадлежностей M=[0, 1]. Тогда носителем (суппортом)
нечѐткого множества suppA называется множество {x | x X , A ( x) 0}.
Таким образом, если на конечном множестве X={x1, x2, x3} задано нечѐткое отношение R с функцией принадлежности:
R
( x, y)
0,2 0,5 0,3
0,7 0,1 0
0 0,1 0,8
,
носителем отношения R будет отношение, матрица функции принадлежности
которого принимает следующий вид:
suppR
1 1 1
1 1 0
0 1 1
.
Множеством уровня α нечѐткого отношения R на множестве X называется подмножество декартова произведения X X , которое имеет следующий
вид:
R
x, y : x, y X X , R
.
Таким образом, множеством уровня =0,5 отношения R будет отношение, матрица функции принадлежности которого принимает следующий вид:
R0,5
0 1 0
1 0 0
0 0 1
.
Для нечѐтких отношений вводятся операции произведения (композиции):
35
Максиминным произведением (максиминной композицией) нечѐтких отношений А и В на множестве X является нечѐткое отношение А◦В с функцией
принадлежности, имеющей следующий вид:
А В
( x, y) sup_ min
A
( x, z ),
B
z X
( z, y)
.
Пусть функции принадлежности нечѐтких отношений А и В на множестве
Х имеют следующие числовые значения:
0,1 0,5
( x, y)
A
0,7 0,8
и
0,2 0,4
( x, y)
B
0,3 0,4
.
Функция принадлежности максиминной композиции данных нечѐтких
отношений имеет вид:
A B
( x, y)
a11
a12
a21
a22
.
Необходимо вычислить значения матрицы a11, a12, a21, a22.
1)
Для нахождения значения элемента a11 попарно сравниваются зна( x, y) с элементами первого
чения элементов первой строки матрицы
A
столбца матрицы
B
( x, y) , выбирается наименьшее значение. Далее из полу-
ченной совокупности минимальных значений окончательно выбираем наибольшее. Эта величина представляет собой искомое значение элемента a11.
min
0,1 0,2
0,5 0,3
0,1
0,3
max
0,3 .
2)
Для нахождения значения элемента a12 попарно сравниваются зна( x, y) с элементами второго
чения элементов первой строки матрицы
A
столбца матрицы
B
( x, y) , выбирается максимальное из минимальных:
min
0,1 0,4 0,1
0,5 0,4 0,3
3)
max
0,4 .
Значения элементов a21 и a22 находятся аналогичным образом:
0,7 0,2
0,8 0,3
min
min
Таким образом,
0,7 0,4
0,8 0,4
0,3
(
x
,
y
)
A B
0,3
0,2
0,3
max
0,4
0,4
0,4
0,4
max
0,3 ,
0,4 .
.
36
Максмультипликативным произведением (максмультипликативной композицией) нечѐтких отношений А и В на множестве X является нечѐткое отношение A B с функцией принадлежности, которая имеет следующий вид:
А*В
( x, y) sup
A
( x, z ),
B
( z, y )
z X
.
Пусть функции принадлежности нечѐтких отношений заданы числовыми
значениями, представленными ранее. Необходимо также вычислить значения
матрицы a11, a12, a21, a22.
1) Для нахождения значения элемента a11 необходимо вычислить про( x, y) и
изведения соответствующих элементов первой строки матрицы
A
элементов первого столбца матрицы
B
( x, y) , выбрать наибольшее значение.
Эта величина представляет собой искомое значение элемента a11:
0,1 0,2 0,02
0,5 0,3 0,15
max
0,15 .
2)
Для нахождения значения элемента a12 необходимо вычислить про( x, y) и
изведения соответствующих элементов первой строки матрицы
A
элементов второго столбца матрицы
( x, y) .
0,1 0,4 0,04
0,5 0,4 0,2
3)
B
max
0,2 .
Значения элементов a21 и a22 находятся аналогично:
0,7 0,2 0,14
0,8 0,3 0,24
max
0,24
и
0,7 0,4 0,28
0,8 0,4 0,32
max
0,32
соответственно.
Таким образом,
A B
( x, y)
0,15
0,2
0,24 0,32
.
3.2 Создание нечѐткой экспертной системы в пакете CubiCalc
CubiCalc 2.0 – разработка фирмы HyperLogic, является одним из наиболее
мощных средств создания систем на основе нечѐткой логики. Пакет содержит
интерактивную оболочку для разработки нечѐтких экспертных систем и систем
управления.
Фактически пакет CubiCalc 2.0 представляет собой своего рода экспертную систему, в которой пользователь задает набор правил типа «если-то», а
система на основе этих правил пытается адекватно реагировать на параметры
37
текущей ситуации. Отличие данного продукта от обычных экспертных систем
состоит в том, что вводимые правила содержат нечѐткие величины, т.е. имеют
вид «если X принадлежит А, то Y принадлежит B», где A и В – нечѐткие множества. Аппарат нечѐткой логики, заложенный в CubiCalc, дает возможность оперировать нечѐткими понятиями как точными и строить на их основе целые логические системы.
Рассмотрим следующий пример: необходимо оценить степень инвестиционной привлекательности конкретного бизнес-проекта (rate) на основании
данных о ставке дисконтирования (discont) и периоде окупаемости (period).
Процесс разработки нечѐткой экспертной системы в пакете CubiCalc начинается с определения переменных, которые будут использоваться в проекте:
Project → Variables → New (см. рис. 3.2).
Рис. 3.2 – Окно определения переменных
В CubiCalc доступны несколько типов переменных:
1) Fuzzy Input – входная переменная, на области значения которой задаются нечѐткие множества, используемые в левой части правил вывода.
2) Fuzzy Output – результат работы системы нечѐткого логического вывода, определяющей нечѐткие множества, используемые в правой части правил
вывода.
3) Constant – переменная с фиксированным значением.
4) Temporary – переменная, принимающая действительные значения
(аналогичные значениям типа «float»).
Объявляем первую переменную как discont (путем ввода в поле name).
Задаем атрибуты переменной: ее тип (Fuzzy Input), диапазон изменения ее значений [5, 50] (параметры Range Low – нижняя граница диапазона, Range High –
верхняя граница), а также начальное значение (Initial Value) равное 5.
После нажатия кнопки «ОК» переменная «discont» появляется в списке
переменных (см. рис. 3.3).
38
Рис. 3.3 – Список переменных
Аналогично создадим вторую входную переменную – period с диапазоном значений [3, 36]. Наименование выходной переменной, на основании которой принимается решение о степени инвестиционной привлекательности бизнес-проекта, задается как rate (диапазон изменения значений – [0, 1]).
Далее необходимо задать характеристики всех трех переменных:
Project → Adjective editor.
Выбрав переменную discont в окне «Adjectives for variables», нажмите
кнопку Edit. Здесь каждой входной и выходной переменной поставьте в соответствие набор функций принадлежности Adjective → Change List → New. В
появившемся окне «Create Adjective(s)» задайте следующие параметры: количество функций принадлежности (Number) равное 3; вид функции принадлежности (Shape) – triangle; ширину основания (base width), равную 45,0 (см. рис. 3.4).
39
Рис. 3.4
В окне «Edit Adjective List» присвоим наименования – small, middle, big –
соответственно небольшой, средней и большой ставке дисконтирования
(см. рис. 3.5). Для переменной period зададим следующие параметры: количество функций принадлежности (Number) равное 3; вид функции принадлежности
(Shape) – trapezoid; base width = 33,0, crown width = 8,25. В окне «Edit Adjective
List» присвоим наименования – short, normal, long – соответственно короткий,
обычный и длительный срок окупаемости.
40
Рис. 3.5
Для переменной rate зададим следующие параметры: количество функций принадлежности (Number) – 3; вид функции принадлежности (Shape) – triangle; base width = 1. В окне «Edit Adjective List» присвоим наименования – bad,
normal, good соответственно.
Далее необходимо определить набор правил, которые связывают входные
переменные с выходными. Для этого в редакторе правил вывода
(Project → Rules) определим:
IF discont is small AND period is short THEN rate is good;
IF discont is middle AND period is long THEN rate is bad;
IF discont is middle AND period is normal THEN rate is normal;
IF discont is big AND period is short THEN rate is normal;
Следующими этапами выполнения проекта в CubiCalc являются так называемые предобработка и постобработка. В процессе предобработки
(Project → Preprocessing) определяются входные данные. Для этого используется функция field(), которая возвращает данные отдельного поля текущей записи.
Откройте Preprocessing Editor (Редактор предобработки) и введите нижеследующие инструкции:
discont = field(1);
period = field(2);
check = field(3);
В рассматриваемой нечѐткой системе всего два входа, третья переменная
(check) содержит «правильный ответ». Таким образом, мы можем посчитать ко41
личество ошибок, совершенных системой в классификации инвестиционной
привлекательности бизнес-проекта.
При постобработке (Project → Postprocessing) задается метод автоматической оценки эффективности системы. Необходимо посчитать количество
сделанных системой ошибок и вывести сумму в конце запуска. Чтобы обнаружить ошибку классификации в постобработке, необходимо сравнить выходную
переменную с информацией в переменной check файла данных.
Чтобы это сделать, вставьте нижеследующие инструкции в окно редактора:
If (rate <> check) errors += 1;end
If (endoffile=TRUE) call message(errors); end
Эти инструкции выполняют сравнение и, если происходит ошибка, дают
приращение переменной errors. Последняя инструкция, при достижении конца
файла входных данных, выводит окно с сообщением, содержащим данные о количестве ошибок.
В процессе настройки системы используются переменные, отличные от
входных и выходных. Для обнаружения и подсчета ошибок классификации мы
использовали в редакторе имена переменной check и переменной errors соответственно. Теперь необходимо создать сами эти переменные.
С помощью меню Variables откройте Variables Editor. Появится диалоговое окно, содержащее имена уже созданных входных и выходных переменных.
Нажмите кнопку New для создания новой переменной.
В окне Edit Variable определите переменные: сheck (тип переменной –
Temporary, начальное значение – 0.0); errors (тип переменной – Temporary, начальное значение – 0.0).
Настройка входного файла
Для импорта входного файла в проект, необходимо:
1) Создать файл с расширением .txt (см. рис. 3.6), задать файлу имя
(File → Input File) и некоторые атрибуты (см. рис. 3.7).
Рис. 3.6
42
Рис. 3.7
2) Указать тип файла – Text. Задать количество Fields per Record (Полей
на запись), равное 3 (каждая запись содержит значения для discont, period и
check) и количество Lines per Record (Строк на запись), равное 1 (каждая запись
занимает одну текстовую строку).
3) Далее необходимо определить, какая информация должна отображаться при запуске системы (Project → Log Format). Нажатием кнопки «Add» выберите из левого списка окна переменные discont, period, rate и check. Убедимся в
непротиворечивости указания переменных (Execute → Check Definitions), снимем флажки Initialization, Simulation.
Проверим работу системы, запустив созданный сценарий Execute → Run.
Появится окно, содержащее значения переменных и их порядок, выбранные в
Log Format Editor. Когда CubiCalc «просмотрит» весь входной файл, появится
заданное на этапе предобработки итоговое сообщение.
Для остановки сценария выполните Execute → Terminate.
Содержание работы
1. Постройте объединение, пересечение, разность нечѐтких множеств
согласно варианту.
Вариант
1
2
3
4
5
6
7
Исходные
множества
1
2
3
4
5
1
2
Вариант
16
17
18
19
20
21
22
Исходные
множества
3
4
5
1
2
3
4
Задание
Постройте объединение нечѐтких множеств: C A B
Постройте пересечение нечѐтких множеств: C A B
Найдите разность отрицаний
A , В нечетких множеств:
C A\ B
43
Вариант
8
9
10
11
12
13
14
15
Исходные
множества
3
4
5
1
2
3
4
5
Вариант
23
24
25
26
27
28
29
30
Исходные
множества
5
1
2
3
4
5
1
2
Задание
Постройте разность нечѐтких
множеств: C A \ B
Постройте разность нечѐтких
множеств: C B \ A
Постройте пересечения
A B, B B
Исходные множества:
МноМножество А
жество
1
{(x1;0,7),(x2;0,5),(x3;0,3),(x4;0),
(x5;0),( x6;0,2)}
2
{(x1;1),(x2;0,8),(x3;0),(x4;0),
(x5;0)}
3
{(x1;0),(x2;0,3),(x3;0,3),(x4;0,5),
(x5;0,2),( x6;0)}
4
{(x1;0),(x2;0),(x3;0,7),(x4;0,4),
(x5;0),( x6;0,3)}
5
{(x1;0,9),(x2;0,8),(x3;0,5),(x4;0),
(x5;0),( x6;0,3)}
Множество В
{(x1;0),(x2;0,3),(x3;0,6),(x4;0,9),
(x5;1),( x6;0)}
{(x1;0),(x2;0),(x3;0,4),(x4;0,7),
(x5;0),(x6;0)}
{(x1;0,1),(x2;0,2),(x3;0,6),(x4;0,9),
(x5;0,5),( x6;0)}
{(x1;0,9),(x2;0,7), (x3;1),(x4;0,9),
(x5;0,5),(x6;0,2)}
{(x1;0,7),(x2;1),(x3;0,5),(x4;0,2),
(x5;0),(x6;0,3)}
2. По заданным функциям принадлежности нечѐтких отношений согласно варианту определить максиминную композицию и максмультипликативную композицию.
0 ,1 0 ,7 0 ,8
a) 0 1 1
0 0 ,5 0 ,3
0 0 ,2 0 ,3
0 ,3 0 ,4 1
b)
0 0 ,9 0 ,9
0 ,5 0 ,6 0 ,7
c) 0 0 1
1
1
1
0 ,8 0 ,3 0 ,4
d) 0 ,4 0 0
0 0 ,1 1
0 ,7 0 ,6 0 ,7
0
e) 0 ,1 0
0 ,5 1 0 ,5
0 0 ,5 0 ,2
f) 0 ,1 0 0
1
1 0 ,4
Вариант
1
2
3
4
5
А
( x, y)
а
b
c
d
e
В
( x, y)
e
а
b
c
d
Вариант
16
17
18
19
20
А
( x, y)
e
а
b
c
d
В
( x, y)
f
c
a
d
e
44
Вариант
6
7
8
9
10
11
12
13
14
15
3.
А
( x, y)
а
b
c
d
e
а
b
c
d
f
В
( x, y)
f
f
e
а
b
d
e
d
b
c
Вариант
21
22
23
24
25
26
27
28
29
30
А
( x, y)
c
d
e
а
b
d
e
d
b
c
В
( x, y)
а
b
c
d
c
f
f
c
a
e
Создать нечѐткую экспертную систему в пакете CubiCalc.
Требования к отчету
Отчет о проделанной работе должен содержать:
название работы, ее задачи и описание последовательности выполнения;
расчеты согласно пунктам 1 и 2 содержания работы;
реализацию нечѐткой экспертной системы в CubiCalc 2.0.
Контрольные вопросы
1. Что такое нечѐткие множества, нечѐткие отношения, носитель нечѐткого отношения, множество уровня? Сформулируйте правила выполнения операций над нечѐткими множествами, отношениями.
2. Перечислите этапы создания проекта в пакете CubiCalc.
45
ЛАБОРАТОРНАЯ РАБОТА 4
Тема: Решение задач с помощью генетических алгоритмов.
Цель работы: Ознакомиться с подходом к решению оптимизационных
задач с помощью генетических алгоритмов (ГА).
Задачи работы:
1. Ознакомиться с основными понятиями ГА.
2. Научиться применять метод ГА для решения задачи о коммивояжере.
3. Изучить программное средство для решения оптимизационных задач с
помощью ГА GeneHunter (на примере задачи о коммивояжере).
4.1 Теоретические сведения. Основные понятия
Генетический алгоритм – это эвристический алгоритм поиска, используемый для решения задач оптимизации и моделирования путем последовательного подбора, комбинирования и вариации искомых параметров. ГА можно рассматривать как одну из разновидностей случайного поиска, которая основана
на механизмах, напоминающих естественный отбор и размножение.
ГА начинает работу с некоторого случайного набора исходных решений,
который называется популяцией. Каждый элемент из популяции называется
хромосомой и представляет некоторое решение проблемы в первом приближении. Хромосомы эволюционируют на протяжении множества итераций, носящих название поколений (или генераций).
Для создания следующего поколения новые хромосомы, называемые отпрысками, формируются либо путем скрещивания двух хромосом-родителей из
текущей популяции, либо путем случайного изменения (мутации) одной хромосомы.
Операция скрещивания (кроссовер). Скрещивание является главной генетической операцией. Эта операция выполняется над двумя хромосомамиродителями и создает отпрыск путем комбинирования особенностей обоих родителей. Приведем простейший пример скрещивания – одноточечный
(см. рис. 4.1). В начале выберем некоторую случайную точку (точка скрещивания Ts), после чего создадим хромосому-отпрыск (см. рис. 4.1в) путем комбинирования сегмента первого родителя (рис. 4.1а), стоящего слева от выбранной
точки скрещивания, с сегментом второго родителя (см. рис. 4.1б), стоящего по
правую сторону от точки скрещивания.
46
Рис. 4.1– Операция скрещивания
Операция мутации. Мутация – операция, производящая случайное изменение в различных хромосомах. Наипростейший вариант мутации состоит в
случайном изменении одной (см. рис. 4.2) или более хромосом. В генетических
алгоритмах мутация играет важную роль для восстановления генов, выпавших
из популяции в ходе операции выбора. Интенсивность мутации определяется
коэффициентом мутации.
Рис. 4.2 – Операция мутации
Кроме того, используется так называемый оператор инверсии, суть применения которого состоит в том, что хромосома делится на две части, после чего эти части меняются местами (см. рис. 4.3).
Рис. 4.3 – Оператор инверсии
В общем случае для функционирования генетического алгоритма достаточно трех рассмотренных генетических операторов, но на практике применяют еще и некоторые дополнительные или модификации представленных операторов. Например, кроссовер может быть многоточечным, когда формируется
несколько точек разрыва (чаще всего две).
4.1.1 Программные средства реализации генетических алгоритмов
1. MatLab (открытие инструментария ГА осуществляется выполнением
команды gatool в командной строке пакета).
2. RawData Analyzer (исследование данных с помощью нескольких видов
нейросетей и генетических алгоритмов).
3. NeuroShell GeneHunter (комплекс мощных программных средств для
решения оптимизационных задач).
47
4. Auto2Fit (инструмент, предназначенный для решения оптимизационных задач и проведения сложных инженерных расчетов).
4.1.2 Задача о коммивояжере
Задача коммивояжера является классической оптимизационной задачей,
которая формулируется следующим образом: дано множество, включающее
п городов и матрица расстояний между ними (или стоимостей переезда – в зависимости от интерпретации). Коммивояжеру необходимо объехать все города
по кратчайшему пути (или с наименьшими затратами на поездку). Причем в
каждом городе он должен побывать один раз и вернуться в исходный город.
Для решения предлагается следующая задача: имеется пять телекоммуникационных станций (ТС), стоимость переезда между которыми представлена матрицей (таблица 4.1):
Таблица 4.1 – Матрица стоимостей проезда
ТС
1
2
3
4
5
0
2
3
4
4
1
2
0
1
2
5
2
3
1
0
1
2
3
4
2
1
0
1
4
4
5
2
1
0
5
Решение представим в виде перестановки чисел от 1 до 5, отображающей последовательность посещения ТС; значение целевой функции будет равно стоимости всей поездки, вычисленной на основе вышеприведенной матрицы. Целью решения алгоритма является поиск минимума целевой функции.
Выберем случайным образом два варианта маршрута M и рассчитаем затраты S(M) по каждому из вариантов:
1) M1=<1,4,2,5,3>, затраты S(M1)=4+2+5+2+4=17;
2) M2=<1,2,3,4,5>, затраты S(M2)=2+1+1+1+4=9.
Маршрут M2 более выгоден, однако может не являться оптимальным из
всех возможных.
Разработаны различные модификации операции скрещивания для поиска
минимума целевой функции, такие как, например, оператор Грефестета
[6, стр.165].
Воспользуемся данным оператором для поиска пути с наименьшими затратами (см. рис. 4.4).
48
1
2
3
4
2
S 2
3
3
4
4
5
4 → 2(2)
S
3
1
4
1
5
1
→ 3(1)
4
1
5
2
→ 4(1)
S
S
5
5
4 → 5(4)
Рис. 4.4 – Иллюстрация работы оператора Грефестета
Таким образом, получили путь M=<1,2,3,4,5>.
4.2 Решение задачи о коммивояжере в GeneHunter
Задача о коммивояжере может быть решена с использованием программного средства, например GeneHunter (см. рис. 4.5). Коммивояжер должен совершить замкнутый маршрут через заданное количество городов. Все города
связаны между собой дорогами, и каждый город коммивояжер должен посетить
только один раз. GeneHunter решает эту задачу, выбирая порядок посещения
городов и минимизируя длину маршрута.
49
Рис. 4.5 – Решение задачи о коммивояжере в GeneHunter
Задаются следующие параметры:
1. параметры популяции (количество индивидуумов);
2. параметры эволюции:
вероятность скрещивания pc (случайный способ объединения хромосом из родительской популяции в пары);
вероятность мутации pm (вероятность изменения значения гена в хромосоме на противоположное);
степень обновления (обновление исходной популяции путем создания
новых особей и уничтожения «бесперспективных», не удовлетворяющих критерию целевой функции);
стратегия элитизма заключается в том, что особи с наибольшей приспособленностью гарантированно переходят в новую популяцию.
Содержание работы
1. Решите задачу о коммивояжере методом ГА согласно полученному варианту:
ТС
1
2
3
4
5
1
0
4+а
2
3+c
1+b
2
5+а
0
4+b
3
2
3
6
7+b
0
2+а
1+а
4
4+c
9
3
0
9+c
5
2
2+c
8+а
7
0
6
2+b
3
7
5+b
5
50
6
1+а
4
2+b
5+c
7
0
2. Изучите работу программы GeneHunter, самостоятельно задав точки
городов (карта по выбору пользователя); изучите вкладку «Статистика».
Номер варианта
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
а
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
3
3
3
3
3
4
4
4
4
4
5
5
5
5
5
b
1
1
1
1
1
2
2
2
2
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
3
4
5
2
c
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
3
3
4
1
Требования к отчету
Отчет о проделанной работе должен включать:
название работы, цель, последовательность выполнения;
решение задачи о коммивояжере в соответствии с полученным вариантом;
ответы на контрольные вопросы.
51
Контрольные вопросы
1. Что такое генетический алгоритм, оператор скрещивания, мутации,
инверсии?
2. Поясните цель решения задачи о коммивояжере.
3. Сформулируйте правила, по которым определяется результат применения оператора скрещивания Грефенстета.
4. Что такое вероятность скрещивания, мутации, стратегия элитизма?
52
СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
1. Люггер, Дж.Ф. Искусственный интеллект: стратегии и методы решения сложных проблем/ Дж. Ф. Люгер; пер. с англ. под ред. Н.Н.Куссуль.- 4-е
изд..- М.: Вильямс, 2003.- 864 с.: ил.
2. Назаров, А. В. Нейросетевые алгоритмы прогнозирования и оптимизации систем/ А. В. Назаров, А. И. Лоскутов; [под ред. М.В. Финкова].- СПб.:
Наука и Техника, 2003.- 384 с.: ил.
3. Осовский, С. Нейронные сети для обработки информации/
С. Осовский; пер. с пол. И. Д. Рудинского.- М.: Финансы и статистика, 2004.
4. Пономарев, А.С. Нечѐткие множества в задачах автоматизированного
управления и принятия решений: Учебное пособие. – Харьков, 2005.
5. Романов, В. П. Интеллектуальные информационные системы в экономике: учеб. пособие для вузов/ В. П. Романов ; под общ. ред. Н. П. Тихомирова.- М.: Экзамен, 2003.- 496 с.: ил.
6. Романов, А.Н. Советующие информационные системы в экономике:
Учеб. пособие для вузов. / А.Н.Романов, Б.Е.Одинцов. – М.:ЮНИТИ-ДАНА,
2000. – 487 с.
7. Рутковская, Д. Нейронные сети, генетические алгоритмы и нечѐткие
системы/ Д. Рутковская, М. Пилиньский, Л. Рутковский; пер. с польск. И. Д.
Рудинского.- М.: Горячая линия-Телеком, 2004.- 452 с.: ил.
8. Ярушкина, Н. Г. Основы теории нечѐтких и гибридных систем: учеб.
пособие для вузов/ Н. Г. Ярушкина.- М.: Финансы и статистика, 2004.- 320 с.:
ил.
9. Яхъяева, Г. Э. Нечѐткие множества и нейронные сети: учеб. пособие/
Г.Э.Яхъяева. – М.: Интернет Ун-т Информ. Технологий: БИНОМ. Лаб. знаний,
2006.- 316 с.: ил.
53
Методические материалы
Жданова Е.И.
Трошин Ю.В.
Халимов Р.Р.
ПРОЕКТИРОВАНИЕ
БАЗ ДАННЫХ И БАЗ ЗНАНИЙ
Методические указания
для выполнения лабораторных работ
54
Документ
Категория
Без категории
Просмотров
3
Размер файла
1 683 Кб
Теги
baz, znanij, proektir, halimov, troshin, zhdanov, dannih
1/--страниц
Пожаловаться на содержимое документа