syst_pr

advertisement
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение
высшего профессионального образования
НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
им. Н.И.ЛОБАЧЕВСКОГО
НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ
Факультет вычислительной математики и кибернетики
Кафедра информатики и автоматизации научных исследований
МЕТОДИЧЕСКАЯ РАЗРАБОТКА ПО КУРСУ
«СИСТЕМЫ ПРИНЯТИЯ РЕШЕНИЙ»
Нижний Новгород, 2010
Методическая разработка для самостоятельной работы студентов
специальности «Прикладная информатика» факультета ВМК по курсу
«Системы принятия решений» / Нижегородский государственный университет,
2010, с 30.
В данной методической разработке излагаются некоторые методы поиска
экстремума функций одной переменной. Рассматриваются как унимодальные,
так и многоэкстремальные функции. Методические указания предназначены
для самостоятельной работы студентов, изучающих курс «Системы принятия
решений».
Методическая разработка подготовлена доцентом Коротченко А.Г.,
Сморяковой В.М., Кучиной О.М., Малаховской Д.А.
Рецензент: доцент Гришагин В.А.
2
Задачи поиска экстремума функций одной переменной
I.
Как известно, для определения экстремумов дифференцируемой функции
одной переменной f (x) нужно решить уравнение f ' ( x)  0 . Однако, только в
отдельных случаях, решение этого уравнения удается найти в явном виде и, как
правило, его приходится решать каким-либо численным методом, причем
задача численного решения уравнения f ' ( x)  0 примерно так же сложна, как и
исходная задача поиска экстремума функции f (x) . Кроме того, в практике
оптимизации приходится рассматривать функции f (x) , которые не являются
дифференцируемыми.
Поэтому возникает задача построения численных
алгоритмов поиска экстремума функции одной переменной. Следует отметить,
что универсальных методов, пригодных для минимизации (максимизации)
произвольных функций одной переменной не существует, в связи с чем
приходится конструировать алгоритмы, ориентированные на различные,
встречающиеся в прикладных задачах, классы функций.
Необходимость отдельного рассмотрения численных методов поиска
экстремума функций одной переменной объясняется следующими
обстоятельствами.
Во-первых, такие методы используются как вспомогательные процедуры
во многих алгоритмах поиска экстремума функций многих переменных.
Действительно, пусть требуется решить задачу
f ( X )  min, X  ( x1 ,..., x n )  D  R n ,
(1)
где R n  n  мерное евклидово пространство, и для ее решения используется
метод, задаваемый соотношением вида:
X k 1  X k   k H k , k  0,1,2,...,
(2)
где X k  ( x1k ,..., xnk )  R n , H k  (h1k ,..., hnk )  R n ,  k  числовой параметр.
При этом конкретный алгоритм определяется заданием точки
X 0,
правилами выбора векторов H k и чисел  k на основе полученной в результате
вычислений информации, а также условием остановки. Если H k является
направлением убывания функции f (x) в точке X k , т.е. f ( X k  H k )  f ( X k ) при
всех достаточно малых   0 , то коэффициенты  k в методе (2) выбираются из
условия
(3)
f ( X k   k H k )  min f ( X k  H k ), X k   k H k  D ,
 0
либо из условия
f ( X k   k H k )  f ( X k ), k  0,1,2,... .
Для отыскания же  k , удовлетворяющего неравенству (3), можно также
использовать какой-либо метод оптимизации.
Во-вторых, решение задачи (1) можно находить с помощью так
называемой схемы повторной оптимизации, основанной на том, что
min
1
2
( X , X )D
f ( X 1 , X 2 )  min ( min f ( X 1 , X 2 ))  min ( min f ( X 1 , X 2 ))
1
2
2
1
X D1 X D2
X D2
3
X D1
для произвольных множеств D1 , D2 . Здесь X 1 , X 2 - вектора соответствующей
размерности, D  D1  D2 - декартово произведение множеств D1 , D2 . Если x1 , x2 скаляры, то с помощью алгоритма одномерной оптимизации можно вычислить
значения функции
 ( x1 )  min f ( x1 , x 2 ),
x2 D2
а затем минимизировать эту функцию и тем самым находить решение задачи
min
( x1 , x2 )D  D1  D2
f ( x1 , x 2 )  min  ( x1 ).
x1D1
Аналогично можно поступать, когда число переменных функции f (x)
больше двух.
О других способах сведения задачи поиска экстремума функций многих
переменных к задаче поиска экстремума функций одной переменной можно
прочитать в /1,2/.
В-третьих, одной из особенностей задач оптимального проектирования
является то, что в систему ограничений, описывающих требования, которые
накладываются на характеристики проектируемого устройства, могут входить
характеристики g i ( X , v), j  1,..., m , зависящие от вектора варьируемых
X  D X  { X  ( x1 ,..., x n )  R n : ai  xi  bi , i  1,..., n}
параметров
и
параметра


v  [v , v ] . Таким параметром может быть частота, время, температура и т.д.,
см. /3/. Например, при проектировании фильтров технические требования к
частотным характеристикам  j ( X ,  ) связаны с выполнением условий
(4)
 j   j ( X , )   j , j  1,..., m,
для всех значений частоты   [  ,   ] . Здесь компонентами вектора
варьируемых параметров X являются значения сопротивлений, емкостей,
индуктивностей. Учет ограничений (4) приводит к анализу неравенств

max  j ( X ,  )   j ,
[  ,  ]
 j ( X ,  )   j ,
min


(5)
[ , ]
т.е. к решению одномерных задач оптимизации. Выполнение соотношений (5)
означает справедливость неравенств (4) при заданном X  DX для наихудших
значений  , с точки зрения выполнения неравенств, а, следовательно, и для
всех   [  ,   ].
И, наконец, классы функций одной переменной служат удобной моделью
для теоретического исследования эффективности методов оптимизации. Здесь
следует сказать, что некоторые из описываемых ниже алгоритмов являются в
том или ином смысле оптимальными. В связи с этим остановимся подробнее на
подходе, связанном с построением оптимальных алгоритмов.
Пусть решается задача
f ( x)  min, x  [a, b],
(6)
где функция f (x) принадлежит некоторому классу функций F, а алгоритм ее
решения  может быть выбран из некоторого класса алгоритмов А. Качество
4
решения задачи (6) для некоторой функции f ( x)  F при помощи алгоритма
  A будем оценивать критерием эффективности
