Алгоритмы принятия решений на основе нечеткой логики

Автор: Пользователь скрыл имя, 02 Декабря 2010 в 18:10, лабораторная работа

Описание работы

Нечеткая логика – это математическая наука, служащая расширением классической логики и основанная на концепции частичной истинности. Понятия нечетких множеств (fuzzy sets) и нечеткой логики (fuzzy logic) впервые были предложены американским ученым Лотфи Заде (Lotfi Zadeh) в 1965 г. в статье “Нечеткие множества”, опубликованной в журнале “Информатика и управление”.

Работа содержит 1 файл

лаб работа НЛ.doc

— 412.50 Кб (Скачать)

ЛАБОРАТОРНАЯ  РАБОТА №1

АЛГОРИТМЫ ПРИНЯТИЯ РЕШЕНИЙ  НА ОСНОВЕ

НЕЧЕТКОЙ  ЛОГИКИ 

       1. Цель работы 

       Целью выполнения работы является:

  • закрепление знаний в области нечеткой логики и механизмов принятия решений на её основе;
  • ознакомление с пакетом математического моделирования Fuzzy Toolbox в среде Matlab;
  • реализация нечеткого алгоритма принятия решений с помощью Matlab.
 

       2. Краткие теоретические  сведения 

       Нечеткая  логика – это математическая наука, служащая расширением классической логики и основанная на концепции частичной истинности. Понятия нечетких множеств (fuzzy sets) и нечеткой логики (fuzzy logic) впервые были предложены американским ученым Лотфи Заде (Lotfi Zadeh) в 1965 г. в статье “Нечеткие множества”, опубликованной в журнале “Информатика и управление”.

       Основные  преимущества систем на основе нечеткой логики:

  • возможность оперирования нечеткими входными данными: например, значениями, которые невозможно задать однозначно («сильно уязвимый», «довольно дорогой» и т.п.);
  • возможность нечеткой формализации критериев оценки и сравнения: оперирование критериями "большинство", "возможно", преимущественно";
  • возможность проведения качественных оценок как входных данных, так и выходных результатов;
  • возможность проведения имитационного моделирования сложных динамических систем и их сравнительный анализ с заданной степенью точности.

       Нечетким  логическим выводом (fuzzy logic inference) называется аппроксимация зависимости Y = f(x1, x2, , xn) выходной лингвистической переменной от входных лингвистических переменных и получение заключения в виде нечеткого множества, с использованием базы знаний, содержащей правила  вида «Если …, то…».

       Механизм  логического вывода состоит, в общем  случае, из следующих этапов:

       1) фаззификация – определение степеней уверенности, т.е. значения каждой из функций принадлежности терма при заданных значениях входных переменных xk (k = 1, …, n);

       2) нечеткий вывод – состоит из двух этапов:

  • определение уровней «отсечения» для левой части каждого из правил, т.е. значения функций принадлежности для левых частей каждого правила («предпосылок»). В большинстве случаев, это либо максимум, либо минимум из степеней уверенности термов, вычисленных на этапе фаззификации (логические «ИЛИ», «И»);
  • определение «усеченных» функций принадлежности. Для этого значения функций принадлежности предпосылок объединяются с соответствующими функциями принадлежности из правых частей правил по правилу «логического И»;

       3) нечеткая композиция – определение результирующей функции принадлежности всей совокупности правил, т.е. объединение полученных усеченных функций (обычно по правилу «логического ИЛИ»);

       4) дефаззификация – приведение к «четкости», используя результирующую функцию принадлежности. Основным методом деффазификации является центроидный (centroid) – нахождение центра тяжести плоской фигуры, ограниченной осями координат и графиком функции принадлежности нечеткого множества;

       В качестве примера рассмотрим процедуру  принятия решения о необходимости  выделения затрат на модернизацию системы  защиты информации (СЗИ).

       1. Сформулируем набор нечетких логических переменных:

  • уровень угроз x = {Низкий (S), Средний (M), Высокий (L)};
  • уязвимость ресурсов y = {Невысокая (S), Высокая (L)};
  • затраты на модернизацию z = {Низкие (S), Высокие (L)}.

       2. Построим графики функций принадлежности для этих переменных (рис. 3): 

Рис. 3. Функции  принадлежности для уровня угроз, уязвимости и 

затрат  на модернизацию СЗИ: а – уровень угроз; б – уязвимость ресурсов; в – затраты на модернизацию. 

       3. Сформулируем правила, регламентирующие работу системы принятия решений:

       ЕСЛИ  Уровень угроз = «НИЗКИЙ» И Уязвимость ресурсов = «НЕВЫСОКАЯ» ТО Затраты  на модернизацию = «НИЗКИЕ»

       Полный  список всех правил, с указанием  соответствующих значений нечетких переменных x, y и z приведен в табл. 1: 
 

