Содержание к диссертации
Введение
1. Классификация современных подходов к построению нечетких СУ 9
1.1. Общие положения 9
1.2. Аппаратные средства разработки нечетких СУ 14
1.3. Программные средства разработки нечетких СУ 27
1.4. Среды генерации исходного кода нечетких СУ конкретной аппаратной платформы 32
Выводы 44
2. Построение моделей нечетких СУ с возможностью обоснования собственного поведения 45
2.1. Общие положения 45
2.1. Методы оперирования неточными высказываниями современных СУ 51
2.3. Нечеткий композиционный вывод 61
2.4. Алгоритмы типа «ситуация-действие» 70
2.5. Реализация нечетких гиперграфов 81
2.6. Модель представления нечетких гиперграфов 85
Выводы 91
3. Формирование нечеткой системы управления на основании описания и конфигурации генерации исполняемого кода 92
3.1. Общие положения 92
3.2. Постановка задачи генерации исполняемого кода нечетких систем управления 93
3.3. Логическая модель нечеткой системы принятая в задаче генерации... 95
3.4. Структурная организация исходных программных модулей нечеткой системы 109
3.5. Логическая организация макроподстановщика параметров нечеткой системы в исполняемый код 113
3.5. Структурная организация инструментального комплекса 123
3.6. Реализация модели представления нечеткой СУ 132
Выводы 144
4. Построение конфигураций генератора исходного кода нечетких СУ для различных языковых сред 145
4.1. Общие положения 145
4.2. Реализация шаблонов программных модулей нечеткой обработки сигналов для декларативной языковой среды Пролог 147
4.3. Реализация шаблонов программных модулей нечеткой обработки сигналов для императивной языковой среды Форт 152
Выводы 154
Заключение 156
Литература 157
Приложения 163
- Аппаратные средства разработки нечетких СУ
- Методы оперирования неточными высказываниями современных СУ
- Постановка задачи генерации исполняемого кода нечетких систем управления
- Реализация шаблонов программных модулей нечеткой обработки сигналов для декларативной языковой среды Пролог
Введение к работе
Повышение эффективности функционирования систем автоматического управления (САУ) связано с улучшением их характеристик реализуемости, живучести и гибкости. Анализ многочисленных человеко-машинных систем управления объектами с повышенной степенью ответственности (САУ нефтехимических и других взрывоопасных производств, системы диагностики и управления на АЭС) показал, что классические модели и методы достигли определенного предела в улучшении этих показателей. Общеизвестно противоречие между повышением показателей качества человеко-машинных систем за счет усложнения их моделей, программно-аппаратной основы и снижением отказоустойчивости. Повышение степени интеллектуальной системы управления этими объектами позволяет в значительной мере преодолеть это противоречие.
Можно отметить следующие основные требования, предъявляемые к интеллектуальным САУ:
Возможность работы в режиме on-line
Адаптируемость
Быстрая приспосабливаемость к конкретным технологическим процессам (универсальность)
Компактность реализации
Возможность быть встроенными в объект управления (ОУ).
Наиболее адекватным классом САУ, отвечающим указанным выше требованиям, являются СУ, основанные на использовании аппарата нечеткой логики.
В настоящее время существует множество классических методик построения дискретных систем управления хорошо зарекомендовавших себя на практике [1,2,3,4]. Однако, все возрастающая сложность объектов порождает ситуацию «информационного взрыва» при которой эти методологии пасуют перед огромным объемом поступающих с объекта управления в реальном масштабе времени данных. При этом сложность самого объекта управления занимает не последнее место. Зачастую не представляется возможным даже создание адекватной математической модели. В такой ситуации у разработчиков остается только один путь - усложнение аппаратной части своих разработок, что отражается в непомерно возрастающей их стоимости и цикле создания. Вместе с тем, применение методов построения нечетких систем управления во многих случаях позволяет значительно уменьшить затраты на разработку. Данное научное направление получило широкое распространение в Японии, США и Европе благодаря отличным результатам при управлении объектами для которых крайне трудно или невозможно формализовать алгоритм управления и при наличии у модели объекта большого числа параметров, в том числе нелинейных или не зависящих от времени. Простота и дешевизна разработки нечетких систем управления заставляет проектировщиков все чаще прибегать к этой технологии. Бурный рост рынка нечетких систем показан на рис. 1.
В России практическое применение методов построения нечетких систем управления находится в зачаточном состоянии, что может быть объяснено высокой стоимостью зарубежных пакетов синтеза нечетких систем и отсутствием каких бы то ни было отечественных разработок под конкретные аппаратные платформы, могущих найти применение в реально разрабатываемых приложениях.
Диссертационная работа посвящена решению актуальной и новой задачи, связанной с разработкой алгоритмов синтеза исходного кода нечетких СУ под произвольную аппаратно-программную платформу. ! j ! j 1 ! r
Ш - прочие системы - нечеткие СБИС контроллеры
Рис.1. Диаграмма динамики роста финансовых затрат на исследования нечетких систем (размер финансирования приведен в миллионах долларов США).
Автоматизация проектирования программного обеспечения нечетких регуляторов на базе разнообразных аппаратных платформ в последние годы принимает все больший промышленно-технологический размах. Вместе с тем, разрабатываемые программно-аппаратные комплексы синтеза нечетких регуляторов, как правило, ориентированы на применение в рамках аппаратных решений какой-либо одной фирмы - производителя оборудования. Это объясняется как большим разнообразием платформ, так и семантическими различиями языковых средств реализации алгоритмов.
При существовании таких ограничений, решение задачи о повышении переносимости нечетких СУ может быть сведено к проблеме такой декомпозиции исполняемого кода, при котором модульная организация алгоритмов и соглашения о межмодульном взаимодействии скрывали бы различия в реализациях под конкретные аппаратные платформы и языковые средства. При таком исполнении наличие единственного инструментального средства генера-
6 ции нечетких СУ позволяло бы реализовывать нечеткие алгоритмы управления с наименьшими трудозатратами, т.к. даже необходимость использования какой-либо новой платформы приводило бы только к необходимости написания библиотек времени выполнения в соответствии с принятыми соглашениями для среды генерации.
Анализ возможных подходов к синтезу исходного кода нечетких СУ выявил, что вполне формализованной и пригодной для создания инженерной методики синтеза процедурой, по-видимому, может являться макрооператор-ный метод, или, как его еще называют, метод программных шаблонов [5]. Применение макрооператоров позволяет существенно упростить процудуру синтеза СУ, однако при этом возникает проблема упрощения применяемого макрооператора, суть которой заключается в выделении по заданному различию его требуемой части и исключении из последней ненужных операторов. В связи с этим в диссертационной работе разрабатывается логическая модель макропроцессора параметров нечеткой СУ позволяющего в значительной мере упростить форму программных шаблонов СУ.
Естественно, что подобный подход к проектированию требует всестороннего анализа работоспособности и эффективности функционирования синтезируемых СУ в реальных условиях. При этом весьма важным этапом исследования является синтез «эталонной» СУ для разнородных языковых средств, позволяющее провести необходимый цикл исследований направленных на выработку концептуальных подходов к формированию шаблонов исходного кода.
В диссертационной работе подробно освещены подходы к построению нечетких СУ хорошо зарекомендовавшие себя на практике[6,7,8], определено место предлагаемых методик с учетом таких уникальных достоинств, как высокая переносимость реализаций СУ между разнородными платформами и простота настройки на синтез с применением новых языковых средств. Кроме того, практический интерес представляют вопросы, связанные с некоторыми аспектами технической реализации инструментального средства синте- за нечетких СУ. Все это определяет теоретическое и практическое значение работы и ее актуальность.
Целью диссертационной работы является разработка и исследование алгоритмов генерации исходного программного кода в соответствии с формализованным описанием модели СУ основанной на неточном логическом выводе, обеспечивающих независимость принципов генерации кода алгоритмов управления от применяемого языкового средства реализации.
Для достижения поставленной цели необходимо выполнить: разработку структур представления моделей СУ основанных на нечетком логическом выводе разработку унифицированной модели нечеткой СУ на основании представлений о которой будет осуществляться генерация исходного кода нечеткой СУ распространение представления модели СУ на типы СУ основанных на других методах неточного вывода разработку принципов генерации программного кода нечеткой СУ с учетом требования независимости от применяемых программных и аппаратных средств.
Решение перечисленных задач по разработке и исследованию алгоритмов генерации исходного программного кода в соответствии с формализованным описанием модели СУ основанной на неточном логическом выводе позволило получить следующие новые научные результаты:
Предложена структура представления моделей нечетких СУ в форме нечетких гиперграфов
По результатам рассмотрения различных методов неточного вывода предложены способы приведения представления данных с которыми оперируют вышеуказанные методы к форме нечетких гиперграфов
Предложены алгоритмы генерации исходного кода на основании модели представления программ в форме шаблонов
4. Разработана логическая модель макропроцессора параметров нечеткой СУ позволяющая производить макроподстановку характеристик конкрет ной модели СУ в шаблоны исходного кода реализации нечеткой СУ без относительно к применяемому языковому средству
5. Выработан ряд рекомендаций по использованию процедур генерации ис ходного кода в зависимости от специфики применяемых программных средств.
Практическая ценность работы состоит в получении инженерных методик синтеза программного кода нечетких СУ на основании описания модели нечеткой СУ и описания процедур генерации исходного кода конкретного языкового средства.
Апробация работы. Основные результаты диссертационной работы докладывались и обсуждались на Межреспубликанской научной конференции «Управление в социальных, экономических и технических системах» (Кисловодск, 1998г.), Международной научно-практической конференции «50 лет развития кибернетики» (Санкт-Петербург, 1999г.), III Международной научной конференции «Методы и средства управления технологическими процессами» (Саранск, 1999г.), III Международной научно-технической конференции «Управление в технических системах - XXI век» (Ковров, 2000г.), 52 и 53 конференциях профессорско-преподавательского состава СПбГЭТУ. По материалам диссертации опубликовано 5 печатных ра-бот[9,10,11,12,13].
Аппаратные средства разработки нечетких систем управления
Разработанная на сегодняшний день теория нечеткой логики и нечетких моделей управления позволяют сделать вывод о том, что нечеткие логические алгоритмы представляют собой особый класс алгоритмов обработки информации, для реализации которых не требуются большие объемы «арифметических» вычислений. В связи с этим, становится ясен традиционно высокий уровень интенсивности разработки специализированных аппаратных средств выполнения нечетких логических функций, а также аппаратно-программных комплексов обработки нечеткой информации и реализации нечетких алгоритмов и моделей.
В нашей стране вопросы аппаратной реализации непрерывных логических функций были впервые систематически изложены в [22]. В ней указано, что основной областью применения непрерывной логики является моделирование произвольных функций одной или нескольких переменных. Методы их синтеза, которые, по сути дела, сводятся к реализации функций с помощью электрических и электронных схем, использовались для построения функциональных преобразователей аналоговых вычислительных машин.
После появления основополагающих работ Л. Заде и А. Кофмана по теории нечетких множеств и публикации сообщений об успешных применениях нечетких алгоритмов при управлении технологическими процессами, наряду с исследованиями в области аппаратных средств синтеза непрерывных логических функций были начаты разработки дискретных вычислительных устройств реализации функций нечеткой логики. Здесь исследования развиваются в двух направлениях.
Первое направление связано с разработкой элементной базы нечетких информационных систем. Необходимо отметить, что разработка логических элементов продвигается крайне медленно. Это связано, во-первых, с тем, что наряду с минимаксным базисом нечеткой логики существует несколько других базисов и продолжается дискуссия о достоинствах или недостатках того или иного способа реализации операций нечеткой логики. Во-вторых, разработка нечетких информационных систем осуществляется "снизу-вверх", от элементной базы к архитектуре, которая сама еще до конца не разработана.
Второе направление состоит в создании информационных комплексов обработки нечеткой информации. По существу, основу подхода составляет разработка специализированных нечетких процессоров, предназначенных для использования в качестве сопроцессоров обычных ЭВМ.
С точки зрения аппаратной реализации можно выделить 8 основных классов нечетких операций, используемых в системах с нечеткой логикой. Эти операции представлены в таблице 1.1. Необходимо отметить, что в указанной таблице используется понятие вектора нечетких логических значений (НЛЗ). В таком виде в нечетких системах обычно представляются нечеткие множества на одинаковых носителях. Вектор НЛЗ составлен из степеней принадлежности элементов носителя нечеткому множеству. Преимуществами такого описания является его информативность и компактность.
Методы оперирования неточными высказываниями современных систем управления
Данные и знания, которыми оперируют современные СУ, редко бывают абсолютно точными и достоверными. Присущая представлениям об ОУ неопределенность может иметь разнообразный характер, и для ее описания используется широкий спектр формализмов. В рамках темы данной работы из всех возможных типов неопределенности данных и знаний может быть рассмотрена только неточность. Будем называть высказывание неточным, если его истинность (или ложность) не может быть установлена с определенностью.
Модель оперирования неточными данными и знаниями включает две составляющие: язык представления неточности и механизм вывода на неточных знаниях. Для построения языка необходимо выбрать форму представления неточности (например, скаляр, интервал, распределение, лингвистическое выражение, множество) и предусмотреть возможность приписывания меры неточности всем высказываниям.
Механизмы оперирования с неточными высказываниями можно разделить на два типа. К первому относятся механизмы, носящие «присоединенный» характер: пересчет мер неточности как бы сопровождает процесс вывода, ведущийся на точных высказываниях. Для разработки присоединенной модели неточного вывода в основанной на правилах вывода системе необходимо задать функции пересчета, позволяющие вычислять:
меру неточности х антецедента правила (его левой части) по мерам неточности х{ составляющих его высказываний: х = f(xx,..., хп);
меру неточности у консеквента правила (его правой части) по мерам неточности правила (г) и посылки правила (х): y = h(r,x);
объединенную меру неточности высказывания А по мерам, полученным из правил, консеквентом которых является А: у" = g{yx,---,ym).
Для возможности пересчета значений неопределенности при дедуктивном выводе достаточно функций /() и /?(). Введение меры неточности позволит привнести в процесс вывода принципиально новое - возможность объединения силы нескольких свидетельств, подтверждающих или опровергающих одну и ту же гипотезу. Другими словами, при использовании мер неточности целесообразно выводить одно и то же утверждение различными путями (с последующим объединением значений неточности), что совершенно бессмысленно в традиционной дедуктивной логике. Для объединения свидетельств, требуется функция пересчета g{), занимающая центральное место в пересчете. Следует отметить, что, несмотря на «присоединенность» механизмов вывода этого типа, их реализация оказывает существенное влияние на общую стратегию вывода: с одной стороны, необходимо выводить гипотезу всеми возможными путями для того, чтобы учесть все релевантные этой гипотезе свидетельства, с другой - предотвратить многократное влияние силы одних и тех же свидетельств.
Постановка задачи генерации исполняемого кода нечетких систем управления
Автоматизация проектирования программного обеспечения нечетких регуляторов на базе разнообразных аппаратных платформ в последние годы принимает все больший промышленно-технологический размах. Вместе с тем, разрабатываемые программно-аппаратные комплексы синтеза нечетких регуляторов, как правило, ориентированы на применение в рамках аппаратных решений какой-либо одной фирмы - производителя контроллеров. Это объясняется как большим разнообразием микропроцессорных архитектур, так и семантическими различиями языковых средств реализации алгоритмов.
При существовании таких ограничений, решение задачи о повышении переносимости нечетких СУ может быть сведено к проблеме такой декомпозиции исполняемого кода, при котором модульная организация алгоритмов и соглашения о межмодульном взаимодействии скрывали бы различия в реализациях под конкретные аппаратные платформы и языковые средства. При таком исполнении наличие единственного инструментального средства генерации нечетких СУ позволяло бы реализовывать нечеткие алгоритмы управления с наименьшими трудозатратами, т.к. даже необходимость использования какого-либо нового контроллера приводило бы только к необходимости написания библиотек времени выполнения в соответствии с принятыми соглашениями для среды генерации.
На основании вышеизложенного сформулируем основные требования предъявляемые к ИС генерирующей исходный разно платформенный код
1. Модуль генерации исходного кода не должен ни в какой степени содержать в себе сведений о грамматике конкретных языковых средств. Построение исходного кода должно осуществляться на основании предельно общих грамматических и семантических принципов одинаково применимых для языковых средств разного уровня и идеологии.
2. ИС не должно содержать в себе модулей трансляции, компоновки и загрузки, поскольку эти модули в своей основе ориентированы на конкретную платформу. С прагматической точки зрения их наличие в составе ИС избыточно, т.к. данные средства включаются в состав программного обеспечения разработчиками платформ.
3. ИС должна включать в себя средства создания конфигураций генерации исходного кода под различные платформы. Состав интерфейсных средств определяется принимаемой моделью генерации исходного кода.
Таким образом, построение генератора исходного кода нечеткой системы управления может быть разбито на следующие подзадачи
1. Определение логико-математической модели нечеткой системы, в представлении о которой генератор строит исходный код.
2. Анализ языковых средств, с целью выделения основных платформенно-независимых принципов функционирования применительно к генерации исходного кода нечеткой системы управления.
3. Определение структурной организации программных модулей исходного кода нечеткой системы. 4. Выбор множества макропеременных препроцессора подстановки параметров нечеткой системы в исходный код нечеткой системы управления.
5. Декомпозиция задач конфигурирования и генерации исходного кода нечеткой системы управления и описание структурной организации инструментального комплекса реализующего указанные функции.
Реализация шаблонов программных модулей нечеткой обработки сигналов для декларативной языковой среды Пролог
Пролог - язык программирования, единицей которого является не команда, а теорема логики предикатов первого порядка. Теорема содержит переменные или параметры, относящиеся к квантору всеобщности: эти переменные могут быть замещены любым правильно построенным выражением языка. Переменные принадлежат п-арным предикатам. Запись Р(х1,х2,...,хп), где г,. - переменные, а Р - и-арный предикат, интерпретируется так: Р(х1,х2,...,хп) - истинно [66]. Сами предикаты в языке Пролог не могут быть включены в сферу действия кванторов.
Все трансляторы языка Пролог на самом деле являются иллюстрацией доказательства теорем с использованием принципа резолюции. Он является обобщением метода доказательства от противного: принцип резолюции состоит в том, что доказывается противоречивость предложения р/\q и, тем самым, доказывается справедливость импликации р с q. Этот метод априори является полным и позволяет доказать все теоремы данной формальной системы, но связан с большим объемом комбинаторных вычислений и недостаточно естественен для человека, которому в общем-то не свойственно доказательство от противного.
Любое предложение языка Пролог может быть интерпретировано двумя способами:
1. процедурным образом через интерпретатор;
2. чисто логически или декларативно как простое утверждение теоремы в рабочем пространстве
Программирование на языке Пролог представляет интерес по трем причинам:
1. Предложения языка непосредственно выражают полезные утверждения (теоремы);
2. Интерпретатор содержит в себе полностью запрограммированный алгоритм унификации;
3. Дерево поиска, рождаемое множеством попарных унификаций обрабатывается в системе автоматически.
Кроме того, резолюция может направляться стратегией, которая фиксирует приоритет определенных предложений, являющихся кандидатами для унификации. Предложения отбрасываются в порядке их появления, а внутри каждого предложения литералы отбрасываются слева направо. Такая стратегия является полной.
Резюмируя вышеизложенное можно заключить, что язык программирования Пролог базируется на ограниченном наборе механизмов, включающих в себя сопоставление образцов, древовидное представление структур данных и автоматический возврат [67]. Пролог особенно хорошо приспособлен для решения задач, в которых фигурируют объекты (в частности, структуры) и отношения между ними. Пользуясь правилами и фактами, пролог-система может проводить рассуждения относительно имеющихся пространственных отношений и, в частности, проверить, насколько они согласуются с вышеуказанным общим правилом. Все эти возможности придают Прологу черты мощного языка для решения задач искусственного интеллекта, а также любых задач, требующих нечислового программирования.