Математическое и алгоритмическое обеспечение эффективного выбора программных компонентов распределенного вычислительного комплекса заданной архитектуры тема диссертации и автореферата по ВАК РФ 05.13.11, кандидат наук Гусев Александр Алексеевич

  • Гусев Александр Алексеевич
  • кандидат науккандидат наук
  • 2019, ФГБОУ ВО «МИРЭА - Российский технологический университет»
  • Специальность ВАК РФ05.13.11
  • Количество страниц 109
Гусев Александр Алексеевич. Математическое и алгоритмическое обеспечение эффективного выбора программных компонентов распределенного вычислительного комплекса заданной архитектуры: дис. кандидат наук: 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей. ФГБОУ ВО «МИРЭА - Российский технологический университет». 2019. 109 с.

Оглавление диссертации кандидат наук Гусев Александр Алексеевич

ВВЕДЕНИЕ

Глава 1. Обзор и анализ способов выбора программных компонентов на основе оценки качества функционирования

1.1. Подходы к созданию распределенных программных систем на основе выбора компонентов

1.1.1 Компонентно-ориентированный подход

1.1.2 Сервисно-ориентированный подход

1.1.3 Каркасный подход

1.2. Имитационное моделирование в оценке качества функционирования распределенных программных систем

1.2.1. Цели и задачи имитационного моделирования

1.2.2. Классификация систем имитационного моделирования по сферам применения

1.2.3. Обзор существующих систем имитационного моделирования распределенных вычислительных систем

1.3. Методы поиска эффективного решения задачи выбора компонентов с помощью эволюционного моделирования

1.3.1. Классификация методов эволюционного моделирования

1.3.2. Генетические алгоритмы

1.3.3. Алгоритм пчелиной колонии

Выводы по главе

Глава 2. Среда воспроизводимых экспериментов по оценке качества функционирования распределенных программных систем

2.1. Схема воспроизводимых экспериментов

2.2. Технология комплексного использования программы эволюционного выбора и экспериментального стенда

Выводы по главе

Глава 3. Математическое и алгоритмическое обеспечение эффективного выбора программных компонентов на основе экспериментальных оценок критериев качества

3.1. Математическая формализация задачи эффективного выбора программных компонентов на основе экспериментальных оценок критериев

3.2. Алгоритм представления исследуемых альтернативных стеков технологий в форме, обеспечивающей использование генетического алгоритма для поиска решений

3.3. Программа генетического выбора программных компонентов

3.3.1 Проектирование программы генетического выбора программных компонентов

3.3.2 Разработка программы генетического выбора программных компонентов

3.3.3 Тестирование программы генетического выбора программных компонентов

3.4. Алгоритм представления исследуемых альтернативных стеков технологий в форме, обеспечивающей поиск решений на основе алгоритма пчелиной колонии

3.5. Программа эволюционного выбора программных компонентов на основе алгоритма пчелиной колонии

3.6. Алгоритм решения задачи эффективного выбора стека технологий на основе экспериментального оценивания качества программных компонентов в заданной архитектуре распределенного вычислительного комплекса

Выводы по главе

Глава 4. Экспериментальная апробация и внедрение математического и алгоритмического обеспечения эффективного выбора программных компонентов распределенных вычислительных комплексов

4.1 Эффективный выбор программных компонентов Nodejs

4.2. Генетический выбор программных компонентов при децентрализованной системы управления мобильным роботом

Выводы по главе

ЗАКЛЮЧЕНИЕ

ГЛОССАРИЙ

СПИСОК ЛИТЕРАТУРЫ

ПРИЛОЖЕНИЕ 1. КОНФИГУРАЦИОННЫЕ ФАЙЛЫ СРЕДСТВ СОЗДАНИЯ И НАСТРОЙКИ ВИРТУАЛЬНОЙ СРЕДЫ ФУНКЦИОНИРОВАНИЯ И СЦЕНАРИЙ ЗАПИСИ

ЭКСПЕРИМЕНТАЛЬНЫХ ДАННЫХ

ПРИЛОЖЕНИЕ 2. ИСХОДНЫЙ КОД ПРОГРАММЫ ГЕНЕТИЧЕСКОГО ВЫБОРА

ПРИЛОЖЕНИЕ 3. ИСХОДНЫЙ КОД ПРОГРАММЫ ЭВОЛЮЦИОННОГО ВЫБОРА НА ОСНОВЕ АЛГОРИТМА ПЧЕЛИНОЙ КОЛОНИИ

ПРИЛОЖЕНИЕ 4. АКТЫ ВНЕДРЕНИЯ

ПРИЛОЖЕНИЕ 5. СВИДЕТЕЛЬСТВО О ГОСУДАРСТВЕННОЙ РЕГИСТРАЦИИ ПРОГРАММЫ ДЛЯ ЭВМ

Рекомендованный список диссертаций по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Введение диссертации (часть автореферата) на тему «Математическое и алгоритмическое обеспечение эффективного выбора программных компонентов распределенного вычислительного комплекса заданной архитектуры»

ВВЕДЕНИЕ

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

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

В настоящее время сформировался комплекс требований к цифровым платформам, порталам, программным системам, использующим технологии глобально-распределенной обработки данных — гарантированное качество обслуживания (Quality-of-Service, QoS). Первоначально термин использовался для оценки устройств передачи данных, но, учитывая развитие глобальных сетей и портальных технологий, стал применяться и к программным системам. Сложившийся комплекс научных и практических результатов по достижению QoS при разработке программных систем в значительной степени базируется на эвристических, качественных и экспертных оценках.

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

В работе рассматривается архитектурный подход к построению программных систем на базе фреймворков или каркасов. Это широко распространенный вид шаблонной структуры, которая позволяет унифицировать процесс разработки программного обеспечения на основе комбинирования постоянной части программного обеспечения (фреймворка), не меняющейся от конфигурации к конфигурации, и подключаемых компонентов, совместимых с постоянной частью. Компонент является единицей программного обеспечения, обладающей определенным интерфейсом и явными контекстными зависимостями. Таким образом, программная система создается путем выбора подходящих компонентов для соответствующего фреймворка, при этом возможно использование альтернативных наборов компонентов, обладающих сходным интерфейсом для реализации схожей функциональности. Однако неоднозначность выбора определяется широким набором инструментов: так, количество доступных компонентов для популярных фреймворков, применяемых для решения