Q  Q( f ,  ).
Отметим, что фиксация класса F вовсе не означает, что выбираемый
алгоритм предназначен для минимизации многих функций. Даже если
требуется минимизировать одну единственную функцию, на этапе
предварительного исследования приходится устанавливать
наличие или
отсутствие свойств функции, важных с точки зрения выбора оптимизационного
алгоритма. Установив свойства функции, которые будут приняты во внимание
при выборе алгоритма, мы тем самым фиксируем класс F. Задание же класса А
алгоритмов, из которого будет выбираться алгоритм  , зависит от того, можно
ли вычислять производную функции f (x) или только ее значения, от порядка
поступления информации, получаемой в результате вычислений, возможностей
по ее хранению, обработке и т.д. Величина Q( f ,  ) служит мерой
эффективности решения задачи минимизации функции f алгоритмом  . В
качестве критерия Q( f ,  ) может фигурировать, например, точность
(погрешность) решения задачи при заданном объеме вычислений (числе шагов
алгоритма) или число шагов алгоритма, требуемое для получения решения
задачи с заданной точностью.
Для оценки эффективности алгоритма   A на всем классе функций F
следует ввести некоторое дополнительное предположение в схему построения
оптимальных алгоритмов. Обозначим через Q ( ) гарантированное значение
критерия эффективности при поиске минимума функции f (x) из класса F с
помощью алгоритма  , т.е.
Q( )  sup Q( f ,  ).
f F
Тогда оптимальным алгоритмом  *  A будет такой алгоритм, для которого
справедливо равенство
(7)
Q( * )  min Q( ).
 A
Алгоритм  называется   оптимальным на классе функций F, если
(8)
Q(  )  inf Q( )   ,   0 .

 A
Изложенный подход является минимаксным и дает гарантированный
результат. Это означает, что для любой функции f  F качество решения
задачи (6) при помощи алгоритма  * будет не хуже, чем Q( * ) . Например, если
в роли критерия эффективности выступает погрешность решения задачи, то
оптимальный алгоритм минимизирует максимальную на классе функций F
погрешность и обеспечивает тем самым достижение наилучшего
гарантированного на классе F результата.
Возможны и другие подходы к построению оптимальных алгоритмов, см.
/1/.
Сделаем одно замечание по поводу введённого понятия оптимальности.
Будем считать для определенности, что рассматриваемые алгоритмы основаны
5
только на вычислении значений функции. Тогда оптимальные минимаксные
алгоритмы поиска экстремума, о которых шла речь выше, гарантируют
оптимальное значение критерия эффективности, если на каждом шаге
вычислений функция принимает наихудшее, возможное с точки зрения
принятого критерия значение. Однако перед вычислением функции на
очередном шаге алгоритма предыдущая информация о функции может
оказаться не наихудшей. Поэтому, имея в виду данный факт, естественно
выбирать точки вычисления функции на следующих шагах алгоритма так,
чтобы улучшить оптимальное, гарантированное до начала вычислений,
значение критерия эффективности. В последующих разделах, в рамках того же
минимаксного подхода, будут введены другие понятия оптимальности,
учитывающие поведение функции в ходе поиска ее экстремума и приведены
соответствующие алгоритмы.
Приступим теперь к описанию некоторых алгоритмов поиска экстремума
функции одной переменной. Более подробно об этих, а также ряде других
алгоритмов одномерной оптимизации можно прочитать в тех источниках,
которые указаны в списке литературы.
При описании алгоритмов будем предполагать, если не оговорено
противное, что используется информация только о значениях минимизируемой
функции.
Алгоритмы оптимизации унимодальных функций
Определение 1.
Функция f ( x), x  D  [a, b] называется унимодальной на D, если существует
такая точка x *  D , что
II.
f ( x1 )  f ( x2 ), x1  x2  x* ,
f ( x1 )  f ( x2 ), x*  x1  x2 ,
x1 , x2  D.
На рис.1 приведены примеры унимодальных функций.
Если унимодальная функция непрерывна, то она имеет единственную
точку минимума на D и эта точка совпадает с x * . В дальнейшем именно этот
случай и имеется в виду. Если же inf f ( x) не достигается, то тогда будем
xD
говорить о поиске точки x , фигурирующей в определении 1.
Свойство 1.
Пусть функция f (x) унимодальна на D, x1 , x2  D . Тогда если f ( x1 )  f ( x2 ) ,
то x *  x2 . При f ( x1 )  f ( x2 ) имеем x *  x1 .
Отметим, что если D не ограничено (является прямой или полупрямой), то,
основываясь на свойстве 1, легко построить конечношаговый процесс,
позволяющий найти отрезок, в котором содержится точка x * .
Обозначим через Fu класс всех унимодальных функций f (x) , заданных на
отрезке [a, b] .
*
6
Рис.1
Пусть N – число точек, в которых можно вычислить функцию f (x) .
Качество работы конкретного алгоритма  поиска минимума функции f (x)
будем оценивать критерием эффективности, равным длине отрезка локализации
точки минимума. В дальнейшем этот отрезок будем называть также отрезком
локализации. При этом под отрезком локализации понимается такой отрезок, в
котором с учетом результатов вычислений функции f (x) содержится точка
минимума x * этой функции. Так, например, если функция вычислена в двух
точках и сложилась ситуация, показанная на рис.2, то в силу свойства 1, точка
x *  [ x1 , b].
f1  f ( x1 )
f 2  f ( x2 )
Рис.2
Определение 2.
Алгоритм поиска минимума функции f (x) называется пассивным, если
результаты вычислений f (x) становятся известными лишь по окончании всех
вычислений.
Таким образом, чтобы задать пассивный алгоритм, нужно задать все
точки вычисления функции до начала поиска её точки минимума.
7
Пассивный алгоритм поиска минимума  1 .
В алгоритме  1 точки вычисления функции задаются следующим образом:
ba
j , j  1,..., N , N  2k  1, k  2,
N 1
ba
a
j , x2 j 1  x2 j   , j  1,..., k , N  2k , k  1, где   малое
k 1
После вычисления функции f (x) в точках
xj  a 
x2 j
положительное число.
определим
f ( x s )  min f ( xi ) . Тогда, обозначив x0  a и x N 1  b , в силу свойства 1 находим,
i 1,..., N
x1 ,..., x N
что x *  x s 1 , x s 1  , т.е. этот отрезок является отрезком локализации точки
минимума функции f (x) . Центр этого отрезка принимается за аппроксимацию
точки x * . В случае, когда f ( x s ) = f ( xs 1 ) точка x *  x s , x s 1  , и за аппроксимацию
точки x * принимается центр отрезка xs , xs 1 . Гарантированное значение
критерия эффективности Q(1 ) на классе функций Fu равно:
 ba
2 N  1 , N  2k  1,

Q( 1 )  sup Q( f ,  1 )  max ( xi 1  xi 1 )   b  a
i 1,..., N
  , N  2k .
f Fu
N
 1
2
(9)
Погрешность же в определении x * не превышает половины длины отрезка
xs 1 , xs 1  .
Теорема 1.
Алгоритм  1
при N  2k  1 является оптимальным пассивным
алгоритмом в классе функций Fu. При N  2k оптимального пассивного
алгоритма в классе функций Fu не существует, но алгоритм  1  -оптимален
/4/.
Доказательство:
Рассмотрим случай, когда N-нечетное. Тогда
ba
j , j  1,..., N , N  2k  1,
N 1
ba
Q ( 1 ) 
.
k
xj  a 
Доказательство будем проводить методом от противного.
  ( x1 , x2 ,..., x N ) ,
Пусть
найдется
такой
пассивный
алгоритм
a  x0  x1  x2  ...  x N  x N 1  b , что гарантированное значение критерия
эффективности на классе функций Fu для этого алгоритма меньше, чем Q(1 ) .
Тогда должна быть выполнена следующая система неравенств:
8
ba

 x2  a  k ,

 x  x  b  a ,
