На правах рекламы:
ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Авторитетность издания

ВАК - К1
RSCI, ядро РИНЦ

Добавить в закладки

Следующий номер на сайте

4
Ожидается:
09 Декабря 2024

Программное обеспечение для разработки моделей нечетких систем автоматического управления

Статья опубликована в выпуске журнала № 1 за 2009 год. [ на стр. 60 ]
Аннотация:
Abstract:
Авторы: Тачков А.А. (tachkov@bmstu.ru ) - НУЦ «Робототехника» МГТУ им. Н.Э. Баумана (начальник отдела «Автоматизированные транспортные системы»), Москва, Россия, кандидат технических наук, Калиниченко С.В. () -
Ключевые слова: алгоритм трансляции, продукционные правила, типовые функции принадлежностей, логико-лингвистические модели
Keywords: , condition-action rules, ,
Количество просмотров: 13048
Версия для печати
Выпуск в формате PDF (3.60Мб)

Размер шрифта:       Шрифт:

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

При этом приходится сталкиваться с проблемой выбора среды разработки и отладки таких моделей. Специфика ряда задач зачастую не позволяет использовать существующие решения типа Matlab, LabView, Fuzzy System Component и другие, особенно в случаях, когда требуется кардинальная перестройка модели без перекомпиляции проекта. Результаты, полученные с их помощью, не всегда могут быть использованы в других пользовательских приложениях. Поэтому удобное для практики решение заключается в разработке автономного модуля в виде DLL-библиотеки, подключаемой к объектно-ориентированным средам программирования.

Предлагаемый программный модуль выполняет следующие функции:

·      оперативно формирует входные и выходные лингвистические переменные, термы (функции принадлежности);

·      оперативно формирует, пополняет и редактирует базы нечетких знаний в интерактивном режиме;

·      задает правила на языке, близком к естественному («ЕСЛИ … ТО….»);

·      позволяет оперативно отлаживать базы знаний и осуществлять их настройки;

·      проверяет правила при помощи синтаксического анализатора;

·      осуществляет визуализацию результата выполнения правил из сформированной базы;

·      сохраняет созданную модель в файл, а также считывает ее из файла;

·      пошагово выполняет продукционные правила.

Модуль поддерживает тип моделей MIMO (multi-input multi-output), логические операции И, ИЛИ, связанные с лингвистическими переменными, реализует классический метод максимина (max-min) при преобразовании функций принадлежности термов выходных лингвистических переменных, а также осуществляет импорт входных значений из внешней программы и экспорт  результатов в нее.

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

Рис. 1. Структурная схема модуля

База данных имеет древовидную структуру и хранит указатели на соответствующие объекты: TVariable (лингвистическая переменная) и TFuzzySet (нечеткое множество). Все лингвистические переменные разделены на входные и выходные, поэтому дерево содержит два родительских узла – «Входы» и «Выходы». Ветви, содержащие указатели на TFuzzySet, в свою очередь, являются дочерними по отношению к соответствующим узлам лингвистических переменных.

Нечеткие множества в модуле задаются типовыми функциями принадлежностей (Z-, S-, П-, Л-типа) по двум–четырем точкам.

Рис. 2. Блок-схема активизации одного правила

Формирование базы продукционных правил осуществляется построчным синтаксическим вводом в специальное окно редактирования. Такой ввод более приближен к естественному языку. Отдельно взятая строка представляет собой продукционное правило, антецедентами которого выступают соответствующие термы входных лингвистических  переменных, а консеквентом – терм выходной переменной. В качестве логических операторов, связывающих несколько антецедентов в правиле, используются операции И, ИЛИ, операция НЕ зарезервирована. По мнению авторов, использование операции НЕ усложняет обработку правил, и в этом случае проще использовать термы новой лингвистической переменной, противоположной исходной по смыслу. С позиции человеческой логики, например, выражение «неопасно слева» эквивалентно «безопасно слева», и тогда математическая интерпретация входной переменной может быть представлена в виде X=1–X*, где X* – множество точек, описывающее исходную лингвистическую переменную.

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

ЕСЛИ ЦельСлева ТО ВлевоМедленно

ЕСЛИ ЦельСправа ТО Вправо

ЕСЛИ ЦельПрямо И ОпасностьПрямо ТО ВлевоБыстро

