If your Woodstock models are becoming cumbersome to build and solve, especially over extended time horizons, you’re not alone. Many users face similar challenges due to the sheer size and complexity of these models. Understanding why models become so large and how to manage this growth is essential for efficient and effective modeling.
Why Do Models Get So Big?
The size of a model is often expressed by the number of decision variables—referred to as choices—and the dimensions of the decision matrix. These choices are influenced by several factors: the number of defined development types, the number of actions and their operability ranges, and the run length.
When Woodstock builds a matrix, the number of variables can increase significantly over time. This growth is primarily due to the creation of new, future development types through various actions and transitions continually expanding the decision matrix.
Long projection lengths, detailed forest characterizations, and numerous actions with wide operability windows contribute to this issue. Consequently, matrices can become exceedingly large, leading to lengthy build and solve times, or in extreme cases, rendering the model unsolvable.
How Can You Keep Things Under Control?
To manage the size of your model, reformulation is key. This can include grouping similar development types into a single class, limiting action operability ranges, and reducing the run length. However, this is often easier said than done. In urgent situations, an alternative solution is the *COMPRESSTIME keyword. This feature allows you to limit choices without making other significant changes to your model.
What Is *COMPRESSTIME?
The *COMPRESSTIME keyword is a Control section switch that instructs Woodstock to generate choices for future development types at specified age class intervals instead of every operable age class.
This affects future type choices for all actions and can significantly reduce the number of decision variables generated. Choices for existing development types are unaffected.
The compress time switch has the following parameters:
- Keyword: *COMPRESSTIME
- Period: The planning period to start limiting future type choices.
- Interval: The interval between age classes generating choices.
Example: *COMPRESSTIME in Action
For example, to exclude future type choices starting in period 30 for all but every fifth age class, you would set it up as:
; Control *COMPRESSTIME 30,5
Considering a final harvest action operable between age 22 and 50, Woodstock will issue future type choices at age 22, 27, 32, 37, 42, 47 and 50. That is, starting from the first operable age class and ending with last, Woodstock will only issue choices for an action for age classes matching the specified interval.
By eliminating future type choices, the size of the decision matrix can be significantly reduced, leading to improved model performance and faster solution times.
Multiple Time Compressions
You can apply choice elimination in stages.
; Control *COMPRESSTIME 25,2,40,5
This command sets Woodstock to issue future type choices every second operable age class staring in period 25, and every fifth operable age class after period 40. This staged approach allows for more nuanced control over choice eliminations.
Regardless of the interval used, Woodstock will always issue a choice for the first and last age class in the operability range.
Important Note
While the *COMPRESSTIME keyword can be beneficial, it should be used with caution. Eliminating choices alters the decision matrix and model results similarly to model reformulation. There is a balance between performance improvements and solution quality.
By understanding and implementing these strategies, you can better manage the size and performance of your Woodstock models, ensuring they remain both practical and effective. Happy modeling!