прикладных задач достигает величин от нескольких тысяч (Robot Operating System, ROS) до миллиона (Node.js npm).

Таким образом, разработка математического и алгоритмического обеспечения экспериментальной оценки качества функционирования распределенных программных вычислительных систем является актуальной задачей.

Состояние проблемы. В предыдущие десятилетия значительное количество исследований были посвящены разработке оптимальной модульной архитектуры в задачах компонентно-ориентированного программирования (Shock R.C., Hartrum T.C., Chapin N., Khoshgoftaar T.M., Liu Y., Seliya N. и др.), в том числе проблемам оценки качества модульной архитектуры программного обеспечения (Sarkar S. и др.), повышению производительности модульного программного обеспечения различными методами, включая методы кластеризации (Land R., Mitchell B.S., Mancoridis S., Parsa S., Bushehrian O.), генетические алгоритмы (Khoshgoftaar T.M., Parsa S., Bushehrian O., Kwong C.K. и др.) и другие эволюционные алгоритмы (Mitchell B.S., Mancoridis S.). Указанные исследования были направлены на априорную оптимизацию программной архитектуры компонентно-ориентированного программного обеспечения в терминах структурной связности модулей, предварительных экспертных оценок функциональной полноты выбираемых компонентов. Современное распространение архитектуры на основе фреймворков требует создания новых и модифицированных подходов для численных измерений качества программной продукции, т.е. степени, с которой продукция удовлетворяет заявленным и подразумеваемым потребностям при использовании в заданных условиях в соответствии с п. 4.11 ГОСТ Р ИСО/МЭК 25041—2014 «Информационные технологии (ИТ). Системная и программная инженерия. Требования и оценка качества систем и программного обеспечения (SQuaRE). Руководство по оценке для разработчиков, приобретателей и независимых оценщиков».

Учитывая переборный характер задачи, а также ресурсоемкость и временную продолжительность экспериментов по оценке качества функционирования альтернативных вариантов формирования стека технологий, целесообразно использовать эволюционные алгоритмы, обладающие высокой сходимостью и позволяющие сократить количество экспериментов с неперспективными наборами программных компонентов. Эволюционные алгоритмы хорошо зарекомендовали себя в задачах оптимизации модульной структуры программного обеспечения, а также и в других задачах многокритериальной оптимизации в области программной разработки: оптимизации усилий по разработке программного обеспечения (Huang S.-J., Chiu N.-H, Chen L.-W., Shukla K.K. и др.), оптимизации размещения вычислительных ресурсов (Konsella S., Dai Y.S., Xie M., Poh K., Yang B. и др.), генерации оптимальных тестовых наборов данных (Michael C.C., McGraw G.E., Schatz M.A., Bouchachia A. и др.), оценке (Aljahdali S.H., El-Telbany M.E. и др.) и повышении (Feldt R.) надежности программного обеспечения, оптимизации разбиения программного обеспечения на модули (Kumari A.C., Srinivas K., Gupta M.P.), выборе приоритетов при выпуске версий (Greer D., Ruhe G.), разделении реализации функциональности на программную и аппаратную часть (Saha D., Mitra R.S., Basu A.), рефакторинге программного обеспечения (Ouni A., Kessentini M., Sahraoui H., Hamdi M.S.), в разработке сервисно-ориентированной архитектуры (SOA) веб-сервисов с динамическим выбором компонентов с поддержкой QoS (Shuang K., Yu S., Su S., Fanjiang Y.-Y., Syu Y., Wu C.H., Kuo J.Y., Ma S.P.).

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

Для достижения поставленной цели решаются следующие задачи:

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

2. Разработка схемы воспроизводимых экспериментов для поиска эффективного выбора компонентов при разработке программного обеспечения на основе оценки качества взаимодействия программ и программных систем в условиях заданной архитектуры функционирования распределенного вычислительного комплекса.

3. Создание виртуальной экспериментальной инфраструктуры для оценки качества взаимодействия программ и программных систем, разработка конфигураций средств управления виртуальной инфраструктурой среды разработки.

4. Математическая формализация задачи эффективного выбора компонентов при разработке программного обеспечения на основе оценки качества взаимодействующих программ и программных систем.

5. Разработка алгоритмического обеспечения, включающая алгоритм эффективного выбора компонентов, алгоритмы представления задачи для использования инструментов эволюционного поиска решений.

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

7. Создание экспериментального стенда и проведение экспериментальных исследований.

8. Внедрение результатов исследований в процесс разработки программного обеспечения.

Объект исследования: компонентная архитектура распределенных вычислительных комплексов.

Предметом исследования являются методы оценки эффективности функционирования, обеспечивающие выбор компонентов распределенных вычислительных комплексов.

Методы исследования: методы проектирования и анализа программ и программных систем, методы организации взаимодействия программ и программных систем, оценки качества программных систем, методы создания и конфигурирования виртуальной инфраструктуры, методы вычислительной математики, методы эволюционных вычислений.

Научная новизна диссертационного исследования заключается в:

- математической формализации задачи выбора из конечного множества компонентов эффективного решения на основе оценок критериев эффективности в условиях заданной архитектуры распределенной вычислительной системы;

- схеме воспроизводимых экспериментов по оценке качества компонентов программных систем при заданной архитектуре и способах взаимодействия программных компонентов;

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

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

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

Практическая значимость исследования выражается в том, что на основе проведенных исследований разработано алгоритмическое обеспечение выбора эффективного набора компонентов, которое может быть использовано при разработке широкого класса распределенных вычислительных комплексов.

Результаты диссертационной работы были использованы в проектировании программного обеспечения и среды разработки шагающего неантропоморфного робота в ФГБОУ ВО «Кубанский государственный университет» в рамках реализации проекта № 8.2321.2017/ПЧ государственного задания Министерства науки и высшего образования РФ «Разработка и адаптация систем управления компенсацией динамических отклоняющих воздействий на мобильные объекты, находящиеся в состоянии динамического равновесия», а также при выборе компонентов при разработке программного обеспечения в ООО «НейроЛаб». Результаты диссертационной работы также использованы в учебном процессе ФГБОУ ВО «Кубанский государственный университет» в рамках преподавания дисциплины «Введение в робототехнику».

Основные положения, выносимые на защиту.

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

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

