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

Семестровая 1 (Методы оптимальных решений) / Методы оптимальных решений учебное пособие

.pdf
Скачиваний:
1245
Добавлен:
19.04.2015
Размер:
6.01 Mб
Скачать
f (X )
+ he(0)
e(jk+)e(jk)

e(jk+)e(jk) = 0, j = 1, 2,, n,

(5.3.6)

e(jk+) 0, e(jk) 0, j = 1, 2,, n.

(5.3.7)

Эту задачу после введения фиктивных переменных (для преобразования к предпочитаемому виду) можно решить симплексным методом. При этом для учета условий = 0 при вычислительной реализации сим-

плексного метода необходимо следить за тем, чтобы не вводить в базис одновременно переменные e(1)j+ и e(1)j с одинаковым индексом j (j = 1, 2, .., n).

ПРИМЕР 5.3.1. Требуется найти приближение к оптимальному решению задачи выпуклого программирования (3.2.7)—(3.2.9) из примера 3.2.1, для чего провести три первые итерации метода возможных направлений, выбрав в качестве начального приближения вектор

(0) = 1

X .8

Решение. Как было показано в примере 2.2.1, начальное приближение

x(0) 1

= 8

является в н у т р е н н е й точкой множества допустимых решений. Очередное приближение x(1) к оптимальному решению задачи выбе-

рем в направлении наискорейшего возрастания целевой функции:

 

(0)

= grad f (x

(0)

 

−2(x1

− 8)

 

 

 

 

 

−2(1 − 8)

 

14

 

 

 

 

e

 

 

) =

−2(x

− 8)

 

 

 

( 0 )

=

−2(8 − 8)

 

=

0

.

 

 

 

 

 

2

 

 

 

x=x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Найдем границы шага смещения h в направлении e(0), при котором

точка

 

 

 

1 + 14h

1

14

x(1) = x(0) + he(0) =

 

+ h

 

=

 

 

8

 

0

 

8

будет оставаться во множестве допустимых решений. Запишем условия допустимости:

 

 

3(1 + 14h) + 8 15,

 

+ 14h + 8 10,

1

1 + 14h 0,

 

 

 

0.

8

Решениями этой системы неравенств являются все h [−1 / 14;1 / 14] . Выберем h из этого отрезка таким образом, чтобы значение целевой функции в точке x(1) = x(0) было максимальным.

161

Для этого найдем точку максимума функции

Φ0 (h) = f (x( 0 ) + he( 0 ) ) = −(1 +14h 8)2 (8 8)2 = −(14h 7)2 = −49(2h 1)2

одной переменной h на отрезке h Î-[1 / 14;1 / 14].

Производная 0 (h) = -49 × 2(2h -1) = -98(2h -1) обращается в нуль в точке h =1/ 2 , положительна при h <1 / 2 и отрицательна при h >1/ 2 , поэтому точка h =1/ 2 является точкой глобального максимума функции F0 (h) , а максимум функции F0 (h) на отрезке h Î-[1 / 14;1 / 14] достигается в точке h(0) =1 / 14 .

Таким образом, если выбрать шаг смещения h(0) =1 / 14 в направлении

 

14

 

 

 

e(0) =

 

 

 

 

 

0

 

 

 

 

наискорейшего роста целевой функции f (x) , то при движении от точки

x(0)

=

1

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

 

к точке

 

 

 

 

 

 

x(1) = x(0) + h(0)e(0)

=

1

+14h(0)

 

2

 

 

 

=

 

 

 

 

8

 

 

8

целевая функция возрастет наибольшим образом, а точка X(1) останется во

множестве допустимых решений.

 

 

 

 

 

 

Итак, получили новое приближение

 

 

 

x(1)

2

 

 

 

 

=

 

 

 

 

 

8

 

 

 

 

к оптимальному решению задачи (3.2.7)—(3.2.9).

Переходим ко в т о р о м у ш а г у метода возможных направлений. Точка x(1) является г р а н и ч н о й точкой множества допустимых решений; второе из ограничений (3.2.8) выполняется в этой точке как равенство, а первое ограничение (3.2.8) и оба ограничения (3.2.9) — как

строгие неравенства:

3 × 2 + 8 < 15,

+ =

2 8 10,

2 > 0,

8 > 0.

162

Поэтому если двигаться в направлении

 

−2(x

−8)

 

 

 

 

 

grad f (x(1) ) =

1

 

 

 

 

 

−2(x2

− 8)

 

 

x=x(1)

 

 

 

 

−2(2 − 8)

12

 

=

 

=

0

 

 

−2(8 −8)

 

 

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

grad f (x(1) ) =

12

 

 

 

 

 

 

0

 

не является возможным в точке

 

 

 

 

 

2

 

 

 

x(1) =

8

.

 

 

 

 

 

Возможное направление

e(1)

 

e(1) = 1(1)

 

e2

 

возрастания целевой функции f (X )

в точке x(1) выберем так, чтобы оно яв-

лялось оптимальным решением задачи (5.3.2)—(5.3.3),

которая в данном

случае имеет вид

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z =12e(1)

+ 0e(1)

 

→ max,

(5.3.8)

 

 

 

 

 

 

1

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e(1)

+ e(1)

0,

 

 

 

 

 

 

 

 

1

 

2

 

 

 

 

 

 

 

(5.3.9)

 

 

 

 

 

 

 

 

e1(1)

 

+

 

e2(1)

 

1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Чтобы свести эту задачу к задаче линейного программирования,

представим переменные e(1)

и e(1)

 

как разности новых неотрицательных

 

 

 

1

 

2

 

 

 

 

 

 

 

 

 

 

 

 

переменных e(1) 0,

e(1) 0,

e(1) 0,

 

e(1) 0 :

 

 

 

 

 

1+

1−

 

 

2+

 

 

 

2−

 

 

 

 

 

 

 

 

 

e(1)

 

= e(1)

e(1) ,

 

 

 

e(1)

 

 

= e(1)

e(1) ,

 

 

1

1+

 

 

1−

 

 

 

 

 

2

2+

2−

 

причем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e(1)e(1) = 0, e(1)e

(1) = 0 .

 

 

 

 

1+

1−

 

2+

2−

 

 

При этом

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e(1)

 

= e(1)

+ e(1)

,

 

 

 

e(1)

 

 

= e(1)

+ e(1) ,

 

 

 

 

 

 

 

 

 

 

 

1

 

1+

 

 

1−

 

 

 

 

 

2

 

 

2+

2−

 

163

и задача (5.3.8)—(5.3.9) примет вид

z =12e1(1)+ −12e1(1)→ max,

e(1)

e(1)

+ e(1)

e(1)

 

0,

 

+

 

2

+

2

 

 

 

 

1

 

1

 

 

 

 

 

e(1)

+ e(1)

+ e(1)

+ e(1)

1,

 

 

1+

 

1−

2+

2−

 

 

 

 

 

e(1)e(1)

= 0,

e(1)e(1)

= 0,

 

 

 

1+

1−

 

 

2+

 

2−

 

 

e(1) 0,

e(1)

0,

e(1) 0, e(1)

0.

1+

 

 

1−

 

 

2+

 

2−

 

Будем решать эту задачу симплексным методом, введя предварительно дополнительные переменные s1 и s2, чтобы преобразовать неравенства в равенства:

z =12e(1) −12e(1)

→ max,

 

(5.3.10)

 

 

1+

1−

 

 

 

 

e(1)

e(1)

+ e(1)

e(1)

+ s

 

= 0,

 

1+

1−

2+

2−

1

 

 

 

e1(1)

+ e1(1)

+ e2(1)

+ e2(1)

+ s2

=1,

(5.3.11)

+

+

 

 

= 0,

e1(1)+ e1(1)

 

 

 

 

 

e(1)e(1)

 

 

 

 

= 0,

 

2+

2−

 

 

 

 

 

 

e(1) 0, e(1) 0, e(1) 0, e(1)

0.

(5.3.12)

1+

 

1−

2+

2−

 

 

 

Для учета условий e1(1)+ e1(1)= 0, e2(1)+ e2(1)= 0 при вычислительной реализации симплексного метода будем следить за тем, чтобы не вводить в базис одновременно переменные e(1)j+ и e(1)j (j = 1, 2).

