Электронная библиотека диссертаций и авторефератов России
dslib.net
Библиотека диссертаций
Навигация
Каталог диссертаций России
Англоязычные диссертации
Диссертации бесплатно
Предстоящие защиты
Рецензии на автореферат
Отчисления авторам
Мой кабинет
Заказы: забрать, оплатить
Мой личный счет
Мой профиль
Мой авторский профиль
Подписки на рассылки



расширенный поиск

Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей Кабак Илья Самуилович

Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей
<
Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей
>

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

Автореферат - бесплатно, доставка 10 минут, круглосуточно, без выходных и праздников

Кабак Илья Самуилович. Обеспечение надежности сложных программных средств на основе искусственных нейронных сетей: диссертация ... доктора технических наук: 05.13.01 / Кабак Илья Самуилович;[Место защиты: Московский государственный технологический университет "Станкин"].- Москва, 2015.- 186 с.

Содержание к диссертации

Введение

ГЛАВА 1 23

Состояние вопроса и постановка задачи 23

1.1 Статистическое моделирование надежности 28

1.1.1 Простое статистическое моделирование с введением ошибок в программные средства 28

1.1.2 Статистическая модель Литтлвуда-Веррола

1.2 Аналитическое моделирование надежности 30

1.3 Прогнозирование надежности сложных программных средств 34

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

ГЛАВА 2 38

Оценка надежности программных средств по их структуре и надежности компонентов 38

2.1 Различие в подходе к надежности сложных программных средств и аппаратуры 38

2.2 Системный подход к программным средствам. Оценка надежности сложных программных средств 40

2.3 Построение и исследование матрицы переходных вероятностей Марковского процесса з

2.4 Вычисление частотного коэффициента v по матрице переходных вероятностей Марковского процесса 49

2.5 Основные формулы математической модели 53

2.6 Особенности математической модели надежности 64

2.7 Прогнозирующий характер разработанной модели оценки надежности сложных программных средств 66

2.8 Сравнение предлагаемой модели надежности сложных программных средств с ранее существовавшими моделями

2.9 Экспериментальная проверка математической модели надежности сложных программных средств автоматизированных систем управления. 72

2.10 Методика проверки разработанной модели прогнозирования и оценки надежности сложных программных средств 73

2.11 Практическая реализация методики проверки модели оценки и прогнозирования надежности программных средств 78

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

ГЛАВА3 Моделирование надежности сложных программных средств на базе искусственных нейронных сетей

3.1 Объектно-ориентрованный подход к программированию и модель прогнозирования и оценки надежности ПС АСУ 87

3.2 Преобразование формулы для моделирования интенсивности отказов сложных программных средств 88

3.3 Использование искусственных нейронных сетей для прогнозирования надежности сложных программных средств автоматизированных систем управления 91

3.4 Разработка многослойной модульной вычислительной системы для моделирования надежности сложных программных средств 95

3.5 Разработка структуры многослойной модульной вычислительной системы для моделирования надежности 97

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

ГЛАВА 4 100

Технология реализации больших искусственных нейронных сетей модус-нс 100

4.1 Модель надежности сложных программных средств на базе искусственных нейронных сетей 100

4.2 Разработка технологии МОДУС-НС для создания модели надежности сложных программных средств 105

4.3 Разработка архитектуры и протокола транспортной сети обмена данными 107

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

4.5 Постановка задачи оптимизации трафика информации в многослойной

модульной вычислительной системе 114

4.6 Метод решения задачи оптимизации трафика информации для

многослойной модульной вычислительной системы 115 4.7 Маршрутизация информации в многослойной модульной вычислительной системе 117

4.8 Структура нейронной сети в МОДУС-НС 118

4.9 Коммутаторная структура фрагмента ИНС в МОДУС-НС 1 4.10 Экспорт и импорт информации в домены в МОДУС-НС 120

4.11 Инициализация модулей многослойной модульной вычислительной системы в МОДУС-НС 122

4.12 Макетирование аппаратно-программной системы по технологии МОДУС-НС 123

4.13 Особенности использования генетических алгоритмов при обучении нейронных сетей 124

4.14 Послойное обучение многослойной модульной вычислительной системы 130

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

ГЛАВА 5 135

Оптимизация затрат на обеспечение надежности сложных программных средств 135

5.1 Постановка задачи оптимизации надежности сложных программных средств и выбор метода ее решения 137

5.2 Решение оптимизационной задачи на основе принципа Беллмана 139

5.3 Решение оптимизационной задачи с использованием искусственных нейронных сетей 143 Выводы по главе 5 144

Заключение 145

Основные результаты и выводы работы 149

Список литературы

Простое статистическое моделирование с введением ошибок в программные средства

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

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

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

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