2. Формализованная задача выбора эффективного набора компонентов из заданного множества альтернатив в условиях заданной архитектуры на основе интегрального критерия качества.

3. Модели и реализации схемы воспроизводимых экспериментов по оценке качества компонентов программных систем при заданной архитектуре и способах взаимодействия программных компонентов.

4. Алгоритм решения задачи эффективного выбора стека технологий на основе экспериментального оценивания качества программных компонентов в заданной архитектуре распределенного вычислительного комплекса.

5. Алгоритм представления исследуемых альтернативных стеков технологий в форме, обеспечивающей использование генетического алгоритма для поиска решений.

6. Алгоритм представления исследуемых альтернативных стеков технологий в форме, обеспечивающей поиск решений на основе алгоритма пчелиной колонии.

7. Математическое и алгоритмическое обеспечение выбора программных компонентов распределенных вычислительных комплексов заданной архитектуры и его реализация для решения прикладных задач.

Соответствие паспорту специальности 05.13.11. Основные результаты, соответствуют паспорту специальности в части пунктов: «1. Модели, методы и алгоритмы проектирования и анализа программ и программных систем, их эквивалентных преобразований, верификации и тестирования. 3. Модели, методы, алгоритмы, языки и программные инструменты для организации взаимодействия программ и программных систем. 9. Модели, методы, алгоритмы и программная инфраструктура для организации глобально распределенной обработки данных. 10. Оценка

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

Апробация работы и публикации. Результаты диссертационного исследования докладывались и обсуждались на конференциях и семинарах:

- Прикладные исследования и технологии ART2019, 01-02 апреля, 2019, Москва;

- Workshop On Materials And Engineering in Aeronautics, 15-16 ноября, 2018, Москва;

- Всероссийская научно-практическая конференция «Теоретические и прикладные исследования в области естественных, гуманитарных и технических наук», 30 ноября, 2015, Новокузнецк - Прокопьевск;

- Всероссийской научно-практической конференции «Современные проблемы физики, биофизики и инфокоммуникационных технологий» (29 августа 2014, Краснодар);

- V международная научно-практическая конференция «Академическая наука - проблемы и достижения», 01-02 декабря 2014, North Charleston, SC, США.

Также использовались в работах, отмеченных на международных выставках и салонах:

- Золотая медаль Европейской выставки творчества и инноваций 2019 (г. Яссы, Румыния, 18 мая 2019) за разработку «Программа стабилизации неантропоморфного робота с внешним вычислителем на базе ROS и Matlab Simulink», авторы - Рядчиков И.В., Синица С.Г., Сеченев С.И., Мамелин Ю.В., Гусев А.А., Прутский А.С.

- Золотая медаль и диплом Международной выставки «IDEA-EXPO 2019» (г. Солнок, Венгрия, 06-07 апреля 2019) за разработку «Программа стабилизации неантропоморфного робота с внешним вычислителем на базе ROS и Matlab Simulink», авторы - Рядчиков И.В., Синица С.Г., Сеченев С.И., Мамелин Ю.В., Гусев А.А., Прутский А.С.

- Бронзовая медаль и диплом XXII Московского международного салона изобретений и инновационных технологий «Архимед» (г. Москва, 26-29 марта 2019) за разработку «Система стабилизации неантропоморфного робота с внешним вычислителем на базе ROS и Matlab Simulink», авторы Рядчиков И.В., Синица С.Г., Сеченев С.И., Мамелин Ю.В., Гусев А.А., Прутский А.С.; также удостоена специальной награды - медали и диплома от Макао.

- Золотая медаль и диплом 22-го Международного салона изобретений «Инвентика 2018» (г. Яссы, Румыния, 27-29 июня 2018) за разработку «Программное управление сервоприводами для решения задачи адаптивного управления системой стабилизации», авторы - Рядчиков И., Сеченев С., Синица С., Прутский А., Мамелин Ю., Волкодав П., Гусев А., Усманова А., Свидлов А., Дроботенко М., Данилов А.

Основные результаты диссертационного исследования опубликованы в 13 работах, из них 2 в изданиях, включенных в перечень рецензируемых журналов, рекомендованных ВАК, 2 в изданиях, индексируемых в Web Of Science и Scopus. Также получено авторское свидетельство о регистрации программы для ЭВМ в Федеральной службе интеллектуальной собственности - Роспатент.

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

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

Структура и объем диссертации. Диссертационное исследование состоит из введения, списка основных терминов, 4 глав, глоссария, списка использованной литературы из 101 наименования, 5 приложений. Общий объем работы составляет 109 страниц, в работе присутствует 12 рисунков, 11 таблиц.

В первой главе «Обзор и анализ способов выбора программных компонентов на основе оценки качества функционирования» осуществлен аналитический обзор подходов к оценке качества функционирования программ и программных систем, рассмотрены средства имитационного моделирования и методики применения эволюционных алгоритмов для сокращения перебора программных компонентов.

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

В третьей главе «Математическое и алгоритмическое обеспечение эффективного выбора программных компонентов на основе экспериментальных оценок критериев качества» математически формализована задача эффективного выбора программных компонентов, разработано алгоритмическое обеспечение и программы эволюционного выбора.

В четвертой главе «Экспериментальная апробация и внедрение математического и алгоритмического обеспечения эффективного выбора программных компонентов распределенных вычислительных комплексов» приведены примеры использования разработанных моделей и алгоритмов при выборе программных компонентов Nodejs и программных компонентов децентрализованной системы управления шагающим роботом.

В заключении приведены основные результаты диссертационного исследования.

В Приложении 1 приведены разработанные конфигурационные файлы средств создания и настройки виртуальной среды функционирования и разработанный сценарий записи экспериментальных данных.

В Приложении 2 приведен исходный код программы генетического выбора.

В Приложении 3 приведен исходный код программы эволюционного выбора на основе алгоритма пчелиной колонии.

В Приложении 4 приведены акты внедрения разработанного математического и алгоритмического обеспечения.

В Приложении 5 приведено авторское свидетельство о регистрации программы для ЭВМ.

ГЛАВА 1. ОБЗОР И АНАЛИЗ СПОСОБОВ ВЫБОРА ПРОГРАММНЫХ КОМПОНЕНТОВ НА ОСНОВЕ ОЦЕНКИ КАЧЕСТВА ФУНКЦИОНИРОВАНИЯ

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

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

