1626434812-e667f6b6e7e69d3a0798830a58e9075b (844135), страница 52
Текст из файла (страница 52)
Для их задания предназначена специальная компонента системы "Редактор переменных" (ЪапаЫе ЕЙ1ог). Важный этап разработки проекта — определение нечетких множеств, которые будут использованы в процессе работы. Для этого в состав СцЬ1Са!с входит графический редактор ~Афес6~е Ей~ог). Он позволяет достаточно просто задавать и модифицировать описания функций принадлежности входных и выходных переменных. Система использует кусочно-линейную аппроксимацию этих функций, графики которых строятся с использованием мыши, а также готовых шаблонов, предоставляемых пакетом. Пример описания функций принадлежности средствами СиЬ1Са1с приведен на рис.
9.20. Глава У. Нечеткая логика и ее применение в экспертных системах 371 О.4 о.о .4ао жо -ъо»1а Рис. 9.20. Пример описания функций принадяелсности средствами СиЬ|Са!с. Нечеткие правила логического вывода в СцЬ1Са1с формулируются как предложения на английском языке. Словарный запас пакета скуднее, чем у "среднестатистического" англичанина, поэтому общаться с ним приходится, используя фиксированное число слов. Тем не менее их набор достаточен для формулирования правил любой сложности.
Типичное правило на языке системы выглядит так: 1~Рт~се ы НфЬ АИЮ Оетапс3 Ыоя Йеп Ритспазез зйоиЫ ое ЯтаП. (Если цена высока и спрос низок, то объем закупок мал) Для определения правил используется встроенный текстовый "редактор правил" (Кц1е ЕЖог). Процесс выполнения проекта в СцЬ1Са1с состоит из нескольких этапов (см. рис. 9.21): инициализация (1пй1а1яайоп); ввод данных (1прц1); предобработка (Ргергосезз1пя); выполнение правил (Кц1ез Ехесцпоп); постобработка (Роз1ргосеЫпя); вывод данных (ОШрц1); моделирование (Йпш1а6оп).
Для описания алгоритмов, работающих на этих этапах, используется язык программирования СцЬ1Са1с'а Ехргеззюп 1.апяцаяе (СЕЬ). Его возможности и синтаксис традиционны для процедурных языков третьего поколения. К особенностям СЕ1 следует отнести наличие средств определения степени вхождения скалярных значений в нечеткие множества, средства матричной обработки и обмена данными с другими приложениями или экземплярами СцЬ1Са1с, используя технологию 0РЕ (Эупаппс Эа1а ЕхсЬапце). Глава У. Нечеткая логика и ее применение в экснертных системах 273 На шаге инициализации производится присвоение начальных значений переменным, а также выполнение действий, предусмотренных пользователем, для подготовки нечеткой экспертной системы к работе.
Последующие этапы повторяются циклически до тех пор, пока не будет выполняться условие завершения обработки. На шаге ввода данных СцЫСа1с, если требуется, получает значения из входного файла или берет значения, введенные пользователем. В системе реализован произвольный доступ к файлам„состоящим из записей. Предобработка используется для преобразования введенных данных, изменения значений переменных. Этап выполнения правил нечеткого вывода — основа функционирования СцЫСа1с.
Он предназначен для вычисления выхода базы правил в зависимости от текущих значений входных переменных. Последовательность действий, выполняемых на этом этапе, традиционна для подобных систем. СцЫСа1с позволяет выбрать методы суперпозиции и скаляризации нечетких множеств, которые будут использованы в процессе логического вывода. На стадии постобработки реализуются операции преобразования результатов вывода, присвоения значений внутренним переменным, используемым для записи результатов в файл или представления их в графическом виде на этапе вывода данных.
Кроме того, на этой стадии могут модифицироваться условия окончания выполнения проекта. Этап моделирования используется для получения отклика внешней системы на данные, генерируемые нечеткой экспертной системой. Теперь мы знаем достаточно, чтобы написать собственную нечеткую экспертную систему.
Воспользуемся исходными данными рассмотренной выше задачи об управлении вентилятором. Ранее мы уже определились, как должна работать система управления скоростью вращения вентилятора, какие правила и функции принадлежности надо использовать. Теперь эти правила и функции надо ввести в СцЬ1Са!с.
Разработку нашей системы разобьем на 5 этапов: 1) определение набора используемых переменных; 2) ввод правил нечеткого логического вывода; 3) определение функций принадлежности для нечетких множеств, заданных на интервале изменения температуры и скорости вращения; 4) указание операций, которые потребуются для обеспечения функционирования системы в динамике; 5) определение переменных, значения которых будут отображаться на графике в процессе работы.
Для начала запустим СцЬ1Са1с. Как и большинство приложений %пйожз, при установке СцЫСа!с создает для себя папку в главном меню "Старт". По умолчанию эта папка называется "СцЫСа1с 2.0". Для запуска программы надо выбрать в этой папке иконку с названием "СцЫСа1с КТС 2.0". Чтобы загрузить СцЬ1Са!с из %1пдоюз 3.1, надо в Ргодгагп Мапаиег выбрать группу "СцЬ1Са1с 2.0" и щелкнуть два раза на иконке "СцЬ1Са1с КТС 2.0".
Базы данных. Интеллектуальная обработка инфориации Рис. 9.2 з. Вид главного окна СиЬ|Са1с после зп«рузки. Главное окно СвЬ|Са1с поддерживает стандартный для %1 произ интерфейс с системой меню (см. рис. 9.22). Выбор команд из меню можно осуществить как мышью„так и с помощью клавиатуры. Подробные сведения о том, как это сделать, а также о приемах работы в Ж1пдоъ в можно получить в справочной системе Мпс1оиз. Вызвать ее можно, выбрав в меню "Пуск" команду "Справка". При загрузке СоЬ1Са1с автоматически открывает новый проект 'Ъп1п!сс1" ~без имени), Далее мы дадим ему название, Поразмыслим о том, какие переменные будут нам необходимы.
Экспертная система будет использовать значение температуры в комнате, на ее выходе будет значение скорости вращения вентилятора. В СнЬ1Са1с доступны несколько типов переменных: 1) Гнюу 1пра — входная переменная, на области значений которой задаются нечеткие множества, используемые в левой части правил вывода,' 2) гыру Оыри1 — результат работы системы нечеткого логического вывода, на интервале ее изменения определяются нечеткис множества, используемые в правой части правил вывода; 3) Сопя1ап~ — переменная с фиксированным значением; 4) Тегпрогагу — переменная, принимающая действительные значения.
Этому типу переменных соответствует тип "Йово" языка С. Тип Тегпрогагу позволяет также задавать массивы размерностью до 3. Очевидно, что переменная, хранящая значение температуры воздуха в комнате, должна быть типа "Гцкз 1пра", а переменная, в которую записывается скорость вентилятора, — "Гивху Ошро1". Определим их переменные в СиЬ1Са1с. Глава У.
Нечеткая логика и ее применение в экспертных системах 275 В меню ьРго~ес1" (проект) выберите команду ьУапаЫеа..." (переменные). Нажмите кнопку "Хеч ь (новая переменная) на появившейся диалоговой панели. Система попросит нас ввести имя и атрибуты новой переменной (см. рис.9.23). Рис. 9.23.
Диалоговая панель для задания атрибутов новой переменной В строке "Коогп" введем название переменной — КоотТеп~регапзге (температура в комнате). Выберем ее тип — "Гмину 1прц1", а также зададим диапазон изменения ее значений. В поле "Калде 1 о~ч" (нижняя граница диапазона изменения) введем "О", а в поле "Капуе НцЬ" (верхняя граница диапазона изменения) — "60" (в рассмотренном выше примере температура изменялась от 0'С до 60'С). Остальные поля оставьте без изменений Нажмите кнопку "ОКь— КоогпТегпрегагиге появилась в списке переменных (см. рис. 9.24).
Рис. 9.24. Панель диалога со списком переменных. Базы данных. Интеллектуальная обработка информации Определим переменную для скорости вращения вентилятора. Нажмите кнопку 'Ъев". Введите название переменной — Галереей (скорость вентилятора). Укажите ее тип ~"Рвюу Олрпгп) и диапазон изменения значений (от 0 до 1000). Нажмите "ОК".
В панели со списком переменных щелкните на кнопке "Ропе" 1готово). Теперь нам необходимо задать правила вывода, которыми будет руководствоваться наша экспертная система. Перед этим необходимо определиться, какие нечеткие множества мы будем использовать и как их именовать в Сц1лСа1с— правила в системе записываются на английском языке. В примере, рассмотренном ранее, было определено по 3 множества для каждой переменной: высокая", "средняя" и "низкая". Нет причин это менять, договоримся лишь использовать английские названия вместо русских: Н1цЬ (высокая), Иоппа! (средняя) и 1оъч 1низкая). Как уже отмечалось, простейшее правило в СпЫСа1с имеет вид: 11 <переменная> 1з <нечеткое множество> Йеп <переменная> 1з <нечеткое множество>; Для того чтобы запустить редактор правил системы, в меню "Рго1ес1" 1проект) выполните команду "Вп1ез" (правила).
Возможности этого редактора аналогичны программе "Блокнот" (Хо1ерай) из поставки Мпс1оъъ. Введите правила, представленные на рис. 9.25. Д ; "'я йи1ее Фог йве Фап соМгоПег ехрегй ецв1ев ~е Еспи температура воздцха в комнате высокая, то скорость !М врадемия вентилятора высокая И йоовтеврегайиге 1е Н19Ь ФЬеп ГапЗреео 1е Н19п; в Еспи тенператцра аоздцха в комнате средняя, то скорость 'е врааения вентипятора средняя ;И йоовтеврегаймге 1е йогва1 Ф6еп Гапзреео хе Ногва1; ~Ф Если температцра воздуха в комнате низкая, то скорость 'М вравания вентияятора низкая 1 И йоовтеврегИоге 1е 1 он йЬеп Гапзреео ~е 1.ои;~ Рис.
9.25. Редактор правил вывода. Строки, начинающиеся с "Ф", рассматриваются системой как комментарий. Любая непустая строка интерпретируется как правило вывода. Обратите внимание, что правило заканчивается точкой с запятой. Глаеа 9. Нечеткая логика и ее применение е экспертных системах 277 Наверное, настало время сохранить разрабатываемый проект. Как в большинстве программ, результаты работы можно сохранять в любое время, и не надо пренебрегать такой возможностью. В меню "Ие" (операции с файлами) выберите пункт "За~е Аз..." (сохранить как).
Задайте имя файла проекта и каталог, в котором его надо сохранить. Неплохим именем будет — "1ап" (вентилятор). Следующий этап создания нечеткой экспертной системы — определение функций принадлежности для нечетких множеств, В меню "Рго~ес1" (проект) выполните команду "Афесй ез 1ог..." «функции принадлежности для). Появится диалоговая панель со списком переменных типа "Гцлау 1прцг" и "Голому Оц1рцг" (см. рис. 9.26), Выберите переменную КоотТетрега1цге и щелкните на кнопке "ЕЙ1" (редактировать).