программирования логических контролеров и промышленных компьютеров, созданных на базе стандарта МЭК 61131-3, это пять языков программирования и широкие возможности по отладке программных модулей.
Лабораторная установка
Рис. 4. Визуализация CoDeSys
Система программирования содержит встроенный редактор визуализации. Встроенная в CoDeSys визуализация не нуждается в списках переменных и непосредственно может брать переменные из контроллера. Отпадает часто трудно конфигурируемый OPC или DDE уровень, так как коммуникация осуществляется тем же механизмом, который используется для самой системы программирования. Визуализация предназначена для графического представления объекта управления, а также обеспечения пользовательского интерфейса и непосредственно связана с созданной в CoDeSys программой контроллера. Вид основного окна разработанной для данной лабораторной системы визуализации приведен на рис. 4.
УДК 502.55.001.18 С О. Янчи, С П. Дударов
Российский химико-технологический университет им. Д. И. Менделеева, Москва, Россия
ИСПОЛЬЗОВАНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПОДХОДА ПРИ РАЗРАБОТКЕ ПРОГРАММНЫХ СРЕДСТВ НЕЙРОСЕТЕВОГО МОДЕЛИРОВАНИЯ
A possibility and advantages of object oriented approach using in the process of neural networks modeling software development are discussed in the report. As an example the software environment developed for carrying on laboratory works is shown. This software allows to study neural network structures, calculating processes in their and learning algorithms. There are shown functional possibilities of software environment.
В докладе обсуждаются возможность и преимущества использования объектно-ориентированного подхода при разработке программных средств нейросетевого моделирования. В каче-
стве примера рассматривается программная среда, разработанная для проведения лабораторных работ, посвященных изучению структур нейронных сетей, происходящих в них вычислительных процессах и алгоритмов обучения. Показаны основные функциональные возможности среды.
В настоящее время разрабатывается множество программных средств нейросе-тевого моделирования различного назначения. Как правило, эти средства реализуют стандартные классы нейронных сетей, например: сети прямого распространения, с обратными связями и ряд других. Зачастую разработчики таких программных средств обходятся при их реализации достаточно простыми подходами к программированию: встроенными процедурами и функциями, отдельными модулями или динамическими библиотеками. В то же время отдельные задачи требуют для своего решения нестандартного использования нейросетевых структур: предварительной обработки входных сигналов, постобработки выходных сигналов, различных видов функции активации выходных нейронов или нейронов скрытых слоев, нестандартной структуры связей между нейронами, обособления групп нейронов и т. д. Эффективная реализация вышеперечисленных функций возможна только при использовании объектно-ориентированного подхода в процессе создания программных средств нейросетевого моделирования.
Рассмотрим элементарный искусственный нейрон, состоящий из т каналов передачи входных сигналов, одного тела нейрона и одного выходящего значения (рис. 1).
Эту структуру можно представить как совокупность, состоящую из матрицы весовых коэффициентов, определяющих проводящую способность (способность к усилению или ослаблению) каналов передачи входных сигналов, и функции активации нейрона (Р).
Схема распространения и преобразования сигнала в искусственном нейроне показана на рис. 2.
Результат работы нейрона (выходной сигнал) определяется по следующему соотношению:
На рис. 3 представлена классовая иерархия элементов нейронной сети (искусственных нейронов) с позиции объектно-ориентированного подхода позволяющего объединить общие функции, используемые в различных классах объектов, наследовать их производными классами и переопределять.
Рис. 3. Классовая иерархия элементов нейронной сети
Структура, представленная на рис. 2, может быть описана набором своих свойств в соответствии с классовой иерархией (рис. 3). Также необходимо описать данные о соседних нейронах, с которыми имеется связь. В целом это и будет базовый элемент нейронной сети - класс Element. Производными от данного класса являются следующие элементы: - входной элемент (класс Argument), использующий все функции базового элемента нейронной сети; при запросе значения он должен выдавать величину входного сигнала; - выходной элемент (класс Solution), также использующий все функции базового элемента; при запросе значения он должен производить вычисления и возвращать результат - значение выходного сигнала; - нейрон (класс Neuron), использующий, как и другие производные класса Element, все функции базового элемента; в дополнение к этому в нем должны храниться все весовые коэффициенты, ассоциированные с его соседями, тип и параметры функции активации.
Работа нейронной сети осуществляется следующим образом: 1. У каждого выходного элемента запрашивается результат вычисления сети. 2. Каждый выходной элемент запрашивает результат вычисления у своих предшественников, которые подают свои выходные сигналы ему на вход. 3. Аналогично все предшественники опрашивают связанные с ним нейроны предыдущих слоев. Если одним из предшествующих сигналов оказывается входной, возвращается соответствующее ему значение. 4. Пункт 3 повторяется последовательно для каждого предшествующего нейрона до тех пор, пока ветвь не закончится входным элементом. По окончании текущий нейрон произведет вычисления и вернет выходному элементу результирующий сигнал.
Создание структуры нейронной сети и ее настройка может осуществляться двумя способами. Во-первых, можно воспользоваться специальным внутренним языком программирования (рис. 4), позволяющим в виде программного кода описать всю структуру сети, свойств ее отдельных элементов, выбрать алгоритм обучения. Во-вторых, в программе реализована графическая среда (рис. 5), позволяющая пользователю спроектировать нейронную сеть требуемой структуры визуально с использованием мыши.
using System; using ScriptApi;
class BasicScript : IScript {
//процедура создания нейронной сети
public void CreateNetwork(Network network) {
//создание элементов сети
Argument argl = new Argument(network.ID, "argumentl"); Argument arg2 = new Argument(network.ID, "argument2"); Argument arg3 = new Argument(network.ID, "argument3"); Neuron neuron = new Neuron(network.ID, "neruon"); Solution solution = new Solution(network.ID, "solution"); //создание связей между элементами neuron.AddInput(arg1); neuron.AddInput(arg2); neuron.AddInput(arg3); solution.AddInput(neuron); //установка функций нормировки
network.SetNormalize(new ScriptApi.NormalizeFunction(Normalize), new Scrip-
tApi.NormalizeFunction(Denormalize));
}
//функции нормировки
public float Normalize(float min, float max, float x) {
return (x - min) / (max - min);
}
public float Denormalize(float min, float max, float x) {
return min + x * (max - min);
}
}
Рис. 4. Пример программного кода на языке программирования среды нейросетевого моделирования
Язык программирования включает следующие основные функции: - создание входных элементов, скрытых нейронов и выходных элементов; - установка связей между элементами сети; - создание и настройка функций активации; - выбор метода обучения нейронной сети; - выбор способа нормирования входных и выходных сигналов; - выбор способа инициализации весовых коэффициентов нейронной сети; - выбор обучающих данных; - создание фильтров входных и выходных сигналов.
Программная среда нейросетевого моделирования состоит из двух частей: ядра среды, представляющего собой программную реализацию математического аппарата нейросетевых вычислений, и графического интерфейса, с помощью которого обеспечивается доступ пользователя к математическому аппарату. Ядро разработано на языке программирования C++ в среде программирования Microsoft Visual Studio 9.0. Выбор данной среды обусловлен большими вычислительными нагрузками, связанными с выполнением математическим аппаратом своих функций. При разработке использованы компоненты STL (Standard Template Library - стандартная библиотека шаблонов). Графический интерфейс пользователя реализован на языке C# в среде программирования
Microsoft Visual Studio 9.0 с использованием технологии Microsoft .Net. Выбор данной среды обусловлен простотой создания различных форм и большой функциональностью. Графический интерфейс обеспечивает доступ пользователя к функциональным возможностям программной среды посредством подключения специальных компонентов (plug-in). К ним относятся компоненты для: - создания нейронной сети; -обучения нейронной сети; - анализа обучения нейронной сети; - удаленного обучения нейронной сети; - создания обучающей выборки.
в "».пор „,»ро„„оа_ ~~ ~ ~ —"I — l-B-T ig
Проект Вид Компоненты Справка
QäHl«
Графики обучения Обучающая выборка Редактор скриптов Управление нейронными сетями | Графический редактор сети |
Ожидание действий
Рис. 5. Фрагмент работы программы в режиме графического проектирования
структуры нейронной сети
Функциональность программной среды может быть также расширена за счет компонентов различных разработчиков, написанных с использованием любого средства разработки, поддерживающего технологию Microsoft .Net, или в самой среде с помощью компонента, специально предназначенного для этого.
Основное назначение представленной программной среды - изучение структуры и свойств искусственной нейронной сети, а также влияния ее настроек и выбранного алгоритма на скорость процесса обучения и точность получаемых результатов в рамках лабораторного практикума по курсу «Использование методов искусственного интеллекта и экспертных систем в управлении гибкими химическими производствами».
Планируется развитие программной среды по следующим основным направлениям: - расширение перечня возможных структур нейронных сетей; - расширение перечня доступных алгоритмов обучения нейронных сетей; - создание подсистемы поддержки проектирования структуры нейронной сети; - графическая поддержка процессов настройки, обучения и практического использования обученной нейронной сети; -формирование отчётной документации по процедурам синтеза структуры нейронной сети и практического использования обученной нейронной сети.
Предложенный объектно-ориентированный подход к разработке программных средств нейросетевого моделирования позволяет значительно повысить их функциональность, а также качественно улучшить организацию связей и вычислений в нейронной сети, ее настройку и процесс обучения. Благодаря данному подходу появляется возможность настраивать связи каждого нейрона сети, назначать каждому нейрону свою функцию активации, использовать различные способы нормирования, фильтры
входных и выходных сигналов и, как следствие, обеспечивать гибкий выбор нейросе-тевой модели для наилучшего решения конкретной практической задачи.
УДК 681.51:510.22
Н.В. Крапчатова, С.П. Дударов
Российский химико-технологический институт им. Д. И. Менделеева, Москва, Россия
РАЗРАБОТКА ПРОГРАММНОГО МОДУЛЯ ДЛЯ МОДЕЛИРОВАНИЯ И ИССЛЕДОВАНИЯ АЛГОРИТМОВ РАБОТЫ НЕЧЕТКОГО РЕГУЛЯТОРА
Fuzzy control algorithm is presented in this work as well as description of the program component intended for fuzzy control simulation during the laboratory works. User interface description and the working procedure are also included.
В данной работе рассматривается алгоритм нечеткого регулирования и приводится описание программного модуля, предназначенного для моделирования работы нечеткого регулятора при выполнении лабораторных работ. Приводится описание интерфейса пользователя и порядка работы.
В настоящее время большое внимание уделяется созданию технических систем, основанных на принципах искусственного интеллекта, в частности использующих методы нечеткой логики и нечетких множеств. Системы, основанные на нечеткой логике, способны брать на себя функции, выполняемые высококвалифицированными специалистами, поэтому они нашли особенно широкое применение именно в области систем управления и контроля.
Работа традиционных систем управления и регуляторов построена на использовании дифференциальных уравнений, отражающих реакцию управляемого объекта на входное воздействие. Такие системы являются результатом многолетних теоретических и практических исследований, при этом они в большинстве случаев обеспечивают очень высокое качество регулирования.
В свою очередь, нечеткое регулирование используется в тех случаях, когда: -существует лингвистическое описание, отражающее качественное понимание процесса и позволяющее построить множество нечетких логических правил; - существуют модели и уравнения, которые приблизительно описывают поведение управляемого процесса, но их параметры не поддаются определению; - существующие модели и уравнения слишком сложны для реализации, но могут быть нечетко интерпретированы для составления лингвистических моделей; - нечеткие логические правила поведения регулируемого объекта или процесса могут быть описаны с помощью выборок входных и выходных данных или экспертных оценок.
Функциональная структура нечеткого регулятора может быть представлена следующим образом (рис. 1).
1. Фаззификация 3. Дефаззифика-
переменных 2. Механизм ция
База правил
Рис. 1. Функциональная структ ура нечеткого регулятора
На вход регулятора поступают величины отклонения от уставки (AX) и, для ряда алгоритмов, изменения отклонения от уставки (AAX), которые подвергаются фаззи-фикации, т. е. из четкого числового значения переводятся в форму нечетких лингви-