Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1376.pdf
Скачиваний:
15
Добавлен:
15.11.2022
Размер:
19.28 Mб
Скачать

Глава 7. ЦЕЛОЧИСЛЕННОЕ ПРОГРАММИРОВАНИЕ

Целочисленное программирование (ЦП) - это наиболее важный раз­ дел дискретного программирования. Задачи дискретного программирова­ ния отличаются от рассмотренных тем, что на переменные накладывается требование дискретности, в частном случае - целочисленности. В качестве примеров можно привести задачи раскроя (подразд. 4.11.5), о ранце, ком­ мивояжера и др.

Характерными источниками целочисленности (дискретности) явля­ ются:

1)неделимость объектов, представляемых переменными (например,

х- число рабочих или отправляемых вагонов);

2)вариантность типа “да-нет” (например, включать или нет данный пакет в портфель ценных бумаг);

3)заданность возможных значений нормативными документами (на пример, сечения проводов, диаметров труб, размеров профилей и т.п.);

4)комбинаторность (например, размещение объектов, порядок обхода объектов, упорядочение объектов);

5)логические условия (например, фиксированные затраты имеют ме­

сто только при производстве продукции).

Различают задачи полностью целочисленные/дискретные и частично целочисленные (смешанные). В последних требование целочисленности накладывается не на все переменные.

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

Далее рассмотрим только линейные целочисленные задачи.

7.1. Проблема целочисленности

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

Несмотря на линейность модели, допустимое множество целочислен-, ной задачи не является выпуклым. Так, в полностью целочисленной задаче оно представляет собой множество отдельных точек, имеющих целочис­ ленные координаты. Методы линейного программирования базируются на

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

Можно, конечно, пренебречь требованием целочисленности и использо­ вать один из методов ЛП, но тогда, за редким исключением, результат не будет целочисленным, а округление дробных значений переменных пробле­ матично. Действительно, так как оптимальное решение непрерывной задачи лежит в вершине допустимого множества, округление может привести к недопустимости. При двух дробных переменных имеется 4, а при п пере­ менных - 2" вариантов округления! Какие из них дают допустимые решения, можно определить только после проверки всех ограничений. При этом сле­ дует иметь в виду, что, во-первых, целочисленная задача может оказаться неразрешимой, несмотря на разрешимость непрерывной задачи; во-вторых, допустимость округленного решения еще не означает его оптимальность. Проиллюстрируем последний тезис известной задачей о садовнике.

По расчетам садовника требуется внести в почву комплексные удоб­ рения в количестве 107 кг. Удобрения продаются только в расфасованном

виде: 1)

мешок весом 35 кг стоит 140 руб.; 2) мешок весом 24 кг стоит

120 руб.

Необходимо найти вариант закупки удобрений с минимальными

затратами.

Запишем модель задачи:

L = 140xt + 120^2 —> min; 35*i + 24х2 > 107;

хь Х2 > 0, int (целые).

Если пренебречь целочисленностью, то легко увидеть, что оптимальным будет решение

xi = 3^j, х2 = 0.

Если округлить результат по правилам арифметики, то получим недо­ пустимое решение. Округление в большую сторону (xi = 4, хг = 0) дает допустимое решение, но является ли такое решение оптимальным? Чтобы

ответить

на

этот

вопрос, рассмотрим

все возможные

целочисленные

 

 

Таблица 7.1

решения (табл. 7.1). Прочерк в графе крите­

 

 

рия означает недопустимость.

*1

_

*2

L

Как видно из таблицы, оптимальным

3

 

0

является

решение х*= 1,

хг*= 3, которое

4

 

0

560

принципиально отличается от непрерывного:

3

 

1

540

закупать надо в основном мешки 2-го типа,

2

 

2

520

тогда как по непрерывному решению - толь­

1

 

3

500

ко 1-го типа. Кроме того, допустимое реше­

0

 

4

_

ние, полученное в результате округления хь

0

 

5

600

оказалось далеким от оптимального: затраты

 

 

 

 

в нем выше минимальных на 12 %. А

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

L = 21*1 + 1 1JC2 —> шах;

7xi + 4 х 2 < 13;

х\,х2 > 0, int.

Как и в задаче о садовнике, рассмотрим все возможные целочислен­ ные решения. При этом сначала возьмем решение Х\ = \,х 2 = 1 и решения, окружающие его (табл. 7.2). Целочисленные точки и ограничение показа­ ны на рис. 7.1.

 

 

Таблица 7.2

*1

*2

L

1

1

32

0

0

0

0

1

11

1

0

21

0

2

22

1

2

2

2

2

1

2

0

0

3

33

Из таблицы следует, что в точке (1,1) имеет место локальный экстре­ мум, а глобальный максимум достигается в точке (0, 3). В непрерывной линейной задаче любой локальный экстремум является глобальным. То, что целочисленная задача может иметь локальные экстремумы, необходи­ мо учитывать при использовании методов частичного перебора. ▲

Вряде случаев решение целочисленной задачи находят, рассматривая

еекак непрерывную. Так, если в оптимальном решении непрерывной зада­ чи нецелочисленные значения переменных велики (их порядок > 10 ), ок­ ругление до целых оправдано: возможные нарушения условий и откло­ нение от оптимальности пренебрежимо малы.

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

целочисленным.

Возьмем многогранное множество Af(B):

п

 

У QyXj i ~ м »

(7.1)

П

 

у —0, j 1,Wj

(7.2)

где все ау - фиксированные целые числа, В = (bub2,..., Ьт)ти т<п

(ранг

матрицы [а,у] равен т). Для него справедлива следующая теорема. Теорема. Для того чтобы все вершины многогранного множества

М(В) при любом целочисленном векторе В были целочисленными, необ­ ходимо и достаточно, чтобы каждый минор порядка т матрицы условий [ау] был равен либо 0, либо +1 или -1.

Если вместо равенств (7.1) множество задается неравенствами, ука­ занные в теореме значения относятся ко всем минорам матрицы [%].

Класс задач, удовлетворяющих теореме, очень узок (это транспорт­ ные задачи, задачи о назначениях и др.). Такие задачи относят к легкораз­ решимым (по Дж. Эдмондсу), так как для них существуют полиномиальные алгоритмы (время или число итераций растет полиномиально с увеличени­ ем размерности задачи). Остальные целочисленные задачи входят в класс трудноразрешимых задач (доказана NP-полнота общей целочисленной задачи).

Для решения таких задач применяются различные методы. Из точных методов можно назвать следующие:

1)методы отсечений;

2)метод ветвей и границ;

3)аддитивный метод;

4)метод построения последовательности планов;

5)модификации динамического программирования;

6)методы последовательного анализа вариантов.

Эти методы за исключением 1-го входят в группу комбинаторных ме­ тодов. Кроме точных методов имеется также большое число приближен­ ных методов.

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

7.2. Метод отсечений

Идею этого метода высказал Г. Данциг. Она заключается в преобразо­ вании невыпуклого множества целочисленной задачи в выпуклое целочис­ ленное путем отсечения от выпуклого множества непрерывной задачи частей, не содержащих целочисленных точек. Тогда использование мето­ дов ЛП гарантирует получение оптимального целочисленного решения

(при разрешимости задачи). С этой целью строится выпуклая оболочка допустимого множества целочисленной задачи. Выпуклой оболочкой не­ выпуклого множества Q называется наименьшее выпуклое множество, содержащее Q. В целочисленной задаче выпуклая оболочка может быть построена соединением крайних целочисленных точек допустимого мно­ жества гиперплоскостями. Пример построения выпуклой оболочки для задачи с двумя переменными показан на рис. 7.2. Здесь соединение край­ них точек прямыми позволило получить целочисленное многогранное множество, содержащее все допустимые решения целочисленной задачи. Без требования целочисленное™ допустимое множество данной задачи представляет собой выпуклый четырехугольник. Как видно, разность мно­ жества-четырехугольника и выпуклой оболочки не содержит целочислен­ ных решений.

Геометрически все выглядит доста­ точно просто. Но формализовать проце­ дуру построения целочисленного множес­ тва долгое время не удавалось. Первым, кто смог это сделать, был Р. Гомори. В 1958 году он предложил итерационную процедуру, по которой на каждой итера­ ции отсекается часть множества непре­ рывной задачи (НЗ), не содержащая целочисленных решений, но включающая в себя оптимальное решение НЗ, и на со­

кращенном таким способом непрерывном множестве отыскивается новое оптимальное решение одним из методов ЛП. Итерации заканчиваются, когда оптимальное решение очередной НЗ окажется целочисленным или обнаружится неразрешимость НЗ, а значит, и целочисленной задачи. При этом выпуклая оболочка может быть построена только частично.

Рассмотрим пример (рис. 7.3). Оптимальное решение НЗ, как по кри­ терию L\, так и по Li, находится в вершине А. После первого отсечения нецелочисленной части множества, содержащей точку А, появляется целочисленая вершина В. При решении зада­

чи по критерию L\ в ней будет оптимум НЗ, а значит, и исходной целочисленной задачи. Если же взять критерий Li, то оптимум НЗ окажется в вершине С, ко­ торая не является целочисленной. По­ этому потребуется еще одно отсечение, после которого будет получено оптамальное целочисленное решение в точке F. В обоих случаях выпуклая оболочка строится только частично.

Проблема состояла в получении регулярного условия, присоединение ко­ торого к ограничениям НЗ приведет к необходимому отсечению. Такое усло­ вие должно удовлетворять двум требованиям: 1) не выполняться в текущем оптимальном решении НЗ; 2) выполняться во всех допустимых целочислен­ ных решениях. Первое требование обеспечит отсечение части непрерывного множества, второе - неизменность целочисленного множества.

Гомори сумел решить эту проблему, предложив несколько вариантов получения условий отсечения. Мы покажем вывод условия отсечения, которое применяется в 1-м алгоритме Гомори.

Пусть получено оптимальное решение НЗ. Уравнение, соответствую­ щее строке оптимальной симплекс-таблицы с /-й базисной переменной, записывается следующим образом:

Xj +

~^/0>

(7-3)

 

уенебаз

 

где ада - значение базисной переменной х , (из столбца А о ); а 0- -

коэффи­

циенты при небазисных переменных (из столбцов А у).

 

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

Нецелое значение представим в виде целой и дробной частей. Целая часть числа - наибольшее целое, не превосходящее само число. Будем обозначать ее взятием исходной величины в символы L-J. Например, [_2,lJ = 2, Ll,9j = 1, L—2,1J = -3. Тогда дробную часть коэффициентов в (7.3) можно записать в виде

d/, = а у- |_а //_|>

следовательно, для нецелого щ всегда 0 < а у < 1.

Перепишем (7.3) с выделенными целыми и дробными частями коэф­ фициентов:

** + Z (LavJ + dy)х] = [a ,0J + а,0.

(7.4)

уенебаз

 

Оставим в левой части (7.4) только целые части коэффициентов, тогда, учитывая неотрицательность a v и X j, получим неравенство

*’ + Z La<yJ*y -La/oj+d«-

(7-5)

Je небаз

 

Теперь воспользуемся требованием целочисленности. При целых пе­ ременных левая часть неравенства (7.5) может принимать только целые

значения. Поэтому, если отбросить а,о, нестрогое неравенство левой и правой частей сохранится:

*;+

Е Ls_h‘ 4 a.oJ>

(7.6)

 

j€ небаз

 

в этом легко убедиться на простых примерах: 9 < 10,3; 9 < 9,75.

 

Вычтя (7.6) из равенства (7.3), получим

 

X

6-ijx) > a,о.

(7.7)

уенебаз

Это и есть искомое условие отсечения. Действительно, в оптимальном решении НЗ (как и в любом базисном) небазисные переменные равны

нулю, а а,/о> 0, следовательно, неравенство (7.7) в нем не выполняется. Поэтому добавление (7.7) к исходным условиям НЗ приведет к сужению допустимого множества за счет отсечения его части с оптимальной вер­ шиной.

Пример 7.1. Выведем условие отсечения для задачи

L - 2х\ + х2 шах; 15*1 + ЗОхг < 96; V Xj > 0, int.

Приводим неравенство к каноническому виду 15xi + ЗОхг + х3 = 96

и решаем непрерывную задачу симплекс-методом. Получаем оптимальную симплекс-таблицу:

Б а зи с

А0

А,

а 2

А3

 

А,

96

 

1

2

1

 

15

 

15

 

 

 

 

 

 

Д

192

 

0

3

2_

 

15

 

15

 

 

 

 

 

Графическое решение показано на рис. 7.4.

 

Записываем уравнение (7.3) по переменной х\:

 

Xi + 2х2+ — хз = 96

 

 

 

 

15

15'

 

 

Дробную

часть,

кроме

 

свободного

 

 

члена, имеет только коэффициент при

 

 

х3. Следуя (7.7), получаем условие

 

 

отсечения

 

 

 

 

 

 

1

. 6

 

.

,

 

 

—х3 > — или х3 > 6.

 

 

15

15

 

 

 

 

 

Очевидно, что в оптимальном решении НЗ оно не выполняется (х3 = 0). Усло­ вие отсечения можно записать и через

основные переменные. Действительно, так как х3= 96 - 15^ - 30*2, то 96 - 15*1 - 30д:2 > 6 и окончательно имеем xi + 2*2 < 6. Граница по этому ограничению показана на рис. 7.4 пунктирной линией. Легко убедиться, что все вершины усеченного множества целочисленные. А

Когда непрерывное решение имеет более одной дробной переменной, возникает вопрос выбора переменной, по которой следует строить отсече­ ние. Строгого обоснования такого выбора нет. На основе эксперименталь­ ных данных рекомендуется брать переменную с наибольшей дробной частью. Другой вопрос относится к способу учета очередного условия отсечения: его можно добавить к условиям исходной задачи и решать за­ дачу заново или после добавления продолжить симплекс-преобразования с полученного оптимального решения, которое стало недопустимым. В алгоритме Гомори применяется второй вариант как более экономичный.

Перед добавлением условие отсечения приводим к равенству

(7.8)

уенебаз

Так как небазисные переменные равны нулю, то новая дополнительная переменная х-+1 = - а (0 < 0. Поэтому рекомендуется для последующего решения применять двойственный симплекс-метод.

Таким образом, согласно 1-му алгоритму Гомори необходимо выпол­ нить следующие действия:

1.Преобразовать условия задачи так, чтобы все коэффициенты стали целыми.

2.Решить исходную задачу без учета целочисленности (НЗ) симплексметодом. Если непрерывная задача неразрешима, то зафиксировать нераз­ решимость исходной задачи и перейти к п. 9.

3.Проверить решение на целочисленность: если решение целочислен­ ное, то зафиксировать полученное оптимальное решение и перейти к п. 9.

4.Если не все переменные целые, то из оптимальной таблицы выбрать переменную с наибольшей дробной частью.

5.Выписать из симплекс-таблицы строку с выбранной базисной пере­ менной.

6.Выделить дробные части коэффициентов в полученном уравнении

изаписать условие отсечения согласно (7.7).

7.Привести условие отсечения к равенству (7.8), умножить его на -1

идобавить полученную строку к оптимальной симплекс-таблице. При этом размерность базиса увеличивается на единицу. В качестве недостаю­

щей базисной переменной принимается дополнительная переменная из новой строки.

8. Решить расширенную задачу двойственным симплекс-методом. Ес­ ли задача разрешима, перейти на 3. Иначе зафиксировать неразрешимость целочисленной задачи.

9. Конец. ▲

Гомори доказал сходимость этого алгоритма.

Примечание. Как следует из алгоритма, на каждой итерации увеличи­ вается размер таблицы (число условий) на единицу. Для ограничения раз­ мера используется такой прием. Как только дополнительная переменная какого-либо условия отсечения снова становится базисной (но уже поло­ жительной!), строка с ней удаляется из таблицы. Если велся столбец этой переменной, то он тоже удаляется. Подобное исключение не отразится на решении, так как условие удаляется после того, как становится неактив­ ным. В результате число строк не превысит п.

Пример 7.2. Применим приведенный алгоритм к задаче:

L= 2X \+ X2-> шах;

2х\ + х2> 7,5;

12*1+ 7*2^ 55;

5xi + 2х2 + х$< 18; *i, х2 > 0, целые.

Умножаем 1-е неравенство на 2 и затем приводим все условия к ра­ венствам:

4*1+ 2х2 - х з = 15;

12xi + 7х2+ х 4 = 55;

5xi + 2х2 + Х5= 18.

Решаем непрерывную задачу симплекс-методом. В табл. 7.3 представ­ лено решение НЗ (оптимальная таблица выделена двойной рамкой, строка оценок записана первой для удобства расширения таблицы).

Таблица 7.3

Базис

Ао

А ,

а 2

А з

А4

А з

Аб

А/

8 ,2 7

0

0

0

_5_

_2_

0

5 5

55

 

 

 

 

 

 

а 2

295

0

1

0

2 5

12

0

55

55

55

 

 

 

 

 

А з

4 25

0

0

1

50

20

0

55

55

55

 

 

 

 

 

А ,

80

1

0

0

10

_7_

0

55

55

55

 

 

 

 

 

А «

_ 40

0

0

0

_ 5 0

20

1

55

55

55

 

 

 

 

 

е

-

-

-

-

_5_

_2_

-

50

20

 

 

 

 

 

 

Решение содержит нецелые переменные. Наибольшую дробную часть имеет переменная хз. Выписываем соответствующую ей строку:

. 50

20

=

425

Х з + —

Х ц + ---Х 5

55 '

55

55

 

Из нее получаем 1-е условие отсечения

 

55

55

55

 

которое приводим к равенству

,

 

 

50

20

40

 

55

*4“ —

Х 5 +

Х 6 = -

 

 

55

Это равенство добавляем к оптимальной симплекс-таблице решенной НЗ с включением в число базисных вектора Ав (см. табл. 7.3). К расширенной таблице применяем двойственный метод (направляющей является новая строка, направляющий столбец находится по 0). Полученное решение, кото­ рое называют оптимальным относительно первого отсечения, приведено в табл. 7.4 (см. часть в двойной рамке). Оно также является нецелочисленным.

Таблица 7.4

Базис

Ао

А ,

а 2

А з

а 4

А 5

А*

а 7

4 ,

8,2

0

0

0

0

0

_2_

0

 

20

 

 

 

 

 

 

 

 

а 2

116

0

1

0

1

0

12

0

20

20

 

 

 

 

 

 

 

А з

140

0

0

1

0

0

1

0

20

 

 

 

 

10

 

7

 

А ,

24

1

0

0

0

0

20

20

20

 

 

 

 

 

 

А 5

40

0

0

0

50

1

55

0

20

20

20

 

 

 

 

 

 

а 7

J16

0

0

0

0

0

8

1

"20

2 0

 

 

 

 

 

 

 

Новое отсечение строим по переменной х2, имеющей наибольшую дробную часть. Выписываем уравнение

12 = Пб

*2 + *4 ~

20 6 20

из него следует условие отсечения

20

20

которое приводим к равенству

7.2. М етод отсечений

■■ваааа^вввввае^н

Это равенство добавляем к последней симплекс-таблице (см. табл. 7.4) и применяем двойственный симплекс-метод.

Полученное решение, оптимальное относительно второго отсечения, дано в табл. 7.5. Очевидно, что оно не удовлетворяет требованию целочисленности.

Базис

Ао

А,

а 2

Аз

 

8,0

0

0

0

а 2

56

0

1

0

8

 

 

 

 

Аз

40

0

0

1

8

 

 

 

 

А!

4

1

0

0

8

 

 

 

 

As

60

0

0

0

8

 

 

 

 

— Аб.__

16

_____ . . . . .

0

0

Т

0

 

 

"

 

 

А*

4

0

0

 

0

 

8

 

 

А4

0

1

0

10

20

50

20

0 1 1оо

Таблица 7.5

As

А«

А7

А*

0

0

2

0

8

 

 

 

0

0

12

0

8

 

 

 

0

0

20

0

8

 

 

 

0

0

7

0

8

 

 

 

1

_ 55

0

0

8

 

 

 

0

1

20

0

“IT ""

 

"

 

0

0

7

1

8

 

 

 

Так как в базисное решение вернулась переменная *6, что означает строгое выполнение 1-го условия отсечения, соответствующие ей строка и столбец удаляются (выделены пунктирной линией).

Теперь отсечение строим по переменной Х \\

10 ^ 7

 

4

4

7

. 4

4

. 7

 

4

Х \------ *4+-*7 = -

=> -* 4 + -* 7 > -

1 х' +Г

7~ Хг

8'

1 20

8

8

8

8

8

Добавляем полученное уравнение отсечения к табл. 7.5

и, используя снова

двойственный метод, находим оптимальное решение расширенной НЗ (табл. 7.6). Это решение целочисленное и, следовательно, оно является

Таблица 7.6

оптимальным для исходной целочисленной задачи. ▲

Из опыта применения рассмотренного алгоритма

Базис

Ао

можно сделать некоторые выводы. Хотя Гомори теоре­

L

8,0

а 2

6

тически доказал, что алгоритм сходится за конечное

Аз

5

число шагов, оценки необходимого числа итераций не

А,

1

существует. К сожалению, скорость сходимости алго­

As

5

ритма очень низкая. Встречались примеры с 10—15 пере­

А4

1

менными, решение которых требовало более тысячи

 

 

итераций. Попытка вводить отсечение сразу по нескольким переменным не дает ощутимого эффекта.

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

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

Для других вариантов вывода условий отсечения сходимость постро­ енных на них алгоритмов не доказана и отмеченные недостатки в основ­ ном не устраняются. Эти замечания относятся и к алгоритму отсечения для частично целочисленных задач.

Вряде пакетов прикладных программ метод отсечений применяется

вкомбинации с другими, точными или приближенными, методами.

7.3. Метод ветвей и границ

Процедура решения задач ЦП, которую теперь называют методом ветвей и границ, была предложена A. Land, A. Doig1. Это, скорее, даже не метод, а концепция или процедурная оболочка, на основе которой стали разрабатывать алгоритмы решения целочисленных задач различной при­ роды. Предложенная идея получила широкое признание после появления первого точного алгоритма решения задачи коммивояжера, построенного по схеме ветвей и границ (Литтл с соавторами, 1963). Метод можно при­ менять как к полностью, так и к частично целочисленным задачам.

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

Метод заключается в построении дерева задач, корнем которого явля­ ется исходная задача, возможно без условия целочисленности (НЗ). Ниже­ лежащие задачи порождаются вышележащими так, что их допустимые множества (ДМ) являются непересекающимися подмножествами ДМ вы­ шележащей задачи. Рост дерева происходит за счет перспективных ветвей. Перспективность определяется по оценке критерия терминальной задачи ветви К и по рекорду Z. Оценка V - это значение критерия, заведомо не

1 Land А.Н. An automatic method of solving discrete programming problems / A.H. Land, A.G. Doig // Econometrica. - 1960. - № 28.

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

Рассмотрим метод применительно к линейной целочисленной задаче. Хотя нет каких-либо ограничений на число задач, непосредственно порож­ даемых перспективной, в алгоритмах, как правило, используется разбиение на две задачи, то есть строится бинарное дерево (рис. 7.5). При этом для

целочисленных множеств выполняются соотношения

 

 

 

 

1Щ = А

Д П А = 0 , i * j .

(7.9)

 

 

 

/

 

/

 

Очевидно, что если, например, V22

 

окажется хуже рекорда или D22= 0 ,

 

правая ветвь

обрывается

(говорят

 

также, что она прозондирована).

 

Если же оценка V22 будет лучше Z,

 

производится

ветвление: множество

 

Z>22 разбивается на два подмно­

 

жества. Решение завершится,

когда

 

все ветви будут прозондированы.

 

Вид оценки зависит от направ­

 

ленности

критерия: при максимиза­

 

ции используется

верхняя

оценка,

 

при минимизации - нижняя. После­

 

дующее

изложение

метода

будет

 

относиться к задаче на максимум.

Для алгоритмической реализации схемы ветвей и границ необходимо решить два основополагающих вопроса:

1) каким образом разбивать перспективное множество на подмноже­

