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

книги / Математические методы в системах поддержки принятия решений

..pdf
Скачиваний:
6
Добавлен:
12.11.2023
Размер:
16.41 Mб
Скачать

6. Вычислить х { = х0 + ОоЛ), где а 0 = aigmin f ( x 0 + а Р0) или OCQ берется из априори

последовательности 0 < ак й 1,

а>0

 

£ « * =“ •

< «о и перейти к оп. 4.

*«о

*-о

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

х = aigminf(x ), X с R",

х е Х

где/(х) — выпуклая дифференцируемая функция, заданная на допусти­ мом компактном множестве

 

 

Г

.

_

 

X

= х е R n Y j atfx j ^ bi > 1 =

*j * 0. J = 1,я

 

 

<

> 1

J

А л г о р и т м

[21; 92]

 

 

1.

Выбрать некоторое начальное приближение х0 е X.

2.

Если точка xQе intX, то выбрать направление sQперемещения из точки х0 к точке х 1

по антиградиенту критериальной функции, т.е. s0 = - /'( * 0) и перейти к операции 3. Если х0 вышла на границу X, то перейти к оп. 5.

3. Задать OQ > 0 — величину шага перемещения по направлению д0 или определить OQ из решения задачи

oto = argm in/(x0 - о /'( х 0))(||/'(х 0)|| 1)

так, чтобы не нарушались в точке х { все ограничения и значение функции y(*i) было бы наименьшим.

4.

Вычислить точку Xj = JC0 -cco/'U oX II/'fcoJir1) и перейти к операции 2.

5.

Установить множество индексов ограничений, обращающихся в точке Х\ в ра­

венства

 

 

 

- е 0 s Jo

\JVJO ~ 0}>

 

у=1

 

где £Q — параметр повышения чувствительности к ограничениям в точке х0, ек 0, к «>.

6.

Выбрать SQ — направление перемещения из точки х0 в точку х {. Предварительно

исходную задачу записать в линеаризованной форме:

 

 

Ах) =Лхо) + /'(*о)(* - *о)

niin,

 

 

х е Х

XaV*J ~ bi тX °ij(X~ Xjo)* °’

мм

181

или, подставив вместо х выражение * = x(k+V =

переписать в виде

f ( x w ) + « f '( x (k)))T,Xs(k))-> min , (в*, АлЮ) < О,

{*{к))

гдеЛ *^) — какая-то константа; если далее ее не учитывать, то исходная задача преобразу­ ется к виду

M f'(x (/г)

)-> min , X(ah s<*>) й О,

 

is<*>}

и искомое направление перемещения из точки х0 в точку х { определится в результате ре­ шения следующей задачи линейного программирования:

 

/'(*о)>*о -> min, (я„ SQ) й 0, / е

/ 0>*/ = (*/,

2

 

 

 

 

 

 

 

 

У=1

где

 

 

 

 

 

 

 

 

 

 

УбУ0

 

о

 

 

 

(e(,i»)=

 

+ Х Л0(5Уо _ , Л)’-/е у#’

 

 

 

/бУ0

yWo

 

 

 

 

 

Х

М = 2

/ А + X (i)o “ 'A )S1SA *0- ' 6 ^

 

у«1

УвУо

У«Уо

 

 

 

 

 

j+

Гвл,

если

*Л >0,

я _

= ГО,

если

s

О,

Л

|0,

если

5Уо<0,

Л

Г 4у0> если

s >o<0-

Запись вектора $Уо в виде 5у0 = s* - 5 , у g / 0>позволяет находить sjQ как решение

задачи линейного программирования с неотрицательными переменными, т.е. при этом задача линейного программирования приобретает стандартную форму (п. 6.4).

7.Условие завершения работы алгоритма:

х* = *<*>, если (|]Г(*(*))11 £ е) v (||х<*> -

< е),

где е > 0 определяет требуемую точность вычисления х* е X, к — индекс итерации.

Проиллюстрируем применение метода на следующей задаче.

Задача. Требуется найти решение х° =(х^ ,х2\ доставляющее минимум функции

/ ( * ) - < * , - 8)2 + 2(х2 - 5 ) 2

при ограничениях

X: 2х| + 5 х 2 £ 40, х,,х2>0.

2х1 + х2 < 16,

182

Р е ш е н и е . 1. Зададим начальное приближение: пусть

х1<#)=6,х<0>=3, (Х<0>€ X).

Ограничения выполняются как строгие неравенства 27 < 40, 15 < 16. Множество активных ограничений - пустое, Дх<0)) = 0 .

2.Вычислим antigrad/(J C 0>) в точке л^0):

