Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Жданова Е.И. и др_Методические указания по ПрБД...doc
Скачиваний:
28
Добавлен:
03.05.2019
Размер:
6.37 Mб
Скачать

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

3.1.2 Операции над нечёткими отношениями

Пусть А – нечёткое множество с элементами из универсального множества X и множеством принадлежностей M=[0, 1]. Тогда носителем (суппортом) нечёткого множества suppA называется множество .

Таким образом, если на конечном множестве X={x1, x2, x3} задано нечёткое отношение R с функцией принадлежности:

,

носителем отношения R будет отношение, матрица функции принадлежности которого принимает следующий вид:

.

Множеством уровня α нечёткого отношения R на множестве X называется подмножество декартова произведения , которое имеет следующий вид:

.

Таким образом, множеством уровня =0,5 отношения R будет отношение, матрица функции принадлежности которого принимает следующий вид:

.

Для нечётких отношений вводятся операции произведения (композиции):

Максиминным произведением (максиминной композицией) нечётких отношений А и В на множестве X является нечёткое отношение А◦В с функцией принадлежности, имеющей следующий вид:

.

Пусть функции принадлежности нечётких отношений А и В на множестве Х имеют следующие числовые значения:

и .

Функция принадлежности максиминной композиции данных нечётких отношений имеет вид:

.

Необходимо вычислить значения матрицы a11, a12, a21, a22.

  1. Для нахождения значения элемента a11 попарно сравниваются значения элементов первой строки матрицы с элементами первого столбца матрицы , выбирается наименьшее значение. Далее из полученной совокупности минимальных значений окончательно выбираем наибольшее. Эта величина представляет собой искомое значение элемента a11.

.

  1. Для нахождения значения элемента a12 попарно сравниваются значения элементов первой строки матрицы с элементами второго столбца матрицы , выбирается максимальное из минимальных:

.

  1. Значения элементов a21 и a22 находятся аналогичным образом:

,

.

Таким образом, .

Максмультипликативным произведением (максмультипликативной композицией) нечётких отношений А и В на множестве X является нечёткое отношение с функцией принадлежности, которая имеет следующий вид:

.

Пусть функции принадлежности нечётких отношений заданы числовыми значениями, представленными ранее. Необходимо также вычислить значения матрицы a11, a12, a21, a22.

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

.

  1. Для нахождения значения элемента a12 необходимо вычислить произведения соответствующих элементов первой строки матрицы и элементов второго столбца матрицы .

.

  1. Значения элементов a21 и a22 находятся аналогично:

и

соответственно.

Таким образом, .

3.2 Создание нечёткой экспертной системы в пакете CubiCalc

CubiCalc 2.0 – разработка фирмы HyperLogic, является одним из наиболее мощных средств создания систем на основе нечёткой логики. Пакет содержит интерактивную оболочку для разработки нечётких экспертных систем и систем управления.

Фактически пакет CubiCalc 2.0 представляет собой своего рода экспертную систему, в которой пользователь задает набор правил типа «если-то», а система на основе этих правил пытается адекватно реагировать на параметры текущей ситуации. Отличие данного продукта от обычных экспертных систем состоит в том, что вводимые правила содержат нечёткие величины, т.е. имеют вид «если X принадлежит А, то Y принадлежит B», где A и В – нечёткие множества. Аппарат нечёткой логики, заложенный в CubiCalc, дает возможность оперировать нечёткими понятиями как точными и строить на их основе целые логические системы.

Рассмотрим следующий пример: необходимо оценить степень инвестиционной привлекательности конкретного бизнес-проекта (rate) на основании данных о ставке дисконтирования (discont) и периоде окупаемости (period).

Процесс разработки нечёткой экспертной системы в пакете CubiCalc начинается с определения переменных, которые будут использоваться в проекте: Project  Variables  New (см. рис. 3.2).

Рис. 3.2 – Окно определения переменных

В CubiCalc доступны несколько типов переменных:

1) Fuzzy Input – входная переменная, на области значения которой задаются нечёткие множества, используемые в левой части правил вывода.

2) Fuzzy Output – результат работы системы нечёткого логического вывода, определяющей нечёткие множества, используемые в правой части правил вывода.

3) Constant – переменная с фиксированным значением.

4) Temporary – переменная, принимающая действительные значения (аналогичные значениям типа «float»).

Объявляем первую переменную как discont (путем ввода в поле name). Задаем атрибуты переменной: ее тип (Fuzzy Input), диапазон изменения ее значений [5, 50] (параметры Range Low – нижняя граница диапазона, Range High – верхняя граница), а также начальное значение (Initial Value) равное 5.

После нажатия кнопки «ОК» переменная «discont» появляется в списке переменных (см. рис. 3.3).

Рис. 3.3 – Список переменных