ства; 2) как определять верхнюю оценку критерия на рассматриваемом

множестве?

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

Пусть известен диапазон возможных значенийj -й переменной

О <xj<dj,

которая в непрерывном оптимальном решении оказалась нецелочисленной’ и равной х / Тогда целочисленное значение этой переменной может дос­

тигаться либо в интервале 0 < Xj <[*у J, либо в интервале [*у J + 1 ^Xj й dj,

где - целая часть *у (рис. 7.6).

0

L *;J

V

dj

V

_ _ f Xi !*

)

ч

 

 

 

Df

 

D?

 

 

г г

 

 

 

Рис. 7.6

 

 

Это соответствует разбиению непрерывного множества I f на два непересекающихся подмножества D? и D", объединение которых не рав­ но I f . В то же время такое разбиение целочисленного множества удовлетворяет соотношениям (7.9). При этом целочисленные множества, как исходное, так и порожденные, включены в соответствующие непре­ рывные множества. Следовательно, поиск целочисленного решения на непрерывном множестве даст тот же результат, что и на целочисленном. Легко увидеть, что приведенное выделение подынтервалов по одной пере­ менной приводит к разбиению исходного множества на два подмножества при любом числе переменных.

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

Выбор начального значения рекорда зависит от ситуации:

если известно какое-либо целочисленное значение, то рекорд при­ нимается равным критерию в этом решении;

при положительности всех коэффициентов критерия можно взять нулевое значение рекорда;

в иных случаях за начальное значение рекорда берется (М - максимально представимое в компьютере число).

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

Таким образом, базовый алгоритм, реализующий метод ветвей и гра­ ниц, включает в себя следующие шаги:

1.Задается начальное значение рекорда и в список задач помещается исходная задача без требования целочисленности переменных.

2.Анализируется список задач: если он пуст, то переходим на шаг 6. Иначе выбирается одна из задач с удалением ее из списка.

3. Выбранная задача решается одним из методов линейного програм­ мирования. Если задача неразрешима или оптимальное значение критерия Z* < Z, ветвь обрывается (задача прозондирована). Переход на шаг 2.

4.Полученное решение анализируется на целочисленность. Если ре­ шение целочисленное, оно фиксируется, рекорду присваивается оптималь­ ное значение критерия решенной непрерывной задачи (Z: = L \ ветвь обрывается и осуществляется переход на шаг 2.

5.Выбирается одна из переменных, имеющих нецелочисленные зна­ чения. По ней производится ветвление: порождаются две задачи, одна об­

разуется присоединением к решенной родительской) задаче условия X] ^ |Х_1> другая - добавлением к родительской ограничения ху> [x’J + 1.

Эти задачи заносятся в список задач. Переход на шаг 2.

6. Вывод результатов (если значение рекорда больше начального, полу­ чено оптимальное решение исходной задачи, иначе задача неразрешима). ▲

Приведенный алгоритм является базовым, так как не включает в себя однозначных правил выбора задачи из списка и ветвящей переменной. Для частично целочисленных задач при выборе переменной для ветвления исключаются непрерывные переменные.

Пример 7.3. Применим алгоритм ветвей и границ к задаче:

L = 9х\ + 5x2 —> шах; 3xi - 6х2 > 1;

5xi + 2х2 ^ 28; V Ху > 0, целые.

Отбрасывая условие целочисленности, получаем непрерывную зада­ чу, которую помещаем в список задач. Так как коэффициенты критерия положительны, начальное значение рекорда принимаем равным нулю. Берем из списка единственную задачу и решаем ее. Получаем оптимальное решение в вершине А (рис. 7.7): х /= 4,72; х2*= 2,19 Ветвление произво­ дим по переменной х\. Добавляя к решенной задаче ограничение Х] < 4, образуем задачу 2, а добавление Х)> 5 дает задачу 3. Допустимые множества новых задач показаны на рис. 7.7. Эти задачи помещаем в список задач. Решение задачи 2 достигается в точке В, а задачи 3 - в С. Весь ход решения исходной задачи представлен в виде дерева решений на рис. 7.10. Порядок решения задач из списка отражает счетчик итераций к. На 3-й итерации (задача 4) получено целочисленное Х2 решение со значением критерия 41 (точка

D на рис. 7.8). Поэтому изменяется рекорд:

Z=41. Задача 6 имеет нецелочисленное решение (вершина Е на рис. 7.9), зада­ ча 8 - целочисленное решение в точке F. В результате после 7-й итерации рекорд становится равным 50.

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

Из приведенного дерева решений видно, что число задач в списке могло бьггь меньше при другом порядке решения задач. Действительно, если бы сначала были решены задачи правой ветви с рекордом Z = 50, то после решения задачи 2 не произошло бы ветвления, так как верхняя оцен­ ка оказалась бы ниже рекорда (V = L*= 45,17 < 50).

Естественно возникает вопрос: а как на числе задач и дереве решений может отразиться выбор другой переменной для ветвления? Так, в нашем примере если после 1-й итерации произвести ветвление по переменной х2> то получим дерево, показанное на рис. 7.11. Оно содержит на две задачи больше, чем на рис. 7.10. Конечно, оно может быть также другим при ином порядке решения задач.

Таким образом, число решаемых задач существенно зависит от выбо­ ра задачи из списка и переменной для ветвления.

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

1)неразрешимость задачи;

2)задача имеет целочисленное решение;

3)верхняя оценка не больше рекорда.

Теперь сделаем ряд замечаний относительно метода ветвей и границ. Как уже отмечалось, в базовом алгоритме не оговариваются правила выбо­ ра задачи и переменной. В большинстве программных реализаций метода используются правила, основанные на эвристических оценках перспектив­ ности задач и переменных. В некоторых пакетах, например, “ЛП в АСУ” предлагается несколько вариантов управления процессом решения: от автоматического до ручного, в котором пользователь может сам выбирать как задачу, так и переменную для ветвления. Кроме того, алгоритмы, осно­ ванные на методе ветвей и границ, могут существенно отличаться в связи с учетом особенностей класса задач. Например, для задачи коммивояжера определение оценки значительно упрощено (не требуется решать непре­ рывную линейную задачу).

Метод ветвей и границ имеет преимущества в сравнении с методом отсечений:

накопление ошибок менее значительное, так как решение идет по разным ветвям;

при принудительной остановке процесса решения высока вероят­ ность получения целочисленного результата, но без установления его оп­ тимальности;

при решении непрерывных задач размеры симплекс-таблиц не уве­ личиваются.

Недостатки метода ветвей и границ [8]:

• Нельзя оценить число задач, которые придется решать. Чем ближе снизу начальное значение рекорда и сверху оценка критерия задачи к ис­ комому оптимальному значению критерия, тем меньше вершин будет иметь дерево решений, а значит, и затрат ресурсов. Однако завышение начального рекорда может привести к неразрешимости задачи, что всегда следует иметь в виду.

• Отсутствует признак оптимальности. Оптимальное решение может быть получено задолго до останова алгоритма, но обнаружить это в общем случае нельзя. Оптимальность устанавливается только по исчерпании спи­ ска задач.

Очевидно, что эффективность метода повышается с уменьшением диапазонов значений переменных и числа нецелых переменных в решении первой непрерывной задачи.

7.4. Аддитивный алгоритм

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

Модель задачи должна быть представлена в стандартной форме. Далее

будем рассматривать алгоритм применительно к следующей задаче:

 

П

 

(7.10)

L =Y*cj xj -*пнп;

7=1

__

 

п

(7.11)

^Laijxj

-bjj i-l,nr,

7=1

 

 

W

0

(7.12)

4

= i

 

При этом Vc, > 0, что означает выполнение признака оптимальности сим­ плекс-метода в начальном решении (в задачах на минимум). Действитель­ но, так как коэффициенты дополнительных переменных с,= 0, то Zj- О и Дj=ZjCj < 0. Поэтому, если еще и V6, > 0, то сразу имеем оптимальное решение задачи: все п исходных переменных и критерий равны нулю. Од­ нако обычно не все Ь, положительны, и нулевое начальное решение оказы­ вается недопустимым.

Если в критерии есть отрицательные коэффициенты, то модель преоб­ разуется: переменные х* с с*< 0 в модели заменяются на х*= 1 - х'к и обра­ зующаяся в критерии константа отбрасывается (после получения решения она добавляется к оптимальному значению критерия). Если есть равенства, они преобразуются в неравенства. Неравенства > преобразуются в нера­ венства < . Таким образом, любая исходная модель может быть приведена к виду (7.10)—(7.12) с Vc7 > 0.

Представим условия (7.11) в канонической форме:

П

_______

J^ayXj +S, =bj;

/= 1, w,

7=1

где Si - дополнительные переменные. Тогда начальное решение очевидно: V*y= 0 и Sj =bi. Как уже говорилось, если V<S,£0, то это решение опти­ мально. В противном случае осуществляется частичный перебор решений. Для пояснения алгоритма воспользуемся табл. 7.7, которая аналогична симплексной.

Таблица 7.7

Ао (реш ение)

Х \

Хг

• • •

Х п

1

5?

 

0

 

012

. . .

01л

0

 

Ьг

021

022

 

02я

0

1

• . •

0

• • •

• • *

 

. . .

. . .

. . .

. . .

. . .

. . .

Ът

0да1

0да2

. . .

0тл

0

0

. . .

1

L

С1

сг

. . .

Сп

0

0

. . .

0

В алгоритме переменные разделяются на фиксированные и свобод­ ные. Переменную, которой присвоено определенное значение, называют фиксированной. Значение свободной переменной можно изменять. Основ­ ным объектом алгоритма является частичное решение - это решение, в котором часть переменных фиксирована. Оно описывается упорядочен­ ным множеством индексов фиксированных переменных. При этом индекс переменных, равных нулю, записывается со знаком “минус”. Например, если на /-й итерации фиксированы хг = 0, хь = 1, то частичное решение пред­ ставляется как множество 1,= {-2,4}.

Первоначальное частичное множество всегда пустое (1о = 0 ), а значение рекорда z = оо. Алгоритм состоит из четырех проверок, которые выполня­ ются для того, чтобы определить наличие перспективных свободных пере­ менных. Если такая переменная находится, то, изменяя ее значение, можно улучшить результат. По умолчанию принято, что свободные переменные находятся на нижнем уровне (равны нулю). Частичное решение считается прозондированным, если оно не может привести к допустимому решению и уменьшению значения критерия.

Пусть имеем частичное решение I, с критерием L' и вектором допол­ нительных переменных S'= (5/, Si, ..., S„). К нему применяются следую­ щие проверки:

1. Для каждой свободной переменной хг проверяются коэффициенты О/г в строках с S/< 0 (см. табл. 7.7). Если во всех таких строках а;г> 0, пе­ ременная хг исключается, так как присвоение ей значения 1 не приведет

кположительности хотя бы одной из рассматриваемых Si.

2.Анализируется возможность улучшения критерия. Если для сво­ бодной переменной хг выполняется неравенство Cr+ Z/ ^ z, то изменение ее

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

Оставшиеся после этих проверок свободные переменные образуют множество Р,. Если оно пустое, то текущее частичное решение не перспек­ тивно, то есть считается прозондированным.

3. Выясняется возможность получения допустимого решения на осно­ ве данного частичного. В строках с S,' < 0 проверяется условие

]Tmm(o,<ty)>S/. (7.14) jzP,

Если оно выполняется хотя бы для одной строки, все переменные из Р, исключаются, так как увеличение значения даже всех этих переменных до 1 не обеспечит допустимость решения (неотрицательности вектора S).

Вэтом случае решение I, считается прозондированным (ветвь обрывается).

4.Если условия (7.14) не выполняются, то есть Р, * 0 , то ветвь продолжается. Для получения нового частичного решения из I, вычисля­ ются оценки каждой переменной из Р,:

v '= £ г ш п (о ,5 '-^ ).

(7.15)

/

Оценка дает суммарную величину недопустимости, остающейся после присвоения переменной х,е Р, значения 1. Как видно из (7.15), отрицатель­ ная оценка свидетельствует о наличии недопустимости. Из полученных оценок определяется максимальная:

maxv'=v*.

(7.16)

Очевидно, что если v/= 0, то увеличение х* до 1 дает допустимое ре­ шение с меньшим значением критерия. Поэтому рекорду z присваивается значение L'+ Ск, а новое частичное решение 1,+)= {1„ к} считается прозон­ дированным. Если же v*'< 0, то допустимое решение не достигнуто и час­ тичное решение I^i = {I,, к} подвергается всем проверкам. Если в результате проверок оно окажется прозондированным, новое частичное решение по­ лучают из I,+i изменением знака индекса введенной переменной: 1*2= {I/, - к}, то есть фиксацией х* со значением 0. ▲

В общем случае прозондированное частичное решение может содер­ жать положительные и отрицательные индексы. Для получения нового час­ тичного решения изменяется знак самого правого положительного индекса, а стоящие за ним индексы отбрасываются. Так из решения {2, -1, -3, 5, -7, -6} следует частичное решение (2, -1, -3, -5}. Если представить весь процесс решения в виде дерева (подобно методу ветвей и границ), то отбра­ сывание / последних индексов означает возврат на / уровней вверх. Услови­ ем окончания работы аддитивного алгоритма является отсутствие' положительных индексов в частичном решении.

Пример 7.4 (Таха). Решим с помощью аддитивного алгоритма сле­ дующую задачу:

L = -3*i - 2*2+ 5*з + 2*4 - 3*5 —> min; *i + *2 + *з + 2*4 + *5 < 4;

 

 

7*i + 3*з- 4*4 + 3*5 < 8;

 

 

 

 

 

1

l*i - 6*2 + 3*4 3*5 > 3;

 

 

Так как С\, Сг и С5 отрицательные, производим замены:

 

 

 

 

*, = 1- * ), j=

1,2,5.

 

 

После простых преобразований модель принимает вид:

 

 

 

L\ = 3*,' + 2*2 + 5*з + 2*4 + 3*5

—►min;

 

 

 

 

- * j

- *2 + *3 + 2*4 — * j <

1;

 

 

 

 

-7 х,' + З*3- 4*4- 3 *5 < - 2 ;

 

 

 

 