В разделе 1.2 рассмотрены программные средства имитационного моделирования в оценке качества функционирования распределенных систем.

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

1.1. Подходы к созданию распределенных программных систем

на основе выбора компонентов

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

Различия подходов проявляются в способах организации взаимодействия программных компонентов, выборе архитектуры распределенной программной системы.

Рассмотрим наиболее распространенные подходы к созданию распределенных программных систем на основе выбора компонентов. 1.1.1 Компонентно-ориентированный подход

Компонентно-ориентированный подход к разработке программного обеспечения (Component-oriented programming, COP) восходит к паттерну написания блоков, предложенному Никлаусом Виртом в 1987 году [1] для языка «Оберон» и основан на разделении реализации функциональности

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

Можно выделить следующие основные особенности COP:

- структурной единицей программного обеспечения является модуль;

- модули компилируются раздельно;

- используется строгая типизация данных для обеспечения совместимости модулей;

- применяется динамическая сборка мусора;

- модуль обладает явно выраженным открытым интерфейсом взаимодействия с другими модулями и скрытой реализацией функциональности.

Перечисленные особенности делают COP достаточно надежным подходом для создания распределенных программных систем. Оценка качества функционирования программных компонентов в рамках COP осуществляется экспертно для каждого компонента по отдельности. Обзор подходов к оценке качества приведен в работе [99].

Унификация способов взаимодействия между вызываемым и вызывающим компонентами, концептуально сформулированная Бертраном Мейером в 1989 году [2] привела к созданию на основе COP таких сервисно-ориентированных технологий разработки распределенных программных систем как CORBA [3], COM [4], SOAP [5].

1.1.2 Сервисно-ориентированный подход

Сервисно-ориентированный подход (Service Oriented Architecture, SOA) является дальнейшим развитием идей компонентно-ориентированного программирования для случая стандартизированных интерфейсов и протоколов взаимодействия компонентов распределенной программной системы.

Наибольшее распространение SOA получила в области разработки веб-платформ, где компоненты реализуют те или иные веб-сервисы, обменивающиеся данными по протоколу SOAP, а также в рамках таких технологий как CORBA, DCOM, RPC, REST для автоматизации глобально распределенной обработки данных.