Таблица 1

  База правил 

       x                 y        S        M        L
       S        S        L        L
       L        S        S        L
 

       4. Построим графическое представление механизма логического вывода для конкретных значений входных переменных x = x* и y = y* (рис. 4)

 

 

       5. Определим результирующую функцию принадлежности совокупности правил 1 - 4, используя при дефаззификации центроидный метод (рис. 5). 

Рис. 5. Определение функции принадлежности

для выходной переменной и дефаззификация 
 

       2.3. Основные сведения  о пакете Matlab 

       Matlab – пакет прикладных программ для решения задач численного анализа созданный компанией The MathWorks. Пакет позволяет визуализировать математические функции и экспериментальные данные, реализовывать вычислительные алгоритмы, конструировать графический интерфейс пользователя для решения специфических задач, а также через специальные интерфейсы взаимодействовать с другими языками программирования и программами.

       При загрузке Matlab появляется основное окно программы (рис. 6), состоящее из следующих частей:

       1) меню;

       2) панель инструментов;

       3) Launch Pad – список доступных инструментальных пакетов;

       4) Command History – история команд;

       5) Command Window – окно команд. 

Рис. 6. Основное окно Matlab 

       Для выполнения сложных расчетов, подобных работе с алгоритмами нечеткой логики, необходимо использовать дополнительные инструментальные пакеты. Их можно запустить с помощью Launch Pad либо из окна команд. Инструментальный пакет для работы с алгоритмами нечеткой логики запускается с помощью команды fuzzy.

       Основными элементами окна Fuzzy Toolbox (рис. 7) являются:

       1) меню;

       2) настройка входных и выходных функций принадлежности;

       3) настройка методов сложения множеств на разных этапах. 

Рис. 7. Окно настроек Fuzzy Logic Toolbox 

       Для добавления входных переменных необходимо воспользоваться командой меню «EditAdd VariableInput». Для удаления входной переменной необходимо выбрать её и воспользоваться командой меню «EditRemove Selected Variable».

       Для изменения параметров входных и  выходных функций принадлежности, необходимо выполнить двойной клик на одной из входных/выходных переменных или воспользоваться командой меню «Edit Membership Functions» (рис. 8). 

Рис. 8. Изменение параметров функций принадлежности 

       На  рис. 8 цифрами 1 - 4 обозначены:

       1 – поле выбора переменной, для которой требуется изменить параметры функции принадлежности;

       2 – редактор функции принадлежности;

       3 – поле настройки параметров переменной:

  • range – отрезок значений, которые может принимать переменная;
  • display range – отрезок значений, отображаемый на графике;

       4 – поле настройки параметров выбранной функции принадлежности:

  • name – название функции приналежности;
  • type – вид функции (trimf – треугольная, trapmf – трапецеидальная, gauss – гауссова);
  • params – параметры функции.

       Для добавления дополнительных функций  принадлежности для выбранной переменной, необходимо воспользоваться меню «Edit Add MFs», где необходимо задать вид функции и количество добавляемых функций.

       Для удаления функции принадлежности необходимо выбрать её и воспользоваться  меню «EditRemove Selected MF».

       Для редактирования правил необходимо воспользоваться  меню «EditRules» (рис. 9). 

Рис. 9. Редактор правил 

       На  рис. 9 цифрами 1 - 6 обозначены:

    1. меню;
    2. список созданных правил;
    3. область выбора условий левой части правила  
      (предпосылок);
    4. область выбора связи между условиями предпосылок (или/и);
    5. область выбора результирующей функции принадлежности;
    6. набор управляющих кнопок:

       «Delete Rule» – удалить правило, выбранное в списке созданных правил;

       «Add Rule» – добавить правило;

       «Change Rule» – изменить правило, выбранное в списке созданных правил.

       Для создания нового правила необходимо задать условия левой части правила, результирующую функцию и нажать на кнопку «Add Rule».

       Для удаления правила, необходимо выбрать  его в списке и нажать кнопку «Delete Rule».

       Для проверки работы механизма нечеткого  вывода необходимо воспользоваться  меню «ViewRules». 

   Рис. 10. Просмотр механизма нечеткого вывода 

       В строке «Input» необходимо задать значения входных переменных и нажать клавишу ввода. В строке «Output» будет указано выходное значение и будут отображены графики соответствующих функций принадлежности.

       Рассмотрим пример использования пакета Matlab для моделирования приведенной выше задачи модернизации СЗИ.

       1. Запустим Fuzzy Logic Toolbox с помощью команды fuzzy.

       2. Добавим вторую входную лингвистическую переменную, используя меню «Edit Add VariableInput» (рис. 11): 

       Рис. 11. Добавление лингвистической переменной 

Информация о работе Алгоритмы принятия решений на основе нечеткой логики