МОДЕЛИРОВАНИЕ НЕЧЕТКОЙ СИСТЕМЫ СРЕДСТВАМИ ИНСТРУМЕНТАРИЯ НЕЧЕТКОЙ ЛОГИКИ

Краткие сведения из теории

Системы нечетких продукций строятся на основе понятия лингвистической переменной, которой называют пять объектов: (х, Т(х), U, G, M), где х – собственное имя переменной, Т(х) – терминальное множество, U – множество объектов (или универсум), G – синтаксические правила употребления, M – семантические правила употребления.

Схемы нечеткого вывода. Рассмотрим различные схемы вывода на базе нечетких правил. Пусть входная переменная х является каким-либо нечетким множеством А, и у – нечетким множеством В, тогда выходная переменная z является нечетким множеством С. Если задан факт х=х0, у=у0, то необходимо найти z=z0.

Схема вывода на базе нечетких правил сводится к решению следующей задачи:

база правил R1:

если Х=А1 И Y=B1, тогда Z=C1;

в противном случае R2:

если Х=А2 И Y=B2, тогда Z=C2;

в противном случае

Rn: если Х=Аn И Y=Bn, тогда Z=Cn.

Факт: х=х0, у=у0.

Следствие: z=?

Для реализации интеллектуальной системы логического вывода по базе нечетких правил необходимо определить функции:

- представления в системе нечетких понятий (функции принадлежности);

- вычисления логических выражений условных частей правил с логическими связками И, ИЛИ;

- усреднения результата, получаемого по разным правилам путем композиции.

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

Интеллектуальная система осуществляет логический вывод по базе нечетких правил по этапам.

НЕ нашли? Не то? Что вы ищете?

1. Фаззификация фактических данных, т. е. точное значение х0 интерпретируется как нечеткая точка.

2. Агрегирование правила: вычисляется уровень пригодности правила к ситуации. Если факт задан нечеткой точкой, то композиция сводится к выявлению соответствующей степени принадлежности.

3. Активизация. Активизация в системах нечеткого вывода представляет собой процедуру или процесс нахождения степени истинности каждого из подзаключений правил нeчетких продукций.

4. Аккумуляция среднего значения:

т. е. построение нечеткого значения выхода по результатам предыдущих этапов.

5. Дефазификация, т. е. выбор представляющего элемента по аккумулрованному нечеткому понятию.

Схемы нечеткого вывода у разных авторов уточняются до оператора нечеткой импликации. Распространены пять схем нечеткого вывода: схема Мамдани, схема Цукамото, схема Сугено, схема по Ларсену и упрощенная схема нечеткого вывода.

В схеме нечеткого вывода Мамдани импликация моделируется минимумом, а агрегация – максимумом.

Схема по Сугено ограничивает правые части правил вывода линейным случаем.

Если х=А1 И y=B1, тогда z=a1x+a2y.

Если х=А2 И y=B2, тогда z=b1x+b2y.

Методические указания

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

Задача состоит в том, чтобы разработать некоторую экспертную систему, которая была бы реализована в виде системы нечёткого вывода и позволяла бы оп­ределять величину чаевых на основе субъективных оценок посетителей качества обслуживания и качества приготовления заказанных блюд.

Эмпирические знания о рассматриваемой проблемной области могут быть пред­ставлены в форме следующих эвристических правил продукций:

1. Если обслуживание плохое или ужин подгоревший, то чаевые ­ малые.

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

3. Если обслуживание отличное или ужин превосходный, то чаевые ­ щедрые.

В качестве входных параметров системы нечеткого вывода будем рассматривать две нечеткие лингвистические переменные: «качество обслуживания» и «качество приготовления заказанных блюд» (или сокращенно — «качество ужина»), а в качестве выходных параметров — нечеткую лингвистическую переменную «величина чаевых».

В качестве терм-множества первой лингвистической переменной «качество обслуживания» будем использовать множество Т1={«плохое», «хорошее», «отличное»} в качестве терм-множества второй лингвистической переменной «качество ужина» будем использовать множество T2={«подгоревший», «превосходный»}. В качестве терм-множества выходной лингвистической переменной «величина чаевых» будем использовать множество Т3= {«малые», «средние», «щедрые»}. При этом каждый из термов первой и второй входной переменной (качество обслуживания и приготовления заказанных блюд) будем оценивать по 10-балльной порядковой шкале, при которой числу 0 соответствует наихудшая оценка, а числу 10) — наилучшая оценка. Что касается термов выходной переменной, то будем предполагать, что малые чаевые составляют около 5% от стоимости заказанных блюд, средние чаевые — около 15%, а щедрые чаевые — около 25%.

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

ПРАВИЛО_1: ЕСЛИ «качество обслуживания плохое» ИЛИ «ужин подгоревший», ТО «величина чаевых малая»

ПРАВИЛО_2: ЕСЛИ «качество обслуживания хорошее», ТО «величина чаевых средняя»

