Defuzzification Method: Weighted Sum.



Дальше создадим пять входных переменных Accommodation, food, excursions, health services, и price. Для того чтобы создать переменные в левой колонке выберите вкладку Inputs и в правом окне нажмите кнопку Add (рис.15).

Рис. 14. Параметры по алгоритму Сугено

Рис. 15. Настройки параметров входной переменной Accomodation

 

После создания переменной двойным нажатием левой кнопкой мыши выберите нашу переменную и нажмите Edit. В поле редактирования доступны такие параметры как: name (имя переменной) и range (интервал значений). Ниже располагается поле редактирования членов функций, которые можно добавить, нажав кнопку Add. Каждому члену функции можно задать name (имя), type (тип), par (параметры).

Параметры для первой входной переменной Accomodation (см. рис.15):

Information:

Name = Accomodation

Range = 0 100

Nro. Member functions = 3

Member functions:

Name = 3 stars Type = gauss2mf      Par = 13.59 -4 13.59 4

Name = 4 stars   Type = gauss2mf  Par = 13.59 46 13.59 54

Name = 5 stars  Type = gauss2mf Par = 13.59 96 13.59 104

Параметры для второй входной переменной food (рис.16):

Information:

Name = food

Range = 0 100

Nro. Member functions = 3

Member functions:

Name = BB  Type = gauss2mf  Par = 13.59 -4 13.59 4

Name = HB  Type = gauss2mf  Par = 13.59 46 13.59 54

Name = FB  Type = gauss2mf  Par = 13.59 96 13.59 104

Рис. 16. Настройки параметров входной переменной food

 

Параметры для третьей входной переменной Excursions (рис.17):

Information:

Name = Excursions

Range = 0 100

Nro. Member functions = 2

Member functions:

Name = Haven’t  Type = gauss2mf  Par = 13.59 -4 13.59 4

Name = Have    Type = gauss2mf  Par = 13.59 96 13.59 104

Параметры для четвёртой входной переменной health services (рис.18):

Information:

Name = health services

Range = 0 100

Nro. Member functions = 2

Member functions:

Name = Haven’t Type = gauss2mf  Par = 13.59 -4 13.59 4

Name = Have    Type = gauss2mf   Par = 13.59 96 13.59 104

Параметры для пятой входной переменной price (рис.19):

Information:

Name = price

Range = 0 100

Nro. Member functions = 3

Member functions:

Name = 30000                Type = gauss2mf    Par = 13.59 -4 13.59 4

Name = 30000 to 50000  Type = gauss2mf    Par = 13.59 46 13.59 54

Name = 50000 to 70000 Type = gauss2mf    Par = 13.59 96 13.59 104

Рис. 17. Настройки параметров входной переменной Excursions

Рис.18. Настройки параметров входной переменной health services

Рис.19. Настройки параметров входной переменной price

 

Для добавления выходной переменной существует вкладка Outputs и процесс создания ничем не отличается от входных переменных. Добавим переменную tip и установим значения параметров (рис.20):

Information:

Name = tip

Range = 0 100

Nro. Member functions = 3

Member functions:

Name = Poor     Type = costant   Par = 5

Name = Good   Type = costant   Par = 50

Name = Excellent Type = costant   Par = 95

Рис.20. Настройки параметров выходной переменной tip

 

Завершающим этапом создания простой нечёткой экспертной системы является создание правил во вкладе Rules (рис.21).

Рис.21. Правила для определения привлекательности путёвки

 

Правила в подробном формате

R1: IF {Accommodation IS 3 stars} AND {Food IS BB} AND {Excursions IS Haven't} AND {health services IS Haven't} AND {price IS 30000} THEN {tip IS Poor} weigth=1.0