1 1 * ,'- 6 *2 - 3 * 4 - 3 * 5 < -1 .

 

 

Приводим условия к равенствам:

 

 

 

 

 

 

 

 

- * ,' - *2 + * 3 + 2 *4 - *5 + S ] = 1 ;

 

 

 

 

-7*,' + 3*з —4*4 —3*5

+ S2= -2;

 

 

 

 

1 1 * ,'- 6 * 2 -

3*4 — 3 *5

+ S3=

- 1 .

 

 

Полученную модель представляем в табличном виде (табл. 7.8).

 

 

 

 

 

 

 

 

 

Таблица 7.8

Ао

*1

4

*3

*4

 

*5

5,

$2

 

1

-1

-1

1

2

 

-1

1

 

 

-2

-7

0

3

-4

 

-3

 

1

 

-1

11

—6

0

-3

 

-3

 

 

1

0

3

2

5

2

 

3

0

0

0

В исходном состоянии все переменные свободны и равны нулю. Поэтому

начальное частичное решение 1*0)= 0 , z -

00, 1,(0)= О, S(0)= (1,-2, -1).

 

Так

как есть

отрицательные

Sif

начальное

решение

неоптимальное

и необходимо проводить проверки (ниже они обозначены соответствующи­ ми им номерами).

Первая итерация.

1.Поскольку Va,3 > 0, переменная *з исключается.

2.Для всех переменных С;+ Z,i(0)< z, поэтому не отвергается ни одна

переменная.

3. Ро = {1,2,4,5} - множество свободных переменных, которые прошли через первые две проверки. Для строк с отрицательными S, по табл. 7.8 про­ веряем условие (7.14):

/ = 2: 2 > Ц 0 ,а 2уJ = -7 + 0 - 4 - 3= -14 < 52 = -2;

/ = 3: Х тЦ о,пзу) = 0 - 6 - 3 - 3 = -12<5з = -1.

Ж

Условия не выполняются, и все переменные остаются.

4.

По формуле (7.15) вычисляем:

V? = min(0,1 +1) + min(0, -2+7) + min(0, -1-11) = 0 + 0 + (-12) = -12;

 

 

аналогично v2° = 0 + (-2) + 0 = - 2 ,

 

 

v4° = - l + 0 + 0 = - 1,

 

 

v® = 0 + 0 + 0 = 0 .

Находим шах v®= = 0 . Отсюда следует, что к = 5 и новое частичное

решение с

х 5' = 1 является допустимым. В итоге имеем: 1!= {5}, L{ = 3,

z = L\ =3

