faqs.org.ru

 Главная > Программирование > Общие алгоритмы и методики >

FAQ по мягким вычислениям

Секция 2 из 3 - Предыдущая - Следующая
Все секции - 1 - 2 - 3

           SetBit(c2->r,t,GetBit(v1->r,t));
        }

        // 2х точечный кроссинговер
        t1=rand()*(EBitSize*4-1)/RAND_MAX;
        t2=rand()*(EBitSize*4-1)/RAND_MAX;
        t=t1;
        while(t!=t2)
        {
           SetBit(c1->r,t,GetBit(v1->r,t));
           SetBit(c2->r,t,GetBit(v2->r,t));
           t++;
           if(t==EBitSize*4)t=0;
        }
        while(t!=t1)
        {
           SetBit(c1->r,t,GetBit(v2->r,t));
           SetBit(c2->r,t,GetBit(v1->r,t));
           t++;
           if(t==EBitSize*4)t=0;
        }

        // Унифицированный кроссинговер
        for(t=0;t<EBitSize*4;t++)
        {
           if(rand()<(RAND_MAX/2))
           {
              SetBit(c1->r,t,GetBit(v1->r,t));
              SetBit(c2->r,t,GetBit(v2->r,t));
           }
           else
           {
              SetBit(c1->r,t,GetBit(v2->r,t));
              SetBit(c2->r,t,GetBit(v1->r,t));
           }
        }
******************************************************************************

>Что такое инверсия и переупорядочение?
>Дэвид Бисслей, статья

    Часто  порядок  генов  в  хромосоме  является критическим для строительных
блоков, позволяющий осуществлять эффективную работу алгоритма. Были предложены
методы  для  переупорядочения  позиций  генов  в  хромосоме  во  время  работы
алгоритма.   Одной   из   таких   методик   является   инверсия,   выполняющая
реверсирование  порядка  генов  между  двумя  случайно  выбранными позициями в
хромосоме.  (Когда  используются  эти  методы, гены должны содержать некоторую
"метку",  так, чтобы их можно было правильно идентифицировать независимо от их
позиции в хромосоме.)
    Цель переупорядочения состоит в том, чтобы попытаться найти порядок генов,
который имеет лучший эволюционный потенциал. Многие исследователи использовали
инверсию  в  своей работе, хотя кажется, что немногие попытались ее обосновать
или   определить   ее   вклад.   Goldberg   &   Bridges  анализируют  оператор
переупорядочения  на  очень  маленькой  задаче,  показывая, что она может дать
определенное преимущество, хотя они заключают, что их методы не принесли бы то
же самое преимущество на больших задачах.
    Переупорядочение  также  значительно  расширяет область поиска. Мало того,
что  генетический алгоритм пытается находить хорошие множества значений генов,
он также одновременно пробует находить хорошее упорядочения генов. Это гораздо
более  трудная  задача для решения.
******************************************************************************

>Что такое эпистаз?
>Дэвид Бисслей, статья

    Термин  эпистаз  был  определен генетиками как влияние гена на пригодность
индивидуума  в  зависимости  от значения гена, присутствующего в другом месте.
Более  определенно,  генетики  используют  термин  эпистаз  в  смысле  эффекта
"переключения"  или  "маскирования".  "Ген  считают  эпистатическим, когда его
присутствие подавляет влияние гена в другом локусе. Эпистатические гены иногда
называют  ингибирующими  из-за  их влияния на другие гены, которые описываются
как гипостаз".
    Когда исследователи генетических алгоритмов используют термин эпистаз, они
говорят  обо  всем,  что  касается  любого вида взаимодействия среди генов, не
только  эффекта  маскирования,  хотя они избегают давать точное определение.
******************************************************************************

>Что такое ложный оптимум?
>Дэвид Бисслей, статья

    Одним  из  фундаментальных  принципов генетических алгоритмов является то,
