Научная статья на тему 'ПРИМЕНЕНИЕ МЕТОДОЛОГИИ «РАЗРАБОТКА ЧЕРЕЗ ТЕСТИРОВАНИЕ» ПРИ РЕАЛИЗАЦИИ СТОХАСТИЧЕСКИХ АЛГОРИТМОВ РЕШЕНИЯ СЛОЖНЫХ ЗАДАЧ ОПТИМИЗАЦИИ'

ПРИМЕНЕНИЕ МЕТОДОЛОГИИ «РАЗРАБОТКА ЧЕРЕЗ ТЕСТИРОВАНИЕ» ПРИ РЕАЛИЗАЦИИ СТОХАСТИЧЕСКИХ АЛГОРИТМОВ РЕШЕНИЯ СЛОЖНЫХ ЗАДАЧ ОПТИМИЗАЦИИ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
3
1
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
стохастические методы оптимизации / генетический алгоритм / разработка через тестирование / статистическая проверка гипотез / stochastic optimization methods / genetic algorithm / test-driven development / statistical hypothesis testing

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Ф.В. Безгачев, П.В. Галушин

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Ф.В. Безгачев, П.В. Галушин

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

APPLICATION OF THE TEST-DRIVEN DEVELOPMENT METHODOLOGY IN THE IMPLEMENTATION OF STOCHASTIC ALGORITHMS FOR SOLVING COMPLEX OPTIMIZATION PROBLEMS

This paper discusses the issues of unit testing of stochastic optimization methods, the problems that arise in this case and ways to solve them. An analogy is drawn between testing stochastic algorithms and testing statistical hypotheses. Using the described approach will reduce the development time and ensure the quality of software that implements methods for solving complex optimization problems, including those arising in the design of rocket and space technology.

Текст научной работы на тему «ПРИМЕНЕНИЕ МЕТОДОЛОГИИ «РАЗРАБОТКА ЧЕРЕЗ ТЕСТИРОВАНИЕ» ПРИ РЕАЛИЗАЦИИ СТОХАСТИЧЕСКИХ АЛГОРИТМОВ РЕШЕНИЯ СЛОЖНЫХ ЗАДАЧ ОПТИМИЗАЦИИ»

УДК 004.054

ПРИМЕНЕНИЕ МЕТОДОЛОГИИ «РАЗРАБОТКА ЧЕРЕЗ ТЕСТИРОВАНИЕ» ПРИ РЕАЛИЗАЦИИ СТОХАСТИЧЕСКИХ АЛГОРИТМОВ РЕШЕНИЯ СЛОЖНЫХ

ЗАДАЧ ОПТИМИЗАЦИИ

1 2* 2 Ф. В. Безгачев ' , П. В. Галушин

1Сибирский государственный университет науки и технологий имени академика М. Ф. Решетнева Российская Федерация, 660037, г. Красноярск, просп. им. газ. «Красноярский рабочий», 31 2Сибирский юридический институт МВД России Российская Федерация, 660131, г. Красноярск, ул. Рокоссовского, 20 *Е-шай: fedos82-82@mail.ru, galushin@gmail.com

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

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

APPLICATION OF THE TEST-DRIVEN DEVELOPMENT METHODOLOGY IN THE IMPLEMENTATION OF STOCHASTIC ALGORITHMS FOR SOLVING COMPLEX OPTIMIZATION PROBLEMS

F. V. Bezgachev1,2*, P. V. Galushin2

1Reshetnev Siberian State University of Science and Technology 31, Krasnoyarskii rabochii prospekt, Krasnoyarsk, 660037, Russian Federation 2Siberian Law Institute of Ministry of Internal Affairs of the Russian Federation 20, Rokossovsky Str., Krasnoyarsk, 660131, Russian Federation Е-mail: fedos82-82@mail.ru, galushin@gmail.com

This paper discusses the issues of unit testing of stochastic optimization methods, the problems that arise in this case and ways to solve them. An analogy is drawn between testing stochastic algorithms and testing statistical hypotheses. Using the described approach will reduce the development time and ensure the quality of software that implements methods for solving complex optimization problems, including those arising in the design of rocket and space technology.