R2: IF {Accommodation IS 3 stars} AND {Food IS BB} AND {Excursions IS Have} AND {health services IS Haven't} AND {price IS 30000} THEN {tip IS Good} weigth=1.0

R3: IF {Accommodation IS 3 stars} AND {Food IS BB} AND {Excursions IS Haven't} AND {health services IS Have} AND {price IS 30000} THEN {tip IS Good} weigth=1.0

R4: IF {Accommodation IS 4 stars} AND {Food IS BB} AND {Excursions IS Have} AND {health services IS Haven't} AND {price IS 30000 to 50000} THEN {tip IS Poor} weigth=1.0

R5: IF {Accommodation IS 3 stars} AND {price IS 30000 to 50000} THEN {tip IS Poor} weigth=1.0

R6: IF {Accommodation IS 3 stars} AND {price IS 50000 to 70000} THEN {tip IS Poor} weigth=1.0

R7: IF {Accommodation IS 4 stars} AND {Food IS BB} AND {Excursions IS Have} AND {health services IS Have} AND {price IS 30000 to 50000} THEN {tip IS Good} weigth=1.0

R8: IF {Accommodation IS 4 stars} AND {Food IS HB} AND {Excursions IS Haven't} AND {health services IS Haven't} AND {price IS 30000 to 50000} THEN {tip IS Good} weigth=1.0

R9: IF {Accommodation IS 3 stars} AND {Food IS BB} AND {Excursions IS Have} AND {health services IS Have} AND {price IS 30000} THEN {tip IS Excellent} weigth=1.0

R10: IF {Accommodation IS 4 stars} AND {Food IS BB} AND {Excursions IS Haven't} AND {health services IS Have} AND {price IS 30000 to 50000} THEN {tip IS Poor} weigth=1.0

R11: IF {Accommodation IS 4 stars} AND {Food IS HB} AND {Excursions IS Haven't} AND {health services IS Have} AND {price IS 30000 to 50000} THEN {tip IS Good} weigth=1.0

R12: IF {Accommodation IS 4 stars} AND {Food IS HB} AND {Excursions IS Have} AND {health services IS Haven't} AND {price IS 30000 to 50000} THEN {tip IS Good} weigth=1.0

R13: IF {Accommodation IS 4 stars} AND {Food IS BB} AND {Excursions IS Have} AND {health services IS Have} AND {price IS 50000 to 70000} THEN {tip IS Poor} weigth=1.0

R14: IF {Accommodation IS 4 stars} AND {Food IS HB} AND {Excursions IS Have} AND {health services IS Have} AND {price IS 50000 to 70000} THEN {tip IS Poor} weigth=1.0

R15: IF {Accommodation IS 4 stars} AND {Food IS FB} AND {Excursions IS Have} AND {health services IS Have} AND {price IS 50000 to 70000} THEN {tip IS Poor} weigth=1.0

R16: IF {Accommodation IS 4 stars} AND {Food IS FB} AND {Excursions IS Have} AND {health services IS Have} AND {price IS 30000 to 50000} THEN {tip IS Excellent} weigth=1.0

R17: IF {Accommodation IS 4 stars} AND {Food IS HB} AND {Excursions IS Have} AND {health services IS Have} AND {price IS 30000 to 50000} THEN {tip IS Excellent} weigth=1.0

R18: IF {Accommodation IS 5 stars} AND {Food IS FB} AND {Excursions IS Have} AND {health services IS Have} AND {price IS 50000 to 70000} THEN {tip IS Excellent} weigth=1.0

R19: IF {Accommodation IS 5 stars} AND {Food IS FB} AND {Excursions IS Have} AND {health services IS Haven't} AND {price IS 50000 to 70000} THEN {tip IS Good} weigth=1.0

R20: IF {Accommodation IS 5 stars} AND {Food IS FB} AND {Excursions IS Haven't} AND {health services IS Have} AND {price IS 50000 to 70000} THEN {tip IS Good} weigth=1.0

R21: IF {Accommodation IS 5 stars} AND {Food IS FB} AND {Excursions IS Haven't} AND {health services IS Haven't} AND {price IS 50000 to 70000} THEN {tip IS Poor} weigth=1.0

R22: IF {Accommodation IS 5 stars} AND {Food IS HB} AND {Excursions IS Haven't} AND {health services IS Haven't} AND {price IS 50000 to 70000} THEN {tip IS Poor} weigth=1.0

R23: IF {Accommodation IS 5 stars} AND {Food IS BB} AND {Excursions IS Haven't} AND {health services IS Haven't} AND {price IS 50000 to 70000} THEN {tip IS Poor} weigth=1.0

R24: IF {Accommodation IS 5 stars} AND {Food IS HB} AND {Excursions IS Have} AND {health services IS Have} AND {price IS 50000 to 70000} THEN {tip IS Poor} weigth=1.0

R25: IF {Accommodation IS 5 stars} AND {Food IS BB} AND {Excursions IS Have} AND {health services IS Have} AND {price IS 50000 to 70000} THEN {tip IS Poor} weigth=1.0

На этом этапе создание простой нечёткой экспертной системы закончено. Далее нам нужно экспортировать её в SciLab. Для этого во вкладке File выбрать Export и нажать toworkspace, где нам понадобиться задать имя переменной, по которой SciLab будет её определять, например, 1fls.

С помощью команды plotsurf (“имя переменной”) (в примере 3 имя переменной – « permit») есть возможность построить конечный график, по которому можно будет сделать выводы. После ввода в окне консоли plotsurf (1fls) откроется новое окно для настройки отображения графика (рис.22).

Рис.22. Окно с настройками для отображения графика

 

После того как нажмём кнопку Plot будет получен следующий график (рис.23). По осям x и y графика располагаются входные переменные food и Accommodation, по оси z – выходная переменная tip. По данному графику можно сделать следующие выводы:

Если будет питание BB (завтрак) и трёхзвёздочный отель, то путёвка плохая.

Если будет питание HB (завтрак и ужин) и четырёхзвёздочный отель, то путёвка хорошая.

Если будет питание FB (завтрак, обед и ужин) и пятизвёздочный отель, то путёвка отличная.

В результате работы была построена простая нечёткая экспертная система и решена задача с определением степени качества путёвки в программе SciLab с помощью Fuzzy Logic Toolbox.

Рис.23. График вывода системы по алгоритму Сугено

Пример 4. Определить степень загрязнения среды в городе с помощью компонента Fuzzy Logic Toolbox для программы SciLab. Выбор осуществляется по параметрам плотность транспорта и наличие заводов и тепловых станций. Необходимо решить задачу и построить график функции, на котором можно будет увидеть результат данного исследования и сделать выводы о наиболее выгодном методе производства. Для решения задачи построить систему нечеткого вывода по Сугено.

Для начала работы с нечёткой логикой, необходимо загрузить данный пакет. Сделать это можно, запустив программу и перейдя по вкладке Applications – Module Managers - ATOMS, либо нажав на кнопку с изображением коробки (рис.24).

Рис.24. Вкладка запуска установки модулей ATOMS

 

Далее в открывшемся окне следует перейти в папку Modeling, выбрать Fuzzy Logic Toolbox (рис. 25), нажать кнопку Install и дождаться установки расширения, после чего перезапустить программу. После повторного запуска программы в окне консоли должна появиться надпись об успешной загрузке модуля (рис. 26).

Рис.25. Modeling и Fuzzy Logic Toolbox

Рис. 26. Вывод в консоли об успешной загрузке модуля Fuzzy Logic Toolbox

Для открытия инструментов для работы с нечёткой логикой необходимо в консоли набрать команду editfls, после чего откроется новое окно (рис. 27).

Рис. 27. Окно для работы с задачами с нечёткой логикой

 

Для начала создадим систему с нечёткой логикой по алгоритму Takagi-Sugeno. Для этого перейдем File – Newfls – Takagi-Sugeno. Во вкладке Description зададим основные параметры, как показано на рисунке (рис. 28).

Рис. 28. Параметры системы по алгоритму Takagi-Sugeno

 

Далее создадим входные переменные. Для того, чтобы создать новую переменную нужно нажать кнопку Add во вкладке Inputs. Для редактирования только что созданной переменной необходимо нажать кнопку Edit. В поле редактирования доступны такие параметры как: name (имя переменной) и range (интервал значений). Ниже располагается поле редактирования членов функций, которые можно добавить, нажав кнопку Add. Каждому члену функции можно задать name (имя), type (тип), par (параметры). Назовем новую переменную transport density (плотность транспорта), установим интервал от 0 до 100 и добавим два члена – low (низкая) и high (высокая) с типом trapmf, что означает трапециевидную функцию принадлежности (рис. 29).

Переменная medium (средняя) имеет ещё один тип под названием trimf, который определяет треугольную функцию принадлежности. Подобным образом, создадим переменную factories and thermal stations (заводы и тепловые станции) и настроим параметры как показано на рис. 30.

Рис. 29. Настройки параметров входной переменной transport density

Рис.30. Настройки параметров входной переменной factories and thermal stations

 

Для добавления выходной переменной pollution degree существует вкладка Outputs и процесс создания ничем не отличается от входных переменных, за исключением, что для нее все члены функции имеют тип constant  Добавим переменную pollution degree (степень загрязнения) и установим значения параметров как показано на рис.31.

Рис.31. Настройка параметров выходной переменной pollution degree

 

Завершающим этапом создания системы с нечёткой логикой является составление правил во вкладке Rules. Создаём 9 правил (рис. 32):

1. Если плотность автомобилей низкая, а заводов в городе нет, степень загрязнения будет слабая.

2. Если плотность автомобилей будет низкая, а заводов в городе нет, то степень загрязнения слабая.

3. Если плотность автомобилей будет большая, а заводов в городе нет, то степень загрязнения будет средняя.

4. Если плотность автомобилей низкая, а заводов в городе один или два, степень загрязнения будет средняя.

5. Если плотность автомобилей средняя, а заводов в городе один или два, степень загрязнения будет средняя.

6. Если плотность автомобилей высокая, а заводов в городе один или два, степень загрязнения будет большая.

7. Если плотность автомобилей низкая, а заводов в городе больше двух, степень загрязнения будет средняя.

8. Если плотность автомобилей средняя, а заводов в городе больше двух, степень загрязнения будет большая.

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

Рис.32. Правила для определения степени загрязнения среды

 

Первое правило “ IF { transport density IS low } and { factories and thermal stations IS not } THEN { pollution degree IS small }” означает, что при низком (low) значении плотности транспорта и отсутствии заводов и тепловых станций (not), загрязнённость среды будет низкая (small).

На этом создание системы с нечёткой логикой по алгоритму Сугено закончено. Всё что осталось сделать – это экспортировать систему в рабочее пространство SciLab. Для этого необходимо перейти по вкладке File – Export– toworkspace, после чего ввести имя переменной, по которой SciLab будет определять нашу систему, например, pollutiondegreefls.

С помощью команды plotsurf(“имя переменной”) есть возможность построить конечный график, по которому можно будет сделать выводы.

После ввода в окне консоли plotsurf(pollutiondegreefls) откроется новое окно для настройки отображения графика (рис. 33). После нажатия кнопки Plot будет получен следующий результат (рис. 34).

По осям x и y графика располагаются входные переменные transport density и factories and thermal, по оси z – выходная переменная pollution degree.

По данному графику можно сделать выводы:

При значении 0 параметра transport density и значении 10 параметра factories and thermal stations, параметр pollution degree обретает значение 15.

При значении 100 параметра transport density и значении 0 параметра factories and thermal stations, параметр pollution degree не обретает значения выше 10.

Большая часть плоскости находится выше значения 10 параметра pollution degree.

Рис.33. Окно с настройками для отображения графика

Рис.34. Поверхность системы по алгоритму Сугено

В итоге получился очень похожий на полученный ранее (в предыдущей лабораторной работе) по алгоритму Мамдани  результат. Единственное визуальное отличие – по алгоритму Takagi-Sugeno график получился не таким гладким как в алгоритме Мамдани.

 


Дата добавления: 2019-09-13; просмотров: 477; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!