Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Принятие оптимальных решений в перевозках на морском транспорте. Учебное пособие
.pdf
оптимизации целевой функции Z(x) величина первого интервала 1-1 пере-
2
2
2
2
x
x
x
менной х выбирается заведомо большой, чтобы не пропустить локальные
экстремумы. Затем определяется шаг оптимизации первой итерации Δх
Он выбирается на уровне Δх1 = 0,1 величины первого интервала 1-1. Вы-
бранный интервал определяет крайние наружные точки
вычисляются значения Z(
1
) и Z(
х
1
1
). Интервал 2-2 второй итерации вы-
х
2
1
х и
1
1
х . По ним
2
1
числяют по значению величины первого:
│2-2│ = (1 – 0,2) · │1-1│.
Затем аналогично первому интервалу определяют шаг второй итера-
.
ции, который определит крайние наружные точки интервала 2-2
По ним вычисляются значения Z(
х
1
) и Z(
). Дальше переходят к интер-
х
2
х и
1
х .
2
валу 3-3 и т.д. Процедуру направленного перебора следует останавливать в
любом случае при появлении периодических колебаний (скачков) в значениях целевой функции Z(x). Эти скачки означают достижение предела чувствительности математической модели Z(x) при стремлении ее к оптимальному значению.
Метод «золотого сечения». Алгоритм «золотого сечения» для од-
номерной задачи в отличие от алгоритма перебора позволяет ощутимо сократить число итераций или циклов для отыскания оптимума. Однако следует иметь в виду, что при этом методе решения можно пропустить локальные экстремумы целевой функции.
Существо метода «золотого сечения» состоит в использовании принципа деления выбранного диапазона оптимизируемой переменной х «в
крайнем и среднем положении». Для этого диапазон делят на две неравные
части так, чтобы большая его часть относилась к меньшей как вся величина диапазона относится к большей.
Несложно рассчитать соотношение частей при делении «в крайнем и
среднем положении». Предположим, что а есть величина, подлежащая делению, а х и а – х есть искомые части (соответственно большая и меньшая), тогда между величинами а, х, а – х должна существовать зависимость
ax
ax
или
2
()
aa x
, или
22
ax a
.
0
(8.7)
Решение уравнения (8.7) дает два значения
xa
51
и
1
2
x а
,
2
51
2
131

причем отрицательное значение игнорируется исходя из физического
смысла. Большая часть величины а, разделенной в «крайнем и среднем от-
51
ношении», будет равна
a
. Отношение этой части к целому составит
2
51
a
: а =
2
51
≈ 0,61804…
2
(8.8)
Z(x) х
1
→ min
0,618 0,382
0,382 0,618
х
2
А В С
0 х
а
c
b
Рис. 8.4. Метод «золотого сечения»
На первом шаге алгоритма задаются границы выбранного исходного
значения диапазона аb (рис. 8.4), а также точность ε, которая будет
достаточной для определения значения минимума или максимума целевой
функции. Значение величины ε устанавливается исходя из физического
смысла целевой функции Z(x). Поиск минимума или максимума целевой
функции ведется сравнением ее величины в точках диапазона ab с помощью соотношения (8.8). На втором шаге сравниваются значения Z(а) и
Z(b), при поиске минимума и Z(а) > Z(b) большую часть (0,618) диапазона
аb нужно откладывать от точки b. На третьем шаге вычисляется значение
Z(с) и сравнивается со значением Z(b), при Z(b) > Z(с) большую часть
(0,618) диапазона bс нужно откладывать от точки b. Далее пошаговые вы-
числения продолжаются. Прекращение процедуры поиска оптимума следует производить после появления периодических скачков целевой функции или пока разница значений целевой функции на концах полученного
диапазона не станет соответствовать установленной точности Z(k) – Z(l) ≤ ε.
Алгоритм метода «золотого сечения» дает экономию счетного времени, в результате чего поиск экстремума происходит примерно в два раза
быстрее в сравнении с перебором.
Сеточные алгоритмы. Сеточные алгоритмы оптимизации приме-
няются для многомерных задач. В их основе лежит разбивка диапазонов
изменения переменных величин xm, составляющих вектор Х = (х
x
), на конечное число отрезков. Значения каждой переменной xm с задан-
m
, х2, …,
1
132