Keywords: stochastic optimization methods, genetic algorithm, test-driven development, statistical hypothesis testing.

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

Актуальные проблемы авиации и космонавтики - 2022. Том 2

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

Для решения сложных задач оптимизации, как правило, используются стохастические методы оптимизации, например, генетический алгоритм [6] и другие бионические алгоритмы [1]. Постоянное появляются новые методы оптимизации, вдохновлённые различными природными процессами, а также новые варианты существующих методов оптимизации. Таким образом, корректная реализация стохастических методов оптимизации представляет собой часто встречающуюся и актуальную задачу.

В последние годы тема обеспечения качества программного обеспечения привлекала серьёзное внимание и исследователей, и программистов-практиков. Была существенно пересмотрена роль тестирования в разработке программного обеспечения. Тестирование рассматривается не как завершающий этап разработки, а как деятельность сопутствующая всему процессу разработки или даже направляющего фактора. Последний подход получил название «Разработка через тестирование» (Test-Driven Development, TDD) [2, 5].

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

Начнём с рассмотрения отдельных тестов стохастического алгоритма, то есть проверок отдельных свойств. Одни свойства стохастических алгоритмов могут быть проверены с абсолютной достоверностью, а другие - нет. Например, если тестируется реализация генератора случайных вещественных чисел, равномерно распределённых на отрезке [0;1], то проверка диапазона является тривиальной и любое нарушение диапазона однозначно является дефектом. С другой стороны, отклонения от равномерности распределения в некоторых случаях может объясняться не дефектом в реализации алгоритма, а конечностью количества генерируемых для тестирования чисел. Для оператора равномерного скрещивания в генетическом алгоритме [6] однозначно свидетельствовать о дефекте будет несоответствие длины родительских и дочерних хромосом. В то же время, различия в количестве генов, переданных от родителей, не всегда является свидетельством дефекта, так как может быть обусловлено стохастическим характером алгоритма.

Для тестирования подобных свойств нужно использовать математический аппарат проверки статистических гипотез [3]. Например, для рассмотренного выше примера можно проверить гипотезы о математическом ожидании, дисперсии или распределение в целом (используя, например, критерий хи-квадрат). Уровень значимости (p-значение, англ. p-value) может использоваться как численное значение степени отклонения ожидаемого значения от значения, наблюдаемого в тесте.

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

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

1 -(1 -о)".

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

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

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

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

Библиографические ссылки

1. Ахмедова, Ш.А. Кооперативные бионические методы оптимизации : монография / Ш.А. Ахмедова, Е.С. Семенкин. - Красноярск: СибГУ им. М.Ф. Решетнева, 2017. - 160 с.

2. Бек, К. Экстремальное программирование. Разработка через тестирование / К. Бек ; Кент Бек ; [Пер. с англ. П. Анджан]. - М. [и др.] : Питер, 2003.

3. Крушняк, Н. Т. Применение метода проверки статистических гипотез для оценки адекватности модели и объекта измерений / Н.Т. Крушняк, И.В. Иванина // Приборы. - 2019. - № 6(228). - С. 15-22.

4. Моисеев, Н. А. Вычисление истинного уровня значимости предикторов при проведении процедуры спецификации уравнения регрессии / Н. А. Моисеев // Статистика и Экономика. - 2017. - № 3. - С. 10-20. - DOI 10.21686/2500-3925-2017-3-10-20.

5. Негода, В.Н. Автоматизация тестирования прототипов программ, реализующих функции логического управления / В.Н. Негода, В.А. Фолунин // Радиотехника. - 2017. - № 6. - С. 91-98.

6. Goldberg, D.E. Genetic algorithms in search, optimization, and machine learning / D.E. Goldberg. - Reading, MA: Addison-Wesley, 1989.

© Безгачев Ф. В., Галушин П. В., 2022

i Надоели баннеры? Вы всегда можете отключить рекламу.