Commit 1dd7a8b3f4b76754c4dbd333cc42692b8dfdcd6e
1 parent
3e058fbe
Exists in
Standardized
readme
Showing
1 changed file
with
117 additions
and
22 deletions
Show diff stats
MODFIRE-Prototype/README.md
1 | 1 | # Forest Management |
2 | 2 | |
3 | 3 | The purpose of this implementation is to use Constraint Programming to find valid solutions for problems of forest management. |
4 | + | |
4 | 5 | Here, Management Units (MUs) are associated with possible prescriptions which define which years the MUs are to be harvested. |
6 | + | |
5 | 7 | But in any given year only 50ha of contiguous forest area can be harvested at once. |
6 | 8 | |
7 | 9 | |
8 | 10 | Therefore the implementation needs input defining: |
9 | 11 | |
10 | 12 | 1-The existing MUs in the forest |
13 | + | |
11 | 14 | 2-The area of each MU |
15 | + | |
12 | 16 | 3-The MUs adjacent to each MU |
17 | + | |
13 | 18 | 4-The border lenght of each adjacency between MUs |
19 | + | |
14 | 20 | 5-The IDs of the Prescriptions of each MU |
21 | + | |
15 | 22 | 6-Relative to each Prescription, the years where the Prescription defines that the MU should be harvested. |
23 | + | |
16 | 24 | 7-Relative to each Prescription, the rewards each Prescription gives for being applied. |
17 | 25 | |
18 | -# Step 1: Necessary Setup Files | |
26 | +# Step 1: Necessary Setup Files. | |
19 | 27 | |
20 | 28 | In general for every line in one of the files we assume a new Management Unit, a file with 4 lines would imply that there are 4 MUs, and since this has to be consistent then that means all input files should have 4 lines. |
21 | 29 | |
... | ... | @@ -23,102 +31,168 @@ In general for every line in one of the files we assume a new Management Unit, a |
23 | 31 | |
24 | 32 | |
25 | 33 | ## external_init.txt |
26 | -###- This file serves to indicate how many Management Units exist in the forest, so each line should have a number to serve as an External identifier of each MU. There should be as many lines as there are MUs in the forest | |
34 | +### This file serves to indicate how many Management Units exist in the forest, so each line should have a number to serve as an External identifier of each MU. There should be as many lines as there are MUs in the forest. | |
27 | 35 | |
28 | 36 | Each of these External IDs have an Internal ID which corresponds to the index of their row starting from 0 |
29 | ------------------EXAMPLE: | |
37 | + | |
38 | +........................EXAMPLE: | |
39 | + | |
30 | 40 | 30 |
41 | + | |
31 | 42 | 201 |
43 | + | |
32 | 44 | 333 |
45 | + | |
33 | 46 | 335 |
34 | -------------------------- | |
47 | + | |
48 | +......................... | |
35 | 49 | |
36 | 50 | So they have the following Internal IDs |
37 | ----------------- | |
51 | + | |
52 | +......................... | |
53 | + | |
38 | 54 | 0 |
55 | + | |
39 | 56 | 1 |
57 | + | |
40 | 58 | 2 |
59 | + | |
41 | 60 | 3 |
42 | ----------------- | |
61 | + | |
62 | +......................... | |
43 | 63 | |
44 | 64 | |
45 | 65 | ## area_init.txt |
46 | -###- This file sets up the area of each MU. | |
66 | +### This file sets up the area of each MU. | |
47 | 67 | |
48 | 68 | -----------------Example: |
69 | + | |
49 | 70 | 42.60178 |
71 | + | |
50 | 72 | 8.26 |
73 | + | |
51 | 74 | 6.0315 |
75 | + | |
52 | 76 | 26.94 |
77 | + | |
53 | 78 | ------------------------ |
54 | 79 | |
55 | 80 | ## adj_init.txt |
56 | -###- This file sets up the adjacencies of each MU each line should list the Internal IDs of the MUs adjacent to the respective MU separated by a comma. If the MU has no adjacent MUs the line should just have a -1 | |
81 | +### This file sets up the adjacencies of each MU each line should list the Internal IDs of the MUs adjacent to the respective MU separated by a comma. If the MU has no adjacent MUs the line should just have a -1 | |
57 | 82 | |
58 | 83 | -----------------Example: |
84 | + | |
59 | 85 | 1,2 |
86 | + | |
60 | 87 | 0 |
88 | + | |
61 | 89 | 0 |
90 | + | |
62 | 91 | -1 |
92 | + | |
63 | 93 | ------------------------ |
94 | + | |
64 | 95 | So this forest might look like this: |
65 | -Internal Ids: External Ids: | |
66 | -|2| |2| | |
67 | -|0| |3| |0| |3| | |
68 | -|1| |1| | |
69 | 96 | |
97 | +Internal Ids: | |
98 | + | |
99 | +|2| | |
100 | + | |
101 | + | | |
70 | 102 | |
71 | -##border_init.txt | |
72 | -###- This file sets up the lenght of the border of each adjacent MU, each line should list the lenght of the borders of each adjacency separated by a comma. If the MU has no adjacent MUs the should just have a -1 | |
103 | +|0| |3| | |
104 | + | |
105 | + | | |
106 | + | |
107 | +|1| | |
108 | + | |
109 | +External Ids: | |
110 | + | |
111 | +|333| | |
112 | + | |
113 | + | | |
114 | + | |
115 | +|30| |335| | |
116 | + | |
117 | + | | |
118 | + | |
119 | +|201| | |
120 | + | |
121 | + | |
122 | +## border_init.txt | |
123 | +### This file sets up the lenght of the border of each adjacent MU, each line should list the lenght of the borders of each adjacency separated by a comma. If the MU has no adjacent MUs the should just have a -1 | |
73 | 124 | |
74 | 125 | -----------------Example: |
126 | + | |
75 | 127 | 259,151 |
128 | + | |
76 | 129 | 490 |
130 | + | |
77 | 131 | 102,653 |
132 | + | |
78 | 133 | -1 |
134 | + | |
79 | 135 | ------------------------ |
80 | 136 | |
81 | 137 | If borders aren't a factor is your data just put use 0s in place of real border values |
82 | 138 | |
83 | 139 | |
84 | -##ugs_init.txt | |
85 | -###- This file sets up the Prescriptions associated with each MU, each line should list the IDs of the Prescriptions associated with each MU | |
140 | +## ugs_init.txt | |
141 | +### This file sets up the Prescriptions associated with each MU, each line should list the IDs of the Prescriptions associated with each MU | |
86 | 142 | |
87 | 143 | -----------------Example: |
144 | + | |
88 | 145 | 1,2,3 |
146 | + | |
89 | 147 | 19 |
148 | + | |
90 | 149 | 19,20,21 |
150 | + | |
91 | 151 | 500,501,502,503,500600,500601 |
152 | + | |
92 | 153 | ------------------------ |
93 | 154 | |
94 | -##years_init.txt | |
95 | -###- This file sets up the relation between Prescriptions and the years where those Prescriptions have Harvest actions. | |
155 | +## years_init.txt | |
156 | +### This file sets up the relation between Prescriptions and the years where those Prescriptions have Harvest actions. | |
157 | + | |
96 | 158 | ### Each line lists the years where the corresponding Prescription has Harvest actions separated by commas, if the MU has more than one Prescription then a "/" is followed by the next Prescription's harvest years. If a Prescription has no years of Harvest there should be a -1 |
97 | 159 | |
98 | 160 | Before listing the years the line should have the Internal ID of the MU followed by a "|" |
99 | 161 | |
100 | 162 | -----------------Example: |
163 | + | |
101 | 164 | 0|2026,2056,2066/2027,2049,2060/2028,2040,2052,2064 |
165 | + | |
102 | 166 | 1|2022,2032,2042 |
167 | + | |
103 | 168 | 2|2026,2046/2060/-1 |
169 | + | |
104 | 170 | 3|2052/2057/-1/2067/2052/2052 |
171 | + | |
105 | 172 | ------------------------ |
106 | 173 | |
107 | -#Step 2: Criteria Files | |
174 | +# Step 2: Criteria Files | |
108 | 175 | |
109 | 176 | There can be a maximum of 10 optimizable criteria in the program represented by these files, these files are crit_file0-10.txt and their format is the same. |
110 | 177 | |
111 | 178 | Each line corresponds to an MU similarly to previous files and the contents are separated by commas, the contents are the values of the objective criteria associated with each Prescription of the respective MU |
179 | + | |
112 | 180 | -----------------Example: |
181 | + | |
113 | 182 | 34,30.99,3.363 |
183 | + | |
114 | 184 | 1568.630 |
185 | + | |
115 | 186 | 565.79,146,1692 |
187 | + | |
116 | 188 | 4966,6310,7,87,49,496 |
189 | + | |
117 | 190 | ------------------------ |
118 | 191 | |
119 | -#Step 3: Running the software | |
192 | +# Step 3: Running the software | |
120 | 193 | |
121 | 194 | The program is run through the make file and requires Java 11. |
195 | + | |
122 | 196 | Open up the Makefile in this folder and modify the parameters of the "make" label, then run the "make" command in the terminal. |
123 | 197 | |
124 | 198 | ## MainWithSpecific |
... | ... | @@ -128,25 +202,41 @@ The examples shown are related to the Vale de Sousa forest which was used in the |
128 | 202 | |
129 | 203 | ## MainWithSpecific parameters: |
130 | 204 | 1st- Maximum Area Limit (50) |
205 | + | |
131 | 206 | 2nd- Directory with data about forest (res) |
207 | + | |
132 | 208 | 3rd- Minimum Border Lenght (50) |
209 | + | |
133 | 210 | 4th- Single or Multi Criteria |
211 | + | |
134 | 212 | 5th- Name of file with the UGs to be considered (in subregions folder) |
213 | + | |
135 | 214 | 6th and onward- Choose the criterias to be optimized, if the 4th parameter is Single only the first criteria will be optimized |
136 | 215 | |
216 | + | |
137 | 217 | 0-Criteria0 (Wood Yield) |
218 | + | |
138 | 219 | 1-Criteria1 (Soil Loss) |
220 | + | |
139 | 221 | 2-Criteria2 (Perc_r) |
222 | + | |
140 | 223 | 3-Criteria3 (Biodiversity) |
224 | + | |
141 | 225 | 4-Criteria4 (Cashflow) |
226 | + | |
142 | 227 | 5-Criteria5 (Carbon Stock) |
228 | + | |
143 | 229 | 6-Criteria6 (NPV) |
230 | + | |
144 | 231 | 7-Criteria7 (Perc_rait) |
232 | + | |
145 | 233 | 8-Criteria8 (R) |
234 | + | |
146 | 235 | 9-Criteria9 (Rait) |
236 | + | |
147 | 237 | 10-Criteria10(Sbiom) |
148 | 238 | |
149 | -## Example to optimize Wood Yield and Soil Loss in Paredes-> MainWithSpecific 50 res 50 Multi Paredes 0 1 | |
239 | +#### Example to optimize Wood Yield and Soil Loss in Paredes-> MainWithSpecific 50 res 50 Multi Paredes 0 1 | |
150 | 240 | |
151 | 241 | The program will try to find valid solutions for 8 hours (28800000 miliseconds) or until there's a memory error. |
152 | 242 | |
... | ... | @@ -156,15 +246,20 @@ Same as MainWithSpecific but the 4th parameter sets the time limit for finding s |
156 | 246 | Example: MainTime 50 res 50 28800000 Paredes 0 1 |
157 | 247 | |
158 | 248 | |
159 | -#Step 4: Output files | |
249 | +# Step 4: Output files | |
160 | 250 | In Multi Criteria optimization the following files are written to the Results folder: |
251 | + | |
161 | 252 | Output files Multi-Criteria: |
162 | 253 | |
163 | 254 | |
164 | 255 | allSolutionPairs.csv:- MU/Presc pairs for every valid solution found |
256 | + | |
165 | 257 | outputPairsMulti.csv:- MU/Presc pairs for every pareto solution (determined by choco solver) |
258 | + | |
166 | 259 | nonPareto.csv:- Values of the optimizable criteria for every valid solution found |
260 | + | |
167 | 261 | pareto.csv:- Values of the optimizable criteria for every pareto solution found |
262 | + | |
168 | 263 | pairCriteria.csv:- MU/Presc pairs for every pareto solution along with associated values of objective criteria. |
169 | 264 | |
170 | 265 | ... | ... |