е<°) = antigrad/(*<0)) = -{2(6 - 8); 2 х 2 (3 - 5)} = {4; 8}.

3.Вычислим длину шага в направлении antigrad/(х<°>); предварительно отметим, что

(а(0, е(*>) > 0, / - 1,2; а <!>= (2; 5), л<2>= (2; 1).

 

2 х 4 + 5 х 8 = 48> 0 ,

 

 

2 x 4 + 1 x 8 = 16 >0.

 

Поэтому учтем только

 

 

 

- _ б ,- (о< У 8>)_

4 0 -(2 - 6+ 5-3) __ 13

48

48

Ао/'

(*<'>,е(0>)

16 -(2 -6+ 1-3) _ 1 *

 

 

16

“ 16

 

а 01 = «02 =^вв»так как eKj(0).> 0,

 

а 0 = d\)(a0)= т т Ф 0(а )= min f( x °

+ a*°) = min{(6 + a - 4 - 8 ) 2 + 2(3 + а - 8 - 5 ) 2}-

 

а>0

а>0

а>0

 

 

-»2(4а-2)+2-2(8а-2) =0-»а0=±;

итак, ао = min{13/48,1/16,3/5} - 1/16.

 

4.

Вычислим

= *<°> + ао*0 =

 

5.

Проверим выполнение ограничений

 

 

2*j(1) + 5JC<!) =35< 40, 2х<1) + *<!) = 16 = 16.

Второе ограничение выполняется как равенство, поэтому оно является активным ограни­

чением и /i(x W) = 0 , так как X j 0, / =

{2}.

 

 

6. Составим задачу линейного программирования для вычисления е^1\ Для этого за­

пишем выражение критериальной функции -

линейной формы

/(«(,,)-(gmd/(*<'>),<<'>)= £ Э

^

ео>+

 

>€/,

J

j€Ji

j

183

 

-7

1

 

 

 

1

' 5й

-

 

m .

 

 

 

 

 

> i-"*'

 

2

1

2

1

 

+6е<0-

,?,in .

 

 

 

 

 

 

 

2

Запишем ограничение

 

 

 

 

 

 

(««"..(О

 

 

 

 

 

 

 

(a(,>.e(l>)=

 

 

 

 

 

 

 

 

J * J I

 

У«У, V 2

еУ

JS °. / S /, = {2},

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

 

 

 

 

 

 

 

 

,ТаККак ^ ' ) ) = 0 , т . е. имеем

 

 

2е<')+ _ 2еО)-+

(|)+

- е '1'

SO

 

 

 

1

 

1

е2

Y l e ^ U

Y f e (l)+ - e (l>-W i

c Учетом/|(^ )) = 0 „меем

2,1 у

I

2 (

J

eJ

)S1’

J-1

 

У€Уj

 

 

 

 

 

 

e<'>+

e<'>+ -

e<' >-Sl,

e<‘>+, *< » -*„, *<'>+.,<■>- = 0 , = 1 2

симплекс-

м е т о ^ Й - Г ^ ш Г С ч Т в ^

- 2 ( 0 ^ 7

2

2

2

<.;•>,«<»,’

2e<')+ - 2 e <‘>- + ,<•>+ _ e0>- + ,<■>♦ _ o. *<•>- = 0)

e,(,)+ + e<‘>- + e<‘>+ + e<'>’ + 0- *<l)+ + e<'>- = 1,

e f \ e f - > 0 ,

= 1 ,2 ,3 ,

где e<1>+ и e<1)_ - дополнительные переменные, и составим исходную симплекс-таб­ лицу 1 (в табл. 1, 2, 3/(е(1)) — линейная форма).

 

 

 

 

 

 

 

Т а б л и ц а 1

Базисные

Свободные

вО)+

• Г

М ) +

• г

*0)+

• г

неизвестные

члены

*1

е1

*3

-> е<»+

0

2

- 2

ш

-1

1

0

• ? Ь

1

1

1

1

1

0

1

 

 

 

0

 

 

6

- 6

0

0

 

 

7/2

-7 /2 _

Т

 

 

 

184

В последней строке табл. 1 имеются положительные элементы; выберем из них макси­ мальный, т.е. 6. Это означает, что е*1)+ должен быть введен в базис, а какой-то из е*1)+,

е ^ ~ — выведен. Для этого определим разрешающий элемент; он находится согласно

min свободн.член

= 0.

Отсюда следует, что разрешающий элемент содержится в первой строке, указанной гори­ зонтальной стрелкой. Этот элемент обведен квадратом. Разрешающий элемент равен еди­ нице, поэтому соответствующая ему строка табл. 1 переносится в новую симплекстаблицу 2 без изменений.

