Difference between revisions of "Treatment Program Generator Design"
Jump to navigation
Jump to search
Line 37: | Line 37: | ||
=== Creating Treatment Specifications === | === Creating Treatment Specifications === | ||
− | + | 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). | |
− | + | ||
− | + | 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. | |
− | + | ||
− | + | 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: | |
− | + | ||
− | + | # Cleaning period 4-5 | |
− | + | # Thinning period 8-10 | |
− | + | # Final Felling period 10-14 | |
− | + | ||
− | + | 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: | |
− | + | ||
− | 4 10 8 | + | # Cleaning period 4-5 |
− | 4 10 9 | + | # Final Felling period 10-14 |
− | 4 10 10 | + | # 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: |
− | + | ||
+ | {| 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.) | ||
− | |||
=== 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: |