4
2
k

...,

ba
b  x

.
2
k

2

k
В результате сложения левых и правых частей этих неравенств получаем,
что
ba 
ba
k  b  a , то есть предположение, сделанное нами, не
k
верно.
Следовательно, при N - нечетом алгоритм  1 оптимален.
Пусть теперь N- чётное и найдется пассивный алгоритм   ( x1 , x2 ,..., x N ) ,
a  x0  x1  x2  ...  x N  x N 1  b , такой, что гарантированное значение критерия
эффективности на классе функций Fu для этого алгоритма меньше или равно,
чем
Q ( 1 ) 
ba
.
k 1
Тогда должна быть выполнена следующая система
неравенств:
ba

 x2  a  k  1 ,

 x  x  b  a ,
4
2
k 1

...,

ba
x  x
.
2k 2 
 2 k
k 1
(10)
Складывая левые и правые части неравенств (10), получаем, что
x2k  a  k
ba
ba
или x 2 k  a  k
.
k 1
k 1
Тогда x 2 k 1  x2 k 1  b  x2 k 1  b  x 2 k  b  (a  k
ba
ba
)
, что противоречит
k 1
k 1
предположению о существовании алгоритма  , для которого гарантированное
значение критерия эффективности на классе функций Fu меньше или равно
Q(1 ) .
Следовательно, при N-четном алгоритм  1  -оптимален.
Определение 3.
Алгоритм поиска минимума функции f (x) называется блочным, если
вычисления функции распадаются на  блоков по  1 ,...,  вычислений в каждом
блоке, ( 1  ...     N ) , причем результаты вычислений каждого блока
становятся известными перед началом вычислений следующего блока.
Метод дихотомии (половинного деления)  2 .
9
Для N  2k положим x1 
ab
ab
  , x2 
  , ε>0.
2
2
Длина отрезка локализации точки минимума любой унимодальной
функции после первой пары вычислений не больше, чем
ba
 .
2
Вторая пара вычислений проводится в точках, отстоящих на расстоянии ε
по обе стороны от середины отрезка локализации. После вычисления функции в
указанных точках получается отрезок локализации точки минимума длиной не
больше,
ba

b  a 3
2
 

2
4
2
чем
и
т.д.
После
N
вычислений
гарантированное значение критерия эффективности
Q( 2) 
b  a 2k  1
 k 1 
2k
2
(11)
Алгоритм  2 является блочным алгоритмом с k блоками (при N  2k ), а в
каждом блоке проводится по два вычисления функции. Подробнее о блочных
алгоритмах можно прочитать в /4/.
Определение 4.
f (x)
Алгоритм
поиска
минимума
функции
называется
последовательным, если перед началом очередного вычисления функции
становится известным результат предыдущего вычисления.
Метод Фибоначчи  3 .
Пусть F0 = F1 = 1, Fi+1 = Fi + Fi-1, i=1,2,….
(12)
Числа, удовлетворяющие данному рекуррентному соотношению,
называются числами Фибоначчи. Найдем решение рекуррентного уравнения
(12). Будем искать его решение среди геометрических прогрессий с i -ым
членом равным q i . Тогда q i 1  q i  q i 1 или q 2  q  1  0 . Ненулевые корни
1 5
1 5
1 5
1

. Обозначив  
, получим
.
2
2
2

 1  i 
i
Таким образом, последовательности  и     удовлетворяют уравнению
   
последнего уравнения равны
 
(12).
Ему
же
удовлетворяет
и
любая
линейная
комбинация
этих
i
1
последовательностей: с1 i  c2    . Коэффициенты
 
c1,
c2
найдем из
условия F0 = F1 = 1. Окончательно получим
Fi 
 i 1  ( ) (i 1)
5
,
откуда следует, что
Fi 
 i 1
5
,i   .
(13)
Отметим, что для вычисления чисел Фибоначчи удобнее переписать (12) в
виде
10
F 
F j 2 
 2 1

  C  j , где C  
, j  1,2,...,
F 
F j 1 
 1 1
 j 1 


вычисляются с помощью
F2i ,F2i 1 ,F2i 2
после чего числа
целочисленной матрицы C в i–ую степень, i=1,2,… /5/:
возведения
F2i 1 
F 

  C i  1 ,
F0 
 F2i 
F2i 2 
F 

  C i  2 .
 F2i 1 
 F1 
Будем считать, что D  [0,1] . Это не ограничивает общности рассмотрений,
т.к. заменой переменной x  a  x(b  a), x  [0,1] , все результаты, полученные для
отрезка [0,1] переносятся на случай D  [a, b] . Проведем первые два вычисления
функции
в
точках
x1 
FN 2
,
FN
x2
FN 1
,
FN
расположенных
симметрично
относительно середины отрезка [0, 1].
Если f ( x1 )  f ( x2 ) , то отрезком локализации точки минимума является
отрезок [0, x2 ] , когда f ( x1 )  f ( x2 ) – отрезок [ x1 ,1] , в случае же f ( x1 )  f ( x2 ) –
отрезок [ x1 , x2 ] .
Рис.3
Для единообразия при f ( x1 )  f ( x2 ) отрезком локализации точки минимума
будем считать, например, отрезок [0, x2 ] . Точка x3 выбирается симметрично
относительно середины отрезка локализации к лежащей внутри этого отрезка
точке уже проведенного вычисления ( x1 или x 2 ), см. рис.3.
Алгоритм  3 определяется следующим образом. На каждом (i  1) -ом шаге
( i  3,..., N  2 ) точка очередного вычисления функции xi 1 выбирается
симметрично относительно середины отрезка локализации [ai , bi ] к лежащей
внутри этого отрезка точке уже проведенного вычисления ~xi , где
11
f (~
xi )  min f ( x j ) , см. рис.4.
j 1,..., i
После ( N  1) -го шага точка ~x N 1 оказывается в середине отрезка
локализации и x N  ~x N 1   ,   0 . Ясно, что гарантированное значение критерия
эффективности (длина отрезка локализации точки минимума после N
вычислений) в случае D  [a, b] равно
Q( 3 )  sup Q( f ,  3 ) 
f Fu
ba
 .
FN
(14)
Рис.4
Сказанное выше можно проиллюстрировать с помощью следующей
таблицы, где i – число проведенных вычислений функции по алгоритму  3 , li –
длина отрезка локализации точки минимума [ai, bi] после i проведенных
вычислений, l i - расстояние от точки ~xi  [ai, bi] до ближнего конца этого отрезка,
li - расстояние от точки ~
xi до дальнего конца отрезка [ai, bi]. Здесь начальным
отрезком локализации является отрезок [0, 1].
i
2
li
li
l i
FN 1
FN
FN 2
FN
FN 3
FN
…
i
…
…
…
FN i 1
FN
FN i
FN
F2
2

FN FN
1

FN
FN i
FN
FN i 1
FN
F1
1

FN FN
FN i 1
FN
FN i 2
FN
F0
1