что хромосомы, включенные в шаблоны, которые содержатся в глобальном оптимуме,
увеличиваются  по частоте (это особенно верно для коротких, небольшого порядка
шаблонов,  известных  как  строительные  блоки). В конечном счете, посредством
использования кроссинговера, эти оптимальные шаблоны сойдутся, и будет создана
глобальная  оптимальная  хромосома.  Но  если шаблоны, которые не содержатся в
глобальном  оптимуме,  будут  увеличиватся  по  частоте быстрее чем другие, то
генетический  алгоритм  будет введен в заблуждение и уйдет в другую сторону от
глобального  оптимума,  вместо  того,  чтобы  приблизится  к нему. Это явление
известно как ложный оптимум.
    Ложный  оптимум является частным случаем эпистаза, и он был глубоко изучен
Goldberg и другими. Ложный оптимум непосредственно связан с вредными влияниями
эпистаза в генетических алгоритмах.
    По  статистике,  шаблон  увеличится  по  частоте  в  популяции,  если  его
пригодность  выше,  чем  средняя пригодность всех шаблонов в популяции. Задача
обозначается  как  задача ложного оптимума, если средняя пригодность шаблонов,
которые  не  содержатся в глобальном оптимуме, больше, чем средняя пригодность
других шаблонов.
    Задачи ложного оптимума трудны для решения. Однако, Grefenstette остроумно
демонстрирует,   что   они  возникают  не  всегда.  После  первого  поколения,
генетический  алгоритм не получает объективную выборку точек в области поиска.
Поэтому  он  не  может  оценивать  объективную  глобальную среднюю пригодность
шаблона.  Он  может  только получить необъективную оценку пригодности шаблона.
Иногда  это предубеждение помогает генетическому алгоритму сходиться (даже при
том, что задача иначе могла бы иметь сильный ложный оптимум).
******************************************************************************

>Что такое инбридинг, оутбридинг, селективный выбор, панмиксия?
>(источник не известен)

     Существует  несколько  подходов  к  выбору  родительской  пары.  Наиболее
простой   из  них  -  панмиксия.  Этот  подход  предполагает  случайный  выбор
родительской  пары,  когда  обе  особи,  которые  составят  родительскую пару,
случайным  образом  выбираются  из  всей  популяции. В этом случае любая особь
может  стать  членом  нескольких  пар.  Несмотря  на  простоту,  такой  подход
универсален для решения различных классов задач. Однако он достаточно критичен
к численности популяции, поскольку эффективность алгоритма, реализующего такой
подход, снижается с ростом численности популяции.
     Селективный  способ  выбора особей в родительскую пару состоит в том, что
"родителями"  могут  стать только те особи, значение приспособленности которых
не  меньше  среднего  значения  приспособленности  по  популяции,  при  равной
вероятности таких кандидатов составить брачную пару.
     Такой  подход  обеспечивает  более  быструю  сходимость алгоритма. Однако
из-за  быстрой  сходимости  селективный  выбор  родительской  пары не подходит
тогда,  когда  ставиться  задача определения нескольких экстремумов, поскольку
для  таких  задач  алгоритм, как правило, быстро сходится к одному из решений.
Кроме    того,   для   некоторого   класса   задач   со   сложным   ландшафтом
приспособленности  быстрая  сходимость  может  превратиться  в преждевременную
сходимость  к  квазиоптимальному  решению.  Этот недостаток может быть отчасти
компенсирован   использованием   подходящего   механизма  отбора,  который  бы
"тормозил" слишком быструю сходимость алгоритма.
     Инбридинг   представляет  собой  такой  метод,  когда  первый  член  пары
выбирается случайно, а вторым с большей вероятностью будет максимально близкая
к нему особь.
     Пример  определения  родства  хромосом  при  выборе родительской пары для
хромосомы 1010001:

            Хромосомы популяции         Количество отличающихся локусов
                 1000000                              2
                 1010101                              1
                 0011100                              4
                 0000001                              2
                 0110011                              3
                 0100011                              4
                 1111111                              4
                 0000000                              3

     При  аутбридинге  также используют понятие схожести особей. Однако теперь
брачные пары формируют из максимально далеких особей.
     Последние   два  способа  поразному  влияют  на  поведение  генетического
алгоритма.  Так инбридинг можно охарактеризовать свойством концентрации поиска
в  локальных узлах, что фактически приводит к разбиению популяции на отдельные
локальные  группы  вокруг  подозрительных  на  экстремум  участков  ландшафта.
Аутбридинг же направлен на предупреждение сходимости алгоритма к уже найденным
решениям, заставляя алгоритм просматривать новые, неисследованные области.

>Alexander Pavlov [2:5030/399.11]

    По  поводу  источника.  Начало,  по кpайней меpе, с www.algo.4u.ru, статья
Д.И.  Батищева, С.А.  Исаева "Оптимизация многоэкстpемальных функций с помощью
генетических  алгоpитмов"  (опубликовано  в  сбоpнике статей, издаваемом ВГТУ,
осень 1997).
******************************************************************************

>Динамическая самоорганизация параметров ГА.
>Yuri Burger [2:468/85.3]

     Зачастую,   выбор   параметров   генетического   алгоритма  и  конкретных
генетических  операторов  производится  на интуитивном уровне, так как пока не
существует  объективных  доказательств  преимущества  тех  или иных настроек и
операторов. Однако, не нужно забывать, что сама суть ГА заключается в динамике
и "мягкости" алгоритма и производимых вычислений. Тогда почему бы не позволить
алгоритму самому настраиваться во время решения задачи и адаптироваться к ней?
     Наиболее  просто организовать адаптацию применяемых операторов. Для этого
встроем  в  алгоритм  несколько  (чем  больше  тем лучше) различных операторов
выборки  (элитная,  случайная,  рулеточная,..),  кроссинговера  (одноточечный,
двуточечный,   унифицированный,..)   и   мутации   (случайная  одноэлементная,
абсолютная,..). Установим для каждого оператора равные вероятности применения.
Далее,  на  каждом  цикле  алгоритма  будем выберать один из операторов каждой
группы    (выбор,    кроссинговер,   мутация)   соответственно   вероятносному
распределению.  Причем, в полученной при помощи этих операторов особи отметим,
какими  именно  операторами она была получена. Тогда, если новое распределение
вероятностей  мы  вычислим  исходя  из  информации,  содержащейся  в популяции
(вероятность  применения  оператора  пропорциональна числу особей в популяции,
полученных  при  помощи  этого  оператора),  то  генетический алгоритм получит
механизм динамической самоадаптации.
     Такой  подход дает еще одно преимущество - теперь не нужно беспокоиться о
применяемом  генераторе  случайных  чисел (линейный, экспоненциальный и т.д.),
так как алгоритм динамически изменяет характер распределения.
******************************************************************************

>Метод миграции и искусственной селекции.
>В.В Курейчик, статья

     В отличие от обыкновенных ГА выполняется макроэволюция, т.е. создается не
одна  популяция,  а  некоторое  множество  популяций. Генетический поиск здесь
осуществляется путем объединения родителей из различных популяций.
******************************************************************************

>Метод прерывистого равновесия.
>В.В Курейчик, статья

     Метод  основан  на  палеонтологической  теории  прерывистого  равновесия,
которая  описывает  быструю  эволюцию за счет вулканических и других изменений
земной  коры. Для применения данного метода в технических задачах предлагается
после  каждой  генерации  случайным  образом  перемешивать  индивидуальности в
популяции,   а   затем   формировать  новые  текущие  генерации.  Здесь  можно
предложить,  как  аналог  из живой природы, бессознательный отбор родительских
пар  и  синтетический  отбор  лучших родительских пар. Далее случайным образом
смешать результаты обоих отборов и не оставлять размер популяции постоянным, а
управлять   им  в  зависимости  от  наличия  лучших  индивидуальностей.  Такая
модификация   метода   прерывистого   равновесия   может  позволить  сократить
неперспективные  популяции  и  расширить популяции, в которых находятся лучшие
индивидуальности.
     Метод  прерывистого  равновесия  -  это мощный стрессовый метод изменения
окружающей  среды,  который  используется для эффективного выхода из локальных
ям.
******************************************************************************

>Почему у меня популяция пpи малых размерах вообще не сходится?
>Yuri Burger [2:468/85.3]

     В  популяциях  с малым размером гены распространяются слишком быстро. Все
особи становятся похожими (популяция сошлась) еще до того, как найдено решение
задачи.  Получается  так,  что новый генотип с лучшей оценкой быстро вытесняет
менее  хорошие  комбинации  ген,  исключая таким образом возможность получения
более хорошего решения на их базе.
     Вторая  проблема  заключается  в  том,  что потомки, получаемые в большей
популяции, скорее всего будут разнообразнее, чем потомки из меньшей популяции.
С   одной   стороны,   при   малых   популяциях   внимание   алгоритма   будет
сконцентрировано  на  некоторых  направлениях,  тоесть,  эти направления будут
изучены  быстрей.  Но  если  направление  изначально  было  ошибочным  (ложный
оптимум) то алгоритм имеет все шансы застрять.
     Выходом  может  быть  увеличение  популяции, при условии что время работы
алгоритма не критично.
     Также,  может  помоч  самоадаптация  алгоритма  при  выборе операторов (в
тупиковых  ситуациях  увеличить  вероятность  применения случайного генератора
особей).
     Еще  можно  попытаться  складировать  отдельно особи, генотип которых был
утерян   популяцией,   и   временами  добавлять  эти  особи  (случай  удачного
кровосмешения в племенных формациях).
******************************************************************************

>Разное.
>vitalie vrabie [2:469/303]

    ГА,  однородный  побитовый recombination, elitistic selection, все вектора
одинакового размера.
    Ввёл  такое  понятие:  "однородность"  (степень  однородности)  популяции.
Определяется  отношением  количества  одинаковых  битов  к  общему  их числу в
векторе.
    Поясню на примере. Скажем, вектор из 10 бит. При следующей популяции:

                                0101011100
                                1100010100
                                0101011110
                                 ^^ ^^ ^ ^
    Имеем  "однородность" равную 6/10 (шесть из десяти битов у всех одинаковые
- в помеченных позициях).
    "Однородность" вычисляю перед каждой итерацией и использую как вероятность
мутации.  Тоесть,  чем  однороднее  (скуднее)  генофонд,  тем выше вероятность
мутаций.
******************************************************************************

>ГА не рекомендуется, если нужно найти точный глобальный экстремум.
>Почему?
>Yuri Burger [2:468/85.3]

    Это  не  совсем  так...  Тоесть, это не значит что ГА не сможет найти его,
совсем  нет...  Просто ГА не может определить когда он нашел точное глобальное
решение..   Часто   используют   эффект  сходимостит  популяции  (когда  особи
становятся одинаковыми), это позволяет организовать остановку алгоритма, но не
гарантирует глобальность решения.
******************************************************************************

> ГЕНЕТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

******************************************************************************

>Что такое генетическое программирование?
>Yuri Burger [2:468/85.3]

     Уж  не  знаю  почему  ГА  и  ГП  разделяют  на разные области, но я к ним
отношусь как к одному и тому же.
     Единственное отличие ГП от ГА состоит в том, что каждая особь в популяции
теперь  кодирует  не  числовые  характеристики,  которые  обеспечивают  задаче
оптимальность,  а некоторую "программу", которая решает поставленную проблему.
     Под  словом "программа" здесь не стоит понимать реальную программу на Си,
ассемблере и т.д. Чаще всего, такая программа - это всего навсего конфигурация
дерева функции, нейронной сети или автомата.
     Алгоритм  работает  по  всем  законам  ГА,  лишь  при  оценке новой особи
