Министерство образования Российской Федерации
Государственное образовательное учреждение высшего
профессионального образования
«Комсомольский-на-Амуре Государственный Технический Университет»
Лабораторная работа 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, А).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.