и S{= (2 , 1, 2), так как S \= S \- a \5= 1 —(—1) = 2, S2 = - а2$=

= - 2 -

(-3) = 1, 5з = S3 - «35 = -1 - (-3) = 2 , то есть действительно все S(> 0,

что означает допустимость решения. Вывод: решение li прозондировано. Очередное частичное решение получается изменением знака индекса в I). Вторая итерация. 12= {-5}, l\= 0, S2= (1, -2, - 1), z = 3.

1. Исключается х3

2 . Исключается х{, так как Ci + Z,2=0 + 3 = z .

3-^2= {2,4}.

/= 2: 0 - 4 = -4 < -2;

/= 4: - 6 - 3 = -9 < -1.

4.v2 = 0 + (-2) + 0= - 2, v4 = -1 + 0 + 0 = -1, шах v? = v2= - 1. Следов тельно, к = 4 и новое решение 1з= {-5,4} недопустимое.

Третья итерация. 1з= {-5, 4}, L\ = С4 = 2, S3= ( - 1, 2, 2 ), z = 3. Сво­

бодными являются первые три переменные. 1. Исключается *з.

2. Исключаются х{ и х \ ,так как Ц + С\ = 5 > 3 и Ь\ + С2 = 4 > 3.

Pi = 0 , значит, решение 1з прозондировано.

Так как есть частичное решение 1з с положительным индеком, образу­ ем из него решение 14, заменив 4 на -4.

Четвертая итерация. 14 = {-5, - 4 }, L\3 =0, S4= {1, - 2, -1}, z = 3.

1.Исключается х3.

2.Исключается х{.

3 . Р4={2 }. г = 2 : 0 > - 2 , следовательно, х'2 ис­ ключается и 14 прозондировано (оно не может при­ вести к допустимому решению).

Больше нет частичных решений с положительны­ ми индексами, из чего заключаем, что итерации за­

вершены и

оптимальным является решение

1ь

х \= х\ - хг -

Х4 = 0, *5 = 1. Возвращаясь к исходным

переменным, получаем х\ 2 = 1, х3 4 - *5 -

и,

£ ’=5.

Дерево решений рассмотренного примера по­ казано на рис. 7.12. Здесь хорошо видна аналогия с методом ветвей и границ.

7.5.Другие методы

В1968 году В. Комлик и В. Емеличев2 предложили метод построения последовательности планов, относящийся к классу точных методов. Суть метода в следующем. Исходная линейная целочисленная задача максими­ зации с т условиями заменяется задачей с одним условием (расширенная задача). Для определения этого условия решается т задач, каждая с одним условием. Находится минимум из т оптимальных значений критериев min £/*= L,\ Задача t берется в качестве расширенной (допустимое множе­ ство исходной задачи является ее подмножеством). Если оптимальный план этой задачи не является допустимым для исходной, он удаляется из допустимого множества расширенной задачи и она решается вновь. Новый оптимальный план снова проверяется на допустимость и удаляется при недопустимости. Так строится последовательность невозрастающих (по критерию) планов. Решение завершается, как только очередной план рас­ ширенной задачи окажется допустимым для исходной, а следовательно, он будет ее оптимальным решением. Для общей задачи целочисленного про­ граммирования решение расширенной задачи рекомендуется искать мето­ дом динамического программирования.

Точные методы целочисленного программирования отличаются большой трудоемкостью, причем с ростом числа переменных она возрас­ тает экспоненциально. Поэтому они применяются для задач до средней размерности. Практически решаются общие задачи с несколькими сотня­ ми переменных, а специальные задачи (особые свойства, булевые пере­ менные) - с 1-2 тысячами переменных. При этом в более “мощных” алгоритмах метод ветвей и границ сочетается с методом отсечений. По­ следний применяется при решении подзадач как способ уточнения верхней оценки: отсечения проводятся только до тех пор, пока изменяется крите­ рий. Для ускорения сходимости процедуры отсечений или упрощения оп­ ределения верхней границы в методе ветвей и границ могут использо­ ваться обобщенные ограничения (образуются суммированием всех или части ограничений задачи).

Для решения задач средней и большой размерности применяют приближенные методы. Класс приближенных методов весьма обширен. Во многих из них используются идеи точных методов, модифицирован­ ные для поиска приближенного решения. Значительную группу состав­ ляют методы, основанные на эвристиках - правилах, не имеющих строгого обоснования, но отвечающих здравому смыслу (представлениях о свойствах оптимального решения с учетом специфики задачи). Такие

Комлик В.И. Об одной задаче целочисленного программирования / В.И. Комлик, В.А. Емеличев //Вести АН БССР,- 1968,-№ 4.

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

В методе вектора спада (И.В. Сергиенко) локальность решения про­ веряется непосредственно. Вектор спада минимизируемого критерия - это векторная функция от х относительно окрестности радиуса г > О (замкнутого шара) с центром в точке х. Размерность вектора спада равна числу целочисленных точек в шаре без х. Его компоненты характеризу­ ют поведение критерия при отклонении от х. Они подобны относитель­ ным оценкам в симплекс-методе, но вычисляются для целочисленных точек в шаре. Если все компоненты вектора неотрицательны, то теку­ щая точка х является локальным минимумом. В этом случае радиус шара увеличивается и вектор спада пересчитывается. Последовательность радиусов Г\< гг< ...< гт и начальная точка задаются априорно. Если не­ которая компонента показывает улучшение решения, то осуществляется переход в лучшую точку, которая принимается за текущую, и вектор спада вычисляется относительно этой точки для шара без изменения радиуса. Если установлено, что исследуемая точка является локальным минимумом на шаре с максимальным радиусом, она принимается за решение задачи. Характеристики этого метода сильно зависят от спосо­ ба вычисления вектора спада и предварительно выбираемых значений параметров алгоритма.

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

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

7.6. Задания для самостоятельной работы

Решить задачи методом ветвей и границ. Корневую задачу решить симплекс-методом, остальные —графически. Построить дерево решений.

№ 1

L = lx\ + 4x2 -+ ш ах

№ 2

L - 2х\ + Зхг - » m in

 

4х| + * 2 ^ 14

 

7xi + 20х2 ^

140

 

Эх, +

2х2 £ 12

 

2xi + х г ^

18

 

Ух* £

0, цел.

 

V xj 1 0, цел.

№ 3

L = 6xi + 4x2 m in

№ 4

L = 6xi + 9x2 -+ m ax

 

4xi + 2x2 ^ 7

 

5xi + 7x2 ^ 35

 

X | - Х 2 й 1

 

4xi +

9х 2 £

36

 

V x j £ 0, цел.

 

V x j £

0, цел.

№5

I =4xi + 4^2 ~+ max

№6

L = 2xi + 7x 2 -> шах

 

3xi + 2x2 й 10

 

4xi + 5x2 < 20

 

Xi + 2х2 < 9

 

- X | + 2X2 ^ 1

 

Vxj £ 0, цел.

 

Vxj > 0, цел.

№7

L - 6xi +9хг max

№8

L = -2 x i -

ЗХ2 -> min

 

8xi + 18x2 ^ 72

 

5xj + 7x2 ^ 35

 

5xi + 7хг

£ 35

 

4xi + 9X2 £ 36

 

Vxj > 0, цел.

 

V xj't 0, цел.

№9

L = 9 xi+ 12хг -> max

№ 10

£ =X | +X 2 -> min

 

14xi+ 9х2 < 51

 

2xi + 4x2 ^ 7

 

- 6X1 + 3X2 й \

 

10xi + ЗХ2 к 15

 

Vxj >0, цел.

 

Vxj £ 0, цел.

№11

L = 6*i + 8*2 -> max

№ 12

L = 9 x i+

12x2 -> max

 

- 12xi + 6*2 £ 1

 

- 12xi

+ 6x 2 й 2

 

14*i + 9*2 ^ 51

 

14x, + 9 X 2 < 5 1

 

V*j > 0, цел.

 

Vxj > 0, цел.

№13

L = 14xi + 8x2 -> max

№ 14

L = 2xi + 6x 2 -+ max

 

6xj + 4x2 <24

 

10X1 + 11X 2*110

 

4xi + x 2 < 1 4

 

- xi + 2x2 2 7

 

Vxj >0, цел.

 

Vxj > 0, цел.

№15

L =4xi + 6x2 -+ max

№ 16

L = 6x 1 + 8x2 -+ max

 

10xi + 14x2^70

 

6X| -3X2 ^ - 1

 

4xi + 9x2 £ 36

 

14xi + 9 X2 < 5 1

 

Vxj £ 0, цел.

 

Vxj > 0, цел.

№17

L =JCI + х г

-> max

№18

L = 2xi + 7x2 max

 

2 x \ + 5 x 2

£ 16

 

- 2xi + 4x2 ^ 2

 

6x 1 + 5 x i

< 27

 

4xi + 5x2 ^ 20

 

V*j > 0, цел.

 

Vxj > 0, цел.

№19

L= x \ + x 2 - > max

№20

L = 4xi + 14X2 -> max

 

4xj + 5x2 < 18

 

8x 1 + 10x2 ^ 40

 

- x , + 2x2 ^ 1

 

- 2xi + 4X2 <1 2

 

Vxj > 0, цел.

 

Vxj > 0, цел.

№21

L = 3xi + ЗХ2 -> min

№22

£ = xi + x2 -> max

 

4xi + 8x2 ^ 14

 

Xi + x2 < 7

 

10xi + 3x2 ^ 15

 

2xi + 11x2 ^ 38

 

Vxj > 0, цел.

 

4xi -5x2 ^ 5

 

 

 

 

Vxj S 0, цел.

Глава 8 . НЕЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ

8 .1. Характеристика задач

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

В общем случае задача математического программирования записы­ вается в виде:

/(х ) —> max(min);

 

Ф((х)< (> )0,

/ = 1,т,; •

(8.1)

фДх) = 0,

к =\,т2.

 

Если хотя бы одна функция в модели (8.1) нелинейна, имеем задачу нелинейного программирования (НП). Размерность задачи характеризуется размерностью вектора переменных п и числом условий гп\+т2- Однако сложность задачи определяется не столько размерностью, сколько свойст­ вами функций цели и ограничений.

Разнообразие задач НП очень велико. Универсальных методов реше­ ния таких задач не существует. Имеется весьма ограниченное число точ­ ных методов и намного больше приближенных.

Наиболее развиты методы решения задач выпуклого программирова­ ния. К этому классу относятся задачи НП с выпуклым допустимым множе­ ством и выпуклой целевой функцией при минимизации или вогнутой при максимизации. Допустимое множество выпуклое, если все функции \\fk

линейные и ср,- выпуклы при неравенстве < или вогнуты при >. Например,

условие Xi + х \ < г2 порождает выпуклое множество, пересечение которого с прямой Х\ +хг = 0 дает тоже выпуклое множество. Очевидно, что задачи ЛП относятся к этому классу. Главная особенность задач выпуклого про­ граммирования в том, что они унимодальны, то есть любой их локальный оптимум является глобальным. Для ряда задач выпуклого программирова­ ния с дифференцируемыми функциями разработаны точные методы. Наи­ большие сложности возникают при решении многоэкстремальных задач, которые по определению не относятся к классу выпуклых.

Важный класс НП составляют задачи квадратичного программирова­ ния (КП). В них целевая функция представляет собой сумму линейной и квадратичной форм, а все условия линейные. При выпуклости (вогнуто­ сти) квадратичной формы они являются частным случаем задач выпуклого программирования.

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

К линейным сводятся также задачи дробно-линейного программирова­ ния. Они отличаются от линейных только дробной целевой функцией, чис­ литель и знаменатель которой - линейные функции.

8.2. Условия оптимальности

Важным свойством задач НП является дифференцируемость функций критерия и ограничений. Для таких задач получены условия оптимально­ сти, на основе которых строится ряд методов НП.

Пусть дана задача в виде

/ (х) -» шах;

 

 

Ф,(х)>0,

/ = 1,/я,;

 

(8.2)

\|/*(х) = 0,

-------- г

к = 1,т2;

 

х > 0 .

J

 

Обобщенный метод множителей Лагранжа применим и к условиямнеравенствам. Запишем регулярную функцию Лагранжа для задачи (8.2):

F(X, А) =Д Х ) + £

X/Ф/ (X) + 5 Хку* (X).

(8.3)

(=1

к=1

 

В теории НП показано, что эта функция имеет седловую точку (Х*,А*) с максимумом по X и минимумом по Л:

F(X, А*) <F(X*, А*) <ДХ*, Л).

(8.4)

Поэтому задача (8.2) сводится к отысканию седловой точки функции (8.3). Теорема. Пусть /, ф, и у* - дифференцируемые функции и справедли­ во свойство Слейтера (то есть найдутся такие Х еД что неравенства ф/ бу­

дут строгими), a ДХ, А) - соответствующая функция Лагранжа. Тогда для того чтобы вектор X* являлся решением общей задачи максимизации (8 .2 ), необходимо выполнение условий:

поХ

 

 

 

dF

,

j = \,m

(8.5)

< 0

dXj x = x*

A = A*

dF

*

 

dXj

u ** *

II о

 

A=A*

 

по А

j - 1,и;

VX* > 0;

(8 .6)

typ;(X*) = 0,

/ = 1,да„ V \ > 0 ;

(8.8)

Х*Л (Х*) = 0,

к = 1,т2.

(8.9)

Приведенные условия оптимальности называются условиями КунаТаккера. Опуская строгое доказательство, приведем логическое обоснова­ ние выражений (8.5)-(8-9). По существу они являются обобщением клас­ сических условий экстремума, определяющих стационарные точки. Усло­ вие (8.5) содержит неравенство, так как неотрицательность вектора X оз­ начает, что максимум может быть либо при положительном X и тогда про­ изводная F по X обязательно равна нулю (случай 1 на рис. 8.3), либо при X = 0 и тогда эта производная может быть как равной нулю, так и отрица­ тельной (случаи 2 и 3 на рис. 8.3). Этим же объясняются условия допол­ няющей нежесткости (8.6): в точке максимума равны нулю либо X, либо производная, либо и то и другое.

Выражения (8.7)-(8.9) можно обосно­ вать аналогично, если учесть, что по А рас­ сматривается минимум F и

£ - Ф , ( х * х ~ ~ = v k (х * )•

д к , дкь

Применив условия Куна-Таккера к за­ даче ЛП, получим равенства второй основ­ ной теоремы двойственности как частный случай условий дополняющей нежесткости, а двойственные переменные - как частный случай к.

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

8.3.Квадратичное программирование

Взадаче квадратичного программирования целевая функция пред­

ставляет собой сумму линейной и квадратичной форм, а все условия явля­ ются линейными.

Например, в задаче с двумя переменными целевая квадратичная функция записывается следующим образом:

Д*ь Х2) = ^1*1 + cfoj + \\12(СиХ\1 + Ci2*,x2 + Ci#\Xi + C nX i).

„ Г

f

линейная форма

квадратичная форма

В векторной форме она принимает вид

 

*1

 

Ml

с п

V

/( х и х2) = к , ^ ]

 

|A i

 

*2 . ’

 

*2 .

 

С 22.

Обобщая на случай многих переменных, получаем

 

 

 

/(X ) = DTX + —ХТСХ;

 

 

 

 

2

 

 

 

 

Ч '

V

с =

Сц

С,2

С \п

D =

х = *2 ,

С

с22

^ 2 п

d2

 

 

21

 

 

А .

* п .

 

Ст

 

Ст_

Матрица С - квадратная, диагонально-симметричная (С/,=С,,).

В целом задача квадратичного программирования ставится в виде

 

/ (X) = DTX + -^ХТСХ -» шах;

 

(8 .10)

 

В -А Х > 0 ;

 

 

 

(8.11)

 

Х>0.

 

 

 

(8.12)

Чтобы она являлась задачей выпуклого программирования, целевая функ­ ция (8 .10) должна быть вогнутой.

Свойства функции определяются матрицей С. Для вогнутости функ­ ции необходимо, чтобы матрица С была отрицательно определенной (стро­ гая вогнутость) или отрицательно полуопределенной. Матрица С отрица­ тельно определенная, если для всех ненулевых X справедливо ХТСХ < 0, и отрицательно полуопределенная, если ХТСХ < 0. В случае минимизации целевая функция должна быть выпуклой, что имеет место при положи­ тельно определенной или положительно полуопределенной матрице С. Практически определить свойство квадратичной функции можно с помо­ щью достаточных условий экстремума: если функция в стационарной точ­ ке имеет максимум, она вогнутая, а если минимум, то выпуклая.

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

Теорема. Для того чтобы вектор X* являлся решением задачи (8.10)- (8 .12), необходимо и достаточно существования таких неотрицательных т- мерных векторов W и А и неотрицательного «-мерного вектора V, кото­

рые удовлетворяют следующей системе уравнений:

 

D + СХ*-АТЛ + V = 0;

(8.13)

В - АХ* - W = 0;

(8.14)

VTX* = 0;

(8.15)

WTA = 0 .

(8.16)

Покажем, что теорема выводится из условий Куна-Таккера. Функция Лагранжа для рассматриваемой задачи имеет вид

Д Х Д )= DTX+-XTCX+ ЛТ(В-АХ).

2

Записываем условия (8.5):

— = D + C X *-A TA < 0 .

дХ

Введя в это неравенство неотрицательный вектор дополнительных пе­ ременных V, получаем (8.13). Уравнение (8.14) - это исходное условие за­ дачи после приведения его к равенству вводом неотрицательного вектора

dF

дополнительных переменных W. Очевидно, что производная — < 0, когда

дХ

dF

дополнительная переменная V > 0, и — = 0, когда V = 0. Таким образом,

дХ

V играет роль индикатора производной. Поэтому условие дополняющей нежесткости (8.6) принимает вид (8.15). Аналогична взаимосвязь вектора W с производной F по Л, и отсюда имеем второе условие дополняющей нежесткости (8.16).

Система уравнений (8.13)—(8.16) - нелинейная, так как нелинейны (8.15) и (8.16). Она содержит (т + п + 2) уравнений и 2(т + п) неизвестных X*, Л, V и W.

Так как Vт X = Л

и векторы V и X неотрицательны, из (8.15)

П

следует, что, по крайней мере, п переменных из у, и х, равны 0. Аналогично из (8.16) вытекает, что равны нулю не менее т переменных из W; и X,. Та­ ким образом, в решении системы (8.13), (8.14) положительными могут быть не более (т + п) переменных. Это свойство системы дает ключ к ре­ шению.

Действительно, линейная система (8.13), (8.14) содержит п + т урав­ нений и 2(и + т) неизвестных. Но известно, что в искомом решении число положительных переменных не превышает + п). Следовательно, это до­ пустимое базисное решение (опорный план) системы (8.13) и (8.14). Поэтому искать решение задачи КП нужно только среди опорных планов этой системы. Такие решения находятся методами линейного программи­ рования. Опорный план системы (8.13), (8.14), удовлетворяющий услови­ ям (8.15), (8.16), будет оптимальным решением задачи КП.

Перепишем уравнения (8.13), (8.14) в обычном виде:

|СХ* - АТЛ + V = -D ,

(8.17)

I АХ* + W = В.

Если вектор D —неположительный, а вектор В - неотрицательный, то на­ чальное базисное решение V = -D, W = В удовлетворяет условиям (8.15), (8.16) и, значит, является оптимальным решением задачи КП. Однако, как правило, вектор D Имеет положительные компоненты, и такое начальное решение оказывается недопустимым. В этом случае, ориентируясь на ис­ пользование прямого симплекс-метода, строится искусственное начальное решение: в уравнения (8.17) с отрицательной правой частью вводятся ис­ кусственные переменные у* и они вместе с неотрицательными у, и и», обра­ зуют базисное решение. В качестве критерия линейной задачи принимает­ ся сумма искусственных переменных:

£ИСк = -> min.

Для выполнения условий дополняющей нежесткости (8.15), (8.16) ал­ горитм симплекс-метода дополняется правилами ограниченного ввода:

1) если в базисном решении имеется у,, то не может вводиться Xj{с тем же индексом) и наоборот;

2) если в базисном решении имеется vv„ то не может вводиться А, (с тем же индексом) и наоборот.

Иначе говоря, в базисном решении не могут находиться одновременно переменные v, х (w, А) с одинаковыми индексами. Если по оценкам претен­ дентом на ввод является переменная, которую согласно правилу нельзя вводить, в базисное решение вводится другая переменная с положительной оценкой.

Признаком выполнения условий теоремы (8.13)—С8.16) и, следователь­ но, оптимальности решения задачи КП является равенство нулю всех ис­ кусственных переменных или Аиек = 0 .

Очевидно, что рассмотренный метод за конечное число шагов нахо­ дит глобальное решение задачи КП с вогнутой функцией цели. При стро­ гой вогнутости задача имеет одно решение, при нестрогой вогнутости воз­ можно множество решений. Если функция не является вогнутой, метод на­

ходит некоторый локальный максимум.

 

 

Пример 8.2. Найти решение следующей задачи КП:

 

/ =

10xi + 20 х2+ ххх2 -

2*i2 - 2х22->шах;

 

 

8 - х 2^ 0 ;

 

 

 

9 - х \ - х 21 0;

 

 

 

хь *2 ^ 0 .

 

Перепишем целевую функцию в векторной форме:

 

/

= [10, 20]

*1

- 4

*1

 

 

/

2 .

1

х2_

По матрице С (гессиану) проверяем достаточные условия: Д] — 4 < 0, Д2= 16 —1 > 0. Значит,/имеет максимум и строго вогнутая.

Записываем первую систему уравнений (8.17):

- 4

1

*1

0

1

*1 + У\

10

 

 

 

— —

1

- 4 -Х2.

1

1

У г.

20

или

[—4xj +х2 —Я.2 + ^1 = —Ю; 1*1 —4^2 ~ —X2 +V2 = —20.

Добавляем вторую систему:

I x2 +JVl = 8;

+ X2 + ^ 2 =9.

Для образования начального базисного решения вводим в первую систему искусственные переменные у\ иу2.

Uxj - х2 + Х2 - Fj + yj = 10;

Xj 4х2 + XJ + “К2 V2 + у 2 = 20. Критерий линейной задачи

LncK=y\ +y2->min.

Базисными переменными в начальном решении являютсяу\, у2, vvj и w2. Заполняем начальную симплекс-таблицу:

с „

1

1

0

0

 

0

0

0

0

0

0

0

0

0

1

1

 

Баз.

А о

*1

х г

^1

Х»2

*1

v2

щ

w 2

У\

Уг

0

У\

10

4

-1

0

1

-1

0

0

0

1

0

5/2

Уг

20

-1

4

1

1

0

-1

0

0

0

1

-

wi

8

0

1

0

0

0

0

1

0

0

0

-

w 2

9

1

1

0

0

0

0

0

1

0

0

9

Д

30

3

3

1

2

-1

-1

0

0

0

0

 

Z

30

3

3

1

2

-1

-1

0

0

1

1

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполнив

 

симплекс-преобразования

 

 

 

 

с учетом правила ограниченного ввода, нахо­

 

 

 

 

дим

оптимальное решение

 

задачи

КП:

 

 

 

 

х] = 3,5;

х2 = 5,5. На рис. 8.4 показано допус­

 

 

 

 

тимое множество задачи и линии уровня кри­

 

 

 

 

терия. Оптимум достигается

на границе до­

пустимого множества в точке касания с лини­ ей уровня.

Этот пример показывает, что в задачах КП в отличие от линейного программирова­

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

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

8.4.Сепарабельное программирование

Всепарабельном программировании (СП) рассматриваются задачи,

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

имеет вид суммы функций отдельных переменных:

т

 

Л х\,х2, ...,*„)= £ /,(* ,)•

(8-18)

7=1

 

Линейные функции всегда сепарабельны, и поэтому линейное про­ граммирование можно рассматривать как частный случай сепарабельного.

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

Существует два основных способа записи аппроксимирующей зада­ чи, отличающихся формой представления исходных переменных: в X- или в 5-постановке.

Л-постановка. Предполагается, что переменные, которые входят в мо­

дель нелинейно, ограничены снизу и сверху:

 

dj<Xj<Dj.

(8.19)

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

Х]\~ dj, X j y }= Dj,

где r; - число интервалов по переменной xj (гу+1 - число узлов). Тогда рас­ сматриваемая переменная Xj может быть выражена через новые перемен­ ные Xjic в виде

Xj ~ X jk Xд ,

( 8.20)

*=i

 

1;

(8-21)

к

 

VXJkZ 0 .

(8 .22)

Выражение (8.20) называют уравнением сетки. С учетом (8.21) и (8.22) оно представляет переменную X/ в диапазоне (8.19) без потери точности. С использованием узловых точек и новых переменных кусочно-линейная функция, аппроксимирующаяДх,), записывается в виде

 

 

/ y = E / / - W

(8-23)

 

 

к

 

 

 

 

где jj(Xjk) - значение функции в узловых точ­

 

 

ках (рис. 8.5). Очевидно, что

/ у - функция,

 

 

линейная относительно X,*. Пусть N - множе­

Xj\ X fi

X jn \ Xj

ство индексов нелинейных

Тогда функ­

ция, аппроксимирующая/(X), имеет вид

 

 

Рис. 8.5

 

/ДХ,Л)= £//*,)+

 

(8-24>

 

 

 

 

 

j t N

j e N к

 

Итак, чтобы построить линейную аппроксимирующую модель, необ­ ходимо:

1) для каждой переменной, входящей нелинейно, записать уравнение сетки;

2) во всей модели заменить переменные из п.1, входящие в линейные$ , соответствующими уравнениями сетки;

3)функции, содержащие нелинейности, представить в виде (8.24);

4)добавить ограничения (8.21), (8.22) для всех новых переменных. Если переменная Xj входит нелинейно в несколько функций, узлы сет­

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

Поясним запись ограничений. Пусть имеется исходное ограничение

£ ( р ,у (Xj) < b t

со всеми нелинейными щ. Тогда после аппроксимации оно принимает вид

j k

i •

Jы

Вобщем случае левая часть ограничения записывается аналогично (8.24). Хотя аппроксимирующая задача линейная, ее оптимальное решение

не всегда является приближением к оптимальному решению исходной за­ дачи. Дело в том, что одно и то же значение х; можно получить по уравне­ нию сетки при разных X,*, то есть представить через разные пары узлов. Например, некоторое значение Xj можно выразить через смежные узлы, в интервале которых находится значение, а можно - через любую другую пару узлов, лежащих слева и справа, в том числе через первый и последний

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

Если аппроксимирующая задача является задачей выпуклого про­ граммирования, то это правило выполняется автоматически и решение на­ ходится методом ЛП без каких-либо дополнений. Оптимальное решение аппроксимирующей задачи будет приближением глобального решения ис­ ходной задачи. В противном случае алгоритм ЛП должен включать в себя правило ограниченного ввода: если в базисном решении находится Я,д, то

ДОПУСТИМЫМИ ДЛЯ ВВОДа МОГуТ быть ТОЛЬКО Ху*+| или Xjk-1.

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

Свойства задачи зависят от всех функций модели:

1.Если все ограничения линейные, то для выпуклости задачи доста­ точно, чтобы были вогнутыми все fj критерия (выпуклы при минимизации).

2.При нелинейности критерия и ограничений для выпуклости задачи

должны быть вогнуты все

и выпуклы все ф,у.

3. Если хотя бы одна fj

не вогнута при максимизации и/или одна фу

не выпукла, задача не является выпуклой.

Заметим, что, если все функции кусочно-линейные, переход к новым переменным не связан с потерей точности и при выполнении условий за­ дач выпуклого программирования получаемое решение является точным и глобальным.

Пример 8.3. Задача

/ = 6xi -* i + 7*2 тах >

2 х 2- 5*1 + Зх22 < 8, 1 < *1 < 4, хг > 0

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

/i( x 0 = 6xi - х \ 2 ; / 2(х2) = 7 х 2;

Ф,,(х1) = 2х12 - 5хь Фк-fe) = Зх22.

Так как/i(xi) и /2(х2) - вогнутые, а фц(х0 и фкОД - выпуклые, то име­ ем задачу выпуклого программирования. Обе переменные входят нелиней­ но, поэтому нужно строить две сетки. Оценим верхний предел хг: находим, min фц = -3,125, затем из ограничения получаем максимально возможное значение х2= 1,93. Берем £>2= 2. Пусть узловыми будут значения по х,: 1; 2; 3; 4; по х2: 0; 1; 2. Записываем уравнения сеток: Х) = А.ц + 2A,,2+ ЗХ)3 + 4\м , х2= Х22+ 2Х2з. В итоге получаем модель аппроксимирующей задачи в виде:

/= 5Х,1+ 8X12+ 9XU + 8Л-14+ 7Х22+ 14Х23 -> max;

—ЗА,]]—2А,]2ЗА<1з + 12Хн+ ЗА,22+ 12Х2з ^ 8, Хп + 2Хп + ЗХ13+ 4Хн > 1;

Хц + 2Хп+ ЗХ13+ 4XJ4< 4;

Хц + Xj2+ X13+ Xi4= 1;

X2l + X22+ ^23 = 1;

VXy*>0.

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

5-постановка. Построение аппроксимирующей задачи основано так­ же на кусочно-линейном приближении, но меняется уравнение сетки. По узлам сетки вычисляются расстояния между смежными узлами (длины ин­ тервалов):

=-Xjk,

иуравнение сетки записывается в виде

£ * W v t;

(8-25)

* = 1

 

0 < У д < 1 ,

(8.26)

где у,*- новые переменные.

 

Из представления переменной в виде (8.25) и (8.26) следует:

 

xj = dj, когда Vyjk = 0;

 

xj находится в первом интервале, когда у,] е (0 , 1), остальные уд= 0 ;

Xj находится во втором интервале, когда у,i = 1,уд е(0 , 1), остальные

yjk= 0 ;

Xj находится в к-м интервале, когда уд = у,2 = = уд.1 = 1, 0 < уд < 1, остальные уд = 0 .

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

Для аппроксимации нелинейной составляющей функции критерия вычисляются разности ее значений в смежных узлах:

bjk=fj(Xjk>o-fj{xjk),

с помощью которых записывается аппроксимирующая функция

 

/,<У; ) = / / 4 , ) + £ > Л .

(8.27)

ы

 

Тогда функция, аппроксимирующая критерий, имеет вид

 

/ - Е л о о ) . j

Аналогично аппроксимируются ограничения ф

^ijk ~ Фу

jк+1) —Фу(X jк

ФУ—Фij^

! ^i/кУjk '

 

*=1

Как и в ^-постановке, если имеет место задача выпуклого программи­ рования, то требования к переменным уд выполняются автоматически и полученное решение будет приближенным глобальным решением ис­ ходной задачи. В противном случай необходимо придерживаться правила ограниченного ввода относительно переменных уу*: если первые к пере­ менных равны единице, вводить можно только уд+i.

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

Следует заметить, что в ряде случаев несепарабельная функция может быть преобразована к сепарабельной. Способ преобразования зависит от структуры функции. Например, произведение двух сепарабельных функ­ ций 5,(Х)-7ТХ) можно привести к сепарабельному виду, заменив его перменной v с дополнительными равенствами:

S(X) = z - y ; Т(Х) = z +y.

Тогда выражение v = (z - y)(z +у) = z2у2, заменяющее произведение исходных функций, является сепарабельным. Так, функция/ = Х\ + х2х 2 заменяется на сепарабельную/ = *i + v с дополнительными сепарабельны­ ми ограничениями:

хг -(г-д> ) = °; - х \ ~(z +y) = 0 ; v - z 2 +у 2 = 0 .

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

Пусть зависимости от искомых переменных линейны, но коэффици­ енты критерия и ограничений зависят от случайной величины © (состоя­ ния среды). В этом случае в качестве критерия берется обычно математи-

+<у?

•у

---- Т

ческое ожидание линейной формы M(L) = М[С

(со)Х] = С X, а запись ог­

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

ятностной форме:

__

P \Z aij(©)*у * ь>(©)]* Pi.

' =1. и.

где р - заданное значение вероятности выполнения i'-го условия. Такое ог­ раничение заменяется эквивалентным детерминированным условием

E?Hxj +tA (*)

ИЪ =1

где aij,bi - математические ожидания; ст?-дисперсия ац\ а ] - дисперсия bt; tp - значение функции, обратной функции распределения (например, нормального), tp.= t(pi).

В результате детерминированная модель стохастической задачи вклю­ чает в себя линейный критерий и существенно нелинейные ограничения

(*). Очевидно, что она не является сепарабельной. Сделаем простое преоб­ разование. Обозначим

^ = ^ E <jlxj +a"

Тогда каждое ограничение (*) заменяется двумя условиями:

П_ _ YjOijXj+tpSi^bi,

7=1

s ? ~ E ° u x2j

Первое из них - линейное, а второе - сепарабельное. Таким образом, сто­ хастическая задача приведена к сепарабельной.

Примечание. Если случайным является только вектор ограничений, то, как следует из (*), стохастическая задача сводится к линейной.

8.5. Задачи дробно-линейного программирования

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

В общем случае целевая функция имеет вид

C0 + Z C7*7

 

/ = ------ Т ------ •

(8-28)

d o + ^d j-X j

 

7=i

 

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

-------1------- = '.

(8-29)

d0 + 'ZdjXj

У=1

Очевидно, что при оговоренном условии она может быть только больше нуля. Тогда функция (8.28) примет вид

 

П

 

f

= C0r + '£ dCjxJr.

 

 

7=1

 

После замены произведения переменных

 

 

Xjt = у ,

(8.30)

окончательно получим

п

 

 

 

f

= c0r + 'Z c j y j.

(8.31)

 

j =i

 

Как видно,/-линейная функция от п неотрицательных переменных ys и одной положительной переменной г. Она должна рассматриваться вместе

с условием, следующим из (8.29):

П

d0r + Y ddj xj r = \

7=1

или после замены (8.30)

 

dor + t dj y j = l-

<8-32)

7=1

 

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

обе части каждого ограничения ^ci^X j <

на г:

 

j7

 

 

7

 

 

и, произведя замену, получим

___

 

£ а 0у ; -Ь,г<0,

i = l,m.

(8.33)

В результате преобразований имеем задачу линейного программиро­ вания с критерием (8.31), ограничениями (8.32), (8.33) и переменными г > О, yj > о, у/. Получив ее решение одним из методов ЛП, вычисляем исходные переменные по очевидной формуле

*

у )

X j =

г

Для гарантии выполнения условия положительности знаменателя це­ лесообразно вводить его явно в модель, то есть добавлять неравенство

П

d 0 + Y . d j x е>j -

н

где 8 - очень малая положительная константа.

Возможность перехода к линейной задаче геометрически обусловлена тем, что линии уровня дробно-линейной функции описьюаются линейным уравнением. Действительно, пусть / = / = const, тогда из (8.28) следует

d j + f l L d j x j = со + H cj x j J'

ИЛИ

 

Z (cj - fd j )x j ~ d o f ~ c 0 .

(8.34)

j

 

Это обычное линейное уравнение относительно Xj. Поэтому линии уровня функции (8.28) в многомерном пространстве - гиперплоскости, а в двух­ мерном - прямые. Однако с изменением / они не перемещаются парал­ лельно, а поворачиваются вокруг множества вращения.

Множество вращения - это множество точек размерности п - 2 , обра­ зованное пересечением нулевых линий уровня числителя и знаменателя:

<со + lL cj xj =°;

do + Z d jX j = 0 .

При п = 2 оно состоит из одной точки, а при п = 3 представляет собой пря­ мую (ось вращения), образованную пересечением двух плоскостей.

Пример 8.5. Представим графически следующую задачу:

j_ 2хх +х2 - 1 шах;

хх+ 2 х 2 -1

3*1 + 2хг > 6 ;

0 <х, <3;

0 £*2 < 3.

Уравнения нулевых линий уровня числителя и знаменателя образуют систему

Р ис. 8.6

2xj + x2 =l, [хх + 2х2 = 1,

из которой находим точку вращения: х\ = х2 = 1/3. На рис. 8.6 это точ­ ка А. Нулевые линии показаны пунктиром, а направление поворота, в котором целевая функция возрастает, —стрелками. Отсюда ясно, что оптимальное решение достигается в вершине

В: х* = 2 , х\ = О, L* =3.

8 .6 . Методы “спуска”

Методами “спуска” называются числен­ ные итерационные методы оптимизации, ори­ ентированные на поиск минимума.

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

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

При выборе метода следует учитывать свойства целевой функции: унимодальность или многоэкстремальность, дифференцируемость, выпук­ лость-вогнутость или их отсутствие и т.д. Кроме того, функции могут об­ ладать “неприятными” для метода особенностями, такими как седловые точки и овражность. “Овраг” (при максимизации “гребень”) проявляется в том, что вдоль него функция изменяется намного слабее, чем в поперечном направлении. На карте линий уровня он виден по сильной вытянутости ли­ ний вдоль “дна” оврага с одновременной “сплющенностью” в поперечни­ ке. Самым простым примером овражной функции является эллипсоид:

2

2

iЬ*2

 

 

m = S + T

 

X,

При а » Ъ функция имеет овраг вдоль оси х\, которая является его “дном” (рис. 8.7).

Чем сильнее овражность и нелинейность “дна”, тем в большей степе­ ни замедляется скорость сходимости метода или возможен останов при не-

достижении окрестности минимума. Поэтому учет таких свойств особенно важен при выборе метода оптимизации.

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

По информации, используемой для определения направления поиска, выделяют следующие методы:

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

первого порядка или градиентные, использующие первые производ­ ные (градиент);

второго порядка, требующие вычисления первых и вторых произ­ водных;

случайного поиска, применяющие механизм случайного выбора на­ правления;

генетические, сочетающие элементы детерминизма и случайности выбора;

комбинированные.

При оптимизации «-мерных функций часто используются методы од­ номерной минимизации. Поэтому сначала рассмотрим эти методы, затем многомерные методы безусловной оптимизации и, наконец, методы поиска условного минимума. Все приводимые ниже методы предназначены для минимизации унимодальных функций.

8.7. Методы одномерной минимизации

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

8.7.1. Метод деления шага пополам

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

плитудой.

Алгоритм:

1. Задать начальную точку х0»начальный шаг И0и точность е; к = 0. 2 . Вычислить,/(**)•

3.xk+i=xk+hk.

4.Вычислитьy(x*+i).

5.

ЕслиДхм) <Лхк)>то 1= hkи идти на шаг 9.

6 .

Если Ик< £, перейти на шаг 10.

7.

Если к = 0, то Л*+1 = -h k и идти на 9.

8 .

/?*+! = -й*/2 ;

9.й = к + 1 и перейти на 3.

10.Конец. А

Проверка на шаге 7 необходима для того, чтобы не уменьшать шаг до достижения окрестности минимума. После окончания алгоритма в каче­ стве оптимального х может быть взято любое значение между хк и **+]. При сильной изменчивости функции в окрестности минимума условие на шаге 6 можно заменить на (й*< а) & (/(**+0 -fixk) < £/), где £ /- точность по функции.

8.7.2. Квадратичная аппроксимация

Для нахождения приближенного минимума исходная функция / ап­ проксимируется функцией второго порядка

f(x ) =a (x - x 0)2 +Ь(х - х0) +с,

(8.35)

где хо - точка отсчета реального диапазона значений х, в частности х0= 0 . Для определения коэффициентов, входящих в функцию (8.35), выбираются три точки и в них вычисляется значение функции f Получается простая система трех уравнений с тремя неизвестными а, Ъи с:

/(* i) = а(х, - * 0) 2 + Ь(х1 - х0) + с;

/ ( х 2) = а(х2 - х0)2 + Ь{х2 - х0) + с;

/ ( х 3) = а(хз - х0)2 + Ь(хз - х0) + с.

Стационарная точка функции (8.35) вычисляется из равенства ее про­ изводной нулю:

* „ = * 0 - ^ .

(8.36)

Она используется в условии останова и как новая точка для аппрокси­ мации.

Алгоритм:

1. Задать первую точку хь швг Ах и точность по координате 8 и функ­ ции Е/

2 . Определить 2-ю точку: х2= xi + Ах.

3.ВычислитьТОО и /х 2).

4.Еслиftjcj) <fix\), принять хз=х2+ Ах, иначе Хз= Х1—Ах.