происходит  "исполнение"  программы, а затем оценка её деятельности. Например,
в  задаче  автоматического  определения  функции  хромосома кодирует некоторую
сложныю,  часто  многопараметрическую  функцию.  При  оценке происходит расчет
закодированной  функции  на  тестовой  выборке  входных  значений, после чего,
результаты  расчетов  сравниваются с тестовыми (экспериментальными) значениями
искомой   функции   на   представленной  выборке, происходит расчет отклонения
текущей  функции  от  искомой, которое используется как оценка особи. Уменьшая
отклонение,  алгоритм  находит  неизвестную  функцию,  представленную тестовой
выборкой.
     Впринципе,  возможно  создание  и реальной программы на некотором простом
языке  (вроде  ассемблера).  Но  тогда  возникает  проблема  исполнения  такой
программы (чтоб не подвисла) и оценки результата.
     Пока что я видел такие направления в представлении программ:

     Деревья  поколений  -  кодируют  сложную  функцию,  представляя её в виде
дерева  расчета (как при разборе выражений из теории трансляции). Используются
при решении задачи автоматического определения функций.

     Нейронные   сети   -   множество   связанных  однотипных  элементов.  Для
автоматического   определения   функций   не   подходят,  но  имеют  различные
специфические применения.

     УНС  -  унифицированные  нейронные  сети  (модель  и  принципы применения
предложены  мной  в  дипломной работе). Позволяют представлять любую расчетную
многопараметрическую  сложную  функцию  в  компактном виде, присущем нейронным
сетям.  Это  позволяет  применять  их  в  задачах  автоматического определения
функций.  Также,  обладают  всеми  качествами  нейронных  сетей,  однако имеют
слишком сложную топологию. Обучаются по ГА/ГП или К-Срезу.

     Автоматы  -  задают  последовательность переходов состояний. Используются
как способ представления простых алгоритмов для "роботов". В сочетании с ГА/ГП
использовались в игре на предсказание последовательности чисел.
******************************************************************************

>Деревья поколений.
>Yuri Burger [2:468/85.3]

     В  генетическом  программировании  особи  из популяции представляют собой
программы.  Удобно  представлять  эти  программы  в виде деревьев, где функции
представлены  внутренними  узлами,  к  которым  в  качестве входных параметров
присоединены  поддеревья.  Листьями  такого  дерева  будут  константы, входные
параметры задачи или директивные команды программы.

     Пример простой программы-дерева:

                                      =
                                      |
                                      +
                                     / \
                                    *   7
                                   / \
                                  x   3

     Такое  представление программ наглядно и легко реализуемо. Однако, работа
с деревьями не всегда удобна при выполнении таких операторов, как кроссинговер
и  мутация. Посути, необходимо реализовать совершенно новые операторы.
     Кроссинговер  будет  заключаться  в подмене одного из поддеревьев первого
родителя на какое-либо поддерево второго родителя.
     Мутация  будет  выполнять  случайное  изменение  одного  из  узлов дерева
(например смена функции или константы).
     Таким  образом, использование деревьев влечет за собой несколько проблем:
необходимость  создания новых операторов мутации и кроссинговера; динамическая
длина хромосомы, кодирующей дерево.
******************************************************************************

>Терминальный алфавит, функциональный базис и их свойства.
>Yuri Burger [2:468/85.3]

     Первый    главный    шаг   в   подготовке   использования   генетического
программирования   должен   идентифицировать   множество   терминалов.   Набор
терминалов,  наряду  с  набором  функций,  представляет  собой  компоненты, из
которых  будет  создаваться  компьютерная программа для полного или частичного
решения проблемы.
     Второй  шаг заключается в определении функционального множества, элементы
которого  должны использоваться для генерации математических выражений. Каждая
компьютерная   программа   (то   есть,  анализируемое  дерево,  математическое
выражение) является композицией функций от множества функций F и терминалов из
терминального   множества   T  (в  случае  программ-функций  это  константы  и
переменные).
     Множество   возможных  внутренних  узлов  (не  листовых),  используемых в
деревьях     синтаксического     анализа,    используемых    в    генетическом
программировании, называется функциональным множеством:

                             F={f1,f2,..,fn}

     Каждая  функция  из  функционального множества характеризуется арностью -
количеством входящих параметров.
     Множество    листовых   узлов   в   деревьях   синтаксического   анализа,