Симплексная таблица представлена в табл. 5.3.1.

 

 

 

 

 

 

 

 

Т а б л и ц а 5.3.1

cɶ

Базис

h

12

–12

0

0

0

0

 

e(1)

e(1)

e(1)

e(1)

s1

s2

 

 

 

 

1+

1

2+

2

 

 

 

0

s1

0

1

–1

1

–1

1

0

 

0

s2

1

1

1

1

1

1

0

 

 

z0 z

0 – z

–12

12

0

0

0

0

 

 

 

 

 

 

 

 

 

 

 

12

e1(1)+

0

1

–1

1

–1

1

0

 

0

s2

1

0

2

0

2

–1

1

 

 

z0 z

0 – z

0

0

12

–12

12

0

 

 

 

 

 

 

 

 

 

 

 

12

e1(1)+

1/2

1

0

1

0

1/2

1/2

 

0

e2(1)

1/2

0

1

0

1

–1/2

1/2

 

 

z0 z

6 – z

0

24

12

0

6

6

 

 

 

 

 

 

 

 

 

 

 

164

В результате мы получили оптимальное решение

e(1)

= 1 / 2,

e(1)

= 0,

e(1)

= 0,

e(1)

= 1 / 2 .

1+

 

1−

 

2+

 

2−

 

задачи (5.3.10)—(5.3.12).

Теперь легко найти оптимальное решение задачи (5.3.8)—(5.3.9):

e(1)

= e(1)

e(1)

= 1 / 2,

e(1)

= e(1)

e(1)

= −1 / 2 .

1

1+

1−

 

2

2+

2−

 

Тем самым, мы определили н а п р а в л е н и е очередного шага:

 

1 / 2

 

e(1) =

−1 / 2

.

 

 

Найдем г р а н и ц ы шага смещения h в направлении e(1), при кото-

ром точка

 

 

 

 

 

2

1 / 2

2 + h / 2

x(2) = x(1) + he(1) =

 

+ h

 

=

 

8

 

 

−1 / 2

8

h / 2

будет оставаться во множестве допустимых решений. Имеем:

3(2 + h / 2) + 8 − h / 2 15,

 

+ h / 2 + 8 − h / 2 10,

2

 

+ h / 2 0,

2

 

h / 2 0.

8

Точка x( 2) остается во множестве допустимых решений при всех h [−4;1]. Выберем h из этого отрезка таким образом, чтобы значение це-

левой функции f (x) в точке x( 2) было максимальным. Для этого найдем точку максимума функции

Φ1 (h) = f (x(1) + he(1) ) = −(2 + h / 2 8)2 (8 h / 2 8)2

=

= −(h / 2 − 6)2 h2 / 4 = −h2 / 2 + 6h − 36

 

одной переменной h на отрезке h −[4;1] .

 

h = 6 , поло-

Производная Φ1(h) = −h + 6 обращается в нуль в точке

жительна при h < 6 и отрицательна при h > 6 , поэтому точка h = 6 является точкой глобального максимума функции Φ1 (h) , а максимум функции

Φ1 (h) на отрезке h [−4;1] достигается в точке h(1) = 1.

165

Таким образом, если выбрать шаг смещения h(1) =1 в направлении

 

1 / 2

 

e(1) =

−1 / 2

 

 

 

наискорейшего роста целевой функции f (x) , то при движении от точки

x(1) 2

= 8

к точке

 

2 + h(1)

/ 2

 

 

5 / 2

 

x(2) = x(1) + h(1)e(1) =

8 − h

(1)

 

 

=

 

 

 

 

/ 2

15 / 2

 

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

Итак, получили очередное приближение

 

5 / 2

 

x(2) =

 

 

15 / 2

 

к оптимальному решению задачи (3.2.7)—(3.2.9).

Начинаем т р е т и й ш а г метода возможных направлений.

Точка x( 2) является граничной точкой множества допустимых решений; оба ограничения (3.2.8) выполняются в этой точке как равенства, а оба ограничения (3.2.9) — как строгие неравенства:

3 × 5 / 2 +15 / 2 =15,

 

+15 / 2 =10,

5 / 2

 

> 0,

5 / 2

 

> 0.

