Difference between revisions of "Treatment Program Generator Design"

From Heureka Wiki
Jump to navigation Jump to search
Line 37: Line 37:
 
=== Creating Treatment Specifications ===
 
=== Creating Treatment Specifications ===
  
En skötselspecifikation innehåller en beskrivning av när röjning, första gallring och slutavverkning ska ske (röjning och första gallring kan vara utelämnade, slutavverkning finns alltid med). Målet med att skapa skötselspecifikationer är att ta fram de kombinationer som är möjliga, utifrån användarens inställningar och skogens tillstånd.
+
A treatment specification contains a description on when cleaning, first thinning, and final felling can be done (cleaning and thinning can be omitted, final felling is always present in a treatment specification).
Först bestämmer man vilka åtgärder som är möjliga. , för röjning och gallring innebär det att man skriver fram åtgärdsenheten och provar när röjning och gallring är möjligt. Utifrån användarens inställningar har man nu fått fram 1-3 åtgärder med ett område för varje åtgärd i varsin TreatmentSpecificationRange.
+
 
Det kan se ut så här:
+
The purpose of treatment specifications is to generated all possible combinations of even aged management, based on user settings and of course the state of the treatment unit.
period 4-5
+
 
period 8-10
+
First it is determined when and if the treatments can be performed. For final felling lowest final felling age is calculated (according SVL, Skogsvårdslagen). For cleaning and thinning growth prognosis has to be made and in each period it is evaulated if the treatment is possible. Each treatment is then stored in a <tt>TreatmentSpecificationRange</tt>. It may look like this:
period 10-14
+
 
Därefter sorteras åtgärderna i omvänd prioritetsordning, så att den åtgärd som har högst prioritet (ska varieras mest) ligger sist. :
+
# Cleaning period 4-5
period 4-5
+
# Thinning period 8-10
period 10-14
+
# Final Felling period 10-14
period 8-10
+
 
Sista steget är att utifrån framräknade områden ta fram en lista över specifikationer som är möjliga. Det sker i två delsteg, först skapas alla permutationer som är möjliga (med hjälp av klassen TreatmentSpecificationEnumerator), därefter filtreras de permutationer som inte är tillåtna bort (av klassen TreatmentSpecificationCollection). Det kan se ut så här:
+
Thereafter the ranges are sorted in reverse priority, so that the treatment with highest priority (which will be varied most) is last. If the priority order (set by the user) is thinning - final felling - cleaning then the list above will look like this after sorting:
Röjning Slutavverkning Gallring Kommentar
+
 
4 10 8
+
# Cleaning period 4-5
4 10 9
+
# Final Felling period 10-14
4 10 10 Filtreras bort eftersom gallring och slutavverkning inte kan ske samtidigt
+
# Thinning period 8-10
4 11 8
+
 
4 11 9
+
The last step is to, from the ranges, create a list of possible specifications. The class <tt>TreatmentSpecificationEnumerator</tt> creates an enumeration of all possible treatment specifications from the ranges and the class <tt>TreatmentSpecificationCollection</tt> filters the invalid permutations.
4 11 10
+
 
5 10 8
+
It might look like this:
osv
+
 
 +
{| border = "1"
 +
|-
 +
|Cleaning||Final Felling||Thinning||Comment
 +
|-
 +
|4||10||8||
 +
|-
 +
|4||10||9||
 +
|-
 +
|4||10||10||Filtered since cleaning and final felling not can occur in the same period
 +
|-
 +
|4||11||8||
 +
|-
 +
|4||11||9||
 +
|-
 +
|4||11||10||
 +
|-
 +
|5||10||8||
 +
|-
 +
|etc
 +
|}
 +
 
 +
(From the table it is also obvious why the treatment with the highest priority is last, it is varied most.)
  
(Av tabellen framgår också varför åtgärden med högst prioritet ligger sist, den varieras helt enkelt mest.)
 
 
=== Creating Generation  2-n ===
 
=== Creating Generation  2-n ===
 
Första gången generation 2 skapas måste den simuleras fram, men när skötselprogramgeneratorn skapar fler alternativ för generation 1 och senare generationer kan specifikationer och resultat återanvändas. Det går till så här:
 
Första gången generation 2 skapas måste den simuleras fram, men när skötselprogramgeneratorn skapar fler alternativ för generation 1 och senare generationer kan specifikationer och resultat återanvändas. Det går till så här:

Revision as of 15:32, 21 May 2010