В таблицу 2 вместо базисной неизвестной

(см. табл. 1) введем свободную неиз­

вестную *21)+- Вторую строку преобразуем так, чтобы в клетке столбца е*1)+ появился

ноль; это достигается сложением первой, умноженной на -1 , и второй строк. Последняя строка табл. 2 также должна содержать ноль вместо 6, такой ноль есть результат сложения первой строки, умноженной на -6 , и последней из табл. 1.

Итак, новая симплекс-таблица 2 имеет вид

 

 

 

 

 

 

 

Т а б л и ц а 2

Базисные

Свободные

e ( D +

• Г

М ) +

« г

,(« )+

• Г

неизвестные

члены

 

е 1

е з

- 0 ) +

0

2

- 2

1

- 1

1

0

• Г

1

- 1

3

0

2

- 1

1

 

 

 

 

 

 

 

Л * 0>)

0

- 1 7 / 2

M i l

0

0

- 6

1

В последней строке в столбце е ^ ~ этой таблицы имеется положительный элемент

(17/2). Это значит, что табл. 2 необходимо преобразовать в симплекс-таблицу 3; но снача­ ла приведем табл. 2 в каноническую форму, так как разрешающий элемент равен 3. Для этого разделим все элементы второй строки на 3 и выполним преобразования в таком же порядке, как по табл. 1; получим табл. 3.

 

 

 

 

 

 

 

Т а б л и ц а 3

Базисные

Свободные

М ) +

 

«<1>+

• г

М ) +

• Г

неизвестные

члены

е \

 

е 1

е г

- 0 ) +

2 /3

4 /3

0

1

1

1/3

2 /3

е 2

 

 

 

 

 

 

 

 

1/3

- 1 / 3

1

0

1

- 3

3

 

- 1 7 /6

- 1 7 /3

0

0

- 1 7 /2

- 1 9 /6

- 1 1 / 6

В последней строке этой таблицы не содержатся положительные элементы. Это признак того, что найдено оптимальное решение

е<|>+ = 0, ,<•>-»!> «<’>+ Д Л0' = 0. е<’>+ = 0, «<•>- = 0;

185

оно удовлетворяет требованиям

е<'>+, *<'>-£ 0,

1,2,3;

отсюда е<'> = ^ |<1>+ - е<, >-)е<1>+ - е < ‘>-,е<,)+ - ,< ‘> ^ 0 - 1 , | - 0 , 0 - о ) ^ - 1 , 1 |

8. Вычислим длину шага в новом направлении е*1* = (-1/3, 2/3). Для этого предвари­ тельно определим

(*</>,е(|)) BM-S1

 

 

„ « ’> « - ( 2 Т * 5 j )

_

 

так как (аФ, е*1*) = О,

5

, , - ^

7Г—- =

=------- - = 1

а 12

 

«12 =>°°»

 

 

 

 

~

,0>

25

 

 

 

 

 

 

 

 

 

* ; _

4 - 7 5

 

 

 

 

 

 

 

«п

.0)

1

 

4 , а 12 =>«», так как е*1) > 0;

 

 

 

 

 

’з

 

 

 

 

 

 

 

 

аГ = Ф (а0) = min Ф(а) = min / ( JC(i) + а е <!)) =

 

 

 

 

( И

а>0

 

а>0

 

 

 

 

 

а>0

- Ж

 

Ж

 

 

 

 

= min

 

 

 

 

 

 

 

 

 

В результате искомая длина шага

 

 

 

 

 

 

 

 

 

а, = пйп{а,,,а12 а,,,а12 «Г} = - min^l;*»;^;,

 

5

 

 

6

 

 

 

 

 

 

 

 

 

 

 

9.

Вычислим очередное приближение JC<2>:

 

 

 

 

 

 

 

x f2* = х ^

+ а е ^

= — -- -- = 5 ,9 7 ,

 

 

 

 

1

1

 

1

4

6

3

 

 

*<2>=х<'>+«*<'> = 1 + 5 . 1 з 4,05.

2 2 2 2 6 3

10. Проверим условия останова процесса решения согласно заданной точности дос­ тижения оптимального решения х*.

В рассматриваемой задаче

И*<■> - *<2)Ин 0,75, |Л ^ " ) - Л ^ 2))И s 1.

186

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

Метод линеаризации. Этот метод основан на идее линеаризации критериальной функции и ограничений в окрестности каждой точки хь к = 0,1, 2 , приближения к искомому решению