FN FN
i+1
N-1
N
12
Теорема 2.
Метод Фибоначчи  3 является  -оптимальным последовательным
алгоритмом. Оптимального последовательного алгоритма в классе
унимодальных функций, заданных на отрезке, не существует /4,6/.
Отметим, что на каждом шаге метода Фибоначчи, точка ~xi , лежащая
внутри отрезка локализации, делит его в отношении двух последовательных
чисел Фибоначчи, т.е. отношение длины всего отрезка локализации к большей
из его частей, на которые он разбивается точкой ~xi , равно FN i 1 /FN i . В силу
(13) Fj+1/Fj→τ при j→∞.
Определим теперь алгоритм золотого сечения  4 , в котором отрезок
локализации точки минимума на каждом шаге за счет выбора новой точки
вычисления функции будет поделен в отношении τ. Для этого в случае D=[0, 1],
первые две точки следует задать в виде: x1 
1

2
1
, x 2  . Выбор же очередной

точки вычисления осуществляется так же, как и в методе Фибоначчи.
Очевидно, что в случае D=[a, b] после N вычислений функции имеем:
Q( 4 )  sup Q( f ,  4 ) 
f Fu
ba
 N 1
(15)
Сравнивая теперь значения критериев эффективности для (9), (11), (14),
(15) отрезков локализации точки минимума после N вычислений при
применении алгоритмов 1 ,  2 ,  3 ,  4 видим, что алгоритмы  2 ,  3 ,  4
обеспечивают экспоненциальное уменьшение длины исходного отрезка [a, b] .
Алгоритм же  1 обеспечивает лишь линейное уменьшение. Однако следует
учитывать, что в ряде случаев порядок поступления информации и условия для
ее обработки позволяют применять только пассивные алгоритмы. Это связано,
например, с постановкой и проведением физических экспериментов,
результатом которых являются значения минимизируемой функции.
Учитывая (13), находим, что
ba
 N 1
ba

FN

 N 1 ( 5 ) 1  2

 1.17, N   ,
 N 1
5
т.е. при больших N длина отрезка локализации точки минимума после N
вычислений в алгоритме золотого сечения примерно только на 17% больше,
чем в методе Фибоначчи. Однако алгоритм α4 обладает тем существенным
преимуществом, что в нем вычисления можно прекратить в любой момент, т.к.
точки вычисления функции не зависят от общего числа вычислений N.
При практическом использовании методов Фибоначчи и золотого сечения
следует иметь в виду, что выбор на каждом шаге точки очередного вычисления
функции симметрично точке ранее проведенного вычисления приводит к
быстрому накоплению вычислительной погрешности. Так, если применяется
метод золотого сечения, то для определения точек x1, x2 следует задать
приближенно значение числа 5 . Поэтому точки x1, x2 будут заданы с
13
некоторой погрешностью. Оказывается, что с ростом числа шагов алгоритма
эта погрешность будет расти очень быстро, т.е. отрезок локализации [ai , bi] и
очередная точка вычисления функции xi+1 уже не при очень большом значении
i будет сильно отличаться от тех, которые получились бы при работе с точными
данными. Данный факт подтверждается и численными экспериментами на
ЭВМ. Убедимся в этом, рассмотрев следующий пример работы алгоритма
золотого сечения α4.
Пусть f ( x)  x, x  0,1 . Примем приближенное значение
а
1

равным 0.62.
1
2
равным 0.38,
Ниже приведены отрезки локализации точки минимума
функции f (x) , получающиеся в результате работы алгоритма  4 .
1) x1  0.38 x2  0.62
2) Отрезком локализации точки минимума является отрезок 0,0.62 .
x3  0.24
3) Отрезок
минимума 0,0.38
локализации точки
x4  0.14
4)
Отрезок локализации точки минимума 0,0.24
x5  0.1
5)
Отрезок локализации точки минимума 0,0.14
x6  0.04
14
6) Отрезок локализации точки минимума 0,0.1
x7  0.06
7)
Отрезок локализации точки минимума 0,0.06
x8  0.02
8) Отрезок локализации точки минимума 0,0.04
x9  0.02
Уже на восьмой итерации погрешность алгоритма достаточно велика, а
отношение длины отрезка локализации точки минимума к длине большей из
его частей равно двум. Теоретическое же значение этого параметра должно
быть равным   1.618....
Чтобы избежать этого неприятного факта, следует использовать алгоритмы
 3 ,  4 в модифицированных вариантах.
Один из них состоит в том, чтобы на каждом шаге заново делить отрезок
локализации точки минимума [ai , bi ] в требуемом отношении (отношении двух
последовательных чисел Фибоначчи или отношении золотого сечения) точками
1i  2i , где
1i  ai 
bi  ai
b  ai
F
F
,  2 i  ai  i
, z1i  N i 1 , z 2i  N i 1
z1i
z 2i
FN i 1
FN i
для метода Фибоначчи, z1i   2 , z2i   – для метода золотого сечения. В качестве
же точки xi 1 очередного вычисления функции следует выбирать ту из точек 1i
xi )  min f ( x j ) .
 2i , которая наиболее удалена от точки ~
