48580 (588575), страница 3
Текст из файла (страница 3)
для функции 2-х переменных задается три начальные точки:
2) Вычисляется значение функции во всех точках многогранника и выбирается:
лучшая точка :
(здесь
- номер итерации,
- номер точки) худшая точка
:
Далее заданная система из точки перестраивается, для этого:
3) Строится центр тяжести системы заданных точек за исключением худшей:
(для функции 2-х переменных точка - середина отрезка, соединяющего точки за исключением худшей)
4) Выполняется операция отражение худшей точки через центр тяжести:
здесь - параметр отражения (рекомендуемое значение
).
Рисунок 1.11. Отражение
5) Формируется новая система точек (многогранник). Для этого в точке вычисляется значение функции, полученное значение сравнивается с
:
если выполняется операция растяжение:
Рисунок 1.12. Растяжение
здесь - параметр растяжения (рекомендованное значение
)
При этом если , то в новой системе точек точка
будет заменена на
, если же
, то в новой системе точек точка
будет заменена на
-
если
выполняется операция сжатие:
Рисунок 1.13. Сжатие
здесь - параметр сжатия (рекомендованное значение
).
При этом если , то в новой системе точек точка
будет заменена на
, если же
, то в новой системе точек точка
будет заменена на
.
-
если
выполняется операция редукции: при этом формируется новый многогранник, содержащий точку
с уменьшенными вдвое сторонами:
Рисунок 1.14. Редукция
Т.о. в результате выполнения этого пункта алгоритма формируется новая система точек (многогранник), причем в случае возникновения операций растяжения и сжатия перестраивается только одна точка - , в случае возникновения операции редукции – все точки, за исключением
.
6) Процедура 2)-5) повторяется до выполнения критерия окончания счета.
Основной критерий окончания метода:
Дополнительные критерии окончания метода:
-
при выполнении предельного числа итераций:
при однократном или двукратном одновременном выполнении двух условий:
,
где - малое положительное число.
Алгоритм работы метода Нелдера-Мида схематически изображен на рис. 1.15
Рисунок 1.15. Диаграмма работы метода Нелдера-Мида
-
Метод случайного поиска (адаптивный метод случайного спуска)
Алгоритм метода:
1) Задается начальная точка и начальное значение параметра
2) Строится система пробных точек (обычно 5-10 точек):
здесь - номер итерации,
- случайный вектор единичной длины,
- номер пробной точки.
Построенные пробные точки оказываются лежащими на гиперсфере радиуса (в случае двух переменных – на окружности радиуса
).
3) Для каждой пробной точки вычисляется значение функции и выбирается наилучшая
, для которой
. Выбор может осуществляться как автоматически, так и при участии пользователя.
4) Проверяется условие:
-
если условие выполнено, то система пробных точек считается удачной, далее возможно два продолжения алгоритма:
4.1)
4.2) в направлении, соединяющем точки и
делается ускоряющий шаг:
в этом случае, если оказывается, что , принимается
Рисунок 1.16. Удачная система пробных точек
-
если условие не выполняется, делается попытка построить новую удачную систему пробных точек. если при этом число неудачных попыток достигает некоторого заданного числа
, текущий радиус
уменьшается (автоматически или пользователем).
Рисунок 1.17. Неудачная система пробных точек (слева - возможна повторная попытка, справа - необходимо уменьшить радиус)
5) Процедура 2)-4) повторяется до выполнения критерия окончания счета.
Основной критерий окончания метода:
Дополнительные критерии окончания метода:
-
при выполнении предельного числа итераций:
-
при однократном или двукратном одновременном выполнении двух условий:
где - малое положительное число.
Алгоритм работы метода случайного поиска схематически изображен на рис. 1.18
Рисунок 1.18. Диаграмма работы метода случайного поиска
-
Метод конфигураций (Хука-Дживса)
Метод представляет собой комбинацию исследующего (исследовательского) поиска с циклическим изменением переменных и ускоряющего поиска по образцу.
Процесс поиска минимума функции всегда начинается с исследующего поиска.
Исследующий поиск осуществляется вдоль координатных направлений, результатом его являются так называемые точки базиса, в которых вычисляется значение функции .
Поиск по образцу осуществляется в направлении, соединяющем де последующие точки базиса. В точках полученных «по образцу» значение функции не вычисляется, они служат лишь для проведения в них исследующего поиска.
Алгоритм метода:
1) Задается начальная точка и начальные значение приращений
. Точка
называется точкой старого базиса.
2) Проводится исследующий поиск, в результате которого каждая координата новой точки вычисляется по алгоритму:
В результате исследующего поиска получается точка .
Если при этом , то
- точка нового базиса.
Если , то исследующий поиск неудачен. В этом случае необходимо уменьшить значения приращений
и повторить исследующий поиск.
Рисунок 1.19. Исследующий поиск (слева — удачный, справа - неудачный) - точка старого базиса
- точка нового базиса
3) Из точки нового базиса может быть:
-
продолжен исследующий поиск со старыми или новыми значениями приращений (шаг 2) алгоритма)
-
проведен поиск по образцу по алгоритму:
Рисунок 1.20. Поиск по образцу (слева — удачный, справа - неудачный)
В точке значение функции не вычисляется, из этой точки проводится исследующий поиск, в результате которого получается точка
. Если
, то точка
становится точкой нового базиса, а
- точкой старого базиса.
Если , то поиск по образцу считается неудачным, точки
- аннулируются, при этом точка
остается точкой нового базиса, а
- точкой старого базиса.
4) Процедура 3) повторяется до выполнения критерия окончания счета.
Основной критерий окончания метода:
Дополнительные критерии окончания метода:
-
при выполнении предельного числа итераций:
-
при однократном или двукратном одновременном выполнении двух условий:
где - малое положительное число.
Алгоритм работы метода конфигураций схематически изображен на рис. 1.21
Рисунок 1.21. Диаграмма работы метода конфигураций
-
-
Практическая часть
Создание любого программного изделия, как и любая другая деятельность, делится на несколько взаимосвязанных этапов. В данном случае мы имеем дело с построением некоторой системы, которая будет выполнять определённые задачи. Значит, нам нужно определить, какие средства нам понадобятся для выполнения этих задач.
Во-первых, разрабатываемая система должна иметь определённую структуру, которая определяет механизм её работы. Для определения структуры необходимо рассмотреть современные виды архитектуры, использующиеся в сходных проектах. Затем нужно сравнить эти модели и выбрать на основании этого сравнения такую модель, которая в наибольшей степени будет соответствовать предъявляемым требованиям.
После выбора вида архитектуры программы, требуется выбрать программные средства, которые будут использоваться в проекте для реализации программных механизмов. От выбора программных средств зависит то, какая квалификация потребуется для дальнейшей работы над проектом, а также для его внедрения, и, в некоторых случаях, использования.
После выбора программных средств, производится непосредственно разработка архитектуры системы и написание текстов программ, составляющих её, написание текстов документации.
-
Анализ архитектур
В программировании архитектурой программного продукта является совокупность общих принципов работы программ, входящих в программный продукт и принципов взаимосвязи этих программ в единое целое. Архитектура программного продукта определяется на ранней стадии разработки, желательно до того, как будут выбраны конкретные программные среды, в которых будут разрабатываться составные части проекта, хотя не исключена ситуация, когда программная среда определена заранее, и требуется разрабатывать программы уже в предопределённых условиях.
В случае, когда сначала разрабатывается архитектура программы, то затем выбор программных сред ведётся, как правило, с учётом приспособленности этих сред не только к решению данной задачи в общем, но и к построению программного продукта в рамках выбранной архитектуры.
При выборе архитектуры программного продукта нужно руководствоваться тем, какие задачи необходимо решить с его помощью. Использование какой-либо одной архитектуры во всех проектах не оправдано, так как различные архитектуры лучше способствуют решению различных классов задач, и, если какая-либо архитектура покажет себя хорошо при решении одного класса задач, то нельзя с уверенностью сказать, что удастся с её помощью эффективно решить и любую другую задачу.