Вопросы прогнозирования сроков разработки для различных типов программных средств неоднократно рассматривались в специальной литературе. Анализ литературы показал, что имеются несколько подходов к ускорению разработки программ. Разработка методов верификации. В ряде работ, например [26,27], предлагаются так называемые методы верификации программ. Эти методы основаны на формальном доказательстве правильности программного обеспечения, а не на его экспериментальной проверке .

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

Применение алгоритмических языков высокого уровня. Применение алгоритмических языков высокого уровня в значительной степени ускоряет процесс создания программных средств, но снижает быстродействие и увеличивает потребный объем оперативной памяти. Для получения эффективных программных средств приходится либо использовать языки низкого уровня (ассемблеры), либо создавать специальные, проблемно- ориентированные языки, высокого уровня. Для разработки программного обеспечения систем управления таким языком высокого уровня служит лишь язык ADA [28,31] или С#.

Разработка методологических рекомендаций по стилю и методам построения программ. На основе накопленного опыта в ряде работ, например [31,32] появляются рекомендации по приемам организации программ, стратегии поиска ошибок и т.п. Не вдаваясь в количественную оценку полученного эффекта, эти рекомендации позволяют повысить качество программных средств.

В 1968 г. появились работы Дейкстры [34-36], где были изложены основные положения метода структурного программирования.

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

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

Структурное программирование и применению алгоритмических языков высокого уровня дополняется методами отладки программных средств. Оптимизация управления отладкой включает выбор оптимального времени отладки для модулей сложных программных средств. Известно, что применение языков высокого уровня и структурного программирования увеличивают надежность программных средств, но до сих пор не были получены количественные оценки влияния структуры программных средств на их надежность. Методы оптимального управления отладкой позволяют количественно сопоставить время отладки и надежность программных средств, выбрать оптимальное время отладки для модулей программных средств, которое обеспечит заданный уровень надежности. До сих пор в специальной литературе рассматривался только один метод оптимального управления отладкой - выбор оптимального времени отладки с точки зрения стоимости. Этот метод изложен в работах[40-42]. Основу метода составляет стоимостная модель надежности программных средств. Эта модель учитывает рост затрат на проектирование программных средств при повышении их надежности (рост затрат связан с более длинной отладкой программных средств) и снижение эксплуатационных расходов при сопровождении более надежных программных средств (в том числе и затрат, связанных с устранением последствий отказов этих программных средств). Результатом применения этого метода является выбор экономически оптимального времени отладки и соответствующего уровня надежности программных средств.

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

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

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

На рис. 2.3 видно, что граф имеет иерархическую структуру близкую к древовидной. При таком подходе сложные программные средства будем рассматривать как некоторую многоуровневую иерархическую структуру. Верхний уровень в такой иерархической структуре занимает все ПС АСУ в целом. На нижнем уровне находятся операторы языка программирования. Последовательно многократно применяем формулы (2.10 и 2.12), выразим интенсивности отказов модулей высокого уровня через интенсивности отказов модулей более низкого уровня. Предельным случаем можно считать выражение отказов программных средств(самый верхний уровень) через интенсивности отказов отдельных команд языка программирования (самый нижний уровень).

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

Сгруппируем все модули нижнего уровня (операторы языка ассемблера) на несколько групп, так что внутри каждой группы были одинаковые временные и надежностные показатели. Пусть в і-той группе в некоторый случайный момент времени содержится Nei ошибочных модулей. Тогда вероятность отказа при выполнении модуля і-ой группы можно вычислить по формуле: р =т; (2ЛЗ) где Nei: - количество ошибочных модулей і -ой группы; Ni - общее количество модулей і -ой группы.

Время выполнения модуля і -ой группы является постоянной величиной и равно времени выполнения соответствующей команды или группы команд( как в случае использования языка программирования высокого уровня). Обозначим время выполнения модуля і -ой группы на нижнем уровне как т І . Рассмотрим проведение процесса отладки. Пусть в первоначальный момент времени программные средства будут состоять из N групп различных модулей. Будем считать, что общее количество модулей каждой группы в процессе отладки остается неизменным, т.е. ошибочный модуль і-той группы заменяется отлаженным модулем той же группы. Ошибочный модуль может заменяться правильным или также ошибочным модулем. Важно, что при отладке число модулей в каждой группе не изменяется.

Введенное ограничение не является жестким по двум причинам: во-первых, как показывают результаты выборочного анализа разработки сложных программных средств АСУ, в частности, ПС АСУ АЛП-3-2, количество замен операторов в несколько раз превосходит количество добавлений и удалений. Во-вторых, для достаточно представительной выборки значений Ni (где Ni -количество модулей і -ой группы, величина порядка 100-200), добавление или удаление одного- двух модулей незначительно скажется на результате, тем более, что количество добавлений примерно равно количеству удалений, и взаимоисключающе влияет на общую сумму числа модулей і -ой группы.