При этом SOA не привязана к конкретной технологии реализации, ограничиваясь требованиями к программным интерфейсам компонентов и протоколам взаимодействия, что позволяет использовать в рамках одной программной инфраструктуры компоненты, реализованные на различных языках программирования (Java, C#) для различных платформ (Java, .Net и др.).

Похожие диссертационные работы по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Список литературы диссертационного исследования кандидат наук Гусев Александр Алексеевич, 2019 год

ИСТОЧНИКИ и

определить их запасы

нектара

4

вьллгслить 1е$хжтмостм

предпочтения

наблюдателями

1 Г

Остановить

эисглуат«и>ио

ИСТОЩеИмЫХ ПИеЛВЧИ ♦»стоимнсо»

1

Случайно разослать

раааадиичоа а область

поиске для обнаружь««*

НОВЫХ истс-интоа

V

Запомнить луишйй

найденный с

настоящему «оменту

истой ник

/ Условий \

-Нет— —< ьэвершеннл >—

, выПСЛИвтЦг! ,

Рисунок 1.3 - блок-схема АПК

Формально потенциальные решения задачи оптимизации записываются в виде координат решения (координат соответствующего решению источника питания):

Xi = ( ХгД> Xi,2,...,Х ,п ) (11)

где Хг соответствует I -му решение в популяции, п - размерность потенциального решения.

Чтобы улучшить потенциальное решение (положение источника

питания) рабочий фуражир пользуется следующим правилом: = ХУ+®У (х.-х.), (1.2)

где к е {1,2,...БЫ}, БЫ - количество рабочих фуражиров, у е{1,2,...,п}

, к и у - индексы, выбранные случайно, при условии к ф у, 0. - случайная

величина в диапазоне (-1; 1).

Осуществляется расчет ценовой функции потенциального решения V..

Если решение оказывается лучшим, чем решение х., х. заменяется на V. , в

ином случае ху остается на прежней позиции в следующей итерации

алгоритма.

Как только рабочие фуражиры завершат локальную оптимизацию своих источников по правилу (1.2), в улье они делятся информацией об источниках с наблюдателями. Наблюдатель затем выбирает i -ый источник с вероятностью, определяемой следующим уравнением:

P = fiti

ri SN '

S ftj

'=' (1.3)

где fiti соответствует значению функции приспособленности i -го решения. SN определяет количество источников питания, равное количеству рабочих фуражиров BN. Таким образом, если i -ое решение будет лучше, чем остальные, вероятность выбора наблюдателем i -го источника повысится. В том случае, если положение источника не может быть улучшено после заданного числа итераций алгоритма, источник считается истощенным и отвергается.

После этого пчела-разведчик приступает к поискам нового источника питания X*, чтобы заменить отвергнутый источникXt по правилу:

x* = lbj + rand (0,1) х (ubj - lbj)

(1.4)

здесь ub и lb задают соответственно верхнюю и нижнюю границу поиска, rand (0,1) является случайной величиной на интервале (0; 1).

Алгоритм завершает работу по достижению заданного числа итераций или выполнения иных условий остановки.

Выводы по главе

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

1. Основным подходом к оценке качества функционирования программных компонентов является экспертное оценивание, в то же время развитие цифровых платформ и веб-порталов в последние годы требует разработки методики численной оценки качества программ и программных систем в конкретных условиях функционирования.

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

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

сокращения числа экспериментов с неперспективными набора программных компонентов.

ГЛАВА 2. СРЕДА ВОСПРОИЗВОДИМЫХ ЭКСПЕРИМЕНТОВ ПО ОЦЕНКЕ КАЧЕСТВА ФУНКЦИОНИРОВАНИЯ РАСПРЕДЕЛЕННЫХ ПРОГРАММНЫХ СИСТЕМ

Глава посвящена разработке моделей и реализации программной инфраструктуры, обеспечивающей среду воспроизводимых экспериментов.

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

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

2.1. Схема воспроизводимых экспериментов

Воспроизводимый эксперимент по оценке качества функционирования распределенной программной системы направлен на оценку качества функционирования системы в условиях, приближенных к планируемым условиям эксплуатации системы [47, 50].

Для обеспечения воспроизводимости эксперимента целесообразной является разработка и использование конфигурационных файлов Vagrant и Ansible, обеспечивающих соответствие виртуальной инфраструктуры характеристикам и условиям функционирования целевой инфраструктуры [48], что позволяет сократить расхождение в результатах эксперимента между целевой инфраструктурой и рабочей станцией программиста [49]. Таким образом, виртуальная инфраструктура, включающая форматы данных для ввода условий и представления результатов эксперимента, средства конфигурирования и форматы конфигурационных файлов, виртуальные машины и их программное обеспечение, а также программные средства измерений выступают в роли экспериментального стенда для оценки качества функционирования стека технологий.

Разработанная схема воспроизводимых экспериментов состоит из трёх этапов (см. рис. 2.1): подготовка виртуальной инфраструктуры, имитирующей планируемые условия функционирования, сбор экспериментальных данных, анализ результатов и принятие решения по эффективному выбору программных компонентов.

Рисунок 2.1 - Модель воспроизводимых экспериментов по оценке качества функционирования программных компонентов

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

На втором этапе задаётся алгоритм использования программных

компонентов и осуществляется сбор экспериментальных данных. Так как не каждый программный компонент имеет собственный консольный интерфейс, а его использование может состоять из множества шагов, экспериментальный алгоритм осуществляет подачу данных на вход компонента и получение выходного результата. В зависимости от возможностей выбранных технологий, обеспечивается внутренний или внешний мониторинг процесса исполнения указанного алгоритма. После каждого запуска эксперимента формируется набор значений критериев качества (время исполнения, затраченное процессорное время, необходимый объём оперативной памяти и др.), характеризующих работу алгоритма

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

На третьем этапе, данные анализируются. На основе анализа результатов принимается решение о применении того или иного набора программных компонентов в распределенном вычислительном комплексе.

Конфигурирование, исполнение и обслуживание виртуальной инфраструктуры в рамках разработанной схемы воспроизводимого эксперимента осуществляется с помощью программных средств виртуализации, к которым относятся программа-эмулятор виртуальной машины Oracle Virtual Box, средство создания и настройки виртуальной инфраструктуры Vagrant, выступающее оберткой Virtual Box для автоматизации создания виртуальных машин и система управления конфигурациями Ansible, использующаяся для автоматизации настройки необходимого для проведения эксперимента программного обеспечения внутри виртуальной машины [51].

Конфигурация Vagrant задается с помощью файла Vagrantfile, являющегося программным кодом на языке Ruby, описывающим используемую виртуальной машиной операционную систему, сетевые интерфейсы, общие файловые ресурсы с физической машиной, объем выделяемой виртуальной машине оперативной памяти и дискового пространства физической машины и другие параметры архитектуры [52].

Конфигурация Ansible задается с помощью файла playbook [53], написанного на языке YAML. В playbook задаются необходимые действия по настройке созданной виртуальной машины, установке дополнительных пакетов, выполнению команд и т.п.

Однажды созданный Vagrantfile и playbook, задающие сценарии создания и настройки виртуальной машины могут использоваться многократно, таким образом обеспечивая требуемую воспроизводимость условий проведения эксперимента [54].

Непосредственное исполнение созданной и настроенной с помощью Vagrant и Ansible виртуальной машины осуществляется программой-эмулятором VirtualBox, являющейся приложением операционной системы физической машины.

Помимо конфигурации виртуальной машины, задаваемой в форматах Vagrantfile и playbook, в виртуальную инфраструктуру воспроизводимого эксперимента также должна передаваться информация о стеке технологий,

подлежащему оценке в ходе эксперимента, а на выходе должны быть представлены результаты измерений.

Для этих целей используется текстовый формат обмена данными JSON [55] в силу его универсальности, совместимости с многими языками программирования, особенно с JavaScript, наличию большого количества программных библиотек, позволяющих конвертировать данные в JSON, а также конвертировать их обратно во внутреннее представление программной библиотеки.

Немаловажным при выборе JSON является и то, что JSON-текст может быть непосредственно считан функцией JavaScript, в то время как код XML требует наличия парсера XML и в целом является менее лаконичным [56].

Текст JSON может содержать одну из двух структур представления информации: наборы «ключ:значение» и упорядоченные наборы значений (последовательности, массивы, вектора).

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

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

1. система виртуализации VirtualBox;

2. средство создания и настройки виртуальной инфраструктуры Vagrant;

3. система управления конфигурациями Ansible;

4. операционная система Ubuntu Linux 16.04.6 (как ОС для виртуальной машины);

5. встроенные инструменты мониторинга Node.JS.

На первом шаге эксперимента производится настройка виртуальной программной инфраструктуры через передачу формализованных условий эксперимента, представленных в форматах:

- Vagrantfile (параметры создания и настройки виртуальной инфраструктуры с помощью Vagrant);

- Ansible playbook (конфигурация необходимого для эксперимента программного окружения виртуальной машины);

- JSON (выбор программных компонентов, участвующих в эксперименте по оценке эффективности).

Затем с помощью Vagrantfile и Ansible осуществляется настройка виртуальной инфраструктуры.

После этого запускается алгоритм проведения эксперимента, вызывающий участвующие в эксперименте программные компоненты.

Программные инструменты измерений Node.js фиксируют результаты эксперимента по выбранным частным критериям эффективности и представляют их в формате JSON.

При автоматизации перебора программных компонентов при

экспериментальной оценке, анализ результатов и принятие решения происходят под управлением программы эволюционного выбора, исполняемой в среде MATLAB.

2.2. Технология комплексного использования программы эволюционного выбора и экспериментального стенда

В рамках технологии комплексного использования (рис. 2.2) экспериментальный стенд, реализованный на виртуальной инфраструктуре и программа эволюционного выбора, исполняемая в среде MATLAB осуществляют обмен данными с помощью общей папки. Интеграция оцениваемых компонентов фреймворка Node.js реализуется с помощью функционального подхода, что является наиболее удобным для комбинирования различных сочетаний. Каждая функция, используемая в ходе проводимого испытания, является своего рода программным интерфейсом, который реализуется с помощью одного из компонентов фреймворка.

Рисунок 2.2 - Модель комплексного использования программы эволюционного выбора и экспериментального стенда, реализованного в виртуальной инфраструктуре.

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

Резидентное средство мониторинга процессов на основе компонента Forever фреймворка Node.js, исполняющееся в виртуальной машине, обеспечивает непрерывный запуск экспериментов, вызывая процесс эксперимента всякий раз, когда он не запущен.

Процесс эксперимента с интегрированными средствами сбора статистики на основе объекта Process фреймворка Node.js с помощью бесконечного цикла проверяет наличие в общей папке файла functions.json (Листинг 2.1), задающего набор компонентов Node.js, подлежащих оценке в эксперименте и пути запуска этих компонентов. При появлении файла осуществляется выход из цикла, происходит считывание файла в оперативную память и удаление файла из общей папки. Осуществляется провизия необходимых компонентов с помощью Node Package Manager. Затем запускается эксперимент с выбранным набором программных компонентов.

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

Листинг 2.1. Пример файла functions.json

1 {

2 "filter": [

3 {

4 "name": "filter",

5 "path": "filter/underscore.js"

7 ],

8 "map": [

9 {

10 "name": "map",

11 "path": "map/underscore.js"

12 }

13 ]

14 }

Листинг 2.2. Пример файла results.json

1 {

2 "time": 1555322421140,

3 "initialization": {

4 "cpuUsage": {

5 "user": 24000,

6 "system": 4000

7 },

8 "memoryUsage": {

9 "rss": 2928640,

10 "heapTotal": 5808128,

11 "heapUsed": 3048344,

12 "external": 195071

13 },

14 "hrtime": 57464143

15 },

16 "execution": {

17 "cpuUsage": {

18 "user": 4000,

19 "system": 0

20 },

21 "memoryUsage": {

22 "rss": 274432,

23 "heapTotal": 0,

24 "heapUsed": 174800,

25 "external": 96

26 },

27 "hrtime": 4701426

28 } 29 }

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

файл functions.json и переходит в режим ожидания появления файла results.json, организованный с помощью бесконечного цикла.

При появлении файла results.json в общей папке цикл прерывается,

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

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

Затем в соответствии с эволюционным алгоритмом, создается новый набор программных компонентов для исследования и осуществляется запись нового файла functions.json.

Процесс повторяется до завершения работы эволюционного алгоритма.

Выводы по главе

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

1. Разработка модели и реализации схемы воспроизводимых экспериментов по оценке качества функционирования стека технологий. Воспроизводимость условий эксперимента достигается за счет формального описания посредством конфигурационных файлов средства создания и настройки виртуальной инфраструктуры.

2. Разработка модели и технологии комплексного использования программы эволюционного выбора и экспериментального стенда, реализованного в виртуальной инфраструктуре, имитирующей планируемые условия функционирования распределенной программной системы.

ГЛАВА 3. МАТЕМАТИЧЕСКОЕ И АЛГОРИТМИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ЭФФЕКТИВНОГО ВЫБОРА ПРОГРАММНЫХ КОМПОНЕНТОВ НА ОСНОВЕ ЭКСПЕРИМЕНТАЛЬНЫХ ОЦЕНОК КРИТЕРИЕВ

КАЧЕСТВА

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

В разделе 3.1 приведена математическая формализация задачи эффективного выбора программных компонентов на основе экспериментальных оценок критериев.

В разделе 3.2 разработан алгоритм представления альтернативных стеков технологий в форме, обеспечивающей использование генетического алгоритма для поиска решений.

В разделе 3.3 спроектирована, разработана, отлажена и протестирована программа эволюционного выбора программных компонентов на основе генетического алгоритма.

В разделе 3.4 разработан алгоритм представления альтернативных стеков технологий в форме, обеспечивающей поиск решений на основе алгоритма пчелиной колонии.

В разделе 3.5 спроектирована, разработана и отлажена программа эволюционного выбора программных компонентов на основе алгоритма пчелиной колонии.

В разделе 3.6 разработан алгоритм решения задачи эффективного выбора стека технологий на основе экспериментального оценивания качества программных компонентов в заданной архитектуре распределенного вычислительного комплекса.

3.1. Математическая формализация задачи эффективного выбора программных компонентов на основе экспериментальных оценок критериев

Пусть определены п функциональных возможностей I = 1, п, требующих реализации в распределенной программной системе и t различных конфигураций шк, к = 1, t виртуальной инфраструктуры, имитирующей условия функционирования; М - множество всех доступных для исследования программных компонентов, каждый из которых реализует хотя бы одну из возможностей Множество альтернативных программных компонентов из М, способных реализовать функциональную возможность ^ обозначается как т^, I = 1, п. Пусть возможно сформировать р стеков технологий = 1 ,р - таких наборов программных компонентов, в которых для каждой возможности I = 1, п существует хотя бы один реализующий ее программный компонент из М. Обозначим множество всех возможных стеков как Б. Пусть определен набор, состоящий из f экспериментально вычисляемых частных критериев качества функционирования г^, ^ = 1,/, значения которых принадлежат пространству Тогда

= (гАУ, гк.], гк.], гк.]у, к = =

