НЕЧЕТКОЕ ОПРЕДЕЛЕНИЕ УРОВНЯ ОПАСНОСТИ СИТУАЦИИ НА ОСНОВЕ ЗНАЧЕНИЙ НЕСКОЛЬКИХ ИНДИКАТОРОВ Наибольшую трудность в технологии индикативной оценки текущей ситуации представляет собой задача определения класса опасности ситуации, заданного в виде лингвистической переменной с нечеткими значениями, на основе значений нескольких индикаторов. Постановка задачи. Входными переменными х1, х2, …xn являются значения индикаторов, измеряемые на разных шкалах, в разных единицах измерения. Выходной переменной y является класс опасности – лингвистическая переменная с нечеткими значениями. Значениями (термами) данной переменной являются наименования классов опасности ситуаций. Например: «нормальная», «опасная», «кризисная», «катастрофическая». Каждому значению соответствует нечеткое множество O1, O2, … Оm. При оценке (классификации) текущей ситуации s задаются конкретные значения индикаторов х1, х2, …xn, характеризующие данную ситуацию. Необходимо найти степени принадлежности текущей ситуации к заданным классам опасности, т.е. сформировать одноточечные множества {Oi, µOi}. Например: <O1, 0>, <O2, 0.7>, <O3, 0.2>, <O4, 0>. Данная запись означает, что текущая ситуация относится к классу О2 («опасная») со степенью 0.7, к классу О3 («кризисная») – со степенью 0.2, к остальным классам – со степенью 0. Степень принадлежности можно трактовать как степень уверенности в соответствующем значении класса опасности. Помимо нечеткой оценки уровня опасности текущей ситуации может быть сформирована и количественная (четкая) оценка, например, в виде числа от 0 до 100. Чем больше значение такой оценки, тем выше уровень опасности. На рис. 1 представлена общая схема индикативной оценки ситуации. Индикаторы Классы опасности x1 О1, µO1 Текущая ситуация x2 … Процедура оценки ситуации y xn Рис. 1. Схема индикативной оценки ситуации Рассмотрим способы решения поставленной задачи. О2, µO2 О3, µO3 О4, µO4 y* 1. Композиция нечетких множеств, построенных для отдельных индикаторов. Необходимо определить функции принадлежности ситуации к заданным классам опасности отдельно по каждому из индикаторов. Функции для отдельного индикатора строятся на базовом множестве его значений. Если имеется два индикатора x1, x2 и четыре класса опасности O1-О4 (например, «нормальная», «опасная», «кризисная», «катастрофическая»), то необходимо построить 8 функций: µО1(x1), µО2(x1), µО3(x1), µО4(x1), µО1(x2), µО2(x2), µО3(x2), µО4(x2). В качестве иллюстративного примера на рис. 2а приведены функции принадлежности для индикатора x1, принимающего непрерывные значения от 0 до 100, на рис. 2б – функции для индикатора x2, принимающего дискретные значения от 1 до 10. Например, для ситуации «Высказывания на определенную тематику» это могут быть: x1 – «частота упоминания опасных слов», x2 – «категория слов»; для ситуации «Активность криминальных групп»: x1 – «количество связей между членами группы», x2 – «категория группы». μ μO1 μO3 μO2 μO4 1 0.8 0.6 0.4 0.2 0 10 20 30 40 50 60 70 80 90 100 а) x1 μ 1 μO1 0.8 μO2 0.6 μO3 0.4 μO4 0.2 0 1 2 3 4 5 6 7 8 9 10 x2 б) Рис. 2. Функции принадлежности к классам опасности: а) – для индикатора с непрерывными значениями; б) – для индикатора с дискретными значениями Определение класса опасности ситуации осуществляется в следующей последовательности. Шаг 1. Введение нечеткости (фаззификация) по отдельным индикаторам. Для каждого индикатора, исходя из его значения, характеризующего текущую ситуацию, по функциям принадлежности определяется класс опасности. Например, для индикатора x1 степень принадлежности ситуации к классу О2 равна 0.6, а к классу О3 – 0.25 (рис. 2а), для индикатора x2 степени принадлеж- ности ситуации к классам О2 и О3 соответственно равны 0.5 и 0.7 (рис. 2б). Степени принадлежности к классам О1 и О4 по обоим индикаторам равны 0. Шаг 2. Композиция нечетких множеств по всем индикаторам. Для того чтобы сформировать общую оценку ситуации, учитывающую оценки, полученные по отдельным индикаторам, используется композиция одноточечных нечетких множеств, полученных на предыдущем шаге. Если индикаторы могут по отдельности характеризовать ситуацию, т.е. ситуация классифицируется или по x1, или по x2, или по обоим индикаторам, то используется операция max-объединения: μ Oi ( y ) max μ Oi ( xk ) . k Пример. Допустим при оценке текущей ситуации по отдельным индикаторам были получены следующие значения: µО2(x1)=0.6, µО3(x1)=0.25, µО2(x2)=0.5, µО3(x2)=0.7. Тогда значения функций принадлежности, полученные с помощью max-объединения, будут равны: µО2(y) = max{µО2(x1), µО2(x2)} = max{0.6, 0.25} = 0.6, µО3(y) = max{µО3(x1), µО3(x2)} = max{0.5, 0.7} = 0.7. Если индикаторы характеризуют ситуацию только в совокупности (необходимо учитывать одновременно значения всех индикаторов), то используется операция min-пересечения: μ Oi ( y ) min μ Oi ( xk ) . k Пример. Используя значения µО2(x1), µО3(x1), µО2(x2), µО3(x2), приведенные выше, получим: µО2(y) = min{µО2(x1), µО2(x2)} = min{0.6, 0.25} = 0.25, µО3(y) = min{µО3(x1), µО3(x2)} = min{0.5, 0.7} = 0.5. Если индикаторы дополняют друг друга, причем их вклад в общую оценку ситуации различен и характеризуется определенным весом, то используется выпуклая комбинация нечетких множеств: μ Oi ( y ) λ k μ Oi ( xk ) λ k [0,1] λ k 1. k k Пример. Если веса λ1 и λ2 равны соответственно 0.6 и 0.4, то применяя данный способ к степеням принадлежности, полученным выше, получим: µО2(y) = 0.6∙µО2(x1) + 0.4∙µО2(x2) = 0.6∙0.6 + 0.4∙0.25 =0.46, µО3(y) = 0.6∙µО3(x1) + 0.4∙µО3(x2) = 0.6∙0.5 + 0.4∙0.7 = 0.58. Шаг 3. Приведение к четкости (дефаззификация). Помимо оценки ситуации в виде лингвистической переменной, может быть получена не нечеткая оценка в виде числового значения на некоторой универсальной шкале (например, в виде числа натурального ряда от 1 до 10 или от 1 до 100). Для этого необходимо построить функции принадлежности для выделенных классов опасности на базовом множестве числовых оценок. Функции принадлежности «отсекаются» по высоте на уровне вычисленной степени принадлежности к соответствующему значению лингвистической переменной. Например, если на предыдущем шаге были получены следующие значения: µО2(y) = 0.25 и µО3(y) = 0.5, то функция принадлежности к классу О2 отсекается на уровне 0.25, а функция принадлежности к классу О3 – на уровне 0.5 (см. рис. 3). Объединение «усеченных» функций дает одно общее нечёткое множество µsum(y). На рис. 3 ему соответствует закрашенная область. μ μO1 μO3 μO2 μO4 1 0.8 0.6 0.4 0.2 0 10 20 30 40 50 60 70 80 90 100 y Рис. 3. Пример приведения к четкости оценки опасности ситуации Для получения количественного значения по полученной функции µsum(y) могут использоваться различные методы – центра тяжести, центра площади, левого или правого модального значения и др. Наиболее распространен метод центра тяжести. В соответствии с ним чёткое значение y* определяется как центр тяжести кривой µsum(y): b y* s μ sum ( y ) dy a b , μ sum ( y ) dy a где a и b – левая и правая границы интервала значений, на котором функция µsum(y) больше 0 (на рис. 3 a = 12, b = 85). 2. Нечеткий вывод на множестве правил-продукций. Необходимо сформировать правила-продукции формата «ЕСЛИ-ТО», содержащие в условной части некоторую комбинацию нечетких значений индикаторов, а в заключении – класс опасности ситуации, соответствующий данной комбинации: Правило 1: ЕСЛИ x1 есть A1 И x2 есть B1 ТО y есть О1; Правило 2: ЕСЛИ x1 есть A2 И x2 есть B2 ТО y есть О2; …, где x1, x2 – индикаторы, A1, A2, …, B1, B2, … – нечеткие значения индикаторов, y – класс опасности ситуации, O1, O2, … – нечеткие значения класса опасности. Кроме того, каждое правило может характеризоваться степенью истинности Fi – числом в интервале от 0 до 1 ( Fi [0,1] ). Степени истинности правил задаются экспертами при формировании базы правил. Нечетким значениям индикаторов необходимо сопоставить функции принадлежности, построенные на базовом множестве количественных значений (непрерывных или дискретных). Для значений классов опасности также могут быть построены функции принадлежности на множестве числовых оценок (например, от 0 до 100). Необходимо отметить, что в данном случае нечеткие значения индикаторов – это не классы ситуаций, а некоторые произвольно заданные значения: «низкий», «высокий», «малый», «большой», «близко», «далеко» и т.д. Количество значений (термов) индикаторов может не совпадать с количеством классов опасности. Например, для ситуации «Активность криминальных групп» в качестве индикатора x1 может выступать показатель «количество связей» (между членами группы), принимающий значения «небольшое», «среднее», «большое», а в качестве индикатора x2 – показатель «рост количества связей», принимающий значения «нет роста», «незначительный», «умеренный», «резкий». Примеры правил: Правило 1: ЕСЛИ «количество связей» есть «небольшое» И «рост количества связей» есть «нет роста» ТО «класс ситуации» есть «нормальная»; Правило 2: ЕСЛИ «количество связей» есть «небольшое» или «среднее» И «рост количества связей» есть «умеренный» ТО «класс ситуации» есть «опасная»; Правило 3: ЕСЛИ «количество связей» есть «среднее» И «рост количества связей» есть «резкий» ТО «класс ситуации» есть «критическая»; Правило 4: ЕСЛИ «количество связей» есть «большое» И «рост количества связей» есть «резкий» ТО «класс ситуации» есть «катастрофическая». Если ситуация может быть классифицирована отдельно по каждому индикатору, то для каждого индикатора записывается отдельное правило, т.е. вместо правила: ЕСЛИ «количество связей» есть «небольшое» ИЛИ «рост количества связей» есть «нет роста» ТО «класс ситуации» есть «нормальная» Используются два правила: ЕСЛИ «количество связей» есть «небольшое» ТО «класс ситуации» есть «нормальная»; ЕСЛИ «рост количества связей» есть «нет роста» ТО «класс ситуации» есть «нормальная». Правила продукции более точно отражают логику оценивания ситуации по индикаторам, чем прямое сопоставление значениям индикаторов класса опасности ситуации (как это было в вышеописанном способе оценки ситуации путем композиции нечетких множеств, построенных для отдельных индикаторов). Рассмотрим алгоритм нечеткого вывода на множестве правил-продукций (упрощенный алгоритм вывода). Шаг 1. Введение нечёткости. Определяются степени истинности каждой предпосылки каждого правила путем сопоставления фактическим значениям индикаторов, характеризующим текущую ситуацию, степеней принадлежности к нечетким (лингвистическим) значениям. Пример. Текущая ситуация с активностью криминальных групп характеризуется тем, что количество связей равно 25 и рост количества связей составляет 30%. Пусть с помощью функций принадлежности, построенных для индикатора «количество связей», было установлено, что количественному значению x1 = 25 соответствуют нечеткие значения: < «небольшое»/0, «среднее»/0.8, «большое»/0.3 >. С помощью функций принадлежности, построенных для индикатора «рост количества связей», было определено, что значению x2 = 15 соответствуют следующие значения: <«нет роста»/0, «незначительный»/0, «умеренный»/0.75, «резкий»/0.25> Определим теперь степени истинности (СИ) предпосылок правил, приведенных выше (Правила 1- 4). Правило 1. СИ («количество связей» есть «небольшое») = 0, СИ («рост количества связей» есть «нет роста») = 0. Правило 2. СИ («количество связей» есть «небольшое» или «среднее») = 0.8, СИ («рост количества связей» есть «умеренный») = 0.75. Правило 3. СИ («количество связей» есть «среднее») = 0.8, СИ второй («рост количества связей» есть «резкий») = 0.25. Правило 4. СИ обеих предпосылок равны 0. Шаг 2. Логический вывод. Для каждого правила степень истинности условия определяется как минимум степеней истинности всех предпосылок (поскольку предпосылки связаны логической операцией И). Истинность заключения правила равна степени истинности условия. Если правило характеризуется определенной степенью истинности, то применяется операция минимум к степеням истинности условия и всего правила или умножение. Пример. Рассмотрим, как определяются степени истинности заключений правил 2 и 3 (для правил 1 и 4 СИ условий и заключений = 0). Правило 2. СИ («класс ситуации» есть «опасная») = min {СИ(«количество связей» есть «небольшое» или «среднее»), СИ («рост количества связей» есть «умеренный»)} = min {0.8, 0.75} = 0.75. Правило 3. СИ («класс ситуации» есть «критическая») = min {СИ(«количество связей» есть «среднее»), СИ («рост количества связей» есть «резкий»)} = min {0.8, 0.25} = 0.25. Шаг 3. Композиция. Все нечёткие значения выходной переменной y (класс ситуации), выведенные по всем правилам, объединяются вместе, чтобы сформировать одно нечёткое множество SUM Oi . i Пример. Для SUM = <«нормальная», 0 > v < «опасная», 0.75 > v < «критическая», 0.25 > v < «катастрофическая», 0>. Объединение функций принадлежности, «усеченных» на уровне соответствующих степеней истинности дает одно общее нечёткое множество µsum(y). Шаг 4. Приведение к чёткости. Значение выходной переменной находится с применением центроидного метода: чёткое значение выходной переменной определяется как центр тяжести кривой µsum(y). На рис. 4 приведена схема, иллюстрирующая приведенный алгоритм. Рис. 4. Иллюстрация алгоритма нечеткого вывода Системы с нечеткой логикой удобны для описания знаний эксперта. Однако их адекватность полностью зависит от уровня знаний и квалификации эксперта. Набор правил формулируется человеком-экспертом и может оказаться неполным или непротиворечивым. Также субъективно выбираются вид и параметры функций принадлежности, описывающих входные и выходные переменные. 3. Вывод на нейронной сети. Если нет четкой зависимости класса ситуации от значений индикаторов, можно построить нейронную сеть (НС). Используя обучающую выборку, содержащую различные комбинации значений индикаторов и соответствующие значения классов опасности, можно обучить сеть и в дальнейшем использовать ее для классификации возникающих ситуаций. Основным элементом нейронной сети является искусственный нейрон (см. рис. 5), который осуществляет преобразование входных сигналов xi в выходной сигнал y. Математическая формула нейрона: y f ( s), s w i xi b , i где. wi – вес i-го входного сигнала, b – смещение, f – нелинейное преобразование (функция активации). Чаще всего в качестве функции активации использу1 ют сигмоид (функция S-образного вида): f ( s ) . 1 e as x1 w1 Входной слой Скрытый Выходной слой слой w2 x2 f(Σ) … wn … xn … … b Рис. 5. Структура нейрона Рис. 6. Двухслойная сеть прямого распространения Нейронная сеть представляет собой совокупность нейронов, определенным образом соединенных друг с другом и с внешней средой. Выделяют три типа нейронов, связанные с расположением нейрона в сети – входные (обычно в них не осуществляется вычислительных процедур, информация лишь передается с входа на выход), выходные и промежуточные. Все виды нейронных сетей можно разделить на сети прямого распространения, в которых сигналы от нейрона к нейрону распространяются в направлении от входов сети к ее выходам, и сети с обратными связями. На рис. 6 приведена двухслойная сеть прямого распространения. Выбор структуры нейронной сети осуществляется в соответствии с особенностями и сложностью задач. При наличии достаточно полного набора индикаторов, позволяющих классифицировать возникающие ситуации, и репрезентативной обучающей выборки задача индикативной оценки ситуации может быть проинтерпретирована как задача аппроксимации. В настоящий момент уже достаточно хорошо разработаны теоретические аспекты использования и реализованы многочисленные практические приложения сетей прямого распространения для решения проблем такого типа. Входной слой содержит значения индикаторов, выходной – класс ситуации. Количество скрытых слоев зависит от типов индикаторов. При наличии только дискретных значений индикаторов (например, 0 – 1, т.е. есть опасность – нет опасности) используются два скрытых нелинейных слоя, а для непрерывных значений может быть только один скрытый нелинейный слой, подобные рекомендации являются следствием теоремы Колмогорова об аппроксимации непрерывной функции, заданной на гиперкубе. В процессе функционирования НС формирует выходной сигнал Y в соответствии с входным сигналом X (вектором значений индикаторов), реализуя некоторую (неизвестную!) функцию g, Y = g(X). Поэтому прежде чем использовать НС, необходимо ее обучить. Если архитектура сети задана, то вид функции g определяется значениями весов и смещений сети. Обучение нейронной сети состоит в нахождении параметров нейронов (весов и смещений), обеспечивающих наименьшее отклонение найденного решения от желаемого результата. Обучение «с учителем» предполагает, что для каждого примера из обучающей выборки заранее известен результат, и нужно подобрать такие параметры, чтобы на каждый возможный входной сигнал формировался правильный выходной сигнал. Существует множество методов обучения НС: методы локальной оптимизации с вычислением частных производных; методы глобальной оптимизации, стохастической оптимизации. Для обучения НС, осуществляющей оценку ситуации, может быть использован алгоритм обратного распространения ошибки – один из наиболее распространенных алгоритмов обучения. Это итеративный градиентный алгоритм, используемый для минимизации среднеквадратичного отклонения текущих от требуемых выходов НС. Алгоритм описывается следующими шагами. Шаг 1. Инициализация параметров модели (весов нейронов) случайными значениями. Шаг 2. На вход сети подаётся обучающий пример – вектор значений индикаторов xn. Шаг 3. Сеть вычисляет результат y (класс ситуации). Шаг 4. Производится настройка параметров модели исходя из ошибки yd, где d – ожидаемый результат. Шаг 5. Переход к шагу 2, если ошибка достаточно велика или число итераций не превысило некоторую заданную величину, иначе завершение алгоритма. Математически алгоритм описывается следующими выражениями. В качестве функции ошибки можно взять ошибку, получаемую по методу наименьших квадратов: 1 𝐸({𝑤𝑖,𝑗 }) = (𝑦𝑘 − 𝑑𝑘 )2 , где {𝑤𝑖,𝑗 }- значения весов сети, 𝑖, 𝑗 – индексы 2 нейрона-отправителя и нейрона-получателя сигнала. 𝑦𝑘 - выход сети на обучающем примере k, 𝑑𝑘 – желаемый выход сети на обучающем примере k. Настройка весовых значений {𝑤𝑖,𝑗 } может быть произведена на базе градиентного спуска по функции ошибки: ∆𝑤𝑖,𝑗 = −𝜃 𝜕𝐸 𝜕𝑤𝑖,𝑗 , где 𝜃 - скорость обучения модели, положительное число меньше 1. Согласно правилу дифференцирования сложной функции: 𝜕𝐸 𝜕𝑤𝑖,𝑗 Обозначив, через 𝛿𝑗 множитель = 𝜕𝐸 𝜕𝑓𝑗 𝜕𝐸 𝑑𝑓𝑗 𝜕𝑠𝑗 ∙ ∙ 𝜕𝑓𝑗 𝑑𝑠𝑗 𝜕𝑥𝑖 ∙ 𝑑𝑓𝑗 𝑑𝑠𝑗 , получим Для нейронов последнего слоя сети: 𝜕𝐸 = 𝛿𝑗 ∙ 𝑥𝑖 , где 𝛿𝑗 = 𝑓 ′ (𝑠) ∙ (𝑦𝑗 − 𝑑𝑗 ), 𝑦𝑗 и 𝑑𝑗 есть j-тые компоненты вы𝜕𝑤𝑖,𝑗 ходного и желаемого выходов соответственно, 𝑥𝑖 – выход i-того нейрона предыдущего слоя, 𝑓 ′ (𝑠) - производная функции активации. Для всех остальных нейронов, которые располагаются в предыдущих слоях: 𝜕𝐸 𝜕𝑤𝑖,𝑗 = ∑ ( 𝑘∈Выходы нейрона 𝑗 (𝛿𝑘 ∙ 𝑤𝑗,𝑘 ) ∙ 𝛿𝑗 ∙ 𝑥𝑖 ) 4. Вывод с помощью гибридной (нейронечеткой) системы. Каждый из описываемых способов оценки имеет свои достоинства и недостатки по возможностям обобщения, обучения, выработки результатов. Нейронные сети идеально подходят к задачам распознавания, кластеризации, интеллектуального анализа данных, но они плохо подходят к проблеме представления знаний и объяснения своей работы. Нечёткая логика хорошо объясняет принцип вывода результата, но не способна автоматически приобретать новые знания для последующего использования в механизмах вывода. Объединение нейронных сетей и нечёткой логики в нейронечёткой системе дает возможность сочетать возможность приобретения новых знаний путём подстройки параметров функций принадлежности методами обучения нейросетей и логическую прозрачность. Модель нейронечёткой системы (МННС) состоит из 5 слоёв. Рис.7. Структура нейро-нечёткой сети Слой 1. Входной. Служит для хранения значений входных переменных. Слой 2. Слой введения нечёткости. К входным переменным применяется правила приведения к нечеткости и вычисляются степени истинности предпосылок правил. Слой 3. Слой правил. Определение степеней истинностей правил. Слой 4. Отсечение функций принадлежности заключений правил на уровнях, вычисленных в предыдущем слое. Слой 5. Слой приведения к чёткости. Состоит их одиного нейрона, хранящего комбинированное подмножество, характеризующееся функцией принадлежности µsum(w) (объединение функций принадлежностей, усечённых на предыдущем этапе). Если известен вид ФП, но неизвестны параметры ФП, то перед использованием модели необходимо выполнить их настройку. Пользователь или настройщик модели обладает априорной информацией о попадании того или иного параметра в некоторый интервал. Первоначально параметры ФП устанавливаются случайными величинами из этих интервалов. Затем произодится настройка нейро-нечеткой модели путем анализа её ошибок на тестовых и обучающих примерах. Корректировка параметров ФП может производится либо на основе градиентного алгоритма, представленного в разделе 3, либо на основе генетического алгоритма (ГА). В основе последнего лежит идея о том, что оптимальное решение в сложной комбинаторной задаче можно получить, используя «эволюцию» среди решений, близких к оптимальному, на заданном пространстве. Стандартный генетический алгоритм начинает свою работу с формирования начальной популяции I0 = {i1, i2, …, in} — конечного набора допустимых решений задачи. Эти решения могут быть выбраны случайным образом или получены с помощью вероятностных жадных алгоритмов. Выбор начальной популяции не имеет значения для сходимости процесса, однако формирование "хорошей" начальной популяции (например, из множества локальных оптимумов) может заметно сократить время достижения глобального оптимума. Каждое решение (в генетическом программировании, оно называется особью) оценивается мерой его "приспособленности" согласно тому, насколько "хорошо" соответствующее ему решение задачи. В природе это эквивалентно оценке того, насколько эффективен организм при конкуренции за ресурсы. Наиболее приспособленные особи получают возможность "воспроизводить" потомство с помощью "перекрестного скрещивания" с другими особями популяции. Это приводит к появлению новых особей, которые сочетают в себе некоторые характеристики, наследуемые ими от родителей. Наименее приспособленные особи с меньшей вероятностью смогут воспроизвести потомков, так что те свойства, которыми они обладали, будут постепенно исчезать из популяции в процессе эволюции. Иногда происходят мутации, или спонтанные изменения в генах. Таким образом, из поколения в поколение, хорошие характеристики распространяются по всей популяции. Скрещивание наиболее приспособленных особей приводит к тому, что исследуются наиболее перспективные участки пространства поиска. В конечном итоге популяция будет сходиться к оптимальному решению задачи. Преимущество ГА состоит в том, что он находит приблизительные оптимальные решения за относительно короткое время. ГА состоит из следующих компонент: 1.Хромосома - решение рассматриваемой проблемы. Состоит из генов. 2.Ген – оптимизируемый параметр. 3.Начальная популяция хромосом - набор операторов для генерации новых решений из предыдущей популяции. 4.Целевая функция – оценка близости к оптимуму. Чтобы применять ГА к задаче, сначала выбирается метод кодирования решений в виде строки - хромосомы. После кодирования начальной популяции запускается эволюционный процесс. На каждом шаге эволюции с помощью вероятностного оператора селекции выбираются два решения, родители i1, i2. Оператор скрещивания (также называется кроссовер) по решениям i1, i2 строит новое решение i'. Оператор скрещивание осуществляет обмен частями хромосом между двумя (может быть и больше) хромосомами в популяции. Может быть одноточечным или многоточечным. Одноточечный кроссовер работает следующим образом. Сначала, случайным образом выбирается одна из l-1 точек разрыва. Точка разрыва - участок между соседними генами в хромосоме. Обе родительские структуры разрываются на два сегмента по этой точке. Затем, соответствующие сегменты различных родителей склеиваются и получаются два генотипа потомков. Некоторые из хромосом подвергаются мутациям - стохастическим изменениям части хромосом. Каждый ген строки, которая подвергается мутации, с вероятностью Pmut (обычно очень маленькой) меняется на другой ген Затем решение добавляется в популяцию, а решение с наименьшим значением целевой функции удаляется из популяции. Общая схема такого алгоритма может быть записана следующим образом. 1. Выбрать начальную популяцию I0 и положить f* = max { f (i) | i I0}, k : = 0, где f (i) – целевая функция. 2. Пока не выполнен критерий остановки делать следующее. 2.1. Выбрать родителей i1, i2 из популяции Ik. 2.2. Построить i' по i1, i2. 2.3. Модифицировать i' . 2.4. Произвести мутацию i' с вероятностью Pmut. 2.5. Если f* < f (i' ), то f* : = f (i' ). 2.6. Обновить популяцию и положить k : = k+1. Работа генетического алгоритма представлена на рис. 8. Оптимум достигнут Создание начальной популяции Проверка целевой функции (среднеквадратичная и абсолютная ошибка сети) Загрузка оптимальной хромосомы в сеть Генерация новой популяции Оптимум не достигнут 1. Отбор 2. Скрещивание 3. Мутация Рис.8. Функционирование генетического алгоритма. При использовании генетического алгоритма для решения этой задачи хромосому можно создать следующего вида (рис. 9). На рис. 9 an, bn, cn – параметры функций принадлежности для индикаторов ситуации. μ μA1 a1 a1 b1 b1 c1 c 1 a2 d1 μA3 μA2 a2 d1 b2 b2 c 2 a3 c2 d2 d2 b3 a3 μA4 c 3 a4 b3 c3 d3 b4 d3 c4 a4 d4 b4 c4 x1 d4 Рис. 9. Структура хромосомы. В качестве целевой функции можно взять сумму абсолютных ошибок сети на 100 случайных примерах для данной хромосомы. Пример решения задачи индикативной оценки ситуации с помощью нейронечеткой системы. Шаг 1. Построение обучающей выборки. Допустим, имеется два индикатора x1, x2, принимающие значения в виде действительного числа в заданном диапазоне. Для каждого индикатора генерируется случайный ряд значений. Далее для каждого наблюдения (пары значений индикаторов) эксперт задает класс опасности – одно из четырёх возможных значений. Вместо случайной генерации могут быть использованы значения индикаторов для ранее имевших место ситуаций. На рис. 10 приведены графики изменения значений двух индикаторов при переходе от одной ситуации к другой и номера классов для каждой ситуации. x1 x2 1 4 2 3 1 4 3 Класс 2 Рис. 10. Исходные обучающие примеры. В таблице 1 приведены обучающие примеры, полученные случайным образом. В качестве диапазона изменения значений для обоих индикаторов взят интервал [0, 3.4]. Примеры сгруппированы по классам ситуаций. Таблица 1. Обучающие примеры Инд.1 Инд.2 Класс 0,8 0,5 1 0,8 1,2 1,4 1,3 1,8 1,8 1,8 2 2 2 2,3 2,5 2,8 2,7 3 1 1 1 1 1 1 1 1 1 Инд.1 Инд.2 Класс Инд.1 Инд.2 Класс Инд.1 Инд.2 Класс 0,2 0,4 0,5 0,8 0,7 0,5 0,4 0,6 1 2,8 2,6 2,7 2,6 2,9 3 3,2 3,3 3,3 2 2 2 2 2 2 2 2 2 1,3 1,5 1,8 2 2,2 0,9 1,2 1,6 1,5 0,5 0,9 1,2 1,6 2 1 1,4 1,5 1,9 3 3 3 3 3 3 3 3 3 2,2 2,8 3,1 3,4 3 2,8 2,3 2,6 2,8 0,7 0,6 1,1 2,1 1,8 1,4 1,1 2 2,2 4 4 4 4 4 4 4 4 4 Графически расположение обучающих примеров можно представить на координатной плоскости (рис.11). Рис.11. Расположение обучающих примеров на координатной плоскости Шаг 2. Кластеризация значений индикаторов и построение правил. Для формирования правил-продукций необходимо найти нечеткие множества классов по каждому индикатору. Для этого можно воспользоваться кластеризацией обучающих примеров. Одним из наиболее простых вариантов решения этой задачи может быть решение, представленное на рис.12. Рис.12. Вариант кластеризации обучающих примеров Предлагаемая кластеризация позволяет определить 3 функции принадлежности (ФП) для индикатора 2, и 6 ФП для индикатора 1. Возможно, определение меньшего числа ФП для индикатора 1 (4 ФП вместо 6), но в таком случае придется пожертвовать точностью аппроксимации и скоростью настройки системы. Рис.13 Области кластеров Для определения класса 1 необходимо 2 правила вывода: первое осуществляет вывод для области A2/B2 класса O1 (области показаны на рисунке 13), второе – для области A3/B3 класса O1. Второй класс O2 определяется одним правилом вывода (область A1/B3). Для третьего O3 и четвертого O4 классов необходимо по 2 правила вывода для областей A3/B1, A4/B2 и A5/B1, A6/B2 соответственно. Ниже даны все 7 правил вывода. Номер региона на рис.13 – например A1/B3 – указывает на уровни индикаторов, первая цифра – уровень (ФП) индикатора 1, вторая цифра уровень (ФП) индикатора 2. Правила вывода: 1. Если x1 есть А3 И x2 есть В3 ТО y есть О1 2. Если x1 есть А2 И x2 есть В2 ТО y есть О1 3. Если x1 есть А1 И x2 есть В3 ТО y есть О2 4. Если x1 есть А3 И x2 есть В1 ТО y есть О3 5. Если x1 есть А4 И x2 есть В2 ТО y есть О3 6. Если x1 есть А5 И x2 есть В1 ТО y есть О4 7. Если x1 есть А6 И x2 есть В2 ТО y есть О4 Шаг 3. Используя знание нечетких правил, строится нейронечеткая искусственная нейронная сеть (ИНС) с трапецевидными ФП. Для вывода используется нечеткий вывод с композицией МАКСИМУМ. Поиск параметров ФП осуществляется с помощью генетического алгоритма: создаётся набор 100 хромосом, в которых качестве генов записаны параметры ФП, установленные произвольным образом (4 параметра у каждой ФП x 7 ФП = 28 генов). В алгоритме использовались следующие параметры: Кроссовер: Одноточечный. Процент мутации: 5%. Количество потомков у каждой особи: 5. В качестве целевой функции взята сумма абсолютных ошибок сети на 30 случайных примерах для каждой хромосомы. Практически установлено, что уже после 20 эпох оптимум достигается. В результате настройки системы найдены ФП для индикаторов 1 и 2. Графическое представление ФП для индикатора 1 дано на рисунке 14, для индикатора 2 – на рисунке 15, для класса опасности – на рисунке 16. При тестировании системы на тестирующей выборке из 100 примеров были получены следующие результаты: Среднеквадратичная ошибка: 0,7553 Средняя абсолютная ошибка: 0,8765 µ А1 1 А2 А3 А4 0.5 А5 А6 0 1 2 3 x1 Рис.14. Функции принадлежности для индикатора 1 µ 1 B1 B2 0.5 0 B3 1 2 3 x2 Рис.15. Функции принадлежности для индикатора 2 µ О1 1 O2 2 O3 0.5 O4 0 1 2 3 4 Рис.16. Функции принадлежности для класса опасности y Программные средства для нечеткого и нейросетевого моделирования. Наиболее известными программами, используемыми для нечеткого моделирования, являются: SciLab, MatLab, FuzzyTech, NEFCON, FCluster, NEFPROX. По нейронным сетям: MatLab, NeuroDimension, NeuroXL, EasyNN-plus, Statistica, Neuron, Genesis, Nest, Brian.