5.ВычислитьДх3).

6 . Вычислить f m= min{XxO, Дх2), Дхз)} и определить точку хт, соот­ ветствующую^.

7.По трем точкам и значениям функции в них найти коэффициенты

в(8.35).

8. Вычислить хапо формуле (8.36) и f[xa).

9. Если (\fm-flxa)\< £/) & (\хт—ха|< е), окончить поиск.

10. Еслиf m <flxa), взять точку хти две ближайшие к ней точки, иначе - взять хаи две ближайшие к ней точки. Эти точки пронумеровать в порядке возрастания значений, вычислить/ в новой точке и перейти на шаг 6 .

8.7.3. Метод деления интервала пополам

Этот метод относится к методам сокращения интервала неопределен­ ности. Предполагается, что точка минимума находится на заданном интер­ вале [а,Ь].

Рассматриваемый метод также называют трехточечным. Точки выби­ раются так, что делят интервал на четыре равные части (рис. 8.9):

|------1--------1

|

|

хт= (а + Ь)12, X) = (а + хот)/2 ,

х2= (хт + Ь)12.

Функция вычисляется в

этих точках,

о

х,

хт

х,

ь

 

 

Рис

 

 

и после сравнения полученных значений

 

 

 

 

 

интервал сокращается в два раза. С новым

интервалом действия повторяются.

Алгоритм:

1. Задать точность по координате е.

2 . Вычислить хт nj{xm).

3 . ВЫЧИСЛИТЬ Х \ и х 2.

4.Вычислить/хО и.Дх2).

5.ЕслиДхО <fixm) , то принять b = хт, хт =хь Иначе, еслиДх2) <_Дхт), положить а =хт, хт = х2, иначе - а = хь b = х2.

6 . Если Ь - а < г , закончить поиск, иначе - перейти на шаг 3.

Нетрудно подсчитать, что после п вычислений функции интервал не- W-I

определенности уменьшится в 2 2 раза. Доказано, что этот метод эффек­ тивнее других прямых методов, использующих равноудаленные точки.

8.7.4. Метод золотого сечения

Золотое сечение - это определенное отношение части к целому. Отре­ зок АВ делится точкой С в отношении золотого сечения (рис. 8.10), если

л е е в

(8.37)

 

 

АВ~ АС

 

 

 

 

_______ L

 

Положим АВ = 1, АС = х, СВ = 1

■х,

В

С

тогда из (8.37) получаем уравнение

 

 

 

 

Рис. 8.10

 

х2 +х -

1 = 0,

 

 

 

из которого следует

 

 

 

 

 

>/5-1 Л , 1D

,

3 -V ?

«0,382 .

 

х=-

«0,618,

\ - х

=-

 

 

2

 

2

 

 

Эти отношения используются для выбора двух точек внутри интервала не­ определенности. Они располагаются, как показано на рис. 8.11. Каждая из точек делит интервал [а, Ь] в отно-

шении золотого сечения.

 

~~г~

 

3-У5

В

этих

точках вычисляется

 

2

функция. Если .ДхО > Дхг), то отбра­

----------

1

‘—

сывается часть интервала [а,хi], ес­

 

X

_

ли fix\)

< Дх2), то отсекается часть

V

м <

[х2, Ь\,

а при

равенстве

значений

г

г

 

функции - любая из них. Оставшая-

 

ся часть интервала равна

(V 5 -.J/2

Рис. 8.11

 

 

от величины

исходного. Очевидно,

 

 

 

 

 

что после такого сокращения интервала одна из внутренних точек остается с изменением индекса, а вторая берется на основе золотого сечения или, что одно и то же, симметрично оставшейся (рис. 8.12). Сокращение интервала продолжается до достижения заданной точности.

Алгоритм:

 

 

 

 

1.

Задать точность по координате е.

 

2.

Вычислить хх = а + ((з-л/5)/2\ b - а), х2 = a + ((V 5 -l)/2 )(6 -a).

3.

ВЫЧИСЛИТЬ Д X]), Д х2).

а = хь

 

4.

Если ДхО >Дх2),

положить

Х 2

х 1= х2,

x2 = a + ((V 5 - l)/2 )(6 - o ) ,

XI

или

 

х2- а + b - х ь иначе

-

b = х2,

х2= хь

xiV

х, =о + ^ 3 -> /5 )/2 |(Ь -а), илих! =a + b -x2.

 

5.

Если ф - а) < б ,

закончить поиск.

 

 

 

 

 

Xl

Х2

6 . Вычислить функцию в новой точке и перейти на шаг 4. А

Две последовательные итерации алго­ ритма представлены на рис. 8 .12.

Покажем, что сохраняемая точка (*i или х2) делит сокращенный ин­ тервал также в отношении золотого сечения. Пусть на к-й итерации внут­ ренние точки делят интервал [а*, Ък] в отношении золотого сечения. Обо­

значив у к=Ък- а к, ух = дг,- а к =Ьк - х 2, получим

/3-У5

/2

Тогда для нового, сокращенного, интервала находим:

yf+1 = / - 2 у к = /

- 2

~Ъ ^ - У к = /( l - 3 + V 5 ) = (V5 - 2 ) /

В результате получаем

 

 

 

 

yf+l _ У 5

-2 2

2 (У5-2)(л/5 + 1)_ 3-У5

/ +'

75-1

(V5-1XV5 + 1)

2

Так как отношение золотого сечения сохраняется, внутренние точки не сливаются при любом числе итераций.

Согласно алгоритму функция вычисляется два раза на начальном ин­ тервале и по одному разу на всех последующих. Поэтому после п вычисле­

ний функции интервал неопределенности составит ((75 - 1)/ i f 1 от вели­ чины первоначального. При заданной точности можно найти необходимое количество вычислений функции п из условия

{Ь-а)<е.

8.7.5. Метод Фибоначчи

Схема метода почти полностью совпадает со схемой золотого сече­ ния. Отличие в том, что вместо золотого сечения используется отношение чисел Фибоначчи: на к-й итерации доли малого и большого отрезков ин­

тервала равны Fn_k_x/ Fn_k+j

и Fn_k / Fn_k+X соответственно.

 

Числа Фибоначчи Fv

вычисляются

по известным

соотношениям:

Fо-F i=l, Fv= FV.\+F^2> V>2.

 

 

 

Точки X) и х2вычисляются по формулам:

 

 

 

-а * ):

(838)

 

р п - к + 1

 

 

 

*2 =о* +

(Ьк - а к).

(8.39)

^п-к+\

Как видно, они идентичны приведенным в предыдущем разделе. Однако если при использовании золотого сечения внутренние точки не могут сли­ ваться, то здесь это не так. Действительно, при к = п - 1 из (8.38) и (8.39) имеем

=ап-\ + $ - (V i

x2~l= an-i +-^гФп-\ -<V i)-

^2

ЛП- 1

•*2

Но так как Fo/F2 - F 1/F2 = 1/2, то

и, следовательно, точки сли­

хх 1 =х2

ваются в середине интервала. Поэтому до начала итераций необходимо определить значение п, гарантирующее достижение минимума с заданной точностью е. После 1-й итерации длина интервала составит Fn_xl Fn от ве­ личины исходного, после 2-й- ( Fn_2/ Fn_x)(Fn_x/Fn),..., после (я-1)-й-

 

 

V

1

 

Л - 1

л-2 Рп-г

\

п J Vг п-1J \ r n-2j

\ F2 J

Значит, длина

последнего интервала будет равна (bx - a\)/F„, где

Z>i] - исходный интервал. Для обеспечения заданной точности требу­ ется, чтобы

——— < е или Fn > —— —

(8.40)

F*

*

 

Таким образом, соотношение (8.40) позволяет определить номер чис­

ла Фибоначчи по исходным данным. На начальном интервале точки вы­ числяются по формулам (8.38) и (8.39) при к=\. На последующих итераци­ ях числа Фибоначчи не требуются, так как одна точка переносится из предшествующей итерации, а вторая берется симметрично ей, то есть лучше использовать вторые формулы из алгоритма золотого сечения.

После слияния внутренних точек остается неопределенность с поло­ жением минимума. Для ее устранения вторая точка берется слева или справа от центра на расстоянии ei = (0,01-5-0,05)8. Для случая сдвига второй точки влево (рис. 8.13) при/(*0 </(*i - s 0

минимум лежит в интервале (2), в против­

 

( 1)

 

 

 

 

*,= X,

 

ном случае - в интервале (1).

г

1

1

х

1

Метод Фибоначчи

является самым

1

к

 

 

1

 

V

л-1

эффективным из всех

прямых методов.

 

Г

 

А

 

Ч , J

 

(2)

 

Очень близок к нему метод золотого

 

 

 

 

 

Рис. 8.13

 

 

сечения: при п > 9 они практически сов­

 

 

 

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

Фибоначчи на 1-й итерации, равен золотому сечению:

л-2 , 3 - f 5

Нш

л-но \ Fn )

8.7.6. Метод первого порядка

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

Рассматриваемый метод средней точки алгоритмически является са­ мым простым из методов одномерной оптимизации на заданном интерва­ ле. Он заключается в определении средней точки интервала с = (а + Ь)/2 и вычислении в ней производной.

Если/'(с) < 0, полагают а = с, при/'(с) > 0 принимают b = с. Условие окончания поиска учитывает точность по координате е и по производной функции Еь

((Ь - а)< е ) & (|/'(с) | < £i).

Эффективность метода зависит от трудоемкости вычисления произ­ водной. Задаваемая точность ei не должна быть выше точности вычисле­ ния производной. С ростом трудоемкости и снижением точности вычисле­ ний производной предпочтение следует отдавать прямым методам.

8.7.7. Методы второго порядка

Методы применимы к дважды дифференцируемым функциям. При этом высокие требования предъявляются к точности вычисления произ­ водных. Наиболее удачными считаются задачи, в которых известно анали­ тическое выражение первой производной, а еще лучше - и второй.

Здесь рассматривается только один из наиболее часто используемых методов - метод Ньютона-Рафсона. Он основан на линейной аппроксима­ ции первой производной минимизируемой функции / в окрестности теку­ щей точки х*:

/' * / ’ = Л * * )+ /•(* * )(*-**)■

Встационарной точке аппроксимации, которая принимается за оче­ редное приближение хк+\, производная равна нулю:

/'(* * +i) = 0 .

Отсюда следует рекуррентная формула для построения последовательно­ сти приближений к искомому минимуму:

/'(* * )

Х ы = х > ~ ж у ( 8 -4 , )

Очевидно, что применение (8.41) возможно только при условии, что / к) * 0 для каждого к. Поиск завершается по условию достижения точ­

ности, заданной величиной первой производной | f '(хк) | < 8 j или расстоя­

нием между двумя точками |x*+i- ** | < е. Возможно одновременное исполь­ зование этих условий.

В общем случае процедура (8.41) не гарантирует сходимость к ста­ ционарной точке. Если начальная точка достаточно близка к стационарной, то метод сходится. При сходимости обеспечивается высокая скорость при-

ближения к минимуму. На рис. 8.14 приведен случай сходимости метода к искомому решению. Очередному приближению соответствует точка пе­ ресечения оси х аппроксимирующей прямой. Как видно, последователь­ ность точек хо, Х\, хц. .. приближается к минимуму х*.

Для некоторых функций результат поиска зависит от выбора началь­ ной точки. Так, например, при начальной точке, взятой правее максимума производной (рис. 8.15), метод расходится.

8 .8 . Многомерный поиск безусловного минимума

8.8.1. Метод Гаусса-Зейделя (покоординатного спуска)

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

х«»=(*Г.*!0)...*?”)•

Зафиксируем все переменные, кроме первой, на начальных значениях и решаем задачу

/(* ,, 4 0) *л0)) => min

одним из одномерных методов. Фиксируем х\ на полученном в решении значении xi' и делаем свободной переменную х2. Приходим к очередной одномерной задаче

f(r'

X

»*з

»—,ля

—ъ х\

/ 1*

1»*2

*2

 

 

 

 

Аналогично строятся и решаются еще (п—2) одномерные задачи, по­ следняя из которых имеет вид

/(*'i>,x'2»—>*,n-i»Jcn)=^niin - ^ ,x гг

Г л а в а 8. Н Е Л И Н Е Й Н О Е П Р О Г Р А М М И Р О В А Н И Е a s B S B i B B S B B S B S B B B B B S s a s B B B B B s

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

 

Х(*+1> - Х(*>

с е .

 

 

 

Работу метода иллюстрирует рис. 8.16, на котором показана траекто­

рия поиска минимума функции/ = (2 - х{)

+ 2(х\ - 2) .

 

 

 

Метод

отличается

алгоритмической

 

простотой. Однако ему присущ ряд недос­

 

татков. Его эффективность

существенно

 

зависит от направления осей координат

 

относительно линий уровня. Это хорошо

 

видно на примере квадратичной функции:

 

при совпадении координат с осями эллип­

 

сов минимум достигается за один цикл из

 

любой начальной точки (рис. 8.17), а при их

Рис. 8.16

повороте

число

циклов

значительно

 

возрастает

(рис.

8.18).

Из этого примера

также следует, что метод неэффективен в условиях оврага. Если функция не дифференцируема в отдельных точках, поиск может остановиться, не достигнув окрестности минимума. На рис. 8.19 приведен такой случай, ко­ гда точка останова А далека от искомого минимума.

Рис. 8.17 Рис. 8.18 Рис. 8.19

Из анализа траекторий поиска в приведенных примерах можно заклю-

ь

г

1

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

вметоде, рассматриваемом в следующем разделе.

8.8.2.Метод Хука-Дживса (метод конфигураций)

Вэтом методе каждая итерация состоит из двух фаз: исследующего поиска и движения по образцу (ускоряющий шаг).

Исследующий поиск аналогичен одному циклу покоординатного спуска. Конечную точку цикла называют базовой. Две последовательные базовые точки определяют направление поиска на 2-й фазе. Точка, полу­ чаемая в результате ускоряющего шага, называется временной. Начальная точка одновременно является базовой и временной.

Сначала приведем вариант метода, предложенный Хуком и Дживсом и описываемый в литературе под названием “метод конфигураций”. В нем

используются

только дис­

уО)

кретные шаги.

Процедура

 

поиска показана на рис. 8 .2 0 .

 

Из начальной точки Х(0) де­

 

лается шаг Д по Х| в одну сторону, и если успешно, то значение фиксируется, а если не успешно, то направление

шага изменяется на противоположное. То же делается по остальным коор­ динатам. Итогом первого исследующего поиска является точка Х(1). В на­ правлении Х(1) - Х(0) осуществляется движение по образцу, дающее вре­ менную точку Y^1- Х(1) + а (Х(1) - Х(0)), где а - коэффициент ускорения (рекомендуется брать от 1 до 2). Из полученной временной точки снова проводится исследующий поиск, приводящий в очередную базовую точку Х(2). Ускоряющий шаг в направлении Х(2)- Х(1) дает временную точку V . Фазы поиска повторяются без изменения величины шага, если УСУ*5) < <У(ХЮ). Если же XY^) > то при Д < е поиск заканчивается и Xw принимается за решение, а при Д > е следует положить Y(*) = Xw, умень­ шить шаг в два раза и перейти к исследующему поиску из точки Y^. Иначе говоря, после каждого ускоряющего шага проверяется его успешность и в зависимости от результата выбираются последующие действия.

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

/( x W + а(х(А) - Х(*-1)))=> min.

По оптимальному значению а* определяется временная точка

у ^ = Х (*)+а*(х(*)-Х (ы)).

Поиск завершается, когда расстояние между двумя смежными базо­ выми точками становится меньше заданной величины:

Нач. точка

х\ =-2, Х2=9

17 итераций

Конеч.точка

*1 = 2,*2=4

Д2,4) = 2,6Е-13

