Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Принятие оптимальных решений в перевозках на морском транспорте. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
оптимизации целевой функции 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]