ным постоянным шагом Δxm образуют сетку. Для двухмерных задач эта
сетка плоская (рис. 8.5), а для многомерных – пространственная.
В узлах сетки, образованных линиями, параллельными координатным осям, вычисляется значение целевой функции Z(Х) с учетом накладываемых на нее ограничений. Узлы сетки, в которых производятся вычисления, должны находиться в области допустимых решений {D}.
Область допустимых решений {D}
х
2
х
2max
х
2min
Δх
Z(x
2
0
х
1min
Δх
1
1,x2
)
х
1
х
1max
Рис. 8.5. Оптимизация сеточным алгоритмом, слепой перебор
Для решения двухмерных задач Х(х
, х
) могут быть использованы
1
2
алгоритмы «слепого» или «направленного» перебора. Алгоритм «слепого»
перебора обладает простотой, однако он связан с большим объемом вычислений. Суть этого алгоритма заключается в том, что вначале задается
матрица допустимых значений компонентов вектора Х. Число возможных
значений каждой переменной хm может быть различным, поэтому к каждой
матрице должен задаваться массив значений каждой переменной. Слепой
перебор представляет собой многошаговую процедуру со значительным
количеством вычислений, которое составляет m·n, где n – число значений,
на которые разделен диапазон изменения переменных, а m – число переменных. Число переменных m не должно быть более 4-5 при 10-15 возможных значений n каждой переменной величины, иначе значительно увеличивается количество вычислений. В узлах сетки области допустимых
решений последовательно вычисляется значение функции Z(Х)Т1, соответствующее случайным значениям вектора Х. Полученное значение принимается как лучшее текущее. Затем вычисляется следующее значение Z(Х)
Т2
и сравнивается с первым. Если найдена лучшая точка, то она принимается
133

как лучшее текущее значение Z(Х) и вычисления продолжаются. Поиск оптимального значения целевой функции Z(Х) прекращается, когда число неудачных попыток найти новое лучшее текущее значение Z(Х) будет равно
заранее заданному числу N
.
z
Существо применения алгоритма направленного перебора показано
на рис. 8.6, когда целевая функция минимизируется. Область допустимых
решений целевой функции Z(x
, x
) заштрихована, в ней последовательным
1
2
движением по клеткам сеточной таблицы вычисляют ее значения.
Сетчатый алгоритм с направленным перебором представлен на
рис. 8.7.
x2 Z(x
1
, x
2
) → min
6 13
9 5
17 14 7 12
4
min
8
17 15 11 9 10
16 18 20 22
0 х
1
Рис. 8.6. Сетчатый алгоритм, направленный перебор
Он заключается в использовании процедуры расчета значений целевой функции во всех направлениях вокруг решения, полученного после
предыдущей итерации и последовательного сравнения с ним полученных
значений целевой функции. Каждая точка сетки соответствует решению.
(
От исходной точки Х
r)
вычислений на сетке в общем случае направлений
0
поиска минимума или максимума значений целевой функции будет четы-
(
ре, а от текущей точки Х
+1
r+1)
– три (см. рис. 8.7). Видно, что в области допустимых решений 42 точки значений целевой функции. Если для поиска
оптимального значения целевой функции Z(x
, x
) использовать метод
1
2
«слепого» перебора, то необходимо вычислить и сравнить ее значения
практически во всех точках. Алгоритм направленного перебора позволяет
сократить объем вычислений.
134

Х+1 Z
оптимизации Х
Х
+1 Х+1
(k+1)
(x
, x
), текущая точка
1
2
+1
(
r+1)
Шаг оптимизации
Х Х
Х Z(x1, x
оптимизации Х
), исходная точка
2
(
r)
0
Рис. 8.7. Алгоритм направленного перебора
На каждой r-й итерации поиска оптимального значения целевой
функции ее вычисленные по клеткам сетки значения сравниваются между
собой. По результатам последовательных сравнений будет найдена исходная точка очередной итерации или точка (решение), соответствующая
minmax значению целевой функции.
Таким образом, из приведенной схемы алгоритма (см. рис. 8.6) видно, что использование алгоритма направленного перебора для поиска оптимального решения, соответствующего минимальному значению целевой
функции Z(x
, x
), потребовало 7 итераций и 17 вычислений значений целе-
1
2
вой функции. В то же время, если бы применялся метод «слепого» перебора, потребовалось 42 вычисления значений функции Z(x
, x2).
1
Недостатком решения задач оптимизации с помощью сеточных алгоритмов является то, что могут быть пропущены локальные экстремумы целевой функции. Определенную проблему представляет также выбор местоположения исходной точки для проведения расчетов. От него в определенной степени зависят объем и качество вычислений. Надежных способов
определения исходной точки для вычислений пока не существует, поэтому
целесообразно ориентироваться на физический смысл исследуемых величин.
Градиентный метод. Градиентные методы представляют собой
процедуру последовательного поиска экстремума, в котором хm0 – начальное приближение (исходная точка), x
…, а x
(k+1)
– очередная точка поиска экстремума целевой функции. Про-
m
(k)
– текущая точка поиска, k = 1, 2,
m
цедура определяется следующим образом:
x
(k+1)
m
= x
(k)
± hk · g
m
(k)
,
где hk – масштабный коэффициент, шаговый множитель, зависящий от k-го
шага, чем ближе к экстремуму целевой функции, тем меньше должен быть
шаг; g
(k)
– градиент функции, g
(k)
= drad Z(Х).
135