Рис. 8.22

8.8.3.Симплексный метод

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

Симплекс обладает замечательным свойством: если взять только одну

точку вне симплекса в качестве новой вершины, то, соединив ее с верши­ нами прилежащей грани, получим новый симплекс. На рис. 8.23, а из ис­ ходного симплекса с вершинами 1,2, 3 построено два других симплекса, а на рис. 8.23, б новый симплекс построен на грани 2, 3, 4 исходного и но­ вой вершины 5.

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

Зная значения функции в вершинах симплекса, легко определить на­ правление, в котором функция может улучшиться. В этом направлении строится новый симплекс: определяется самая худшая вершина (по значе­ нию функции) и она отражается через центр противолежащей грани. Так, на рис. 8.24 показано отражение вершины 1 через центр противолежащегоребра С. В построенном симплексе значение функции неизвестно только

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

вначальном симплексе необходимо вычислять функцию во всех вершинах.

3

й

Рис. 8.23

Рис. 8.24

Последовательное отражение наихудших вершин перемещает сим­ плекс в направлении уменьшения значения функции, что в конечном итоге приводит к отысканию минимума с заданной точностью. Характер движе­ ния симплекса представлен на рис. 8.25. Отражение вершин показано пунктирными линиями. Сначала от­ ражается вершина 1, затем в получен­ ном симплексе отражается вершина 5, симплекс 2, 4, 5 заменяется на 4, 5, б и т.д. Очевидно, что в процессе дви­ жения, особенно вблизи экстремума, новая вершина может оказаться не лучше отраженной. Для предотвраще­ ния зацикливания либо отражается другая вершина, либо уменьшается

размер нового симплекса.

Рассмотрим вычислительную сто­

 

рону метода. В качестве начального

 

симплекса обычно берется регуляр­

 

ный симплекс. Регулярность означает

Рис. 8.25

равенство длин всех ребер. Симплекс

строится на выбранной начальной точ­

 

ке Х^°\ которая принимается за базовую вершину, и относительно ее распо­ лагаются остальные вершины. Их координаты вычисляются по формуле

г(0

_ с<0) + 8

, если

j

ф I,

л;

*Г + 6

2, если

j

=i; i,j = \,n,

где / - номер вершины; j - координата вершины (индекс переменной); п - число переменных (размерность пространства); Si и бг - приращения, зави­ сящие от п и выбранного масштабного множителя ц:

5,= у/п + 1 + « - l ''

ч/^ й - Г «72

При ц = 1 все ребра имеют единичную длину.

Вычисление координат новой вершины, получающейся в результате отражения одной из вершин последнего симплекса, производится следую­ щим образом. Пусть отражается вершина к (например, вершина 1 на рис. 8.24). Тогда сначала определяется центр противолежащей грани С

1 Я+1 , S ХС= - У Х (,),

м

i*k

азатем координаты новой вершины s:

X{s) = ХЛ + Х(ХС- Х^)

ИЛИ

 

X(S) = Xе + В(ХС - Х{к\

(8.42)

где X > 0 и 0 - параметры отражения.

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

а - нормальное отражение;

0 = р-сжатие; у - растяжение.

Значения коэффициентов отражения были подобраны эксперимен­ тально: а = 1; р = 0,5; у = 2. Предложены и другие наборы значений, одна­ ко они дают лучшие результаты только в частных случаях.

В алгоритме Нелдера-Мида используются три вершины: А - с наи­ большим значением целевой функции (худшая при минимизации), В - со следующим значением и L - с наименьшим значением (лучшая). Всегда отражается вершина Л.

Сначала производится нормальное отражение. Получаемая в резуль­ тате точка D считается временной (рис. 8.26). Далее идут проверки:

еслиf L< f D<f B, то нормальное отражение приемлемо и временная точка фиксируется;

если f B^ f D< f A, то выполняется сжатие с 0 = р и фиксируется точка Z)p;

если f D > f A, то симплекс сжимается с 0 = -р и фиксируется соот­

ветствующая точка D_p;

• если f D< f L, то производится растяжение (0 = у), дающее точку DT, которая фиксируется, если она не хуже временной; иначе она не учитывается и фиксируется временная точка D.

Рис. 8.27

В условии останова поиска может использоваться показатель размера симплекса, например, максимальная длина ребра, и/или разность значений целевой функцииf A - f L.

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

Интересен вариант метода, в котором на всех итерациях симплекс ос­ тается регулярным. При изменении размеров симплекса используется ко­ эффициент уменьшения длины ребра Р > 0,85. Симплекс сжимается, стя­ гиваясь к лучшей вершине, как показано на рис. 8.27, и после этого проис­ ходит отражение. Такое значение р обусловлено тем, что на вершины

I__________ уменьшенного симплекса переносятся значения функ­ ции соответствующих вершин до сжатия. Тем самым исключаются дополнительные вычисления функции. Возможно также увеличение симплекса за счет удли­ нения всех ребер с коэффициентом 1/р при сохранении положения наихудшей вершины.

8.8.4. Градиентные методы

Если функция дифференцируема, вычисление производных дает ин­ формацию о поведении функции в исследуемой точке и, следовательно, позволяет находить лучшее направление поиска.

Скорость изменения функции J(X) в произвольном направлении / оп­ ределяется производной

df _\pdf (к,

(8.43)

dl tfcbc, dl

Здесь частные производные dXj представляют собой направляющие коси- al

нусы. Геометрическая иллюстрация для случая функции двух переменных приведена на рис. 8.28. Очевидно, что

—7 = cos(x.,/) = cos а;

dl

>

 

•^7- = cos(x2,Г) = COS р. dl

Поверхность уровня целевой функ- х2 дни, описываемая уравнением _ДХ) = const,

имеет размерность п - 1.

в

Зададим координаты следующим образом. Про­ ведем через рассматриваемую точку п - 1 взаимно ор­ тогональные касательные к поверхности уровня, при­ няв их за оси координат. В качестве последней оси возьмем нормаль к поверхности уровня (рис. 8.29). В такой системе координат производные функции по всем Xj равны нулю. Поэтому из (8.43) имеем

d f

¥

/ЫЛ

Рис. 8.29

- =

- c ° s № 0 .

Отсюда следует, что максимальная скорость увеличения функции будет в направлении /, совпадающем с нормалью. Вектор, имеющий направление нормали к поверхности функции в данной точке и длину д //d N , называет­ ся градиентом.

Обозначается градиент как grad_/(X) или У/(Х). Он полностью опреде­ ляется своими проекциями - производными функции по переменным:

V/(X*) = ¥ _ ¥ _

¥_

etc, дх2

'дх,пУ

В задачах на минимум используется противоположное направление -

антиградиент.

Значения производных могут быть найдены по приближенным фор­

мулам:

 

 

¥

- А/ _

+ Ах,,х<ч.1,...,хд) /(х,,...,х,.... х„) ^

dxj

Дх,

Дх.

¥А/ _ /(х„-,х,_,,х, +Дх,/2,х,+|,...,хп) - /( х „ - ,х , -Ах,/2,...,хп)

дх, Дх,

Дх,.

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

Если переменные имеют разные единицы измерения, можно перейти к относительным переменным у„ используя минимально и максимально возможные значения переменных х,:

 

у —у™*

V

Л

Л*

= ---

------1—г-.

s I

Xjшах _Xj пип

Очевидно, что значения у, лежат в диапазоне [0,1].

Знание градиента (антиградиента) позволяет осуществлять перемеще­ ние из текущей точки в направлении наибольшего улучшения функции. Для линейных функций градиент постоянен, и поэтому его требуется оп­ ределять всего один раз. В нелинейных функциях значение градиента за-

*+1 = x f - h k
Алгоритм градиентного метода:

висит от вектора X, то есть его необходимо пересчитывать при любом из­

менении X.

В градиентном методе поиск минимума производится согласно рекур­ рентным формулам:

X*+1 = Хк - h k -Vf(Xk),

(8.44)

v/(x*)

где hk - шаг. В первой формуле величина изменения переменных ДХ зави­ сит как от шага, так и от величины градиента. Более удобно, когда рас­ стояние между последовательными точками зависит только от величины шага. Поэтому предпочтительнее вторая формула. В ней используется нормированный градиент, длина которого всегда равна единице (за счет деления на длину). Поэтому он задает лишь направление, но не влияет на величину ДХ.

Формула (8.44) в записи по отдельным переменным принимает вид

Sf/Sxi

(8.45)

1.Задать начальную точку, начальное значение шага и точность по величине градиента е, вычислитьДХ°) и положить к = 0.

2.В текущей точке X* вычислить градиент (производные dfjdxi) и его

длину.

3. Если V/(X*) < е, закончить поиск.

4.Определить новую точку Х*+| согласно (8.45) и вычислить в ней значение функции.

5.^ЕслиЛХ*+|) <ДХ*), увеличить к на единицу и перейти на шаг 2 ; ес

ли.ДХ ) >Д Х ), уменьшить hk в два раза и перейти на шаг 4. А

При гладкой производной траектория поиска в идеале (при непрерывном вычислении градиента) тоже будет гладкой и ортогональной линиям уровня. При конечной величине шага траектория становится кусочно-линейной. Каче­ ственный характер поиска показан на рис. 8.30, а на рис. 8.31 приведена реализация алгоритма с двух начальных точек применительно к функ­ ции /X ) = (х| - х2)2+ (х2- 2)4. Обе траектории приводят практически в одну точку.

Самой трудоемкой частью ал­ горитма является вычисление гра­ диента, а он вычисляется после ка­ ждого успешного шага. В методе

наискорейшего спуска, который представляет собой модификацию градиентного метода, градиент оп­ ределяется реже, особенно в на­

чальный период поиска.

Модификация заключается в том, Рис.8.31 что после вычисления градиента вместо одного дискретного шага ищется

минимум на направлении антиградиента, то есть проводится одномерный поиск по И:

/

 

*mm.

(8.46)

М

)

А

 

 

 

В результате решения задачи (8.46) определяется оптимальный шаг Л*, по которому находится следующая точка

Х*+1 =Х* - /Л V / (8.47)

Очевидно, что при таком определении новой точки, значение функции в ней будет лучше, чем в X*.

Алгоритм наискорейшего спуска:

1.Задать начальную точку и точность по величине градиента е, поло­ жить к - 0 .

2.В текущей точке Хк вычислить градиент (производные df/dx,)

иего длину.

3.Если ||V/(X*)|| < £, закончить поиск.

4.Провести одномерный поиск (8.46).

5.Определить новую точку Х*+| согласно (8.47), увеличить к на еди­ ницу и перейти на шаг 2 . ▲

На рис. 8.32 показаны две тра­ ектории движения к минимуму функции /X ) = (*i - х2)2 + (х2 - 2) , полученные алгоритмом. Минимум на направлении антиградиента дос­ тигается в точке касания с линией уровня, а градиент в этой точке орто­ гонален ей. Поэтому каждое после­ дующее направление ортогонально непосредственно предшествующему.

Из рис. 8.32 видно, что с приближением к экстремуму частота вычисления градиента увеличивается, и вблизи минимума метод наискорейшего спуска вырождается в градиентный (см. рис. 8.31 и 8.32).

Градиентные методы плохо работают в условиях оврага: при попадании на дно овра­ га резко падает скорость движения и возможна остановка поиска до достижения окрестности минимума, например / = (2 - х \)2 + 3(х2- х 2)2 (рис. 8.33).

8.8.5. Метод Ньютона

Это классический метод второго порядка. Если направление градиента находится из ли­ нейного представления функции в окрестно­ сти текущей точки, то в методе Ньютона ис­ пользуется квадратичная аппроксимация функции цели.

Квадратичная аппроксимация дифферен­ цируемой функции / в точке X* записывается

в виде

 

/(ж )» Д х*) + V/(x* )т(х - х*) +1/2 (х - х* )т Н(х* )(х - х*),

(8.48)

где Н - матрица вторых производных функции / (матрица Гессе). В ста­

ционарной точке градиент функции равен нулю,

что применительно

к (8.48) дает

 

V/(x*)+ Н(х* )(х*+| -х * ) = 0.

(8.49)

Полагая матрицу Н неособенной (существует обратная к ней матри­ ца), из (8.49) получаем рекуррентный способ генерирования последова­

тельности точек

 

х*+1 = х* - Н" 1(х*)V/(x*).

(8.50)

Из вывода формулы (8.50) ясно, что для квадратичной функции цели Хы является точкой минимума. Следовательно, минимум такой функции из любой начальной точки достигается за один шаг (8.50). Для нелинейной унимодальной функции, отличной от квадратичной, точки последователь­ ности (8.50) асимптотически приближаются к минимуму. Условие оконча­

ния поиска такое же, как и в градиентных методах: ||v/(x*)|| < е. Заметим,

что в случае линейной аппроксимации матрица Н становится единичной и поиск вырождается в градиентный.

Необходимым условием сходимости метода является существование обратной матрицы во всех генерируемых точках. Доказательство сходимо­ сти метода получено при условии, что начальная точка достаточно близка к точке минимума. При этом метод имеет высокую скорость сходимости. Если поиск начинается с удаленной точки и функция существенно отлича­

ется от квадратичной, метод может не сходиться или давать слабую схо­ димость. Причина такого поведения в том, что значение функции в точке Х*+1 не обязательно меньше, чем в точке X*. Так, на рис. 8.34 траектория поиска имеет зигзагообразный характер из-за того, что после 2 -й итерации значение минимизируемой функции увеличилось.

Для устранения отмеченных недостат­ ков предложены модификации метода.

В одной из модификаций для обеспече­ ния регуляризации матрицы Н (ее невырож­ денности) она деформируется в результате добавления к ней единичной матрицы с не­ отрицательным скалярным множителем е: Н' = Н + еЕ. Значение е зависит от X и под­ бирается так, чтобы все собственные значе­ ния матрицы Н' были положительными. В этом случае матрица будет положительно определена и, значит, будет существовать обратная матрица (Н')"\ которая также будет положительно определена.

Возможное ухудшение функции в оче­ редной точке исключается введением в фор­

мулу (8.50) изменяемого параметра А. Модифицированная формула при­ нимает вид

x*+1 =x*-A *H - 1(x*)V/(x*).

(8.51)

При этом возможен вариант с дискретным шагом А, как в градиентном ме­ тоде, либо вариант, предполагающий определение оптимального А с по­ мощью одномерной минимизации (наискорейший спуск):

/(х * - AH- 1V/) => min • h

Пример поиска минимума функции / = (1 - JCI)2+ 5(*i2 - х 2)2 методом Ньютона с ре­ гулируемым шагом приведен на рис. 8.35. Если сравнить траектории поиска на рис. 8.34 и 8.35, то легко заметить преимущество модифициро­ ванного варианта метода.

8.8.6. Методы сопряженных направлений

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

Пусть дана матрица Н„хи. Направления d|, с 1 г , d* (к < и) называются сопряженными или Н-сопряженными, если они линейно независимы и

d/Hdy = 0 при j .

(8.52)

Эти векторы определяют сопряженные направления. Для квадратич­ ной функции двух переменных сопряженные направления получаются следующим образом. Возьмем произвольное на­ правление di и на нем найдем минимум, двигаясь из точки X1. Повторим поиск минимума на di из точки Х2ф X1(рис. 8.36). Направление йг, опреде­ ляемое прямой, проходящей через найденные минимумы, является сопряженным с направлени­ ем d). При этом направление дг проходит через

искомый

минимум

функции / Следовательно,

при любой начальной точке минимум квадратич­

ной функции двух переменных достигается за два

одномерных поиска вдоль сопряженных направлений.

Пример 8.6 . Используя сопряженные направления, найти минимум

функции / = - 6 х2 + х, + х\ -

х, х 2 (точка минимума Х*=(2,4)).

 

' 2

- Г

 

Запишем матрицу Гессе Н =

 

2 _

 

 

. - 1

 

За первое направление

возьмем

d* =(1,0) и определим d j = (а, Ь).

Компоненты d2 найдем из условия (8.52):

 

' 2

- Г

а

= 0

2 а - Ь = 0

(1,0)

2 _

Ъ

- 1

 

 

Положив о = 1 , получаем b = 2 и

d* =(1,2). Возьмем начальную точку

Х°= (—1;1). Найдем минимум на направлении di. Для этого подставим в функ­

цию X = Х°+ hd\, то есть

х\ =х\°+ h =

= -1 + A, Х2 = х2° = 1. Тогда /

= А2- ЗА - 3

и минимум по Л будет при А*= 1,5. Сле­ довательно, минимум на di достигается в точке Х' = (0,5;1). Приняв ее за началь­ ную для поиска вдоль d2 и подставляя в функцию х\ = 0,5 + А, х2= 1 + 2А, получа­ ем /^ ЗА2- 9А- 5,25. Найдем А* = 1,5 и со­ ответствующую новую точку Х2= (2;4). Как видим, второй одномерный поиск привел в точку искомого минимума / (рис. 8.37). А

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

Методы, основанные на концепции сопряженных направлений, разли­ чаются способами построения таких направлений. Некоторые из них отно­ сятся к прямым методам, например, метод Пауэлла и его модификация - метод Зангвилла. Другие методы используют первые производные, напри­ мер, метод сопряженных градиентов (метод Флетчера-Ривса). Одним из самых эффективных является метод Дэвидона-Флетчера-Пауэлла. В нем генерируются сопряженные направления с использованием градиента и матрицы D, аппроксимирующей обратную матрицу Н"1. Поэтому его от­ носят также к квазиньютоновским методам. Рассмотрение этих методов выходит за рамки настоящего пособия.

8.8.7. Методы случайного поиска

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

