Difference between revisions of "SG0060 2010"

From Heureka Wiki
Jump to navigation Jump to search
 
(145 intermediate revisions by 2 users not shown)
Line 1: Line 1:
==Användarhandledning==
+
'''Lite snabbhjälp för dig som går kursen "Skoglig planering ur ett företagsperspektiv" höstterminen 2011.'''
  
Lite snabbhjälp för dig som går kursen "Skoglig planering ur ett företagsperspektiv" (kod SG0060) hösten 2010.  
+
==Systemöversikt==
 +
'''Heurekasystemet''' består av en serie fritt tillgängliga programvaror ("applikationer") för skoglig planering och analys. Systemet har utformats för att kunna räkna på flera av skogens alla värden. Visionen är att Heurekasystemet ska kunna bidra till ett både lönsammare och miljövänligare skogsbruk. De nyttor och värden som idag kan hanteras av systemet är virkesproduktion, rekreationsvärden, naturvärden och kolinlagring. Genom att dessa aspekter integreras i ett och samma system kan ett helhetsgrepp tas om planeringsproblematiken.
  
===Databas===
+
Systemet omfattar hela analyskedjan, från skoglig inventering av provytor, via prognosmodeller och optimering, till verktyg för att rangordna alternativ. Programvarorna är avsedda både för små- och storskogsbruket och omfattar de applikationer som syns i figur 1. De tre centrala applikationerna, som avser den geografiska nivån i analyserna (eller vad som är analysobjektet i fråga), är:
Du har tillgång till en särskild databas med skogliga data:
+
 
 +
*[[StandWise]]: För beståndvisa analyser, med 2D- och 3D-visualisering. En interaktiv simulator där användaren anger vilka åtgärder som ska göras och periodvis stegar sig fram (eller bak, och testar någonting annat).
 +
*[[PlanWise]]: För mer avancerad skogsbruksplanering, landskapsplanering  och avverkningsberäkningar för små eller stora innehav både på kort och lång sikt. Applikationen möjliggör optimering av skogsbruket.
 +
*[[RegWise]]: För konsekvensanalyser på regional och nationell nivå.
 +
 
 +
{|
 +
|[[Image:Systemoversikt.jpg|400px|thumb|left|Figur 1]]
 +
|}
 +
 
 +
Systemets kärna är gemensam för alla applikationer och består av alla de modeller som behövs för att återge en såpass realistisk utveckling av skogen som möjligt. Det rör sig, som ni säkert förstår, om flera hundra modeller. De viktigaste är de som prognosticerar skogens tillstånd, med tillväxtmodeller men även t.ex. inväxnings- och avgångsmodeller. Simuleringen av olika skogliga åtgärder (t.ex. slutavverkning, gallring, blädning, gödsling, röjning och plantering) är nära nog lika viktigt. Utfallet av nyttigheter, i morgon eller om flera hundra år, beror sedan främst på tillståndet i den framtida skogen (figur 2).
 +
 
 +
{|
 +
|[[Image:Karnan.jpg|400px|thumb|left|Figur 2]]
 +
|}
 +
 
 +
För att med tillräcklig precision kunna uttala sig om skogens framtida tillstånd krävs att tillväxten skattas med enskilda träd-modeller. Indatat om skogen må således vara högupplöst. Men att insamla uppgift om vartenda träd i hela den skog som ska analyseras faller på sin orimlighet. Därför förlitar man sig på stickprovsteorin och låter ett antal provytor (av viss storlek, med ett visst antal träd) per bestånd få representera skogsbestånden (figur 3). Dessa enskilda träd-uppgifter kan insamlas via fältinventering eller så kan de imputeras eller simuleras.
 +
 
 +
{|
 +
|[[Image:Skogsmodellen.jpg|400px|thumb|left|Figur 3]]
 +
|}
 +
 
 +
Indatat, beskrivningen av det initiala tillståndet hos den skog som avses analyseras, ska finnas i en s.k. skogsdatabas ("Forest Database"). Resultaten hamnar, föga förvånande, i en s.k. resultatdatabas ("Result Database") (figur 4). Vad som kan vara lite förvånande -eller åtminstone bra att veta- är att även intermediära resultat/alla de olika skötselprogramalternativen hamnar i resultatdatabasen. Med många behandlingsenheter, långa planeringshorisonter och mycket data som ska med i alla prognoser kan resultatdatabasen bli förhållandevis stor, förhållandevis snabbt (särskilt om du hela tiden gör fel och gör om, utan att du städar bort felaktigheter). För att verkligen kunna dela resultat med varandra bör man ha samma projektinställningar. Att vara säker på den saken kan vara svårt, men underlättas om man delar med sig av projektet genom att komprimera projektmappen och dess innehåll och låta kompisen paketera upp och öppna projektet i sin applikation.
 +
 
 +
{|
 +
|[[Image:Delainoutdata.jpg|400px|thumb|left|Figur 4]]
 +
|}
 +
 
 +
==Om PlanWise==
 +
PlanWise är ett datorprogram för att göra strategiska och taktiska planeringsanalyser och därifrån upprätta skogliga åtgärdsplaner. Analyser kan göras på heltäckande data (alla bestånd inom ett skogsinnehav) eller på ett urval (s.k. stickprovsavdelningar). Tidshorisonten kan vara alltifrån några enstaka år vid taktisk planering till mer än 100 år för avverkningsberäkningar. I PlanWise integreras indata, generering av alternativa aktiviteter, optimering och resultatredovisning. Det senare görs i form av tabeller, diagram och kartor. Med generering av alternativa aktiviteter menas att PlanWise kan generera ett antal olika skötselprogram för varje bestånd inom ett valt område. Ett skötselprogram är en sekvens av åtgärder, utfall och tillstånd över tiden. Som användare kan man dela in skogen i olika domäner och skapa olika skötselinstruktioner för dessa.
 +
 
 +