Градиент функции Z(х
Z
x
x
x
, х2, …, х
1
) в исходной точке Х0 представляет
m
собой вектор с компонентами, которые являются частными производными
целевой функции по каждой оптимизирующей переменной х
, х2, …, хm:
1
drad Z(Х0) =
ZZ
, ,...,
xx
12
. (8.9)
m
Градиент (8.9) характеризует кратчайшее направление из исходной
точки Х0 области допустимых значений функции к ее экстремуму.
Алгоритм градиентного (от лат. gradient – шагающий, мера изменения величины на шаг перемещения) метода, или метода градиентного
спуска, состоит в отыскании направления, по которому значения целевой
функции при поиске экстремума Z(Х) изменяются наиболее сильно. Он
применяется при условии, что функция Z(Х) непрерывна и дифференцируема. Для того чтобы найти такое направление, вычисляется значение целевой функции в исходной точке поиска Х0 и в текущих точках поиска Х
(k)
k = 1, 2, …, равноотстоящих от нее в двух взаимно перпендикулярных
направлениях.
Существо процедуры градиентного метода состоит в том, что каждое
последующее приближение целевой функции Z(Х), Х = (х
, х2, …, х
1
) к экс-
m
тремуму получается из ее предыдущего значения путем смещения в
направлении градиента. В случае отыскания максимального значения
функции, Z(Х) → max, это направление задается градиентом, а в случае
отыскания минимального значения, Z(Х) → min, оно задается антиградиентом.
Формула преобразования каждой из компонент вектора переменных
Х = (x
, x2, …, x
1
) в каждом последующем (k+1) цикле оптимизации будет
m
иметь вид формулы рекуррентной (от лат. recurrentis – возвращающийся)
процедуры:
,
(1) () (1)
kk k
xxh x
mmm m
Z
()
k
xx
mm
x
m
,
(8.10)
где k – номер шага оптимизации; m – индекс компоненты вектора пере-
менных Х = (х
x
-й компоненте вектора Х;
m
, х2,…, хm); h
1
– масштабный коэффициент градиента по
m
(1)k
x
– величина выбранного шага оптимиза-
m
ции m-переменной.
В формуле (8.10) знак плюс будет соответствовать вычислению мак-
симума Z(Х), а минус – минимума Z(Х). Соответственно, величина выбранного шага
x у m-переменной, имеющая значение
m
ре шага оптимизации принимается Δх
m
> 0, если Z(Х) → max, и Δхm < 0, ес-
m
=
()k
, на k-м номе-
m
ли Z(Х) → min. Зависимость (8.10) связывает значения параметров сосед-
136

них членов вычислительной последовательности и позволяет шаг за шагом
x
x
A
определять любой член последовательности, если известны параметры
предыдущей. Рекуррентная процедура выполняется последовательно для
всех m-х компонент вектора X
(k+1)
X
переменных по выражению
(k)
, после чего определяется новый вектор
(1) ()kk
XX X
Z
X
.
Предположим, что для двухмерной задачи оптимизации текущему
вектору Х
(k)
соответствует точка А и а – значение целевой функции Z(Х) в
этой точке (рис. 8.8).
х
2
В
D
Δх
2
А F С
а + ε
а
0 х
Δх
1
1
Рис. 8.8. Уровни целевой функции и ее градиент
Тогда (а + ε) будет представлять собой следующее значение целевой
функции, отличающееся на ε – достаточно малую величину, а графики
значений функции будут параллельны в окружении точки А. Переход на
новое значение при изменении вначале только х1, а затем х2 определит соответственно точку С и точку В. Обозначив АС = Δх1, а АВ = Δх2, получим
приближенное значение частных производных:
Z
11
,
x
Предположим, что точка D соответствует вектору X
имеет те же направление и абсолютную величину, что и градиент g
Z
22
.
x
(k+1)
. Вектор
(k)
D
, ко-
137