Случайный механизм выбора направления реализуется с помощью датчика случайных чисел Р, равномерно распределенных на симметричном интервале [~Ь, Ь]. Направление задается случайным вектором

S = ftb $2,$3, п ),

компоненты которого вычисляются по формуле

где п случайных чисел р, генерируются датчиком. Очевидно, что такой случайный вектор имеет единичную длину и определяет только направле­ ние. При этом все направления равновероятны.

Приведем несколько простых алгоритмов случайного поиска.

Алгоритм с возвратом при неудачном шаге:

1. Задать начальный шаг А0, число проб s< п и точность е.

2.Сгенерировать или задать начальную точку Х° и вычислить в ней функцию/, положить i == 1 (* —счетчик проб).

3.Сгенерировать случайный вектор направления »—/

4. На направлении S f определить точку X**1 = X* + hk

и вычислить

в ней функцию/

Рис. 8.38

5.Если_/(Xw ) <XX*), положил. к= к + 1, /' = 1 и вернуться на шаг 3. Если

/(Хж ) >/(X*) и / < s, положить / = / + 1 и вернуться на 3. Если/(Хж ) >/(X*), i =s n h k>e, положить hk=hkH, i = 1 и вернуться на 3. Если/(Х ж ) >/(X*), / = .у и hk<е, поиск закончил., приняв X*за точку минимума. ▲

Таким образом, поиск останавливается, ес­ ли в текущей точке s направлений, сгенериро­ ванных подряд, оказались неудачными при шаге, меньшем заданной точности. На рис. 8.38 пока­ зан характер движения при поиске по данному алгоритму (жирной линией выделены успешные шаги).

Алгоритм с обратным шагом. Он построен путем модификации предыдущего алгоритма, его цель - уменьшить число розыгрышей на­ правлений. Внесено следующее изменение: если

сгенерированное направление неудачное, то после возврата в исходную точку X* делается шаг в противоположном направлении; если же и оно не­ удачное, то генерируется новое направление из точки X*. Логика действия очевидна: если в данном направлении функция ухудшается, то можно ожидать, что в противоположном направлении она улучшится. Понятно, что эффект модернизации алгоритма тем выше, чем ближе функция в те­ кущей области к линейной.

Алгоритм наилучшей пробы. В нем используются два шага: проб­ ный а и рабочий h. Величина пробного шага соответствует необходимой точности. Задается также число пробных шагов т, меньшее числа пере­ менных п, причем разница между ттлп увеличивается с ростом п.

В текущей точке генерируются m направлений Е; и на них делаются пробные шаги. Вычисляются изменения функции

У j = Я** + aS;) - f ( x k ), j = \ , m .

В направлении с наименьшим (отрицательным) приращением Afj вы­ полняется рабочий шаг, приводящий в новую точку

хА+| =

+ hZj.

Поиск заканчивается, если

> 0.

По аналогии с предыдущим алгоритмом можно рассматривать и не­ удачные направления: вычислить тах|д/у|. Если максимум соответствует

положительному приращению Afp то рабочий шаг делается в противопо­ ложном направлении.

Алгоритм статистического градиента. Все параметры и начальные действия такие же, как в предыдущем алгоритме. Отличие состоит в выборе направления движения. Оно определяется с учетом всех разыгранных на­ правлений:

т

 

У = £ 2 у Д /г

(8.53)

>1

Направление у называется статистическим градиентом. В пределе (т—юо) он стремится к градиенту V/. Но определение у требует меньше вычислений, чем V/, и тем в большей степени, чем сильнее неравенство

т<п.

Согласно (8.53) каждый компонент вектора у вычисляется по формуле

М

Новая точка находится перемещением на рабочий шаг h в направле­ нии статистического антиградиента:

Поиск завершается при выполнении условия |у*| < £ или VA/V > 0. А

Эффективность рассмотренных алгоритмов можно повысить за счет незначительных изменений их отдельных элементов или шагов. Так, при успешном шаге можно продолжать шаги в найденном направлении до тех пор, пока функция улучшается (использование идеи одномерной ми­ нимизации).

Другая возможная модификация заключается во введении в алгоритм процедуры самообучения (адаптации). Это касается вероятностных харак­ теристик случайного вектора S. Первоначально все направления этого век­ тора равновероятны. В процессе поиска накапливается информация об эф­ фективности разыгранных направлений, на основе которой корректируется распределение вероятностей направлений случайного вектора. В результа­ те повышается вероятность удачных направлений при одновременном снижении вероятности неудачных.

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

Целесообразность применения случайного поиска возрастает с увели­ чением числа переменных, а при средней и большой размерности он ста­ новится практически безальтернативным. В отличие от методов, исполь-

са

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

8.8.8. Генетические алгоритмы

По своей концепции генетические алгоритмы близки к методам слу­ чайного поиска [6]. В них сочетаются элементы случайности и детермини­ рованности, что характерно для всех природных процессов. Заимствовани­ ем механизмов живой природы и обусловлено название “генетические”.

Идея генетических алгоритмов была высказана Д. Холландом в 60-е годы и затем развита им в фундаментальной работе “Адаптация в естест­ венных и искусственных системах” (1975). Использовать их в численной оптимизации предложил Д. Гольдберг (1995). Но в основном генетические алгоритмы находят применение для обучения нейронных сетей. Поэтому рассмотрим их только на уровне идей.

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

Любая альтернатива (вариант) представляется в виде строки (как пра­ вило, битовой) фиксированной длины, с которой манипулируют вне связи с содержанием задачи. Строка как абстрактная модель называется кодом. В коде в общем случае представлен набор параметров, зависящих от аргу­ ментов целевой функции. Код и его структура определяют генотип. При­ менительно к задачам оптимизации экземпляры кода, называемые хромо­ сомами или особями, есть точки в пространстве поиска. Совокупность особей образует популяцию, а последовательные популяции - поколения.

Основными параметрами конкретного алгоритма являются размер по­ пуляции и вероятности применения операторов. Первоначально по содер­ жанию задачи формируется генотип и создается исходная популяция. Раз­ мер популяции N рекомендуется брать исходя из оценки числа возможных альтернатив г.

N= 2 log 2 г.

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

(8.54)

где/ - значение критерия на /-й особи.

Для создания потомков используется оператор скрещивания, модели­ рующий процесс наследования за счет передачи части свойств от родите­ лей к потомкам. Вероятность его применения рекомендуется брать не ниже

0,9. Он производит обмен подстроками родительских особей и, следова­ тельно, от пары родителей образуется два потомка. Как это происходит, зависит от выбранной процедуры скрещивания. Например, при длине строки п из первых л-1 равновероятных натуральных чисел разыгрывается одно число, которое принимается за точку разбиения. Затем подстроки ро­ дителей, находящиеся справа от точки разбиения, меняются местами.

К новым особям применяется оператор мутации. Вместе с операто­ ром скрещивания он позволяет расширить область поиска, получить осо­ би со свойствами, отсутствующими у родителей. Вероятность мутации берется обычно не выше 0,01. Процесс мутации заключается в случайной перестановке двух элементов строки, в смене значения случайно взятого элемента строки с 0 на 1 или, наоборот, в циклическом сдвиге элементов строки и т.п.

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

На последнем шаге цикла проверяется условие останова. В качестве критерия останова используют число поколений, качество поколения (по­ роговое значение), близость особей между собой и др.

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

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

В заключение приведем небольшой пример, иллюстрирующий одну

итерацию алгоритма.

Пример 8.7. Найти целочисленный максимум функции двух перемен­ ных fix\, х2) = 675 - xi2 - х2 + 20xi + 10х2на области 5 < *i < 36, 2 <х2< П .

Сначала сделаем преобразования: х\ =у\ + 5, х2= уг + 2, тогда 0 < у\ < 31, 0 < у2 < 15. В этом случае новые аргументы функции у\, у2можно предста­ вить в двоичной системе, а за код принять строку из девяти бит. Первые' пять бит будут отражать у\, остальные —уь Определим размер популяции: N = 2 log2(16-32)= 18. Ограничимся N= 10. Используя датчик случайных чисел, создадим исходную популяцию и для всех ее особей вычислим зна­ чение/ и вероятность отборар, (табл. 8.1).

 

 

У\

 

 

 

 

Таблица 8.1

Строка

Экз. кода

Лг

Х\

*2

/

Pi

1

011001010

12

10

17

12

702

0,1199

2

100001101

16

13

21

15

579

0,0989

3

110011100

25

12

30

14

319

0,0545

4

001011010

5

10

10

12

751

0,1283

5

010001011

8

11

13

13

727

0,1242

6

011101000

14

8

19

10

694

0,1186

7

101010111

21

7

26

9

528

0,0902

8

111010001

29

1

34

3

2 2 0

0,0376

9

001101110

6

14

11

16

678

0,1158

10

100010010

17

2

22

4

655

0,1119

Действия оператора отбора, использующего распределение р „ приве­ ли к выбору родительских пар (2;7), (5; 10), (6;9), (1;4), (4;9). В каждой па­ ре точки разбиения выбираются независимо с помощью датчика целых случайных чисел от 1 до 8 с равными вероятностями. Результаты работы оператора скрещивания приведены в табл. 8.2. Позиции точки разбиения показаны косой чертой. Значения аргументов и функции приведены для потомков.

 

 

 

 

 

 

Таблица 8.2

Строка

Экз. кода

Экз. кода

У\

Уг

Х \

X I

/

родителей

потомков

 

 

 

 

 

 

2

100/001101

100010111

17

1

2 2

9

640

7

101/010111

101001101

20

13

25

15

475

 

5

0100010/11

010001010

8

10

13

12

742

10

1000100/10

100010011

17

3

22

5

656

6

01110/1000

011101110

14

14

19

16

598

9

00110/1110

001101000

6

8

11

10

774

1

01/1001010

011011010

13

10

18

12

687

4

00/1011010

001001010

4

10

9

12

750

4

00101/1010

001011110

5

14

10

16

679

9

00110/1110

001101010

6

10

И

12

750

Теперь предположим, что оператор мутации сработал для 7-го потом­ ка, поменяв местами биты 1 и 2. Код этого потомка сменился с 011101110 на 101011010, значение функции стало 495. Расширенная популяция включает в себя десять исходных особей и десять потомков. Сократим популяцию до принятого размера, отбрасывая особи с меньшими значе-

ниями функции. Полученная после этого популяция первого поколения представлена в табл. 8.3. В ней только первые четыре особи из исходной популяции.

 

 

 

 

Таблица 8.3

Строка

Экз. кода

*1

*2

/

1

01100 1 0 1 0

17

12

702

2

0 0 1 0 1 1 0 1 0

10

12

751

3

010001011

13

13

727

4

0 1 1 1 0 1 0 0 0

19

10

694

5

0 1 0 0 01010

13

12

742

6

0 0 1 1 0 1 0 0 0

11

10

774

7

01101 1 0 1 0

18

12

687

8

00100 1 0 1 0

9

12

750

9

00101 1 1 1 0

10

16

679

10

001101010

11

12

750

Из сравнения данных в табл. 8.1 и 8.3 видно, что новая популяция луч­ ше исходной. Если среднее значение целевой функции на начальной попу­ ляции было равно 585,3, то на новом поколении оно возросло до 725,6.

Следующий шаг заключается в проверке условия окончания поиска. Оно может быть представлено в разных вариантах: minf > / min, или т а x f - min / < Б/, или n > изадан. В первом варианте все особи должны быть лучше заданного уровня качества, во втором критерием выступает бли­ зость особей, в третьем - число поколений (итераций). Если предполо­ жить, что выбранное условие выполняется на первом поколении, то по­ иск на этом заканчивается. За решение принимаем лучший результат: Х\ = 11, хг = 1 0 ,/= 774. Оптимальному решению соответствуют значения: X] = 10, х2= 5 ,/= 800. Сравнение показывает, что по значению критерия получено неплохое приближение к оптимуму. Понятно, что продолже­ ние итераций приведет к дальнейшему улучшению популяции и получе­ нию более близкого к оптимальному решения. А

Из описанной схемы генетического алгоритма и приведенного приме­ ра можно сделать вывод, что самым важным этапом применения алгорит­ ма является определение генотипа (структуры кода) и для каждой задачи он индивидуален. Кроме того, специфика задачи может диктовать и требо­ вания к работе операторов. Например, в задаче коммивояжера оператор скрещивания не должен порождать потомков, в коде которых один пункт представлен более одного раза. Таким образом, по своей сути генетические алгоритмы являются эвристическими.

8.9.Методы условной оптимизации

Вобщем случае задача может содержать ограничения в виде равенств

инеравенств, которые и определяют допустимое множество D. Наличие

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

Из большого числа методов условной оптимизации можно выделить три основные группы:

1) методы возможных направлений: метод проектирования градиента, методы Зойтендейка, Вулфа и др.;

2) методы штрафных и барьерных функций;

3) модификации методов безусловной оптимизации.

Методы первой группы отличаются способом определения возмож­ ных направлений. Направление d в точке х*еD называется возможным на­ правлением, если существует X ^ 0 , при котором

х* + Xd € D;

/(х* +X d)</(x*).

Эти условия означают, что на направлении d найдутся допустимые точки, в которых значение функции лучше, чем в точке х*.

Сначала рассмотрим один из методов возможных направлений.

8.9.1. Метод проектирования градиента

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

Приведем один из вариантов метода проектирования градиента снача­ ла для задачи с ограничениями-равенствами, а затем для общего случая. Метод применим, если целевая функция и все функции ограничений диф­ ференцируемы.

Пусть ограничения заданы в виде

v|/y(x) = 0, j = l,m; т<п.

(8.55)

Найдем возможное направление /, на котором скорость изменения це­ левой функции максимальна:

(8.56)

В допустимой области D функции ц/7 постоянны, поэтому искомое на­ правление должно удовлетворять системе равенств

d ^ j ^ d y j d x , _

(8.57)

dl

ЗГ - 0 ’

7 = 1>w-

ы dx,

dl

 

 

 

Из связи направления с координатами следует

 

 

<//2=£(<&, >2,

 

 

что перепишем в виде

/=1

 

 

 

 

 

 

 

 

 

J L . f

/ * •

Л 2

 

 

 

i - s f —

= 0.

(8.58)

 

м 1 Л .

 

 

Таким образом, для нахождения наилучшего возможного направления необходимо решить задачу оптимизации (8.56)-(8.58). Так как условия имеют вид равенств, а функции дифференцируемы, для решения этой вспомогательной задачи воспользуемся методом Лагранжа.

Запишем функцию Лагранжа:

 

 

 

 

 

dx

Г' df

dx,

 

^