xi , ~
xi  [ai , bi ] и f ( ~
j 1,..., i
Другая модификация алгоритмов  3 ,  4 состоит в том, что на каждом шаге
производится вычисление отношения длины всего отрезка локализации к длине
большего из отрезков, на которые отрезок локализации [ai , bi ] разбивается
F
точкой ~xi . Если оно отличается от теоретического значения ( N i 1 или ) не
FN i
более чем на некоторую заданную величину, то алгоритм продолжает свою
работу. В противном случае соответствующий алгоритм (  3 или  4 ) стартует
заново на отрезке [ai , bi ] (в случае метода Фибоначчи число оставшихся
вычислений функции равно N-i).
Введем теперь новое важное понятие оптимальности алгоритма.
Напомним, что выше оптимальный алгоритм был определен из условия, что
функция на каждом шаге вычислений принимает наихудшее возможное, с
точки зрения используемого критерия эффективности, значение. Однако данное
понятие оптимального алгоритма не в полной мере учитывает организацию
15
реальных вычислительных процессов, т.к. такой алгоритм не в полной мере
извлекает пользу из благоприятных (не наихудших) ситуаций, сложившихся в
ходе вычислений. Так, метод Фибоначчи не учитывает благоприятной
ситуации, сложившейся в ходе поиска, когда минимальное из уже вычисленных
значений функции достигается в двух соседних точках. Это единственная, не
наихудшая ситуация для унимодальных функций, а концами отрезка
локализации минимума в данном случае как раз и являются эти точки.
Определение 5.
Алгоритм называется последовательно-оптимальным, если он оптимален
среди последовательных алгоритмов и в любой ситуации, сложившейся после
некоторого числа шагов решения задачи, гарантирует наилучшее возможное в
данной ситуации значение критерия эффективности.
Аналогично понятию, ε-оптимального алгоритма вводится понятие εпоследовательно-оптимального алгоритма.
Нетрудно видеть, что ε-последовательно-оптимальный алгоритм  5 для
класса унимодальных функций Fu - это метод Фибоначчи, дополненный
следующим условием. В случае, когда на i–м шаге поиска минимальное из уже
вычисленных значений функции достигается в двух точках, за отрезок
локализации точки минимума принимается отрезок, определяемый этими
точками, а дальнейший поиск осуществляется методом Фибоначчи на данном
отрезке с (N-i) вычислениями функции.
Отметим здесь, что если на унимодальную функцию f (x) наложить
дополнительное условие (условие Липшица)
(16)
| f ( x . )  f ( x'. ) | L | x .  x'. |, x . , x' [a, b], L  0 ,
то, вообще говоря, в ходе поиска будет получаться более широкий класс
ситуаций, чем просто для унимодальных функций. Данное обстоятельство
позволяет построить последовательно-оптимальный алгоритм, являющийся
более гибким и дающим выигрыш по сравнению с методом Фибоначчи,
относящимся к случаю L   , см /7/.
Рассмотрим теперь оптимальную процедуру поиска минимума
унимодальной и дифференцируемой на отрезке [a,b] функции при условии, что
в процессе поиска можно вычислять как значение функции f (x) , так и ее
производную f ' ( x) в любой точке отрезка [a,b] /7/.
Пусть r – число возможных вычислений функции, а p –число возможных
вычислений ее производной. Заметим, что если производная f ' ( x) вычислена в
некоторой точке x отрезка [a' , b' ] локализации точки минимума, то после этого
вычисления отрезком локализации точки минимума будет отрезок [a' , x] , если
f ' ( x)  0 , либо отрезок [ x, b' ] , когда f ' ( x)  0. .
f ' ( x)  0 , то точка
Если же
x является искомой точкой минимума
унимодальной функции. Максимальное гарантированное сокращение отрезка
локализации минимума в результате вычисления производной достигается,
16
если x 
a 'b'
, т.е. при методе половинного деления. Метод же золотого
2
сечения сокращает отрезок локализации минимума в τ раз за одно вычисление
функции. Тогда начальный отрезок [a,b] при достаточно больших r, p в
результате вычислений можно сократить в M раз, где M  2 p  r 1 .
Такое сокращение получится, если сначала вычислить производную в p
точках, применяя метод половинного деления, а затем вычислить функцию в r
точках при помощи метода золотого сечения.
Примем трудоемкость или стоимость вычисления функции в одной точке
за единицу и пусть трудоемкость вычисления производной f ' ( x) в одной точке
равна q. Будем считать, что числа r, p не заданы, а суммарная трудоемкость
вычислений ограничена неравенством:
r  qp  N , N  min( 1, q) .
(17)
Здесь N –заданная суммарная трудоемкость вычислений. Найдем величины
r и p из условий максимального сокращения длины исходного отрезка [a, b], т.е.
из условия максимизации величины M при выполнении ограничения (17):
M  2 p  r 1  max
(18)
r  qp  N , r  0, p  0 .
Ограничения на r и p должны быть дополнены условием их целочисленности.
Перейдём от задачи (18), используя монотонность функции ln( x) и опуская
условие целочисленности переменных, к вспомогательной задаче:
ln M  p ln 2  r ln   ln   max
r  qp  N , r  0, p  0 ,
или к эквивалентной ей задаче:
 p(ln 2)  r (ln  )  min
r  qp  N ,
(19)
r  0, p  0 .
Задача (19) является задачей линейного программирования.
Выпишем функцию Лагранжа этой задачи:
L( p, r, y )   p(ln 2)  r (ln  )  y ( r  qp  N ) .
Тогда условия оптимальности в дифференциальной форме для задачи (19)
будут иметь вид:
 ln 2  qy  0 , p[ ln 2  qy ]  0 ,
(20)
 ln   y  0 , r[ ln   y ]  0 ,
(21)
y ( r  qp  N )  0, y  0 ,
(22)
r  0, p  0 .
(23)
Решая систему (20) – (23) получим:
N
, q  q0 ,
q
r  N , p  0, q  q0 ,
ln 2
q0 
 1.440420... .
ln 
r  0, p 
17
При достаточно большом N приближенное решение задачи (18) будет
иметь вид:
N 
r  0, p   , q  q0 ,
q
r  N , p  0, q  q0 .
Квадратные скобки означают целую часть числа.
Итак, при q  q0 следует проводить поиск точки минимума функции f (x)
по методу половинного деления, вычисляя только производную f (x) . В
противном случае поиск точки минимума функции f (x) следует вести по
методу золотого сечения, вычисляя только значения f (x) . На практике могут
встретиться оба случая. Так, если функция f (x) – многочлен высокого порядка,
то можно считать q  1 , т.е. трудоёмкости вычисления функции и её
производной примерно одинаковы. В этом случае следует пользоваться
вычислением производной. Для сложных функций f (x) , не заданных
аналитически, q  2 , т.к. для вычисления производной f (x) требуется
вычислить функцию f (x) в двух близких точках и затем взять конечноразностное отношение:
f ( x) 
f ( x  )  f ( x)
,  0 .

В данном случае поиск выгоднее вести, пользуясь лишь вычислением
функции.
III. Поиск минимума многоэкстремальных функций
В данном разделе рассмотрим некоторые методы отыскания глобального
экстремума функций одной переменной. Будем предполагать, что
минимизируемая функция f (x) удовлетворяет на отрезке D  [a, b] условию
Липшица (16) с известной константой L . Класс всех таких функций обозначим
через FL . Очевидно, что функция f (x) , принадлежащая классу FL , непрерывна
на отрезке [a, b] и, следовательно, достигает на D своего минимального
значения f ( x * )  min f ( x) . Ясно, что точка глобального минимума может быть
xD
не единственной.
Рассмотрим задачу приближенного отыскания минимального значения
*
f ( x ) . Будем считать, что задано либо число N вычислений функции, либо
f (x)
точность  отыскания её минимального значения. Пусть функция
вычислена в каком-то числе точек j :
yi  f ( xi ), i  1,..., j.
(24)
Тогда критерием эффективности, оценивающим качество работы
алгоритма  решения задачи минимизации функции f (x) из класса FL при
условии, что она вычислима в j точках, будем считать разность между
минимальным возможным значением минимума f (x) на D и тем минимальным
значением, которое получено в ходе вычислений. Имеем для этого критерия:
18
Q( f ,  )
 min f ( xi )  inf min f ( x ) .
i 1,..., j
f F ( j ) xD
(25)
L
Здесь FL ( j)  FL есть подмножество класса функций FL , состоящее из таких
функций f (x)  FL , для которых выполнены равенства (24). Таким образом,
величина Q( f ,  ) – это погрешность решения задачи минимизации функции
f (x)  FL с помощью алгоритма  , если по этому алгоритму функция
вычислена в j точках. Под погрешностью алгоритма  на классе функций FL
будем, как и прежде, понимать величину
sup Q( f ,  ).
f FL
Пусть функция f (x) вычислена в j точках. Тогда, в силу (16), имеем
f ( x)  yi  L | x  xi |, x  D, i  1,...., j.
(26)
Определим функцию
 j ( x)  max { yi  L | x  xi |}.
(27)
i 1,..., j
Учитывая (26), имеем
f ( x)   j ( x)
и, кроме того,
 j ( x)  y i , i  1,..., j .
(28)
Непосредственно проверяется, что для функции  j (x) выполняется
условие Липшица:
|  j ( x)   j ( x) | L | x  x |, x, x  D .
(29)
Таким образом, функция  j (x) является точной нижней минорантой для
функций, удовлетворяющих условию Липшица (16) и принимающих в точках
x1 ,..., x j значения соответственно y1 ,...., y j , т.е. график любой такой функции
лежит не ниже графика функции  j (x) .
Метод перебора  6 .
Пусть задано число вычислений функции N . Положим
ba ~
3(b  a)
(2 N  1)(b  a)
~
x1  a 
, x2  a 
,..., ~
xN  a 
.
2N
2N
2N
(30)
Теорема 3.
Алгоритм  6 является оптимальным пассивным алгоритмом на классе
функций FL /4/.
Доказательство:
После вычисления значений yi  f ( xi ) , i  1,..., N в качестве приближения к
минимальному значению примем значение min yi .
i 1,..., N
Пусть x * – точка глобального минимума функции  N (x) на множестве
D  [a, b] (функция  N (x) определена в (27) при j  N ). Согласно (30) найдётся
такая точка ~xl (l  {1,..., N}) из системы точек, задающих алгоритм  6 , что
19
ba
~
xl  x * 
.
2N
(31)
Найдём погрешность метода  6 при минимизации функции f ( x)  FL ,
используя соотношения (24),(25),(28) при j  N и соотношения (29), (31):
Q( f ,  6 )  min f ( ~
xi )  min min f ( x)  min  N ( ~
xi )  min  N ( x) 
i 1,..., N
f FL ( N ) xD
i 1,..., N
xD
L(b  a)
 min  N ( ~
xi )   N ( x*)   N ( ~
xl )   N ( x*)  L ~
xl  x * 
.
i 1,..., N
2N
Отсюда получаем, что
sup Q( f ,  6 ) 
f FL
L(b  a)
.
2N
(32)
Пусть теперь   ( x1 ,..., x N ) – произвольный пассивный алгоритм поиска
минимума функций из класса F L . Тогда выполняется хотя бы одно из
неравенств
x1  a 
ba
ba
ba
ba
ba
, x 2  x1 
, x3  x 2 
,..., x N  x N 1 
, b  xN 
.
2N
N
N
N
2N
(33)
Действительно, в противном случае получили бы
b  a  x1  a  x2  x1  ...  b  x N  (b  a)(
1
1
1
1
  ...  
)  b  a.
2N N
N 2N
Рассмотрим функцию g ( x)   L min | x  xi | . График функции g (x ) при N=2
i 1,..., N
представлен на рисунке 4.
Рис.4
Эта функция принадлежит классу FL . Для неё
бы одно из неравенств (33) выполняется, то
min g ( x)   L max {x1  a,
xD
g ( xi )  0, i  1,..., N . Так как хотя
x  x N 1
x2  x1 x3  x2
(b  a)
,
,..., N
, b  xN }  L
2
2
2
2N
(34)
Функции g (x ) - кусочно-линейная и её график - ломаная с вершинами,
абсциссами которых являются точки, указанные в (34). Кроме того, g (x ) - это
точная миноранта для функций f (x)  FL и таких, что f ( xi )  0, i  1,..., N .
Учитывая данное обстоятельство и неравенство (34), получаем:
sup Q( f , )  Q( g , )  min g ( xi )  min g ( x)  L(b  a) / 2 N ,
f FL
i 1,..., N
xD
откуда, с учётом (32) и в силу (7) следует, что алгоритм  6 является
оптимальным пассивным алгоритмом поиска минимума функций f (x)  FL .
20
Алгоритм  6 оптимален также среди всех последовательных алгоритмов в
смысле (7), т.е. когда минимизируемая функция принимает на каждом шаге
вычислений наихудшее, с точки зрения принятого критерия эффективности,
значение /4/.
Рассмотрим теперь алгоритм, в котором учитывается не наихудшие
ситуации, складывающиеся в ходе поиска.
Определение 6.
Алгоритм называется оптимальным одношаговым алгоритмом, если на
каждом шаге точка, где будет вычисляться значение функции, выбирается из
условия максимального гарантированного улучшения точности решения.
Понятие оптимальности на один шаг является упрощением понятия
последовательно-оптимального
алгоритма:
оптимальный
одношаговый
алгоритм является последовательно-оптимальным, если в условиях выбора
очередной точки вычисления функции остаётся провести только одно
вычисление. Однако значение концепции оптимальности на один шаг не
исчерпывается только этим обстоятельством. Дело в том, что во многих
случаях при решении задач оптимизации происходит перестройка модели
вычислений в ходе вычислительного процесса. Использование же оптимальных
одношаговых алгоритмов позволяет проводить такую перестройку
при
сохранении свойств оптимальности алгоритма. Подробнее об оптимальных
одношаговых алгоритмах см. /4,7,8,9,11,12/.
Метод ломанных  7 .
Пусть функция f (x) вычислена в j точках отрезка [a, b], yi  f ( xi ), i  1,..., j. В
качестве приближения к минимальному значению примем значение h  min y i .
i 1,...., j
Тогда погрешность алгоритма  7 на классе FL ( j ) равна:
Q( 7 )  h  min  j ( x).
xD
(35)
Изобразим график функции  j (x) , см. рис. 5.
Заметим, что график функции f ( x)  FL ( j) лежит не ниже графика функции
 j (x) .
Построим одношаговый оптимальный алгоритм. Обозначим через bi
ординаты точек вершин ломаной  j (x) , такие что bi  h и пусть их число равно
q(j). Введем в рассмотрение точки Bi (ci , bi ) , такие что  j (ci )  bi , bi  h ,
i  1,..., q( j ). Тогда погрешность алгоритма  7 будет иметь вид:
Q( 7 )  max (h  bi ) .
(36)
i 1,..., q ( j )
Пусть Li 1 и Li - прямые, реализующие точку Bi , как вершину ломаной
 j (x) . Через u i мы обозначим абсциссу точки пересечения прямой Li 1 и
прямой y  h , а через vi - абсциссу точки пересечения прямой Li и прямой
y  h . Выбор следующей точки будем осуществлять на отрезках u i , vi  ,
i  1,..., q( j ) , которым соответствует максимум в выражении (36).
21
Рис.5
Вычисляя значения ординат точек Bi перепишем выражение (36) в виде
Q( 7 )  max Qi , Qi 
i 1,..., q ( j )
L(u i  vi )
, i  1,..., q( j ) .
2
(37)
Пусть максимум в выражении (37) реализуется при i  p , тогда положим
u p  u, v p  v .
Замечание:
Если максимум в (37) реализуется на нескольких значениях i, то в качестве
p выберем наименьшее из них.
Обозначим следующую точку для вычисления функции f (x) через t,
t  u, v, поскольку выбор очередной точки вне этого отрезка не гарантирует
уменьшения погрешности в определении наименьшего значения функции из
класса FL ( j ) . Возможное значение функции в точке t обозначим через z  f (t ) .
Рассмотрим сначала случай, когда z  h (рис. 6).
Перестроим ломаную  j (x) с учётом выбора новой точки t и возможного
значения функции в этой точке f (t )  z . Обозначим данную ломаную  j 1 ( x) .
Через точки (u,h), (v,h), (t,z) плоскости x, y проведём отрезки прямых с
тангенсами углов наклона к оси х равными L и
(-L), см. рис. 6.
Соответствующие прямые обозначим через Li , i  1,2,3,4 .
Прямые Li , i  1,2,3,4 задаются в плоскости x, y уравнениями:
L1   Lx  Lu  h,
L2  Lx  Lt  z ,
L3   Lx  Lt  z ,
L4  Lx  Lv  h.
22
Рис.6
Запишем координаты точки B1 ( x1 , y1 ) пересечения прямых L1 , L2 :
ut h z

,
2
2L
L
1
y1  (u  t )  ( z  h).
2
2
1
L
1
L
Пусть Q1 (t , z )  h  ( z  h)  (u  t )  (h  z )  (t  u ) . Значение Q1 (t , z) выражает
2
2
2
2
собой разность между h и ординатой точки B1 .
Найдём координаты точки B2 ( x2 , y2 ) пересечения прямых L3 , L4 :
tv zh
x2 

,
2
2L
L
1
y 2  (t  v)  ( z  h).
2
2
1
L
1
L
Тогда Q2 (t , z )  h  ( z  h)  (t  v)  (h  z )  (v  t ) . Значение Q2 (t, z) выражает
2
2
2
2
собой разность между h и ординатой точки B2 .
x1 
Пусть теперь z  h (Рис. 7), тогда аналогичным образом находим:
1
L
Q3 (t , z )  z  ( z  h)  (t  u ) 
2
2
1
L
Q4 (t , z )  z  ( z  h)  (v  t ) 
2
2
1
( z  h) 
2
1
( z  h) 
2
23
L
(t  u ) ,
2
L
(v  t ) .
2
Рис.7
Применяя минимаксный подход, запишем погрешность алгоритма  7 на
классе FL ( j  1) :


Q( 7 )  min max  max Q1 (t , z ), max Q2 (t , z ), max Q3 (t , z ), max Q4 (t , z ), max Qi  ,
u t  v
h z  Z ( t )
K ( t ) z  h
K ( t ) z  h
i 1,..., q ( j )
h z  Z (t )

i p


где K (t )  max ( L1 (t ), L4 (t )) , t  [u, v],
(38)
Z (t ) - аналогичная ломаная, ограничивающая возможные значения функции
f (t ) сверху, t  [u, v] . Явный вид функции
Z (t ) здесь не выписывается,
поскольку она не влияет на решение уравнения (38).
Подставляя выражения Q1 (t , z), Q2 (t , z), Q3 (t , z), Q4 (t , z) в (38) и находя их
максимумы, получаем:
L

L
Q( 7 )  min max  (t  u ), (v  t ), max Qi  .
i 1,..., q ( j )
u t  v
2
i p
 2

(39)
Под знаком максимума здесь стоят две функции, зависящие от t , t  [u, v] ,
причём, одна из них является строго монотонно-убывающей и обращающейся в
ноль при t  u , а вторая строго монотонно-возрастающей по t и обращающейся
в ноль при t  v . Тогда минимум в выражении (39) достигается в точке:
t* 
uv
.
2
Таким образом, мы построили одношаговый оптимальный алгоритм  7 ,
называемый методом ломаных.
Теорема 4.
Алгоритм  7 является одношаговым оптимальным алгоритмом на
классе функций FL /11/.
Метод ломанных заключается в следующем:
24
1) первые два вычисления осуществляются в концах отрезка [a, b] , на
котором определяется минимум функции f(x).
Пусть функция вычислена в j точках.
2) строится точная нижняя миноранта  j (x) (27) класса функций FL ( j ) ,
определяются отрезки ui , vi  , i  1,..., q( j ) .
3) среди них находим
отрезок u, v, где реализуется максимум
погрешности (37).
4) точка x* для следующего вычисления функции определится в форме:
uv
, то есть
2
что  j ( x j 1 )  min  j ( x).
x* 
x *  arg min  j ( x) . Запись
xD
x j 1  arg min  j ( x) означает,
xD
xD
Отметим, что если значение константы Липшица L не известно (что
довольно часто бывает на практике), то после j шагов в алгоритме вместо
величины L можно использовать оценку
L j   j max
| f ( xi1 )  f ( xi2 ) |
i1 ,i2  j
| xi1  xi2 |
,
где  j – коэффициент осторожности,  j  1 .
Рассмотрим теперь эвристический алгоритм поиска глобального минимума
функции f (x) , в котором не требуется знание значения константы Липшица.
Алгоритм кусочно-линейной аппроксимации  8 .
Точки вычислений функции f (x) в алгоритме  8 на каждом j -ом шаге
выбираются равномерно на отрезке [a, b] :
xi( j )  a 
(i  1)(b  a)
, i  1,..., N j .
N j 1
После вычисления функции
линейная модель
S N j (x)
f (x) в этих точках строится её кусочно-
(ломаная, проходящая через точки ( xi( j ) , f ( xi( j ) ) )), см.
рис. 8. Общее число точек вычислений N j , по которым на j –м шаге строится
кусочно-линейная модель
определяется по формуле
S N j (x) ,
аппроксимирующая функцию
f (x) ,
N1  5, N j  2 N j 1  1, j  2,3,....
При этом новые точки j -ого шага, не совпадающие с точками ( j  1) -ого
шага, располагаются в серединах отрезков, образованных точками ( j  1) -ого
шага. На первом шаге ( j =1) функция вычисляется в пяти точках, на втором
( j =2) - в девяти точках, среди которых в пяти уже проведены вычисления, т.е.
дополнительно функция вычисляется только в четырёх точках и т.д.
Основной характеристикой аппроксимирующей модели S N j (x) является
число отрезков «подозрительных» на существование в них локального
минимума функции f (x) . Эти отрезки определяются следующим образом. Если
25
f ( x1( j ) )  f ( x2( j ) ) , то отрезок [ x1( j ) , x2( j ) ] включается в число «подозрительных»
отрезков. Точно так же, если f ( x N( j ) )  f ( x N( j ) ) , то [ x N , x N ] – «подозрительный»
j 1
j
j 1
j
i  {2,3,..., N j 1 } включаются в систему
отрезок. Отрезки же [ x , x ] при
( j)
«подозрительных» отрезков, если S N ( xi )  min [S N ( xi(j1) ), S N ( xi(j1) )].
( j)
i 1
( j)
i 1
j
j
j
На рис.8 при j =1 «подозрительными» отрезками являются отрезки
[ x , x 2(1) ], [ x3(1) , x5(1) ] , а при j =2 - [ x1( 2) , x3( 2) ], [ x7( 2) , x9( 2) ]
(1)
1
Рис.8
Процесс последовательного построения ломаных заканчивается, как только
достигается качественное соответствие между структурой кусочно-линейной
модели, построенной на некотором шаге, и функцией f (x) .
Считается, что такое соответствие достигнуто, если при каком-то j m раз
подряд выполнились следующие условия: число «подозрительных» отрезков
( j  k ) –го шага совпадает с числом «подозрительных» отрезков ( j  k  1) -го
шага; для каждого «подозрительного» отрезка ( j  k ) -ого шага найдётся
содержащий его «подозрительный» отрезок ( j  k  1) -го шага, k  1,..., m .
Здесь m – эвристический параметр метода. На рис. 8 изображён случай, когда
j =1, m =1. При выполнении указанных выше условий считается, что функция
f (x) имеет такое же число и расположение локальных минимумов, как и её
кусочно-линейная модель
S N j m (x) ,
построенная на ( j  m) –ом шаге. После
построения кусочно-линейной модели S N j m (x) , адекватной минимизируемой
функции (согласно выше приведённым условиям), определение приближённого
значения точки глобального минимума сводится к минимизации унимодальной
26
функции, являющейся частью f (x) на каждом из «подозрительных» отрезков,
выделенных на ( j  m) –м шаге. На рис. 8 это отрезки [ x1( 2) , x3( 2) ], [ x7( 2) , x9( 2) ] . При
этом используется алгоритм золотого сечения  4 . Таким образом, с помощью
алгоритма  8 можно определить локальные минимумы функции f (x) и выбрать
среди них тот, который обеспечивает наименьшее значение функции f (x) .
Если на стадии поиска число N оставшихся вычислений функции f (x)
достаточно велико, но ограничено, то возникает задача распределения ресурса
N по этапам вычислений с целью минимизации погрешности отыскания
наименьшего из минимумов нескольких унимодальных функций  i (x) ,
определённых на непересекающихся отрезках [ai , bi ], i  1,...,  , /9/.
Предположим, что функция  i (x) вычисляется в  i точках и известна
трудоёмкость её вычисления в точке, равная  i . Обозначим через Wi ( i )
значение критерия, оценивающего погрешность определения точки минимума
функции  i (x) и равного длине отрезка локализации точки минимума этой
функции, получающегося после её вычислений в  i точках по алгоритму
золотого сечения. Тогда
Wi ( i )   i 1 i ,   bi  ai ,
  (1  5 ) / 2, i  1,...,  .
