Katkonnanohjaus evoluutiolaskennan keinoin Askel kohti optimaalista tavaralajijakoa Veli-Pekka Kivinen HY, Metsävarojen käytön laitos
Katkonnanohjauksen problematiikkaa Miten arvo-/tavoitematriisit tulisi asettaa? - Samat matriisit jokaiseen leimikkoon vai leimikkokohtaisesti säädetyt matriisit? - Miten säätää/optimoida tavoitejakaumia? Miten tavoitejakauman ja toteutuneen tukkijakauman välistä yhteensopivuutta (goodness-of-fit) tulisi mitata? Tavaralajien optimaalinen allokointi?
Evoluutiolaskenta - Heikot sortuu elon tiellä... Evoluutiostrategiat Rechenberg, Schwefel 196 Evoluutio-ohjelmointi Fogel, Owens,Walsh 1965 Geneettiset algoritmit (GA) Holland 196
Geneettinen algoritmi (GA) Luo joukko aloitusratkaisuja Arvioi jokaisen ratkaisuehdotuksen hyvyys eli optimaalisuus Lopeta Kyllä Riittävän hyvä ratkaisu löytynyt tai aika loppunut Ei Luo uusi joukko ratkaisuyritteitä Valinta Yhdistely Mutaatio
Geneettinen algoritmi (GA) arvoja/tai tavoitematriisien optimointiin Yksitavoiteoptimointia - Tavoitteena maksimoida toteutuneen tukkijakauman ja tavoitejakauman välinen yhteensopivuus etsimällä optimaalisia matriisikombinaatioita Kokonaisoptimointia (forest level) - Usean leimikon rinnakkainen käsittely - Usean tukkitavaralajin rinnakkainen käsittely tavaralajiallokointi mukana Rajoittamatonta optimointia - Ei määrä tms. rajoitteita
Ratkaisuyritteiden koodaus LEIMIKKO 1 LEIMIKKO 2... LEIMIKKO n 1 Arvomatriismatriisi 111 Arvo- Arvomatriisi 112 12k Arvomatriismatriisi 121 Arvo- Arvomatriisi 122 12k... Arvomatriismatriisi 1n1 Arvo- Arvomatriisi 1n2 1nk 2 Arvomatriismatriisi 211 Arvo- Arvomatriisi 212 21k Arvomatriismatriisi 221 Arvo- Arvomatriisi 222 22k... Arvomatriismatriisi 2n1 Arvo- Arvomatriisi 2n2 2nk M M M M m Arvomatriismatriisi m11 Arvo- Arvomatriisi m12 m1k... Arvomatriismatriisi m21 Arvo- Arvomatriisi m22 m2k Arvomatriismatriisi mn1 Arvo- Arvomatriisi mn2 mnk Tukkilaji 1 Tukkilaji 2 Tukkilaji k
Stem data stand 1 Price matrix Log type 1 string 1 Log type 2 Stem data stand 2 M Stem data stand n-1 BUCKING PROCEDURE Price matrix string 2 M Price matrix string m-1 Log type k Apply mutation Stem data stand n Price matrix string m Log output matrix 1 Log output matrix 2... Log output matrix m-1 Log output matrix m Apply crossover Global target matrix Log type 1 Calculate the fitness of each price matrix string Log type k Log type 2 Has the maximum iteration number been reached? Yes End No Apply selection
Geneettinen optimointialgoritmi Lähtötiedot 1. Leimikoiden runkotiedot - Runkokäyrät STM-formaatissa - Valmius lukea laaturajat (mänty); ei vielä mukana optimoinnissa - Optimointitesteissä sekä todelliset (moto) että estimoidut (ennakkomittaus) puustotiedot 2. Tavaralajeittaiset tavoitejakaumat - Tavoite yli koko matriisin tai - Läpimittaluokittainen pituustavoite
Geneettinen optimointialgoritmi Lähtöpopulaation ratkaisuyritteet - Generoidaan satunnaisesti annetulta lukualueelta Ratkaisuyritteiden hyvyyden mittaaminen - Tavoitejakaumien ja toteutuneiden tukkijakaumien vertailu summatasolla: Tukki 1: Tav.jak. Tot.Kok.Jak. Hyv.arvo 1 Tukki 2: Tav.jak. Tot.Kok.Jak. Hyv.arvo 2 Tukki k: Tav.jak. Tot.Kok.Jak. Hyv.arvo k Kokonaishyvyysarvo
Katkontatuloksen hyvyyden mittaaminen Jakauma-aste Tavoitejakauma (%) Toteutunut jakauma (%) Lpm Tukin pituus (cm) Lpm Tukin pituus (cm) (mm) 4 4 46 49 (mm) 4 4 46 49 16 2 2 16 2 5 5 5 2 6 1 1 1 15 15 Jakauma-aste = min(.2,.) + min(.5,.) + min(.1,.) + min(.15,.) =.2 (2%)
Katkontatuloksen hyvyyden mittaaminen Khi-toiseen (χ2) testistatistiikka 2 χ = m n ( o ) ij e ij i= 1 j= 1 2 /e ij o ij = Havaittu frekvenssi (tukkien lkm) tukkiluokassa (i,j) e ij = Odotettu (tavoite) frekvenssi tukkiluokassa (i,j). - Hyvä yhteensopivuus: χ 2 - Huono yhteensopivuus: χ 2 Tulkinta? Skaalaus välille [,1] kontingenssikertoilla (C): 1 C = 1 [χ2/(χ2+n)]1/2
Katkontatuloksen hyvyyden mittaaminen Khi-toiseen (χ2) testistatistiikka Tavoitejakauma (%) Toteutunut jakauma (kpl) Lpm Tukin pituus (cm) Lpm Tukin pituus (cm) (mm) 4 4 46 49 (mm) 4 4 46 49 16 2 2 16 2 5 5 5 2 6 1 1 1 15 15 χ 2 = (-2) 2 /2 + (-2) 2 /2 +... + (-15) 2 /15 + (-15) 2 /15 = 441.667 Kontingenssikerroin (C) = [441.667/(441.667+1)].5 =.9 1 C =.97
Katkontatuloksen hyvyyden mittaaminen Indeksiteoria: Laspeyresin volyymi-indeksi - Aggregoitu, painotettu määränmuutoksen mittari -- painoina perus- tai vertailuajankohdan hinnat Q L m n i= 1 j= 1 = m n i= 1 j= 1 p p ij ij o e ij ij - Hyvä yhteensopivuus: Q L 1 ( 1) - Huono yhteensopivuus: Q L o ij = Havaittu frekvenssi (tukkien lkm) tukkiluokassa (i,j) e ij = Odotettu (tavoite) frekvenssi tukkiluokalle (i,j) p ij = Tukin (suht.) (jalostus)arvo tukkiluokassa (i, j)
Katkontatuloksen hyvyyden mittaaminen Laspeyresin volyymi-indeksi Toteutunut jakauma (o ij ) Jalostusarvomatriisi (P ij ) Lpm Tukin pituus (cm) Lpm Tukin pituus (cm) (mm) 4 4 46 49 (mm) 4 4 46 49 16 16 1 1 15 18 2 2 124 128 1 14 156 161 164 168 16 165 168 17 pij x oij = 1x + 128x + 164x + 17x = 14 1 pij x eij = 15 76 Q L =.919
Geneettinen optimointialgoritmi Ratkaisuyritteiden hyvyyden mittaus - Khi-toiseen statistiikka Seuraavan yritesukupolven muodostaminen 1. Valinta: Elitismi - Hyvyysarvoltaan parhaimmat jatkoon 2. Risteytys: Uniform crossover - Matriisien satunnainen rekombinaatio leimikoittain ja tavaralajeittain. Mutaatio: Korvaus satunnaisluvulla - Kunkin matriisin jokaisella solulla mahdollisuus mutatoitua
Geneettinen optimointialgoritmi Uniform crossover Vanhempi 1 Jälkeläinen Vanhempi 2 lpm/pit 7 4 4 46 16 24 155 279 17 18 26 11 26 112 2 219 188 2 297 22 179 1 172 18 lpm/pit 7 4 4 46 16 24 155 16 17 18 222 11 265 199 2 276 188 2 297 22 179 155 199 18 lpm/pit 7 4 4 46 16 198 211 16 178 18 222 299 265 199 2 276 24 167 289 22 4 155 199 21 Crossover maski lpm/pit 7 4 4 46 16 1 1 1 18 1 2 1 1 1 22 1 1
Tavoitejakauman optimointi GA:lla Miten säätää/optimoida tavoitejakaumia? - Tavallisesti epäsuorasti arvomatriisien kautta: GA:lla toteutuneet pölkytykset tavoitteiksi Tavoitejakauma on prioriteettilista - Tulkitaan tukkiluokkien prioriteetit hintoina Ohjataan pölkytystä pelkällä tavoitejakaumalla ns. greedy algorithm (ahne algoritmi): Eniten puutetta suurin prioriteetti
Tavoitejakauman optimointi GA:lla Pölkytysalgoritmi: 1. Valitse katkontavaihtoehto, joka maksimoi rungon arvon (arvoapteeraus) 2. Päivitä prioriteetti(tavoite)matriisi vertaamalla toteutunutta kumulatiivista tukkijakaumaa tavoitejakaumaan: ( 1+ n) p(priority) = m n ( 1+ m) missä m = Tukkien tavoitemäärä tukkiluokassa (i, j) n = Tukkien todellinen kumulatiivinen lukumäärä tukkiluokassa (i, j). Palaa kohtaan 1
Kantoja riittää kaskessa... Rajoitevapaa optimointi ei vastaa todellisuutta - Tavaralajeilla määrätavoitteita/-rajoitteita - Pieniä tavaralajieriä kallista keräillä ja kuljettaa Yksitavoiteoptimointi vain osaoptimointia - Katkontatulos vain yksi kriteeri muiden joukossa - Esim. kuljetusetäisyys keskeinen tekijä tavaralajivalinnassa Rajoitettu monitavoitteinen optimointiongelma Miten saada luotettavaa ennakkotietoa? - Totaalimittaus ilmakuvilta?