Рассмотрим изменение количества ошибок в модуле произвольной і-той группы во время отладки. Обозначим первоначальное количество ошибочных модулей і-ой группы- N е. Согласно формуле (2.13) выразим первоначальную вероятность отказа модуля і -ой группы : где N ЄІ: - первоначальное количество ошибочных модулей і - ой группы; Ni -общее количество модулей і - ой группы. Оценим математическое ожидание количества исправленных ошибок в модуле і-ой группы после одного выполнения

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

При одном выполнении модуля значение математического ожидания среднего количества исправленных ошибок количественно совпадает с вероятностью исправления одной ошибки Р ci . Отметим, что величина среднего количества исправленных модулей Nci меньше единицы. Для сложных программных средств первоначальное значение вероятности исправления ошибочного модуля будет порядка 10" -10 " (оценка получена в процессе отладки ПС автоматизированной системы управления технических систем АЛП-3). Затем эта величина будет уменьшаться.

Вероятность исправления модуля і-той группы за одно выполнение есть вероятность наступления трех независимых событий: где pci - вероятность исправления ошибки в модуле і-ой группы за одно выполнение произвольного модуля; di - отладочный коэффициент - вероятность исправления ошибки в модуле і-ой группы после наступления его отказа, pi -вероятность отказа і-ой группы модулей; Vi - частотный коэффициент -вероятность того, что в случайный момент времени выполняется модуль І-ОЙ группы. Как уже отмечалось выше, величина математического ожидания среднего количества исправлений модулей і-той группы за одно выполнение численно равна соответствующей вероятности РСІ:

При Pi0 =0,05, а=05, ц =0,000005 получим график рис.2.4 Подсчитаем математическое ожидание среднего времени выполнения модуля произвольного типа -тср . Рассматриваемая программная система состоит из модулей объединенных в N групп, причем вероятность работы модуля і-той группы равна Vi , а время его работы- ц . Исходя из этих данных, можно подсчитать тср:

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

Современные программные средства АСУ имеют следующие общие свойства: При разработке используются результаты работы нескольких групп независимых программистов. Разработка программных средств ведется с использованием различных алгоритмических языков, технологий программирования (процедурных, объектно-ориентированных, функциональных и др.), библиотек (классов и программ) и различных инструментальных средств. Все это приводит к различиям в распределении ошибок в разных модулях программы, что вызывает увеличение параметра модели N.

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

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

Для прогнозирования традиционно используют временные ряды. Прогнозирование временных рядов - это предсказание будущего поведения системы по имеющимся результатам наблюдений и оценки ее предыдущего поведения [74-77].

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

Существуют различные методы решения задачи прогнозирования, причем одним из самых перспективных является использование искусственных нейронных сетей (ИНС).

В настоящее время имеются результаты, показывающие достаточную состоятельность применения ИНС для решения проблемы прогнозирования временных рядов, например, [74-77]. Моделирование надежности сложных программных средств также относится к задачам, решаемых прогнозированием временных рядов.

В сложных программных средствах АСУ техническими объектами число групп модулей N составляет от нескольких тысяч до сотен тысяч компонентов.

При определении интенсивности отказов H(t) по разработанной математической модели (3.3) необходимо решить задачу оценки параметров модели ai, bi Таким образом, требуется оценить 2 N параметров модели.

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

Задача оценки параметра могла бы быть решена традиционным методом или с использованием современных методов искусственного интеллекта, например, генетических алгоритмов. Однако на практике, основными недостатками традиционных методов является то, что Р. Беллман называл «проклятием размерности», когда сложность поиска решения задачи катастрофически увеличивается со значением числа N оцениваемых параметров, традиционные методы при моделировании надежности программных средств АСУ приводит к чрезмерно сложным вычислениям.

Предложено использовать большие искусственные нейронные сети (ИНС) для реализации разработанной модели оценки надежности программных средств (3.3). Перед использованием ИНС необходимо обучить. Для обучения ИНС используется информация об отказах аналогичных программных средств, количество обнаруженных отказов, время безотказной работы модулей.

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

Для моделирования и прогнозирования надежности сложных программных средств автоматизированных систем управления с использованием ИНС, необходимо решить следующие ключевые задачи: 1. Разработать структуру ИНС, используемой для реализации разработанной модели прогнозирования и оценки надежности программных средств. 2. Разработать метод реализации большой ИНС, с учетом ее структуры. 3. Разработать способ обучения ИНС с учетом особенностей ее структуры, характерный для моделирования и прогнозирования надежности сложных программных средств. Особенности архитектуры ИНС, используемой для прогнозирования надежности сложных программных средств будут рассмотрены в разделе 3.3.

