- •А.П. Ротштейн Интеллектуальные технологии идентификации
- •Глава 1
- •1.1. Нечеткие множества
- •1.1.1. Основные понятия теории нечетких множеств
- •1.1.2. Свойства нечетких множеств
- •1.1.3. Операции над нечеткими множествами
- •1.1.4. Некоторые дополнительные понятия
- •1.1.5. Нечеткие отношения
- •1.1.7. Нечеткость и вероятность
- •1.1.6. Нечеткие числа
- •1.2. Генетические алгоритмы
- •1.2.1. Принципы построения генетических алгоритмов
- •1.2.2. Основные операции генетических алгоритмов
- •1.2.3. Стратегии поиска
- •1.2.4. Отличие от классического поиска
- •1.2.5. Преимущества генетических алгоритмов
- •1.2.6. Терминология
- •1.2.7. Примеры генетической оптимизации
- •1.3. Нейронные сети
- •1.3.1. Основные понятия
- •1.3.2. Имитация нервных клеток
- •1.3.4. Обучение нейронных сетей
- •1.3.5. Метод обратного распространения ошибки
- •Глава 2
- •2.1. Лингвистические правила в принятии решений
- •2.1.1. Автоматическое управление
- •2.1.2. Ситуационное управление
- •2.1.3. Медицинская диагностика
- •2.1.4. Многокритериальная оценка
- •2.1.5. Многофакторный анализ
- •2.2. Принятие решений и идентификация
- •2.3. Принципы лингвистического моделирования
- •Глава 3
- •3.1. Формализация исходной информации
- •3.1.1. Входы и выходы объекта
- •3.1.2. Лингвистические переменные
- •3.1.3. Нечеткая база знаний
- •3.1.4. Функции принадлежности
- •3.2. Объекты с дискретным выходом
- •3.2.1. Постановка задачи
- •3.2.2. Нечеткие логические уравнения
- •3.2.3. Алгоритм аппроксимации
- •3.3. Объекты с непрерывным выходом
- •3.3.1. Постановка задачи
- •3.3.2. Алгоритм аппроксимации
- •3.4. Применение композиционного правила вывода
- •3.4.1. Постановка задачи
- •3.4.2. Нечеткий логический вывод
- •3.4.3. Интерпретация вывода
- •3.5. Иерархические объекты
- •3.5.1. Обобщенное дерево логического вывода
- •3.5.2. Нечеткие логические уравнения
- •Глава 4
- •4.1. Нечеткое представление неопределенных параметров
- •4.2. Учет влияющих факторов
- •4.3. Нечеткое обобщение аналитических моделей
- •4.3.1. Принцип обобщения Заде
- •4.3.3. Модифицированный принцип обобщения
- •4.4. Методика нечеткого обобщения аналитических моделей
- •Глава 5
- •5.1. Задачи оптимальной настройки
- •5.1.1. Веса правил
- •5.1.2. Объект с непрерывным выходом
- •5.1.3. Объект с дискретным выходом
- •5.1.4. Критерии качества идентификации
- •5.2. Настройка параметрических функций принадлежности
- •5.2.1. Кодирование
- •5.2.2. Скрещивание
- •5.2.3. Мутация
- •5.2.4. Функция соответствия
- •5.2.5. Выбор родителей
- •5.2.6. Генерация популяции
- •5.2.7. Генетический алгоритм
- •5.3. Настройки -уровневых функций принадлежности
- •5.3.1. Аналитические модели функций принадлежности
- •5.3.2. Настройки модели с дискретным выходом
- •5.3.3. Настройки модели с непрерывным выходом
- •5.3.4. Кодирование и скрещивание
- •5.3.5. Мутация
- •5.3.6. Функция соответствия
- •5.3.7. Генерация популяции
- •5.3.8. Генетический алгоритм
- •5.4. Компьютерные эксперименты
- •5.4.1. Методика экспериментов
- •5.4.2. Объекты с непрерывным выходом
- •5.4.3. Объекты с дискретным выходом
- •5.4.4. Исследование -уровневой настройки
- •5.5. Извлечение знаний из экспериментальных данных
- •5.5.1. Постановка задачи
- •5.5.2. Критерий оптимизации
- •5.5.3. Генетический алгоритм оптимизации
- •5.5.4. Пример
- •5.6. Объект "много входов - много выходов"
- •Глава 6
- •6.1. Нейронная идентификация
- •6.1.1. Нейронная сеть как универсальный аппроксиматор
- •6.1.2. Обучение нейронной сети
- •6.1.3. Компьютерные эксперименты
- •6.2.2. Нейро-лингвистический аппроксиматор
- •6.2.1. Лингвистический аппроксиматор
- •6.2.3. Обучение нейро-нечеткой сети
- •6.2.4. Компьютерные эксперименты
- •6.3. Сравнение с нейронной идентификацией
- •Глава 7
- •7.1. Принцип слияния целей и ограничений
- •7.1.1. Нечёткие цели и ограничения
- •7.1.2. Нечёткие решения
- •7.2. Метод построения функции принадлежности
- •7.2.1.Постановка задачи
- •7.2.2. Основные определения и соотношения
- •7.2.3. Алгоритм построения функции принадлежности
- •7.3. Многокритериальный анализ вариантов
- •7.3.1. Общие принципы
- •7.3.2. Критерии как нечеткие множества
- •7.3.3. Равновесные критерии
- •7.3.4. Неравновесные критерии
- •7.4. Пример многокритериального анализа
- •7.4.1.Критерии оценки вариантов
- •Глава 8
- •8.1. Система fuzzy expert
- •8.1.1. Структура системы
- •8.1.2. Экранные формы
- •8.2. Диагностика ишемической болезни сердца
- •8.2.1. Типы диагнозов и параметры состояния больного
- •8.2.2. Нечеткая база знаний
- •8.2.3. Нечеткие логические уравнения
- •8.2.4 Грубые функции принадлежности
- •8.2.5. Алгоритм принятия решения
- •8.2.6. Тонкая настройка нечеткой базы знаний
- •8.3. Прогнозирование количества заболеваний
- •8.3.1. Экспериментальные данные
- •8.3.2. Экспертно-лингвистические закономерности
- •8.3.3. Модель прогнозирования
- •8.3.4. Настройка модели прогнозирования
- •8.4. Идентификация коэффициента сцепления "автомобиль-дорога"
- •8.4.1. Методика идентификации
- •8.4.2. Структурная идентификация
- •8.4.3. Параметрическая идентификация
- •8.4.4. Пример и сравнение с действующей методикой
- •8.5. Многофакторный анализ технологического процесса биоконверсии
- •8.5.1. Этапы и принципы моделирования
- •8.5.2. Дерево вывода
- •8.5.3. Нечеткие матрицы знаний
- •8.5.4. Нечеткий логический вывод и дефаззификация
- •8.5.5. Примеры моделирования
- •8.6. Оценка дипломных проектов
- •8.6.1. Интегральные и частные показатели
- •8.6.2. Уровни качества
- •8.6.3. Оценка частных показателей по принципу термометра
- •8.6.4. Оценка интегрального показателя
- •8.6.5. Возможные обобщения
- •8.7. Оценка кредитоспособности инновационных проектов
- •8.7.1. Типы решений и частные показатели качества
- •8.7.2. Нечеткие базы знаний
- •8.7.3. Функции принадлежности и примеры оценки
- •8.8. Управление динамической системой
- •8.8.1. Объект управления
- •8.8.2. Классическая модель управления
- •8.8.3. Нечеткая модель управления
- •8.8.4. Связь с функциями Ляпунова
1.2.4. Отличие от классического поиска
В общем, алгоритм решения оптимизационных проблем представляет собой последовательность вычислительных шагов, которые асимптотически сходятся к оптимальному решению. Большинство классических методов оптимизации генерируют детерминированную последовательность вычислений, основанную на градиенте или производной целевой функции более высокого порядка. Эти методы применяются к одной исходной точке поискового пространства. Затем решение постепенно улучшается в направлении наискорейшего роста или убывания целевой функции. При таком поточечном подходе существует опасность попадания в локальный оптимум.
Генетический алгоритм осуществляет одновременный поиск по многим направлениям путем использования популяции возможных решений. Переход от одной популяции к другой позволяет избежать попадания в локальный оптимум. Популяция претерпевает нечто наподобие эволюции: в каждом поколении относительно хорошие решения репродуцируются, в то время как относительно плохие отмирают. ГА используют вероятностные правила для определения репродуцируемой или уничтожаемой хромосомы, чтобы направить поиск к областям вероятного улучшения целевой функции.
1.2.5. Преимущества генетических алгоритмов
Существуют два главных преимущества генетических алгоритмов перед классическими оптимизационными методиками:
1. ГА не имеет значительных математических требований к видам целевых функций и ограничений. Исследователь не должен упрощать модель объекта, теряя ее адекватность, и искусственно добиваясь возможности применения доступных математических методов. При этом могут использоваться самые разнообразные целевые функции и виды ограничений (линейные и нелинейные), определенные на дискретных, непрерывных и смешанных универсальных множествах.
2. При использовании классических пошаговых методик глобальный оптимум может быть найден только в том случае когда проблема обладает свойством выпуклости. В тоже время эволюционные операции генетических алгоритмов позволяют эффективно отыскивать глобальный оптимум.
1.2.6. Терминология
Поскольку ГА происходят как из естественных наук (генетика), так и из компьютерных наук, то используемая терминология представляет собой сплав естественного и искусственного. Соответствие терминов, относящихся к ГА и тех, которые относятся к решению оптимизационных проблем, приведено в табл. 1.1.
Таблица 1.1
Основные термины теории ГА
ГА |
Объяснение |
1. Хромосомы 2. Ген (несколько бит) 3. Локус (местоположение) 4. Аллель 5. Фенотип 6. Генотип |
Решение (код) Часть решения Позиция гена в хромосоме Значение гена Раскодированное решение Закодированное решение |
1.2.7. Примеры генетической оптимизации
В этом разделе мы подробно объясним как в действительности работает генетический алгоритм на двух простых примерах.
Пример 1.9. Задача оптимизации. Рассмотрим нелинейную целевую функцию с ограничениями:
0.5
1.1,
1.0
4.6
Требуется
найти:
Поверхность целевой функции показана на рис. 1.8.
Кодирование. Для
реализации генетического алгоритма
необходимо закодировать оптимизируемые
параметры в двоичные строчки. Длина
строчки зависит от требуемой точности.
Например, пусть переменная
имеет
интервал изменения
,
и требуемая точность - пять знаков после
запятой. В этом случае интервал изменения
переменной
должен
быть разбит как минимум на
квантов.
Требуемое число битов
находится
по формуле:
Обратное преобразование строки битов в действительное значение переменной выполняется по следующей формуле:
десятичное_число( строка_битов
)
,
где десятичное_число ( строка_битов ) представляет собой десятичное значение, закодированное в бинарной строке строка_битов
Предположим,
что требуемая точность составляет 5
знаков после запятой. Найдем число
битов, необходимых для кодирования
переменных
и
:
(1.1 - 0.5) 100,000 = 60,000
2
60,000
2
-
1,
(4.6 - 1.0) 100,000 = 360,000
2
360,000
2
-
1,
.
Суммарная длина хромосомы составляет 35 битов, которые можно представить следующим образом:
Соответствующие
значения переменных
и
даны
ниже:
|
Двоичное число |
Десятичное число |
|
0100000101010010 |
16722 |
|
1001101111011111110 |
319230 |
=
0.5 + 16722
0.65310
,
=
1.0 + 319230
3.19198
.
Исходная популяция. Исходная популяция генерируется случайно:
v |
[01000001010100101001101111011111110] |
v |
[10001110101110011000000010101001000] |
v |
[11111000111000001000010101001000110] |
v |
[01100110110100101101000000010111001] |
v |
[00000010111101100010001110001101000] |
v |
[10111110101011011000000010110011001] |
v |
[00110100010011111000100110011101101] |
v |
[11001011010100001100010110011001100] |
v |
[01111110001011101100011101000111101] |
v |
[01111101001110101010000010101101010] |
Соответствующие значения переменных и имеют вид:
v
= [ |
[0.653097, 3.191983] |
v = [ ] = |
[0.834511,2.809287] |
v = [ ] = |
[1.083310,2.874312] |
v = [ ] = |
[0.740989,3.926276] |
v
= [ |
[0.506940,1.499934] |
v = [ ] = |
[0.946903,2.809843] |
v = [ ] = |
[0.622600,2.935225] |
v = [ ] = |
[0.976521,3.778750] |
v = [ ] = |
[0.795738,3.802377] |
v = [ ] = |
[0.793504,3.259521] |
Функция соответствия. Оценка функции соответствия хромосомы выполняется в три шага:
1°.
Преобразовать генотип хромосомы в
фенотип. В данной задаче это означает
преобразование двоичной строчки в
соответствующее действительное
значение
,
,
где
-
число вариантов в исходной популяции.
2°.
Вычислить целевую функцию
.
3°.
Преобразовать целевую функцию в значение
функции соответствия. Для решаемой
задачи оптимизации функция соответствия
эквивалентна целевой функции.
,
.
Функция соответствия играет роль среды и оценивает хромосомы по степени их приспособленности к выполнению критерия оптимизации.
Значения функций соответствия вышеприведенных хромосом следующие:
|
f(0.653097,3.191983 ) = 20.432394 |
|
f(0.834511,2.809287 ) = -4.133627 |
|
f(1.083310,2.874312 ) = 28.978472 |
|
f(0.740989,3.926276 ) = -2.415740 |
|
f(0.506940,1.499934 ) = -2.496340 |
|
f(0.946903,2.809843 ) = -23.503709 |
|
f(0.622600,2.935225 ) = -13.878172 |
|
f(0.976521,3.778750 ) = -8.996062 |
|
f(0.795738,3.802377 ) = 6.982708 |
|
f(0.793504,3.259521 ) = 6.201905 |
Очевидно,
что хромосома
наиболее
сильная, а хромосома
наиболее
слабая.
Отбор. Наибольшее распространение на практике получил подход, называемый колесо рулетки [58] (от англ. roulette wheel). Согласно этому подходу отбор осуществляется на основе некоторой функции распределения, которая строится пропорционально вычисленным функциям соответствия сгенерированных вариантов-хромосом. Колесо рулетки может быть сконструировано следующим образом:
1. Вычисляем
значение функции соответствия
для
каждой хромосомы
:
,
.
2. Вычисляем общую функцию соответствия популяции:
3. Вычисляем
вероятность отбора
для
каждой хромосомы
:
,
.
4. Вычисляем
совокупную вероятность
для
каждой хромосомы
:
,
.
Процесс
отбора начинается с вращения колеса
раз;
при этом каждый раз выбирается одна
хромосома по следующему алгоритму:
1°.
Генерируем случайное число
из
интервала
.
2°.
Если
,
то выбираем первую хромосому
;
иначе выбираем
-ую
хромосому
(
)
такую, что
.
Общая
функция соответствия
всей
популяции равна:
242.208919
.
Вероятность
отбора
для
каждой хромосомы
(
)
равна:
|
|
|
|
|
|
|
|
|
|
|
|
Совокупные
вероятности
для
каждой хромосомы
(
)
равны:
|
|
|
|
|
|
|
|
|
|
|
|
Теперь
мы готовы вращать колесо рулетки 10 раз
и каждый раз отобрать одну хромосому
для новой популяции. Допустим, что
случайная последовательность 10 чисел
из интервала
имеет
вид:
0.301431 |
0.322062 |
0.766503 |
0.881893 |
0.350871 |
0.583392 |
0.177618 |
0.343242 |
0.032685 |
0.197577 . |
|
|
Первое
число
0.301431
больше чем
и
меньше чем
.
Это означает, что отбирается хромосома
.
Второе число
0.322062
также больше чем
и
меньше чем
.
Значит опять отбираем хромосому
для
новой популяции; и т.д. Наконец, получим
новую популяцию, состоящую из таких
хромосом:
|
[11111000111000001000010101001000110] |
|
|
[11111000111000001000010101001000110] |
|
|
[11001011010100001100010110011001100] |
|
|
[01111110001011101100011101000111101] |
|
|
[11111000111000001000010101001000110] |
|
|
[01100110110100101101000000010111001] |
|
|
[01000001010100101001101111011111110] |
|
|
[11111000111000001000010101001000110] |
|
|
[01000001010100101001101111011111110] |
|
|
[10001110101110011000000010101001000] |
|
Скрещивание. Для скрещивания хромосом будем использовать метод с одной точкой обмена. В соответствие с этим методом, случайно выбирается одна точка обмена, относительно которой меняются местами части хромосом-родителей. Для примера рассмотрим скрещивание двух хромосом, для которых была случайно выбрана точка обмена после 17-го гена:
В результате обмена частей родительских хромосом получаются следующие хромосомы-отпрыски:
Пусть
вероятность скрещивания
,
т. е. в среднем 25% хромосом подвергнуться
скрещиванию. Таким образом, скрещивание
осуществляется по такому алгоритму:
Процедура: Скрещивание.
begin
:=0 ;
while (
) do
:=
случайное число из интервала [0,1] ;
if (
) then
отобрать хромосому как одного из родителей для скрещивания ;
end ;
;
end ;
end.
Предположим, что сгенерирована последовательность случайных чисел:
0.625721 |
0.266823 |
0.288644 |
0.295114 |
0.163274 |
0.567461 |
0.085940 |
0.392865 |
0.770714 |
0.548656 . |
|
|
Это
означает, что хромосомы
и
выбираются
для скрещивания. После этого мы генерируем
случайное целое число
(позиция)
из промежутка [1,34] (так как общая длина
хромосомы равна 35) и считаем его точкой
обмена хромосом или, другими словами,
точкой скрещивания. Предположим, что
было сгенерировано число
равное
1, т. е. хромосомы-родители обмениваются
частями после первого бита и появятся
следующие хромосомы-отпрыски:
Мутация. Мутация
состоит в изменении одного или большего
числа генов с вероятностью равной
коэффициенту мутации. Допустим, что
18-й ген хромосомы
подвергается
мутации. Так как мы имеем дело с бинарными
строчками, то мутация заключается в
инверсии соответствующего бита:
Зададим
коэффициенту мутации значение
,
так что в среднем 1% всех битов популяции
подвергнуться операции мутации. Число
битов во всей популяции составляет
битов.
Поэтому в среднем в каждом поколении
мутирует 3.5 бита. Каждый бит имеет
одинаковый шанс подвергнуться мутации.
Таким образом, мы должны сгенерировать
последовательность случайных чисел
из
интервала [0,1]. Предположим, что мутируют
следующие гены:
Позиция бита в популяции |
Номер хромосомы |
Позиция бита в хромосоме |
Случайное число |
111 |
4 |
6 |
0.009857 |
172 |
5 |
32 |
0.003113 |
211 |
7 |
1 |
0.000946 |
347 |
10 |
32 |
0.001282 |
После мутации получается следующая популяция:
= |
[11111000111000001000010101001000110] |
= |
[11111000111000001000010101001000110] |
= |
[11001011010100001100010110011001100] |
= |
[01111010001011101100011101000111101] |
= |
[11000001010100101001101111011110110] |
= |
[01100110110100101101000000010111001] |
= |
[11111000111000001000010101001000110] |
= |
[11111000111000001000010101001000110] |
= |
[01000001010100101001101111011111110] |
= |
[10001110101110011000000010101000000] . |
Соответствующие десятичные значения переменных и и значения функции соответствия имеют вид:
f(1.083310,2.874312)=28.978472
f(1.083310,2.874312)=28.978472
f(0.976521,3.778750)=-8.996062
f(0.786363,3.802377)=9.366723
f(0.953101,3.191928)=-23.229745
f(0.740989,3.926276)=-2.415740
f(1.083310,2.874312)=28.978472
f(1.083310,2.874312)=28.978472
f(0.653097,3.191983)=20.432394
f(0.834511,2.809232)=-4.138564
Таким образом, завершена одна итерация генетического алгоритма. Проделав 1000 итераций, мы получим наилучшую хромосому в 419-м поколении:
=
[01000011000100110110010011011101001]
= f(0.657208,2.418399)
= 31.313555
=
0.657208
=
2.418399
=
31.313555 .
Пример 1.10. Синтез текста. Этот пример прекрасно демонстрирует мощь генетических алгоритмов. Задача синтеза текста заключается в получении фрагмента известной украинской песни несе Галя воду
из
случайно сгенерированного списка букв
при помощи генетического алгоритма.
Так как для каждой позиции текста
возможны 32 различные буквы алфавита, а
таких позиций в заданном выражении 12,
то вероятность получения необходимой
строки случайным способом равна
,
т. е. практически нуль.
Для кодирования строки букв будем использовать кодовую таблицу символов ASCII (в операционной системе Windows). Тогда строка несе Галя воду преобразуется в следующую хромосому:
[237, 229, 241, 229, 227, 224, 235, 255, 226, 238, 228, 243]
Сгенерируем исходную популяцию из 10 случайных фраз:
[232, 239, 225, 242, 227, 238, 255, 227, 186, 238, 236, 239]
[228, 226, 244, 231, 231, 224, 226, 224, 237, 248, 243, 247]
[252, 241, 243, 228, 228, 225, 246, 225, 234, 186, 230, 246]
[249, 227, 252, 249, 244, 245, 236, 229, 248, 252, 224, 226]
[230, 232, 234, 245, 231, 254, 227, 245, 238, 247, 242, 232]
[232, 228, 227, 245, 230, 226, 232, 179, 247, 255, 238, 186]
[232, 248, 231, 235, 248, 179, 235, 186, 224, 255, 252, 242]
[239, 248, 236, 229, 179, 233, 232, 244, 249, 245, 252, 230]
[249, 232, 236, 229, 240, 244, 227, 243, 230, 244, 254, 242]
[248, 230, 231, 252, 245, 239, 242, 254, 252, 255, 240, 255]
Теперь преобразуем эти хромосомы в строки символов и увидим, что получится 10 бессмысленных фраз:
ипбтгоягєомп
двфззаваншуч
ьсуддбцбкєжц
щгьщфхмешьав
жикхзюгхочти
идгхжви_чяоє
ишзлш_лєаяьт
пшме_йифщхьж
щимерфгужфют
шжзьхптюьяря .
Функция соответствия вычисляется как число правильно отгаданных букв. Например, функция соответствия для строки <ипбтгоягєомп> равна 2. В табл. 1.2 приведен список хромосом, которые были наилучшими на каждой из 32-х итераций генетического алгоритма.
Таблица 1.2
Лучшие хромосомы на каждой итерации
Поко-ление |
Строка |
Функция соответствия |
Поколение |
Строка |
Функция соответствия |
1 |
ипбтгоягєомп |
2 |
17 |
несечалядгду |
9 |
2 |
ипбтгоягєомп |
2 |
18 |
несечалядгду |
9 |
3 |
ипбтгоягєомп |
2 |
19 |
несегалядгду |
10 |
4 |
никхгаваншйт |
3 |
20 |
несегалядгду |
10 |
5 |
ндмералядгжц |
5 |
21 |
несегалядгду |
10 |
6 |
ндмералядгжц |
5 |
22 |
несегалядгду |
10 |
7 |
ндмералядгжц |
5 |
23 |
несегалядгду |
10 |
8 |
ндшеьалявгжц |
6 |
24 |
несегалядоду |
11 |
9 |
ндшеьалявгжц |
6 |
25 |
несегалядоду |
11 |
10 |
ндшеьалявгжц |
6 |
26 |
несегалядоду |
11 |
11 |
нисералядгжу |
7 |
27 |
несегалядоду |
11 |
12 |
нисералядгжу |
7 |
28 |
несегалядоду |
11 |
13 |
нисералядгжу |
7 |
29 |
несегалядоду |
11 |
14 |
несеролядгду |
8 |
30 |
несегалядоду |
11 |
15 |
несеролядгду |
8 |
31 |
несегалядоду |
11 |
16 |
несеролядгду |
8 |
32 |
несегаляводу |
12 |
