• Nie Znaleziono Wyników

Optymalne algorytmy poszukiwania minimum (Praca

N/A
N/A
Protected

Academic year: 2021

Share "Optymalne algorytmy poszukiwania minimum (Praca"

Copied!
16
0
0

Pełen tekst

(1)

A. A.DAMSKI, A. KORYTOWSKI, W. MITKOWSKI (Kraków)

Optymalne algorytmy poszukiwania minimum

(Praca przyjęta do druku 21.8.1975)

1. Wstęp. Wiele zagadnień teorii systemów i sterowania sprowadza się do poszuki- wania minimum odpowiednio wybranej funkcji. Obecnie znanych jest bardzo wiele algorytmów minimalizacji funkcji - ogólnie problemem tym zajmuje się teoria optymalizacji. Wydaje się, że zastosowanie metod optymalizacji do samej tej teorii, konkretnie do algorytmów poszukiwania minimum, pozwoliłqby do pewnego stopnia usystematyzować tę dziedzinę. Mamy tu przede wszystkim na myśli wprowa- dzenie kryteriów jakości algorytmów, co umożliwiłoby porównywanie algorytmów

pomiędzy sobą, wskazanie najwłaściwszego dla każdego z nich zakresu zastosowań,

a nawet uzyskanie nowych efektywnych algorytmów.

W pracy podamy definicję algorytmu optymalnego spełniającego zasadę optymal-

ności Bellmana i przedyskutujemy jej związek z definicją najczęściej spotykaną

w literaturze. Wprowadzimy również pojęcie algorytmu optymalnego w każdym

kroku. Definicje te oparte na kryteriach minimaksowych - optymalny algorytm jest „najlepszy" dla „najgorszej" funkcji minimalizowanej w danym zbiorze. Przy takich kryteriach algorytm optymalny w wielu wypadkach nie istnieje. Rozwiązaniem

problemu jest wtedy ciąg algorytmów, nazywany minimalizującym. W zadaniach minimalizacji często spoty ka się funkcje wypukłe. Tymczasem w literaturze nie

rozważano dotychczas optymalnych algorytmów poszukiwania minimum funkcji

wypukłej nawet jednej zmiennej na odcinku. Temu zag~dnieniu poświęcóna jest nasza praca. Skonstruowano w niej pomocniczy algorytm optymalny (ściślej -

ciąg\minimalizujący), który w zadanej liczbie kroków daje najlepsze oszacowanie

odciętej minimum funkcji przy założeniu jej unimodalnqści, a następnie rozwiązano

zagadnienie optymalnego poszukiwania minimum funkcji wypukłej. Podany algo- rytm daje w zadanej liczbie kroków optymalne oszacowanie odciętej minimum.

Z kolei przedstawiono optymalny w każdym kroku algorytm oszacowywania mini- malnej wartości funkcji wypukłej. W pracy zamieszczono wyniki numeryczne uzyska- ne za pomocą zaproponowanych algorytmów dla kilku typowych przypadków.

Przeprowadzono porównanie z algorytmem Kiefera (metoda ciągu Fibonacciego) i z algorytmem opartym na aproksymacji kwadratowej.

[5]

(2)

6 A. A d am s ki, A. Ko r y t o ws ki, W. M i t k o ws k i

Ze znanych wyników, bliskich tematyce artykułu, należy wymienić metodę Kiefera [4] minimalizacji funkcji unimodalnych jednej zmiennej. Przegląd uogólnień

i pokrewnych rezultatów można znaleźć w [l], [3]. Rozważano głównie optymalne poszukiwanie minimum funkcji, które wraz z pochodnymi spełniają warunek Lipschi- tza [2], [3].

2. Algorytmy optymalne. Jakkolwiek będziemy się zajmować algorytmami po- szukiwania minimum, podane niżej definicje znacznie bardziej ogólne. Najpierw wprowadzimy pojęcie algorytmu. Niech F będzie zbiorem funkcji określonych na zbiorze X i przyjmujących wartości 'w zbiorze Y. Oznaczmy przez Sk zbiór wszystkich k-wyrazowych ciągów sk w Xx Y, o następujących własnościach:

V sk E Sk, 3 f EF, V i E (1: k),

f(xi) = Yi,

gdzie sf = (xb Yi) jest i-tym wyrazem ciągu sk. O ciągu sk będziemy' mówić, że leży na funkcji f, zaś o funkcji f - że przechodzi przez ciąg punktów sk. Przez F(sk) ozna- czymy podzbiór F, utworzony przez wszystkie funkcje leżące na ciągu sk.

Algorytmem !1--krokowym A określonym na zbiorze funkcji F nazywamy ciąg

f w1kcjł wy liczalnych

pi: (XxY)i-1 ~x, i= 2, ... ,n,

oraz element x 1 EX. Zbiór wszystkich takich algorytmów oznaczymy przez Dla każdej funkcji fE F algorytm A generuje ciąg Sn E sn według schematu

s~ = (x1 ,f(x1)),

(1) xi = p;(s~, ... , s7_1), sf = (xi, f(xi)), i = 2, ... , n.

Na zbiorze sn definiujemy funkcję kryterialną

d: S11~R.

Poprzez zależności (I) funkcja d określa jednoznacznie funkcję d': d„xF~ R,

którą również będziemy nazywać kryterialną.

Zdefiniujemy algorytm optymalny AE d„, A = (x1 , ••• , Pn)· Zaczniemy od określenia funkcji Pn· Żądamy, aby na Pn osiągane było dla każdego sn-l E sn-l

(2.1) inf sup d(sn-1, s11),

Pn fEF(sn- 1)

gdzie Sn = (xn,f(x11)), Xn = p„(s11- 1). Dalej kolejno określamy Pn-i, Pn- 2 , ... , p2 i X1 •

Żądamy, żeby napn-i+t osiągane było dla każdego Sn-i E sn-i (i= 1, ... , n-1) (2.2) inf sup d(sn-i,sn-i+ 1,sn-i+2' ... ,s„),

Pn-1+1 feF(sn-1)

gdzie Sn-i+l = (xn-i+1,f(Xn-i+1)), Xn-i+l = Pn-i+1(s11-i)

A A ( n-i A )

Xj =PiS 'Sn-i+l• ... , Sj-1 ' j = n-i+2, ... ,n.

(3)

Analogicznie określamy .Y 1 • Ma na nim być osiągnięte (2.3) inf sup d(s1 , ••• , Sn),

Xt fEF

gdzie s1 = (x1 ,f(x1 ) ), s2 , ••• , Sn określone jak wyżej.

Dla większości interesujących problemów nie istnieją algorytmy, na których

osiągane są kresy (2). Zadanie optymalizacji algorytmów postawimy wtedy inaczej.

Będziemy poszukiwać ciągu algorytmów {A ( e) E d n, e > O} określonego nastę­

pująco: Niech sk oznacza parę (xk,f(xk)), xk = phk-1), ask(e) = (xk(e),f(xk(s)), xk(s) = Pk(e)(sk-1). Żądamy, aby ciąg Pn(e) miał następującą własność:

lim sup d (sn-1, sn(e)) = inf sup d(sn-1, sn)

e-+OfeF(sn-1) Pn feF(sn-1)

(3.1)

dla każdego Sn-l E sn-l.

Ogólnie, ciąg Pn-i+ 1 (s) (dla i = I, ... 'n-1) ma spełniać dla każdego Sn-i E sn-i (3.2) lim sup d(s"-i,sn-i+1(e), „.,sn(e)) =

e-+0 feF(sn-1)

= inf lim SUp d(sn-i, Sn-i+ 1' Sn-i+2(e), . „, Sn(e) );

Pn-1+1 e-+0 fEF(sn-1)

x1(s) określamy podobnie. Ma być

(3.3) lim sup d(s1 (s), ... , sn(e)) = inf lim sup d(s1 , s2(s), ... , sn(e) ).

e-+0 fEF Xi e-+0 fEF

Ciąg A(t:) o tych własnościach będziemy nazywać minimalizującym. Ciąg taki istnieje zawsze, nawet gdy algorytm optymalny nie istnieje. Tam gdzie to nie spowoduje

niejasności, będziemy używać nazwy algorytm optymalny zamiast ciąg minimalizujący

i opuszczać wskaźnik s, przy czym sformułowania będą się odnosić do własności

granicznych ciągu minimalizującego dla e ~ O.

Łatwo dostrzec, że algorytm optymalny spełnia zasadę optymalności Bellmana - każde k ostatnich funkcji Pi (ewentualnie p,(t:)) tworzy. optymalny algorytm ze zbioru dk na zbiorze F(s1 , ..• , sn-k). W pracach [I], [3] od algorytmu optymalnego wymaga się tylko, aby osiągane na nim było

(4) inf sup d(sn),

AEdn fEF

przy czym ciąg s" otrzymuje się według schematu (1). Algorytm optymalny według naszej definicji jest oczywiście optymalny w tym drugim sensie, ale niekoniecznie na odwrót. Przyjęcie I bardziej skomplikowanej definicji optymalności jest uzasad- nione. Warunek (4) pozwala nazwać optymalnymi takie algorytmy, które nie wyzy-

skują w pełni informacji o funkcji f uzyskanej w poprzednich krokach, jest więc za

słaby. Na przykład, w zc:.daniu poszukiwania minimum funkcji unimodalnej wypukłej na odcinku ograniczonym algorytm Kiefera jest przy warunku (4) optymalny, tymczasem jest oczywiste, że nie wykorzystuje on całej informacji możliwej do uzyskania.

(4)

8 A. A d am s k i, A. K or y t o ws k i, W. M i t k o w s k i

Znalezienie w jawnej postaci algorytmu optymalnego jest zwykle trudne, dlatego warto rozważać algorytmy suboptymalne. Jedną z możliwych definicji podamy niżej. Niech sb xk i Pk oraz sb xk i Pk będą ze sobą powiązane jak w definicji ciągu minimalizującego. Niech n nadal oznacza liczbę kroków algorytmu. Wprowadzimy n funkcji kryterialnych di: (X x YY --+ R, i = 1 , ... , n. Algorytmem optymalnym w każdym kroku nazywamy algorytm A = (x1 , p2 , ••• , Pn), w którym na x1 osiągane jest

(5.1) inf sup d1 (s1),

x1eX feF

a na funkcjach Ri, i = 2, ... , n, osiąga się

(5.2) inf sup dl:Si-1, si).

p1 f eF(st- 1)

Tutaj sk = (j\, .. sk). W przypadku, gdy taki algorytm nie istnieje, wprowadzamy

ciąg minimalizujący w każdym kroku

Zachodzi

(6.1) lim sup d1 (s1 (s)) = inf sup di (s1 ),

e-+0 feF x1 feF

(6.2) lim sup di(si-1(s), si(s)) =inf lim sup di(si-1(s), si),

e-+0 /eF(sl-l(e)) Pl e-+0 /eF(sl-l(e))

gdzie si(s), si(s), si określone jak w definicji ciągu minimalizującego.

3. Uogólniony algorytm Kiefera. Rozważymy zadanie optymalnego poszukiwania minimum funkcji unimodalnej na odcinku ograniczonym [a, b]. Jeżeli nie jest znana

wartość funkcji w żadnym punkcie przedziału, to przy zadanej liczbie kroków n optymalny (w sensie minimalizacji oszacowania odciętej minimum) jest algorytm Kiefera [4]. Niżej podamy rozwiązanie dla przypadku bardziej ogólnego, gdy na

początku znane są wartości funkcji w dowolnej ilości punktów przedziału [a, b].

Będzie ono przydatne w późniejszych rozważaniach dotyczących funkcji wypukłych.

Wynik ten ma postać ciągu minimalizującego, zależnego od parametru s. Posłużymy

się ciągiem Fibonacciego określonym następująco:

(7) L_1 = s, L0 = L1 = 1, Li+i = Li+Li_1 , i= 1, ...

Funkcję f określoną w przedziale [a, b] nazywamy unimodalną, jeżeli istnieje punkt x0 E [a, b] taki, że funkcja f jest ściśle malejąca w przedziale [a, x0 ] i ściśle rosnąca

w przedziale [x0 , b].

Będziemy stosować następującą umowę. Dla dowolnego wskaźnika r i elementu s, EX x Y, x, będzie oznaczać pierwszy składnik pary, y, (ewentu'alnie f(xr)) - drugi.

Niech ak będzie ciągiem k punktów leżącym na pewnej funkcji unimodalnej f

określonej w [a, b]. W naszym zadaniu F będzie zbiorem wszystkich funkcji unimo-

(5)

dalnych określonych w [a, b], przechodzących przez punkty ciągu ok. Niech si będzie dowolnym ciągiem z Si., którego punkty nie pokrywają się z punktami ak. Zakładamy

a0 = s.0 = 0. Możliwe są trzy przypadki:

a. aku si = 0. Podstawiamy wówczas Xp, Xm : = a, Xz : = b.

b. Ciąg aku si ma dwa punkty minimalne (o najmniejszej rzędnej) sa i s13, Xa < x13•

Podstawiamy Xp, Xm := Xa, Xz := X13.

c. Ciąg aku si ma dokładnie jeden punkt minimalny. Oznaczmy przez Xm odciętą

tego punktu, przez x P odciętą najbliższego punktu ciągu po lewej stronie, a przez xz - odciętą najbliższego punktu ciągu po prawej stronie. Jeśli po lewej (po prawej) stronie Xm nie ma punktów ciągu aku si, podstawiamy Xp : = a (xz : = b).

Wprowadzamy funkcję kryterialną d:

(8) d(sn) = Xz-Xp.

Zauważmy, że wartość funkcji kryterialnej d(sn) jest najlepszym możliwym oszaco- waniem położenia minimum funkcji f E F(sn). Zachodzi mianowicie

(9) d(sn) = inf (h- g), x' E [g, h] dla wszystkich f' E F(sn),

g,h

gdzie x' oznacza odciętą minimum funkcji f'.

Podamy opis optymalnego algorytmu minimalizacji funkcji kryterialnej (8).

Przed wykonaniem i-tego kroku algorytmu, i = 1, ... , n, znany jest ciąg aku si-1, gdzie si-i jest ciągiem otrzymanym w poprzednich i-1 krokach algorytmu. Po

określeniu wielkości xP, Xm, Xz odciętą i-tego punktu xi otrzymujemy ze wzoru (10)

gdzie

gdy Xm-Xp > Xz-Xm, gdy Xz-Xm;;::: Xm-Xp.

Następnie obliczamy wartość funkcji f(xi), określamy nowe wartości Xp, Xm i Xz i przechodzimy do kolejnego, (i+ 1)-szego kroku. Udowodnimy optymalność

tego algorytmu. W sytuacji, kiedy ilość punktów minimalnych wynosi zero lub dwa, opisany algorytm przechodzi w algorytm Kiefera. Ze standardowego dowodu

optymalności [5] tego algorytmu wynika, że jest on również optymalny w sensie naszej definicji dla funkcji unimodalnych. Załóżmy teraz, że w i-tym kroku mamy

dokładnie jeden punkt minimalny o odciętej Xm, wielkości xP i xz definiujemy jak

wyżej. Optymalność w tym wypadku wynika natychmiast z faktu, że po n-tym kroku oszacowanie odciętej minimum jest nie większe niż max(xm-Xp, Xz-Xm)/Ln-i (z dokładnością do s ). Takie samo oszacowanie daje w najgorszym przypadku algorytm Kiefera zastosowany do dłuższego z przedziałów [xp, Xm], [xm, Xz].

4. Optymalne poszukiwanie minimum funkcji wypukłej. Podamy algorytm optymal- nego poszukiwania minimum funkcji wypukłej na odcinku ograniczonym [a, b].

(6)

10 A. A d a m s k i, A. K or y t o w s k i, W. M i t k o ws k i

Założymy unimodalność rozważanych funkcji; przypadek funkcji wypukłych nie- unimodalnych jest trywialny i zostanie pominięty. Założymy, że przed rozpoczęciem obliczeń znamy wartości funkcji w k punktach przedziału. Punkty te tworzą ciąg ak.

F jest zbiorem wszystkich funkcji unimodalnych wypukłych, które przechodzą przez punkty ciągu eł. Funkcję/: [a, b] ~ R nazywamy wypukłą, jeżeli

f(h1 + (l -A)x2) ~ Af(x1)+ (l -A)f(xz), 'VAE [O, I], Vx1 , x2 E [a, b].

Niech si będzie dowolnym ciągiem z Si, którego punkty nie pokrywają się z ak, s0 = a0 = 0. Podobnie jak poprzednio, rozróżniamy trzy przypadki:

a. aku si = 0. Podstawiamy Xp, x~ : = a, Xz, x; : = b, Xm : = a.

b.Ciągakusimadwapunktyminimalnesaisp,Xa: < Xp. Podstawiamyx~ := x,v

x; := Xp, Sp, Sm:= Srx, Sz :=Sp.

c. Ciąg cłu si ma dokładnie jeden punkt minimalny Sm. Jeżeli w przedziale (xm, b]

nie ma punktów ciągu akusi, podstawiamy Xz, x; := b. Jeżeli w (xm, b] jest dokład­

nie jeden punkt ciągu srx, podstawiamy x; : = xrx, Sz = Srx. Jeżeli w (xm, b] jest więcej niż jeden punkt ciągu, OZilfiCZmy. przez Sz punkt o najmniejszej odciętej, a przez

sp punkt ciągu o najmniejszej odciętej w (x::, b]. Podstawiamy X~:= Xz-(Xp-Xz){Yz-Ym)/(yp-Yz)•

Wartości xP, · x~ wyznaczamy podobnie. Jeśli w [a, Xm) nie ma punktów ciągu,

xP, x~ : =a. Jeśli w [a, Xm) jest dokładnie jeden punkt srx, podstawiamy xP, x~: = Xrx.

Jeśli w [a, xm) jest więcej punktów ciągu, oznaczmy przez sp punkt o największej odciętej, przez sp punkt o największej odciętej w [a, xP). Podstawiamy

X~:= Xp-(Xp-Xp)(yp-Ym)f(yp-Yp).

Funkcja kryterialna d określona jest równością

(11)

gdzie x;, x~ są odpowiednimi wartościami w n-tym kroku. Wartość funkcji kryterial- nej d(sn) jest najlepszym możliwym oszacowaniem położenia minimum funkcji

f E F(sn). Zachodzi mianowicie (9) z podstawieniem za F(sn) właściwego zbioru funkcji.

Po i- I krokach algorytmu znamy wartości badanej funkcji w k+i-I punktach,

tworzących ciąg aku si-1. Optymalny jest algorytm, w którym odciętą i-tego punktu oblicza się ze wzoru

(12) gdzie

gdy Xm-X~ > x;-xm, gdy x;-xm ~ Xm-X~.

Opiszemy dokładnie algorytm optymalny w przypadku, kiedy k = O. Wskaźnik i oznacza numer kroku, i = 1 , ... , n. W każdym kroku raz obliczamy wartość

(7)

funkcji f(xi). Na początku obliczeń podstawiamy xm, xP, x~ :=a, Xz, x; : = p, z : =. o, i : = 1.

( *) Następnie podstawiamy

{X~,

x; := x~+ (f(xi)-Ym)(x;-xz)/(Ym-Yz),

gdy z= o,

gdy z= 1,

{X~,

X~:= x~+ (f(xi)-ym)(x~-Xp)/(Ym-Yp), gdy p gdy p =o, = 1, Xm :=Xi, Ym := f(xm), i:= i+l.

( * *) Rozróżniamy teraz dwa przypadki : A. Jeżeli x~-xm· > Xm-X~, podstawiamy

Xi:= Xm+ (x;-xm)Ln-i-1/Ln-i+l ·

Wyróżniamy trzy podprzypadki:

a. f(xD > Ym. Podstawiamy

1 {Xi,

Xz := xi+ (/(xi)-Ym)(xi-Xm)f (Yz-f(xi)), Xz := Xj, Yz := J(xi), Z:= 1.

b. f(xi) < Ym. Podstawiamy

Xp := Xm, Yp := Ym, Xm :=Xi, Ym := J(xi).

gdy z= o,

gdy z= 1,

gdy gdy gdy gdy

P =O, p = 1, z= o,

z= 1,

W przypadkach a i b podstawiamy i : = i+ 1 i przechodzimy do następnego

kroku w miejscu (**).

c. f(xi) = Ym· Pod~tawiamy X~ : = Xm, x; : = Xi, i : = r+ 1 i przechodzimy do

następnego kroku w miejscu ( * ). ·

B. Jeśli x~-Xm:::::;; Xm-x~, postępujemy jak w punkcie A, zamieniając wszędzie (również we wskaźnikach) p na z i odwrotnie.

Udowodnimy optymalność podanego algorytmu w ogólnym przypadku, k ~ O.

Rozważmy sytuację po i-tym kroku. Znane punkty aku si, przez które przechodzi badana funkcja. Znane są również wielkości x~, x~. Wprowadzamy oznaczenia:

~P = x~, ~z = x; w i-tym kroku, F1 - zbiór wszystkich funkcji unimodalnych przec~odzących przez punkty akusi i mających minimum w przedziale (~P' ~z),

(8)

12 A. A d am ski, A. Koryt owski, W. Mit ko ws k i

F2 - zbiór wszystkich funkcji unimodalnych wypukłych przechodzących przez punkty aku si.

Z określenia funkcji kryterialnej wynika, że algorytmu optymalnego wystarczy

szukać wśród takich, w których r-ta odcięta Xr zależy wyłącznie od aktualnych

wartości x~, Xm, x~. Taką własność nazwiemy własnością W. Oznaczmy: A 2 - dowolny (n-i)-krokowy algorytm o własności W, określony na F2 , A1 - (n-i)- krokowy algorytm określony na F1 , powstały z A2 przez zastąpienie w ·każdym

kroku x~, x; przez xP, xz, o ile x~ #- ~P' x; #- ~z' d2 - funkcja kryterialna dn-i x F2 ~ R, określona przez (11), d1 - funkcja kryterialna powstała z d2 przez

zastąpienie x~, x~ przez xP, Xz, o ile x~ #- ~P' x; #- ~z·

Pokażemy, że

di (A1, f) = lim d2(A2,Ji).

i-.oo .

Dowód przeprowadzimy przez wskazanie dla dowolnej funkcji f E F1 odpowied-

niego ciągu fi E F2 • Algorytm A 1 generuje na f ciąg punktów (x" y,), r = 1, ... , n-i.

Algorytm A 2 generuje na fi ciąg (x!, yf), r = 1, ... , n - i. Wprowadzimy łamaną górną Lg złożoną z odcinków łączących znane punkty, przez które przechodzi funkcja minimalizowana, oraz łamaną dolną La, która poza przedziałem (xP, Xz) jest identyczna z Lg, a między xP a Xz ogranicza od dołu obszar, do którego oszaco- wane jest położenie minimum. N a funkcje fi nakładamy następujące warunki:

1. Jeżeli w kolejnym kroku x! 1= (x~, x;), punkt (x!, y!) ma leżeć na La.

2. Jeżeli w kolejnym kroku x! E (x;, x~), żądamy, żeby gdzie

sign(yf-y~) = sign(y,-ym·), lyt-Y~I =j-1i.1y,

ILg(x!)-y~, gdy Yr>Ym, Lly = Y~ - Ld(x!), gdy Ym > Yr, O, gdy Yr = Ym·

W powyższych zależnościach x~, x~, y~, Ym oznaczają wartości aktuaJne w r-tym kroku. Ym jest rzędną punktu minimalnego sm określonego jak w opisie algorytmu dla funkcji f Podobnie yfn dla funkcji fi. Ciąg fi jest poszukiwanym dągiem funkcji.

Udowodniliśmy w ten sposób, że dla dowolnego algorytmu A2 istnieje algorytm A1 nie wykorzystujący wypukłości funkcji, taki że wartość d2 uzyskana za pomocą A 2 na odpowiednim ciągu funkcji jest w granicy równa wartości d1 uzyskanej za

pomocą A1 • Stąd wynika, że optymalny jest taki algorytm A2 , dla którego odpo- wiedni algorytm A1 jest uogólnionym algorytmem Kiefera. Łatwo sprawdzić, że taką własność ma opisany algorytm, co kończy dowód.

5. Algorytm minimalizujący w każdym kroku oszacowanie minimalnej wartości

funkcji wypukłej. Podamy algorytm optymalny w każdym kroku, który minimalizuje oszacowanie minimalnej wartości funkcji wypukłej określonej w przedziale [a, b].

Zbiorem F jest zbiór wszystkich funkcji unimodalnych wypukłych f: [a, b] ~ R,

(9)

przechodzących przez punkty zadanego ciągu ak. Założymy, że k;:?;; 3 i że F nie jest zbiorem pustym. Wielkości xP, x~, Xm, Xz, x;, sP, Sm, Sz definiujemy jak poprzednio. Po wyznaczeniu za pomocą dowolnego algorytmu i nowych punktów si, przez które przechodzi funkcja, i = O, 1, ... , n, możemy oszacować minimalną wartość badanej funkcji f min

(14) !min E [Ym-Z,YmL z= max(z1, Z2),

(xm-X~) (yz-Ym) (yp-Yn1) z 1 = Tx-:-=-x~) c.Y; _: Ym) + (x~ _: x~) (Yz ~y,~)'

(xm-X~) (yp-Ym) (Yz-Ym)

Z2 = ~~~~~~--'-~~~~~~~-

(xp-Xm) (Yz-Ym)+ (x~-Xz) (yp-Ym) .

W przypadku, gdy po prawej (po lewej) stronie punktu s111 nie ma żadnego punktu ciągu akusi, wielkości Yz (odpowiednio yp) są nieokreślone. We wzorach (14) kła­

dziemy wtedy Yz ~ oo (lub yP ~ oo). Łatwo zauważyć, że oszacowanie (14) jest najlepsze z możliwych. Rozważaną sytuację ilustruje rys. l, na którym punkty

P 1 , ••. , P4 tworzą ciąg aku si. Z rysunku widać, że położenie punktu minimalnego

funkcji jest ograniczone do dwu trójkątów, których wysokościami są z1 i z2 •

x„ xf, Xm Xz=xf X

Rys. 1. Oszacowanie minimum funkcji wypukłej

Zdefiniujemy funkcję kryterialną d, wspólną dla wszystkich kroków algorytmu.

Rozważmy wielkość z, określoną przez (I 4). Po i - 1 krokach algorytmu znamy ciąg . punktów si-1, przez które przechodzi badana funkcja. W i-tym kroku z zależy

wyłącznie od punktu si, otrzymywanego w tym kroku. Zaznaczymy to pisząc z(si)„

Przyjmujemy zgodnie z oznaczeniami ( 5) (15)

(10)

14 A. A d am ski, A. K or y t o ws ki, W. M i t k o ws ki

Opiszemy algorytm optymalny w każdym kroku podając sposób wyboru odciętej xi w i-tym kroku, i = 1, ... , n. Oczywiste są następujące implikacje:

(16) (z1 ~ z2 ) => (x; E [x~, xm]), (z1 ~ z2) => (x; E [xm, x~]),

gdzie x~, Xm, x~, z1 , z2 wyznaczone w poprzednim, (i-1)-szym kroku. W ten sposób ograniczamy wybór do jednego z przedziałów (x~, Xm), (xm, x~). Łatwo zauważyć, że w wielu wypadkach przyjęte kryterium nie wystarcza do jednoznacznego wyznaczenia xi. Będziemy wó~czas wybierać xi według metody tej samej, co w przy- padku jednoznaczności. Po wybraniu przedziału (x~, Xm) lub (xm, x~) ilość możliwych

sytuacji wynosi osiem, z których cztery powstają przez lustrzane odbicia pozostałych.

Rozpatrzymy więc po kolei cztery przypadki, podając dla każdego z nich optymalną

'\

a)

~ ?~

I I

· c=h le

~z

c)

d)

Sz I I ie I I

~: . c=h I Rys. 2. Wyróżnione sytuacje w algorytmie optymalnym w każdym kroku

(11)

odciętą i-tego punktu. Za każdym razem będziemy rozważać ten z trójkątów .stano-

wiących łącznie obszar, do którego ograniczone jest położenie minimalnego punktu, którego wysokość jest większa. Długość podstawy tego trójkąta, równą Xm - x~

lub x~-xm, oznaczymy przez c. Przeze oznaczymy odp~wiednio yp-Ym lub Yz-Ym·

Wielkość Xm-Xh oznaczona zostanie przez h, przy czym xh jest odciętą wierzchołka trójkąta. Przez k 1 oznaczymy xi-Xm. Wyznaczenie k 1 wystarcza oczywiście do obliczenia xi, zatem niżej podawać będziemy tylko k 1 • Wprowadzamy oznaczenie

et= 1 +e/z.

Dalej opuścimy wyprowadzenia, które elementarne, ale żmudne.

P r z y p a d e k 1. Zakładamy e ~ O, c > h > O. Rozważaną sytuację przed- stawia rys. 2a. W przypadku lustrzanego odbicia zmieniamy wskaźnik z nap. Wpro- wadzamy oznaczenia

e = h/c, b1 =he, b2 = h(l+et-ete), b3 = 0,25c(l+e)2,

b4 = 0,5c[et(I +e)-v et2(1 +e)2-4ete], bs = h(l-0,25et(!), b6 =·c[ec+2(1-2e)cp-J/8e(l-e)cp(c-<p)], c = et-(et-I)e,

<p = veteO-e), b1.s = o,sc[et±J/e<(et-4(et-1)e)L b9 = cf3,

gdzie f3 jest jedynym pierwiastkiem równania

/32-2/3 v'{l-(et- l)e/3 + 2e<yfl-C( = o

leżącym w przedziale [1/4, 1].

Schemat wyznaczania k1 podajemy w.postaci blokowej na rys. 3.

P r z y p a d e k 2. Załóżmy e > O, c = h > .O. Rozważaną sytuację przed- stawiono na rys. 2b. Oznaczamy

b1 = c(I-0,25et), b2 = c[e<-yet(et-1)].

Wielkość k 1 określona jest następująco

ki = Jb1, gdy

\b2, gdy

et< 4/3,

et~ 4/3.

Pr z y pad e k 3. Niech e ~ O, c > h = O (patrz rys. 2c). Wtedy k1 = 0,25c.

Pr z y pad e k 4. Zakładamy e ~ oo, c = h >O (rys. 2d). W tym przypadku ki = 0,5c. W przypadkach przedstawionych na rys. 2, to znaczy gdy xi E [xm, x~], mamy

Xi= Xm+k1.

W przypadku, gdy xi E [x~, xm] (lustrzane odbicia rys. 2a, b, c, d, z zamianą wskaźnika z nap), mamy

(12)

16 A. Ad am ski, A. K or y to wski, W. M i t ko ws k i

ali'~c

tak nie

a~2 tak nic

Rys. 3. Schemat wyznaczania k1

6. Wyniki numeryczne i porównanie algorytmów. Na kilku przykładach przeanali- zujemy działanie algorytmu A1 , minimalizującego oszacowanie odciętej minimum - opisanego w punkcie 4 - i algorytmu A2 , minimalizującego w każdym kroku oszacowanie rzędnej (punkt 5). Dla porównania przedstawimy wyniki uzyskiwane dla tych samych zadań za pomocą algorytmu Kiefera Ak oraz algorytmu opartego na aproksymacji badanej funkcji parabolą drugiego stopnia AP. Będziemy poszuki-

wać minimum funkcji unimodalnych wypukłych określonych w przedziale [-1, I].

Przyjmiemy k = O, tzn. przed rozpoczęciem obliczeń nie znane wartości funkcji w żadnym punkcie przedziału. W algorytmach A2 i AP trzy pierwsze punkty wyzna- czane będą według algorytmu Kiefera Ak. Obliczenia przeprowadzono dla różnej

ilości kroków n, 4 ~ n~ 25. Dla każdej rozważanej funkcji porównujemy mini-

(13)

malne wartości uzyskane za pomocą każdego z algorytmów przy ustalonej ilości kroków oraz szybkość zbieżności do rzeczywistego minimum. Taki sposób porówny- wania algorytmów jest najbardziej uzasadniony ze względów praktycznych.

Zaczniemy od porównania algorytmu Kiefera Ak z algorytmem A1 • W obti algorytmach parametr c przyjmujemy pomijalnie mały w stosunku do dokładności obliczeń. Dla ilości kroków n ~ 5 algorytmy Ak i A1 pokrywają się. Dla n = 6 dają te same wyniki z dokładnością do c. Algorytmy przetestowano na funkcjach

kątowych

W przypadku a1 = a2 , b0 ~ 0,5(a+b) =O, algorytm A1 dla n~ 7 daje wynik dokładny z błędem c. Działanie algorytmów w tym wypadku ilustruje rys. 4, na·

którym przedstawiono wyniki ·dla funkcji

f1(x) = lx-0,ll .

./i .li o

0,1 - D'.)e co

li (x) =lx-0,ll

0,08 0,002 o o algorytm A 1

•algorytm Ai

0,06 a o algorytm Ak

o A algorytm Ap

0,04 o 0,001

A

DO A

O,o2 A o A o

o o o

"" "" ó ó o

o 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Il Rys. 4. Wyniki obliczeń dla funkcji /1(x) = jx-0,lj

Gdy a1 różni się znacznie od a2 lub b0 bliskie jest.± 1, różnica między A1 a Ak zaciera

się i dla różnych n lepsze wyniki może dawać jeden lub drugi. Rysunek 5 przed- stawia wyniki uzyskane dla funkcji

{-x+O,l, gdy x ~ 0,1,

f2(x) = IOO(x-0,1), gdy x ~ 0,1.

Na rys. 6 i 7 przedstawiono rezultaty dla funkcji

/3(x) = {lOx-1)2 oraz h(x) = exp[(lOx-1)2].

2 Matematyka Stosowana XI

(14)

18 A. Adamski, A. Korytowski, W. Mitkowski

.li 0,3

ó. ó. 5,4xI0-3 { x-Oldlax~Ol

ó. 6 o fi(x) = ' '

0,003 100 (x- 0,1) dla x>O,l

ó.

o algorytm A 1

•algorytm Ai

0,2 0,002 o o algorytm A k

o D. algorytm Ap o o

o o

0,1 i1 • 0,001

o

i1 o m

o

m ~ o o

o ~

3 4 5 6 7 8 9 IO 11 12 13 14 15 16 17 18 19 20 21 22 23 24 li Rys. 5. Wyniki obliczeń dla funkcji /2(x)

l,Ot tl,O jj me oo

0,20 - ' 0,001 -f,1

o .Mx)= (lOx-1)2

0,16 8x10-4 o o algorytm A 1

o • algorytm A 2

0,12 6x10-4 o algorytm Ak

ó. algorytm Ap

0,08 o 4x10-4

o

oo o

Q,04 2x 10-4

o o o

o o

o 3 4 5 6 7 8 9 JO Il 12 13 14 15 16 17 18 19 20 21 22 23 24 25 n Rys. 6. Wyniki obliczeń dla funkcji j~(x) = (lOx-1)2

Można tu zauważyć wyraźną przewagę algorytmu A1 nad Ak. Jedynie dla n = 9 i n = 10 lepszy jest algorytm Kiefera. Ogólnie mużna stwierdzić, że algorytm A1

daje zwykle szybszą niż Ak zbieżność do minimum. Tylko w przypadku funkcji silnie niesymetrycznych w otoczeniu minimum lub gdy minimum położone jest blisko brzegu przedziału, przewaga A1 nad Ak zanika.

Na rysunkach pokazano również rezultaty testowania algorytmu A2 • W naj-

częściej spotykanych przypadkach algorytm ten daje lepszą zbieżność niż Ak i A 1 •

Cytaty

Powiązane dokumenty

Będziemy teraz brać pod uwagę nie poziom ufności, lecz prawdopodo- bieństwo poprawnej decyzji... Asymptotycznie efektywna procedura sekwencyjna. Jeżeli nie,

We presented a strongly polynomial time algorithm for the assignment problem, but both the algorithms that we presented for the general minimum cost flow problem are not even

funkcjonałów (najczęściej wartości oczekiwanych L- st atystyk) statystyk porządkowych pochodzących z prób złożonych z zależnych zmiennych losowych... nierówności

Okolewski, Extremal properties of order statistic distributions for dependent samples with partially known multidimcnsional marginals, J. Wszystkie wymienione powyżej prace

Weźmy algorytm, A, powiedzmy, za każdym razem, gdy porównuje on dwa elementy, to łączymy

Prawo minimum Liebiga sprowadzono do pierwiastków chemicznych ( tlen, fosfor, potas, magnez), co było zgodnie z pierwotną intencją Liebiga, będącego badaczem potrzeb..

Intuicyjne rozumienie jest proste - pochodna funkcji opisuje tempo zmiany danej

Intuicyjne rozumienie jest proste - pochodna funkcji opisuje tempo zmiany danej (nachylenie)