In stand-based models, partial harvests may occur unexpectedly, making the resulting schedule more difficult to implement. This outcome, though seemingly random, is driven by underlying modeling principles. While enforcing “all-or-nothing” harvest decisions is possible, it involves trade-offs. This article explains why partial harvesting occurs in Woodstock, demonstrates how to implement “all-or-nothing” harvests using user-defined variables and constraints, and discusses key considerations for this approach.
Why Does Woodstock Partially Harvest Stands?
Decision variables determine the area of a stand allocated to an action in a period. These variables are continuous, allowing the model to allocate any amount from zero up to the stand’s total area.
In the absence of constraints, Woodstock will fully harvest stands in a single period. However, in the presence of constraints, Woodstock may partially harvest some stands to remain feasible.
Enforcing “All-or-Nothing” Harvesting
Essential to “all-or-nothing” harvesting is having a defined decision unit in the model. Whether it is stands, harvest units or analysis areas, having defined harvest candidates is a must.
To force the model to fully harvest stands or not harvest them at all requires the use binary decision variables and logical constraints. This article shows how to create your own binary variables and constraints to enforce “all-or-nothing” decisions.
Example
Consider a model in which theme one is stand ID containing a 25-acre stand labelled “Stand1”. To constrain the model to harvest the stand entirely in a single period, do the following:
- Declare a theme-based output to calculate the area harvested by stand:
; Outputs *OUTPUT AreaHarvested(_TH1) Area harvested by stand *SOURCE .MASK() aHarvest _AREA
- Declare a binary variable array for the stand in the Optimize section:
; Optimize *VARIABLE IsHarvested(Stand1) _BINARYARRAY
Assume that the variable equals one if a stand is harvested and zero if not.
- Declare a constraint for the stand using the binary variable and output limiting the area harvested to either zero or the stand’s entire area:
; Optimize *CONSTRAINTS AreaHarvested(Stand1) = 25 * IsHarvested(Stand1) 1..5
The constraint sets the area harvested in a period for “Stand1” to either zero or the total stand area, depending on the value of the binary variable. If the variable equals one, the stand is harvested and the area harvested must equal 25 (i.e., AreaHarvested (Stand1) = 25 * 1 = 25). If the variable equals zero, the stand is not harvested and the area harvested must equal zero (i.e., AreaHarvested (Stand1) = 25 * 0 = 0).
Note that the constraint is confined to early periods when “all-or-nothing” harvesting matters most.
By obtaining stand IDs and areas from the map attribute data, you can use Integrator to declare constraints for each stand.
FOREACH xx IN (_MAPS) FIELDS(Theme1,Area) GROUPBY Theme1 AreaHarvested(xx.Theme1) – xx.Area * IsHarvested(xx.Theme1) = 0 1..5 ENDFOR
When declaring these logical constraints, you must ensure that the stand area values in the constraint match those in the Areas section exactly.
Thoughts and Considerations
Constraining “all-or-nothing” harvesting is a Mixed Integer Programming (MIP) formulation. These problems require a MIP solver, and they are often notoriously difficult to solve. As a result, “all-or-nothing” harvesting is only enforced when essential to the solution, as it can significantly increase the computational effort and time to generate solutions, as well as the time and effort needed for troubleshooting and model calibration.
In long term forest estate models, “all-or-nothing” harvesting—while ideal—is not essential to the solution and is therefore not routinely enforced. The reality is that Woodstock fully harvests most stands within a single period—if harvesting a stand improves the objective function, the model will harvest it entirely unless limited by constraints. In this case, it is acceptable to endure some partial harvests for the sake of efficiency and ease of use. Although the presence of partial harvests means that the schedule may not be directly implementable, the solution remains valuable and insightful despite this limitation.
In short term operational models, enforcing “all-or-nothing” harvests is essential and strictly enforced. Partial harvests are not acceptable in these cases, as they compromise the schedule and diminish the business insights derived from the model. Given the shorter time horizons and fewer development types involved, these models are better equipped to handle the added computational demands of the MIP formulation.
In summary, constrained models will inevitably exhibit some degree of partial harvesting. The decision to enforce “all-or-nothing” harvest choices depends on the model’s scope and purpose and must be balanced against the additional costs of solving and using the model. It’s important to carefully consider the number and temporal scope of constraints and to potentially relax other constraints to improve solvability and maintain feasibility.
FAQ
Does Woodstock provide features to enforce “all-or-nothing” decisions?
Yes, Woodstock offers features for enforcing “all-or-nothing” decisions, including the ability to define analysis area control variables as binary. For more details, refer to article 1312 in the documentation system.
Can “all-or-nothing” decisions be applied to actions other than harvesting?
“All-or-nothing” decisions can be enforced on any model action that involves discrete units, such as selling or purchasing tracts of land or assigning harvest crews to units.
Is it possible to adjust schedules post-optimization to resolve partial harvests?
Yes, you can adjust schedules post-optimization to address partial harvests, but there is no systematic method for doing so. Partial harvests often result from harvesting a stand across multiple periods, making it challenging to identify the optimal period for adjustment. Additionally, modifying schedules post-optimization might violate the original constraints. For creating near-term operational schedules or cut lists, the Woodstock Optimization Suite offers tools to spatially allocate schedules, but even they are not specifically designed for resolving partial harvests.