ПРАВИЛО_3: ЕСЛИ «качество обслуживания отличное» ИЛИ «ужин превосходный», ТО «величина чаевых щедрая»

Проектирование нечеткой системы со­стоит в выполнении следующей последова­тельности шагов.

Шаг 1. Открыть FIS-редактор, напеча­тав слово fuzzy в командной строке. После этого появится но­вое графическое окно.

Шаг 2. Добавим вторую входную пере­менную. Для этого в меню Edit выбираем команду Add input.

Шаг 3. Переименуем первую входную переменную. Для этого сделаем щелчок левой кнопкой мыши на блоке input1, введем новое обозначение service в поле редактирования имени текущей переменной и нажмем Enter.

Шаг 4. Переименуем вторую входную переменную. Для этого щелкнем мышкой на блоке input2, введем новое обозначение food в поле редак­тирования имени текущей переменной и нажмем Enter.

Шаг 5. Переименуем выходную переменную. Для этого щелкнем мышкой на блоке output1, введем новое обозначение tip в поле редактирования имени текущей переменной и нажмем Enter.

Шаг 6. Зададим имя системы. Для этого в меню File выберем в подменю Export команду То Disk... и введем имя файла, например, tipper.

Шаг 7. Перейдем в редактор функций принадлежности. Для этого сделаем двойной щелчок левой кнопкой мыши на блоке service.

Шаг 8. Зададим диапазон изменения переменной service, напечатав 0 10 в поле Range.

Шаг 9. Зададим функции принадлежности переменной food. Для лингвистиче­ской оценки этой переменной будем использовать три терма с гауссовыми функциями принадлежности. Тип функций принадлежности выбирается с помощью выпадающего списка Type.

Шаг 10. Зададим наименования термов переменной service. Для этого щелкнем мышкой по графику первой функции принадлежности. График активной функции принадлежности выделяется красной жирной линией. Затем введем наименование терма poor в поле Name и нажмем Enter. Щелкнем мышкой по графику второй функции принадлежности, введем наименование терма good в поле Name и нажмем Enter. Щелкнем мышкой по графику третьей функции принадлежности, введем наименование терма excellent в поле Name и нажмем Enter.

Шаг 11. Зададим функции принадлежности переменной food. Для этого акти­визируем переменную щелчком мышкой по блоку food. Зададим диапазон изменения переменной food. Для этого напечатаем 0 10 в поле Range и нажмем Enter. Для лингвистиче­ской оценки этой переменной будем использовать два терма с трапециевидными функциями принадлежности.

Шаг 12. По аналогии с шагом 10 зададим следующие наименования термов переменной food rancid, delicious. В результате по­лучим графическое окно.

Шаг 13. Зададим функции принадлежности переменной tip. Для лингвистиче­ской оценки этой переменной будем использовать три терма с треугольными функциями принадлежности. Для этого щелчком мыши по блоку tip активизируем переменную tip. Зададим диапазон измене­ния переменной tip. Для этого напечатаем 0 30 в поле Range и нажмем Enter. Затем в меню Edit выберем команду Remove All MFs для удаления установленных по умолчанию функ­ций принадлежности. После этого в меню Edit выберем команду Add MFs. В появившемся диалоговом окне выберем тип функции принадлежности trimmf в поле MF type и три терма в поле Number of MFs.

Шаг 14. По аналогии с шагом 10 зададим следующие наименования термов переменной tip: cheap, average, generous. В результате получим графическое окно:

Шаг 15. Перейдем в редактор базы знаний RuleEditor. Для этого в меню Edit выберем команду Rules....

Шаг 16. Для ввода правила выбираем в меню соответствующую комбина­цию термов и нажимаем кнопку Add rule. На рисунке изображено окно редактора базы знаний после ввода всех трёх правил. В конце правил в скобках указаны весовые коэффициенты.

Шаг 17. Сохраним созданную систему. Для этого в меню File выберем в под­меню Export команду То disk.

На рисунке приведено окно визуализации нечеткого вывода. Окно активизи­руется командой Rules меню View. В поле Input указываются значения входных переменных, для которых выполняется нечеткий логический вывод.

На рисунке приведена поверхность «входы - выход», соответствующая синте­зированной нечеткой системе. Окно выводится по команде Surface меню View.

Задание

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

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

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

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

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

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

4. Если температура воздуха в помещении высокая, а скорость изменения темпе­ратуры отрицательная, то кондиционер следует выключить.

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

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

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

8. Если температура воздуха в помещении низкая, а скорость изменения температуры положительная, то кондиционер следует выключить.

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

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

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

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

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

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

15. Если температура воздуха в помещении в пределах нормы, а скорость изменения температуры равна нулю, то кондиционер следует выключить.

Эта информация будет использоваться при построении базы правил системы нечёткого вывода, которая позволяет реализовать данную модель нечёткого управления.