A new feature has been added to allow account scaling factors to be applied on a per-period basis. This new feature is useful for applying factors that change by year in the future, rather than changing by age of the stand. For example, the following calculates the harvest product value under an assumed periodic increase in log prices:
control.duplicateAccount("product.YieldSpp.SPF", "product.Price.SPF", new double[] {0, 58, 60, 63, 67});
The above will scale the SPF harvest volumes by $58 for the first planning period, $60 for the second planning period and so on. The final value in the list will be used for any remaining periods that are not specified. Since there cannot be any harvest activities in planning period 0 (the start of the simulation) an unused placeholder value of 0 is specified here.
This feature can be easily used to apply discounting for financial analysis. A new method has been added to the Horizon class that generates an appropriately sized list of discount factors for a given interest rate. This can be applied to any account in order to convert to present values, for example:
control.duplicateAccount("net.Value", "net.NPV", Horizon.discount(0.05));
Period-based scaling factors may be used with any of the methods for creating accounts, such as addAccount, duplicateAccount, route accounts as well as others. See the API documentation for more details.
Minor changes and fixes:
The ForestModel XML 'output' attribute may now specify a value of "nonzero", meaning that the attribute should be output to the matrix only if the curve is non-zero. This can be useful for reducing the number of non-contributing curves in the simulation. The default value is still to output all curves.
Add new ability to the Woodstock translator to handle *include files and the _discountfactor and _delay functions.
Fix the selectByLocation method to work properly with line and point features.