NCASI Statistics and Model Development Group 1
Date: Version 2 January 23, 2006
Note that Habgen can use lots of memory. To allow Java to access more memory, consider starting Habgen like this: "java -mx1500m Habgen1 ". This allows Habgen to use up to 1500 MB of RAM. For more information on Habgen, consult the http://ncasi.uml.edu/projects/habgen/Habgen User Manual.
NCASI Statistics and Model Development Group 1
Date: Version 2 January 23, 2006
The user can control the min and max blocksize, and the time window within which blocks are considered (greenup window) by opening the BK1(1) edit form under ``Edit''. The default greenup window for blocks is set to 2 years, option 16 is denoted as a non-block option, minimum blocksize is set to 20 acres, and maximum blocksize is set to 180 acres. Under ``Edit'', open the F1 edit form. The default settings ensure that year-to-year flow deviation is kept within 15 to 25 percent, and year 0 flow is initialized at 140,000 tons and allowed to deviate by 5-15 percent.
To include components in the Habplan objective function, click the checkboxes on the main Habplan window. You will receive a notification if the data were read properly. Run the program for a few hundred iterations, and the Metropolis algorithm should converge on a solution that meets the preset goals. Convergence here means the relative deviations or tolerances are within the user specified goals (+ or - 5 percent). When the preset goal for a particular component is being achieved, the component turns red on the main Habplan window (yellow if goal is exceeded, and black if goal is not achieved). Therefore, You will know that Habplan has converged on a solution when all the components on the main Habplan window turn either red or yellow. You can also experiment with having different components in the model (by unchecking a few components). Remember that the F1 component must be entered before you can enter a subcomponent like C1(1) or BK1(1).
Go ahead and experiment with opening entry forms for the components with the ``Edit'' menu, and displaying graphs with the ``Graph'' menu. Graph colors and settings can be changed by selecting the ``File'' or ``Option'' menu on the graph. You can try selecting the DoubleBuffer option to see if double buffering makes the graph updates go faster or smoother. Double buffering seems to work well with windows but not with Unix. Click on SaveColors under the graph ``File'' menu to permanently save any changes to the graph settings. Do this for each graph.
While Habplan is running, you might try changing the slope rate for the flow model from plus to minus to notice the immediate impact. However, in real runs, changing settings in mid-run may prevent convergence. This is because the adaptive parameters may need to change significantly when settings are changed. Many changes in settings could result in adaptive weight parameters reaching their machine-imposed limits (the maximum size for a floating point number). If this happens, just leave your settings, change all weight parameters to 1.0 (under ``Tool'' on main Habplan window), and start over.
For this example, the F1 flow graph (tons of wood) shows that the desired trend and starting value were attained within user specified levels. The user can change the goal settings on the F1 edit form if this level of variation is unacceptable. However, becoming more restrictive with one component may make it harder to attain convergence on other components. The top C1(1) graph (clearcut acres) shows the level of clearcutting increasing over time, but doesn't deviate from the trend too much. The user could increase the goal setting on the C1(1) edit form to constrain this trend if necessary. The bottom C1(1) graph shows the ratio of F1 flow (wood volume) to C1(1) flow (clearcut acres), i.e. tons harvested per acre per year.
The Block size graphs -BK1(1)- show the trend in Max, Min, and average blocksize over time (top graph). The Block graphs also show how much area is devoted to blocks that are within the block size min and max limits, as well as the area of blocks above and below the limits (bottom graph)). The requested maximum of 180 on the BK1(1) edit form was met. However, the SFI average of 120 may be exceeded in some years. In order to lower the average, the user would have to lower the maximum somewhat. Habplan is very interactive and requires the user to experiment with the various settings until they attain the desired goals.
To save some of your schedules (and accompanying output data), click ``Output'' under ``File'' on the main Habplan window. This pops up the ``Habplan Output Control Window''. Check ``Schedule'', and all objective function components you wish to save and, for each component, enter the directory path to which you want the data saved. Either save manually by clicking ``Save'', or use ``Autosave every'', which will save all checked components after a specified number of iterations. One iteration consists of making a complete pass of the Metropolis algorithm over all polygons. Another option is to check the ``Import'' box on the top left of the ``Habplan Output Control Window''. This option results in checked schedule and component output data being saved automatically (to the specified directory) when a Habplan schedule is saved for later import using the ``Save'' option under ``File'' on the main Habplan window. Navigate to the specified directory to access output data. For more details on how to interpret the output data, consult the Habplan User Manual (section: ``Habplan output to files'').
Most selections from the menu act as toggles, i.e. if a graph is showing and you select it, it disappears.
The example uses the same 419 polygon data set as the first example. Sub-districts are created by splitting polygons 1-200 into 1 file and polygons 201-419 into another. The example has Flow 1 (F1) as the superFlow, consisting of subFlows F2 and F3, which come from the 2 districts. Notice that checking the F1 component causes the data to be read for F2 and F3, which are automatically entered into the objective function. You can remove them after the data are read, if you prefer. Now the F1 flow consists of the tons of wood being produced from all 419 stands, whereas F2 and F3 are the flows from stands 1-200 and 201-419, respectively. Open the F2 edit form under the "Edit" menu, and change the slope to -.03 to see how this affects the F1 and F3 flow graphs. Likewise, you can change the F1 slope and see the effect on the districts represented by F2 and F3.
F2 and F3 also have blocksize components, BK1(2) and BK1(3). These BK components read neighborhood data that consist only of polygons 1-200 and 201-419, respectively. A superFlow component (F1) is not allowed to have BK components, since block issues should be handled at the district level. Likewise, the subFlow components can have CCFlow components, but the superFlows cannot.
On the other hand, Biological components and Spatial Model components (read more in Habplan User Manual) apply to all Districts simultaneously. This means that the data input for these components must include all polygons from all districts. If you want to have a different Spatial Model component for each district, this could be accomplished by editing the data to eliminate the neighbors of polygons in the other districts. Polygons with no neighbors are unaffected by a Spatial model component.
This example includes 483 polygons with data on age, site index, basal area, trees per acre, and forest type. There is also an associated shapefile (s31Stands.shp) to allow for GIS display. This is a site in the Southeastern USA. Begin by getting into the Habgen directory and typing "java Habgen1". Use the drop-down menu to select ``New'', then click ``OK''. You can size the Habgen window so that all eight tabs fit across the top. If you make the window too narrow, the tabs wrap around, which could be confusing. On a slow computer, it may take some time for Habgen to appear.
The regime-class table will be showing. This is where the user specifies all the regimes that will be assigned to polygons. Start by filling out the regime-class table as shown in Figure 1.
The DN, RD, and BP regimes are all do-nothing regimes. Every polygon should be assigned a DN regime (unless you have a good reason not to), the RD regime is used to mark roads, and the BP regime marks borrow pits in this example. All polygons need at least 1 regime assigned to them. Assigning a special marker-regime allows us to later color the roads and borrow pits on the GIS display, or to use the spatial model to put thinnings near BP's, for example.
CC is a clearcut regime. The 1-15 in period 1 means that there will be a CC regime for each of the first 15 years. This will be a 15 year plan and we need to fullfill the requirement that there be management regimes for every year so that even flow can be attained.
The thinning regime (T) is a bit more complicated. The 1-15,1,10 in period 1 means that there should be a thinning regime in each of years 1-15. If there was a 1-15,2 then every other year would get a thinning regime. The ``,10'' means that there must be a 10 year lag until the second thinning in period 2, and the ``0-15'' specification for period 2 means that a second thinning is optional in any of years 1-15. Therefore T#1#0 represents a regime for thinning in year 1 only, and T#5#15 represents a regime for thinning in both years 5 and 15.
Now select the Poly-Data tab and look at the polygon table. To load the data for this example, select the ``File'' menu on the Poly-Data Table then select ``ReadData'' (``File'' - ``ReadData''). A file selection window opens. Go into the "ex500" directory and open the file called polygon.data. The ``ReadData'' option will always open into the Habgen/example directory, so you should consider storing your own Habgen data in sub-directories of Habgen/example. This is an ascii (space delimited) file containing data for 483 polygons. Read it in and you'll see that row 1 contains the column names. IfEverythingIsSqueezedIntoColumn1, read it again and say "yes" for the space delimited question. The first row contains column names. First, you should get Habgen to use row 1 to name the columns by selecting ``Tools'' - ``ColumnNamesTool'' - ``Row1Names''. Now select row 1 with the mouse and delete it by pushing the "row-" at the bottom of the table. After deleting row 1, move to the next table by selecting the Poly-Regime tab. Remember to use ``Edit'' - ``Undo'' if you delete something prematurely.
The Poly-Regime Table is where you combine the basic polygon data with the regimes specified in the Regime-Class Table. It is essential to begin the process by assigning a DN regime to every polygon. This creates a place-holder for each polygon in the Poly-Regime Table and keeps polygons in the correct order for the rest of this process.
Therefore, go to the Regime-Class Table and select the DN row. Now go to the Poly-Data Table and select all rows as follows: ``Edit'' - ``SelectAll''. Now go back to table 3, the Polygon-Regime Table, and push the "MergeNew" button. This should change the table so that it has 1 row for each polygon, with DN specified in the ``Regime'' column.
For this example, we also have the placeholder regimes, "RD" and "BP" for roads and borrow pits. Now we need to replace the DN regime for Roads with an "RD" regime. Go to the Regime-Class Table and select the "RD" row. Then go to the Poly-Data Table and open the SelectionTool, i.e.''Tools'' - ``SelectionTool''. Now enter "Road" in the "Type" row of both the GE and LE columns, since we want to select all rows where ``Type'' is exactly "Road". Now hit "UnSelect" to clear old selections, then hit "Select" on the SelectionTool to select the 81 Road polygons. Note that the SelectionTool by default keeps adding to the currently selected rows. Therefore, you must hit UnSelect if you don't want selections to accumulate.
Now go to the Poly-Regime Table and press "MergeAdd" to add these RD regimes to the existing DN regimes. You should see that the first Road polygon now has a DN and an RD regime. Next, you need to use the SelectionTool on the Poly-Regime Table to select all DN Regimes for Roads so they can be deleted. Roads should have only a RD regime. So enter "DN" in the "Regime" row of the selection tool in both columns, then enter "Road" in both columns of the "Type" row, and click ``Select''. You should get a message that 81 rows were selected. Now delete these rows, so that Roads have only a "RD" regime. If you make a mistake, you can recover with ``Edit'' - ``Undo''.
Now we need to repeat this process to replace DN regimes assigned to class "Other" with "BP" regimes. The "Other" type denotes borrow pits. Here are the steps again: 1) Select "BP" in the Regime-Class Table, 2) Use the SelectionTool in the Poly-Data Table to select rows of Type "Other", 3) Go to the Poly-Regime table and press "MergeAdd", 4) Use the Polygon-Regime Table SelectionTool to select and delete all rows where Regime="DN" and Type="Other". This leaves all "Other" rows with only a BP regime.
Before going on, let's verify that there are 483 rows in the Polygon-Regime table. Go to the last row and click on it. The SelectionTool should say the First and Last selected row numbers are 483 (upper left of SelectionTool). If not, you made a mistake and should redo the preceeding steps.
Now go back to the Regime-Class Table and select the "CC" row. Move one table ahead to the Poly-Data Table and use the SelectionTool to select all Pine and Pine0 rows. Do this by entering "Pine" in the GE column and "Pine0" in the LE column in the "Type" row of the SelectionTool and clearing any other entries in the SelectionTool. Now press UnSelect (to be safe), then press Select. You should have selected 281 rows. Now move 1 more table ahead to the Regime-Class Table and press "MergeAdd" to add CC regimes to the existing DN regimes for pines. This may cause your computer to work for a few seconds. The Regime-Class Table should now have 4,698 rows. Verify this by clicking on the last row and looking at the SelectionTool.
If there wasn't the complication of ``Road'' and ``Other'' types, we could have selected both the "DN" and "CC" regimes and gotten to this point in 1 step. However, most real problems aren't that easy. In general, you can drag the mouse to do multiple selects in a table without using the SelectionTool or hold the ctrl key while clicking on multiple rows.
The hardwood polygons must be managed differently from the pine plantations. Therefore, we'll create some thinning regimes for hardwoods. Go to the first tab (Regime-Class Table) and select the "T" regime. Now move 1 ahead to the Poly-Data Table and use the SelectionTool to select the 99 polygons of type "Hwd". Remember to do an ``UnSelect'' first and to enter "Hwd" into both columns of the "Type" row.
Now move ahead to the Poly-Regime Table and press "MergeAdd". This will increase the size of this table to 7668 rows. Take a close look at the T regimes that were generated. Notice the effect of the 10 year lag. There is a regime for thinning only once for each of the 15 years, and then there are all possible combinations of 2 thinnings within the 15 years, subject to a 10 year lag between thinnings.
We have generated the required regimes. Now it is time to create the data that Habplan needs for a Flow Component. This is generally done by growing each stand and applying a treatment at the time indicated by the specific regime. In this case, the treatment is either clearcut, thin, or do-nothing. Habgen is capable of creating 3 types of Flow components:
The 3 types of flows are demonstrated below.
Habgen has a limited number of stand level growth models at this time. They are applied at the Regime-Class Table. First, notice that there are 3 Flow tabs (Flow 1, Flow 2 and Flow 3) at the top of the main Habgen window, and notice the Flow drop-down menu at the bottom of the Poly-Regime Table. The Flow drop-down menu allows you to select which Flow table you want the data to be written to (this is handy, for example when you create flow data for multiple products, i.e. pulpwood data could be written to Flow 1, chip-n-saw data to Flow 2 and sawtimber data to Flow 3). For this example, select ``Flow 1''.
Now press the "ModelTool" button to get to the growth models for producing output for the regimes. The ModelTool (Figure 2) opens with model "none" selected for each period. In this case there are 2 periods.
Click on "none" for Period1 and select the "LobPlant" model. This is a stand level model developed by Burkhart et. al. (1972) for old-field loblolly pine plantations. Then click on the "Setup" button in the modelTool. Now click on "Info" in the Setup Window to read about this model. The setup window will have the appropriate variables selected, because the names being used are what this model expected. If you had used different names, you would need to identify the proper variables with the setup tool. For example, if you called basal area, "ba" instead of "BA", the setup tool couldn't find it. In general, it's a good idea to use the ``ColumnNames'' tool to name the columns so the models will auto-find the right variables.
Click ``InitFlow'' on the Model Selection Tool. This initializes the selected Flow output table by creating a row for each polygon-regime combination. Now select the 4496 Pine and Pine0 rows in the Poly-Regime Table with the SelectionTool. This includes all "DN" and "CC" regimes. Then press "Apply" on the ModelTool. If you did not manually initialize the Flow table, a window will open that says the Flow Table will be re-initialized. Click ``OK''. Now the model is being applied to each of the 4496 selected rows in the Table. When it's done, the model column for Pine rows should be filled with "LobPlant". This is just to remind you what model was used for that row.
Click on the Flow 1 tab to observe the output data in this Flow Table. You should see entries for Year1 and Output1 next to "DN" and "CC" regime rows. We used the default setting on the LobPlant Setup Form, which was to clearcut the stand - it was set to Residual=0, i.e. there was no residual after the treatment. The Year and Output columns contain the year in the planning period and the per polygon outputs in cubic volume. Go back to the Poly-Regime Table and select "Size=1", reselect the Pine and Pine0 rows, then hit "Apply" to see the per acre output. Per acre values should not be submitted to Habplan, but you might want to look at them to check on how reasonable the model is. Go to the Flow 1 Table again to look at the per acre values. Then select: ``Edit'' - ``Undo'' to get back to per polygon values in the Flow 1 Table.
Now we need to fill out the Flow 1 Table for the RD and BP place-holder regimes. Go to the Poly-Regime Table and use the SelectionTool to select all polygons where Type is "Road" and then again where type is "Other". Note that there should be 81 "Road" and 22 "Other" polygons. Now press "Apply" on the ModelTool. This fills in the Year1 and Output1 columns with 0's for Roads and Other polygons. Habplan requires this in order to know that these are do-nothing regimes. Look at the Flow 1 Table to verify that this worked.
The thinning regimes, "T", were saved for last. Since these are applied to hardwoods, we'll be greatly abusing the models currently in Habgen. Go to the Poly-Regime Table and use the SelectionTool to select the 3069 rows where Type is "Hwd". Now use the ModelTool and select the "LobEven" model for Period1. This is a model that requires Basal Area, Site (Base age 50) and Age. Since the Site value we have is for base age 25, this will cause the growth to be reduced, which is good since these are hardwoods. We don't want to clearcut, so let's put 80 in the residual box. This tells Habgen to leave 80 square feet of BA. Now press the "Copy" button on the Period1 Setup form to copy these settings into the Period2 Setup Form. This means that the second thinning will do the same thing 10 years after the first thin. Note that stands with less than 80 BA will not be cut at all. Make sure that you uncheck "Size=1", then press the "Apply" button on the ModelTool. Remember that "Size=1" causes the per acre value to be put into the Flow 1 Table, whereas Habplan wants the per polygon value.
Now save the data in the Flow 1 Table, by doing ``Edit'' - ``WriteData'', into ..Habplan3/example/ex500/flow1.dat. This is the input flow component data that you will eventually read into Habplan. Don't put the column names in row 1.
If one were interested in tracking decayed carbon volume over time, one would first generate Flow data representing harvested carbon volume as opposed to harvested timber volume (output carbon volumes by using the ``Scale'' option on the ModelTool to enter a timber-to-carbon conversion factor). The user would then convert the harvested carbon volume Flow data to decayed carbon volume data by clicking the ``Decay'' button on the bottom of the Flow Table, specifying a carbon ``Half Life'', and clicking ``Decay Flow'' (Figure 3).
In order to break the carbon flow data into various components (eg. landfilled carbon, degradable carbon & non-degradable carbon), the ``Add'' and ``Copy'' features on the bottom of the Flow Table are useful. See the http://ncasi.uml.edu/projects/habgen/Habgen documentation, section ``Flow Output Table'', for more information.
To create this ranking data, click on the Bio-Output tab. At the bottom of the Bio-Output Table, click ``Init'' to initialize the table. Now click the ``NPV'' button to open the ``Value Setup Form''. The ``Value Setup Form'' allows the user to compute NPVs or LEVs for polygon-regime combinations, based on output data in the Flow Tables. This is done by specifying a ``per unit'' value for outputs in the respective Flow Tables, together with an interest rate for discounting. If there are costs associated with the various regimes, these can also be accounted for by clicking the ``Cost'' button and entering the per acre costs associated with the various regimes (by period). For this example, however, we will rank regimes according to total harvested volume. We do this by entering a value of 1 for Flow 1 data (Flow 2 and Flow 3 Tables do not contain any data), and an interest rate of 0 (Figure 4). By entering an interest rate if 0, the NPV computation becomes a simple summing function, giving total harvested volumes associated with each polygon-regime combination. Now, if for example you wanted to apply different values and interest rates to different regimes, you could use the ``SelectionTool'' under ``Tools'' to select the rows to which you want to apply the ``NPV'' computations. The default, however, would be to apply the computations to all regimes. With the Bio-Output Table initialized and the Value Setup Form filled out, click ``Calculate'' on the bottom of the Value Setup Form to fill in the Bio-Output Table.
Now save the Biological Output data (``Edit'' - ``WriteData'') into
../Habplan3/example/ex500/biol.dat. This is the Biological Type II file that Habplan wants.
The habitat component approach involves recording some output for every year of the planning period, not just the years where a management action occurred. If a polygon has at least a certain amount of wood (vegetation) on it, then we will declare it to be habitat. Immediately after a clearcut, by this definition, there will be no habitat. However, even a recent clearcut may provide some habitat in the real world. For this example, we won't worry about which animals use our habitat; the purpose is to demonstrate the concept. We'll also mix hardwood and pine habitats together, just to demonstrate the method.
Go back to the Poly-Regime Table and check the "Habitat" radioButton on the Model Selection Tool. You'll notice that the Tool is cleared and a new Habitat period is added. The model specified for the habitat period (in this case it is period 3) will be applied to all the years that are not getting some specific management action. Consider the thinning regime T#1#11. Years 1 and 11 have a thinning, and all other years would default to the Habitat model specifications. We'll also specify a threshold value. This has the effect of outputting what is left on the site, rather than what is removed. If there is less vegetation remaining on the site than the threshold value, nothing is output. The residual after a cut will obviously determine what threshold can be attained later.
Normally, you should use the same models and residual cut values for the management action periods that were used to create the non-habitat flow component. We just did this in the above Flow Component Section. Now we have to repeat most of the steps done in the Flow Component Section. Choose to write the data to the Flow 2 Table. On the ``Model Selection Tool'', click ``InitFlow''. Now let's do the Pine stands first: 1) Select the 4496 polygons where Type is "Pine" or "Pine0" in the Poly-Regime Table. 2) Now fill out the Model Setup forms to look like those in Figure 5 and click ``Apply''.
The Period1 form Residual=0 causes Habgen to apply clearcutting as before to the years specified in the various "CC" regimes. The planting section of the form is set so that at year 5 there will be 1000 trees per acre and the site quality will increase by 14%, due to improved stock. Year 5 on the planting form means that a planted stand is ignored until 5 years after planting, where planting occured immediately after clearcutting. Note that planting can only happen after clearcutting (Residual=0). The Period 3 Setup form is what will be applied to all of the other years. This says to cut the stands leaving a residual of 2000 Trees Per Acre and to only allow some output if the Threshold value of 1000 Cu Ft per acre is exceeded. Since N can never reach 2000, there will be no additional cutting in off regime years, and there will only be output when a stand has at least 1000 Cubic feet of wood remaining per acre. This threshold condition can occur either before cutting or after regrowth. The actual output variable is set to "Size", so the acreage of the polygon is output. This is a lot to think about when filling out these forms. It may help to look at the output in the Flow 2 Table (Figure 6) after the ``Apply'' button is pushed.
The habitat flow output table (Figure 6) has a block diagonal appearance. The output is highly compressed in the above image, but you can see that there is no output from the year where clearcutting occurred until about 8 years after, when the planting has grown sufficiently such that there is at least 1000 cu feet per acre. The output then goes from 0 to the acreage of the polygon. This indicates that this polygon now represents some acres of habitat. Now it becomes possible to control the flow of habitat acres.
Now let's handle the do-nothing regimes. When the habitat box is checked, do-nothing regimes are handled differently. In habitat mode, internally, a do-nothing regime is handled as if it has a management action in year 1. Therefore, you need to fill out the setup forms appropriately. The purpose of this is to make it possible for a do-nothing regime to contribute habitat. This makes sense when doing nothing makes a heavily vegetated polygon available for other uses (by wildlife). The next step is to select all of the DN regimes in the Poly-Regime Table. Then fill out the setup forms to look like those in Figure 7.
This setup says to cut to a residual BA of 300 and to output the size of the polygon, whenever there is a least 1000 cubic feet per acre on the polygon. Since there is never a BA as high as 300, there will be no cutting, which maintains the do-nothing character of the DN regime. However, the DN regime can now contribute to the flow of habitat. Make sure the Threshold is set to CV. Handle the RD and BP regimes in almost the same way, except the threshold should be increased to 100000. This will ensure that output is always 0. We are therefore assuming that Roads and Borrow Pits don't contribute to habitat.
Let's move on to the hardwoods. Period 2 is irrelevant for the pines or do-nothing regimes, because there is no period 2 for these regimes. However, there is a period 2 for the "T" regimes, so Habgen must include a period 2 setup form. Begin by selecting all remaining rows, i.e. where Type="Hwd". Now make the setup forms look like those in Figure 8, and press the "Apply" button on the Model Selection Tool.
The above setup will cut the hardwood stands down to 80 square feet of BA at the years designated in each regime. The output will be acres as long as there is a residual BA that exceeds 90. The period3 form applies to all off-regime years. It says to cut down to a residual of 800 BA. Since no stand can reach 800 BA, this is equivalent to saying "never cut" on off-regime years.
The Habitat Flow component is complete. Now save the flow output data
This is a third type of flow component that is useful for controlling the ending age-class distribution when clear cutting is the principal management tool. Since this problem involves thinning regimes, we will use the option of controlling the time of last entry. This allows one to control the flow of last entry times. Last entry times should correspond to how much recovery there has been since the last disturbance. This component is quite simple to create. You need to run through roughly the same process that was used to create the first flow component. Except now, the ``Class'' radio button should be checked on the Model Selection Tool (Figure 9). Firstly, choose to output data to Flow 3, and initialize the flow. The next step would be to select all Pine and Pine0 types with the SelectionTool. Then make the Model Selection Tool look like the example in Figure 9.
Leave the "Lag" value at 0. This is for putting in a time lag until planting occurs following a clearcut. Now we want time since last entry, so Lag=0 is appropriate. The Max value should be blank. This is the largest age-class that should be identified. If you wanted to keep track of ages up until 20, for example, then set Max=20 and ages greater than 20 will go into the age 20 bin. This is useful for keeping a flow component from having a few acres of very old trees that will prevent the flow from being smooth. Run through the process of selecting the Hwd trees next and applying the models as was done for the first flow component. Then save the results from the Flow 3 Table in a file called flowClass.dat to be used by Habplan. Here we have used the flow Class option to create a flow component that will control the time since last entry. This can be viewed as a proxy for disturbance. This component will be used to create an even distribution of acres in each disturbance class, i.e roughly the same number of acres will have been last entered 15 years ago as 1 year ago. Remember that flow Class components show acres on the y-axis and class on the x-axis, whereas all other flow components show the planning year on the x-axis. See the example 4 application of the Class Flow Component for more information.
Select the Block Tab to get to the Block Table. Now we want to create a block input data file that gives the neighbors of each stand. This is what Habplan needs in order to control block sizes and to implement the Spatial Model component. Open the ``NabeTool'' by pressing the button on the Block Table. You should now see something like the Block Table example as shown in Figure 10.
Your Block Table probably won't be filled in yet, so begin by pressing the "FindFile" button on the Nabe Tool to locate the shape file. Now press "ReadPolys" and you should get a message that says 483 polygons were read. The default setting is "Adjacent" with the slider at 0. This says to find immediately adjacent neighbors that touch at even a single point. Increasing the slider to 25 would require neighbors to share at least 25% of their combined perimeters. See the http://ncasi.uml.edu/projects/habgen/Habgen documentation on the Block Output Table for more information. Press the "Apply" button on the NabeTool and you should fill the table with the results shown above. Now save this using ``File'' - ``WriteData'' to ../Habplan3/example/ex500/block.dat. This file can be used for the Habplan Block component and the Spatial Model component. Note that the Block Table gets the size information from the Poly-Data Table, not by directly computing polygon sizes from the shapefile.
Now let us move on to using the data we just generated, in Habplan. First, exit from Habgen by selecting ``Exit'' from the global ``File'' menu. As it exits, Habgen will ask you if it should save the data in the Tables. Normally, you will say "Yes" to these questions. Then next time you start Habgen, and select to load the ``Previous'' option, everything will look the same as when you last exited. Try restarting now to check on this.
Start Habplan by moving to the Habplan directory (cd ../Habplan3) and typing "java Habplan3". We'll begin by setting up the Objective function components that will be needed for this problem. We'll need 2 flow components, a Biological type 2 component, a Block component, and a Spatial Model component. Now select the ``Config'' option under the ``Misc'' menu, i.e. ``Misc'' - ``Config''. Make the Configuration form look like the example shown in Figure 11.
So there are 2 flows, 0 Biol Type 1, 1 Biol Type 2 and 1 Space Mods. Now click the ``Next'' button to choose the number of Block and CCFlow components associated with the first Flow (Figure 12).
You want 1 of each of these subFlow components. Click ``Next'' again and choose the number of subFlows for Flow component 2 (Figure 13).You don't want any subflows for the second Flow, which is the Habitat component.
Now press the "Finish" button. Then you need to quit and restart Habplan. Habplan will now have the new configuration. Begin by changing "N of Iterations" to at least 10000, then open the first Flow component configuration form, i.e. ``Edit'' - ``F1''.
Tell Habplan where the first flow component's data is by entering "ex500/flow.dat" into the field near the "File Selector" button. Habplan automatically looks under the example directory if an incomplete path is given. This makes it convenient to keep your data in a subdirectory of Habplan3/example.
Then make the following additional settings: 1) Set Time0: start Flow to 8000000. Set its goal to 0.1. A small goal like this means that it's not very important that the Flow actually start at 8000000. We'd be happy with anywhere from 10 percent to 190 percent of this value. 2) Now set the Flow Goal to 0.8 and the Flow Slope Rate to 0.0. So we want the flow to be somewhat even and level over time (0 slope). 3) Now save these settings to a file called ex500.xml in the Habplan project directory, by selecting ``Save'' under the ``File'' menu.
Now check the F1 checkbox on the main Habplan form, open the F1 graph (``Graph'' - ``F1'') and press the start button. You'll see the graph changing after each iteration. After some iterations, press the "Suspend" button and your screen should look something like that in Figure 14.
Notice that the checkbox F1 is red. This indicates that your goals are met, i.e. the flow is more or less flat and doesn't change too much from one year to the next. The weights on the Flow form are adjusted until the goals are met. If you see a yellow F1 , then the goals are exceeded, and similarly a black F1 means the goals haven't been attained yet. See the http://ncasi.uml.edu/projects/habplan/Habplan Documentation to learn more about filling out Flow Forms and Flow Components.
Now lets add the Biological Type 2 component. Open the Bio2-1 form, ``Edit'' - ``Bio2-1''. Note that if there were 2 Bio2 components, the second would be Bio2-2. Now tell habplan where the Bio2 data are by putting ex500/biol.dat in the File text field. Then set the goal to 0.5. With "Goal Kind" set to Max, this results in Habplan attempting to attain 50% of the maximum possible volume over the 15 year period. In fact, goals on most components are treated as if attaining + or - .05 of the user specified value is OK. Therefore, Habplan will be happy to get 45% of the max volume. Now save these settings again into ex500.xml, i.e. do a ``File'' - ``Save''. WARNING: You should set all weights to 1.0 before doing a Save. This ensures that next time you reload, all components will start with the default weights. The appropriate weights for each component depend on the data and the components that are currently in the objective function.
Now press "Start". Then check the Bio2-1 checkBox. After you see red on both F1 and Bio2-1 , press "Suspend". You should see something like that shown in Figure 15.
The overall attained volume hasn't been impacted by the Bio2-1 component. Notice that the weight was driven to the lowest possible value, essentially 0. At this point Habplan gives up and says you have convergence. In fact, you have attained 61% of the max which is shown on the form to be 1.0165E8. In other words, the Bio2-1 component isn't needed to attain this level of flow. Don't worry about this now. When we add the Block Component next, then the Bio2 component's efforts will become noticeable.
Now open the Block form as ``Edit'' - ``BK1(1)''. The BK1(1) notation means this is the first block component associated with F1. See the Habplan Documentation for more details on this. Enter ex500/block.dat in the file text field. Set the green-up period to be 3 years and the min and max block sizes to 10 and 150. Now reset the weights on the F1 and Bio2-1 components to 1.0 (``Tool'' - ``Weight=1'') and save these settings into ex500.xml. Now ``Start'' Habplan, and then enter the BK1(1) component (check the BK1(1) checkbox) with Habplan still running. Look at the BK1(1) graph and you'll see that eventually Habplan finds a configuration such that the Block sizes are within the 10-150 range you requested. You will also notice immediately that the Block component has constrained the result so that the Bio2-1 request of 50% can no longer be attained. You'll need to lower the Bio-2 request to about 0.38 or the block sizes will quickly go out of bounds. Habplan forces you to interactively adjust goals to make your request feasible. If you lower the Bio2-1 goal to 0.38 and let Habplan converge, you should see something like that shown in Figure 16.
All 3 Objective Function Components have converged. The desired block size constraints are attained, but the level of the flow graph has gone down considerably since the block size component was added. Clearly, constraining blocksizes can be costly. This depends very much on the particular dataset and its neighborhood structure. If we had computed neighbors using a buffer around each polygon, the cost of the block contraints would be increased. This is because each polygon would have more neighbors if neighbors only had to be within the surrounding buffer as opposed to being strictly adjacent.
But wait! We haven't talked about which regimes create blocks and which ones should be considered "notBlocks". The notBlock options (regimes) should be entered into the block form. Habplan auto-detects the do-nothing regimes, BP, RD, and DN for this problem. Habplan assumes all other regimes create blocks unless told otherwise. For this problem, we only need to consider the CC regimes, and all thinning regimes should be declared to be notBlocks. We declare thinning regimes as notBlocks by entering ``)T'' on the block form. This causes Habplan to autodetect all regimes that start with a ``T''. After entering ``)T'', left click on the ``)T'' and all detected thinning regimes should show in the Habplan Console. (Notice that the 2-period thinning regimes are repeated with an @2 to indicate that the second period is also a notBlock)
Moving right along, let's add a CCFlow component. You need to specify the regimes now that DO contribute to blocksize, or more specifically, the regimes that you want CCFlow to monitor. We do this by entering a ``)CC'' under ``CCFlow Options'' on the CCFlow edit form. This causes Habplan to autodetect all regimes that start with a ``CC''. The CCFlow component gives you a graph of the acres cut each year and a graph of the yield per acre by year. Restart Habplan with all weights set to 1.0, then add C1(1) (CCFlow component) by clicking the C1(1) checkbox on the main Habplan window. After convergence (the checkBox labels turn red), you should see something like that shown in Figure 17.
Now let's enter the Habitat Flow component, F2. This component should show an opposite response to the block size constraints to that of the F1 component. Since block size constraints allow fewer acres to be harvested, this should result in more acres of habitat, i.e. do-nothing regimes contribute to habitat in the scenario used here. With 5 components in the objective function (F1, C1(1), BK1(1), F2, Bio2-1) you should see something like that shown in Figure 18.
The F2 flow is showing that habitat fluctuates and ranges between about 22,000 and 28,000 acres over the 15 year planning horizon. The red lines at time 1 show the specified time0 value that we put on the flow forms. Notice that F1 tends to fall further below this value as constraints are added, but F2 tends to increase. More constraints means more DN regimes, which contribute to habitat.
Now look at the SMod1 component, which is the spatial model component. To appreciate its effects, we'll also use the Habplan GIS viewer that can be opened under the ``Tool'' menu (``Tool'' - ``GIS_View''). Start by resetting the other components' weights=1.0 (``Tool'' - ``Weight=1''). Then open the SMod1 form and fill in the data field with ex500/block.dat, since an SMod component can conveniently use the same file as a BK component. Then set the goal to 1.0 and enter the following into the text area at the bottom: "CC#1,BP,-1; CC#2,BP,-1;". This says to put CC#1's and CC#2's next to BP's if possible. In other words, Borrow Pits should have clearcuts in the first 2 years adjacent to them. Maybe you'd want to do this because there is some reclamation activity that needs to be done to borrow pits, and this ensures that other work will be taking place nearby. Now enter the F1 component, then the BK1(1) component, then the Bio2-1 component and let Habplan run until the entered component check boxes turn red.
Suspend Habplan and open the GIS viewer. Select the ``Regime'' option so that coloring is according to assigned regimes. Then press "Draw" to read the data and draw the polygons according to the current regime assignments. Press the "Table" button to see how colors are assigned to regimes. In general, CC regimes are shades of green, T regimes are shades of blue, DN is orange, and BP's are cyan. So our simple spatial model will try to put light greens adjacent to cyan.
Now check the SMod1 box and start Habplan again. If the big text area hasn't turned white on the SMod form, you have a typo. Now change the draw iterations on the GIS viewer from 0 to 10, so the display will refresh after every 10 iterations. Watch some of the small BP (cyan) areas that have pines near them. You should notice more light greens appearing near these cyan areas. Cyan areas surrounded by hardwoods (blue) won't be impacted. Habplan will never be able to meet the 100% goal on the SMod component, so at some point you need to lower the goal, or the weight on the SMod1 component will be increased until it reaches the upper limit for weights in Habplan.
Figure 19 shows a zoomed in view, using the GIS viewer, that shows how some of the small cyan areas tend to have lots of light green around them. Remember that the spatial model is stochastic, so you won't get rigid compliance to your requests.
Finally, we'll take a look at the 3rd type of flow component. Remember that we set this up above to allow for controlling the distribution of the time to last entry that would exist at the end of the planning period. To simplify the demonstration of this component, let's start over by reloading the saved settings and adding F1 to the objective function. Then let Habplan run until F1 indicates convergence by turning red. Now we will replace the original Habitat F2 component with the Flow Class component. Do this by changing the data on the F2 edit form to ex500/flowClass.dat. Click the F2 checkbox on the main Habplan window, then edit the F2 Form so it looks like that shown in Figure 20. Open the F2 graph and let Habplan run until F2 is red. You should have something like that shown in Figure 20.
The F2 component graph shows that the time-of-last-entry classes have somewhat more than 2000 acres for each of classes 1-15. The Do-Nothing classes all go into class 16, since they were not entered over the 15 year planning horizon. Notice that the F2 component has converged even though the class 16 level causes the overall flow to be very unsmooth. Habplan was tricked into allowing class 16 to be wildly different by telling it (on the yellow F2 edit form) that 16 is a ByGone year. To Habplan, this means that it shouldn't worry about class 16, and it focuses on classes 1-15. If the Block component is added, then even more stands are assigned to do-nothings, and class 16 gets more out of line with classes 1-15. The ByGone year trick will often be useful for this type of Flow component, since the upper classes may be out of line with the earlier ones. Read more about ByGone years in the http://ncasi.uml.edu/projects/habplan/Habplan User Manual under the Flow Form section.
This is a problem consisting of 1046 polygons from the Southern US. This is similar to example 3, except that the planting option in the ModelTool is used to deal with the Bareland polygons. Also, the planning horizon is 20 years. Read the overview section for more general information. For the purposes of this example, the data are categorized as presented in Table 1.
|Bareland||80||2208||Current cutover polygons|
|Non-productive||21||123||Gullies, cemetaries, etc|
|Open||37||32||Wildlife patches, non-forested yet productive|
|ROW||66||234||Roads, gas and power lines, railroads, etc.|
There is a shapefile for this problem to allow GIS display. However, the shapefile is large (7.6MB compressed), so it is a separate operation to download the example 4 shapefile . After downloading, do "jar xvf ex4shapefile.jar" to unpack the shapefile into ./Habplan3/example/ex1000/stands.shp.
The Habgen Regime-Class Table was set up as shown in Figure 21.
First is the standard do-nothing regime (DN), along with place holder regimes for ROW type polygons, Ponds and Open areas. See example 3 for more comments on place holder regimes. These are used mainly as spatial identifiers during the Habplan analysis. The BARE regime will be used to plant the Bareland and then clearcut the plantations. The planting can be done in either year 1 or year 2, and then there must be a 14 year lag before clearcutting. This is denoted by the notation 1-2,1,14. So, the first period action is to plant, and the second period action is to cut. There is a clearcut regime (CC) that has 1 period with an action occuring in one of the years 1-20. The thinning regime (T) allows for 2 thinnings that can occur anytime during years 1 through 20. There must be a 9 year lag, however, before the second thinning can occur, hence the notation 1-20,1,9 for period 1. These regime classes are similar to example 3, but the planning horizon will be 20 years rather than 15 as for example 3. The planted and seeded pine will be assigned to CC regimes and the Natural Hwd and Pine will receive thinning regimes.
Now we're ready to apply the regime classes to specific polygons. The first step is to read some polygon data. Select the Poly-Data tab in Habgen. Select "ReadData" under the ``File'' menu on the Poly-Data Table. A file selection window will open. Then go to the ex1000 directory and read the habplan_ws.dat file, which contains the polygon data. Now get the "ColumnNames" tool from the "Tool" menu and use the names in Row1 of the data as the Column Names for the Poly-Data Table. Then use the "Row-" button on the Poly-Data table to delete the names from row 1. Now your Poly-Data table should look like the example shown in Figure 22.
It is imperative to ensure that each polygon has at least one regime. So begin by selecting the DN row from the Regime-Class Table. Then select all rows from the Poly-Data Table using "Edit'' - ``SelectAll". Now go to the Poly-Regime Table and press the "MergeNew" button in the lower right. This merges the selected Regime Classes with the selected polygons. Now there should be a row for each polygon with the DN regime assigned. This will ensure that all polygons are represented and in the correct order. Order matters when using the GIS viewer. The viewer assumes that the n polygon in the shape file corresponds to the n polygon in the Habplan data files. If the GIS Viewer is not being used, then order is not important to Habplan.
Now we need to replace the DN regime with the appropriate place-holder regime for Row, Pond and Open polygons. Begin by assigning the ROW regime to the ROW Type polygons. First, select ROW in the Regime Class Table. Then get the SelectionTool for the Poly-Data Table. First press "UnSelect" to clear previous selections. Fill in the GE and LE columns in the "Type" row of the SelectionTool with "ROW" and press the "Select" button. This should result in an information dialog popping up to tell you that 66 ROW polygons were selected. Now go to the Poly-Regime Table and press the "MergeAdd" button to add these ROW regimes. Remember that "MergeNew" should only be pressed once, when the table is initialized with one regime for each polygon.
Now select "PONDS" in the Regime-Class Table. Clear the selections from the Poly-Data Table, then select all the "Swamp" and then "Pond" polygons in the Poly-Data Table. Now use "MergeAdd" to add these regimes to the Poly-Regime Table. Select ``Open'' in the Regime-Class Table and select the "Open" type polygons in the Poly-Data Table. Now use "MergeAdd" to add these to the Poly-Regime Table.
At this point, you have assigned some polygons both a DN regime and a place holder regime. In this case, the DN regime will interfere with the use of a placeholder regime, so the DN regime must be deleted. Do this by using the SelectionTool on the Poly-Regime Table to select rows that have Regime=DN and Type=ROW or Type=Swamp or Type=Pond or Type=Open. Then delete these (146) rows by pressing the "Delete" button on the SelectionTool.
Assign the clearcut regimes to Planted and Seeded Pine. Do this by first selecting the CC row in the Regime-Class Table. Then select the Planted Pine rows in the Poly-Data Table by putting "Planted Pine" in the Type row of both the GE and LE columns of the Selection Tool. Make sure the other rows of the SelectionTool are blank. Then add the Seeded Pine rows by doing a second selection. Now go to the Poly-Regime Table and press merge add. This expands the CC regimes and creates 20 new rows in the Poly-Regime table for each selected pine polygon from the Poly-Data table. At this point there should be 9066 rows in the Poly-Regime Table. Check this by selecting the last row and looking at the row selection information at the top of the SelectionTool.
Assign thinning regimes to the Natural Hardwood and Natural Pine types. Select the T row in the Regime-Class Table. Then select the Natural Hardwood and Natural Pine rows in the Poly-Data Table. Press ``MergeAdd'' in the Poly-Regime Table.
Finally, the Bareland polygons should be assigned to the BARE regime. Select the "BARE" regime from the Regime-Class table, and select the "Bareland" polygons from the Poly-Data Table. Press ``MergeAdd'' on the Poly-Regime Table.
This completes the process of assigning regimes to polygons.
Models are applied by selecting rows in the Poly-Regime Table and then setting up the ModelTool as required.
Begin by selecting all the placeholder regimes. Use the SelectionTool to select all polygons assigned to the following regimes: ROW, PONDS, or OPEN. Then open the ModelTool and set the period1 model to LobEven. From the drop-down menu, select the Flow 1 Table for output data, then push the ``Apply'' button. This will cause the selected placeholder regimes to have Year1 and Output1 set to 0 in the Flow 1 Table, which allows Habplan to recognize these as do-nothing regimes.
Select all rows in the Poly-Regime Table where Type is Planted Pine or Seeded Pine. This will include all the CC regimes and the DN regimes for Planted or Seeded Pine. Now open the ModelTool and set Period1 to the LobPlant model. The default settings have residual=0 (clearcut) so no alterations to the defaults are required. Now press the apply button.
Select all Natural Pine and Hardwood rows in the Poly-Regime Table. This gets all the "T" regimes and accompanying DN regimes. Now assign the LobEven model to both Periods with a Residual BA of 60. So the ModelTool and model Setup Forms should look like the example shown in Figure 23.
Then press the Apply button, and the outputs for these regimes will be created in the Flow 1 Table.
The Bareland polygons are saved for last. Select all polygons in the Poly-Regime Table where Type=Bareland. This gets all the BARE and associated DN regimes (960 rows). Set up the models to look like the example presented in Figure 24.
Applying this setup will cause the Bareland polygons to be clearcut in
year 1 and then replanted. Since the land is bare, clearcutting will
result in no output
. After a 4 year lag, there will be 400 trees per acre, i.e. at year 5. Then the second period will clearcut what was planted in the first period. You could use the PMRC models here, because N is supplied by you as the trees per acre at year 5. The setup for the PMRC models would look like the example shown in Figure 25. Notice that, when using the PMRC models, the user has the option of breaking down output data by product classes. To access this capability, click ``Product'' on the Setup form. Now sepcify a Top Diameter and a DBH Range for the product class. It may be useful, for example, to output pulpwood data to Flow 1, chip-n-saw data to Flow 2 and sawtimber data to Flow 3. The user also has the option of specifying herbicide and/or bedding treatments at planting, and/or nitrogen and/or phosphorous application. Access the herbicide and bedding capabilities by clicking ``Plant'', and access the fertilization capability by clicking ``Fertilize''. For more information on these features, consult the http://ncasi.uml.edu/projects/habgen/Habgen User Manual.
This completes the data required for the first flow component. This data can be saved using ``WriteData'' under the Table's ``File'' menu. Save it to ../../Habplan3/example/ex1000/Flow1.dat for use by Habplan. Tell Habgen to NOT put the column names in row1.
The Bio-2 component is used by Habplan to rank the regimes assigned to each polygon according to relative importance. Habgen allows you to create a Bio-2 component based on NPV or LEV, or simply by summing up the output values for each period in the Flow component(s). For more on creating Bio2 data, see the ``Biological Output Table'' section in the http://ncasi.uml.edu/projects/habgen/Habgen User Manual. With the harvest volume data still in the Flow 1 Table, go to the Bio-Output Table, click the ``NPV'' button and fill in the Value Setup Form as you did in the previous example (Figure 4), i.e. Flow 1 Value = 1 and Interest = 0. Now initialize the Bio-Output Table (click ``Init'') and press ``Calculate''. Save this data to ../../Habplan3/example/ex1000/bio2.dat for use by Habplan, using the ``WriteData'' option under the ``File'' menu. Do not put column names in row 1.
Remember that the Bio-2 component needs to be created immediately after the flow component that it is based on, since it involves summing over the outputs in the Flow Table(s).
Note: By checking the ``Year'' box on the Value Setup Form, the Bio2 data computations are based only on Flow data in the LAST output year. This option is handy when assigning a value to residual volumes present in the last year of the planning horizon.
Suppose we want to control the flow of "Big Pine" habitat. This might be good for red cockaded woodpeckers, for example. First, consider the logic that leads to a "Big Pine" habitat flow component - One pine stand could contribute to this habitat until year 10, when it is clearcut. Likewise, another stand of pines that is too small at year 1 might begin to add to Big Pine habitat at year 10 if its cutting is delayed. Hardwoods never contribute to this habitat...
Habgen has a built in capability to create a particular kind of habitat flow component. Its use requires careful attention when setting up the models. The first step is to select the "Hab" radioButton on the ModelTool. This immediately creates an extra Habitat period that requires a model assignment. The idea here is that the actions in the normal flow periods are controlled as with a normal flow component, and non-action years are controlled by the Habitat period model. This results in Habitat components producing output in every year of the planning horizon. For this problem, the horizon is 20 years. Note that habitat flows should use the same regimes that were created for the so-called normal flow component, because Habplan only allows a regime to be assigned to a polygon if that regime appears in all components that are currently in the objective function.
Begin by opening the ModelTool on the Poly-Regime Table and select the "Hab" box. On the Poly-Regime Table, select to which Flow Table you want habitat output data written, say Flow 2. Now push the "InitFlow" button. This will create a blank Flow 2 Table with 20 output years. Remember that we must produce the same regimes for each polygon as were produced for the Normal Flow Component above. So it makes sense to do things in the same order as for the Normal Flow component.
Select all rows in the Poly-Regime Table where Type = ROW, Swamp, Pond, Open, or Non-Productive. Then make the model Setup Forms look like the example shown in Figure 26.
The Period1 form controls the action that will occur in year1, since these are placeholder/DoNothing regimes. (This ability to do something in year 1 for a do-nothing regime might sometimes be useful for habitat creation.) The Period3 form controls what happens in all other years. Later we will need to deal with the DN regimes for other types because of this feature, i.e. the Period1 setup applies to year 1 for do-nothing regimes. Both forms are setup the same and do the following: 1) a residual BA of 1000 is left on the polygon, which means that nothing is removed, 2) the output variable is ``Size'', so the polygon size is output, 3) there is no output unless the remaining per acre Cubic Volume on the polygon is greater than or equal to 1000. Since most of these polygons have BA=0, the output will be 0, i.e. these polygons don't contribute to habitat.
Now select the Planted Pine and Seeded Pine rows in the Poly-Regime Table. Then make the model setup forms look like those in Figure 27.
Pushing the "Apply" button causes the clear cut operation to be applied in Period 1, just as it was to create the normal flow component above. However, now we have added a planting that results in 400 trees per acre after a 4 year lag. This means that these polygons can contribute to habitat before being cut, and possibly after the replanted trees have grown. Also, the Site index is assumed to improve by 14% due to genetic gains. The output is the polygon size and the threshold is CV=1000, so nothing is output unless the polygon has at least 1000 Cubic Feet of volume per acre. The Period 3 form says to leave a residual of N=1000, which means don't cut in the non-action years, since there will never be that many trees per acre. However, there is output in non-action years as long as there is a threshold CV of at least 1000.
Now select the Poly-Regime Table rows where Regime="DN" and Type is ``Planted'' or ``Seeded Pine''. The do-nothing (DN) regimes are handled separately when creating Habitat Flow component data, because doing nothing may result in leaving habitat intact. Make the model setup forms look like those shown in Figure 28.
Remember that Period 1 applies to year 1 for do-nothing regimes, which actually have no action years, and Period 3 applies to years 2,...,N. In this case, the setup forms say to leave a residual of N=1000 and to output the stand size if there is at least CV=1000. This allows the DN regime to contribute to habitat flow. Don't forget to press the apply button.
Now Select Natural Pines. Then make the setup forms look like the example shown in Figure 29. This applies the same thinnings to the action Periods 1 and 2. The Period 3 activity is to thin down to BA=1000 (i.e. do nothing), and the stand size will be output whenever CV is greater than or equal to 1000.
Now select the DN regime for Natural Pines and make the Period 1 form look like the Period 3 form above. This says to do-nothing for all years of a DN regime, and to output the stand size whenever CV is greater than or equal to 1000. Hopefully, this is all starting to make sense by now. The process of setting up a Habitat Flow is tedious, but can be done quickly once you understand what needs to be done.
Now select all rows where Type="Bareland" from the Poly-Regime Table . This is the only remaining category that will contribute to the "Big Pine" Habitat. Make the setup forms look like those presented in Figure 30.
This will cause the first period to consist of a planting such that there are 400 trees per acre after a 4 year lag. The second period form causes the Period 1 planting to be clearcut and the stand size is output if the Threshold CV is greater than or equal to 1000; in other words there will be no output at the time of clearcut, because all the habitat is removed. The Period 3 form says to output the stand size when CV is greater than or equal to 1000 for all other years.
As it turns out, the DN regimes were already handled (almost) correctly for the Bareland. Recall that our BARE regime is to plant in year 1 or 2 and then to clearcut after a 14 year lag. Recall also that for Habitat Flows, the Period 1 form is what happens in year1 for a DN regime, and the Period 3 form is what happens in all other years. This means that our DN regime will be evaluated as if planting occured in year1, and then cutting was never allowed because N cannot reach 1000 as the Period 3 form requires. This is the best that Habgen can do at this time, without the user having to edit the Flow output results by hand.
Now select the rows where Type="Natural Hardwood" in the Poly-Regime Table. This is the only remaining type that hasn't been dealt with. This type won't contribute to "Big Pine" habitat, and must be processed accordingly. Make the setup forms look like those presented in Figure 31.
The Period 1 and Period 2 forms do a thinning, but there is no output unless BA exceeds 1000, which can't happen. The non-action years controlled by Period 3 will do a thinning too, but will not allow output. The important thing here is not to have any "Big Pine" acreage output from a Natural Hardwood stand. In this case, the DN regime doesn't need any special consideration. You could also set the BA Residual in Period 3 to 1000 to prevent the thinning, but the output will still be 0.
Now select ``WriteData'' from the Flow 2 Table ``File'' menu and save the Habitat Flow data to ../../Habplan3/example/ex1000/flowHab.dat, or to somewhere for later use by Habplan. Don't put column names in row 1.
This component can be used to keep track of the ending age-class distribution of even aged pines. For this problem, that includes the following types: Planted Pine, Seeded Pine and Bareland. The trick here is to process the other types so they'll be handled properly when you get to the Habplan run. This flow component will give the age class on the x axis, and the y-axis will show the number of acres in that class at the end of the 20 year planning period. We will let any even aged pines that are older than 20 go into age class 21. We'll trick Habgen into putting non-pine types into age class 22. So we'll end up with a flow that shows end of period pine age class for years 1 to 20 and all older ages in class 21. We'll also show how to trick Habplan into not worrying about keeping Flows smooth after year 20, so this component will only influence the ending distribution of pines for ages 1-20.
Let's begin by specifying Flow 3 as the table to which output data should be written. Now select the Planted Pine and Seeded Pine rows in the Poly-Regime Table. Make the model setup forms look like those shown in Figure 32.
The Lob Plantation model is used to implement the single period clearcutting regime as it was for the normal flow component above. On the model selection tool, a lag of 1 year is allowed for replanting, and any ages exceeding 21 will go into the end of period 21 age class. "Age+" is left checked, which causes the Age at last entry to be added to the time since last entry. However, the age after a clearcut goes to 0, so this affects only the DN regimes. In this case, the results are the same whether or not Age+ is checked.
Select all rows where Type="Bareland" in the Poly-Regime Table . Fill out the model setup forms like those shown in Figure 33.
This causes the planting to occur in Period 1 and then the clearcut in Period 2. The lag is taken care of, since the planting won't count until 4 years pass as specified on the planting form, so set Lag=0. (In general, don't use lags when planting is taking place.) This puts the right ages into the Flow Table, except that the DN Regimes have age=21. This implies that they have pines at least 21 years old on them. It depends on what the DN regime means for the Bareland Type. This suggests that it means that the bareland polygon was immediately planted, but the trees were never cut. If you don't like this result, you are left with the option of taking an editor and making changes manually to the Bareland, DN polygons, after saving the Flow output data to a file.
Now we need to select everything else and get Habgen to put it into an older age class that can be distinguished from even-aged pine. Remember, we are using this component to track ending ages for even-aged pine only.
Select the Natural Hardwood and Natural Pine rows in the Poly-Regime Table. Make the setup forms look like those shown in Figure 34.
The model Setup forms have a thinning occuring in each of the 2 periods, but the results from the thinnings are irrelevant because this is a Flow component for even-aged pine. The key to making this work is that the lag is set to -100 and the Max = 22, which puts all ages into the 22 age class. The negative 100 lag will increase all ages by 100 years, which ensures that everything goes into the 22 age class. This effectively separates these non-even-aged pines from what we're interested in, i.e. even-aged pines.
Now select all the remaining rows in the Poly-Regime Table, i.e. where Type = Non-Productive, Open, Pond, ROW or Swamp. Use the same settings as for the natural stands above, and push the apply button. This will put all these acres into age class 22 as well. Now save the Flow 3 Table with ``WriteData'' under the "File" menu into ../../Habplan3/example/ex1000/flowClass.dat with no names in row 1.
Select the Block Tab on and open the NabeTool. Find the ex1000/stands.shp file (try ../Habplan3/example/ex1000/stands.shp), then press the ``ReadPolys'' button on the NabeTool. This reads the shapefile for this problem. Then setup the neighbor-finding algorithm. The simplest option of finding immediately adjacent neighbors was used for this example. You can also find neighbors that have at least a specified proportion of shared boundary, or neighbors can be determined by putting a buffer around each polygon. Set this up as you like and press the "Apply" button. Finding neighbors can take some time. Then save the results using ``WriteData'' to ../../Habplan3/example/ex1000/block.dat for use by Habplan later. Don't put column names in row 1 during the save.
There are 3 flow components for this example, but only one of the flows will have a block component and a CCFlow component to control flow of clearcut acres. In addition, there is a Bio-2 component to provide some biasing toward regimes that produce the most volume, and a Spatial Model Component. The first step would be to use the ``Config'' Tool under the ``Misc'' menu to set up the correct objective function configuration. In this case, you can also open the ex1000.xml saved settings file, and Habplan will automatically reconfigure, if necessary. However, Habplan won't run for more than 500 polygons without a password. In order to run example 4, use this case sensitive password: "timberCruiser", unless you already have a password.
Assuming the configuration is done, begin by looking at the 3 flow components, which were created above with Habgen. F1 is for the wood volume flow, F2 controls the flow of ``Big Pine'' Habitat, F3 controls the end-of-period age distribution for even-aged pine acres. Open the F1, F2 and F3 forms under the ``Edit'' menu and make them look like those shown in Figure 35.
Each form gives the location of its data. There is a time0 starting value with Goal=.1. The small goal for time0 says that it is not very important to start at exactly the specified value. The Flow Goal=0.8 says that even flow is somewhat important. The Flow Slope Rate=0, so we're looking for a flat trend over time. The ByGone years are set to 21 and 22 for F3 (Age Class) flow. This is because age class 21 was used to hold all acres of pine that were older than 20. Age class 22 holds all acres of non-pine. The byGone specification tells Habplan not to worry about these years in the even flow calculations, i.e. age classes 21 and 22 can be anything, as far as Habplan is concerned, and that's fine.
The CCFlow (C1(1)) and Block components (BK1(1)) are associated with a "parent" flow component; in this case, the parent is F1. They get much of the information they need from the parent flow data. Therefore, CCFlow and Block components must be entered into the objective function after the parent flow is entered. These components are often referred to as sub-components. Set up the CCFlow and Block Forms under the ``Edit'' menu to look like those shown in Figure 36.
Both components use the same data file containing polygon sizes and neighbors. The clear cut flows computed by the CCFlow component require only the polygon sizes. The CCFlow form requires you to specify the regimes that contribute to clearcut acres, or whatever kind of acres you want to control the flow for. In this case, it is CC#1 through CC#20, which are automatically detected by entering ``)CC'' into the form. There will be a red background until the parent flow data are read, in order to verify the validity of these regimes.
The Block form requires you to specify the regimes that do NOT contribute to block size (the opposite of the CCFlow requirement). For this problem, the NotBlock regimes are the thinning regimes for periods 1 and 2, and the Bareland regime for period 1. Period 1 of the Bareland regime is to plant, so this isn't counted as a block-creating regime. However, period 2 of the BARE regime is clearcutting, so it should contribute to block sizes. By entering ``)T'' and ``)BARE@1'' in the ``notBlock Options section of the Block edit form, Habplan will know to detect all thinning regimes and all Bareland regimes for period 1. Note: There may sometimes be debate about what exactly a notBlock regime is.
Now set up the Bio-2 and Spatial Model forms to look like those shown in Figure 37.
The Bio-2 data is read and the goal is set to .5, which says to attempt to get 50% of the maximum volume that could be achieved. The maximum is what you'd get by assigning the maximum volume regime to each polygon, without considering any other factors. The SMod1 component uses the block.dat file. What is being asked for here is to put do-nothing regimes near ponds, i.e. "DN, PONDS, -1;" . More requests for spatial juxtaposition can be included, as long as each one is separated by a ";". The "-1" says to put DN and PONDS regimes together, whereas a "+1" would say to keep them apart. See the http://ncasi.uml.edu/projects/habplan/Habplan Documentation for more information about using these components. Read the other examples too for other details on how to use Habplan.
Now run Habplan, by entering one component at a time into the objective function, after the preceding component has turned red (converged). Assuming you go from left to right, you'd enter F1, then C1(1), then BK1(1). It is not a bad idea to ``Suspend'' the run when you enter a new component and it reads its data, although it is not necessary to ``Suspend''. Display the graphs for each component as you proceed, and you should see something like that shown in Figure 38.
The flows are along the top. The volume flow (F1) ranges from about about 2 million to 2.5 million cubic feet per year. For the first 10 years, there are about 15000 acres of big pine habitat per year (F2), then it increases to 16500 acres for the last 10 years. There are around 315 acres of even aged pine (F3) in each of the 1-20 year age classes at the end of the planning horizon. The F3 graph is difficult to read because so many acres are dumped into the dummy age classes (21 and 22).
The flow of clearcut acres goes down over time (C1(1) component, upper CCFLow graph), but the volume per acre ratio is increasing over time (lower C1(1) graph). There are 2 BK1(1) graphs: The upper graph shows the min, max and mean block sizes by year. Note that the max blocksize is within the max limit of 150 acres. This min-max range renders an average annual blocksize of approximately 30 acres. The lower graph shows that, for every year of the planning horizon, all block acres are within the specified limits. Finally, for our problem, the GISViewer might look like that shown in Figure 39.
Remember that you normally want to select "Regime" mode, so that the viewer colors the polygons according to the regime color table. Access the color table by pushing the ``Table'' button. The coloring above shows do-nothings in orange and CC regimes in shades of green. Look at the http://ncasi.uml.edu/projects/habplan/Habplan Documentation for more information on the GISViewer.
Use the ``BestSchedule'' tool under the ``Tool'' menu to define what you mean by a good schedule, and then to automatically save some of the best schedules for later restoration. See the http://ncasi.uml.edu/projects/habplan/Habplan Documentation for more information. Figure 40 shows what the BestSchedule window might look like for this problem.
It is set up to save the best 5 schedules as Habplan runs. The idea here is that a fitness function is specified and the schedules with the highest fitness are deemed best. In this case, each converged component contributes 1 to the fitness. In addition, the goal on the Bio2 component is added, because Bio-2 is checked. Note that a component being yellow on the Habplan main menu means the goal is exceeded, but the Fitness function still counts such components as being converged. So, the best schedule had a fitness value for this run of around 7.48. After stopping Habplan, Press "Load" to load one of the saved schedules, and "Restore" to return to the prior schedule. Notice that the best schedule was held for 7725 iterations, so apparently it is hard to beat with the current settings.
Now ``Load'' the best schedule and then save output to text files that you can do additional work on. Open the "Output" form under the "File" menu and make it look like the one shown in Figure 41, to save the basic schedule and the flow results. Press "Delete" twice to remove any pre-existing saves and then press "Save" to save the current schedule to text files. See the http://ncasi.uml.edu/projects/habplan/Habplan Documentation for more information on outputing data to text files.
As mentioned in Example 1, another option for saving Habplan output data is to check the ``Import'' box on the top left of the ``Habplan Output Control Window''. This option results in the checked schedule and component output data being saved automatically (to the specified directory) when a Habplan schedule is saved for later import using the ``Save'' option under ``File'' on the main Habplan window.