Kultaleikkausmenetelmä on menetelmä, jolla löydetään yhden muuttujan reaalifunktion ääriarvo tietyltä väliltä. Menetelmä perustuu segmentin jaon periaatteeseen kultaisen leikkauksen suhteissa . Se on yksi yksinkertaisimmista laskennallisista menetelmistä optimointiongelmien ratkaisemiseksi . Ensimmäisen kerran Jack Kiefer esitteli vuonna 1953.
Olkoon funktio annettu . Tämän jälkeen tämän funktion määrittelemättömän arvon löytämiseksi tietystä segmentistä, joka täyttää hakukriteerit (olkoon se vähintään ), tarkasteltava segmentti jaetaan suhteessa kultaiseen leikkaukseen molempiin suuntiin, eli kahteen pisteeseen valitaan ja siten, että:
, missä on kultaisen leikkauksen osuus .Tällä tavalla:
Eli piste jakaa segmentin suhteessa kultaiseen leikkaukseen. Samalla tavalla jakaa segmentin samassa suhteessa. Tätä ominaisuutta käytetään iteratiivisen prosessin rakentamiseen.
Algoritmi on otettu Matthewsin ja Finkin kirjasta Numerical Methods. MATLABin käyttö.
Tämän algoritmin toteutus F# :ssa, jossa tavoitefunktion arvoja käytetään uudelleen:
olkoon phi = 0 . 5 * ( 1. 0 + sqrt 5. 0 ) minimoi f eps a b = anna rec min_rec f eps a b fx1 fx2 = jos b - a < eps niin 0 . _ _ _ 5 * ( a + b ) muuten olkoon t = ( b - a ) / phi let x1 , x2 = b - t , a + t anna fx1 = vastaa fx1 kanssa Jotkut v -> v | Ei mitään -> f x1 anna fx2 = sovittaa fx2 kanssa Jotkut v -> v | Ei mitään -> f x2 jos fx1 >= fx2 sitten min_rec f eps x1 b ( Jotkut fx2 ) Ei mitään muuta min_rec f eps a x2 Ei mitään ( Jotkut fx1 ) min_rec f eps ( min a b ) ( max a b ) Ei mitään Ei mitään // Kutsuesimerkkejä: minimoi cos 1 e - 6 0 . 0 6 . 28 |> printfn "%.10g" // = 3,141592794; funktiota f kutsutaan 34 kertaa. minimoida ( hauska x -> ( x - 1 . 0 )** 2 . 0 ) 1 e - 6 0 . 0 10 . 0 |> printfn "%.10g" // = 1,000000145; funktiota f kutsutaan 35 kertaa.Johtuen siitä, että asymptotiikassa kultaleikkausmenetelmä voidaan muuntaa ns. Fibonacci -lukumenetelmäksi . Fibonacci-lukujen ominaisuuksien vuoksi iteraatioiden määrä on kuitenkin tiukasti rajoitettu. Tämä on kätevää, jos toiminnon mahdollisten kutsujen määrä asetetaan välittömästi.
Optimointimenetelmät _ | |
---|---|
Yksiulotteinen |
|
Nolla järjestys | |
Ensimmäinen tilaus | |
toinen tilaus | |
Stokastinen | |
Lineaariset ohjelmointimenetelmät _ | |
Epälineaariset ohjelmointimenetelmät |
kultainen leikkaus | ||
---|---|---|
"Kultaiset" hahmot | ||
Muut osiot |
| |
Muut |