Метод реализации искусственной нейронной сети на базе многослойной модульной вычислительной системы рассмотрен в разделе 4. Перед использованием ИНС необходимо обучить. Для обучения ИНС используется информация об отказах программных средств. Общая схема обучения ИНС представлена на рис.3.1

Обучение ИНС состоит в том, что на вход нейронной сети и одновременно на специальный блок УЧИТЕЛЬ подают данные из входной выборки значений времен безотказной работы программных средств. Искусственная нейронная сеть отрабатывает полученные входные данные и формирует выходное значение интенсивности отказов H(t) для моментов времени t из выборки значений времени безотказной работы. Выходное значение интенсивности отказов H(t) сравнивается с эталонным выходным значением из обучающей выборки. Полученная разница значений с выхода ИНС и эталона является информацией для корректировки параметров ИНС, ее дополнительного обучения. Корректировка параметров ИНС связана с изменением коэффициентов передачи информации между нейронами ИНС и осуществляется программой Учитель. Процесс обучения ИНС и его особенности для обучения разработанной математической модели сложных программных средств будут рассмотрены далее в главе 5.

Инициализация модулей многослойной модульной вычислительной системы в МОДУС-НС

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

Первый процесс- отладка сложных программных средств, поиск и устранение ошибок в программе. При этом затрачиваются средства на аренду оборудования производственного комплекса, вычислительной и другой вспомогательной техники, стоимость заготовок и инструмента при непроизводственных действиях, оплату труда специалистов, электрической и тепловой энергии, прочие эксплуатационные расходы, см.(5.1). 3x=c (5.1) Эти затраты пропорциональны времени отладки сложных программных средств и показаны на рис. 5.1 штриховой линией. Второй процесс - это потери при отказах сложных программных средств в процессе эксплуатации, когда каждый отказ, приводит к простою и дополнительным затратам.

Поток отказов сложных программных средств является ординарным. Интенсивность отказов совпадает с параметром отказов H(t) [117]. Среднее число отказов объекта с восстановлением в единицу времени совпадает с интенсивностью отказов, которая определялась по модели прогнозирования и оценки надежности сложных программных средств (2.28,2.29).

Зададим среднюю стоимость отказа сложных программных средств Зі и получим формулу, связывающую потери от отказа сложных программных средств систем управления Зо с интенсивностью потока его отказов H(t):

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

Для сложных технических систем в машиностроении, наиболее существенным будет фактор простоя технологического оборудования. Если стоимость металлообрабатывающего оборудования превосходит 10 млн. долларов США, то расходы на амортизацию будут от Ідо 2 млн. в год или около 5-10 тыс. дол. США в день ли около 1000 долларов США в час.

В разделе 2 была выведена формула (2.12), связывающая интенсивность отказов сложных программных средств с интенсивностью отказов модулей, структурой программных средств и временем выполнения её модулей. Согласно этой формуле, интенсивность отказов программных средств выражается: Функция hi(ti) определяет изменение надежности модуля і-той группы при отладке, при этом ti - время отладки этой группы модулей. Характер зависимости H(t) ранее рассматривался в разделе 2 при математическом моделировании надежности. Было установлено, что значение функции H(t) определяется равенствами (2.28) и (2.29) и нелинейно относительно t.

Зафиксируем общее время отладки Т0. Это время будет складываться из времен отладки всех входящих в систему модулей. Время отладки каждого модуля является неотрицательной величиной. Запишем уравнения и ограничения Hati:

Изменяя значения ti при соблюдении системы ограничений (5.4), будем получать различные значения функции H(ti,i2, ..., t$). Поставим задачу оптимизации функции H(ti,t2, ..., t$) как минимизации значения Н интенсивности отказов программной системы, задаваемой формулой (2.12) при системе ограничений (5.4).

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

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

Использование ИНС в качестве модели прогнозирования и оценки надежности сложных программных средств системы управления позволяет проводить оценку надежности без предварительного определения числовых параметров модели ( коэффициентов ai и ВІ

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

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

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

При решении задачи оптимизации методом штрафных функций требуется выбор самой штрафной функции, что соответственно сказывается на точности и быстродействии [117,118]. При решении оптимизационной задачи методом случайного поиска необходимо выбрать первоначальное значение переменных из некоторой допустимой области [119,120], что также вызывает определенную сложность.

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

Для такого частного случая применим алгоритм оптимизации надежности сложных программных средств, основанный на принципе Беллмана [73,121,122]. Оптимизация по методу Беллмана приведена в приложении Б.