ритмические операции обработки НТ, а именно, операция формирования ВРНТ по исходному ВР и обратная операция генерации ряда - представителя НТ. ННС предложенной архитектуры является эффективным генератором правил распознавания
НТ. Разработанная математическая имитационная модель терминала сервера как элемента вычислительной сети на основе ВРНТ позволяет прогнозировать загрузку процессора, исходящий и входящий трафики сервера.
ПОСТРОЕНИЕ ЭКСПЕРТНЫХ СИСТЕМ НА БАЗЕ ИЕРАРХИЧЕСКОГО НЕЧЕТКОГО ВЫВОДА
Н.Н. Ястребова (УлГТУ, г. Ульяновск)
При проектировании экспертных систем программист неизбежно сталкивается со сложными задачами представления данных и моделирования человеческих рассуждений, решение которых связано с областью искусственного интеллекта.
Для моделирования сложных рассуждений о явлениях реального мира, когда описание системы представляет собой большую совокупность переменных различной природы, возникает необходимость использования иерархических баз знаний. Это связано с тем, что эксперту сложно уловить взаимосвязи объектов, если их количество превышает 9. Кроме того, применение иерархических нечетких баз знаний позволяет преодолеть "проклятие размерности" и небольшим количеством нечетких правил адекватно описать многомерные зависимости "входы-выход".
На рисунке 1 приведен пример иерархической нечеткой базы знаний, моделирующей зависимость y=f(x1,x2,x3,x4,x5,x6) с использованием трех баз знаний. Эти базы знаний описывают зависимости: Уl=fl(Xl>X2), У2=f2(X4,X5,X6) и У=fз(Уl,Xз,У2).
Пусть для лингвистической оценки переменных используется по пять термов. Тогда максимальное количество правил для задания зависимости y=f(x1,x2,x3,x4,x5,x6) с помощью одной базы знаний будет равным 56=15625. Для иерархической базы знаний (рис.1), описывающую ту же зависимость, максимальное количество правил будет равным 52+53+53=275. Причем это «короткие» правила с двумя-тремя входными переменными.
Существует два способа создания иерархических систем нечеткого вывода.
1. Выполнение нечеткого вывода для промежуточных переменных с последующей передачей четких значений этих переменных в нечеткие системы следующего уровня иерархии. Недостаток этого способа состоит в том, что над промежуточными переменными (у1, у2 на рис. 1) последовательно выполняются операции дефаззификации и фаззификации. Следовательно, для промежуточных переменных надо задавать функции принадлежности. Кроме того, необходимо обеспечить эквивалентность нечетких множеств до и после операций дефаззификации и фаззификации.
2. Процедуры дефаззификации и фаззифика-ции для промежуточных переменных не выполняются. Результат логического вывода в виде нечеткого множества напрямую передается в машину нечеткого вывода следующего уровня иерархии. Поэтому для описания промежуточных переменных в иерархических нечетких базах знаний достаточно задать только терм-множества без определения функций принадлежностей.
Очевидно, что второй метод дает преимущества:
- избавляет пользователя от необходимости задания функций принадлежности для промежуточных переменных (как известно, эта процедура является одним из самых узких мест теории нечетких множеств);
- использование в качестве основы нечеткого вывода по Сугено позволяет избежать накопления нечеткости, при этом отсутствие промежуточных процедур фаззификации/дефаззификации снижает вычислительную погрешность.
Рассмотрим алгоритм выполнения иерархического нечеткого вывода (рис.2).
1. Вектор входных переменных, используемых на всех шагах нечеткого вывода \x1,x2,...,xm\ ).
2. Преобразование входных переменных в нечеткую форму - процедура фаззификации.
3. Цикл i:=1 ^ N do (где N - число шагов нечеткого вывода).
3.1. Выполнить процедуру нечеткого логиче-
Вектор входных переменных
Преобразование в нечеткую форму (фаззификация)
Вычисление детерминированного результата (дефаззификация)
| Вектор выходных параметров
Рис. 2. Модель иерархического нечеткого логического вывода
ского вывода с использованием соответствующих переменных и соответствующей базы правил.
3.2. if i=N then goto 4 (дефаззификация результата) else полученное нечеткое множество yi передать на вход процедуры нечеткого логического вывода следующего уровня (i:=i+1). 4. Дефаззификация.
Рассмотрим математическую модель, лежащую в основе нечеткого вывода.
В основу разработанного программного продукта легла схема нечеткого логического вывода по Сугено. Нечеткий вывод по алгоритму Сугено выполняется по нечеткой базе знаний:
ki n
U(Hxi =ai,jpc secoMWjp)^y =b j,o+b j,rx 1+ (1) p=1 i=1 (1)
+Ь j,2'X 2 + ■■■+b j,n'X n,
где j=1,m, bj,t - некоторые числа.
База знаний Сугено (1) аналогична базе знаний Мамдани:
ki n
U(Hxi = at,jpC secoMWjp)^y = dj, (2)
p=1 i=1
где j =1,m , за исключением заключений правил dj, которые задаются не нечеткими термами, а линейной функцией от входов: dj=bjo + 'Zbj.i'Xi.
i=1,n
Правила в базе знаний Сугено (1) являются своего рода переключателями с одного линейного закона "входы-выход" на другой, тоже линейный. Границы подобластей размытые, следовательно, одновременно могут выполняться несколько линейных законов, но с различными степенями. Степень принадлежности входного вектора x* = (x1>x'2>...>x'*n) к значениям dj=bj,o + ZbjSXi
i=1,n
рассчитывается следующим образом:
Mdi (x* )= v Wjp•, dX(x* )\j=1m,
p=1ki i=1,n- -1
где a(v) - операция из s-нормы (t-нормы), то есть из множества реализаций логической операций ИЛИ (И). В нечетком логическом выводе Су-гено наиболее часто используются следующие реализации треугольных норм: вероятностное ИЛИ как s-норма и произведение как t-норма.
В результате получаем такое нечеткое множе-
~ *
ство у , соответствующее входному вектору х :
у=——-+——-+...+ йт-.
й 1 й 2 й т
В отличие от результата вывода по Мамдани (2), приведенное выше нечеткое множество является обычным нечетким множеством первого порядка, заданным на множестве четких чисел. Это позволяет избежать при его использовании в системах иерархического нечеткого вывода накопления нечеткости. Результирующее значение выхода у определяется как суперпозиция линейных зави-
и *
симостей, выполняемых в данной точке х га-мерного факторного пространства. Для этого де-фаззифицируют нечеткое множество уу , находя
(х
1=1,т й '
взвешенное среднее у=-;—:— или взве-
2Ат( х')
1=1,т
шенную сумму у = й (х*) й 1.
1 =1,т й '
Разработанное приложение было разделено на пакеты в четком соответствии с выполняемыми ими задачами. Для декомпозиции была использована парадигма мус (тойи1е-у1ец>-сопгго1). Ее смысл состоит в том, чтобы отделять данные от их представления и от управляющей части.
Пакет 1¥ииу в соответствии с вышеуказанной классификацией - управляющая часть - является главным модулем программы и отвечает за выполнение расчетов по иерархическому нечеткому выводу.
]¥и1хуТоо\ - графический модуль, предоставляющий пользователю возможность создания и редактирования иерархий нечеткого вывода при проектировании экспертных систем на его основе.
]¥и1хуВЕ - модуль для работы с данными, используемый для расчетов в экспертной системе анализа эколого-экономического анализа предприятия, построенной на многошаговом нечетком логическом выводе.
имь-диаграмма приложения представлена на рисунке 3.
Для нормального функционирования эксперт-
jfuzzydb
-1 1_
Jfuzzydb.dao
-1-
_ I
I i_
Jfuzzydb.dto
Рис. 3. Взаимосвязь модулей программы
1
Jfuzzytool
jfuzzy
ная система должна:
- понимать язык, на котором пользователь излагает свою задачу;
- уметь построить формальную модель этой задачи, чтобы применить формальные методы решения;
- составить программу решения задачи;
- запустить программу и получить результат;
- интерпретировать результат, то есть представить его в форме, доступной пользователю;
- объяснить (при необходимости), каким образом был получен этот результат.
В процессе формулирования задачи между пользователем и экспертной системой происходит диалог, во время которого пользователь сообщает компьютеру содержание задачи. В нашем случае пользователь задает иерархическую последовательность вычислительных задач.
Организация проекта на базе объектно-ориентированного программирования позволила легко перейти от одношагового (стандартного) нечеткого вывода к многошаговому (иерархическому) путем изменения поведения соответствующих классов в зависимости от шага вывода. Все задачи экспертной системы (class FuzzyTask) в программе разбиты на слои (class FuzzyLayer). Каждый шаг нечеткого вывода представлен экземпляром класса FuzzyTask, задающего набор входных переменных и правил нечеткого вывода. Также в зависимости от шага итерации необходимо знать, нужны ли процедуры фаззификации и дефаззификации переменных на данном шаге. Это проблема представления данных, которая была решена следующим образом: вместо бинарных файлов для хранения информации о нечетком выводе используется формат xml, позволяющий хранить иерархическую систему в виде древовидной структуры.
Слой - структурная единица, содержащая все независимые задачи, которые могут выполняться параллельно, и результат выполнения одной не влияет на ход вычисления других задач. Порядок слоев, их количество, а также количество задач каждого слоя определяются пользователем.
Задачей (Task) называется атомарная расчетная единица нечеткого логического вывода, представляющая собой схему нечеткого логического вывода по Сугено.
Переменная - входная или выходная лингвистическая переменная нечеткого вывода.
При создании системы задаются и сохраняются не только отдельные подзадачи, но и связи между ними, позволяющие переходить от одного шага иерархического нечеткого вывода к другому. Для промежуточных переменных не нужно задавать функции принадлежности, и, соответственно, над ними не выполняются операции промежуточной фаззификации/дефаззификации.
/** Calculates fuzzy output for one
input vector. */ public Double[] calculateSingle
Output(Double[] input) throws FuzzyException {
int startFrom=0; // run throw all layers for(FuzzyLayer layer : m_layers ) { for(Integer num : layer.tasks) {
// set inputs from input vector startFrom += m_tasks[num]
assignInputs(input, startFrom); m_tasks[num].evaluate();
}
}
m_tasks[m_taskCount-1].defuzzyfication(); return m_tasks[m_task-
Count-1].getOutput();
}
Приведенный фрагмент кода отвечает за вычисление результата многошагового нечеткого вывода. Он проходит по всем слоям, для каждой задачи вычисляет выходное нечеткое множество, и если слой последний, то происходит процедура дефаззификации, то есть превращение нечеткого множества в четкое значение выходной переменной, которое может быть интерпретировано.
Создание новых иерархических систем нечеткого вывода в интерактивном режиме и редактирование уже существующих систем, которые могут быть загружены из xml-файлов - основная задача графического модуля JFuzzyTool.
Этот пакет реализует следующие возможности: сериализацию многошагового нечеткого вывода; графическое представление иерархии объектов; редактирование всех компонентов системы, в том числе функций принадлежности переменных, правил логического вывода.
JFuzzyDB, как уже было отмечено выше, - модуль для работы с исходными данными, используемый для расчетов в экспертной системе эколо-го-экономического анализа предприятия, построенной на многошаговом нечетком выводе (см.: Иванова Н.Н. Применение иерархического нечеткого вывода в экспертной системе эколого-экономического анализа. // Сб. стат. IV Междунар. науч.-технич. конф.: Пенза, 2006; Иванова Н.Н., Ярушкина Н.Г. Исследование многошагового нечеткого вывода на примере построения экспертной системы оценки экологической безопасности производственной деятельности. // Тр. 10 национ. конф. с междунар. участ. КИИ-2006. -М.: Физматлит, 2006. Т. 2). Это база данных, содержащая необходимые сведения для работы экспертной системы. Она состоит из 14 таблиц, которые можно подразделить на 3 группы: справочники, таблицы исходных данных и расчетные таблицы, содержащие значения полученных аналитических показателей.
В результате работы формируется отчет, представляющий собой экспертное заключение, которое может быть использовано и как самостоятельное, и как вспомогательный инструмент в работе эксперта.
Разработанный программный продукт позволяет моделировать рассуждения человека-экспер-
та о предметной области с большой степенью приближенности рассуждений к формальной логике. Это делает его пригодным для построения
экспертных систем. Удобный и наглядный интерфейс дает возможность работать с программой широкому кругу пользователей.
РАЗРАБОТКА МНОГОЗАДАЧНЫХ ОСРВ ВСТРАИВАЕМЫХ СИСТЕМ
НА ОСНОВЕ ОТКРЫТОГО КОДА
В.В. Шишкин, к.т.н.; В.В. Улыбин (УлГТУ, г. Ульяновск)
Почти 90 % всех процессоров работают не непосредственно в компьютерах, а скрыто, в качестве так называемых встраиваемых систем, являющихся, по сути, специализированными системами контроля, управления и обработки информации. Мировой рынок встраиваемых систем оценивается экспертами в 138 миллиардов евро, а его рост -9 % в год. Современные встраиваемые системы представляют собой сложные аппаратно-программные комплексы, функциональные требования к которым возрастают с каждым годом. Постоянное усложнение данных систем приводит к необходимости обеспечения эффективного управления аппаратным и программным обеспечением и к быстрой переносимости программного кода при переходе на новые аппаратные платформы без потери эффективности. Данные требования обеспечиваются в большей степени организацией операционной системы (ОС).
Достаточно большой сегмент рынка встраиваемых систем занимают системы реального времени (РВ), оцениваемые по времени отклика системы на внешние события, называемого латентно-стью системы. В зависимости от значения латент-ности различают системы мягкого РВ (латент-ность - 1 мс) и жесткого РВ (латентность системы - 10-100 мкс, латентность ядра - 1-10 мкс) (Introduction to Linux for Real-Time Control. Tehnical Report. -National Institute of Standards and Technology. 2002). Несмотря на то что вся система позиционируется как система РВ, не все задачи требуют для своего выполнения режим РВ. Проведенный авторами анализ функциональных требований к авиационным комплексным системам электронной индикации и сигнализации (КСЭИС), показал, что в большинстве случаев только небольшая часть приложений (10-20 %) должна выполняться в масштабе РВ. Также зачастую этим задачам требуется только порядка 5-10 % тех сложных сервисов ОС, в которых нуждается остальная часть приложения. Данный факт может быть использован при оптимизации работы ОС РВ, что, в свою очередь, возможно лишь при реализации архитектуры ОС с многоуровневым планированием.
В настоящее время наибольшими функциональными возможностями и средствами разработки обладают коммерческие ОС РВ. Некоторые из
них, например ЬуихОЪ, сертифицированы для применения в системах военного и аэрокосмического назначения. Однако стоимость таких ОС РВ очень велика (до $150000 в год на одного разработчика), а закрытый исходный код ядра ОС, затрудняет его использование в системах с многоуровневым планированием. Альтернативным решением является разработка ОС РВ на основе систем, распространяемых по открытым лицензиям. Для решения поставленной задачи необходимо: разработать архитектуру ОС РВ, минимизировать размер образа ядра ОС, оптимизировать процесс загрузки ОС с целью минимизации времени старта системы.
Для разработки и оценки архитектуры ОС РВ используем компонентную модель задачи РВ. Предлагаемая модель рассматривает исполняемую программу как фиксированный набор задач РВ {I}, каждая из которых представлена пятеркой вида Т-гКРьйьОь^о Р> со следующими обязательными временными характеристиками: период выполнения Рг, предельный срок Д-, начальное смещение О1 и время выполнения в наихудшем случае 1W¡. Кроме этого, каждой задаче назначается приоритет исполнения р,. Все эти атрибуты являются статическими в том смысле, что они определяются в процессе разработки и не изменяются во время функционирования системы.
В свою очередь, задача I, определяется как последовательность компонент Ау}, осуществляющих определенный набор действий и характеризующихся определенным временем отклика Су. По времени отклика следует различать компоненты РВ (КРВ), исполнение которых обязательно при любых обстоятельствах, и компоненты общего назначения (КОН), исполнение которых не является строго обязательным и осуществляется за счет резерва процессорного времени. Согласно данной модели планирование КОН осуществляется в соответствии с доступным резервным процессорным временем. Каждый компонент получает свой интервал времени, за пределами которого его исполнение невозможно. Если в процессе планирования выясняется, что КОН не может закончить свою работу в отведенное для него время, то он удаляется из очереди планирования. Согласно представленной модели задачи в ОС необходимо