- •Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования Поволжский государственный университет телекоммуникаций и информатики
- •Курсовая работа
- •Рецензия Содержание
- •Введение
- •Задание
- •Построение нечёткого дерева решений
- •Определение лингвистических переменных
- •Построение функций принадлежности
- •Расчёт значений общей энтропии и прироста информации
- •Расчёт степеней принадлежности к каждому новому узлу
- •Расчёт принадлежности новой записи к целевому классу
- •Построение нечеткой экспертной системы в программном пакете CubiCalc 2.0.
- •Определение переменных Fuzzy Input, Output
- •Построение функции принадлежности
- •Определение набора правил, связывающих входные переменные с выходными
- •Настройка входного файла
- •Проверка работы системы
- •Заключение
- •Список использованных источников
Построение нечеткой экспертной системы в программном пакете CubiCalc 2.0.
Определение переменных Fuzzy Input, Output
Процесс разработки нечеткой экспертной системы в пакете CubiCalc начинается с определения переменных, которые будут использоваться в проекте project→variables→new.
Объявляем первую переменную, как Plowad (площадь), зададим атрибуты переменной: выберем её тип (Fuzzy Input), зададим диапазон изменения её значений [10;100], а также зададим начальное значение Initial Value равное 35 (рис.3).
Рисунок 3. Определение переменной Plowad
Объявляем вторую переменную, как Stoim (стоимость), задаём атрибуты переменной: выберем её тип (Fuzzy Input), зададим диапазон изменения её значений [1000;10000], а также зададим начальное значение Initial Value равное 2500 (рис.4).
Рисунок 4. Определение переменной Stoim
Объявляем третью (выходную) переменную Рейтинг как Rate, задаём атрибуты переменной: выберем её тип (Fuzzy Output), зададим диапазон изменения её значений [0;1], а также зададим начальное значение Initial Value равное 0 (рис.5).
Рисунок 4. Определение переменной Rate
Построение функции принадлежности
Далее необходимо задать характеристики всех трёх переменных project→adjective editor. Выбираем переменную Plowad в окне «Adjectives for variables», нажимаем Edit. Здесь каждой входной и выходной переменной ставим в соответствие набор функций принадлежности Adjective→Change List→New. В появившемся окне «Create Adjective(s)» задаём параметры: количество функций принадлежности (Number) равное 3; вид функции принадлежности (Shape) – Trapezoid; ширина основания (base width) равная 45 (рис.6).
Рисунок 6. Задание параметров функции принадлежности.
В окне «Edit Adjective List» присвоим наименования – small, middle, big соответственно маленькой, средней и большой площади (рис.7).
Рисунок 7. Присвоение наименований для каждой переменной.
Получаем следующий функции принадлежности (рис.8):
Рисунок 8. Функции принадлежности
Определение набора правил, связывающих входные переменные с выходными
Необходимо определить набор правил, которые связывают входные переменные с выходными. Для этого в редакторе правил вывода Project→Rules определяем:
IF Ploshad is Small AND Stoim is Low THEN Rate is Good;
IF Ploshad is Large AND Stoim is High THEN Rate is Bad;
IF Ploshad is Medium AND Stoim is Moderate THEN Rate is Normal;
IF Ploshad is Medium AND Stoim is Low THEN Rate is Normal;
Следующими этапами выполнения проекта в CubiCalc является предобработка и постобработка. Для этого используется функция field(), которая возвращает данные из отдельного поля текущей записи.
В Preprocessing Editor вставляем нижеследующие инструкции (рис.9):
Plowad = field( 1 )
Stoim = field ( 2 )
check = field ( 3 )
Рисунок 9. Редактор предобработки
В постобработке задается метод автоматической оценки эффективности системы. Необходимо посчитать количество сделанных системой ошибок и вывести сумму в конце запуска. Чтобы обнаружить ошибку классификации в постобработке необходимо сравнить выходную переменную с информацией check в файле данных. Чтобы это сделать, вставьте нижеследующие инструкции в окно редактора (рис.10):
If (Rate <> check) errors += 1;end
If (endoffile=TRUE) call message(errors); end
Рисунок 10. Редактор постобработки
Создадим переменные check и error и присвоим им тип Temporary (рис.11).
Рисунок 11. Создание переменных check и error.