15 / 2

Поэтому если двигаться в направлении

 

-2(x

- 8)

 

 

-2(5 / 2 - 8)

11

 

 

 

 

 

grad f (x( 2) ) =

1

- 8)

 

 

 

=

 

=

 

 

-2(x2

 

 

x=x( 2 )

 

-2(15 / 2 - 8)

 

1

 

 

 

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

11

grad f (x(2) ) =

 

 

1

не является возможным в точке

166

 

5 / 2

 

x(2) =

 

.

15 / 2

 

Составим задачу линейного программирования для определения возможного направления e(2) :

z = 11e( 2)

− 11e( 2)

+ e( 2)

e( 2)

→ max,

 

1+

 

1−

 

2+

2−

 

 

3e(2)

− 3e(2)

+ e(2)

e(2)

0,

 

 

1+

 

1−

 

2+

2−

 

 

 

 

e1(2)

+ e2(2)+

e2(2)

 

 

e1(+2)

 

0,

 

e(2)

 

+ e(2)

+ e(2)

+ e(2)

1,

 

 

1+

 

1−

 

2+

2−

 

 

 

e( 2)e( 2) = 0, e( 2)e( 2) = 0,

 

 

1+

 

1−

 

2+

2−

 

 

e( 2) 0, e( 2) 0, e( 2)

0, e( 2)

0.

1+

 

 

1−

 

2+

 

2−

 

Оптимальное решение этой задачи равно

e1(+2) = 1 / 4, e1(2) = 0, e2( 2)+ = 0, e2( 2)= 3 / 4

(симплексная таблица представлена в табл. 5.3.2), откуда находим направление очередного шага

 

1 / 4

 

e(2) =

−3 / 4

.

 

 

Найдем границы шага смещения h в направлении e(2), при котором

точка

 

 

 

 

 

 

 

5 / 2

1 / 4

 

5 / 2 + h / 4

 

x(3) = x(2) + he(2) =

 

+ h

−3

 

=

 

 

15 / 2

 

 

/ 4

15 / 2 − 3h / 4

 

будет оставаться во множестве допустимых решений. Имеем:

3(5 / 2 + h / 4) + 15 / 2 − 3h / 4 15,

+ + −

5 / 2 h / 4 15 / 2 3h / 4 10,

5 / 2 + h / 4 0,

15 / 2 − 3h / 4 0.

Этой системе неравенств удовлетворяют все h [0; 5]. Выберем h из этого отрезка таким образом, чтобы значение целевой функции f (x) в

точке x(3) = x(2) + he(2) было максимальным.

Для этого найдем точку максимума функции

167

Φ2 (h) = f (x( 2)

+ he( 2) ) = −(5 / 2 + h / 4 − 8)2 − (15 / 2 − 3h / 4 − 8)2 =

 

 

= −(h / 4 − 11 / 2)2 − (3h / 4 + 1 / 2)2

 

одной переменной h на отрезке h [0;10].

 

Производная

Φ′ (h) = (8 − 5h) / 4 обращается в нуль в точке h = 8 / 5

,

 

2

 

положительна при

h < 8 / 5 и отрицательна при h > 8 / 5 , поэтому точка

h = 8 / 5 является точкой глобального максимума функции Φ2 (h) и точкой локального максимума этой функции на отрезке h [0;10] .

Получаем очередное приближение:

 

 

 

 

5 / 2 + 2 / 5

 

29 / 10

 

 

2,9

 

x(3) =

 

=

 

=

6,3

.

15 / 2 − 6 / 5

 

63 / 10

 

 

 

Итерационный процесс метода возможных направлений иллюстрируется рис. 5.3.1.

Заметим, что x(3) — это точное решение задачи (3.2.7)—(3.2.9) ; оно было получено в примере 2.2.1.

Т а б л и ц а 5.3.2

cɶ

Базис

h

11

–11

1

–1

0

0

0

e1(1)+

e1(1)

e2(1)+

e2(1)

s1

s2

s3

0

s1

0

3

–3

1

–1

1

0

0

0

s2

0

1

–1

1

–1

0

1

0

0

s3

1

1

1

1

1

0

0

1

 

z0 z

0 – z

–11

11

–1

1

0

0

0

0

s1

0

0

0

–2

2

1

–3

0

11

e1(1)+

0

1

–1

1

–1

0

1

0

0

s3

1

0

2

0

2

0

–1

1

 

z0 z

0 – z

0

0

10

–10

0

11

0

–1

e2(1)

0

0

0

–1

1

1/2

–3/2

0

11

e1(1)+

0

1

–1

0

0

1/2

–1/2

0

0

s3

1

0

2

2

0

–1

2

1

 

z0 z

0 – z

0

0

0

0

5

–4

0

–1

e2(1)

3/4

0

3/2

1/2

1

–1/4

0

3/4

11

e1(1)+

1/4

1

–1/2

1/2

0

1/4

0

1/4

0

s2

1/2

0

1

1

0

–1/2

1

1/2

 

z0 z

2 – z

0

4

4

0

3

0

2

168

x2

15

 

14

 

13

 

12

 

11

 

10

 

9

 

8

x(0)

x(1) x(2)

 

7

x(3)

6

 

5

 

4

 

3

 

2

 

1

x1

 

0

1 2 3 4 5 6 7 8 9 10

Рис. 5.3.1. Итерационный процесс метода возможных направлений

§ 5.4. МЕТОД УСЛОВНОГО ГРАДИЕНТА

Опишем теперь метод условного градиента. Пусть x( k ) — очередное приближение к оптимальному решению задачи выпуклого программирова-

ния (3.1.1)—(3.1.2) —

такая точка x( k ) множества допустимых решений, что

 

grad f (x(k ) ) ¹ θ .

 

Тогда в окрестности точки x( k ) целевая функция f (x)

может быть

представлена в виде

 

 

 

 

 

 

 

 

 

 

f (x) = f (x( k ) ) + (grad f (x( k ) ), x - x( k ) ) + o (

 

 

 

x - x( k )

 

 

 

) .

 

 

 

 

 

 

Будем максимизировать на допустимом множестве линейную

функцию

f ( k ) (x) = (grad f (x( k ) ), x - x( k ) ) ,

 

 

(5.4.1)

которая является приближением разности f (x) - f (x( k ) ) с точностью до величины o (x - x( k ) ) .

Пусть xɶ( k ) — решение вспомогательной задачи максимизации функции (5.4.1) при ограничениях (3.1.2).

169

 

Следующее приближение x( k +1) к оптимальному решению исходной

задачи (3.1.1)— (3.1.2)

построим по формуле

 

 

 

 

x( k +1) = x( k ) + h( k ) (xɶ( k ) x(k ) ),

(5.4.2)

в которой величину шага смещения h(k ) выберем как

 

 

 

 

h(k ) = min{1; hɶ( k ) },

 

ɶ

(k )

выбирается из условия наибольшего роста целевой функции f (x)

где h

 

при перемещении из точки x( k ) в точку

 

 

 

 

x( k ) + hɶ(k ) (xɶ( k ) x( k ) ).

 

 

Тогда, поскольку множество допустимых решений

выпукло, а

h( k ) [0;1] , точка x( k +1)

(5.4.2) останется допустимым решением.

 

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

ПРИМЕР 5.4.3. Требуется найти приближение к оптимальному решению задачи выпуклого программирования (3.2.7)—(3.2.9) из примера 3.2.1, для чего провести три первые итерации метода условного градиента, выбрав в качестве начального приближения вектор

x(0) 1 .

= 8

Решение. Как было показано в примере 2.2.1, начальное приближение

x(0) 1

= 8

является допустимым решением. При этом

 

−2(x − 8)

 

 

 

 

 

grad f (x(0) ) =

1

 

 

 

 

−2(x2 −8)

 

 

x=x( 0 )

 

 

 

−2(1 −8)

14

 

=

 

=

0

.

 

−2(8 −8)

 

 

Поставим вспомогательную задачу максимизации функции (5.4.1) при ограничениях (3.1.2):

f (0) (x) = (grad f (x(0) ), x x(0) )=14(x1 −1) + 0(x2 −8) =14x1 −14 → max ,

3x1 + x2 15,

x1 + x2 10,

x1 0, x2 0 .

170