представляющих   программы   в   генетическом   программировании,   называются
терминальным множеством:

                             T={t1,t2,..,tm}

     Функциональное   и   терминальное   множества   могут  быть  объединены в
однородную  группу С, при условии, что терминалы рассматриваются как функции с
нулевой арностью:

                                 C=F U T

     Пространством  поиска  генетического  программирования является множество
всех возможных рекурсивных композиций функций множества C.
     В   функциональном   множестве   могут   быть  применены  арифметические,
математические,  булевы и другие функции. В терминальное множество могут войти
переменные, константы или директивные команды.
     Множества F и T должны обладать свойствами замыкания и достаточности.
     ЗАМЫКАНИЕ  требует,  чтобы  каждая  функция  из множества F была способна
принять аргументом любые значения и типы данных, которые могут быть возвращены
любой  функцией  из  множества C. Это предупреждает ошибки во время выполнения
программ,  полученных  генетическим программированием. Для обеспечения условия
замкнутости  можно  использовать  защиту  операций - принудительное приведение
поступающих   данных   к   диапазону,   определяемому   конкретной  операцией.
Например, операцию извлечения корня можно защитить от появления отрицательного
аргумента  принудительным  расчетом  модуля  от этого аргумента. Альтернативой
защите может быть автоматическое исправление ошибок в программе или применение
штрафов за ошибки.
     ДОСТАТОЧНОСТЬ  требует,  чтобы  функции  из  множества  C  были  способны
выразить  решение  поставленной  задачи,  то  есть, чтобы решение принадлежало
множеству всех возможных рекурсивных композиций функций из C. Однако доказать,
что выбранное множество C достаточно, возможно лишь в редких случаях. Поэтому,
при  выборе  этого множества, как и при выборе основных операций генетического
алгоритма, приходится полагаться лишь на интуицию и экспериментальный опыт.
******************************************************************************

> НЕЙРОННЫЕ СЕТИ

******************************************************************************

>Математическая модель нейрона.
>В.М. Курейчик, Б.К. Лебедев, В.И. Божич, статья

     С  конструктивной  точки  зрения  нейрон,  являющийся  основным элементом
нейросети,   это   устройство  для  получения  нелинейной  функции  нескольких
переменных  X  с  возможностью  настройки  его  параметров. Традиционно нейрон
описывается   в   терминах   заимствованных   из   биологии.   Согласно   этим
представлениям  нейрон имеет один выход и несколько входов (синапсов). Синапсы
осуществляют  связь между нейронами, умножают входной сигнал Xi на вес синапса
Wi.   Сумматор   осуществляет   сложение   взвешенных   входов,  а  нелинейный
преобразователь  реализует нелинейную функцию от выхода сумматора. Эта функция
называется функцией активации.
     Математическая модель нейрона:

                                y=f(S),
                                S= Сумма(Wi*Xi+b)

     где b - некоторое смещение.
******************************************************************************

>Применение генетического подхода в обучении нейронной сети.
>В.М. Курейчик, Б.К. Лебедев, В.И. Божич, статья

     При   генетическом  подходе  процесс  настройки  НС  рассматривается  как
адаптивный  процесс,  связанный с максимизацией эффективности функционирования
НС, т. е. с минимизацией функции ошибки.
     Для  фиксированной архитектуры НС хромосома представляется в виде вектора
H = (W, B), хранящего значения семантических весов (W), и смещений (B).
     Обучение  нейронных  сетей  в  основном использует базу знаний, в которой
хранится  набор  примеров с известными правильными ответами. Каждый пример это
пара  вход  -  известный  выход.  В  этой  связи  получаемые  выходные сигналы
сравниваются  с  эталонными и строится оценка работы НС. Основная проблема это
процесс  пошаговой  минимизации  (максимизации)  функции оценки НС. Эти задачи
решаются  в  основном  методом  градиентного спуска. Отметим, что операторы ГА
представляют   собой   переборные  процессы,  связанные  с  перераспределением
генетического  материала.  Это  даёт  возможность быстрее получить минимум или
максимум функции, чем в методах пошаговой оптимизации.
******************************************************************************

> НЕЧЕТКИЕ МНОЖЕСТВА

******************************************************************************

>Что такое нечеткое множество, нечеткая и лингвистическая переменная?
>Yuri Burger [2:468/85.3]

     Нечеткое  множество  -  это  множество  пар  <m(x)/x>,  где  x  принимает
некоторое  информативное  значение,  а  m(x) отображает x в единичный отрезок,
принимая  значения  от  0  до  1.  При  этом  m(x)  представляет собой степень
принадлежности  x  к  чему-либо  (0  -  не принадлежит, 1 - принадлежит на все
100%).
     Так, на пример, можно задать для числа 7 множество:

                         <0/1>,<0.4/3>,<1/7>

     Это  множество  говорит о том, что 7 - это на 0% единица, на 40% тройка и
на 100% семерка.

     Нечеткая переменная определяется как <A,X,Ca>.
     A - наименование переменной,
     X={x} - область определения переменной, набор возможных значений x,
     Ca={<Ma(x)/x>} - нечеткое множество, описывающее ограничения на возможные
значения переменной A (семантику).
     Пример:    <"Семь",{1,3,7},{<0/1>,<0.4/3>,<1/7>}>.    Этой   записью   мы
определили  соответствия  между  словом  и  некоторыми  цифрами. Причем, как в
названии переменной, так и в значениях x можно было использовать любые записи,
несущие какую-либо информацию.

     Лингвистическая переменная определяется как <B,T,X,G,M>.

     B - наименование переменной.
     T   -   множество   её  значений  (базовое  терм-множество),  состоит  из
наименований  нечетких  переменных,  областью  определения  каждой  из которых
является множество X.
     G   -  синтаксическая  процедура  (грамматика),  позволяющая  оперировать