В начале трансляции лексемы каждой строки считываются в список и передаются в транслятор, осуществляющий проверку на их допустимость и порядка следования. Если ошибок не обнаружено, происходит дальнейшая трансляция в динамический массив целого типа данных, длина которого определяется количеством лексем в строке. Антецеденты передаются в массив в виде номеров ветвей в дереве, являющихся идентификаторами, а операторы И, ИЛИ, ТО в виде отрицательных констант. По окончании трансляции всех правил функция анализа процесса трансляции возвращает значение логической истины. В случае возникновения ошибок формируется лист, в который заносится информация об ошибке. Трансляция всегда проводится до конца с регистрацией всех возникших ошибок, что минимизирует время, затрачиваемое на отладку правил. Конечным ее результатом является формирование n-динамических векторов, где n – количество продукционных правил.

Логический вывод осуществляется путем агрегирования (свертка массива,  вычисление значения степени истинности правила) и аккумуляции всех правил (формирование результирующей функции для каждой переменной в отдельности). 

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

ЦельПрямо

И

ОпасностьПрямо

ТО

ВлевоБыстро

0

1

2

3

4

Такая структура массива позволяет легко формализовать процесс определения степени истинности каждого правила в соответствии с блок-схемой (рис. 2).

Полученные значения степеней истинности каждого правила позволяют провести min-активизацию, при этом результирующая функция для каждой выходной переменной принимает минимальное значение из соответствующей степени истинности правила и исходной функции принадлежности указанной выходной переменной. В результате аккумуляции находится общая функция принадлежности для выходной переменной по всем термам. Нахождение четкого значения итогового расплывчатого множества осуществляется по методу центра тяжести.

В режиме отладки для визуализации результатов выполнения алгоритмов, а также оценки их работы создаются диаграммы по числу выходных переменных. Каждая из диаграмм отображает результат аккумуляции и дефаззификации.

Графический интерфейс модуля представлен двумя формами: главной и вспомогательной диалоговой, применяемой при добавлении новых переменных и термов. Визуальные компоненты главной формы  распределены по трем закладкам: «Функции принадлежности», «Правила» и «Отладка» таким образом, чтобы обеспечить пользователю последовательность разработки и удобство в эксплуатации. Первая содержит дерево базы данных, хранящее указатели на объекты TVariable и TFuzzySet, поля редактирования характеристик функций принадлежности, а также диаграмму, отображающую ансамбль термов для одной лингвистической переменной. Вторая – окна для ввода правил и  отображения возникших ошибок во время трансляции, а также кнопку ее запуска. В последней закладке располагаются динамически создаваемые диаграммы по количеству выходных переменных, панель управления процессом отладки и список правил отлаживаемой базы. Каждая закладка соответствует своему этапу проектирования модели, обеспечивая определенную логику разработки. Перемещаясь между ними, пользователь может оперативно просматривать и менять настройки лингвистических переменных, термов, увеличивать или уменьшать число правил. Изменяя значения входных величин при помощи панели управления процессом отладки, можно исследовать веса каждого из правил в пошаговом режиме, а также определять четкие значения выходных переменных. Все операции отладки визуализированы.

Испытания DLL-библиотеки проводились на базе программного обеспечения, работающего совместно со средой имитационного моделирования ПК МВТУ 3.5, при исследовании работы нечетких регуляторов. Результаты компьютерного моделирования подтвердили эффективность алгоритмов, заложенных в модуль, и правильность его функционирования, а также высокую скорость выполнения операций.

Литература

1. Ложников П.С., Михайлов Е.М. Обеспечение безопасности сетевой инфраструктуры на основе операционной системы Microsoft. – М.: Изд-во Бином, 2008.

2. Леонов Д.Г., Лукацкий А.В., Медведовский И.Д., Семьянов Б.В. Атака из Internet. – М.: Солон-Р, 2002.

3. Ларичев В.Д., Бембетов А.П. Налоговые преступления. – М.: Экзамен, 2001.


Постоянный адрес статьи:
http://swsys.ru/index.php?id=2024&page=article
Версия для печати
Выпуск в формате PDF (3.60Мб)
Статья опубликована в выпуске журнала № 1 за 2009 год. [ на стр. 60 ]

Возможно, Вас заинтересуют следующие статьи схожих тематик: