Алгоритмы принятия решений на основе нечеткой логики
Автор: Пользователь скрыл имя, 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
Для добавления входных переменных необходимо воспользоваться командой меню «Edit → Add Variable → Input». Для удаления входной переменной необходимо выбрать её и воспользоваться командой меню «Edit → Remove 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», где необходимо задать вид функции и количество добавляемых функций.
Для удаления функции принадлежности необходимо выбрать её и воспользоваться меню «Edit → Remove Selected MF».
Для
редактирования правил необходимо воспользоваться
меню «Edit → Rules» (рис. 9).
Рис. 9. Редактор
правил
На рис. 9 цифрами 1 - 6 обозначены:
- меню;
- список созданных правил;
- область выбора
условий левой части правила
(предпосылок); - область выбора связи между условиями предпосылок (или/и);
- область выбора результирующей функции принадлежности;
- набор управляющих кнопок:
«Delete Rule» – удалить правило, выбранное в списке созданных правил;
«Add Rule» – добавить правило;
«Change Rule» – изменить правило, выбранное в списке созданных правил.
Для создания нового правила необходимо задать условия левой части правила, результирующую функцию и нажать на кнопку «Add Rule».
Для удаления правила, необходимо выбрать его в списке и нажать кнопку «Delete Rule».
Для
проверки работы механизма нечеткого
вывода необходимо воспользоваться
меню «View → Rules».
Рис. 10. Просмотр механизма
нечеткого вывода
В строке «Input» необходимо задать значения входных переменных и нажать клавишу ввода. В строке «Output» будет указано выходное значение и будут отображены графики соответствующих функций принадлежности.
Рассмотрим пример использования пакета Matlab для моделирования приведенной выше задачи модернизации СЗИ.
1. Запустим Fuzzy Logic Toolbox с помощью команды fuzzy.
2.
Добавим вторую входную лингвистическую
переменную, используя меню «Edit →
Add Variable → Input» (рис. 11):
Рис.
11. Добавление лингвистической переменной