элементами  терм-множества  T,  в  частности  - генерировать новые осмысленные
термы. T`=T U G(T) задает расширенное терм-множество (U - знак объединения).
     M   -  семантическая  процедура,  позволяющая  приписать  каждому  новому
значению  лингвистической  переменной  нечеткую  семантику, путем формирования
нового нечеткого множества.

>Igor Ranuk [2:468/166.34]

    Нечеткое  множество  (или  нечеткое  число), описывает некотоpые понятия в
фyнкциональном  виде,  т.  е.  такие понятия как "пpимеpно pавно 5", "скоpость
чyть  больше  300  км/ч" и т. д., как видно эти понятия невозножно пpедставить
одним числом, хотя в pеальности люди очень часто пользyются ими.
    Нечеткая  пеpеменная  это  тоже  самое,  что  и  нечеткое  число, только с
добавлением имени, котоpым фоpмализyется понятие описyемое этим числом.
    Лингвистичекая   пеpеменная   это   множество   нечетких  пеpеменных,  она
использyется  для  того  чтобы  дать  словесное  описание некотоpомy нечеткомy
числy,  полyченномy  в  pезyльтате  некотоpых  опеpаций. Т. е. пyтем некотоpых
опеpаций подбиpается ближайшее по значению из лингвистической пеpеменной.

    Хочy  дать несколько советов для твоей пpоги. Нечеткие числа лyчше хpанить
как  отсоpтиpованное  множество  паp (соpтиpyется по носителям), за счет этого
можно  yскоpить  выполнения  всех  логических и математических опеpаций. Когда
pеализyешь аpифметические опеpации, то нyжно yчитывать погpешность вычислений,
т.  е.  2/4  <>  1/2  для  компьютеpа, когда я с этим столкнyлся, мне пpишлось
несколько  yсложнить  сpавнение  паp,  а  сpавнений  пpиходится  делать много.
Носители  в  нечетких  числах  должны  быть  кpатными какомy-нить числy, иначе
pезyльтаты аpиф. опеpаций бyдyт "некpасивыми", т. е. pезyльтат бyдет неточным,
особенно это видно пpи yмножении.
    За счет хpанения нечетких чисел в отсоpтиpованном виде, я добился того что
аpифметические  опеpации  y меня выполняются по почти линейной зависимости (во
вpемени),  т.  е.  пpи  yвеличении количества паpа, скоpость вычислений падала
линейно.  Я  пpидyмал  и pеализовал точные аpиф. опеpации пpи котоpых не имеет
значение  кол-во  и  кpатность  носителей,  pезyльтат  всегда  бyдет  точным и
"кpасивым",  т.  е.  если  пеpвоначальные  числа  были  похожи на пеpевеpнyтyю
паpабалy,  то и pезyльтат бyдет похожим, а пpи обычных опеpациях он полyчается
стyпенчатым. Я так же ввел понятие "обpатные нечеткие числа" (хотя не до конца
pеализовал), для чего они нyжны? Как ты знаешь пpи вычитании или делении число
из  котоpого  вычитается  дpyгое  должно быть шиpе, а это большая пpоблема пpи
pешении сложных ypавнений, вот "обpатные нечеткие числа" позволяют это делать.
******************************************************************************

>Базовые операции над нечеткими множествами.
>Yuri Burger [2:468/85.3]

     ОБЪЕДИНЕНИЕ:  создается  новое  множество из элементов исходных множеств,
причем для одинаковых элементов принадлежность берется максимальной.

                         A U B = {<Maub(x)/x>}
                         Maub(x) = max {Ma(x), Mb(x)}

     ПЕРЕСЕЧЕНИЕ:  создается  новое множество из одинаковых элементов исходных
множеств, принадлежность которых берется минимальной.

                         A П B = {<Maпb(x)/x>}
                         Maпb(x) = min {Ma(x), Mb(x)}

     ДОПОЛНЕНИЕ: инвертируется принадлежность каждого элемента.

                         C = ~A = {<Mc(x)/x>}
                         Mc(x) = 1-Ma(x)

     СТЕПЕНЬ: принадлежность каждого элемента возводится в степень.
              CON - концентрация, степень=2 (уменьшает степень нечеткости)
              DIN - растяжение, степень=1/2 (увеличивает степень нечеткости)

     РАЗНОСТЬ:  новое  множество  состоит  из  одинаковых  элементов  исходных
множеств.

                         A - B = {<Ma-b(x)/x>}
                         Ma-b(x) = Ma(x)-Mb(a), если Ma(x)>Mb(x)
                                   иначе 0

     НОСИТЕЛЬ:   состоит  из  элементов  исходного  множества,  принадлежности
которых больше нуля.

                         Supp(A) = {x|xeX /\ Ma(x)>0}

     УМНОЖЕНИЕ НА ЧИСЛО: принадлежности элементов домножаются на число.

                         q*A = {<q*Ma(x)/x>}

     СУПРЕМУМ:    Sup   -   точная   верхняя   грань   (максимальное  значение
принадлежности, присутствующее в множестве).

     НОРМАЛИЗАЦИЯ:  нечеткое множество нормально если супремум множества равен
еденице. Для нормализации перещитывают принадлежности элементов:

                         M'a(x) = Ma(x)/(Sup Ma(x))

     АЛЬФА-СРЕЗ:  множество  альфа  уровня  - те элементы исходного множества,
принадлежность  которых  выше  или  равна заданного порога. Порог, равный 1/2,
называют точкой перехода.

                         Aq = {x|xeX /\ Ma(x)>q}

     НЕЧЕТКОЕ ВКЛЮЧЕНИЕ: степень включения нечеткого множества

                         V(A1,A2) = (Ma1(x0)->Ma2(x0))&(Ma1(x1)->Ma2(x1))&..

              По Лукасевичу:

                         Ma1(x)->Ma2(x) = 1&(1-Ma1(x)+Ma2(x))

Секция 2 из 3 - Предыдущая - Следующая

Вернуться в раздел "Общие алгоритмы и методики" - Обсудить эту статью на Форуме
Главная - Поиск по сайту - О проекте - Форум - Обратная связь

© faqs.org.ru