ПРОГРАММНЫЕ ПРОДУКТЫ И СИСТЕМЫ
Архив статей журнала
Исследуется контроль стабильности многопараметрического технологического процесса, когда через определенные промежутки времени проводится мониторинг множества показателей этого процесса. При мониторинге рассеяния коррелированных показателей применяется алгоритм обобщенной дисперсии. В статье предложен подход, основанный на поиске оптимальных параметров этого алгоритма по критерию минимума затрат, связанных с контролем. Для мониторинга стабильности показателей процесса и выявления нарушений с целью его своевременной корректировки используется статистический контроль - широко распространенный метод диагностики и управления технологическими процессами. При контроле многопараметрического процесса часть его показателей коррелированы, в этом случае для контроля среднего уровня применяют карты Хотеллинга, а для контроля многомерного рассеяния - алгоритм обобщенной дисперсии. Для минимизации параметров алгоритма обобщенной дисперсии использованы три численных метода оптимизации. Программа написана на языке Python. В работе предложена методика и разработана соответствующая программа для оптимизации параметров многомерного статистического контроля рассеяния процесса по критерию минимизации затрат, связанных с контролем частоты взятия выборок (интервала между выборками), объема выборки и положения контрольных границ. Применение этой методики проиллюстрировано на примере данных конкретного технологического процесса: получены численные значения параметров контроля и ожидаемые затраты. Многомерный статистический контроль применяется как для мониторинга стабильности технологических процессов (например, механической обработки, производства лекарств, контроля качества очистки питьевой воды), так и для диагностики функционирования систем различного назначения (например, вибраций гидроагрегата). Этим объясняются актуальность и практическая значимость исследований.
Статья посвящена разработке алгоритма извлечения программных идиом из корпуса исходных текстов программ. Программные идиомы - это фрагменты исходных текстов программ, которые встречаются в исходных текстах различных программ и служат для решения одной типичной задачи. В данной работе программная идиома рассматривается как поддерево абстрактного синтаксического дерева (Abstract Syntax Tree, AST) программы, обеспечивающее максимальное сокращение информации в исходном коде программы при замене всех его вхождений на отдельную синтаксическую конструкцию (например, на вызов функции). Разработана метрика ценности поддерева в качестве идиомы, оценивающая сокращение количества информации от такой замены. Таким образом, поиск программных идиом сводится к поиску максимума функции ценности поддерева на множестве поддеревьев AST. Чтобы сократить перебор поддеревьев, поиск максимума функции ценности поддерева предлагается осуществлять методом наискорейшего спуска: на каждом шаге в поддерево добавляется узел, обеспечивающий наибольшее увеличение ценности поддерева. Для хранения поддеревьев используется структура, являющаяся обобщением префиксного дерева. Предложен алгоритм ускоренного извлечения программных идиом. Ускорение достигается за счет повторного использования результатов поиска максимума функции ценности поддерева. Для программной реализации разработанных алгоритмов, а также для исследования выбран язык Python, поскольку он имеет большой корпус исходных текстов и удобные средства построения AST. С помощью разработанной программной реализации проведен эксперимент по извлечению программных идиом из корпусов исходных текстов программ с открытым исходным кодом на языке Python. Полученные в результате программные идиомы являются осмысленными фрагментами исходных текстов программ. Показано, что применение разработанных алгоритмов к исходному коду одного проекта позволяет выявить варианты рефакторинга исследуемой программы.
Предложена реализация программной платформы для создания нейросетевых моделей с их тестированием, используемых для формирования специализированных словарей автоматизированных систем. Она позволяет ускорить процесс поиска оптимального метода для разработки нейросетевой модели. В основе платформы лежит обзор существующих инструментов и методов, используемых для создания моделей анализа текстов и технологий виртуализации ПО. Авторами исследования разработана архитектура программной платформы для формирования специализированных словарей, обеспечивающая одновременное создание разных нейросетевых моделей в виртуальных контейнерах. Контейнерная виртуализация программных элементов, создающих и тестирующих нейросетевые модели, обеспечивает проведение всех математических расчетов по обработке текстовой информации, обучению и тестированию нейросетевой модели децентрализованно, параллельно и изолированно друг от друга. Обмен данными между виртуальными контейнерами, а также хранение результатов их работы осуществляются через специальную шину данных, представляющую собой дисковое пространство, к которому имеют доступ все контейнеры. Применение разработанной платформы позволит ускорить процесс поиска алгоритма создания специализированных словарей через проверку гипотез, основанных на использовании различных методов построения моделей. Ускорение процесса происходит благодаря параллельности и повторному использованию математических результатов общих этапов алгоритмов, математические расчеты которых проведены похожим алгоритмом. Это позволяет масштабировать и дробить процесс обучения за счет параллельного создания различных моделей, а также на уровне отдельных этапов создания моделей. Предложенная платформа была успешно применена для поиска локально-оптимального метода создания модели в текстах узкой тематики.
При работе в библиотеке Owlready2 языка Python с онтологиями, в которых изначально классы, индивидуумы и отношения написаны кириллицей, машина логического вывода reasoner выдает некорректные данные. Вследствие сбоя в кодировке Owlready2 дублирует онтологию, а вместо текста кириллицы появляются нечитаемые символы. Решить данную проблему предлагается путем явного задания кодировки выходных данных в файле reasoning.py, а именно cp1251, то есть стандартной 8-битной кодировки для русских версий Microsoft Windows. Сам файл находится в корневой папке программы - \Python\Python311\Lib\site-packages\owlready2\ для версии Python 3.11.0. Он и рассматривается в данной статье. Для поиска решения использован метод сравнительного анализа различных версий библиотеки Owlready2 и ее предшественника - библиотеки Owlready. Решение найдено путем сравнения команд работы с исходными данными в различных версиях библиотек Owlready. После внесения соответствующего изменения упрощается работа с онтологиями в Python, особенно при многократных запусках машины логического вывода reasoner. Становится возможным использование огромного функционала библиотеки Owlready2 для работы с русскоязычными онтологиями, например, для создания соответствующих русскоязычных баз знаний. Предложенный в статье способ может быть полезен для ИТ-специалистов, разрабатывающих информационные системы на основе онтологий предметных областей, а также при работе с онтологиями в рамках образовательного процесса в вузе.