Аналогично создадим вторую входную переменную – period с диапазоном значений [3, 36]. Наименование выходной переменной, на основании которой принимается решение о степени инвестиционной привлекательности бизнес-проекта, задается как rate (диапазон изменения значений – [0, 1]).

Далее необходимо задать характеристики всех трех переменных: Project → Adjective editor.

Выбрав переменную discont в окне «Adjectives for variables», нажмите кнопку Edit. Здесь каждой входной и выходной переменной поставьте в соответствие набор функций принадлежности Adjective → Change List → New. В появившемся окне «Create Adjective(s)» задайте следующие параметры: количество функций принадлежности (Number) равное 3; вид функции принадлежности (Shape) – triangle; ширину основания (base width), равную 45,0 (см. рис. 3.4).

Рис. 3.4

В окне «Edit Adjective List» присвоим наименования – small, middle, big – соответственно небольшой, средней и большой ставке дисконтирования (см. рис. 3.5). Для переменной period зададим следующие параметры: количество функций принадлежности (Number) равное 3; вид функции принадлежности (Shape) – trapezoid; base width = 33,0, crown width = 8,25. В окне «Edit Adjective List» присвоим наименования – short, normal, long – соответственно короткий, обычный и длительный срок окупаемости.

Рис. 3.5

Для переменной rate зададим следующие параметры: количество функций принадлежности (Number) – 3; вид функции принадлежности (Shape) – triangle; base width = 1. В окне «Edit Adjective List» присвоим наименования – bad, normal, good соответственно.

Далее необходимо определить набор правил, которые связывают входные переменные с выходными. Для этого в редакторе правил вывода (Project → Rules) определим:

IF discont is small AND period is short THEN rate is good;

IF discont is middle AND period is long THEN rate is bad;

IF discont is middle AND period is normal THEN rate is normal;

IF discont is big AND period is short THEN rate is normal;

Следующими этапами выполнения проекта в CubiCalc являются так называемые предобработка и постобработка. В процессе предобработки (Project → Preprocessing) определяются входные данные. Для этого используется функция field(), которая возвращает данные отдельного поля текущей записи.

Откройте Preprocessing Editor (Редактор предобработки) и введите нижеследующие инструкции:

discont = field(1);

period = field(2);

check = field(3);

В рассматриваемой нечёткой системе всего два входа, третья переменная (check) содержит «правильный ответ». Таким образом, мы можем посчитать количество ошибок, совершенных системой в классификации инвестиционной привлекательности бизнес-проекта.

При постобработке (Project → Postprocessing) задается метод автоматической оценки эффективности системы. Необходимо посчитать количество сделанных системой ошибок и вывести сумму в конце запуска. Чтобы обнаружить ошибку классификации в постобработке, необходимо сравнить выходную переменную с информацией в переменной check файла данных.

Чтобы это сделать, вставьте нижеследующие инструкции в окно редактора:

If (rate <> check) errors += 1;end

If (endoffile=TRUE) call message(errors); end

Эти инструкции выполняют сравнение и, если происходит ошибка, дают приращение переменной errors. Последняя инструкция, при достижении конца файла входных данных, выводит окно с сообщением, содержащим данные о количестве ошибок.

В процессе настройки системы используются переменные, отличные от входных и выходных. Для обнаружения и подсчета ошибок классификации мы использовали в редакторе имена переменной check и переменной errors соответственно. Теперь необходимо создать сами эти переменные.

С помощью меню Variables откройте Variables Editor. Появится диалоговое окно, содержащее имена уже созданных входных и выходных переменных. Нажмите кнопку New для создания новой переменной.

В окне Edit Variable определите переменные: сheck (тип переменной – Temporary, начальное значение – 0.0); errors (тип переменной – Temporary, начальное значение – 0.0).

Настройка входного файла

Для импорта входного файла в проект, необходимо:

1) Создать файл с расширением .txt (см. рис. 3.6), задать файлу имя (File → Input File) и некоторые атрибуты (см. рис. 3.7).

Рис. 3.6

Рис. 3.7

2) Указать тип файла – Text. Задать количество Fields per Record (Полей на запись), равное 3 (каждая запись содержит значения для discont, period и check) и количество Lines per Record (Строк на запись), равное 1 (каждая запись занимает одну текстовую строку).

3) Далее необходимо определить, какая информация должна отображаться при запуске системы (Project → Log Format). Нажатием кнопки «Add» выберите из левого списка окна переменные discont, period, rate и check. Убедимся в непротиворечивости указания переменных (Execute → Check Definitions), снимем флажки Initialization, Simulation.

Проверим работу системы, запустив созданный сценарий Execute → Run. Появится окно, содержащее значения переменных и их порядок, выбранные в Log Format Editor. Когда CubiCalc «просмотрит» весь входной файл, появится заданное на этапе предобработки итоговое сообщение.

Для остановки сценария выполните Execute → Terminate.