п ( dx ^ ^

т

" д\У , dx-

 

— >А = 1

dxi

dl

+ %(

 

 

 

 

 

 

 

dl

 

 

 

 

 

 

 

 

Неизвестными в ней являются векторы

dx

 

~ и А. Взяв производные

QF

,

. —

и приравняв их нулю, получим

 

( А Л

i = \,n

 

 

 

 

 

 

 

 

 

 

 

 

 

U /J

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дх,

 

 

dl

р , J

дх.

 

 

 

Отсюда выразим компоненты искомого вектора:

 

 

 

 

dXj _

 

/

_

 

А . ,

\

____

 

 

 

 

1

 

J

J=\

dx,

,

i = \,n.

(8.60)

 

 

 

~ d [ ~ T k Q{dx,

j

 

 

Подставив (8.60) в (8.58), найдем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

\ i

 

 

 

 

 

 

2 XQ ~

{dx,

Jml

dx, j

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

С учетом этого выражения формула (8.60) примет вид

dxI __

дх(

 

дх{

dl

 

 

(8.61)

n ( df

_

d y . v

 

 

m

 

 

dx: + / = i

~дэГJ

Для определения неизвестных множителей Xj воспользуемся системой (8.57). Подставив в нее (8.61), получим

£

ду к

 

т

 

= 0 ,

к = \,т.

 

И +£ х.® Ь

 

,=1

а»#

дх,

%

дх(

 

 

 

 

После раскрытия скобок окончательно имеем

 

 

« д п

д

t y j

"

 

а /

й = 1,/и.

(8.62)

^

А~

^

> Av

^

Av

Av.

м

 

у=1

а*/

,=1

дх,

дх,

 

 

Так как направление ищется в конкретной точке, то все производные в (8.62) - известные константы. Поэтому система уравнений (8.62) являет­ ся линейной системой относительно Хг Ее решение не вызывает затрудне­ ний (при условии, что матрица системы не является особенной). Найдя значения Xj и подставив их в (8.61), получим компоненты проекции гради­ ента (в знаменателе (8.61) имеем длину проекции градиента). Движение осуществляется в направлении, противоположном проекции.

Аналогично градиентному методу новая точка вычисляется по фор­ муле

 

т

 

 

 

дх,

н

dXj

/ = 1,л.

(8.63)

X*+1 = х? - й * .

 

 

I r ( &

+ y i

£ ^

v

 

|Д & ,

£

' дх,

,

 

Алгоритм:

1.Задать начальную точку, удовлетворяющую системе (8.55), началь­ ное значение И0и точность по величине проекции градиента е.

2.В текущей точке вычислить градиенты всех функций (f и \|/у) и ре­ шить систему (8.62).

3.Вычислить проекцию градиента по формуле (8.61).

 

 

5 / + V *

Ь / j

\2

4.

Проверить, если J £

й е, то завершить поиск.

 

dxj

 

J 1=1dxj y_j

 

5.

Вычислить новую точку по формуле (8.63).

6 . Если значение целевой функции улучшилось, перейти на шаг 2, иначе уменьшить й* в два раза и перейти на шаг 5

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

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

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

 

т

> еу>то включается про-

выполняется в каждой новой точке. Если £ 0 |/у Г

 

у=1

 

цедура коррекции, заключающаяся в минимизации невязки:

т

=>min.

(8.64)

£ (V y)

y=i

*•

 

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

Теперь рассмотрим случай, когда ограничения заданы в виде нера­ венств (р/х) < 0. Поиск начинается из точки, в которой удовлетворяются все ограничения. Пока они выполняются как строгие, движение осуществляется по градиентному методу. Когда достигается граница допустимого множест­ ва, одно или несколько ограничений обращаются в равенства. Такие ог­

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

8.9.2. Метод штрафных функций

Совершенно иной подход используется в методах штрафных и барь­ ерных функций. Ограничения задачи специальным образом отражаются в критерии, в результате чего критерий модифицируется, а исходная задача на условный экстремум сводится к задаче на безусловный экстремум [5].

В методе штрафных функций в критерий вводится штраф при нару­

шении условий задачи. Пусть в общем случае имеем задачу:

 

Дх) -» min;

(8.65)

cpj(x) < 0 ,

i =

(8.66)

\|/,(х) = 0,

/ = \^Гг .

(8.67)

Тогда можно построить вспомогательную функцию

 

0(х) =Дх) + а-Я(х),

(8 .68)

где Я(х) - функция штрафа; а - параметр штрафа.

 

Вспомогательная функция играет роль модифицированного критерия, который при выполнении всех ограничений должен совпадать с исходным. Поэтому необходимо, чтобы в допустимой области Я(х) равнялась нулю, а вне ее была положительной. Для задачи (8.65)-(8.67) функция штрафа включает в себя две составляющие Я(х) = Яр(х) + Я¥(х), учитывающие ог­ раничения-неравенства и ограничения-равенства соответственно и удовле­

творяющие условиям:

 

 

 

0,

Vcp, < 0;

0,

V\|/, = 0;

#*(•) = > 0,

3 ср, > 0;

#„(•) = > 0 ,

(8.69)

3 \ |/,* 0 .

Возможны разные конструкции функций, обладающих указанными

свойствами. Типичные представители составляющих штрафной функции имеют вид:

Я ф0 0 = £ [max{0,(р, (х)}]р,

/=1

я ч,(х) = 1 ;|¥ ((х)|р ,

/=1

где р — натуральное число. Для дифференцируемости функций берут чет­ ные значенияр, обычно р - 2.

Чем больше а, тем сильнее влияет функция штрафа и, значит, тем точнее выполняются условия задачи.

Пример 8 .8 . Дана задача

/(х) -» min; <p(x) = 3 - x < 0 .

Ответ очевиден: х = 3. Теперь сведем эту задачу к определению безус­ ловного экстремума вспомогательной функции. Построим штрафную функ­ цию в соответствии с (8.69): Н= [max (0,3-х)]2. Тогда приходим к задаче

0 = х + а[тах (0, 3-х)]2-» min.

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

Действительно, при х < 3

вспомогательная функция имеет вид

© = х + а ( 3 - х ) 2.

Находим минимум этой функции:

3 _1_

^ = 0

dx

 

2 а

Отсюда получаем Нт** = х* -

3.

 

Пример 8.9. Рассмотрим влияние параметра шага в задаче:

/= (1 - хх)2 + 5(х2 - х,2 )2 -» min,

-4.

Здесь \|/ = х2 2д :1 +4 и 0 = (1- JC1)2 + 52 -JCi2)2 +а(дс2

+4)2 На 2

рис. 8.43 построены линии уровня функции 0 для разных значений а и ли­ ния ограничения \|/. При а = 0 имеем © = f и минимум © достигается в точке безусловного минимума/: х\ = х2= 1. С увеличением а меняется фор­ ма линий уровня 0 и положение минимума. При а = 1 минимум 0 смеща­ ется к линии ограничения, а при а = 1000 он практически совпадает с ус­ ловным минимумом задачи.

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

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

Алгоритм:

1. Задать: начальную точку х°, точность е, начальное значение ао

ичисло Р> 1.

2.Минимизировать 0(х) одним из методов безусловной оптимизации,

*

в результате чего определяется X*.

$ ф

3. Если а кН(хк)<е, то прекратить поиск, приняв х* за оптимальное

решение задачи.

Ф

4. Положить ,аА+1 = (кхА, за начальную точку принять х* и вернуться на шаг 2. А

Рекомендуется выбирать значения параметров алгоритма из диапазо­ нов аое(0,1], (Зе(1,10]. Начальную точку следует задавать в недопустимой области.

Пример 8.10. По алгоритму штрафных функций решить задачу:

/ = 4дГ|2 + Зх\ ~ 4 *1*2 + *i -> min,

4х\ + 9^2 =36.

Возьмем начальную точку х° = (—5;5), ао = 0,21, Р = 5 и е = 0,0001. Применяя для минимизации © метод Ньютона, получаем результаты, пред­ ставленные в табл. 8.4.

 

 

 

 

 

Таблица 8.4

Номер

а

*1

*2

/

©

а Н

итерации

 

 

5

 

283,533

 

0

0,21

-5

270

13,533

1

1,05

-0,191

-0,132

-0,094

0,939

1,032

2

5,25

-0,209

-0,169

-0,09

5,035

5,125

3

26,25

-0,654553

-1,059105

1,651353

13,504372

11,853019

4

131,25

-0,990765

-1,731532

5,068137

7,691651

2,623514

5

656,25

-1,046856

-1,843717

5,814225

6,343889

0,529664

6

3281,25

-1,057736

-1,865478

5,964774

6,070887

0,106113

7

16406,25

-1,059899

-1,869804

5,994933

6,016163

0,02123

8

82031,25

-1,060331

-1,870668

6,000967

6,005213

0,004246

9

410156,25

-1,060417

-1,870841

6,002174

6,003023

0,000849

10

2050781,25

-1,060434

-1,870876

6,002415

6,002585

0,00017

11

>10'

-1,060434

-1,870884

6,002469

6,002503

3.397Е-05

Как следует из таблицы, решение с заданной высокой точностью получено за 11 итераций алгоритма. Заметим, что, несмотря на увеличение а, значение а Н стремится к нулю, обеспечивая схо­ димость алгоритма. Траектория поиска и линии уровня функции / изображены на рис. 8.44. А

Второй пример поиска методом штрафных функций приведен на рис. 8.45 для задачи:

/ = 4(х, - 2) 2 + (х2 - х2 ) 2 -> min,

х2 = 0,2х2 - 6 .

 

Поиск

проведен

из

началь­

 

ной точки (-2;-7) с параметрами

 

ао= 0,1 и

р = 2. Здесь, как и в пре­

 

дыдущем

примере,

на

первой

 

итерации алгоритма движение на­

 

правлено в сторону безусловного

 

минимума целевой функции. Это

 

объясняется

небольшим

началь­

 

ным значением

параметра штра­

 

фа, при котором основное влияние

 

на направление оказывает целевая

 

функция. С возрастанием а направ­

 

ление поиска

ориентируется на

 

условный экстремум.

 

 

Рис. 8.45

Еще один пример поиска по­

 

казан на рис. 8.46 для задачи:

/ = (хг - я, ) 2 + 4(х2 - 2) 4 -» min,

 

 

 

Ф = Х\ + х2 + 4 < 0.

 

 

 

 

 

Здесь поиск производился при ао= 1 и

р = 10. Такие параметры обуслови­

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

Таким образом, выбор параметров поиска сущест­ венно влияет на эффектив­ ность алгоритма.

8.9.3.Метод барьерных функций

Вотличие от метода штрафных функций, данный метод применим

кзадачам с ограничениями только в виде неравенств.

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

ходу на границу.

 

Исходная задача на условный экстремум задается в виде:

(8.70)

Лх) -► min;

Ф,{х) < 0, i = lm .

(8.71)

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

© (*) = fix ) + ц В Д ,

где В(х) - барьерная'функция; ц - параметр барьера.

Обязательное условие - внутренность области не должна быть пустой (имеются точки, в которых V<p,(x) < 0).

Барьерная функция строится так, чтобы она была неотрицательной и непрерывной на допустимом множестве и стремилась к бесконечности при приближении текущей точки изнутри к границе:

а д -

оо,

v<Pl<00;

 

Зф, = 0 .

Как и в случае штрафной функции, существует несколько конструк­ ций 2?(х), удовлетворяющих этим условиям. Но в основном используется

барьерная функция в виде

 

 

т _ 1

(8.72)

В(х) =У —

.

й я >/00

 

Понятно, что решение вспомогательной задачи зависит от значения

параметра барьера. Покажем на задаче из примера 8.7 влияние ц

на ре­

зультат минимизации 0 .

 

 

Пример 8.11. Исходная задача:

 

 

fix) =х —> min;

 

ф(х) = 3 - х

< 0 .

 

Барьерную функцию строим согласно (8.72). Тогда вспомогательная

функция будет иметь вид

=х +_ И _

 

0 = х + р- -1

 

(3 -х )

х - Ъ

 

Находим точку минимума 0:

d 0 = 0 => ж* =3+ 7ц- dx

Отсюда получаем

Нтх* - х ' =3.

ц->0 и

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

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

внутренних штрафов.

Рис. 8.47

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

Алгоритм:

1.Выбрать начальную точку х° так, чтобы V(p/(х°) < 0; задать точность е, начальное значение Цои число (3 е (0, 1).

2.Минимизировать 0(х) одним из методов безусловной оптимизации

*

и зафиксировать Xfc.

 

3.

ф

Если р^В(хл)< е, то остановиться, приняв

х^ за оптимальное ре­

шение

задачи.

 

*

4. Положить ц*+1 =(3ц*, за начальную точку принять х^ и вернуться на шаг 2

Значение Цо можно брать из интервала [2,10]. Важное замечание к п.2 алгоритма: в процессе поиска минимума вблизи границы из-за дискретно­ сти шагов возможен выход за допустимую область, где барьерная функция становится отрицательной, что повлечет за собой расхождение поиска. По­ этому необходима явная проверка на допустимость точек на каждом шаге при минимизации 0 .

Пример 8.12 (Базара, Шетти). Исходная задача:

Дх) = (*I- 2)4+( *I- 2X2)2-> min;

ф(х)= X,2 2< 0 .

Решение находим, используя соответствующую вспомогательную функцию

©=(X.-2)4+(X,-2 X2)2- ^

L .

*1

~ * 2

За начальную точку возьмем допустимую точку (0;1), ро =10 и (J = 0,1. Результаты поиска условного минимума алгоритмом барьерных функций представлены в табл. 8.5 и на рис. 8.48.

 

 

 

 

 

 

Таблица 8.5

Номер

ц

Х \

*2

/

©

р я

итерации

1

10

0,7079

1,5315

8,3338

18.0388

9,705

2

1.0

0,8282

1,1098

3,8214

6,1805

2,3591

3

0,1

0,8989

0,9638

2,5282

3,1701

0,6419

4

o,oi

0,9294

0,9162

2,1291

2,3199

0,1908

5

0,001

0,9403

0,9011

2,0039

2,0629

0,0590

6

0,0001

0,94389

0,89635

1,9645

1,9829

0,0184

Как и следовало ожидать, с уменьшением р значение рВ стремится к нулю.

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

ввиде

0 (х) =Дх) + цЯ(х) +

Рис. 8.48

где барьерная функция В(х) применяется к неравенствам, а штрафная функция Я (х)- к ограничениям-равенствам. При этом задачи минимиза­ ции © решаются с последовательно уменьшающимися значениями пара­ метра р.

8.9.4. Другие методы условной оптимизации

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

Аналогичное дополнение алгоритма Хука-Дживса делает его пригод­ ным для поиска условного минимума. Генетические алгоритмы также мо-

гут использоваться для условной оптимизации. Для этого в них вводится детерминированный оператор жизнеспособности: если особь не удовле­ творяет условиям “жизни”, она погибает. Такой оператор должен приме­ няться к каждой особи.

В данной главе не затронуты вопросы, возникающие при минимиза­ ции многоэкстремальных функций. Задача поиска глобального минимума многократно сложнее локальной оптимизации. Напомним, что при мини­ мизации унимодальных функций в одних методах направление спуска вы­ бирается по локальной модели целевой функции, например линейной (гра­ диентные методы) или квадратичной (метод Ньютона), в других - без использования модели, например симплексный и случайные методы. В случае многоэкстремальной функции методы поиска строятся также на основе либо модели глобального поведения функции, либо эвристических представлений.

Несмотря на интенсивные исследования проблемы глобальной опти­ мизации, сегодня нет эффективных методов, построенных на идее гло­ бального поведения функции. Практическое применение находят в основ­ ном подходы, использующие локальный спуск из многих начальных точек с последующим выбором лучшего из найденных решений. Многократный спуск иногда называют мультистартом. Ему присущи такие недостатки, как возможность неоднократного спуска в одну и ту же точку и отсутствие гарантии попадания в область притяжения глобального минимума. Эффек­ тивность мультистарта повышают за счет обеспечения выхода из “мелких” минимумов, исключения повторных спусков в найденные минимумы и т.п. С этой целью процессу спуска придают инерцию, которая позволяет про­ скакивать “неглубокие” минимумы (метод тяжелого шарика), изменяют целевую функцию для придания ей “туннельного эффекта”, обеспечи­ вающего переход из найденного минимума в более глубокий, используют редукцию задачи и другие идеи.

8.10.Задания для самостоятельной работы

1.Решить следующие задачи квадратичного программирования сим­ плекс-методом с использованием правила ограниченного ввода. Результа­ ты представить графически (допустимое множество и условный и безус­ ловный оптимумы функцииj), показать качественно линии уровняf

№ 1 / = 2 х , + 2 * 2 - х , 2 - 2 х 2 + 2 х ,х 2 -> ш а х

№ 2 / = - х, + 6 х 2 - JC,2 -

З х2 + З х ,х 2 - » ш ах

2х\ + х 2 < 4

4xi + Зхг

5 1 2

- х , + х 2 < 2

- Х 1 + Х 2 < 1

№3

 

/ =

15JC, + 8JC2 - * 2 - 3*2 + *j*2

max

№ 4

/ =15x, + 8X 2 - x ,2 - 3x2 + x,x2 ->

max

 

 

 

3xi + х2 < 15

 

 

6xi + 2x2 < 30

 

 

 

 

* 1 + 2*2 < 10

 

 

2xi + 4x2 £ 20

 

 

 

 

* 1Л ^-0

 

 

XlA2 ^ 0

 

№5

/ =

- х, + 6*2 - х ,2 - З* 2 + 3*|*2 —> шах

№6 /= - 4 * , + 8*2 - x,2 -1,5*2 + 2*1^2 -^niax

 

 

 

- 2*i + * 2 ^ 2

 

 

3*i + 5*2^ 15

 

 

 

 

Х\+Х2 < 3

 

 

*1 *2 ^ 1

 

 

 

 

Х\*2>Ъ

 

 

*1Л ^ 0

 

№7

/ = 4*, + 4*2 - Зх2 -* 2 + 2* ,*2 ->

шах

№8

/ = Зх, + 10х 2 - 2x 2 - 5x 2 —> max

 

 

 

 

3*i + 6*2 < 18

 

 

4X( - X2> 8

 

 

 

 

*i - 4*2 < 4

 

 

X) +X2 ^ 12

 

 

 

 

* 1,*2 £ 0

 

 

*1Л ^ 0

 

№9

/ = 4*j + 4*2 - 3*j2 - * 2 + 2*!*2 ->

шах

№10

/ = 5x, +10x2 - x ,2 - x2 + 0,5X,X2 -> max

 

 

 

3X I + 4 X2<12

 

 

8 - 2x2 S 0

 

 

 

 

* 1 - 2*2 < 2

 

 

5 -X |-X 2 £ 0

 

 

 

 

Х]^2^ 0

 

 

X\>x2^ 0

 

№11 / =

4х, + 4х2 - 2 x f - 4 х 2 +4х,х2 -* шах

№ 12 /= 30x, +16x2 - 2x2- 6x 2 + 2X,X2 —>max

 

 

 

- х ]+х2<2

 

 

3xi + x2^ 15

 

 

 

 

2*I + *2 £ 4

 

 

X1+2X2 <10

 

 

 

 

x\jc2>0

 

 

*lЛ ^ 0

 

№13

 

/ = - 2*j + 12*2 —2 x f - 6*2 + 6*1*2 —^ max

№14

/= 2 *1 + 8*2 - 4 x ,2 - 4*2 + 2 *,*2 —> max

 

 

 

- 2*i + *2 ^ 2

 

 

2*i + 4*2 < 24

 

 

 

 

2*i + 2*2 < 6

 

 

7*i + 5*2 £ 35

 

 

 

 

 

 

 

x\yX2>0

 

№15

/ = - 5*, + 6*2 - *,2 - 2*2 + 2*,*2 -> max

№16

/= 1 5 * , + 8* 2 - x ,2 “ 3* 2 + *,*2

max

 

 

 

2*i + 6*2 ^ 30

 

 

6*i + 2*2 < 24

 

 

 

 

2*i + *2 <8

 

 

2*i +4*2 <>18

 

 

 

 

* 1 ^ 0

 

 

* 1Л £ 0

 

№17

/= x , + 4X2 - 2xf - 2xl + х\хг

max

№18

/ = 10* ,+ 20* 2 - 2*,2 - 2* 2+*,*2 -> max

 

 

 

x, + 2x2 < 12

 

 

4 - * 2^ 0

 

 

 

 

7xi + 5X2 > 35

 

 

5 - * i —*2 £ 0

 

 

 

 

x\jc2>0

 

 

* 1Л ^ 0

 

№19

/ = 3*, - 2*2 - 0 ,5*f - *2 + *1*2 -> max

№20

/ = - *, + 6*2 - *,2 - 3* 2 + 3*|*2 —> max

 

 

 

- * i + 2*2 < 2

 

 

- 2*i + 2*2 ^ 2

 

 

 

 

2*i *2 < 2

 

 

*i + 0,75*2 ^ 3

 

 

 

 

* 1Л ^ 0

 

 

x\jc2Z0

 

№ 21

/ = 10*, —12*2 + 2*f +4*2 -4*,*2->min

№22

/ = 8x, + 8x2 - 6xf - 2x2 + 4x,x2 -* max

 

 

 

*i + 3*2 ^ 12

 

 

3xi + 4x2 £ 12

 

 

 

 

*1 + * 2^6

 

 

X I- 2X2 <,2

 

 

 

 

X]JC2*0

 

 

Л 1 Л ^0

 

№23 /= 2 * , +2*2 -l,5 x ,2 -0,5*2 + x ,*2

max

№24

/= 5 * , - 6*2 + *,2 + 2*2 - 2*,*2 ->

min

 

 

 

3*i + 6*2 £ 18

 

 

*i + 3*2 < 12

 

 

 

 

*i - 4*2 £ 4

 

 

*1 + * 2 ^ 6

 

 

 

 

*1,*2^0

 

 

* 1 Л ^ 0

 

2. Найти минимум функции / = к(х - а)аф - х)р на заданном интервале [а,Ь] методом золотого сечения и методом Фибоначчи. Данные приведены в табл. 8.6 .

 

 

 

 

 

 

Таблица 8.6

к

а

Ъ

а

 

Р

Е

п/п

 

 

-0,5

 

 

 

 

3

 

1

2

10

1,2

 

0,1

2

- 1,2

5

14

2

 

1,5

0,15

3

- 2

1

12

3

 

1

0,15

4

- 0,1

4

16

1

1

2

0,2

5

-3

10

15

2

 

2

0,05

6

-1,5

3

13

1,8

 

2,5

0,15

7

- 2

-3

9

3

 

1,2

0,2

8

-1

-5

6

2,5

 

2

0,18

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

3.1. /= х ,- 6х2+ х,2+ 3х2 -Зх,х2.

3.2. / =

( X , - 2 ) 4+ ( X I - 2 X:2) 2 .

3-3. /

= (х ,- 2)2 + 102 - х ,2)2

3.4./= (х!-2)4-1-6(х,-2х2)2.

3.5./=10к, -12х2 +2xf +4х2 -4х,х2.

3.6./ = 50(х, - 2)2 + 5(х2 - х,2)2

4.Найти условный минимум методом штрафных функций в задачах:

4.1./ = (*,- 2)2 + (х2 - х,2)2 -> min, х2 =0,1х,2 -7 .

4.2./ = х, + 4х,2 + Зх2 - 4х,х2 -> min,

х2 <х,-3.

4.3./= (XI-2)4+20( Xi-2x2)2-»min, xi>2x\ + 2 .

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]