ПРОГРАММНЫЕ ПРОДУКТЫ И СИСТЕМЫ
Архив статей журнала
В статье представлены программы, ориентированные на применение в качестве инструмента поддержки принятия решений и реализующие оригинальные подходы к групповому экспертному рейтинговому оцениванию и нечеткому логическому выводу. В основу программ положены вероятностные модели на основе формулы Байеса, ранее предложенные авторами. В этих байесовских моделях входные оценочные данные интерпретируются как свидетельства в пользу той или иной гипотезы из множества возможных, определяемых спецификой модели: гипотез о месте того или иного объекта в рейтинге (в модели группового экспертного рейтингового оценивания) и о возможном значении выходной лингвистической переменной (в модели нечеткого вывода). Полученные свидетельства специфичным для модели способом трансформируются в набор байесовских условных вероятностей, вычисляемых в предположении истинности соответствующей гипотезы, а далее рассчитываются апостериорные распределения вероятностей на множестве этих гипотез. Апостериорные распределения используются как основа для несложного вычисления конечного результата: рейтинга объектов (в модели группового экспертного рейтингового оценивания) и дефаззифицированного значения выходной переменной (в модели нечеткого вывода). Обсуждаются особенности программной реализации моделей на платформе Java, отмечаются преимущества моделей.
Статья посвящена разработке алгоритма извлечения программных идиом из корпуса исходных текстов программ. Программные идиомы - это фрагменты исходных текстов программ, которые встречаются в исходных текстах различных программ и служат для решения одной типичной задачи. В данной работе программная идиома рассматривается как поддерево абстрактного синтаксического дерева (Abstract Syntax Tree, AST) программы, обеспечивающее максимальное сокращение информации в исходном коде программы при замене всех его вхождений на отдельную синтаксическую конструкцию (например, на вызов функции). Разработана метрика ценности поддерева в качестве идиомы, оценивающая сокращение количества информации от такой замены. Таким образом, поиск программных идиом сводится к поиску максимума функции ценности поддерева на множестве поддеревьев AST. Чтобы сократить перебор поддеревьев, поиск максимума функции ценности поддерева предлагается осуществлять методом наискорейшего спуска: на каждом шаге в поддерево добавляется узел, обеспечивающий наибольшее увеличение ценности поддерева. Для хранения поддеревьев используется структура, являющаяся обобщением префиксного дерева. Предложен алгоритм ускоренного извлечения программных идиом. Ускорение достигается за счет повторного использования результатов поиска максимума функции ценности поддерева. Для программной реализации разработанных алгоритмов, а также для исследования выбран язык Python, поскольку он имеет большой корпус исходных текстов и удобные средства построения AST. С помощью разработанной программной реализации проведен эксперимент по извлечению программных идиом из корпусов исходных текстов программ с открытым исходным кодом на языке Python. Полученные в результате программные идиомы являются осмысленными фрагментами исходных текстов программ. Показано, что применение разработанных алгоритмов к исходному коду одного проекта позволяет выявить варианты рефакторинга исследуемой программы.
Работа направлена на изучение подходов по сокращению времени исполнения программ с помощью инструкций из набора AVX-512 для повышения эффективности векторизации программного кода. Векторизация является основной низкоуровневой оптимизацией, с помощью которой возможно кратно ускорить выполнение программы, а набор инструкций AVX-512 обладает рядом уникальных особенностей, позволяющих применять векторизацию в сложных программных контекстах. В работе исследуется программный контекст специального вида - плоский цикл, который при удовлетворении ряда требований может быть векторизован с помощью инструкций AVX-512 при практически произвольной сложности тела. Однако довольно часто оптимизирующий компилятор не в состоянии выполнить автоматическую векторизацию плоских циклов по причине наличия в них сложного управления, вызовов функций, гнезд циклов и других конструкций. Это приводит к тому, что векторизацию приходится выполнять вручную с использованием специальных функций-интринсиков. Эффективность векторизации напрямую зависит от плотности масок векторных операций, которые оказываются разреженными при сильно разветвленном управлении внутри тела плоского цикла. В работе предлагается инструментарий, позволяющий параллельно создавать скалярную и векторную версии плоского цикла и анализировать эффективность выполненной векторизации. При этом поддерживаются два режима сборки тестируемого кода: скалярная версия с эмуляцией и мониторингом векторных инструкций и векторная версия для исполнения на целевой машине. С одной стороны, это позволяет контролировать корректность выполненных преобразований кода, а с другой - отслеживать пути исполнения программы с низкой вероятностью для их локализации или выноса из тела цикла. С помощью созданного инструментария удалось выделить горячие плоские циклы ряда реальных приложений и повысить эффективность их векторизации.
Высшие учебные заведения нередко сталкиваются с проблемами обеспечения цифровой поддержки учебного процесса, в частности, со своевременным информированием о происходящих в расписании занятий изменениях. Одним из решений может быть Telegram-бот. В данной статье описывается Telegram-бот, разработанный для повышения эффективности оповещения участников учебного процесса о расписании занятий, его изменениях на примере Санкт-Петербургского государственного университета. Методы исследования основаны на выявлении проблем текущего инструмента информирования о расписании, проектировании структуры и последующей разработке клиент-серверного приложения для их решения. Предметом исследования являются инструменты для взаимодействия участников учебного процесса с расписанием учебных занятий. Основной результат заключается в реализации возможности быстрого отображения расписания с тремя различными вариантами запросов к нему (по названию группы, через поиск преподавателя и путем навигации по всем программам), подписки на уведомления с актуальным расписанием определенной группы или преподавателя с настройкой времени получения уведомлений и просмотра запрошенного расписания в формате текста или сгенерированной на его основе картинки. Кроме того, бот уведомляет об изменении расписания. Практическая значимость заключается в упрощении организационных процессов за счет расширения возможностей своевременного информирования и сокращения времени на получение необходимых сведений. Разработанная система уже используется обучающимися, преподавателями и работниками университета, обеспечивающими учебный процесс.
В статье предложено одно из возможных решений задачи формирования зон влияния объектов в сложных технических системах. В качестве примера рассматривается система охраны протяженного периметра, исследуется взаимодействие ее объектов (элементов) - мобильных или стационарных объектов охраны, квадрокоптеров, лиц, принимающих решение, возможных потенциальных нарушителей периметра. Причем квадрокоптеры обладают различными техническими характеристиками, в частности, радиусами обзора видеокамер. Для моделирования процесса взаимодействия объектов системы охраны применяется модель на основе нечеткого графа с разнотипными вершинами и множественными и разнотипными связями (GH-графа). В качестве множественных в GH-графе используются связи в виде вектора, объединяющие несколько разнотипных связей в одну. Такая модель позволяет задать все необходимые отношения между элементами системы и при этом обладает преимуществом во времени вычисления расстояний по сравнению с графами, использующими только однотипные и разнотипные связи. Для решения поставленной задачи предлагаются алгоритмические средства моделирования GH-графа, в том числе алгоритм пропорционального разделения графа и средства вычисления его метрик. В работе определена операция разделения GH-графа, сформулированы критерии разделения - пропорциональность подграфов по заданному параметру и возможность пересечения подграфов. Выполнен синтез алгоритма пропорционального разделения GH-графа в соответствии с данными критериями, результаты работы которого показаны на примере рассмотренной графовой модели. Использование предложенного алгоритма для разделения графа на пропорциональные подмножества и средств вычисления метрических характеристик полученных подграфов позволяет определить зоны влияния объектов системы в соответствии с их техническими параметрами. Рассмотрены возможности программной реализации предложенного алгоритма.
Одной из перспективных областей применения дискретной математики являются протоколы аутентификации с нулевым разглашением знаний, построенные на основе модулярных кодов класса вычетов. Использование этих кодов позволяет заменить вычислительное устройство, реализующее операцию возведения в степень по модулю, на кодопреобразователь. В результате сложная вычислительная операция будет выполнена за один такт. Эффективность работы кодопреобразователей во многом зависит от правильности перехода от таблицы истинности к совершенным нормальным формам булевых функций. Авторами данной статьи разработаны программный код и графическое интерактивное приложение для ЭВМ, которое позволяет получать совершенные дизъюнктивные и (или) совершенные конъюнктивные нормальные формы согласно описанному пользователем содержанию таблиц истинности и выводить результат в соответствующем поле с использованием логических функций библиотеки Logic или в виде формулы. Совершенные формы можно получить с использованием описания таблицы истинности в виде минтермов (макстермов) булевой функции, а также номеров наборов минтермов (макстермов). В разработанном приложении существует возможность выбора типа получаемой совершенной формы, и оно содержит справочные данные по использованию. Программный код и весь графический интерфейс написаны с помощью встроенного языка и библиотек системы компьютерной алгебры Maple. Созданное интерактивное приложение интуитивно понятно и доступно даже непрофессиональным программистам (преподавателям математики, студентам). Для удобства программный код оформлен в виде графического приложения, требующего для работы установленной на компьютере системы Maple. Разработанное приложение может быть использовано образовательными организациями, в которых преподаются математическая логика, дискретная математика или их разделы.
Настоящая работа посвящена развитию теории испытаний в целом и опытно-теоретического метода в частности. Авторами разработан алгоритм синтеза модели объекта испытаний, основанный на решении уравнения непараметрической идентификации динамической системы с использованием гипердельтной аппроксимации и преобразования Лапласа. В отличие от существующих данный алгоритм применим для входных и выходных сигналов произвольной формы и физических величин. Кроме того, он не требует больших вычислительных ресурсов. Алгоритм позволяет формализовать многомерную зависимость между факторами и тактико-техническими характеристиками объекта испытаний. С помощью языков программирования C++ и Python реализованы математическая библиотека идентификации модели объекта испытаний и приложение с графическим пользовательским интерфейсом для автоматизации расчетов. Представленное программное решение выполнено по аналогии с классическими моделями машинного обучения. Для обоснования возможности применения разработанного алгоритма проведен вычислительный эксперимент на различных типах входных и выходных сигналов (периодических, непериодических и случайных) с разной точностью гипердельтной аппроксимации. По результатам вычислительного эксперимента получены рекомендации по использованию алгоритма, в частности, при высоких амплитудах выходного сигнала следует увеличить количество начальных моментов гипердельтной апроксимации.
Работа посвящена автоматизации информационных процессов научных исследований живучести объектов добычи газа в условиях обводнения скважин. Предложена структура автоматизированной системы научных исследований живучести объектов добычи газа, которая включает математический аппарат для моделирования объектов «пласт-скважина», процессов обводнения и средств обеспечения живучести - различных технологий борьбы с обводнением. Существующее на рынке прикладное ПО для выполнения гидродинамического моделирования или гидравлических расчетов не позволяет исследовать живучесть объектов добычи газа, поэтому разработано новое информационное и программное обеспечение автоматизированной системы научных исследований. Оно дает возможность оценивать показатели живучести объектов добычи газа в условиях обводнения и помогает специалисту принимать решения по ее повышению за счет применения технологий борьбы с обводнением на скважинах. Компоненты автоматизированной системы создавались на основе системного анализа, теории гидравлики и нефтегазовой механики, методов объектно-ориентированного программирования, статистического анализа, теорий графов, моделирования и управления, метода узлового анализа и др. В результате прогностического моделирования рассчитывается коэффициент живучести объектов добычи газа с учетом свойств результативности, ресурсоемкости при использовании средств обеспечения живучести. На основе заданного критерия ПО системы предлагает наилучшую технологию борьбы с обводнением объекта добычи газа.
Предметом исследования являются методы и алгоритмы спонтанной самосборки и самоорганизации программных систем. Среди моделей искусственной химии известны методы, допускающие самоформирование программ. Но эти методы очень специфичны и проблематичны в случае интеграции с обычными, широко распространенными и хорошо известными инструментами императивного программирования. Следовательно, необходимы другие виды инструментов, позволяющие динамически устанавливать отношения между программами или процессами. Разработанный автором данной статьи метод основан на использовании сокетов Internet, соединяющих программные единицы различных типов. Одни из этих единиц являются серверами, другие - клиентами, а третьи относятся к гибридному типу, сочетающему функции и клиента, и сервера. Программные единицы обычно рассматриваются как искусственные атомы, вступающие в реакцию друг с другом и образующие сложные вещества (то есть программы различной структуры). В данной работе предлагаются алгоритмы реализации таких программных единиц. Эти алгоритмы позволяют создавать коллективы независимых взаимодействующих единиц, способных формировать различные вычислительные конфигурации. Разработанные алгоритмы являются основой для реализации концепции, допускающей спонтанное формирование ПО в соответствии с заданными правилами при заданных условиях. В ходе экспериментов были получены вычислительные структуры, подобные полимерам реального мира и способные прокачивать данные через себя. Полученные результаты необходимы для организации полностью автоматизированного процесса разработки ПО, основанного на моделировании спонтанности. Процесс разработки программы потребует меньшего участия человека и потому станет более эффективным и экономически выгодным.
Работа посвящена повышению эффективности выполнения современных расчетных приложений на высокопроизводительных вычислительных системах. В качестве инструмента повышения эффективности рассматривается векторизация программного кода. С ее помощью однотипные скалярные операции объединяются в векторные аналоги, кратно повышая производительность. Целевой платформой являются современные микропроцессоры Intel, для которых поддержан уникальный набор векторных инструкций AVX 512. Предлагается подход к векторизации газодинамического решателя, использующего метод погруженных границ и противопотоковую схему Steger-Warming в трехмерном виде. Решатель обладает сложным программным контекстом, автоматическая векторизация которого невозможна. Рассматриваются реализация решателя, а также подходы к организации кода и приведению его к виду, пригодному для автоматической векторизации компилятором icc. Для обеспечения автоматического применения векторизации к программному коду решателя были применены три основных эквивалентных преобразования. Во-первых, вычисления, одинаковые для всех итераций проведения расчетов, включая матричные операции, были локализованы и вынесены на этап подготовки вычислений. Во-вторых, основные функции решателя были организованы в виде плоских циклов, а структуры данных представлены в виде наборов массивов. В-третьих, к гнездам циклов была применена оптимизация расщепления по условию, с помощью которой можно уменьшить степень разветвленности управления внутри тела цикла. Данные преобразования позволяют компилятору автоматически применять векторизацию кода. В результате выполненной работы достигнуто ускорение решателя в три раза за счет векторизации при вычислениях на вещественных числах двойной точности.
Проведение данного исследования обусловлено проблемой отсутствия средств визуализации интенсивности взаимодействия пользователей социальной сети «ВКонтакте», а именно отображения метрик, позволяющих оценивать и ранжировать интенсивность взаимодействия как между пользователем и его друзьями, так и друзей друг с другом. Целью является повышение доступности и оперативности анализа интенсивности взаимодействия между пользователями через автоматизацию визуализации социального графа. При этом предполагается, что числовым коэффициентам дуг социального графа будет сопоставлена оценка интенсивности взаимодействия пользователей на основе данных, извлекаемых из общедоступных источников социальной сети «ВКонтакте». Для достижения поставленной цели были рассмотрены вопросы оптимизации агрегации необходимых данных, программной реализации функций для построения социального графа, наглядного отображения интенсивности взаимодействия пользователей с возможностью выбора интересующих метрик, создания удобного интерфейса и встраивания разработанного инструментария в веб-приложение. Предметом исследования являются данные о взаимодействии между пользователями сети «ВКонтакте» и способы их визуализации. Методы работы основаны на оптимизации отправки запросов к интерфейсу API «ВКонтакте», а также на разработке функций и настроек для построения социального графа. Теоретическая значимость предлагаемого решения заключается в развитии подходов к анализу распространения многоходовых социоинженерных атак и апробированию моделей оценки интенсивности взаимодействия пользователей. Существенная практическая значимость состоит в автоматизации процесса оценки интенсивности взаимодействия сотрудников для принятия эффективных мер по нивелированию рисков успешной реализации социоинженерных атак. Новизна исследования - в улучшении визуализации построения социального графа пользователей «ВКонтакте» через добавление новых метрик для оценки интенсивности взаимодействия пользователей.