Теория нечётких множеств, Операции над нечёткими числами

Страницы работы

Содержание работы

Министерство образования Российской Федерации

Государственное образовательное учреждение высшего

 профессионального образования

«Комсомольский-на-Амуре Государственный Технический Университет»

Факультет Компьютерных Технологий

Кафедра МОП ЭВМ

Лабораторная работа  5

по курсу «Теория вычислительных процессов»

Выполнил студент группы  1ВТ-1:                                                                 Журавлёв Д.А.

Преподаватель:                                                                                              Абарникова Е.Б.

2004

Тема:             Теория нечётких множеств. Операции над нечёткими числами.

Цель:             Научиться производить операции над нечёткими числами.

Задание:        Разработать программу для нахождения разности двух нечётких чисел.

Теоретическое описание

Нечёткое множество – это множество, состоящее из пар следующего вида: (x, µA(x)), где x – количественная характеристика, а µA(x)- функция принадлежности (µA(x) є [0; 1]).

Нечёткое число отличается от нечёткого множества только областью задания. Для нечёткого числа x є R.

Разность нечётких чисел осуществляется следующим образом:

Описание программы

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

-  предикат проверка(), который проверяет на правильность входных данных;

-  предикат реверс() обращает список для последующих вычислений;

-  предикат min_max_el() осуществляет поиск минимального (максимального) значения нечеткого числа. Это необходимо для определения границ получаемого нечеткого числа;

-  предикат разность(), который как раз и производит вычитание нечётких чисел по формуле, приведённой в «Теоретическом описании»;

-  предикаты число_слова() и число_строка(), которые преобразуют полученный результат к необходимому текстовому;

-  выводит результат в соответствующее поле на основной форме;

Листинг программы.

DOMAINS

элемент = integer

принадлежность = real

нечеткое_множество = нечеткое_число*

нечеткое_число = нечеткое_число(элемент, принадлежность)

PREDICATES

подготовка(string, string, string, string, string, string, string, string, string, string, нечеткое_множество) - (i, i, i, i, i, i, i, i, i, i, o)

начало(нечеткое_множество, нечеткое_множество, WINDOW) - (i, i, i)

проверка(нечеткое_множество) - (i)

проверка_сорт(нечеткое_множество) - (i)

проверка_полноты(нечеткое_множество) - (i)

реверс(нечеткое_множество, нечеткое_множество, нечеткое_множество) - (i, i, o)

min_max_el(нечеткое_множество, нечеткое_множество, элемент) - (i, i, o)

min(принадлежность, принадлежность, принадлежность) - (i, i, o)

max(принадлежность, принадлежность, принадлежность) - (i, i, o)

разность(нечеткое_множество, нечеткое_множество, нечеткое_множество, нечеткое_множество, элемент, элемент, принадлежность, нечеткое_множество, нечеткое_множество) - (i, i, i, i, i, i, i, i, o)

число_строка(нечеткое_множество, string, string) - (i, i, o)

число_слова(нечеткое_множество, нечеткое_множество, принадлежность, string) - (i, i, i, o)

поиск_слова(нечеткое_множество, нечеткое_множество, принадлежность, string) - (i, i, i, o)

CLAUSES

/*подготовка*******************/

подготовка("", Epr1, Eel2, Epr2, Eel3, Epr3, Eel4, Epr4, Eel5, Epr5, А):!, подготовка("0", Epr1, Eel2, Epr2, Eel3, Epr3, Eel4, Epr4, Eel5, Epr5, А).

подготовка(Eel1, "", Eel2, Epr2, Eel3, Epr3, Eel4, Epr4, Eel5, Epr5, А):!, подготовка(Eel1, "0", Eel2, Epr2, Eel3, Epr3, Eel4, Epr4, Eel5, Epr5, А).

подготовка(Eel1, Epr1, "", Epr2, Eel3, Epr3, Eel4, Epr4, Eel5, Epr5, А):str_int(Eel1, El1_int),

El2_int = El1_int + 1,

str_int(Eel2, El2_int),

!,          подготовка(Eel1, Epr1, Eel2, Epr2, Eel3, Epr3, Eel4, Epr4, Eel5, Epr5, А).

подготовка(Eel1, Epr1, Eel2, "", Eel3, Epr3, Eel4, Epr4, Eel5, Epr5, А):!,    подготовка(Eel1, Epr1, Eel2, "0", Eel3, Epr3, Eel4, Epr4, Eel5, Epr5, А).

подготовка(Eel1, Epr1, Eel2, Epr2, "", Epr3, Eel4, Epr4, Eel5, Epr5, А):str_int(Eel2, El2_int),

El3_int = El2_int + 1,

str_int(Eel3, El3_int),

!,          подготовка(Eel1, Epr1, Eel2, Epr2, Eel3, Epr3, Eel4, Epr4, Eel5, Epr5, А).

Похожие материалы

Информация о работе