Создание нечёткой экспертной системы в пакете CubiCalc
CubiCalc 2.0 – Программа фирмы HyperLogic, является одной из наиболее мощных экспертных систем на основе нечёткой логики. Пакет содержит интерактивную оболочку для разработки нечётких экспертных систем и систем управления. Фактически пакет CubiCalc 2.0 представляет собой своего рода экспертную систему, в которой пользователь задает набор правил типа «если-то», а система пытается на основе этих правил адекватно реагировать на параметры текущей ситуации. Отличие состоит в том, что вводимые правила содержат нечёткие величины, т.е. имеют вид «если X принадлежит А, то Y принадлежит B», где A и В – нечёткие множества. Аппарат нечёткой логики, заложенный в CubiCalc, дает возможность оперировать нечёткими понятиями как точными и строить на их основе целые логические системы. Рассмотрим следующий пример: необходимо оценить степень инвестиционной привлекательности конкретного бизнес-проекта (rate) на основании данных о ставке дисконтирования (discont) и периоде окупаемости (period). Процесс разработки нечёткой экспертной системы в пакете CubiCalc начинается с определения переменных, которые будут использоваться в проекте project→variables→new (рис. 3.1). Рис. 3.1 – Определение переменных
В 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.2). Рис. 3.2 – Окно списка переменных
Аналогично создадим вторую входную переменную – 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.3). Рис. 3.3
В окне «Edit Adjective List» присвоим наименования – small, middle, big соответственно небольшой, средней и большой ставке дисконтирования (рис.3.4). Для переменной period зададим следующие параметры: количество функций принадлежности (Number) равное 3; вид функции принадлежности (Shape) – trapezoid; base width=33,0, crown width=8,25. В окне «Edit Adjective List» присвоим наименования – short, normal, long соответственно короткий, обычный и длительный срок окупаемости. Рис. 3.4
Для переменной 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 Editor с помощью меню Variables. Появится диалоговое окно, содержащее имена уже созданных входных и выходных переменных. Нажмите кнопку New для создания новой переменной. В окне Edit Variable определите переменные: сheck (тип переменной – Temporary, начальное значение 0.0); errors (тип переменной – Temporary, начальное значение 0.0). Настройка входного файла Для присоединения входного файла к проекту, необходимо создать файл с расширением.txt (рис. 3.5), задать имя
Рис. 3.5
файла (File→Input File) и некоторые его атрибуты (рис. 3.6). Рис. 3.6 Укажите Text для определения файла как текстового файла, содержащего печатаемые данные. Задайте количество Fields per Record (Полей на запись), равное 3 (каждая запись содержит значения для discont, period и check) и количество Lines per Record (Строк на запись), равное 1 (каждая запись занимает одну текстовую строку). Далее необходимо определить, какая информация должна отображаться при запуске системы (Project→Log Format). Выберем нажатием кнопки «Add» из левого списка переменные discont, period, rate и check. Убедимся в непротиворечивости переменных (Execute→Check Definitions), снимем флажки Initialization, Simulation. Проверим работу системы, запустив сценарий Execute→Run. Появится окно, содержащее значения переменных и их порядок, выбранные в Log Format Editor. Через некоторое время CubiCalc дойдет до конца входного файла и появится итоговое сообщение, заданное в предобработке. Выполните Execute→Terminate для остановки сценария. Содержание работы 1. Постройте объединение, пересечение, разность нечётких множеств согласно варианту.
Исходные множества
2. По заданным функциям принадлежности нечётких отношений определить максиминную композицию и максмультипликативную композицию согласно варианту.
3. Создайте нечёткую экспертную систему в пакете CubiCalc. Требования к отчету Отчет о проделанной работе должен содержать: - название работы, ее задачи и описание последовательности выполнения; - расчеты согласно пунктам 1 и 2 содержания работы; - реализацию нечёткой экспертной системы в CubiCalc 2.0. Контрольные вопросы 1. Что такое нечёткие множества, нечёткие отношения, носитель нечёткого отношения, множество уровня? 2. Сформулируйте правила выполнения операций над нечёткими множествами, отношениями. 3. Перечислите этапы создания проекта в пакете CubiCalc. ЛАБОРАТОРНАЯ РАБОТА 4 Тема: Решение задач с помощью генетических алгоритмов. Цель работы: Ознакомиться с подходом к решению оптимизационных задач с помощью генетических алгоритмов (ГА). Задачи работы: 1. Ознакомиться с основными понятиями ГА. 2. Научиться применять метод ГА для решения задачи о коммивояжере. 3. Изучить программное средство для решения оптимизационных задач с помощью ГА GeneHunter (на примере задачи о коммивояжере). Теоретические сведения. Основные понятия Генетический алгоритм (ГА) – это эвристический алгоритм поиска, используемый для решения задач оптимизации и моделирования путем последовательного подбора, комбинирования и вариации искомых параметров. ГА можно рассматривать как одну из разновидностей случайного поиска, которая основана на механизмах, напоминающих естественный отбор и размножение. ГА начинает работу с некоторого случайного набора исходных решений, который называется популяцией. Каждый элемент из популяции называется хромосомой и представляет некоторое решение проблемы в первом приближении. Хромосомы эволюционируют на протяжении множества итераций, носящих название поколений (или генераций). Для создания следующего поколения новые хромосомы, называемые отпрысками, формируются либо путем скрещивания двух хромосом-родителей из текущей популяции, либо путем случайного изменения (мутации) одной хромосомы. Операция скрещивания (кроссовер). Скрещивание является главной генетической операцией. Эта операция выполняется над двумя хромосомами-родителями и создает отпрыск путем комбинирования особенностей обоих родителей. Приведем простейший пример скрещивания – одноточечный (рис.4.1). В начале выберем некоторую случайную точку (точка скрещивания Ts), после этого создадим хромосому-отпрыск (рис. 4.1в) путем комбинирования сегмента первого родителя (рис. 4.1а), стоящего слева от выбранной точки скрещивания, с сегментом второго родителя (рис. 4.1б), стоящего по правую сторону от точки скрещивания.
Рис. 4.1– Операция скрещивания Операция мутации. Мутация – операция, производящая случайное изменение в различных хромосомах. Наипростейший вариант мутации состоит в случайном изменении одной (рис. 4.2) или более хромосом. В ГА мутация играет важную роль для восстановления генов, выпавших из популяции в ходе операции выбора. Интенсивность мутации определяется коэффициентом мутации. Рис. 4.2 – Операция мутации Кроме того, используется так называемый оператор инверсии, который заключается в том, что хромосома делится на две части, и затем они меняются местами (рис. 4.3). Рис. 4.3 – Оператор инверсии В принципе для функционирования ГА достаточно этих трех генетических операторов, но на практике применяют еще и некоторые дополнительные операторы или модификации представленных операторов. Например, кроссовер может быть не одноточечный, а многоточечный, когда формируется несколько точек разрыва (чаще всего две).
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|