где г^,^ = 1,/, к = 1, = 1, р - значения экспериментально вычисляемых частных критериев качества функционирования для используемой конфигурации шк виртуальной инфраструктуры и оцениваемого стека .

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

/

4>(а>к,8>) = (3.1)

~к,} к,]

где г^ - нормализованные значения частных критерии качества г^ ;

^ = 1,/; - весовые коэффициенты частных критериев. При этом

Задача эффективного выбора программных компонентов на основе экспериментальной оценки качества функционирования для выбранной конфигурации виртуальной инфраструктуры шк заключается в выборе стека технологий б*, удовлетворяющего следующему условию:

5* = (3.2)

Учитывая переборный характер задачи выбора 5* из конечного множества альтернатив, ресурсоемкость запуска каждого эксперимента для стека я7,у = 1,р предлагается использовать эволюционные алгоритмы для сокращения перебора неперспективных комбинаций программных компонентов.

3.2. Алгоритм представления исследуемых альтернативных стеков технологий в форме, обеспечивающей использование генетического алгоритма для поиска решений

Для применения генетического алгоритма [90] к задаче эффективного выбора программных компонентов построен следующий алгоритм представления исследуемых стеков технологий:

Шаг 1. Введем отображение . Таким образом, каждому

стеку я7,у = 1,р , называемому фенотипом, будет соответствовать натуральный набор ^ = С^б^, ), ] = 1, р, называемый генотипом.