После вычислений каждой функции  i (x) в  i точках координата
наименьшего из минимумов функций  i (x) может находиться в любом из
отрезков локализации минимума этих функций i  1,...,  . А так как отрезки
задания функций  i (x) являются непересекающимися, то в качестве критерия,
оценивающего погрешность определения координаты наименьшего из
минимумов функций  i (x) , можно принять сумму длин отрезков локализации
минимума этих функций.
Для того чтобы минимизировать данную погрешность, нужно решить
задачу

 W (
i
i 1
i
)  min
(40)
1 1   2 2  ...      N .
К ограничениям задачи (40) следует добавить условия целочисленности и
неотрицательности переменных  1 ,...,  .
От задачи (40) перейдём к более простой задаче, опуская условие
целочисленности переменных:

 
i 1
i
 i
 min
(41)
1 1   2 2  ...      N ,
 j  0, j  1,..., .
27
Задача (41) является задачей выпуклой оптимизации. Легко заметить, что
задача (41) является и регулярной задачей, т. к. выполняется условие Слейтера
/13/. Следовательно, необходимые условия оптимальности в задаче (41)
является и достаточным /13/.
Запишем регулярную функцию Лагранжа задачи (41):

L( 1 ,...,  , y )    i  i  y ( 1 1   2 2  ...      N ), i  0, i  1,...,  , y  0.
i 1
Тогда дифференциальные условия оптимальности в задаче (41) будут
иметь вид:
  i  i ln   y i  0, i  1,...,  ,


 i ( i i ln   y i )  0, i  1,...,  ,
 y (       ...     N )  0, y  0.
