Главная страница
Навигация по странице:

  • ПРАКТИЧЕСКОЕ ЗАДАНИЕ 4 по дисциплине «Интеллектуальные информационные системы»

  • ФИО студента Архипова Карина Сергеевна Направление подготовки

  • Группа ИСТ-Б-01-Д-2020-1 Москва 2022

  • ИИС. ИИС ПЗ4 Архипова К.С.. Российский государственный социальный университет практическое задание 4 по дисциплине Интеллектуальные информационные системы


    Скачать 3.48 Mb.
    НазваниеРоссийский государственный социальный университет практическое задание 4 по дисциплине Интеллектуальные информационные системы
    Дата24.10.2022
    Размер3.48 Mb.
    Формат файлаdocx
    Имя файлаИИС ПЗ4 Архипова К.С..docx
    ТипДокументы
    #751223







    Российский государственный социальный университет





    ПРАКТИЧЕСКОЕ ЗАДАНИЕ 4

    по дисциплине «Интеллектуальные информационные системы»

    Работа с нечеткой логикой

    (тема практического задания)

    ФИО студента

    Архипова Карина Сергеевна

    Направление подготовки

    Информационные системы и технологии

    Группа

    ИСТ-Б-01-Д-2020-1


    Москва 2022


    Программная реализация моделей нечеткой логики


    В настоящее время существует огромное количество программных продуктов, позволяющих реализовывать нейросетевые структуры, но значительно меньше программ, работающих с моделями нечеткой логики (и они пока практически недоступны отечественным специалистам). Для решения задач нечеткой логики можно использовать математическую систему MATLAB, а конкретнее пакет нечеткой логики FuzzyLogicToolbox.

    Fuzzy Logic Toolbox – это пакет расширения MATLAB, содержащий инструменты для проектирования систем нечеткой логики.

    Пакет позволят создавать экспертные системы на основе нечеткой логики, проводить кластеризацию нечеткими алгоритмами, а также проектировать нечеткие нейросети.

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

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

    Ключевые особенности:

    1 Графический интерфейс для интерактивного пошагового проектирования нечетких систем;

    2 Функции для создания экспертных систем на основе нечеткой логики;

    3 Поддержка логики И, ИЛИ и НЕ в настраиваемых правилах;

    4 Стандартные типы экспертных систем нечеткой логики (Mamdani, Sugeno);

    5 Функции для нейроадаптивной и нечеткой кластеризации с обучением;

    6 Включение нечетких систем в Simulink-модели;

    7 Генерация С-кода и независимых приложений, реализующих системы нечеткой логики.



    Рисунок 1 – FuzzyLogicToolbox

    Пример использования инструмента для конкретной задачи


    Необходимо создать экспертную систему, которая позволит определить сколько следует дать официанту на чай за обслуживание в ресторане, при заданной оценке качества еды и обслуживания по 10 бальной шкале где 0 наихудшая и 10 наилучшая оценка. В среднем в ресторанах чаевые составляют 15% но эта величина может быть изменена в зависимости от оценки качества еды и обслуживания. Будем также предполагать, что у нас есть представления о малых чаевых, средних чаевых и щедрых.

    Мы хотим отобразить связь между двумя входами (качество еды и обслуживание) и выходом - количество чаевых.

    Чаевые должны быть щедрыми если еда и обслуживание были отличными иначе чаевые должны быть не высокими, при этом можно выделить некую плоскую область со значением 15%.

    Подход на базе нечеткой логики:

    1. Если еда и обслуживание плохие, то чаевые малые;

    2. Если еда и обслуживание среднее, то чаевые средние;

    3. Если еда и обслуживание хорошие, то чаевые большие.

    Смоделируем систему нечеткого вывода по этой задаче:

    1. Определим входы и выходы;

    2. Зададим функции принадлежности для нечетких переменных;

    3. Определим правила работы системы.

    Для начала необходимо вызвать FIS редактор набрав в командной строке fuzzy.



    Рисунок 2 – FIS Editor

    Через меню Edit => Add Variable => Input добавляем еще один вход.



    Рисунок 3 – Добавление входа

    В строке Name указываем наименования входов сервис и еда (service, food) также указываем в сроке Name имя вывода – чаевые (tip).



    Рисунок 4 – Поименованные элементы

    Присвоим имя всей системе через меню File => Export => To Workspace => TipExpert.



    Рисунок 5 – Наименование системы



    Рисунок 6 – Именованная система

    Теперь зададим функции принадлежности. Переходим в меню Edit => Membership Functions.



    Рисунок 7 – Переход в режим редактирования функций принадлежности

    Теперь отредактируем функцию принадлежности переменной service. В строке Range и Display Range устанавливаем значения от [0 10]. Зададим 3 функции принадлежности гауссового типа. Меню Edit =>Add MFs=>gaussmf.



    Рисунок 8 – Добавление функций гауссового типа

    В строке Name для функций укажем имена poor (плохой), good (хороший) и excellent (отличный).



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

    Аналогично создадим 2 функции для food только теперь это будут функции трапецеидальной формы trapmf.



    Рисунок 10 – Функции принадлежности food

    Функции назовем good (хорошая еда) и bad (плохая еда). Установим параметры Range [0 10], Display Range [0 10] и Params [7 9 10 10].



    Рисунок 11 – Функции принадлежности food

    Отредактируем переменную tip. Зададим 3 функции принадлежности треугольной формы cheap (малые чаевые), average(средние) и generous (большие чаевые). Установим параметры Range [0 30], Display Range [0 30] и Params [20 25 30].



    Рисунок 12 – Функции принадлежности tip

    Теперь создаём правила. Меню Edit => Rules. Установим следующие правила.



    Рисунок 13 – Правила

    Посмотрим, как работает наша система. В текущем меню нажмём View => Rules. Сдвинем бегунок service на 0 и food на 10. Видим, что рекомендованное значение tip = 15, если оба значения ставим в 0, то tip = 6.08, если service 10 и food 9,95, то tip = 23.9 и так далее. В зависимости от изменения значений в переменных service и food будут и изменяться рекомендуемые значения tip.



    Рисунок 14 – Рекомендуемые чаевые при обслуживании 0 и еде 10



    Рисунок 15 – Рекомендуемые чаевые при обслуживании 0 и еде 0



    Рисунок 16 – Рекомендуемые чаевые при обслуживании 10 и еде 9,95

    Можем также отобразить поверхность отклика что бы отобразить зависимости выходной переменной от входных. В этом же меню View => Surface. В выпадающем списке X (input) можно выбрать по какому входу будет строиться фигура service или food.



    Рисунок 17 – Поверхность отклика


    написать администратору сайта