Шаг 2. Введем обратное отображение С_1:Л^ 5 , осуществляющее

преобразование генотипа стека технологий в соответствующий ему фенотип.

Шаг 3. Множество стеков технологий, принадлежащих популяции g-ого поколения, обозначим как 0д,д = 1,С!> где £ - порядковый номер последнего (терминального) поколения генетического алгоритма. Выполняется |0^| <р,д = 1,6.

Шаг 4. При запуске генетического алгоритма и формировании популяции решений генотипы будем обозначать как

^д = ■ ■ аПд), ^ = 1, |®д|, где каждая принимает значения от 1 до

|т;|, соответствующие порядковому номеру выбранного альтернативного

программного компонента из т^.

Шаг 5. По завершении исполнения генетического алгоритма

преобразуем генотип выбранного стека технологий в набор программных

компонентов, пользуясь отображением С-1.

При использовании разработанного алгоритма представления исследуемых альтернативных стеков технологий в форме, обеспечивающей

использование генетического алгоритма для поиска решений, экспериментально вычисляемый интегральный критерий качества функционирования программной системы для используемой

конфигурации шк,к = 1, t и выбранного стека технологий Бд, к = 1, |05|, принадлежащего д-ому поколению решений, д = 1,С1 совпадает по значениям с функцией приспособленности генотипа (д = С(Бд ),

к = 1, |05|,д = 1, £. Таким образом, задача эффективного выбора стека технологий (А2) с использованием генетического алгоритма сводится к задаче выбора стека технологий , для которого значение критерия ^ минимально среди набора стеков к = 1, |0С|, составляющих популяцию 0С терминального поколения генетического алгоритма:

5с = а^тт (3.3)

яЦл = 1,|0С|

Остановка генетического алгоритма осуществляется при выполнении хотя бы одного из следующих условий остановки:

- при достижении предельного количества поколений решений;

- при достижении предельного количества стагнирующих поколений (лучшее в популяции значение функции приспособленности не изменяется для последовательности поколений);

- в том случае, если средние по популяции значения функции приспособленности двух последовательных поколений решений отличаются на величину, не превосходящую установленный порог сходимости алгоритма;

- по запросу пользователя;

- аварийная остановка алгоритма в случае ошибки выполнения эксперимента.

3.3. Программа генетического выбора программных

компонентов

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

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

3.3.1 Проектирование программы генетического выбора программных

компонентов

Для соответствия указанным выше требованиям программа генетического выбора должна состоять из 3 модулей (рис. 3.1).

- модуля представления стеков технологий;

- модуля управления генетическим выбором и представления результатов;

- модуля взаимодействия с экспериментальным стендом и расчета функции приспособленности.

Модуль представления стеков технологий

Модуль взаимодействия с экспериментальным стендом и расчета функции приспособленности

Рисунок 3.1 - Модульная структура программы генетического выбора 3.3.2 Разработка программы генетического выбора программных

компонентов

Для разработки программы генетического выбора целесообразно использовать одну из существующих программных библиотек реализации генетических алгоритмов [91].

С учетом дополнительных требований к возможностям визуализации и анализа результатов генетического поиска для разработки программы выбрана программная библиотека ga пакета Global Optimization Toolbox системы MATLAB.

Исходные коды модулей программы приведены в Приложении 2.

3.3.3 Тестирование программы генетического выбора программных

компонентов

Для тестирования разработанной программы генетического выбора использованы тестовые данные, приведенные в таблице 3.1. Значение функции приспособленности получено с помощью функции rand() системы MATLAB, возвращающей равномерно распределенное псевдослучайное число в диапазоне (0;1).

Таблица 3.1 - тестовые данные, в порядке возрастания значения функции приспособленности__

№ тестового набора Генотип Значение функции приспособленности

1 1 1 1 1 5 0,000624222307658906

2 2 2 1 3 5 0,00125275751433063

3 2 1 2 1 3 0,00326752543353914

4 1 1 1 4 4 0,00876463956884965

5 2 2 1 3 4 0,0191626334179760

6 1 1 2 4 1 0,0202988000652472

7 2 2 2 3 2 0,0234864062098463

8 1 2 2 3 2 0,0314124259384131

9 1 1 2 2 1 0,0499001868582141

10 1 2 1 3 3 0,0499409979625299

11 1 2 1 5 5 0,0518844005865864

12 1 1 1 5 1 0,0750582550297686

13 1 2 2 3 3 0,0868267316235324

14 2 1 2 2 1 0,0871030337465280

15 2 2 1 5 3 0,0895909615575234

16 1 2 1 3 1 0,0953907035806731

17 1 1 1 1 2 0,0985036655147545

18 1 1 2 5 5 0,103454233692426

19 2 1 2 4 3 0,104821539814531

20 1 2 2 3 5 0,109622899908514

21 1 2 1 2 5 0,117393374912045

22 2 2 1 2 1 0,123931476696818

23 2 1 2 4 5 0,128815009629432

24 1 2 1 2 4 0,135663317549728

25 2 1 2 5 3 0,141100816261458

26 2 2 2 1 2 0,145918616983776

27 2 2 1 2 2 0,151344442724013

28 1 1 2 1 2 0,152062390663772

29 2 1 1 4 2 0,163429007249443

30 2 2 1 3 3 0,163544650095544

31 1 2 1 3 4 0,165293429904062

32 1 1 1 5 2 0,169606038025428

33 1 2 1 4 1 0,177632055984951

34 2 2 1 1 4 0,184196099499552

35 2 1 2 4 2 0,187552166211670

36 2 1 2 2 4 0,200785978967644

37 1 1 2 2 2 0,204624985576462

38 2 1 1 3 5 0,205783696891607

39 1 1 1 2 2 0,212198165930661

40 2 1 2 3 2 0,215145722423825

41 2 1 1 5 5 0,218659814954854

42 2 1 2 2 2 0,225558070357356

43 1 1 2 2 4 0,237290766273608

44 1 1 1 3 1 0,245348501078411

45 2 2 2 1 5 0,248901313214766

46 2 2 1 2 5 0,249210151384272

47 2 2 2 5 3 0,250981322578401

48 2 2 1 1 3 0,263050459568820

49 1 2 1 3 2 0,272480414329213

50 1 1 2 1 4 0,272805009633641

51 2 1 1 2 3 0,272851441657855

52 2 2 1 5 4 0,277153460278894

53 1 1 2 1 1 0,293356107580488

54 2 2 1 3 1 0,294335059579541

55 1 1 2 5 2 0,296597661256659

56 2 1 1 4 5 0,297276966940604

57 2 1 2 2 5 0,303466955505593

58 2 2 2 2 2 0,306715248434393

59 1 2 1 1 4 0,319067723705481

60 1 2 2 4 4 0,325962839192271

61 2 1 2 5 1 0,334353778763639

62 1 1 2 1 5 0,341886133427148

63 1 2 2 1 5 0,343243199557870

64 2 2 1 4 4 0,343346918291925

65 2 1 1 3 3 0,346948990804446

бб 2 2 1 5 1 0,349553060012288

67 2 2 2 4 3 0,356675572401825

68 1 1 1 З З 0,358783632249500

69 2 1 1 3 1 0,359233606741346

70 1 2 2 3 4 0,360338476273918

71 2 2 1 З З 0,378475789267472

72 1 2 2 З З 0,378998639902209

73 1 2 2 1 4 0,383817982703563

74 1 1 2 3 2 0,386429173002039

75 1 2 1 1 З 0,387208356973598

76 1 2 1 З 3 0,391172796136478

77 2 2 2 1 3 0,392765140616082

78 1 1 2 З 4 0,396188380671876

79 2 2 2 З 2 0,399176319643789

S0 1 2 2 4 1 0,399428408001220

S1 2 2 1 2 4 0,401099593319307

S2 2 1 1 1 3 0,407935155419235

S3 2 2 2 3 3 0,410755539839522

S4 1 2 2 З 2 0,417437911977305

85 1 1 1 3 З 0,417931415263207

86 1 1 2 З 3 0,420756253621798

87 2 1 2 3 З 0,426272801975956

88 2 1 1 2 5 0,432436504196027

89 2 2 2 3 1 0,437296483274862

90 1 1 1 4 2 0,440050420432124

91 2 1 2 3 3 0,457804704647060

92 2 2 1 1 2 0,458230824491925

93 1 2 1 4 2 0,460800409235046

94 1 1 1 2 4 0,462086211859462

95 2 1 1 2 4 0,464556949525001

96 1 1 2 5 1 0,467512453572162

97 1 2 1 1 3 0,472830017578221

98 2 2 2 2 3 0,472866693493252

99 1 2 1 1 1 0,478206650098045

100 2 1 1 1 1 0,485395380262383

101 2 1 2 4 1 0,490532645180532

102 1 2 1 4 4 0,491873666872008

103 2 1 1 4 1 0,498033156551127

104 2 2 1 4 1 0,500525589704999

105 2 2 1 5 2 0,503130903209796

106 1 1 1 5 3 0,514196622811379

107 2 1 2 3 4 0,517021372608681

108 2 1 1 4 3 0,522244494984953

109 1 1 2 2 3 0,523685382220593

110 2 2 1 3 2 0,532907526979309

111 1 1 2 4 3 0,532913528970437

112 1 1 1 2 1 0,533156970187459

113 2 1 1 3 4 0,538038671846210

114 2 2 1 4 З 0,542334040168452

11З 2 1 2 З 4 0,544235285573895

116 1 1 1 1 4 0,561326909199480

117 1 2 1 4 З 0,561513294667482

11S 2 2 2 4 1 0,579961327860103

119 1 1 1 2 3 0,586580330937856

120 2 1 1 2 2 0,590847730856056

121 1 1 2 2 З 0,592027296230271

122 2 1 1 З 1 0,592530164992760

123 2 1 2 1 4 0,603577907091365

124 2 1 1 1 З 0,606922550908199

12З 1 2 2 2 2 0,614858432223311

126 2 1 1 1 2 0,616760031100352

127 2 1 1 1 4 0,624489007193790

12S 2 2 2 5 1 0,628194145929798

129 2 1 2 1 1 0,633433222102778

130 2 2 2 5 5 0,637272626925911

131 1 2 2 5 1 0,648311680063221

132 1 2 1 5 4 0,651796458031929

133 2 2 2 2 4 0,658459798071484

134 1 1 2 4 2 0,659164232757541

135 2 1 2 3 1 0,679291652144460

136 2 2 2 2 5 0,683697407150996

137 1 1 1 3 3 0,687106954924643

13S 1 1 1 2 5 0,688607655135781

139 1 1 2 4 5 0,695340608534004

140 2 2 1 1 5 0,697764054470838

141 2 2 1 2 3 0,702000864717242

142 1 2 1 2 1 0,706326665856131

143 1 2 2 2 1 0,708168266637733

144 2 1 2 1 2 0,712667941510977

145 2 1 1 4 4 0,714612707899036

146 1 1 2 3 4 0,715005464337831

147 1 2 1 4 3 0,723363805017810

14S 2 2 2 2 1 0,731906058964227

149 1 2 2 4 2 0,737866005892576

130 1 2 1 2 3 0,755104552745547

131 1 2 1 3 1 0,755446933707137

132 1 1 1 4 3 0,762475182084252

133 1 2 1 1 2 0,776123488261825

134 1 1 1 3 4 0,779062213320302

133 2 1 1 3 4 0,779689546099218

156 1 1 2 3 3 0,782877599820170

137 2 2 2 1 1 0,784585981742734

13S 1 1 1 1 3 0,793219081723373

139 2 1 2 3 2 0,804875254101968

160 2 1 1 2 1 0,805276354943999

161 1 1 2 3 1 0,813012254337220

162 1 1 1 4 1 0,813930644144505

163 1 2 2 3 3 0,829617733681408

164 1 1 1 1 1 0,835468471358936

165 2 2 2 3 4 0,840348412140172

166 2 2 2 4 2 0,841649707827315

167 2 1 1 3 2 0,844055049119445

168 1 2 2 2 3 0,850030726353866

169 2 2 2 4 4 0,851450912774247

170 2 1 2 5 5 0,869062560699914

171 1 2 2 4 3 0,873217437873129

172 1 2 2 1 2 0,888313674730982

173 2 2 2 4 5 0,891066427976989

174 1 2 2 1 1 0,893008361336710

175 1 2 1 2 2 0,897422821661813

Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.