1 1
2 2
 

(42)
Из первого неравенства системы (42) следует, что y  0 . Тогда


i
i 1
i
N.
(43)
Разрешая первое неравенство системы (42) получим:
i 
1   i ln  
,
ln 
ln   y i 
Учитывая, что  i  0, получаем
 1   i ln  
 .
 i  max 0,
ln 
 ln   y i 
Подставляя выражения (44) в (43), получим уравнение относительно y :
 1   i ln 
 ( y )    i max 0,
ln 
ln

i 1
 y i

Функция  ( y )   при


  N .

y0 и
(44)
(45)
строго монотонно убывает при
y  [0, y ],  ( y )  0 , где
 ln 
.
y  max i
i 1,..., 
i
Следовательно,
существует единственный положительный корень
y*
уравнения (45) при любом N  0 . Тогда решение задачи (41) будет иметь вид:
 1   i ln  
 i*  max 0,
ln  *  .
ln


 y  i 
Приближенное решение задачи (40) с условием целочисленности
переменных определим следующим образом:
 i  [ i* ], i  1,..., .
Здесь, как и прежде, квадратные скобки означают то, что берётся целая
часть числа.
28
Если  i  0 или  i  1 , (понятно, что такое количество вычислений не
сократит исходный отрезок задания унимодальной функции, так как для этого
необходимо вычислить её не менее чем в двух точках), то увеличиваем ресурс
вычислений N .
Итак, в данной методической разработке рассмотрены алгоритмы поиска
минимума функций одной переменной. Приведены оценки качества их работы
для унимодальных и многоэкстремальных функций.
29
Литература
1. Стронгин Р.Г. Численные методы в многоэкстремальных задачах. –М.:
Наука, 1978.
2. Городецкий С.Ю., Гришагин В.А. Нелинейное программирование и
многоэкстремальная оптимизация. –Учебное пособие. Нижний Новгород:
Иизд-во ННГУ, 2007.
3. Батищев Д.И. Методы оптимального проектирования. –М.: Радио и связь,
1984.
4. Сухарев А.Г. Оптимальный поиск экстремума. –М.: МГУ, 1975.
5. Босс В. Лекции по математике. Т. 10: Перебор и эффективные алгоритмы.
–М.: Изд-во ЛКИ, 2008.
6. Васильев Ф.П. Численные методы решения экстремальных задач. –М.:
Наука, 1980.
7. Черноусько Ф.Л., Меликян А.А. Игровые задачи управления и поиска. –
М.: Наука, 1978.
8. Сухарев А.Г. Минимаксные алгоритмы в задачах численного анализа. –
М.: Наука, 1989.
9. Коротченко А.Г. Об одном алгоритме поиска наибольшего значения
одномерных функций //Журнал вычислительной математики и
математической физики, 1978. Т.18, №3.
10.Коротченко А.Г. О поиске минимумов нескольких унимодальных
функций //Журнал вычислительной математики и математической
физики, 1979. Т.19, №5.
11.Пиявский С.А. Один алгоритм отыскания абсолютного минимума
функции //Журнал вычислительной математики и математической
физики, 1972. Т.12, №4.
12.Коротченко А.Г., Бобков А.Н. О последовательном алгоритме поиска
максимума в классах многоэкстремальных функций, определяемых
кусочно-степенными мажорантами //Вестник ННГУ, серия Математика.
вып.1(2), Изд-во ННГУ, 2004.
13.Сухарев А.Г., Тимохов А.В., Федоров В.В. Курс методов оптимизации. –
М.: Наука, 1986.
30
Download