х* = argmin/(* ), Х с Л ”, Х = {Х е ДЛ|gfyc) <0, i - 1 ,m},

хеХ

где X — выпуклый компакт, функции fix) и g(x), i = 1,/я, дифференци­ руемы, с последующим добавлением квадратичного члена к линейной

аппроксимации критериальной функции.

Таким образом, для отыскания искомого решения х* необходимо в каждой точке х*, к = 0 ,1 ,... решить вспомогательную задачу квадратич­

ного программирования

m m [ ( / K ) , x - x , ) + i | | x - x J 2j,

V, (*) =&(**) + (£,'(**)> х - х к) й 0, i = 1,/я,

при исключении из разложения критериальной функции константы f i x k).

Ал г о р и т м

1.Задать начальное приближение х0 е Х\ х0 можно вычислить, применив, например, симплекс-метод.

2.

Задать параметр чувствительности е* > 0, к = 0, 1, 2,...

3.

Установить множество индексов {/J, при которых - е 0 < \|// (хо)<0, и множество

{<}, при которых v/*o) 2 -«о-

 

 

 

 

 

4.

Определить направление спуска s0 = (;|(),52о,...,дЯд) из точки хд в точку х, s X.

Для этого найти решение задачи линейного программирования

 

m in«= m i n y

Ьх,

Л при Y

js

, S 0, v = 1, 2......v,

 

i*«)

<*o\* - i

'•

/=1

'

yo

 

 

/=1

J

 

 

 

где g 'ij

_dgjji*o) dx,

5. Положить £| = £0, если ux < -CQ; если же -EQ < щ < 0, T O £J -

нужно проверить x0: не является ли оно решением х*. Здесь их= min и. Пусть у <(1(х0) = 0, ц - 1, 2,.... Ц„ YX*b) < 0, / = /2....../Ц|.

Тогда надо решить задачу линейного программирования

Е с л и # I = 0, T O

Я

 

min и при £ g'i^jSjb ^ 0, ц = 1, 2,

п.

У=1

187

Если min и = и \ = 0, то дг0 = х*. Если же и'х < 0, то положить £j = 1/2е0 и продолжить по­

иск искомого решения

на направлении 50, установленном из решения рассмотренной

здесь задачи линейного

программирования.

6.

Вычислить шаг по установленному направлению движения из точки х0 в точку

* 1 = * 0 -

<Vo-

а0 = min{ao,ao'}, ag = fo* *°, ag = min

Vi(*o)

У»(*0>

IMI

П

п

 

 

 

7=1

>1

7.Вычислить приближение Xj = х0 - а ^ .

8.Перейти к выполнению оп. 3, считая et значением параметра чувствительности.

Алгоритм продолжает работу до получения приближения хк_ ь к = 1,2,..., при кото­ ром min и - и'к = 0; тогда, если и'к - 0, то x*_i = х*.

Метод штрафных функций. Метод основан на идее преобразования задачи минимизации критериальной функции Д х) с соответствующими ограничениями g,(х) <0, / = 1,т в задачу поиска решения

х* = argmin/(х ), Х = {х е Л^д(х) £ 0, i = 1 ,т)

путем минимизации штрафной функции

у(х, Q) =Д х) + P{g{x) < 0, / = 1 ,т, Ск),

где Ск -» °о, без ограничений. При этом видно, что Р(х, Ск) = 0 при х € X, а"если же х е X, то Р(х, Ск) > 0 и Р(х, Ск) —> «> при Ск —» «>; реше-

ние х = argmin\|/(x,C*) будет близким к х \

Заметим6/ что известны [21] различные конструкции функции Р(х, Ск). В общем случае Р(х, Ск) строится такой, чтобы она была диф­ ференцируемой и можно было бы применять для поиска х быстросхо-

дящийся алгоритм безусловной оптимизации п. 6.1.

Ал г о р и т м

1.Задать С - С0.

2. Вычислить x* = arg min у(х,С 0), пользуясь алгоритмом из п. 6.1, пусть при этом

 

Х€R ”

 

т

P(Si(x) , «= йт , Ск)

[тах(0,*,(х))]*, д> 0.

 

(=1

3. Если XQ = х", т о работа алгоритма завершена; в противном случае залать С/ > С0 и перейти к операции 2.

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

188

Задача. Пусть требуется найти решение (х°,х®), при котором достигается

 

 

max Д х ,,х 2),

 

 

 

 

(х ,,х 2)€ДГ

 

 

где Х = {*,, х2 е R2/x j + х2 £ 2я, - х { й 0, - х 2 < 0},

 

 

 

Дх,, х2) = siiucj + sinx2 - sin(xj + х2).

 

 

Р е ш е н и е .

1. Воспользуемся штрафной функцией вида

 

 

\|/(Х|, х2, Ck) = sin*! + sinx2 - sin(JCj + х2) — —{min(0,2 п - х, - х2 )}2 -

 

 

 

с к

 

 

 

--^-{min(0,x, )}2 --L {m in(0,x2)2}K Ск

<*>.

 

 

Сь

Си

 

 

2. Максимум этой функции найдем из решения системы уравнений

 

 

дхК^Л2А) = 0, d\K*l,*2A).Q

 

 

 

Эх,

Эх,

 

 

или

 

 

 

 

 

2

2

 

 

cosxj —cos(xj + х2) + — {min(0,2n-Xj - х 2)}----- {min(0,x,)}= 0,

 

 

с к

с к

 

 

 

2

2

 

 

cosx2 - cos(X| + х2) + — {min(0,2 я - х, - х2)}------{min(0,x2)} = 0,

 

min[cosXi -

cos(xj + х2), cosxj -

2

2

 

cos(xj + x2) + — {0,2 я -Xj

- x2}------{0,X|}] = 0,

min[cosx2 -

cos(xj + x2), cosx2 -

1

2

 

cos(x, + x2) + — {0,2 я - Xj - x2}------{0, x2}] = 0,

 

 

Ck

Ck

 

или из систем

 

 

 

 

 

COSXj - COS(X| + x2) = 0, COSX2 - COS(X] + x2) = 0

<*>

и

 

 

 

 

Qlcosxj - cos(X| + x2)] = X| + x2 -

2я + xj, C*[cosx2 - cos(X] + x2)] = X! + x2 -

2я + x2.(**)

3. Из системы (*) получаем

 

 

 

 

Xj = x2 = 0 или Xj = x2 = 2я/3,

 

 

 

max/ (хь x2) = 0 или max/ (xlt x2) = 3Л

/ 2

 

соответственно.

 

 

 

 

Отсюда следует оптимальное решение: х® = х® =2 я / 3.

 

 

189

4. Из системы (**) при Ск ->

0 имеем

 

 

 

 

 

 

 

 

 

к-*-

 

 

 

 

 

 

 

 

 

2xi = 2л — х2, 2х2 = 2л - Xj и х® = х2 = 2 л / 3.

 

5. Воспользуемся теперь внутренней (барьерной) штрафной функцией

F(x, Q ) = sinxj + sinx2 -

sin(xj + x2) + —

 

(------- !---------+ — + — )

 

 

 

 

 

 

C*

2 л - Xj -

x2 x,

x2

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

 

 

 

 

COSXj -

cos(xj + х2) + —

 

 

 

 

= 0,

 

 

 

 

 

 

с к

(2 л - Х \

 

- х 2)2

х* )

 

 

COSX2 — COS(X| + х 2) +

М

1

4

 

 

 

 

 

 

 

Ск

 

■*1 г

 

 

 

 

 

 

 

 

(^(2 л -Х |

 

 

 

 

или

 

 

 

 

 

 

 

 

 

 

 

 

 

C*(cosx, -

cosx2) = -L - -L ,

 

 

 

 

 

 

 

 

 

*1

 

*2

 

 

 

откуда при Ck

0 получаем -L = -L или X| = x2. Тогда, например, из соотношения

*->-

 

х 2

х\

 

 

 

 

 

 

 

 

Q[cosx2 -

COS(Xj + x 2)] = -

 

 

 

 

 

 

 

 

 

 

 

(2 я - х , - х 2)2

x{

 

при C* -» 0 имеем —

— = — и оптимальное решение x° = х ! = — .

*—

(27t-2X| )2

v 2

 

 

 

K

 

1

3

xx

 

 

 

 

 

 

 

Метод с модифицированной функцией Лагранжа. Метод также (см. метод штрафных функций) основан на преобразовании исходной зада­ чи: найти

х ’ = argminf(x), Х = (х е R*\gfa) < 0, / = 1 ,т) —

к задаче безусловной оптимизации: найти

х' = arg min<p(x, X),

1 "

где <р(х, А ) =Дх) + -^ [m a x (0 , g#(x)+A,)]2 — модифицированная функция

2 i=i

Лагранжа;

А = (А,, А з , А т) — вектор коэффициентов Лагранжа, A S0, А(*) = max(0, gi (xk_x) + A(/ _l*), к — индекс итерации,

Дх), gj(x), i = 1,/л — дифференцируемые выпуклые функции.

190

Соседние файлы в папке книги