Innan du fortsätter, läs användarmanualen som finns på sidan [[User%27s_guide_to_PlanWise|User's guide to PlanWise]].
 +
 
 +
==Installationsanvisningar==
 +
Här är direktlänken (du behöver inte registrera dig):
 +
[[http://heureka.resgeom.slu.se/publish/planwise/publish.htm]].
 +
 
 +
Om du ska köra på din egen PC måste du installera SQL Server Express (version 2005 eller 2008), se anvisningar [[Install_SQL_Server/sv | här]].
 +
 
 +
===Språkinställning===
 +
Via "Tools" > "Customize" > "Language" kan du ändra till en version som är halvvägs, halvbra översatt till svenska!
 +
 
 +
==Skapa projekt==
 +
Det första man gör när man har startat PlanWise är att öppna ett befintligt eller skapa ett nytt projekt. Projektet innehåller användarinställningar och datasbaskopplingar. Se även [[Skapa_nytt_projekt| Skapa nytt projekt]].
 +
 
 +
{|
 +
|[[Image:ConfigDBconn.jpg|300px|thumb|left|Figur 5]]
 +
|}
 +
 
 +
Figur 5 visar konfigurationen, "Windows Authentication" innebär att du loggar in i databasen med samma uppgifter som i Windows. Om du arbetar i datasalen har du tillgång till en särskild server med färdiginstallerade databaser:
  
 
;Servernamn: SQL1.SLU.SE\TEST
 
;Servernamn: SQL1.SLU.SE\TEST
 
;Databas: HeurekaIndata_SG0060
 
;Databas: HeurekaIndata_SG0060
  
Det indata som beskriver skogen som avses analyseras finns på (eller skapas och sparas på) en s.k. skogsdatabas ("Forest Database"). Här heter alltså databasen SG0060 och ligger ovan angivna fjärrserver. Observera att programvaran för StandWise alltid måste vara lokalt installerad på den dator som används emedan datat kan finnas antingen centralt eller lokalt. Vill man ha data lokalt man dock ha programvara installerat för dylik databashantering, t.ex. Microsofts SQL Server Express (2005). ''OBS: Utdata sparas i normalfallet på en s.k. resultatdatabas ("Result Database"), dock inte vid analyser med StandWise. Här sparas resultaten istället i projektet, bara man kommer ihåg att spara innan projektet och programmet avslutas. När endast de senaste inställningarna sparas i projektet får man antingen skapa flera olika projekt alternativt kopiera tabeller till annan programvara, t.ex. Excel, och spara dem där. Diagram och grafiska presentationer (2D- och 3D-visualiseringar) kan sparas som bilder, eller åtminstone skärmdumpas och klistras in i t.ex. ett Word-dokument. Lite mer om det under "Beakta resultat från analyserna".''
+
Om du använder en egen PC anger du servernamn = LOCALHOST\SQLEXPRESS (eller bara .\SQLEXPRESS). Du måste i så fall först installera databasen med hjälp av SQL Server Management Studio (http://heureka.resgeom.slu.se/wiki/index.php?title=Installera_befintlig_databas). Hämta .bak-filen [ftp://salix.slu.se/download/Heureka/Data/SG0060 här].
 +
 
 +
Du ska också ange en resultatdatabas på motsvarande sätt som skogsdatabasen. Om du arbetar i datasalen anger du samma servernamn men en annan databas:
 +
 
 +
;Servernamn: SQL1.SLU.SE\TEST
 +
;Databas: HeurekaResultat_SG0060
 +
 
 +
Om du använder en egen PC skriver du bara in ett önskat namn databasen - programmet skapar sedan databasen. Använd "localhost" som servernamn:
 +
 
 +
;Servernamn: LOCALHOST\SQLEXPRESS
 +
;Databas: MinaHeurekaResultat (eller något annat, men inga mellanslag och inga å, ä eller ö!)
 +
 
 +
Observera att programvaran för PlanWise alltid måste vara lokalt installerad på den PC som används emedan datat kan finnas antingen centralt eller lokalt. Vill man ha data lokalt måste man alltså programvara installerat för dylik databashantering, t.ex. Microsofts SQL Server Express. Ett annat litet observandum är att Heureka tolkar LOCALHOST som din lokala PC emedan SQL Server (och Management Studio, där man kopplar upp sig mot fjärrserver eller "lokal server") vill att du istället anger din PCs datornamn (som du hittar under Systemegenskaper).
 +
 
 +
==Analysmoment 1: Indata==
 +
 
 +
===Importera data===
 +
'').
 +
 
 +
===Inspektera indata===
 +
 +
 
 +
{|
 +
|[[Image:Ostadkartavol.jpg|600px|thumb|left|Figur 6]]
 +
|}
 +
 
 +
==Analysmoment 2: Skapa skötselprogramalternativ==
 +
====Skapa domäner (dela in skogen i skötselgrupper) ====
 +
Den översta nivån i en förestående analys är analysområdet ("Analysis Area") som innehåller alla bestånd - behandlingsenheter ("Treatment Units") som ska analyseras. Nästa nivå utgörs av skogsdomänerna ("Forest Domains"). En skogsdomän är en grupp av bestånd som uppfyller ett eller flera villkor. Villkoren ställs utifrån beståndens initialtillstånd. Användaren anger villkoren själv och skapar därmed sina egna skogsdomäner. Man kan spara definitionen för skogsdomäner som en mall (i form av en fil hårddisken). Denna mall kan delas med andra användare. Domäntillhörigheten är statisk genom föreliggande analyser (ett bestånd kan alltså inte "växa in" i en annan domän än den initiala under pågående planperiod).
 +
 
 +
I början av en analys indelas varje bestånd i en (och endast en) skogsdomän. Domänerna ställs upp i prioritetsordning och utvärderas därefter, så att den domän som står överst utvärderas först. Man kan enkelt ändra i ordningen (högerklicka och välj "Move up"). Om enheten inte tillhör den första domänen kontrolleras nästa domän, osv. Det finns alltså inga problem med att domäner faktiskt kan överlappa varandra. Den sista domänen är en "restdomän". Denna har inga villkor utan inkluderar alla enheter som inte hamnat i annan domän. Det finns alltså heller inga problem med att ställda villkor "glappar".  
 +
 
 +
För varje skogsdomän kan man sedan koppla särskilda skötseldirektiv genom att redigera och skapa nya kontrollkategorier ("Control Categories"). Vi kallar dessa ibland skötselkategorier. En kontrollkategori utgörs av att antal kontrolltabeller. Genom dessa styr man, bland annat, vilka åtgärder som ska simuleras och hur de ska utföras. Genom att skapa en eller flera kontrollkategorier för varje skogsdomän, kan man differentiera skötseln över de olika skogsdomänerna. ''Genom en kontrolltabell av typen "Treatment Program Generator" styr man '''vilka åtgärder''' som ska simuleras och till viss del tidpunkter för dessa. Genom en kontrolltabell av typen "Treatment Model" styr man '''hur åtgärderna''' ska simuleras (utföras).''
 +
 
 +
För att skapa en ny skogsdomän högerklickar man på listen till "Other"-domänet och väljer "Add forest domain...". I den följande dialogrutan anges de i beståndsregistret. Målklassanpassat skogsbruk är nog det tydligaste exemplet på varför man domänindelar och sen för vissa domäner simulerar en särskild skötsel; NO-bestånden ska normalt skötas med "icke-skötsel" (dvs. lämnas till fri utveckling).
 +
{|
 +
|[[Image:Figur7.jpg|700px|thumb|left|Figur 7]]
 +
|}
 +
''OBS: Det råder ett OCH-förhållande mellan raderna, och ett bestånd har t.ex. sällan båda målklasserna NO OCH NS samtidigt. Om du vill att både NO- och NS-bestånden ska tillhöra samma skogsdomän (alltså ett ELLER-förhållande), välj då "Select multiple..." under "Expression".''
 +
 
 +
Repetition:
 +
* '''Högerklicka på "Other" och välj "Add forest domain..." varefter dialogrutan "Edit conditions" visas'''
 +
* '''Under "Property" väljs "Select property..."'''
 +
Expandera "StandObject Data" och markera "ManagementClass" (avser i detta fallet Skogsstyrelsens målklassning i s.k. Gröna skogsbruksplaner).
 +
* '''Ange att "ManagementClass Equal" (under "Operator") NO (under "Expression")'''
 +
NO står för Naturvårdsinriktning, lämnas Orört (till skillnad från NS, Naturvårdsinriktning som kräver någon form av Skötsel).
 +
* '''Döp om "Forest Domain 1" till t.ex. "NO-skog"'''
 +
 
 +
Vill du kolla hur många bestånd som hamnade i skapat skogsdomän högerklickar du i domänet och väljer "Evaluate forest domains" alt. "View treatment unit assignment...". Hamnade inga här får du kanske gå tillbaka och ändra kriterierna, "Edit conditions...".
 +
 
 +
I andra lägen kanske man vill skapa ett domän för specifika bestånd (som kanske identifierats i GISet som "bestånd angränsande till sjö med häckande storlom", "bestånd med förvaltarens favoritpass", osv.), dessa id-nummer listas då, semi-kolonseparerade, "in" "TreatmentUnit.Description". Alla siffror, inkl. nollor, och mellanslag må med, vilket är lite bökigt. Alldeles strax tillkommer sådan funktionalitet att man i kartan kan markera (ett eller) flera bestånd och direkt hänföra dessa till ett domän.
 +
 
 +
Vid importen av beståndsregistret kan man med fördel ta med annan viktig information via "UserDefinedVariable". Om man vill ta hänsyn till genomförda GIS-analyser, t.ex. bestånd helt eller delvis inom buffertzon till område med störningskänsliga arter, bör man alltså se till att sådana uppgifter medföljer redan vid dataimport. T.ex. skulle en av kolumnerna kunna bestå av värden 0 - 100%, beroende på hur stor del av beståndets yta som är inom nämnda buffertzon. Utifrån dessa uppgifter skulle sedan olika skogsdomäner, med olika skötselinstruktioner, kunna tillämpas.
 +
 
 +
====Skapa kontrollkategorier (specificera skötselinstruktioner) ====
 +
Till att börja med kan påpekas att det ''för närvarande'' finns en "Default Domain Settings" som innehåller en kontrolltabell "Nature Conservation". Med hjälp av denna kan användaren simulera en generell hänsyn som avses tas, i praktiken oftast i samband med slutavverkning. Antingen nyttjas befintlig uppgift om "NCArea", dvs. antal hektar av beståndets produktiva skogsmarksareal, eller så slumpas sådan areal fram, t.ex. som 5% av hela analysområdets produktiva skogsmarksareal eller som 5% av beståndets d:o. Denna "NC-del" lämnas sedan till fri utveckling. Via "Tree Retention" kan här även simuleras lämnandet av s.k. naturvårdsträd (eller "evighetsträd", som sällan får stå i evighet, användaren kan ange när dessa träd antas vara nerblåsta - något tillvaratagande av dessa träd simuleras ej utan de får då bli del av den liggande, döda veden).
 +
 
 +
Fortsättningsvis fokuserar vi på den kontrollkategori som håller alla andra kontrolltabeller, den som kallas "Default Control Category". Under default-kategorin finns alla kontrolltabeller med alla de grundinställningar som krävs för att kunna göra en analys - eller iallafall för att kunna generera skötselprogram. ''Alla utom en; prislistan måste användaren själv lägga till - högerklicka på "Default Control Category" och välj "Add pricelist...". Lägg märke till att kalkylräntan anges i denna kontrolltabell.''
 +
 
 +
Användaren skapar egna kontrollkategorier och till dessa lägger till de kontrolltabeller som avses editeras. ''Man behöver alltså bara lägga till de tabeller som man avser ändra i - om man annars nöjer sig med grundinställningarna så läser systemet dessa från default-kontrollkategorin om de inte finns i den användardefinierade kategorin.''
 +
 
 +
Nedan följer en genomgång för att skapa en ny kontrollkategori, kallad "Overhallning o nat for" då den avser att överhålla skogen och använda naturlig föryngring, som ett led i naturvårdsanpassningen av skogsbruket (eller iallafall simuleringen av en sådan anpassning). Vi specificerar dylika skötselinstruktioner i två kontrolltabeller; "Treatment Program Generator" och "Treatment Model". Alla kontrolltabeller, med alla möjligheter till användarkontrollering, finns beskrivna [http://heureka.resgeom.slu.se/wiki/index.php?title=Category:Reference_Manual här]. 
 +
 
 +
* '''Höger-klicka i kontrollkategorifönstret och välj "Add control category>New control category"'''
 +
Denna kategori hamnar nederst i trädet, ge den ett bättre namn, t.ex. "Overhallning o nat for", se figur 8.
 +
* '''Höger-klicka "Overhallning o nat for" och välj "Edit control tables>Add..."'''
 +
Lägg till de två kontrolltabeller som avses editeras; "Treatment Program Generator" och "Treatment Model".
 +
* '''Först editeras i "Treatment Model" så att det självföryngras...'''
 +
."-knappen och ändra för samtliga ståndorter till "Regeneration Code>SeedTrees", dels vid "Type of Final Felling" till "SeedTree". En hjälptext syns för vald kontrollparameter, längst ner i "Properties"-fönstret.
 +
* '''Sedan editeras i "Treatment Program Generator" så skogen överhålls...'''
 +
Välj tabellen och ändra i "Properties"-fönstret, framförallt vid "Final Felling Period Min" - )
 +
 
 +
{|
 +
|[[Image:Figur8.jpg|1000px|thumb|left|Figur 8]]
 +
|}
 +
 
 +
De två andra användardefinierade kontrollkategorierna "Fri utveckling" respektive "Kontinuitetsskogsbruk" kan du säkert fixa själv. Här är det så väl förberett att dessa skötselsystem redan finns definierade, som komplement till systemet "trakthyggesbruk" (eng: even-aged).
 +
 
 +
====Koppla kontrollkategorier med skogsdomäner====
 +
Detta steg är i sin grundform enkelt, gör bara såhär:
 +
 
 +
* '''Höger-klicka det skogsdomän, här "PF-skogar", till vilken det ska kopplas en användardefinierad kontrollkategori, här "Overhallning o nat for"'''
 +
Välj "Edit control category connection...>Add..." och markera kontrollkategorin och tryck "Ok".
 +
 
 +
Du såg kanske att man kan testa att tillämpa en kontrollkategori/skötselform för den innevarande skogen (Generation 1) och en annan skötselform för kommande generationers skogar (Gen 2, som kommer att upprepa sig in i t.ex. en omläggning som gynnar skogsbränslesortimentet (som man kanske tror ska bli mer efterfrågat och p.s.s. betinga ett högre pris). Men om man vill förenkla analysen och man redan vet att t.ex. PF-skogar ska skötas med ett trakthyggesbruk med naturlig föryngring och där det sker en viss överhållning så ta bort kopplingen till "Default Control Category":
 +
 
 +
* '''Under domänet PF-skogar, höger-klicka "Default Control Category" och välj "Delete control category connection"'''
 +
Det som händer nu är att till de bestånd som faller under detta domän skapas bara en uppsättning skötselprogram, enligt den användardefinierade kontrollkategorin, här "Overhallning o nat for". Man förlorar förvisso möjligheten att utvärdera kostnaden för detta skötselsystem, i förhållande till ordinarie trakthyggesbruk (med sannolikt kortare omloppstider och med plantering som föryngringsmetod), men det kanske man redan har resultat för, från en första referensanalys? Om man väljer att skapa flera olika sorters skötselprogramuppsättningar finns möjligheten att i optimeringsmodellen införa en restriktion som säkerställer att t.ex. PF-skogar alltid sköts med en viss sorts skötsel.
 +
 
 +
====Låt systemet beräkna skötselprogramalternativ====
 +
Detta steg är om möjligt ännu enklare:
 +
 
 +
* '''Välj "Generate Treatment Programs..." under menyn "Action"'''
 +
I den dialogruta som följer kan användaren namnge skötselprogramuppsättningen (välj då ett namn som beskriver de aktuella skötselinstruktionerna), ange längden på aktuell planeringshorisont och vilka resultatvariabler som ska tas med i prognoserna. Betänk att ytterligare resultatvariabler både tar plats (i resultatdatabasen) och tid (vid skötselprogramgenereringen) så ta bara med de du avser beakta i analyserna.
 +
 
 +
Nu kan det, främst beroende på antalet bestånd (eng: treatment units) och antalet skötselprogram (eng: treatment programs) som avses genereras för varje bestånd, vara läge att ta en bensträckare och kanske t.o.m. lunch. Innan du går, kolla bara i "Output"-fönstret så skötselprogramgenereringen startar och verkar funka. En indikation på att någonting blev fel är om bara enstaka program skapas för "vanliga" bestånd - då blir optimeringen skittråkig och sannolikt suboptimal.
 +
 
 +
====Inspektera skötselprogram====
 +
När du genom en noggrann inspektion av initialtillståndet kunde förstå förutsättningarna för det aktuella analysområdet gäller i princip samma sak här; inspektera de genererade skötselprogrammen och konstatera att de blev som du ville (enligt dina inställningar/skötselinstruktioner) och studera möjligheterna till optimering. Egentligen kan man se hela planeringsproblemet upplagt framför sig - för visst ser du behovet av ett beslutsstödjande system?
  
===Installera PlanWise===
+
I figur 9 syns t.ex. att man tjänade dryga hundralappen (per hektar, i nuvärde vid aktuell kalkylränta = är det förstås om man upptäcker missen ännu senare, först vid optimeringen (där man t.ex. vill införa en restriktion som säkerställer att det vid varje tidpunkt finns minst 5% löv i det totala, rotstående förrådet - då behövs ju trädslagsvisa uppgifter).
Här är direktlänken (du behöver inte registrera dig):
 
[[http://heureka.resgeom.slu.se/publish/planwise/publish.htm]]
 
  
===Skapa nytt projekt===
 
# Läs gärna lite om [[Introduction_to_Projects|projekt i Heureka]].
 
# Starta StandWise. Se till att du kör version 1.0.7.0 (under "Help" och "About...").
 
# Välj "New project..." när StandWise har startats.
 
# Ange ett projektnamn i fältet "Name".
 
# Om du vill ändra var projektet ska sparas görs det i fältet "Location" (föreslagen plats duger dock oftast gott).
 
# Klicka på "Browse..." bredvid fältet "Forest Database".
 
# Nu visas en dialogruta (Figur 1):
 
#* Server: Skriv in servernamnet som anges ovan.
 
#* Database: Skriv in databasnamnet som anges ovan.
 
 
# Testa kopplingen genom att klicka på "Test connection...".
 
 
 
{|
 
{|
|[[Image:ConnectDB_SG0040_2010.PNG|300px|thumb|left|Figur 1]]
+
|[[Image:Figur9.jpg|1000px|thumb|left|Figur 9]]
 
|}
 
|}
  
Se även [[Create_a_new_Project| Create new project]].
+
==Analysmoment 3: Optimering==
 +
====Formulera  optimeringsmodell====
 +
En fullödig och välutvecklad handledning för optimeringsverktyget, ehuru endast tillgänglig på engelska, finner du [[Optimization | här]].
  
===Svengelska===
+
Föreliggande steg består alltså i att med hjälp av optimering välja ut ''ett'' skötselprogram (av de många vi nyss skapade) ''för varje bestånd''.
Via "Tools" > "Customize" > "Language" kan du ändra till en version som är halvvägs, halvbra översatt till svenska!
+
* '''Under menyn "Optimization" väljs "Open model..."'''
 +
* '''Välj "ModelBasic.Hops"'''
 +
Eller har ni använt någon annan modell (jag hittade inte denna på kurshemsidan)? Annars får ni använda den med PlanWise-installationen medföljande modellen '''Max nuvärde med jämnhetskrav ver 4.Hops'''. För dig som kan din linjärprogrammering så kanske vissa saker känns bekanta? Man bygger upp sin optimeringsmodell genom att definiera "Sets", "Parameters", "Variables" och "Constraints".
  
===Mata in data i StandWise===
+
[http://zimpl.zib.de/download/zimpl.pdf här], läs kapitel 4.2 till och med 4.5. Nedan följer sedan ett antal syntax-exempel, vanligt förekommande i en optimeringsmodell i PlanWise.
[[Mata_in_data_manuellt|Instruktion för hur du matar in enstaka bestånd och provytor i StandWise]]
 
  
===Analysera med PlanWise===
+
=====Kontovariabel som summerar avverkad volym i varje tidsperiod:=====
Innan du påbörjar analyserna kan du bekanta dig med beståndet med hjälp av följande vyer:
+
<pre>FORALL <p> IN periods DO
* '''Table''' (välj vilka variabler du vill se via knappen "Select variables to show in table...")
+
        SUM <i,j,r> IN treatmentunits * alternatives * rowno :
* '''2D View'''
+
        volumeHarv[i,j,p,r] * area[i] * x[i,j] == volHarvTot[p] ;</pre>
* '''3D View''' (zooma med förstoringsglas, panorera med pilar eller med pekdon)
 
* '''Information''' (om du i 2D-vyn väljer ett träd blir Info-fönstret tvådelat med beståndsuppgifter överom och träduppgifter därunder)
 
* '''Graphs/Diagrams...''' (du kan skapa nya diagram, i dialogrutan börjar du med att ge diagrammet ett namn för att sedan välja vad du vill ha på x- och y-axeln)
 
  
Du når ovanstående under menyn "View" men även via knapparna i verktygsraden. Alla vyerna uppdateras när du stegar framåt (och bakåt) med pilarna, "Next period", här i 5-
+
Definitionen skrivs in direkt i ''variabelns'' definitionsfönster, men är i egentlig mening en ''restriktion''. Restriktionen motsvarar följande matematiska uttryck (restriktion) i en LP-modell:
 
{|
 
{|
|[[Image:analyserna.png|600px|thumb|left|Figur 2]]
+
|[[Image:PlanVis_Tut_Fig5_formula.png|left]]
 
|}
 
|}
  
Under menyn "Action", likväl som i verktygsraden efter "tidsresepilarna" (Figur 2), finns möjligheter att simulera skogsskötselåtgärder:
+
där:
* '''Final felling...''' (dvs. slutavverkning, där du i efterföljande dialogruta även anger återväxtåtgärder)
 
* '''Cleaning...''' (dvs. röjning)
 
* '''Thinning...''' (dvs. gallring, efterföljande dialogruta beskrivs mer nedan)
 
* '''Selection...''' (dvs. selektiv avverkning i samband med ett hyggesfritt skogsbruk)
 
* '''Regenerate...''' (dvs. återbeskogning)
 
* '''Enforce regeneration...''' (här ges möjlighet att återbeskoga en andra gång, i normalfallet efter en misslyckad första föryngring)
 
* '''Fertilize...''' (dvs. gödsling)
 
* '''Intensive fertilization...''' (här ges möjlighet att intensivskogsgödsla, men bara i ungskog)
 
  
av en dialogruta där du anger hur åtgärden ska utföras. Det som inte styrs från dialogrutan styrs från [[Control_Categories%2C_Control_Tables%2C_and_Forest_Domains|kontrolltabellerna]]. Välj "Control tables window" samt "Properties window" under "View" så ser du vilka inställningarna är i kontrolltabellerna. Du blir då samtidigt varse att det mesta kan omdefinieras av användaren, men läs på innan alltför stora ändringar företas, om t.ex. kontrolltabellen "Treatment Model" kan du läsa mer [[ControlTable_Treatment_Model|här]].
+
''I'' = mängden (set) av behandlingsenheter ("Treatment Units")
  
====Gallringssimulering====
+
''J'' = mängden av (index för) tillgängliga skötselprogram
Gallring betraktas som en svår åtgärd - både IRL (ute i praktiskt skogsbruk) och vid Heurekas simuleringar. I StandWise åtföljs valet "Thin... av en dialogruta med flera flikar. Först väljs gallringsmodell, där Hugins modell är lite krångligare och vi därför väljer att förklara den. Första flikens fyra följande kontrollparametrar är nog ganska självklara:
+
* ''Minimidiameter (cm)''
+
''R'' = mängden åtgärder (åtgärdsnummer) i en och samma period
* ''Maximal gallringsstyrka (% av grundyta)''
 
* ''Tillåt gallringsstyrkan att variera mellan provytor i beståndet (vilket oftast är lämpligt)''
 
* ''Simulera uttag av bioenergi (vilket kan vara olämpligt - många gånger behövs stickvägarna risas för att undvika mark- och rotskador)''
 
  
Under andra fliken definieras två trädslagsgrupper, vilket möjliggör att gallringen kan simuleras att utföras på ett visst sätt för en viss grupp.
+
''area<sub>i</sub>'' = areal för behandlingsenhet ''i'' (faktisk eller "representativ")
  
Under tredje fliken definieras gallringsstyrkan för respektive trädslagsgrupp.
+
''volumeHarv<sub>ijpr</sub>'' = avverkad volym i enhet ''i'' under period ''p'', givet att skötselprogram ''j'' tillämpas, från åtgärd ''r''
  
Under fjärde fliken definieras så gallringsformen - med dessa kontrollparametrar kan man t.ex. simulera en viss typ av höggallring som ger relativt bra netto utan att förstöra förutsättningarna för god volym- och värdetillväxt i det kvarvarande beståndet. Men det är inte enkelt (vare sig i Heureka eller IRL). Användaren styr här '''mot ett visst uttag''' (och '''inte''' mot ett visst kvarvarande bestånd, som vid röjning):
+
''volHarvTot<sub>p</sub>'' = summa avverkad volym under period ''p''
* ''Conifers vs. Deciduous: Pilen flyttas mot den trädsort (barr eller löv) där gallringsuttaget ska vara större''
 
* ''Pine vs. Spruce: Pilen flyttas mot det trädslag (tall eller gran) där gallringsuttaget ska vara större''
 
* ''From Below vs. From Above: Pilen flyttas mot det gallringsform (låg- eller hög-) som avses simuleras''
 
* ''Smallest Diameter vs. Small Diameter: Pilen flyttas mot den kvartil map. diameterspridningen i beståndet (här de två kvartilerna under medeldimetern) där gallringsuttaget ska vara större''
 
* ''Large Diameter vs. Largest Diameter: Pilen flyttas mot den kvartil map. diameterspridningen i beståndet (här de två kvartilerna över medeldimetern) där gallringsuttaget ska vara större''
 
  
Som sagt så finns fler parametrar som kontrollerar hur gallring ska simuleras. Dessa hittar du i kontrolltabellerna, främst tabellen "Treatment Model". Men innan du börjar editera i dessa så läs på, t.ex. på Wikin under "Reference Manual". Du bör alltså kunna se alla kontrolltabellerna ute till höger (om du valt rätt flik, som här sitter lite nedåt). Välj en tabell och dess parametrar syns i egenskapsfönstret. Markera en parameter och du får en liten förklaring längst ner i fönstret. Ställ dig i värderutan bredvid parametern om du vill ändra något (om det finns fördefinierade valmöjligheter får du upp en rullgardin, t.ex. med "True" eller "False" om stickvägar ska simuleras vid gallring).
+
''x<sub>ij</sub>'' = beslutsvariabel (binär) = 1 om skötselprogram ''j'' tillämpas för enhet ''i'', annars 0
  
I 2D-vyn kan användaren definiera stickvägarnas utläggning vid gallring via knappen "Draw", högerklicka i vyn så nås nya menyer, t.ex. "Autodraw striproads".
+
=====Kontovariabel som summerar volym som slutavverkas i varje tidsperiod:=====
 +
<pre>FORALL <p> IN periods DO
 +
        SUM <i,j,r> IN treatmentunits * alternatives * rowno WITH treatment[i,j,p,r] == 8 :
 +
        volumeHarv[i,j,p,r] * area[i] * x[i,j] == volHarvFinalFelledTot[p] ;</pre>
  
===Resultat från analyserna===
+
Skillnaden mot föregående uttryck är att efter "rowno" följer ett villkor att summering bara ska göras för slutavverkningsåtgärder (som har koden 8). Notera användningen av dubbla likhetstecken.
Analyser i StandWise bygger på att användaren iterativt prövar sig fram, gör nya prognoser och testar olika varianter av olika skötselåtgärder i strävan att hitta ett bra skötselprogram för beståndet. Vad som är "bra" avgör användaren. Söker du efter det bästa skötselprogrammet så lär du få sitta länge (ett antal år) då kombinatoriken ger en jämrans massa möjliga program. Men se isåfall fram emot påbyggnadskursen i skoglig planering - där används Heurekas PlanWise som har en inbyggd optimeringsmodell. Då är bara frågan hur du ska kunna bärga dig tills dess?
 
  
Hur du sparar undan resultat från en körning väljer du själv. Har du perfekt minne så kanske det räcker, någon annan kanske nöjer sig med nerkrafsade anteckningar. Excel brukar dock föredras av många för datalagring och resultatpresentation. Under fliken "Table" finns två knappar:
+
=====Kontovariabel för arealen slutavverkning i varje tidsperiod:=====
* ''Select variables to show in table...''
+
Denna variabel är nästan identisk med den föregående, vi tar bara bort parametern "volumeHarv(i,j,p,r)" från uttrycket.
* ''Copy table''
+
<pre>FORALL <p> IN periods DO
Den första knappen följs av en dialogruta där användaren ges möjlighet att välja och vraka bland Heurekas hundratals variabler, vilka som ska beaktas vid prognoserna och simuleringarna. Vilka variabler det är bestämmer du, de beskrivs lite mer [[Result_Variables|här]]. Några tips: "Before" och "After" relaterar till en ev. utförd åtgärd i aktuell period, anpassa valet av variabler utifrån skogstillståndet (det är ju onödigt att beakta värden för ett trädslag som inte finns), vissa variabler saknar förstås värden (ni anger väl inte målklass/"Management Class" för era bestånd?), av vissa variabler kan finnas flera varianter, t.ex. "Biological Age" används främst av systemutvecklarna. I tabellen kan du sedan få mer information om en variabel, främst i vilken enhet den anges, genom att hålla pekaren över variabeln. Den andra knappen kopierar sonika tabellen, med variabelnamn och kolumnvisa värden för varje prognosticerad 5-årsperiod, redo att klistras in i t.ex. Excel.
+
        SUM <i,j,r> IN treatmentunits * alternatives * rowno WITH treatment[i,j,p,r] == 8 :
 +
        area[i] * x[i,j] == areaFinalFelledTot[p] ;</pre>
 +
''"8" i ovanstående två uttryck är alltså det numeriska värde som motsvarar slutavverkning för parametern "treatment". Man kan kontrollera dylikt genom att högerklicka på parametern och välja "View definition" (testa detta även för "forestDomain" och "trmtCategory", särskilt bra om man skapat flera nya skogsdomäner med viss sorts skötsel definierat i kontrollkategorierna).''
  
På samma sätt kan man göra med de ekonomiska resultaten under fliken "Net present value". För att man under "View net present value" (Pengakuvert-knappen i figur 2) ska kunna beakta beståndets nuvärde etc. så måste man först beräkna en prislista ("Calculate pricelist", Pengapåse-knappen i figur 2). Du kan editera i befintlig prislista eller lägga till en helt ny, innevarande inställningar ("Default") duger dock gott. Vad du kan testa är t.ex. huruvida valda åtgärder påverkar värdena, om det för ett visst bestånd är lönsamt att gallra en gång till eller om nästa åtgärd lämpligast är slutavverkning vid en viss tidpunkt. Fliken "Final felling settings..." har här inte så stor betydelse (aktualiseras först vid valet "Last Period", dessutom är jag tveksam om "Optimal final felling period..." verkligen funkar i denna applikation). Under fliken finns alltså bara en knapp:
+
=====Restriktion som begränsar hur stor areal som får slutavverkas i varje tidsperiod:=====
* ''Copy net present value to clipboard''
+
<pre>FORALL <p> IN periods DO
Som tröst inför denna knapphet klistras sedan in mer uppgifter än vad som syns under fliken, med värden i perioder bortanför planeringshorisonten.
+
areaFinalFelledTot[p] <= 20 ;</pre>
  
Diagram och 2D-vyer kan sparas genom att högerklicka på bilden och välja "Save as image...". För 3D-vyer får vanliga skärmdump göras. I Excel kan du säkert göra fina diagram. StandWise motsvarighet är dock inte fy skam. Särskilt inte då de uppdateras samtidigt med prognosen och åtgärdssimuleringen. Med det menas att du t.ex. kan studera medeltillväxten (m<sup>3</sup>sk/ha och år) samtidigt som du gör en prognos och då kanske hittar den period då den kulminerar (och då man kanske borde avverka?).
+
Vi använder alltså den kontovariabel för slutavverkningsareal som vi skapade ovan, och lägger in restriktionen (eg. restriktionerna) att den slutavverkade arealen får vara högst 20 hektar i en och samma period. ''Om du vill inaktivera en restriktion utan att ta bort så högerklicka och välj "Exclude".''
 +
 
 +
=====Lägga till ny parameter=====
 +
"Sets" och "Parameters" utgör indata till optimeringsmodellen. En parameter får sitt värde antingen genom att koppla den till resultatdata som har beräknats av skötselprogramgeneratorn eller genom att ge den en matematisk definition. ''Blanda inte ihop "variabler" som beräknas av skötselprogramgeneratorn med "beslutsvariabler" i optimeringsmodellen. För modellen är alla variabler som beräknas utanför den konstanter (dvs. element i ett "Set" eller i en "Parameter").''
 +
 
 +
Så här gör man för att skapa en ny parameter och koppla den till resultatdata:
 +
* Högerklicka på "Parameters" och välj "Add new parameter"
 +
* Låt "Heureka result variable" vara valt och klicka på "Next"
 +
Vi ska alltså i detta läge inte skriva en ny formel, utan koppla parametern direkt till en kolumn i databasen där skötselprogramalternativen har sparats.
 +
* Välj t.ex. "TreatmentControlCategory" under noden "Forest Domain"
 +
* Byt parameternamnet till något bättre.
 +
Den nya hamnar längst ner bland alla "Parameters". Ett bättre namn är ett som indikerar vad det handlar om, i rutan "Properties" och bredvid "Description" kan en ännu fylligare förklaring skrivas in.
 +
 
 +
Notera att systemet själv håller reda på indexeringen. I detta fall har vi en skötselkategori för varje behandlingsenhet, skötselprogramalternativ och period. Att vi har med period beror på att skötselkategorin kan vara olika före och efter slutavverkning.
 +
 
 +
=====Lägga till ny restriktion=====
 +
* Högerklicka på "Constraints" och välj "Add new constraint"
 +
* Klicka på den restriktion som har skapats.
 +
I rutan "Properties" för restriktionen väljer du "Click to add index", lägger till och väljer "Periods[p]" för att skapa en restriktion för varje tidsperiod.
 +
 
 +
=====Sammanfattningsvis=====
 +
I viss mån kanske denna kurs blivit lite för lätt, med färdiga och fungerande optimeringsmodeller... I figur 10 syns den med PlanWise medföljande modellen, röd pil markerar målfunktionen; aktiv syntax visar att det rör sig om två mål där man söker högt nuvärde men utan alltför ojämn avverkningsprofil. I egenskapsfönstret kan konstateras att optimeringsmodellens riktning är maximerande. ''Med så mycket förberett blir din uppgift att försöka förstå jämnhetsrestriktionerna "(max)volharvDecrease" och "(max)volharvIncrease", som de definierats finns en större svaghet och en stor styrka - ser du dessa?'' 
  
Om du högerklickar på ett diagram finns funktionen "Create a copy of last data series". Resultatet för flera olika körningar/skötselprogram kan då visas i ett och samma diagram, se figur 3.
 
 
{|
 
{|
|[[Image:Standwise_grundyta.png|400px|thumb|left|Figur 3]]
+
|[[Image:Figur10.jpg|1000px|thumb|left|Figur 10]]
 
|}
 
|}
 +
 +
====Lös optimeringsproblem====
 +
* '''Högerklicka i optimeringsmodell-fönstret och välj "Compile and solve model..."'''
 +
Beakta utfallet i "Output"-fönstret. Med en bra modell gick allt bra och optimeringsproblemet kunde lösas. Det kan dock krångla, om felmeddelandet "Could not build model" beror det oftast på formuleringen av problemet i optimeringsmodellen. Gå tillbaka och kontrollera variabler och restriktioner, dess definitioner och syntax (ibland kan modellen bli för stor för att kunna byggas - ta då bort parametrar, variabler och restriktioner som inte används). Felmeddelandet "Solution: Infeasible" är lite bättre men givetvis inte bra. Det fanns alltså ingen lösning på föreliggande optimeringsproblem. Gå tillbaka till optimeringsmodellen och uteslut ("Exclude") alla dina restriktioner för att sedan inkludera dem, en efter en, och försök lösa problemet efter varje inkludering. På så sätt kan man hitta åt den restriktion som är alltför restriktiv. Ibland kan man måsta backa ännu längre och generera fler skötselprogram till varje bestånd - att optimeringsproblemet saknar lösning kan mycket väl bero på att det saknas sådana skötselprogram som kan uppfylla en viss restriktion. Gå även in under menyn "Optimization>Settings...", här kan man t.ex. tillåta en längre tid i sökandet efter problemlösning.
 +
 +
* '''Efter att en lösning av optimeringsproblemet erhållits, välj "Save Optimization Results"'''
 +
Detta så du ska kunna beakta resultatet under fliken "Optimization Results".
 +
 +
=====Round to integer solution?=====
 +
''Slutavverkas ett och samma bestånd i två på varandra följande tidsperioder? Det kan verka så emedan det eg. är fråga om delavverkning (t.ex. 75% (av beståndets yta) avverkas först, 25% under nästa 5-årsperiod). Sådant kan bli aktuellt om man har relativt få men stora bestånd (och kanske i optimeringen inkluderat ett villkor som begränsar hyggesstorleken, "limitFinalFelling"). Ett sätt att undvika detta är att för beslutsvariabeln "x" ändra "RangeType" till binär, alltså accepteras endast värdena 0 eller 1, optimeringen blir då emellertid svårare och kan ta lång tid.''
 +
 +
Att beslutsvariabeln tillåts anta decimaltalsvärden kan i vissa lägen vara önskvärt - ni har ju jobbat med både heltäckande data (där varje bestånd representerat enbart "sig själv") och ett dataset med stickprovsavdelningar där en avdelning har en representativ areal mycket större än sin faktiska och sålunda representerar flera andra avdelningar. Resultatet för en stickprovsavdelning kan då fördelas ut på dess representerade avdelningar i förhållande till värdet på beslutsvariabeln. Men generellt kan man nog säga '''Heltäckande data = heltalsavrundning'''.
 +
 +
Numer finns alltså möjligheten att avrunda till heltalslösningar, väljs under "Optimization>Settings..." och innebär att man '''efter optimering''' avrundar så att ett bestånd i sin helhet bara kan åtgärdas med en typ av åtgärd i en och samma period. Men det innebär åxå att du kan få olika resultat i "Output"-fönstret jämfört med de under fliken "Optimization Results".
 +
 +
==Analysmoment 4: Analysera resultat==
 +
Hur du väljer att analysera och presentera resultaten beror på din uppgift. Vilka resultatvariabler som är av intresse att beakta får du välja själv. Under fliken "Optimization Results" finns goda möjligheter att presentera resultat på lämpligt sätt. Tre underflikar finns här:
 +
* '''Details'''
 +
Här presenteras för samtliga bestånd i aktuellt analysområde det valda ("bästa") skötselprogrammet, via "View Treatment Programs". Du bestämmer vilka variabelvärden som ska beaktas (via "Select Variables") i hur många 5-årsperioder. Möjligheten finns sen att kopiera datamatrisen in i annat medium, t.ex. Excel, och där fortsätta resultatanalysen. Figur 11 visar ett resultat där varje bestånds föreslagna åtgärder, och vid en föreslagen avverkningsåtgärd då den avverkade volymen (i m<sup>3</sup>sk/ha), presenteras för de tre första 5-årsperioderna.
 +
 +
{|
 +
|[[Image:Analysera_data_fig1.JPG|1000px|thumb|left|Figur 11]]
 +
|}
 +
 +
* '''Tables and Graphs'''
 +
Här kan användaren skapa egna period- och klassdiagram. Datamatrisen kan även här kopieras in i annan tabell etc. Observera möjligheten att välja typ av punkt-, linje- och olika sorters stapeldiagram. Du kan läsa mer här: [[Report Builder]]. Figur 12 visar en s.k. avverkningsprofil, med totalvolymer från gallring respektive slutavverkning, så man snabbt kan kontrollera t.ex. huruvida ställda jämnhetskrav haft genomslag. Med en "Period Graph" presenteras förutom diagrammet även de bakomliggande värdena i en datamatris (lämplig att kopiera och klistra in i t.ex. en tabell i Word eller i ett Excelark för att göra ett snyggare diagram). 
 +
 +
{|
 +
|[[Image:Analysera_data_fig2.JPG|1000px|thumb|left|Figur 12]]
 +
|}
 +
 +
* '''Map'''
 +
Gör t.ex. en temakarta för variabeln "Treatments" för att se vilka åtgärder som görs i de olika bestånden i olika perioder. Välj ett resultat, t.ex. "Strategic Optimization" i rutan bredvid "Result:" (ev. må du först trycka på "Refresh"-knappen). I fönstret "Map Properties" expanderar du "Treatments" och väljer "Treatment". Högerklicka och välj "Add Items Automatically" så får du upp en dialogruta. Ta bort åtgärder som du inte vill visa (markera och klicka på "Remove"). Spara bara t.ex. "Thinning" och "Final felling" (och ev. andra förekommande avverkningsformr) och ändra färgerna på dessa. Högerklicka igen på "Treatment" och välj "Show in Map". Bläddra mellan planperioderna för att beakta föreslagna avverkningar i respektive 5-årsperiod. Figur 13 visar hur man i kartan kan beakta vilka bestånd som föreslås till vissa åtgärder i en viss period.
 +
 +
{|
 +
|[[Image:Analysera_data_fig3.JPG|1000px|thumb|left|Figur 13]]
 +
|}
 +
 +
Du kan läsa mer om resultatredovisning här: [[:Category:Results]]
 +
 +
[[Category:Tutorials]]

Latest revision as of 12:30, 9 December 2011