ординаты которого относительно А есть частные производные. Из подобия
Z
Z
Z
Z
треугольников ABC и ADF следует, что градиент ортогонален линии уровня целевой функции, указывая направление наискорейшего изменения
функции в данной точке А. Действительно, при движении из А во всех
остальных направлениях до линии (а + ε) пришлось бы сделать больший
шаг.
Алгоритм поиска оптимума методом градиентного спуска для двухмерной задачи с целевой функцией Z(х
, х
) графически представлен на
1
2
рис. 8.9.
х
opt
0 х
2
6
4
2
Значения целевой
функции Z(х
1, х2
8
)
1
Рис. 8.9. Поиск оптимума градиентным способом
Процедура поиска оптимума методом градиентного спуска может
происходить и заканчиваться двояко. Первый путь поиска оптимума целевой функции основан на свойстве градиента обращаться в нуль в точке
экстремума. При численной реализации алгоритма поиска целесообразно
задавать некоторое малое число
. Процедуру поиска оптимума следует
заканчивать, если величины компонентов градиента, вычисленные для
очередного шага, дают значение этого числа
Величину числа
в каждом конкретной случае нужно выбирать
.
исходя из физического смысла переменных, которые определяют значение
целевой функции. Обычно
представляет собой погрешность вычислен-
ных значений переменных при оптимизации целевой функции, допустимую для использования результата оптимизации.
Второй путь основан на окончании поиска оптимума целевой функ-
ции тогда, когда, например, решение экстремальной задачи находится не
внутри области допустимых решений, а на ее границе. В этом случае при
достижении экстремума целевой функции Z(Х) ее градиент может быть не
равен нулю.
138

Чтобы предотвратить нарушение ограничений, нужно уменьшать ве-
личину приращений по компонентам вектора переменных Х(х
, х2, …, хm).
1
Как только величина приращения ∆хm, не выводящая значение целевой
функции из области допустимых решений, станет меньше заранее определенной величины
торыми следует руководствоваться при выборе величины
, поиск экстремума прекращается. Соображения, ко-
Xm
, аналогичны
Xm
тем, что изложены выше для первого пути поиска экстремума функции.
Если вычисление частных производных функции по какой-то причине аналитически затруднено, их можно определить численно, используя
формулу
Z
x
m
x
m
xZxxZ
mmm
,
(8.11)
где xm – m-я оптимизирующая переменная целевой функции Z(Х); Δxm – заданное приращение m-й переменной.
При использовании выражения (8.11) для расчета производных
необходимо дважды вычислять значения целевой функции Z(Х), отличающиеся изменением значения переменной хm на величину шага Δхm. Это
приводит к увеличению трудоемкости и объема вычислений, который
можно получить от применения градиентного спуска за счет движения к
оптимуму целевой функции кратчайшим путем. Блок-схема алгоритма метода градиентного спуска представлена в приложении 2.
Метод покоординатного спуска. Метод покоординатного спуска,
или релаксационные (от лат. relaxation – ослабление) алгоритмы, использует прямой метод решения оптимизационной задачи. Его идея заключается в том, чтобы свести оптимизацию многомерной задачи к многократно
повторяемой одномерной оптимизации. Существо метода состоит в изменении каждого из компонентов вектора Х в следующей последовательности (назовем такое изменение шагом алгоритма):
1) В выбранной начальной точке Х
динат, кроме координаты х
.
1
0
фиксируют значения всех коор-
m
2) Затем серией шагов определяют значение х1, соответствующее
экстремальному значению целевой функции, т.е. критерия эффективности.
Поскольку остальные переменные фиксированы, то это одномерная задача.
3) Фиксируют найденную переменную х1 и остальные переменные,
кроме переменной х
.
2
4) Из условия экстремальности определяют значение х2. Далее эти
операции выполняют поочередно со всеми переменными.
Считается, что один цикл алгоритма заканчивается после проведения
серий преобразований по каждой из переменных вектора Х. Формула преобразования компонентов вектора Х для (k+1)-го шага в некотором S-м
цикле будет иметь вид
139

(1) ()kkS
x
xx x
mm m
,
где xm – компонента вектора Х оптимизируемых переменных, m = 1, 2, …,
()S
m;
– приращение m-оптимизируемой переменной в S-м цикле. Ве-
m
личина этого приращения и знак меняются в зависимости от ситуации,
возникающей в ходе поиска экстремума; k – номер шага алгоритма в S-м
цикле.
Схематично поиск оптимума релаксационным алгоритмом, или покоординатным спуском, в двухмерной задаче оптимизации с целевой
функцией Z(x
, x
) представлен на рис. 8.10.
1
2
х
х
0 х
2
0
4
6
8
Значения целевой
функции Z(x
10
1
, x2)
1
Рис. 8.10. Покоординатный алгоритм оптимизации
Достоинства релаксационных алгоритмов состоят в простоте реализации на ЭВМ, в отсутствии требований дифференцируемости целевой
функции и ограничений. Однако следует иметь в виду, что быстрота сходимости релаксационных алгоритмов зависит от характера целевой функции.
Возможны случаи «заклинивания» алгоритма, когда поиск прекращается далеко от реального оптимума целевой функции и наложенных на
нее ограничений (рис. 8.11).
Предположим, что в результате поиска оптимального значения целевой функции Z(X) после некоторого цикла поиска оптимизирующего значения переменных переместились из точки а в точку b. При поиске оптимума в следующем цикле все перемещения из точки b параллельно осям
координат будут ухудшать значения целевой функции или приведут к
нарушению ее ограничений.
140
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
