{ "cells": [ { "cell_type": "markdown", "id": "fe4de448-d218-420b-bdae-17c1e4b4181c", "metadata": { "tags": [] }, "source": [ "# Building a `ws3` model from scratch\n", "\n", "This notebook has an example of building a new `ws3` model from scratch.\n", "\n", "> We _strongly recommend_ that you run this notebook in venv-sandboxed Python kernel (see `venv_python_kernel_setup` notebook for an example of how to do this). This will ensure that you are working from a fresh Python package environment, and not wasting time debugging random interactions between this notebook and whatever mishmash of packages you have installed on your system in various parts of your Python path. You have been warned. " ] }, { "cell_type": "markdown", "id": "52e1114c-44ce-47b5-bde8-bd5b85ce9623", "metadata": { "tags": [] }, "source": [ "## Configure modelling environment" ] }, { "cell_type": "code", "execution_count": 2, "id": "6008a688", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] } ], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "id": "bcd43a9e", "metadata": {}, "source": [ "Optionally, uninstall the `ws3` package and replace it with a pointer to _this local clone of the GitHub repository code_ (useful if you want ot tweak the source code for whatever reason). " ] }, { "cell_type": "code", "execution_count": 3, "id": "f2db1bc8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found existing installation: ws3 1.0.4\n", "Uninstalling ws3-1.0.4:\n", " Successfully uninstalled ws3-1.0.4\n", "Note: you may need to restart the kernel to use updated packages.\n", "Obtaining file:///home/gep/projects/ws3\n", " Installing build dependencies ... \u001b[?25ldone\n", "\u001b[?25h Checking if build backend supports build_editable ... \u001b[?25ldone\n", "\u001b[?25h Getting requirements to build editable ... \u001b[?25ldone\n", "\u001b[?25h Installing backend dependencies ... \u001b[?25ldone\n", "\u001b[?25h Preparing editable metadata (pyproject.toml) ... \u001b[?25ldone\n", "\u001b[?25hRequirement already satisfied: dill in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ws3==1.0.4) (0.4.0)\n", "Requirement already satisfied: fiona in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ws3==1.0.4) (1.10.1)\n", "Requirement already satisfied: highspy in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ws3==1.0.4) (1.11.0)\n", "Requirement already satisfied: matplotlib in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ws3==1.0.4) (3.10.6)\n", "Requirement already satisfied: numpy>=1.21 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ws3==1.0.4) (2.3.3)\n", "Requirement already satisfied: pandas>=1.3 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ws3==1.0.4) (2.3.3)\n", "Requirement already satisfied: profilehooks in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ws3==1.0.4) (1.13.0)\n", "Requirement already satisfied: rasterio in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ws3==1.0.4) (1.4.3)\n", "Requirement already satisfied: scipy>=1.7 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ws3==1.0.4) (1.16.2)\n", "Requirement already satisfied: python-dateutil>=2.8.2 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from pandas>=1.3->ws3==1.0.4) (2.9.0.post0)\n", "Requirement already satisfied: pytz>=2020.1 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from pandas>=1.3->ws3==1.0.4) (2025.2)\n", "Requirement already satisfied: tzdata>=2022.7 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from pandas>=1.3->ws3==1.0.4) (2025.2)\n", "Requirement already satisfied: six>=1.5 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas>=1.3->ws3==1.0.4) (1.17.0)\n", "Requirement already satisfied: attrs>=19.2.0 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from fiona->ws3==1.0.4) (25.3.0)\n", "Requirement already satisfied: certifi in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from fiona->ws3==1.0.4) (2025.8.3)\n", "Requirement already satisfied: click~=8.0 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from fiona->ws3==1.0.4) (8.3.0)\n", "Requirement already satisfied: click-plugins>=1.0 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from fiona->ws3==1.0.4) (1.1.1.2)\n", "Requirement already satisfied: cligj>=0.5 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from fiona->ws3==1.0.4) (0.7.2)\n", "Requirement already satisfied: contourpy>=1.0.1 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from matplotlib->ws3==1.0.4) (1.3.3)\n", "Requirement already satisfied: cycler>=0.10 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from matplotlib->ws3==1.0.4) (0.12.1)\n", "Requirement already satisfied: fonttools>=4.22.0 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from matplotlib->ws3==1.0.4) (4.60.1)\n", "Requirement already satisfied: kiwisolver>=1.3.1 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from matplotlib->ws3==1.0.4) (1.4.9)\n", "Requirement already satisfied: packaging>=20.0 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from matplotlib->ws3==1.0.4) (25.0)\n", "Requirement already satisfied: pillow>=8 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from matplotlib->ws3==1.0.4) (11.3.0)\n", "Requirement already satisfied: pyparsing>=2.3.1 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from matplotlib->ws3==1.0.4) (3.2.5)\n", "Requirement already satisfied: affine in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from rasterio->ws3==1.0.4) (2.4.0)\n", "Building wheels for collected packages: ws3\n", " Building editable for ws3 (pyproject.toml) ... \u001b[?25ldone\n", "\u001b[?25h Created wheel for ws3: filename=ws3-1.0.4-py3-none-any.whl size=4204 sha256=9b9a33b0985eefd9dff50e4c5bf85215f33b5b124218fdd6ecdb28b39f96c20d\n", " Stored in directory: /tmp/pip-ephem-wheel-cache-2q3cwg9b/wheels/8a/d1/f0/2b533a60b366fa03a12ca91a1ad068761e66b9df68fa0cadb9\n", "Successfully built ws3\n", "Installing collected packages: ws3\n", "Successfully installed ws3-1.0.4\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "clobber_ws3 = True\n", "if clobber_ws3:\n", " %pip uninstall -y ws3\n", " %pip install -e .." ] }, { "cell_type": "markdown", "id": "bf0ce835", "metadata": {}, "source": [ "Use `pip` to install Python packages listed in `requirements.txt` (some extra packages needed for example notebooks to run correctly)." ] }, { "cell_type": "code", "execution_count": 4, "id": "aa1b5569", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: seaborn in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from -r requirements.txt (line 1)) (0.13.2)\n", "Requirement already satisfied: geopandas in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from -r requirements.txt (line 2)) (1.1.1)\n", "Requirement already satisfied: ipywidgets in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from -r requirements.txt (line 3)) (8.1.7)\n", "Requirement already satisfied: numpy!=1.24.0,>=1.20 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from seaborn->-r requirements.txt (line 1)) (2.3.3)\n", "Requirement already satisfied: pandas>=1.2 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from seaborn->-r requirements.txt (line 1)) (2.3.3)\n", "Requirement already satisfied: matplotlib!=3.6.1,>=3.4 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from seaborn->-r requirements.txt (line 1)) (3.10.6)\n", "Requirement already satisfied: pyogrio>=0.7.2 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from geopandas->-r requirements.txt (line 2)) (0.11.1)\n", "Requirement already satisfied: packaging in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from geopandas->-r requirements.txt (line 2)) (25.0)\n", "Requirement already satisfied: pyproj>=3.5.0 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from geopandas->-r requirements.txt (line 2)) (3.7.2)\n", "Requirement already satisfied: shapely>=2.0.0 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from geopandas->-r requirements.txt (line 2)) (2.1.2)\n", "Requirement already satisfied: comm>=0.1.3 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ipywidgets->-r requirements.txt (line 3)) (0.2.3)\n", "Requirement already satisfied: ipython>=6.1.0 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ipywidgets->-r requirements.txt (line 3)) (9.6.0)\n", "Requirement already satisfied: traitlets>=4.3.1 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ipywidgets->-r requirements.txt (line 3)) (5.14.3)\n", "Requirement already satisfied: widgetsnbextension~=4.0.14 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ipywidgets->-r requirements.txt (line 3)) (4.0.14)\n", "Requirement already satisfied: jupyterlab_widgets~=3.0.15 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ipywidgets->-r requirements.txt (line 3)) (3.0.15)\n", "Requirement already satisfied: decorator in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets->-r requirements.txt (line 3)) (5.2.1)\n", "Requirement already satisfied: ipython-pygments-lexers in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets->-r requirements.txt (line 3)) (1.1.1)\n", "Requirement already satisfied: jedi>=0.16 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets->-r requirements.txt (line 3)) (0.19.2)\n", "Requirement already satisfied: matplotlib-inline in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets->-r requirements.txt (line 3)) (0.1.7)\n", "Requirement already satisfied: pexpect>4.3 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets->-r requirements.txt (line 3)) (4.9.0)\n", "Requirement already satisfied: prompt_toolkit<3.1.0,>=3.0.41 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets->-r requirements.txt (line 3)) (3.0.52)\n", "Requirement already satisfied: pygments>=2.4.0 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets->-r requirements.txt (line 3)) (2.19.2)\n", "Requirement already satisfied: stack_data in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets->-r requirements.txt (line 3)) (0.6.3)\n", "Requirement already satisfied: wcwidth in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from prompt_toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets->-r requirements.txt (line 3)) (0.2.14)\n", "Requirement already satisfied: parso<0.9.0,>=0.8.4 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets->-r requirements.txt (line 3)) (0.8.5)\n", "Requirement already satisfied: contourpy>=1.0.1 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn->-r requirements.txt (line 1)) (1.3.3)\n", "Requirement already satisfied: cycler>=0.10 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn->-r requirements.txt (line 1)) (0.12.1)\n", "Requirement already satisfied: fonttools>=4.22.0 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn->-r requirements.txt (line 1)) (4.60.1)\n", "Requirement already satisfied: kiwisolver>=1.3.1 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn->-r requirements.txt (line 1)) (1.4.9)\n", "Requirement already satisfied: pillow>=8 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn->-r requirements.txt (line 1)) (11.3.0)\n", "Requirement already satisfied: pyparsing>=2.3.1 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn->-r requirements.txt (line 1)) (3.2.5)\n", "Requirement already satisfied: python-dateutil>=2.7 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn->-r requirements.txt (line 1)) (2.9.0.post0)\n", "Requirement already satisfied: pytz>=2020.1 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from pandas>=1.2->seaborn->-r requirements.txt (line 1)) (2025.2)\n", "Requirement already satisfied: tzdata>=2022.7 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from pandas>=1.2->seaborn->-r requirements.txt (line 1)) (2025.2)\n", "Requirement already satisfied: ptyprocess>=0.5 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets->-r requirements.txt (line 3)) (0.7.0)\n", "Requirement already satisfied: certifi in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from pyogrio>=0.7.2->geopandas->-r requirements.txt (line 2)) (2025.8.3)\n", "Requirement already satisfied: six>=1.5 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib!=3.6.1,>=3.4->seaborn->-r requirements.txt (line 1)) (1.17.0)\n", "Requirement already satisfied: executing>=1.2.0 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from stack_data->ipython>=6.1.0->ipywidgets->-r requirements.txt (line 3)) (2.2.1)\n", "Requirement already satisfied: asttokens>=2.1.0 in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from stack_data->ipython>=6.1.0->ipywidgets->-r requirements.txt (line 3)) (3.0.0)\n", "Requirement already satisfied: pure-eval in /home/gep/projects/ws3/.venv/lib/python3.12/site-packages (from stack_data->ipython>=6.1.0->ipywidgets->-r requirements.txt (line 3)) (0.2.3)\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "%pip install -r requirements.txt" ] }, { "cell_type": "code", "execution_count": 5, "id": "1271efba-f9c2-40a8-86c9-2d2e6ca4323f", "metadata": { "tags": [] }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import geopandas as gpd\n", "import ws3.forest, ws3.core" ] }, { "cell_type": "markdown", "id": "e1090a31-8215-46dc-b6c9-61030fc01ff7", "metadata": {}, "source": [ "## Set up Python environment" ] }, { "cell_type": "markdown", "id": "2597ec84-062c-4d10-ae51-22d669185ba4", "metadata": {}, "source": [ "Define some basic parameters." ] }, { "cell_type": "code", "execution_count": 6, "id": "11a7ae85-6e7e-4537-b645-249a76208841", "metadata": { "tags": [] }, "outputs": [], "source": [ "base_year = 2020\n", "horizon = 10\n", "period_length = 10\n", "max_age = 1000\n", "tvy_name = \"totvol\"" ] }, { "cell_type": "markdown", "id": "0ada77ae-106d-475b-b21f-f7095cbebd9e", "metadata": {}, "source": [ "Import sample inventory and yield curve data.\n", "\n", "The inventory data is imported a from vector data layer (stored in industry-standard ESRI Shapefile format). This is a small square of real forest data clipped from a larger dataset representing Timber Supply Area (TSA) 24 in British Columbia (BC), Canada. This data layer is derived from publicly-available BC Vegetation Resource Inventory (VRI) datasets (see [British Columbia Data Catalogue](https://catalogue.data.gov.bc.ca/)) that we pre-processed to include the data attributes we need (in the format we want) for this `ws3` model-building example. \n", "\n", "The yield curve data was generated from a complex process (the details of which are outside the scope of this example, contact [Gregory Paradis](mailto:gregory.paradis@ubc.ca) for details), using a methodology consistent with _de facto_ professional best-practices for the Timber Supply Review (TSR) modelling process in BC. " ] }, { "cell_type": "code", "execution_count": 7, "id": "147a0b10-de95-45ea-9090-910f636ef418", "metadata": { "tags": [] }, "outputs": [], "source": [ "stands = gpd.read_file(\"data/shp/tsa24_clipped.shp/stands.shp\")" ] }, { "cell_type": "code", "execution_count": 8, "id": "e2e354ee-96d1-474c-b92a-c2c106719bd2", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
theme0theme1theme2curve1curve2SPECIES_CDageareatheme3geometry
0tsa24_clipped1240100224010022401002PLI1450.111814204MULTIPOLYGON (((1112711.004 1120816.405, 11127...
1tsa24_clipped1240100224010022401002PLI1450.113925204POLYGON ((1113299.5 1120834.77, 1113298.336 11...
2tsa24_clipped1240100224010022401002PLI1357.025088204POLYGON ((1112035.066 1121064.403, 1112071.399...
3tsa24_clipped1240200224020022402002PLI9311.029940204POLYGON ((1114394.74 1120822.943, 1114394.421 ...
4tsa24_clipped1240100024010002401000SX1459.581284100MULTIPOLYGON (((1114322.804 1120983.973, 11143...
.................................
185tsa24_clipped1240100224010022401002PLI855.667730204POLYGON ((1115036.356 1124809.762, 1115037.888...
186tsa24_clipped1240100224010022401002PLI851.811041204POLYGON ((1114157.65 1124633.924, 1114154.478 ...
187tsa24_clipped1240100224010022401002PLI951.137586204POLYGON ((1114675.233 1124802.103, 1114684.36 ...
188tsa24_clipped0240100024010002401000SB950.494253100POLYGON ((1114249.328 1124669.031, 1114271.225...
189tsa24_clipped1240200224020022402002PLI950.387243204POLYGON ((1112837.042 1124802.518, 1112821.02 ...
\n", "

190 rows × 10 columns

\n", "
" ], "text/plain": [ " theme0 theme1 theme2 curve1 curve2 SPECIES_CD age \\\n", "0 tsa24_clipped 1 2401002 2401002 2401002 PLI 145 \n", "1 tsa24_clipped 1 2401002 2401002 2401002 PLI 145 \n", "2 tsa24_clipped 1 2401002 2401002 2401002 PLI 135 \n", "3 tsa24_clipped 1 2402002 2402002 2402002 PLI 93 \n", "4 tsa24_clipped 1 2401000 2401000 2401000 SX 145 \n", ".. ... ... ... ... ... ... ... \n", "185 tsa24_clipped 1 2401002 2401002 2401002 PLI 85 \n", "186 tsa24_clipped 1 2401002 2401002 2401002 PLI 85 \n", "187 tsa24_clipped 1 2401002 2401002 2401002 PLI 95 \n", "188 tsa24_clipped 0 2401000 2401000 2401000 SB 95 \n", "189 tsa24_clipped 1 2402002 2402002 2402002 PLI 95 \n", "\n", " area theme3 geometry \n", "0 0.111814 204 MULTIPOLYGON (((1112711.004 1120816.405, 11127... \n", "1 0.113925 204 POLYGON ((1113299.5 1120834.77, 1113298.336 11... \n", "2 7.025088 204 POLYGON ((1112035.066 1121064.403, 1112071.399... \n", "3 11.029940 204 POLYGON ((1114394.74 1120822.943, 1114394.421 ... \n", "4 9.581284 100 MULTIPOLYGON (((1114322.804 1120983.973, 11143... \n", ".. ... ... ... \n", "185 5.667730 204 POLYGON ((1115036.356 1124809.762, 1115037.888... \n", "186 1.811041 204 POLYGON ((1114157.65 1124633.924, 1114154.478 ... \n", "187 1.137586 204 POLYGON ((1114675.233 1124802.103, 1114684.36 ... \n", "188 0.494253 100 POLYGON ((1114249.328 1124669.031, 1114271.225... \n", "189 0.387243 204 POLYGON ((1112837.042 1124802.518, 1112821.02 ... \n", "\n", "[190 rows x 10 columns]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stands" ] }, { "cell_type": "markdown", "id": "be459641-89ec-4f7e-bad3-e20b01f76a31", "metadata": {}, "source": [ "Import data tables linking analysis units to yield curves." ] }, { "cell_type": "code", "execution_count": 9, "id": "090ad90c-971a-4931-9a68-d50ee9a09e5d", "metadata": { "tags": [] }, "outputs": [], "source": [ "au_table = pd.read_csv(\"data/au_table.csv\").set_index(\"au_id\")\n", "curve_table = pd.read_csv(\"data/curve_table.csv\")\n", "curve_points_table = pd.read_csv(\"data/curve_points_table.csv\").set_index(\"curve_id\")" ] }, { "cell_type": "code", "execution_count": 10, "id": "350f4224-c95e-4947-bd82-a5af0a9b4578", "metadata": { "tags": [] }, "outputs": [], "source": [ "au_table[\"thlb\"] = au_table.apply(lambda row: 0 if row.unmanaged_curve_id == row.managed_curve_id else 1, axis=1)" ] }, { "cell_type": "code", "execution_count": 11, "id": "cf466615-38ba-4ede-b1a8-50b187b66129", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
record_idtsastratum_codesi_levelcanfi_speciesunmanaged_curve_idmanaged_curve_idthlb
au_id
24010006324SBS_SXL100240100024010000
24020006424SBS_SXM100240200024220001
24030006524SBS_SXH100240300024230001
24010016624ESSF_BLL304240100124010010
24020016724ESSF_BLM304240200124020010
24030016824ESSF_BLH304240300124230011
24010026924SBS_PLIL204240100224210021
24020027024SBS_PLIM204240200224220021
24030027124SBS_PLIH204240300224230021
24010037224SBS_BLL304240100324010030
24020037324SBS_BLM304240200324220031
24030037424SBS_BLH304240300324230031
24010047524ESSF_SEL104240100424010040
24020047624ESSF_SEM104240200424220041
24030047724ESSF_SEH104240300424230041
24010057824SBS_ATL1201240100524010050
24020057924SBS_ATM1201240200524020050
24030058024SBS_ATH1201240300524030050
24010068124SBS_AT+SXL1201240100624010060
24020068224SBS_AT+SXM1201240200624020060
24030068324SBS_AT+SXH1201240300624030060
24010078424SBS_SX+ATL100240100724210071
24020078524SBS_SX+ATM100240200724220071
24030078624SBS_SX+ATH100240300724230071
\n", "
" ], "text/plain": [ " record_id tsa stratum_code si_level canfi_species \\\n", "au_id \n", "2401000 63 24 SBS_SX L 100 \n", "2402000 64 24 SBS_SX M 100 \n", "2403000 65 24 SBS_SX H 100 \n", "2401001 66 24 ESSF_BL L 304 \n", "2402001 67 24 ESSF_BL M 304 \n", "2403001 68 24 ESSF_BL H 304 \n", "2401002 69 24 SBS_PLI L 204 \n", "2402002 70 24 SBS_PLI M 204 \n", "2403002 71 24 SBS_PLI H 204 \n", "2401003 72 24 SBS_BL L 304 \n", "2402003 73 24 SBS_BL M 304 \n", "2403003 74 24 SBS_BL H 304 \n", "2401004 75 24 ESSF_SE L 104 \n", "2402004 76 24 ESSF_SE M 104 \n", "2403004 77 24 ESSF_SE H 104 \n", "2401005 78 24 SBS_AT L 1201 \n", "2402005 79 24 SBS_AT M 1201 \n", "2403005 80 24 SBS_AT H 1201 \n", "2401006 81 24 SBS_AT+SX L 1201 \n", "2402006 82 24 SBS_AT+SX M 1201 \n", "2403006 83 24 SBS_AT+SX H 1201 \n", "2401007 84 24 SBS_SX+AT L 100 \n", "2402007 85 24 SBS_SX+AT M 100 \n", "2403007 86 24 SBS_SX+AT H 100 \n", "\n", " unmanaged_curve_id managed_curve_id thlb \n", "au_id \n", "2401000 2401000 2401000 0 \n", "2402000 2402000 2422000 1 \n", "2403000 2403000 2423000 1 \n", "2401001 2401001 2401001 0 \n", "2402001 2402001 2402001 0 \n", "2403001 2403001 2423001 1 \n", "2401002 2401002 2421002 1 \n", "2402002 2402002 2422002 1 \n", "2403002 2403002 2423002 1 \n", "2401003 2401003 2401003 0 \n", "2402003 2402003 2422003 1 \n", "2403003 2403003 2423003 1 \n", "2401004 2401004 2401004 0 \n", "2402004 2402004 2422004 1 \n", "2403004 2403004 2423004 1 \n", "2401005 2401005 2401005 0 \n", "2402005 2402005 2402005 0 \n", "2403005 2403005 2403005 0 \n", "2401006 2401006 2401006 0 \n", "2402006 2402006 2402006 0 \n", "2403006 2403006 2403006 0 \n", "2401007 2401007 2421007 1 \n", "2402007 2402007 2422007 1 \n", "2403007 2403007 2423007 1 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "au_table" ] }, { "cell_type": "markdown", "id": "17e2e9ac-b514-48d7-92e0-efa976cf056d", "metadata": {}, "source": [ "Need to rebuild the Timber Harvesting Land Base (THLB) attribute (i.e., `theme1`) in the stand inventory table. Current implementation is inconsistent with yield VDYP/TIPSY yield curve (and AU definition) modelling assumptions. \n", "\n", "In a nutshell, AUs either have only a VDYP yield curve or both VDYP and TISPY yield curves (if considered potentially operable). We need to set the THLB attribute to 0 for stands in AUs with have only a VDYP curve (i.e., where `au_table.unmanaged_curve_id == au_table.managed_curve_id`), and 1 otherwise. \n", "\n", "Otherwise, we would get weird cases where we can harvest a stand but there is not TIPSY curve defined for second-growth stand conditions." ] }, { "cell_type": "code", "execution_count": 12, "id": "dbf4b93f-5060-429d-86aa-856bc3f23642", "metadata": { "tags": [] }, "outputs": [], "source": [ "stands.theme1 = stands.apply(lambda row: au_table.loc[row.theme2].thlb, axis=1)" ] }, { "cell_type": "markdown", "id": "b5f99801-86ff-48d7-9a29-599ea60913dc", "metadata": {}, "source": [ "Copy `curve1` to `theme4` so we can track yield curve transitions independently from AU." ] }, { "cell_type": "code", "execution_count": 13, "id": "02fde4ca-fe5c-424a-bfe7-efdba260df61", "metadata": { "tags": [] }, "outputs": [], "source": [ "stands[\"theme4\"] = stands.curve1" ] }, { "cell_type": "markdown", "id": "9bc02b7b-48d8-4ca8-8523-59dfd79a508c", "metadata": {}, "source": [ "Set up themes." ] }, { "cell_type": "code", "execution_count": 14, "id": "40ab8116-4629-4363-ad32-18b6c1ecdd45", "metadata": { "tags": [] }, "outputs": [], "source": [ "theme_cols=[\"theme0\", # TSA\n", " \"theme1\", # THLB\n", " \"theme2\", # AU\n", " \"theme3\", # leading species code\n", " \"theme4\"] # yield curve ID\n", "basecodes = [list(map(lambda x: str(x), stands[tc].unique())) for tc in theme_cols]" ] }, { "cell_type": "code", "execution_count": 15, "id": "ecd94456-5e7e-4459-a6c5-17adbdbf95b3", "metadata": { "tags": [] }, "outputs": [], "source": [ "# also scrape au_table for AU and curve ID values that are not in inventory but might pop up later (hack?)\n", "basecodes[2] = list(set(basecodes[2] + list(au_table.index.astype(str))))\n", "basecodes[3] = list(set(basecodes[3] + list(au_table.canfi_species.astype(str))))\n", "basecodes[4] = list(set(basecodes[4] + list(au_table.unmanaged_curve_id.astype(str)) + list(au_table.managed_curve_id.astype(str)))) " ] }, { "cell_type": "code", "execution_count": 16, "id": "d288b57d-18ec-4536-a09c-e609027d3c9a", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[['tsa24_clipped'],\n", " ['1', '0'],\n", " ['2403006',\n", " '2403000',\n", " '2402002',\n", " '2401001',\n", " '2402000',\n", " '2403003',\n", " '2401006',\n", " '2401002',\n", " '2402003',\n", " '2403002',\n", " '2402006',\n", " '2401003',\n", " '2401007',\n", " '2403004',\n", " '2401000',\n", " '2402007',\n", " '2401004',\n", " '2403005',\n", " '2401005',\n", " '2402004',\n", " '2403001',\n", " '2403007',\n", " '2402005',\n", " '2402001'],\n", " ['204', '304', '1201', '100', '104'],\n", " ['2423002',\n", " '2403006',\n", " '2403000',\n", " '2421002',\n", " '2421007',\n", " '2402002',\n", " '2401001',\n", " '2422002',\n", " '2423007',\n", " '2422003',\n", " '2402000',\n", " '2423000',\n", " '2403003',\n", " '2401006',\n", " '2422007',\n", " '2401002',\n", " '2422000',\n", " '2402003',\n", " '2423001',\n", " '2403002',\n", " '2402006',\n", " '2401003',\n", " '2401007',\n", " '2403004',\n", " '2401000',\n", " '2423003',\n", " '2402007',\n", " '2401004',\n", " '2403005',\n", " '2401005',\n", " '2422004',\n", " '2423004',\n", " '2402004',\n", " '2403001',\n", " '2403007',\n", " '2402005',\n", " '2402001']]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "basecodes" ] }, { "cell_type": "markdown", "id": "d3e8b152-771b-44b9-a05f-5e4cddc0d788", "metadata": {}, "source": [ "Create a new blank `ForestModel` instance." ] }, { "cell_type": "code", "execution_count": 17, "id": "6f59fa17-7364-463f-b03b-19ec903249f3", "metadata": { "tags": [] }, "outputs": [], "source": [ "fm = ws3.forest.ForestModel(model_name=\"tsa24_clipped\",\n", " model_path=\"data\",\n", " base_year=base_year,\n", " horizon=horizon,\n", " period_length=period_length,\n", " max_age=max_age)" ] }, { "cell_type": "markdown", "id": "0d97a6be-21ee-4920-984f-1b4b99a481d0", "metadata": {}, "source": [ "Now populate `fm` with data." ] }, { "cell_type": "markdown", "id": "3288ccb0-e93a-4bde-b81f-c2022f26aa85", "metadata": {}, "source": [ "Set up themes." ] }, { "cell_type": "code", "execution_count": 18, "id": "d3cf3d0c-086e-4c52-925d-e4566fead756", "metadata": { "tags": [] }, "outputs": [], "source": [ "for ti, t in enumerate(theme_cols):\n", " fm.add_theme(t, basecodes[ti])" ] }, { "cell_type": "markdown", "id": "929d9ce2-9535-4edd-b199-66c0422dbd3e", "metadata": {}, "source": [ "Load areas from inventory data." ] }, { "cell_type": "code", "execution_count": 19, "id": "2d93ec79-1a15-4e36-85b7-1e9ff7925645", "metadata": { "tags": [] }, "outputs": [], "source": [ "gstands = stands.groupby(theme_cols+[\"age\"])" ] }, { "cell_type": "code", "execution_count": 20, "id": "6a275407-81e9-4c5c-8ab3-147189c1cb20", "metadata": { "tags": [] }, "outputs": [], "source": [ "for name, group in gstands:\n", " dtk, age, area = tuple(map(lambda x: str(x), name[:-1])), int(name[-1]), group[\"area\"].sum()\n", " if dtk not in fm.dtypes:\n", " fm.dtypes[dtk] = ws3.forest.DevelopmentType(dtk, fm)\n", " fm.dtypes[dtk].area(0, age, area)" ] }, { "cell_type": "markdown", "id": "6ecf1dc0-d16a-434a-8bac-ececccf7240a", "metadata": {}, "source": [ "Inspect `dtypes` attribute of `ForestModel` instance." ] }, { "cell_type": "markdown", "id": "cc2be72d-7867-4a04-b5d8-283cbef09591", "metadata": {}, "source": [ "Directly inject yield curve data into the `fm` instance. \n", "\n", "This a bit obscure, and the exact process will differ from case to case depending on input data structure and desired model structure. This is _not_ the one and only way to do this." ] }, { "cell_type": "code", "execution_count": 21, "id": "8cb25039-344f-47d7-a1be-d1b8dec7fb51", "metadata": { "tags": [] }, "outputs": [], "source": [ "for au_id, au_row in au_table.iterrows():\n", " yname = \"s%04d\" % int(au_row.canfi_species)\n", " for is_managed in (0, 1):\n", " curve_id = au_row.unmanaged_curve_id if not is_managed else au_row.managed_curve_id\n", " mask = (\"?\", \"?\", str(au_id), \"?\", str(curve_id))\n", " points = [(r.x, r.y) for _, r in curve_points_table.loc[curve_id].iterrows() if not r.x % period_length and r.x <= max_age]\n", " c = fm.register_curve(ws3.core.Curve(yname, points=points, type=\"a\", is_volume=True, xmax=fm.max_age, period_length=period_length))\n", " fm.yields.append((mask, \"a\", [(yname, c)])) # only if not already present?\n", " fm.ynames.add(yname) \n", " for dtk in fm.unmask(mask): \n", " fm.dtypes[dtk].add_ycomp(\"a\", yname, c)" ] }, { "cell_type": "markdown", "id": "af6179b1-b97f-4917-a29c-99c06032a622", "metadata": {}, "source": [ "Add total volume curves." ] }, { "cell_type": "code", "execution_count": 22, "id": "1c869a2a-e2c5-48f4-8a78-ad76271e9292", "metadata": { "tags": [] }, "outputs": [], "source": [ "expr = \"_SUM(%s)\" % \", \".join(fm.ynames)\n", "fm.yields.append(((\"?\", \"?\", \"?\", \"?\", \"?\"), \"c\", [(tvy_name, expr)]))\n", "fm.ynames.add(tvy_name)\n", "for dtk in fm.dtypes.keys(): fm.dtypes[dtk].add_ycomp(\"c\", tvy_name, expr)" ] }, { "cell_type": "markdown", "id": "d1d0516f-657e-4072-bb31-d1892dbd6b06", "metadata": {}, "source": [ "Set up actions. This part is a bit ugly, because `ws3` was originally designed to import Woodstock code (not to directly code models like this). As with yield curves, there is more than one way to implement this, and the details will depend on your input data format and exactly what model you are trying to build.\n", "\n", "All of this gets automatically set up correctly if you use the built-in functions to import Woostock-style input files, but is your responsibility if you bypass and direct-code your model.\n", "\n", "There is a lot going on here. \n", "\n", "Generic transitions are configured at the `ForestModel` level. These are basically equivalent (conceptually, and functionally) to transitions defined in a Woodstock model. The source masks allow `ws3` to match the key of a new development type (whose runtime instantiation is triggered by application of an action) to one or more appropriate transitions, which then get compiled into the new development type. Etc. Makes more sense if you understand how Woodstock models work. Need to provide more information about this in the `ws3` documentation." ] }, { "cell_type": "code", "execution_count": 23, "id": "2aa340e3-7a6a-431b-8d99-0349868af803", "metadata": { "tags": [] }, "outputs": [], "source": [ "acode = \"harvest\"\n", "oe = \"_age >= 80 and _age <= 500\" # operability expression\n", "fm.transitions[acode] = {}\n", "for au_id, au_row in au_table.iterrows():\n", " if not au_row.thlb: continue\n", " target_curve_id = au_row.managed_curve_id\n", " smask = (\"?\", \"?\", str(au_id), \"?\", \"?\")\n", " tmask = (\"?\", \"?\", \"?\", \"?\", str(target_curve_id))\n", " target = [(tmask, 1.0, None, None, None, None, None)] # list of one (single target... not modelling \"divergent\" transitions)\n", " fm.actions[acode] = ws3.forest.Action(acode, targetage=0, is_harvest=True)\n", " fm.oper_expr[acode] = {smask:oe} \n", " fm.transitions[acode].update({smask:{\"\":target}}) # the \"\" is a blank source condition expression\n", " for dtk in fm.unmask(smask):\n", " dt = fm.dtypes[dtk]\n", " dt.oper_expr[acode] = [oe]\n", " for age in range(1, fm.max_age):\n", " if not dt.is_operable(acode, 1, age): continue\n", " fm.dtypes[dtk].transitions[acode, age] = target" ] }, { "cell_type": "code", "execution_count": 24, "id": "ad390446-db3d-4a47-a5bc-0cdb57b4a20f", "metadata": {}, "outputs": [], "source": [ "fm.compile_actions()" ] }, { "cell_type": "markdown", "id": "ed414a3a-e46b-4202-9820-954a797c805c", "metadata": {}, "source": [ "## Poke around `ForestModel` instance data structures to see what we just did" ] }, { "cell_type": "markdown", "id": "1340875e-11a8-4062-8931-cfa56457ce66", "metadata": {}, "source": [ "We can poke around the model data structures a bit to see the data we injected above." ] }, { "cell_type": "markdown", "id": "80e315a7-a72e-4e39-8f0d-ae9a03bb3a06", "metadata": {}, "source": [ "Print list of yield component names we are using in this model. In our case, the `sXXX` curves are species-specific yield curves where `XXX` is a [CANFI](https://nfi.nfis.org/en/history) tree species code." ] }, { "cell_type": "code", "execution_count": 25, "id": "1088edeb-e74e-4901-a144-50c55b5e0405", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'s0100', 's0104', 's0204', 's0304', 's1201', 'totvol'}" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fm.ynames" ] }, { "cell_type": "markdown", "id": "5e030331-ff65-4329-8959-a95555c03ade", "metadata": {}, "source": [ "List yield components present in our example `DevelopmentType` instance from earlier." ] }, { "cell_type": "code", "execution_count": 26, "id": "ecd7bd8b-821a-4876-a4e8-424bae980125", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "['s0204', 'totvol']" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt.ycomps()" ] }, { "cell_type": "markdown", "id": "df5e8932-8d93-4580-b5fb-844a01129935", "metadata": {}, "source": [ "Get a reference to the total yield curve.\n", "\n", "The `ws3.core.Curve` class can do all sorts of neat things with yield curve (e.g., curves can resample themselves, interpolate between data points, extrapolate beyond data points, be operated on using standard Python arithmetic operators, CAI, MAI, YTP, etc.). See source code for details. " ] }, { "cell_type": "code", "execution_count": 27, "id": "1b4be027-d64a-4e89-b9d3-b16808e6d1ad", "metadata": { "tags": [] }, "outputs": [], "source": [ "c = dt.ycomp(\"totvol\")" ] }, { "cell_type": "code", "execution_count": 28, "id": "a705e982-159f-4499-aeeb-c948cc98db4f", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[(0, 0.0),\n", " (30, 0.2),\n", " (40, 24.4),\n", " (50, 98.20000000000002),\n", " (60, 184.10000000000002),\n", " (70, 257.4),\n", " (80, 312.6),\n", " (90, 353.8),\n", " (100, 380.3),\n", " (110, 400.5),\n", " (120, 413.0),\n", " (130, 422.1),\n", " (140, 428.7),\n", " (150, 433.3),\n", " (160, 435.0),\n", " (180, 437.4),\n", " (190, 436.8),\n", " (200, 434.7),\n", " (210, 433.0),\n", " (230, 430.5),\n", " (250, 428.9),\n", " (1000, 426.9)]" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c.points()" ] }, { "cell_type": "markdown", "id": "bdb04f08-7f28-47e0-a05a-eebdf256bc7b", "metadata": { "tags": [] }, "source": [ "Plot total volume, CAI, MAI, MAI YTP, etc. Optimal rotation age in red.\n", "\n", "Note that all the stuff a forester would expect to see happening with these yield curves is seems to be happening:\n", "* A tangent to the volume curve passing through the origin touches the yield curve at the optimal rotation age.\n", "* The CAI curve is blocky because curve points are sparse (curves have been automatically resampled to 10-year intervals by default, so the yield curve is actually a piecewise linear assemblage).\n", "* The MAI curve intersects the CAI curve at the optimal rotation age.\n", "\n", "This is not meant to be an exhaustive demonstration of `ws3` curve manipulation and usage. Go have a look at the source code to see what else you can do. The `Curve` class implementation is intended to help avoid needing to so low-level math and logic on curve datasets for most typical model-building use cases." ] }, { "cell_type": "code", "execution_count": 29, "id": "855b6693-e96c-43d0-a815-6ba222c6b0bf", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "(0.0, 300.0)" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsQAAAPHCAYAAAAvtl+ZAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAwvVJREFUeJzs3Xd4VGX+/vH3zCSZ1JkUUggkoQqE3kEUGwoKVtRVsSy6rgXXVXZdl111V90V1/19bWtfC7qKFQs2FBGxUJTQQXoJEJJAQjLpyZTfHxNCQpEEJnNmMvfruuaamTNnzvkMCXDnyXOej8nj8XgQEREREQlRZqMLEBERERExkgKxiIiIiIQ0BWIRERERCWkKxCIiIiIS0hSIRURERCSkKRCLiIiISEhTIBYRERGRkBZmdAGBwO12k5eXR1xcHCaTyehyREREROQQHo+HsrIy0tPTMZt9O6arQAzk5eWRkZFhdBkiIiIicgw7d+6kY8eOPj2mAjEQFxcHeP+AbTabwdWI+FBFBaSnex/n5UFMjLH1iIiIHCeHw0FGRkZDbvMlBWJomCZhs9kUiKVtsVgOPrbZFIhFRCTotcb0Vl1UJyIiIiIhTYFYREREREKaArGIiIiIhDQFYhEREREJaQrEIiIiIhLSFIhFREREJKQpEIuIiIhISFMgFhEREZGQpkAsIiIiIiFNnepERMRvPB4PNU43NXVuqp0uqutc1DjdVNe5qK47cN9om9NNzaHb6g55rX57Tf0+JpOJMLOJMEv9vdlMmMWE5cDjRq9ZzGbC618Lt5jr9zHV728m3GwiPMxMXGQYcZHh2Orv7VHe+7jIMKLCLa3SOUtE/EeBWEREAKhxuqiscVFe46Sy9sC9k4oaJxU1LiprnVTXualxNg6lrvptjcJsfdhtHHoP7F/jdBv9MX0uzGwiLjIMW5Q3IMdZw7FFHQjQ4U1es0WGYYsMJzYyjOiIMGKtYURbLcREhGExK1SLGEWBWESkjXC63OwprWZncSW79lfhqK5rCLKHhtzyGheVNfVht9a7T53L49d6zSaIDLcQGW7BGmZuch8ZbsYa5r2PDLcQWf/YGm4hMqz+/tD9wixYw814POB0u3G6PLjcHurcHlxuN3X1z51uD06Xu8ljp7t+X9fh+9Y4XZRVOymrrqOs2onjwH1VHW4PON0e9lfWsb+y7oT+PCLDzd6AHBFGjDWMmAgL0dYwYq2Wg+E5wtLwWozVu190hIVYa1jDn2XDn1n9n1WYRbMjRY5FgVhEJEh4PB5Kq+rILa4kt7iSncVV9ffe53klVTjdJx5qrWHmJiOXDcHrkLBlbQim5vrA2jTQHhpYrWFNQ2y4xRTUUw08Hg+Vta5GIbkOR1WjwNwoOB8I1I765wd+EKmocTZ8zbyj6LVArU/rDLeY6n9YaPp1iWr4Oh55e9Ovp6V++6FfVwtREd7gfWA/jXRLMFIgFhEJIDVOF7v31wfd/VXesFtUH4D3V1JW7fzF90dYzHRMiKJjYjQJ0eH1I4uWw34933SU0VI/0ujdphHF5jGZTA0/LKTZI4/rGB6Ph1qXm4oaV31IdjY8bhjJPzDCX9NoGkt9mD6wraLWedSpKXUuD3UuJ2U1v/y94ysHAnhkRNMflhr/IBRuMRMeZibC4p3DHWY5+DjcYibcYiYirP4184F9D77mfb3+tfrHTV6zeOeNH3gcXv96mDm4fwiT1qNALCJigIoaJ+vzHazLc7Buj4MteyvYVVzJHkc1nmMM8qbEWclMjCaj/paZGE1GQhSZSdGkxkVi1ghd0DCZTFjDvKO0iTERPjuu2+1pdGHiwaBc1Xied6PXqmobzQevOzjv+8D+jS9cbLK9/rVaAwN4SzUOy97A7L1w8sBzb2g+/H1H/Ft1hB2P9revucc8UmA/8n5HOt5Rzt7sczfvmEf7meJE33/4fk13rK0qb94bj4MCsYhIKyssq24IvmvzHPyc52BbUcVRg290hOVg4E2IJjPRG3YzEqLpmBBNVITFvx9Ago7ZbCIqwuK375UDAbxJUG5yUaX3ea3TTa3LO7+7zuWmzuV9Xuc8+Lzu0NdcHuqc9a+5Gz12ualttK/T5anf312/j/f5oWpdbmpdAC6//NmI77hrKlvt2ArEIiI+4nZ72F5U0RB8D4TgvWU1R9w/1WYlu72N3ul2uqfGNoTgpJgI/VpXgoq/A3hzeTwHL5ZsCMv1AbzW5cbpPvi4cbA+7DgcYdsRfqA94rYj1HSsfY52rCPt2ZxzHn2/Ezle865XOKHzHrKtoryM6x5v1mlbTIFYROQ4VNe52FhQ1iT4/rzHQWXt4aNOJhN0aRdD73Q72ek2stvbyE630S7WakDlIqHDZKpfc9oCUQRWWJeWczgcrXZsBWIRkWYoKq9h0dYifthcRM6OYrbsrcB1hBUdrGFmera30btR8O2ZFkd0hP65FREJVPoXWkTkCMprnPy4zRuAF24p4uc9h49MJESH0zvd7g2/6d4Q3CkpRqs0iIgEGQViERG8y50t21HCwi37+GHzPlbuKj1sBLhnWhwjuyYxsksSfTvaSbNFaq6viEgboEAsIiHJ5fawZncpP2zZx8LNRfy0vfiwtsKZidGM6pbEyK7tGNklieQ4zfkVEWmLFIhFJCR4PB42FZazcPM+fthSxOKtRYc1uWgXa2VUtyRGdW3HyK5JZCRGG1StiIj4kwKxiLRZpZV1fLEunx8272PhlqLDlj+LiwxjRJckRnVN4uRu7eieEqspECIiIUiBWETalOo6F/PXF/LB8t18s2Fvk4X5rWFmhnZK5OT6UeDe6TZdACciIgrEIhL83G4PS7YV8+Hy3Xy2Zk+TqRA90+I4OzuVk7u2Y1BWPNYwrUUqIiJNKRCLSNBan+/gg+W7mb0ijz2l1Q3b29sjuXBABy4amE7PNJuBFYqISDBQIBaRoLKntIqPVuTx4fLdrM8va9geFxnG+L7tuWhgB4Z1SsRs1lxgERFpHgViEQl4pVV1zFmzhw+X57F4W1FDf/sIi5kzeiZz8cAOnN4jhchwTYcQEZGWC5irSR5++GFMJhN33HFHw7bq6mqmTJlCUlISsbGxTJw4kYKCgibvy83NZfz48URHR5OSksJdd92F0+lERIJbjdPFF2vzufWNHIb+8yvunrWaRVu9YXhY50SmX9KXn/46huevGcK4Pu0VhkVE5LgFxAjxTz/9xPPPP0+/fv2abL/zzjv59NNPeffdd7Hb7dx2221ccskl/PDDDwC4XC7Gjx9PWloaCxcuZM+ePVx77bWEh4fz0EMPGfFRROQEuN0elu7Yz4crdvPpqj2UVtU1vHZSaiwXDezABf3T6Zig9YFFRMR3TB6Px3Ps3VpPeXk5gwYN4plnnuEf//gHAwYM4PHHH6e0tJTk5GRmzpzJpZdeCsD69evp1asXixYtYsSIEXz++edMmDCBvLw8UlNTAXjuuee4++672bt3LxEREUc8Z01NDTU1B9cjdTgcZGRkUFpais2mC3CkDamogNhY7+PycoiJMbaeo/B4PMzfUMg/Pv2ZrXsrGran2qzei+MGdKBX+zitESwiEsIcDgd2u71V8prhUyamTJnC+PHjGTNmTJPtOTk51NXVNdnes2dPMjMzWbRoEQCLFi2ib9++DWEYYOzYsTgcDtauXXvUc06fPh273d5wy8jI8PGnEpHm2lxYzq9f+YnrZyxl694KYq1hXDa4IzN/M5yFfz6Lv5zXi+x0m8KwiIi0GkOnTLz11lssW7aMn3766bDX8vPziYiIID4+vsn21NRU8vPzG/ZpHIYPvH7gtaOZNm0aU6dObXh+YIRYRPyntKqOJ77axGuLtuN0ewi3mLh+VGduO7MbcZHhRpcnIiIhxLBAvHPnTn7/+98zd+5cIiMj/Xpuq9WK1Wr16zlFxMvl9vDWT7n835cbKa6oBWBMrxT+Oj6bzu0Cc0qHiIi0bYYF4pycHAoLCxk0aFDDNpfLxbfffstTTz3FF198QW1tLSUlJU1GiQsKCkhLSwMgLS2NH3/8sclxD6xCcWAfEQkci7cWcf/H6/h5jwOAbimx3Dchm9EnJRtcmYiIhDLDAvFZZ53F6tWrm2ybPHkyPXv25O677yYjI4Pw8HDmzZvHxIkTAdiwYQO5ubmMHDkSgJEjR/LPf/6TwsJCUlJSAJg7dy42m43s7Gz/fiAROaqdxZU8/Pl6Pl29BwBbZBh3nn0SV4/IItxi+KUMIiIS4gwLxHFxcfTp06fJtpiYGJKSkhq233DDDUydOpXExERsNhu/+93vGDlyJCNGjADgnHPOITs7m2uuuYZHHnmE/Px87rnnHqZMmaIpESIBoLLWybPfbOGFb7dS43RjNsFVwzOZenYPEmOOvAqMiIiIvwXEOsRH89hjj2E2m5k4cSI1NTWMHTuWZ555puF1i8XCJ598wi233MLIkSOJiYnhuuuu44EHHjCwahHxeDzMXpnH9M/Wk++oBmBklyTuOz+bXu21tKGIiAQWw9chDgStua6diKEMWId41a4S7v94HTk79gPQMSGKe8b3YmzvNC2dJiIix60181pAjxCLSPAoLKvm33M28G7OLgCiIyxMOaMbN5zSWW2VRUQkoCkQi8gJqXG6eOWH7fxn3iYqal0AXDKwA38a15M0u3+XVBQRETkeCsQiclw8Hg9f/VzIPz5dx46iSgD6Z8Tzt/OzGZSZYHB1IiIizadALCItVlpVx93vrWLOWm9HyOQ4K38e15OLB3bAbNY8YRERCS4KxCLSIqt3lXLrzBx2FlcRbjFx46lduPWMbsRa9c+JiIgEJ/0PJiLN4vF4eGNJLg98vI5al5uOCVE8M2kQ/TrGG12aiIjICVEgFpFjKq9x8pf3VzN7ZR4AY3ql8n+X9cceHW5wZSIiIidOgVhEftGG/DJueSOHrXsrsJhN/HlcT35zametKSwiIm2GArGIHNV7Obu458PVVNe5SbNF8tRVAxnSKdHoskRERHxKgVhEDlNV6+Jvs9fwzlJvk41Tu7fj8V8NICnWanBlIiIivqdALCJNbN1bzq1vLGN9fhlmE9wx5iSmnNENi5ZTExGRNkqBWEQafLIqj7vfW0VFrYt2sRE8ecVATu7WzuiyREREWpUCsYhQ43Tx0Kc/8+qiHQAM65zIU1cOJMWm1ssiItL2KRCLhLidxZVMmbmMVbtKAbj19K5MPfskwixmgysTERHxDwVikRA2d10Bf3hnBY5qJ/HR4Tx2+QDO6JlidFkiIiJ+pUAsEoLqXG7+/cUGXvh2KwADM+N56qpBdIiPMrgyERER/1MgFgkxe0qr+N3M5SzdsR+A60d15s/n9iQiTFMkREQkNCkQi4SQbzfu5Y63V1BcUUucNYx/X9aPcX3aG12WiIiIoRSIRULEk/M28tiiPDwe6J1u45lJg8hKijG6LBEREcMpEIuEiGe/2YonIpKrhmdy34RsIsMtRpckIiISEBSIRULIvyb25VdDM40uQ0REJKDoKhqRNuy5RZ81PL79zG4KwyIiIkegQCzSRm0uLOPJr9c1PL/59K4GViMiIhK4FIhF2qCi8homz/gJT3Wfhm0mk8nAikRERAKXArFIG7PbUcBVr7zPzuIqMhLVaENERORYFIhF2pCK2gqGPHs2XxXdhCVyE89OGmx0SSIiIgFPgVikjXC6nYx4/kLyq1cDHu6fMIyuKbFGlyUiIhLwFIhF2gCPx8P5/5vMmuJ54AnnnhEzuHrIyUaXJSIiEhQUiEXagNs+uZc5218Hj4kruj7C/eMmGl2SiIhI0FAgFglyj/7wPM8s+ycAI5L+wOuTfm9wRSIiIsFFgVgkiJVW1fCP+c8D0Nl6JV/9djoWs5ZXExERaQm1bhYJUk6Xm9vfXEls+T3ExXzNdzf/ixir/kqLiIi0lP73FAlCZTVl/HvODhZs3EtMeDTvTP4nHeJjjC5LREQkKCkQiwSZfZX76Pv0MCpLB5Nguo7HfjWAvh3tRpclIiIStDSHWCSIVNZVctrL48iv3EaFZQG3nZXGuD5pRpclIiIS1BSIRYKE0+3k/DcuY11RDmZPLNed9Dx/OEud6ERERE6UArFIEPB4PPzmo1v5esdn4AnnjHb/j2d/dSEmk1aUEBEROVEKxCJB4MEF/+TVVf8Fj4k+kffw3vWTiQjTX18RERFf0P+oIgFuTcFa/rbgPgA6mG5h9m/+QHx0hMFViYiItB1aZUIkwH2xMox2tX/AZdnJe79+gM7ttLyaiIiILykQiwSw95ft4j9fbyaG0/n3xf0Y0SXJ6JJERETaHAVikQC0bf82Js26kfxtvwYSuOX0rlw2JMPoskRERNokBWKRALOvch9jXhvL1pJNRFnKuK7XM9x1Tg+jyxIREWmzdFGdSACprKtk/MwJbC3ZhMWdzCntpvHo5QMwm7W8moiISGtRIBYJEE63kytnXcmPu5dg9sTSK3w6r/96HFERFqNLExERadMUiEUCgMfj4Xef/Y7ZG2Zj8oSTXHsv/3fxeFJskUaXJiIi0uYpEIsEgCeXPMlzOc8BJtrV3sVFvc7inN5pRpclIiISEhSIRQLAxb0uJj2mOwm1vyU1fDR/v6C30SWJiIiEDEMD8bPPPku/fv2w2WzYbDZGjhzJ559/3vB6dXU1U6ZMISkpidjYWCZOnEhBQUGTY+Tm5jJ+/Hiio6NJSUnhrrvuwul0+vujiJyQME8yNse/sbnO50/n9iTNrqkSIiIi/mJoIO7YsSMPP/wwOTk5LF26lDPPPJMLL7yQtWvXAnDnnXfy8ccf8+6777JgwQLy8vK45JJLGt7vcrkYP348tbW1LFy4kFdffZUZM2Zw3333GfWRRJotJy+H939+H4/Hw30fraWqNozBWQlMGpZpdGkiIiIhxeTxeDxGF9FYYmIi//73v7n00ktJTk5m5syZXHrppQCsX7+eXr16sWjRIkaMGMHnn3/OhAkTyMvLIzU1FYDnnnuOu+++m7179xIREdGsczocDux2O6Wlpdhstlb7bCIHbN2/lZEvjWRvxV7+OuJF/jc/lXCLiU9vP5WTUuN8d6KKCoiN9T4uL4cYtX0WEZHg1Jp57YRGiKurq31VBy6Xi7feeouKigpGjhxJTk4OdXV1jBkzpmGfnj17kpmZyaJFiwBYtGgRffv2bQjDAGPHjsXhcDSMMh9JTU0NDoejyU3EX/ZV7mPc6+MorCikT0pfPvvJ2475ptFdfRuGRUREpFlaHIjdbjcPPvggHTp0IDY2lq1btwJw77338tJLL7W4gNWrVxMbG4vVauXmm2/mgw8+IDs7m/z8fCIiIoiPj2+yf2pqKvn5+QDk5+c3CcMHXj/w2tFMnz4du93ecMvIUEtc8Y/KukrOf/N8NhVvItOeyRntHqWoPIzO7WK47cxuRpcnIiISklociP/xj38wY8YMHnnkkSZTEvr06cOLL77Y4gJ69OjBihUrWLJkCbfccgvXXXcd69ata/FxWmLatGmUlpY23Hbu3Nmq5xOBg403Fu9aTEJkAv/v9Lf4KMf7W5Z/XtyHyHA14BARETFCiwPxa6+9xgsvvMCkSZOwWA7+B96/f3/Wr1/f4gIiIiLo1q0bgwcPZvr06fTv358nnniCtLQ0amtrKSkpabJ/QUEBaWne9VnT0tIOW3XiwPMD+xyJ1WptWNniwE2kNXk8Hm777DZmb5iN1WJl1uUf8sLXtQBcNrgjJ3dtZ3CFIiIioavFgXj37t1063b4r3bdbjd1dXUnXJDb7aampobBgwcTHh7OvHnzGl7bsGEDubm5jBw5EoCRI0eyevVqCgsLG/aZO3cuNpuN7OzsE65FxFc8eIgKi8KEiTcueYM1W9uzqbCcpJgI/nJeL6PLExERCWlhLX1DdnY23333HVlZWU22v/feewwcOLBFx5o2bRrnnnsumZmZlJWVMXPmTL755hu++OIL7HY7N9xwA1OnTiUxMRGbzcbvfvc7Ro4cyYgRIwA455xzyM7O5pprruGRRx4hPz+fe+65hylTpmC1Wlv60URajdlk5rFxj3Ft/2uxhXVn2hvfAXDf+dkkxDRvNRQRERFpHS0OxPfddx/XXXcdu3fvxu128/7777NhwwZee+01PvnkkxYdq7CwkGuvvZY9e/Zgt9vp168fX3zxBWeffTYAjz32GGazmYkTJ1JTU8PYsWN55plnGt5vsVj45JNPuOWWWxg5ciQxMTFcd911PPDAAy39WCKtYvme5WQnZ2MN8/6ANiBtAFe8sJhal5vRJyVzQf90gysUERGR41qH+LvvvuOBBx5g5cqVlJeXM2jQIO677z7OOeec1qix1WkdYmkNOXk5nDbjNIZ1GMaHV3yIzWrjnZ928qdZq4gMNzP3ztPISIxu3SK0DrGIiLQRrZnXWjxCDHDqqacyd+5cnxYi0pZs27+N8TPHU1FXgdlkJjIskr1lNfzzs58BmHr2Sa0fhkVERKRZjisQH1BeXo7b7W6yTSOsEur2Ve5j3BvjKKgooH9qf97/1ftEWCJ48JPllFbVkd3exvWjOhtdpoiIiNRr8SoT27ZtY/z48cTExGC320lISCAhIYH4+HgSEhJao0aRoHGg8cbGoo1k2jP5bNJn2Kw25m8oZPbKPMwmeHhiX8IsJ9QkUkRERHyoxSPEV199NR6Ph5dffpnU1FRMJlNr1CUSdA5tvDFn0hzS49KprHVyzwdrAJg8qjP9OsYbW6iIiIg00eJAvHLlSnJycujRo0dr1CMStDYVbWLB9gVYLVZmXzmbXsne9YUfm7uR3SVVdIiPYurZJxlcpYiIiByqxYF46NCh7Ny5U4FY5BC9knvx3eTv2F6ynVMyTwFgze5SXvp+GwD/uKgPMdYTmrYvIiIiraDF/zu/+OKL3HzzzezevZs+ffoQHh7e5PV+/fr5rDiRYFBeW05shHdps76pfemb2hcAp8vNn99fhdsDE/q154yeKUaWKSIiIkfR4kC8d+9etmzZwuTJkxu2mUwmPB4PJpMJl8vl0wJFAtkXm7/gmg+u4b3L32N01ugmr81YuJ01ux3YIsO473y1EhcREQlULQ7E119/PQMHDuTNN9/URXUS0nLycpj4zkQq6iqYsWJGk0C8s7iS//tyIwB/Oa8XKXGRRpUpIiIix9DiQLxjxw5mz55Nt27dWqMekaDQuPHGWZ3P4rkJzzW85vF4uOfDNVTVuRjWOZHLh2QYWKmIiIgcS4sXQz3zzDNZuXJla9QiEhSO1njjgI9X7WHBxr1EWMw8dHFfzGb9FkVERCSQtXiE+Pzzz+fOO+9k9erV9O3b97CL6i644AKfFScSaI7WeOOAkspaHvh4LQBTzuhGt5RYo0oVERGRZmpxIL755psBeOCBBw57TRfVSVv3yA+PHNZ4o7Hpn61nX3kt3VJiufn0LgZVKSIiIi3R4kDsdrtbow6RoDDtlGlsL9nObwb9pqHxxgGLthTx9tKdAEy/pC/WMIsRJYqIiEgLqUuASAtYw6zMuGjGYdur61z89YPVAFw1PJOhnRL9XJmIiIgcrxYH4iNNlWjsvvvuO+5iRALRjBUzWFO4hkfOfgSz6cjXoT4zfzNb91WQHGfl7nE9/VyhiIiInIgWB+IPPvigyfO6ujq2bdtGWFgYXbt2VSCWNmXO5jn8ZvZvcHlcDGo/iKv6XnXYPhsLynh2wRYA7r+gN/ao8MP2ERERkcDV4kC8fPnyw7Y5HA5+/etfc/HFF/ukKJFAkJOXw6XvXIrL42JS30lc0eeKI+734CfrqHN5GNMrhXP7pPm5ShERETlRLV6H+EhsNhv3338/9957ry8OJ2K4rfu3ct7M8xoab7x84ctHnC6xcmcJ323ah8Vs4r4JvdW5UUREJAj5JBADlJaWUlpa6qvDiRhmX+U+xr0+jsKKwiM23mjsmW82A3DhgHQyk6L9WaaIiIj4SIunTDz55JNNnns8Hvbs2cP//vc/zj33XJ8VJmIEt8fNhW9dyKbiTUdsvNHYpoIyvlhbgMkEt57e1c+VioiIiK+0OBA/9thjTZ6bzWaSk5O57rrrmDZtms8KEzGC2WTm98N/z9b9W4/YeKOxZ7/xXkg3NjuNbilx/ipRREREfKzFgXjbtm2tUYdIwLi89+VMOGkC0eFHnwKxs7iSj1bmAXDrGRodFhERCWY+m0MsEsxeXPYiuxy7Gp7/UhgGeP7bLbjcHk7t3o5+HeNbuToRERFpTc0aIb7kkkuafcD333//uIsRMcKMFTO48eMb6WjryMqbV5IY9ctd5god1byz1Buep5zRzR8lioiISCtqViC22+2tXYeIIQ403gCY1HfSMcMwwEvfb6PW6WZwVgLDO6tFs4iISLBrViB+5ZVXWrsOEb87tPHGQ2c9dMz3lFTW8vriHQBMOaOr1h0WERFpA1p8Ud0Be/fuZcOGDQD06NGD5ORknxUl0tqa23jjUK8u3EFFrYueaXGc0SPFD5WKiIhIa2vxRXUVFRVcf/31tG/fntGjRzN69GjS09O54YYbqKysbI0aRXyqJY03GquocfLKQu8qK1PO6KbRYRERkTaixYF46tSpLFiwgI8//piSkhJKSkr46KOPWLBgAX/4wx9ao0YRn6p11RIZFnnMxhuHevPHXEoq6+iUFM15fdu3cpUiIiLiLy2eMjFr1izee+89Tj/99IZt5513HlFRUVx++eU8++yzvqxPxOfS49L5bvJ37K3c+4uNNxqrcbp44dutANxyelcsZo0Oi4iItBUtHiGurKwkNTX1sO0pKSmaMiEBy+Px8NPunxqe2yPtdEts/pJps3J2U1hWQ3t7JBcP7NgaJYqIiIhBWhyIR44cyd/+9jeqq6sbtlVVVXH//fczcuRInxYn4isPffcQw14cxmOLHjv2zodwutw8t8DbpvnGU7sQEaZ+NiIiIm1Ji6dMPPHEE4wdO5aOHTvSv39/AFauXElkZCRffPGFzwsUOVEzVszgnvn3ABBuCW/x+z9dvYfc4koSYyK4YliGr8sTERERg7U4EPfp04dNmzbxxhtvsH79egCuvPJKJk2aRFRUlM8LFDkRjRtv3D3qbm4bdluL3u92e3hmvnd0+PpRnYiOOO6VCkVERCRAtfh/9+rqaqKjo7nxxhtbox4RnzmexhuHmre+kA0FZcRaw7hmZCffFykiIiKGa/FkyJSUFK677jrmzp2L2+1ujZpETtjxNt5ozOPx8NT8zQBcMzILe1TLp1uIiIhI4GtxIH711VeprKzkwgsvpEOHDtxxxx0sXbq0NWoTOW4frv+wxY03DrVoSxErd5ZgDTNz/ajOrVCliIiIBIIWT5m4+OKLufjiiykrK+O9997jzTffZMSIEXTp0oWrr76a++67rzXqFGmRqSOnYrPaOK/7ec1uvHGop7/xjg5fMTSD5DirL8sTERGRAGLyeDyeEz3IunXrmDRpEqtWrcLlcvmiLr9yOBzY7XZKS0ux2Y4vPInxnG4nTreTyLDIEz7W8tz9XPzMQsLMJr6563Q6JkT7oEIDVFRAbKz3cXk5xMQYW4+IiMhxas28dtwLqlZXV/POO+9w0UUXMWjQIIqLi7nrrrt8WZtIs3k8Hm777DbGvj6W/VX7T/h4z3zjXVniooEdgjcMi4iISLO0eMrEF198wcyZM/nwww8JCwvj0ksv5csvv2T06NGtUZ9Iszz03UM8n/M8Jkws2rWI87qfd9zH2pBfxtx1BZhMcPNpXX1YpYiIiASi45pDPGHCBF577TXOO+88wsN15b0Yq3HjjSfPffKEwjDAs/Vzh8/tk0a3lNgTrk9EREQCW4sDcUFBAXFxca1Ri0iLnWjjjUPlFlUye2UeALee3u2E6xMREZHA1+I5xArDEigaN964ut/Vx9V441DPfbsFtwdOOymZPh3sPqhSREREAt1xX1QnYiSX28U1H1xDRV0FY7qM4aULXmpx441DFTqqeW/pLgCmnKHRYRERkVChQCxByWK2MOvyWVzQ4wJmXT7ruBpvHOrF77dR63IztFMCwzon+qBKERERCQYtnkMsEih6Jffioys+8smxSipreX3xDgBu1eiwiIhISDF0hHj69OkMHTqUuLg4UlJSuOiii9iwYUOTfaqrq5kyZQpJSUnExsYyceJECgoKmuyTm5vL+PHjiY6OJiUlhbvuugun0+nPjyJ+4HQ7ufaDa5m3dZ7Pjz1j4XYqa11kt7dx+knJPj++iIiIBK5mjRBfcsklzT7g+++/3+x9FyxYwJQpUxg6dChOp5O//OUvnHPOOaxbt46Y+o5ad955J59++invvvsudrud2267jUsuuYQffvgBAJfLxfjx40lLS2PhwoXs2bOHa6+9lvDwcB566MQvspLA4PF4+N1nv+N/q/7HRxs+Yvvvt5MQleCTY5fXOHnlh+2Ad+6wyWTyyXFFREQkODQrENvtrXO1/Zw5c5o8nzFjBikpKeTk5DB69GhKS0t56aWXmDlzJmeeeSYAr7zyCr169WLx4sWMGDGCL7/8knXr1vHVV1+RmprKgAEDePDBB7n77rv5+9//TkTEic8tFeNN/346z+U8hwkTr1z4is/CMMCbS3IpraqjS7sYxvVJ89lxRUREJDg0KxC/8sorrV0HAKWlpQAkJnovaMrJyaGuro4xY8Y07NOzZ08yMzNZtGgRI0aMYNGiRfTt25fU1NSGfcaOHcstt9zC2rVrGThw4GHnqampoaampuG5w+ForY8kPjBjxQz++vVfAW/jjUt6Nf83FsdSXefiv99tBeDm07tiMWt0WEREJNQEzCoTbrebO+64g1GjRtGnTx8A8vPziYiIID4+vsm+qamp5OfnN+zTOAwfeP3Aa0cyffp07HZ7wy0jI8PHn0Z8xdeNNw41a9kuCstqSLdHctGADj49toiIiASH41pl4r333uOdd94hNzeX2traJq8tW7bsuAqZMmUKa9as4fvvvz+u97fEtGnTmDp1asNzh8OhUByA1u1d5/PGG405XW6eW7AFgN+O7kJEWMD8fCgiIiJ+1OIE8OSTTzJ58mRSU1NZvnw5w4YNIykpia1bt3LuueceVxG33XYbn3zyCfPnz6djx44N29PS0qitraWkpKTJ/gUFBaSlpTXsc+iqEweeH9jnUFarFZvN1uQmgadbYjcu7nWxzxpvHOqTVXvYWVxFUkwEvxqa6dNji4iISPBoccJ45plneOGFF/jPf/5DREQEf/rTn5g7dy633357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jwfcTrCEG12JiIiItECbGCHevXs3V199NUlJSURFRdG3b1+WLl1qdFmhydYezn8cxj1kdCX+9fMncH8CvHq+0ZWIiIhICwX9CPH+/fsZNWoUZ5xxBp9//jnJycls2rSJhIQEo0uTUGKJADxq3SwiIhKEgj4Q/+tf/yIjI4NXXnmlYVvnzp0NrEhCUufR8MdNoTlVREREJMgZFohrampYsmQJO3bsoLKykuTkZAYOHNjiMDt79mzGjh3LZZddxoIFC+jQoQO33norN9544y+eu6ampuG5w+E47s8hh8hd4p020K473PKD0dX4T3ik9yYiIiJBx++B+IcffuCJJ57g448/pq6uDrvdTlRUFMXFxdTU1NClSxd++9vfcvPNNxMXF3fM423dupVnn32WqVOn8pe//IWffvqJ22+/nYiICK677rojvmf69Oncf//9vv5oAuCuA1cNuGqNrkRERESkWUwej8fjr5NdcMEFLFu2jKuuuorzzz+fIUOGEBUV1fD61q1b+e6773jzzTdZuXIlr732GmefffYvHjMiIoIhQ4awcOHChm233347P/30E4sWLTrie440QpyRkUFpaSk2m+0EP2WIc9Z4l17DBPYORlfjP9UO+OlFb8vq0+4yupqDKiogNtb7uLwcYmKMrUdEROQ4ORwO7HZ7q+Q1v44Qjx8/nlmzZhEefuRlqbp06UKXLl247rrrWLduHXv27DnmMdu3b092dnaTbb169WLWrFlHfY/VasVqtbaseGmeMCvYOxpdhf/VVcK8+8FkhtF/BJPJ6IpERESkmfwaiG+66aZm75udnX1Y0D2SUaNGsWHDhibbNm7cSFZWVovrEzlu1jgYcLV3HrHHDSaL0RWJiIhIMwX9KhN33nknJ598Mg899BCXX345P/74Iy+88AIvvPCC0aWFpqItsOEziGsPfS81uhr/iYiBi542ugoRERE5Dn4PxAkJCZia8evk4uLiZh1v6NChfPDBB0ybNo0HHniAzp078/jjjzNp0qQTLVWOR+E6+PIeyBgeWoFYREREgpbfA/Hjjz/u82NOmDCBCRMm+Py4chxs6dDvV5DYxehKjOPxaA6xiIhIEPHrKhPN5XK5sFj8NwezNa9alBDy5EAoyYXfLoC0PkZX46VVJkREpI1ozbxm9unRTtDGjRu5++676dgxBFcpkODndoHbqfbNIiIi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/vDDD7r33ntVv359BQQEqG3bttq0aZPrfsMw9NxzzykqKkoBAQFKTEzUnj173JKlJvHxsuu1fh2UFB8rw5DGLNqumf/9zuxYAAAAHueCV5kIDAzUoEGDtG7dOm3fvl2jR4/W+PHjFR4erj/96U9VGu7HH3/U1VdfLR8fHy1dulS7du3SP/7xD9WrV8+1zYQJEzRx4kRNnTpVaWlpCgwMVM+ePVVYWFilWWoiu92ml/q00bDrmkqSXvr8G73xnz3nvNogAACAVVX60s2/paysTEuWLNHbb7+tTz/9tCpySZLGjBmjL7/8Uv/973/Peb9hGIqOjtbo0aP15JNPSpIcDociIiI0e/Zs9e/fv1JfpyZeuvlCGIahyav26tUvvpUkDbk2Ts/e0ko2m83kZHA7Lt0MAKgl3NnXLvnCHJLk5eWlPn36VGkZlqRPP/1UXbp00V133aXw8HB17NhRM2bMcN2fmZmprKwsJSYmusZCQkIUHx+v1NTU8+63qKhIubm5FW61mc1m04gbm+u521pLkmb8N1PPLt6hMidHigEAACp96eZBgwb97jY2m02zZs26pEC/9N1332nKlCkaNWqUnn32WW3cuFGPPfaYfH19lZycrKysLElSREREhcdFRES47juXlJQUvfDCC1WWs6YYdE2cgvy8NWbRNs3bcEAFRaX6R7/28vGqkt+LAAAAaqRKF+LZs2ercePG6tixY7Wdg+p0OtWlSxe9/PLLkqSOHTtqx44dmjp1qpKTky96v2PHjtWoUaNcn+fm5iomJuaS89YE/brGqI6fl0bO36pPvz6sU8VlmnRPR/n7sIweAACwpkoX4ocffljz5s1TZmamBg4cqHvvvVdhYWHuzKaoqCi1bt26wlirVq308ccfS5IiIyMlSdnZ2YqKinJtk52drQ4dOpx3v35+fvLz86v6wDXEbe2iVcfXSw9/sFn/+SZbg9/dqOn3dVGgX6X/dwAAAKg1Kv238smTJ+vIkSN6+umntWTJEsXExKhfv37697//7bYjxldffbUyMjIqjH377bdq3LixJCkuLk6RkZFasWKF6/7c3FylpaUpISHBLZlqixtbRmj2wG4K9PXSl3tP6L5ZaXKcLjE7FgAAQLW7oJNH/fz8NGDAAC1fvly7du3SlVdeqUceeURNmjRRfn5+lYd74okntH79er388svau3ev5s6d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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(3, 1, figsize=(8, 12), sharex=True)\n", "\n", "cvol = c\n", "ccai = c.cai()\n", "cmai = c.mai()\n", "cmaiytp = c.mai().ytp()\n", "x_cmai = cmaiytp.lookup(0) # optimal rotation age (i.e., culmination of MAI curve)\n", "labels = \"total volume\", \"MAI (and CAI)\", \"MAI YTP\"\n", "\n", "ax[0].plot(*zip(*c.points()))\n", "ax[0].plot([0, x_cmai], [0., cvol[x_cmai]], linestyle=\"--\", color=\"green\")\n", "\n", "ax[1].plot(*zip(*c.mai().points()))\n", "ax[1].plot(*zip(*c.cai().points()), linestyle=\":\")\n", "\n", "ax[2].plot(*zip(*c.mai().ytp().points()))\n", "ax[2].axhline(0, color=\"black\")\n", "\n", "for i in range(len(ax)):\n", " ax[i].set_ylabel(labels[i])\n", " ax[i].set_ylim(0, None)\n", " ax[i].axvline(x_cmai, color=\"red\")\n", "plt.xlim(0, 300)" ] }, { "cell_type": "markdown", "id": "89395e58-3954-440a-adb1-e14765d120f6", "metadata": {}, "source": [ "Note that when setting up a new `ForestModel` instance, you have to stash a copy of _all_ the yield curves you need, _including the curves for development types that are not present in the intial inventory_ (`ws3` grabs a copy of these when JIt-building new `DevelopmentType` objects on the fly, only if induced by applying an action to an development type and the specified transition induces a new development type). \n", "\n", "All of this gets automatically set up correctly if you use the built-in functions to import Woostock-style input files, but is your responsibility if you bypass and direct-code your model." ] }, { "cell_type": "code", "execution_count": 29, "id": "c2323544-b370-436c-8006-b390762accab", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "(49,\n", " (('?', '?', '2401000', '?', '2401000'),\n", " 'a',\n", " [('s0100', )]))" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(fm.yields), fm.yields[0]" ] }, { "cell_type": "markdown", "id": "b3094bd2-4a46-486f-99e9-67ff0b01e392", "metadata": {}, "source": [ "Have a look at the actions in the model." ] }, { "cell_type": "code", "execution_count": 30, "id": "71b9999c-49a4-47c2-a069-f649ae4c17f0", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'harvest': }" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fm.actions" ] }, { "cell_type": "code", "execution_count": 31, "id": "3a683e85-c28e-4fea-a0af-59b064cfc349", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[(('?', '?', '2402000', '?', '?'),\n", " {'': [(('?', '?', '?', '?', '2422000'),\n", " 1.0,\n", " None,\n", " None,\n", " None,\n", " None,\n", " None)]}),\n", " (('?', '?', '2403000', '?', '?'),\n", " {'': [(('?', '?', '?', '?', '2423000'),\n", " 1.0,\n", " None,\n", " None,\n", " None,\n", " None,\n", " None)]}),\n", " (('?', '?', '2403001', '?', '?'),\n", " {'': [(('?', '?', '?', '?', '2423001'),\n", " 1.0,\n", " None,\n", " None,\n", " None,\n", " None,\n", " None)]})]" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(fm.transitions[\"harvest\"].items())[:3]" ] }, { "cell_type": "code", "execution_count": 32, "id": "b3c9391f-cf41-45cc-b0ee-cd2f66dc3d3f", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "defaultdict(list, {'harvest': ['_age >= 80 and _age <= 500']})" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt.oper_expr" ] }, { "cell_type": "code", "execution_count": 33, "id": "fde6fb84-65ca-4133-bb5d-a994e07339e9", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'harvest': {1: (80, 500),\n", " 2: (80, 500),\n", " 3: (80, 500),\n", " 4: (80, 500),\n", " 5: (80, 500),\n", " 6: (80, 500),\n", " 7: (80, 500),\n", " 8: (80, 500),\n", " 9: (80, 500),\n", " 10: (80, 500)}}" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt.operability" ] }, { "cell_type": "code", "execution_count": 34, "id": "bb6e7ce8-7e80-4a05-9d9c-7583256682f6", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[(('harvest', 80),\n", " [(('?', '?', '?', '?', '2423002'), 1.0, None, None, None, None, None)]),\n", " (('harvest', 81),\n", " [(('?', '?', '?', '?', '2423002'), 1.0, None, None, None, None, None)]),\n", " (('harvest', 82),\n", " [(('?', '?', '?', '?', '2423002'), 1.0, None, None, None, None, None)])]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(dt.transitions.items())[:3]" ] }, { "cell_type": "code", "execution_count": 35, "id": "2a93cae4-96c5-4034-aec6-b1c8ba97fc43", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[(('harvest', 498),\n", " [(('?', '?', '?', '?', '2423002'), 1.0, None, None, None, None, None)]),\n", " (('harvest', 499),\n", " [(('?', '?', '?', '?', '2423002'), 1.0, None, None, None, None, None)]),\n", " (('harvest', 500),\n", " [(('?', '?', '?', '?', '2423002'), 1.0, None, None, None, None, None)])]" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(dt.transitions.items())[-3:]" ] }, { "cell_type": "code", "execution_count": 36, "id": "7f5b4801-63f7-4a73-b494-d3d2b3f999b4", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{('tsa24_clipped',\n", " '0',\n", " '2401000',\n", " '100',\n", " '2401000'): ,\n", " ('tsa24_clipped',\n", " '0',\n", " '2402005',\n", " '1201',\n", " '2402005'): ,\n", " ('tsa24_clipped',\n", " '1',\n", " '2401002',\n", " '204',\n", " '2401002'): ,\n", " ('tsa24_clipped',\n", " '1',\n", " '2401002',\n", " '204',\n", " '2421002'): ,\n", " ('tsa24_clipped',\n", " '1',\n", " '2402000',\n", " '100',\n", " '2402000'): ,\n", " ('tsa24_clipped',\n", " '1',\n", " '2402002',\n", " '204',\n", " '2402002'): ,\n", " ('tsa24_clipped',\n", " '1',\n", " '2403000',\n", " '100',\n", " '2403000'): ,\n", " ('tsa24_clipped',\n", " '1',\n", " '2403002',\n", " '204',\n", " '2403002'): ,\n", " ('tsa24_clipped',\n", " '1',\n", " '2403002',\n", " '204',\n", " '2423002'): }" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fm.dtypes" ] }, { "cell_type": "markdown", "id": "c476cdb8-9967-456f-b43b-4ec320bdcd49", "metadata": {}, "source": [ "Get a reference to one of the managed (i.e., THLB) `DevelopmentType` instances we now have in `fm` (specifically, the `DevelopmentType` with key `('tsa24_clipped', '1', '2403002', '204', '2423002')`. We do this by _unmasking_ the `DevelopmentType` list using a mask string in Woodstock format, where the `?` represents a wildcard. Refer to the `ws3` documentation for a more in-depth explanation of theme and masks and development types and such (this documentation is a WIP so this may not be clearly documented yet). " ] }, { "cell_type": "code", "execution_count": 37, "id": "5b60b1cb-f7c5-4410-9eba-0c5cfb66d51b", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "('tsa24_clipped', '1', '2403002', '204', '2423002')" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dtk = fm.unmask(\"? 1 ? ? ?\").pop()\n", "dtk" ] }, { "cell_type": "code", "execution_count": 38, "id": "90aee76f-10a4-4449-82b5-a84d394b317a", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "('tsa24_clipped', '1', '2403002', '204', '2423002')" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt = fm.dtypes[dtk]\n", "dt.key" ] }, { "cell_type": "markdown", "id": "3bca2dc2-70d9-4776-892f-89cb98522c78", "metadata": {}, "source": [ "Inspect the `_areas` private attribute of the `DevelopmentType` instance we grabbed. This data structure stores the _inventory_ for the parent `DevelopmentType` (i.e., area by period and ageclass). \n", "\n", "At this point in the modelling process, we have only defined the _initial inventory_ in period 0. The other periods get populated later when we initialize the period-1 inventory and simulated growth and actions (which we have not done yet)." ] }, { "cell_type": "code", "execution_count": 39, "id": "dbd47c7d-0a3f-408c-8531-c1ad02b4340a", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{0: defaultdict(float,\n", " {9: np.float64(59.81429119367274),\n", " 18: np.float64(32.366198551219505)}),\n", " 1: defaultdict(float, {}),\n", " 2: defaultdict(float, {}),\n", " 3: defaultdict(float, {}),\n", " 4: defaultdict(float, {}),\n", " 5: defaultdict(float, {}),\n", " 6: defaultdict(float, {}),\n", " 7: defaultdict(float, {}),\n", " 8: defaultdict(float, {}),\n", " 9: defaultdict(float, {}),\n", " 10: defaultdict(float, {})}" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt._areas" ] }, { "cell_type": "markdown", "id": "67b0959e-e106-44e8-a12b-713d2b6ef599", "metadata": {}, "source": [ "You can see that initial inventory for this `DevelopementType` contains 59.8 hectares in ageclass 9 and 32.4 hectares in ageclass 18). \n", "\n", "Below, we should how you can access this same information using the public interfaces built into the `DevelopmentType` and `ForestModel` classes." ] }, { "cell_type": "code", "execution_count": 40, "id": "71ebdf5a-9d8e-404b-8810-89c91f2226cc", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "np.float64(92.18048974489224)" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt.area(period=0) # total inventory area in period 0" ] }, { "cell_type": "code", "execution_count": 41, "id": "d78c3229-626c-4416-a395-e806c5daa381", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{9: np.float64(59.81429119367274), 18: np.float64(32.366198551219505)}" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "acd = fm.age_class_distribution(0, mask=dt.key, omit_null=True)\n", "acd" ] }, { "cell_type": "code", "execution_count": 42, "id": "b3388762-813c-4af8-96f2-dc67e8d6ffd3", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "9 59.81429119367274\n", "18 32.366198551219505\n" ] } ], "source": [ "for age in acd:\n", " print(age, dt.area(period=0, age=age)) # ageclass 9 inventory area in period 0" ] }, { "cell_type": "markdown", "id": "0ce5cd85-f309-415b-849f-f4fd5691fb63", "metadata": { "tags": [] }, "source": [ "## Implement a priority queue harvest scheduling heuristic\n", "\n", "Below we define a function that implements a old-stand-first priority queue harvest scheduling heuristic. To make this demo as n00b friends as possible, we set this up to be self-parametrising, i.e., the model automatically figures out an appropriate \"periodic harvest area target\" parameter value, by analysing the shape of its own yield curves to estimate a landscape-level optimal rotation age." ] }, { "cell_type": "code", "execution_count": 43, "id": "15b44ea1-55fa-4c68-a907-a2ca82c5c742", "metadata": { "tags": [] }, "outputs": [], "source": [ "def schedule_harvest_areacontrol(fm, period=None, acode=\"harvest\", util=0.85,\n", " target_masks=None, target_areas=None,\n", " target_scalefactors=None,\n", " mask_area_thresh=0.,\n", " verbose=0):\n", " if not target_areas:\n", " if not target_masks: # default to AU-wise THLB \n", " au_vals = []\n", " au_agg = []\n", " for au in fm.theme_basecodes(2):\n", " mask = \"? 1 %s ? ?\" % au\n", " masked_area = fm.inventory(0, mask=mask)\n", " if masked_area > mask_area_thresh:\n", " au_vals.append(au)\n", " else:\n", " au_agg.append(au)\n", " if verbose > 0:\n", " print(\"adding to au_agg\", mask, masked_area)\n", " if au_agg:\n", " fm._themes[2][\"areacontrol_au_agg\"] = au_agg\n", " if fm.inventory(0, mask=\"? ? areacontrol_au_agg ? ?\") > mask_area_thresh:\n", " au_vals.append(\"areacontrol_au_agg\")\n", " target_masks = [\"? 1 %s ? ?\" % au for au in au_vals]\n", " target_areas = []\n", " for i, mask in enumerate(target_masks): # compute area-weighted mean CMAI age for each masked DT set\n", " masked_area = fm.inventory(0, mask=mask, verbose=verbose)\n", " if not masked_area: continue\n", " r = sum((fm.dtypes[dtk].ycomp(\"totvol\").mai().ytp().lookup(0) * fm.dtypes[dtk].area(0)) for dtk in fm.unmask(mask))\n", " r /= masked_area\n", " asf = 1. if not target_scalefactors else target_scalefactors[i] \n", " ta = (1/r) * fm.period_length * masked_area * asf\n", " target_areas.append(ta)\n", " periods = fm.periods if not period else [period]\n", " for period in periods:\n", " for mask, target_area in zip(target_masks, target_areas):\n", " if verbose > 0:\n", " print(\"calling areaselector\", period, acode, target_area, mask)\n", " fm.areaselector.operate(period, acode, target_area, mask=mask, verbose=verbose)\n", " sch = fm.compile_schedule()\n", " return sch\n" ] }, { "cell_type": "markdown", "id": "bd26c6b4-2c0f-4d3c-b915-2afd6e9671fb", "metadata": {}, "source": [ "Define some helper functions to compile and plot scenario results." ] }, { "cell_type": "code", "execution_count": 44, "id": "4b76b658-b43c-43af-b884-36d5dd2297e8", "metadata": { "tags": [] }, "outputs": [], "source": [ "def compile_scenario(fm):\n", " oha = [fm.compile_product(period, \"1.\", acode=\"harvest\") for period in fm.periods]\n", " ohv = [fm.compile_product(period, \"totvol * 0.85\", acode=\"harvest\") for period in fm.periods]\n", " ogs = [fm.inventory(period, \"totvol\") for period in fm.periods]\n", " data = {\"period\":fm.periods,\n", " \"oha\":oha,\n", " \"ohv\":ohv,\n", " \"ogs\":ogs}\n", " df = pd.DataFrame(data)\n", " return df\n", "\n", "\n", "def plot_scenario(df):\n", " fig, ax = plt.subplots(1, 3, figsize=(12, 4))\n", " ax[0].bar(df.period, df.oha)\n", " ax[0].set_ylim(0, None)\n", " ax[0].set_title(\"Harvested area (ha)\")\n", " ax[1].bar(df.period, df.ohv)\n", " ax[1].set_ylim(0, None)\n", " ax[1].set_title(\"Harvested volume (m3)\")\n", " ax[2].bar(df.period, df.ogs)\n", " ax[2].set_ylim(0, None)\n", " ax[2].set_title(\"Growing Stock (m3)\")\n", " return fig, ax\n" ] }, { "cell_type": "code", "execution_count": 45, "id": "b1e30372-b8de-4498-89d0-25fdaa99e403", "metadata": { "tags": [] }, "outputs": [], "source": [ "fm.reset()" ] }, { "cell_type": "code", "execution_count": 46, "id": "f803e4ee-ef0e-4220-9242-939e26d12a2a", "metadata": { "tags": [] }, "outputs": [], "source": [ "sch = schedule_harvest_areacontrol(fm)" ] }, { "cell_type": "code", "execution_count": 47, "id": "a467f0a6-3052-4b53-8978-ea745e36740f", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "(
,\n", " array([,\n", " ,\n", " ], dtype=object))" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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ODs745NPPkFISIhkr+1OnTohKioK69evR5s2bfDDDz8gOjpafIQHAKZPn45JkyZh3LhxePvtt5Gbm4uYmBiYmJi84KdARCS/l3Ifba1WC5VKhZycHH6pJKLn8vg8MnPmTERFReGnn36S7J2tUqlgamoKAJg4cSL27t2LTZs2wdzcHJMmTQIAJCQkAACKiorQtm1b2NraIjw8HBqNBh9++CHGjBmDBQsWAHh0pahVq1bw9/fH6NGjcfDgQUyePBl79uwRVx3funUrRo4cia+//hodOnTAihUrsG3bNly5cqXEs9tPOy/Oj0T0PF7leeRVPjciqnjPMoe8lKuOExHJad26dQCA7t27S8o3btyIjz76CACwfPlyGBgYYNCgQcjPz4enpye++uorMdbQ0BC7d+/GxIkT4ebmBjMzM4wcORJz584VYxwcHLBnzx5MnToVK1euRMOGDfHtt9+KSTYAvP/++/jzzz8REhICjUaDtm3bIiYmplxJNhERERFVD7yiTUSvpVd1HnlVz4uIKs+rPI+8yudGRBXvWeYQPqNNREREREREJCMm2kREREREREQyYqJNREREREREJCMm2kREREREREQyYqJNREREREREJCNu70X0Emk8c4+s7d1Y6CVre0REVUXu+RHgHEmP8GcvET0PXtEmIiIiIiIiktEzJ9rx8fHo168fbG1toVAoEB0dLdYVFhZixowZcHJygpmZGWxtbTFixAjcuXNH0kZWVhZ8fX1hbm4OCwsL+Pn5ITc394VPhoiIiIiIiKiqPfOt43l5eWjTpg1Gjx6NgQMHSuru3buHM2fOYPbs2WjTpg3u3r2LKVOmoH///jh9+rQY5+vriz/++AOxsbEoLCzEqFGjMG7cOERFRb34GRHRC+NtckREREREz++ZE+3evXujd+/eeutUKhViY2MlZWvWrEGHDh2Qnp6ORo0a4fLly4iJicGpU6fg4uICAFi9ejX69OmDJUuWwNbW9jlOg4iIiIiIiKh6qPBntHNycqBQKGBhYQEASExMhIWFhZhkA4C7uzsMDAyQlJRU0cMhIiIiIiIiqlAVuur4gwcPMGPGDAwbNgzm5uYAAI1GAysrK+kgjIxgaWkJjUajt538/Hzk5+eLr7VabcUNmoiIiIiIiOgFVNgV7cLCQgwdOhSCIGDdunUv1FZYWBhUKpV42NnZyTRKIiIi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T35+PrRareQgIiIioqrFRJuIqAwajQYAYG1tLSm3trYW6zQaDaysrCT1RkZGsLS0lMToa+PxPkqL0dXrExYWBpVKJR52dnbPeopEREREJDMm2kREL7Hg4GDk5OSIx61bt6p6SERERESvPSbaRERlUKvVAICMjAxJeUZGhlinVquRmZkpqX/48CGysrIkMfraeLyP0mJ09foYGxvD3NxcchARERFR1WKiTURUBgcHB6jVasTFxYllWq0WSUlJcHNzAwC4ubkhOzsbycnJYszBgwdRXFwMV1dXMSY+Ph6FhYViTGxsLJo1a4Y6deqIMY/3o4vR9UNEREREL4cKSbRv376NDz74AHXr1oWpqSmcnJxw+vRpsb48e9ISEVWW3NxcpKSkICUlBcCjBdBSUlKQnp4OhUKBwMBAzJ8/H7t27cL58+cxYsQI2NrawtvbGwDQvHlz9OrVC2PHjsXJkydx/PhxBAQEwMfHB7a2tgCA4cOHQ6lUws/PDxcvXsTWrVuxcuVKBAUFieOYMmUKYmJisHTpUly5cgWhoaE4ffo0AgICKvsjISIiIqIXIHuifffuXXTu3Bk1atTA//73P1y6dAlLly4Vr9gA5duTloiospw+fRrt2rVDu3btAABBQUFo164dQkJCAADTp0/HpEmTMG7cOLz99tvIzc1FTEwMTExMxDYiIyPh6OiInj17ok+fPujSpYtkj2yVSoX9+/cjLS0Nzs7O+OSTTxASEiLZa7tTp06IiorC+vXr0aZNG/zwww+Ijo5Gq1atKumTICIiIiI5yL6P9qJFi2BnZ4eNGzeKZQ4ODuKfy7MnLRFRZerevTsEQSi1XqFQYO7cuZg7d26pMZaWloiKiiqzn9atW+Po0aNlxgwZMgRDhgwpe8BEREREVK3JfkV7165dcHFxwZAhQ2BlZYV27drhm2++EevLsyctERERERER0ctK9kT7t99+w7p169C0aVPs27cPEydOxOTJk7F582YA5duT9kn5+fnQarWSg4iIiIiIiKg6kv3W8eLiYri4uGDBggUAgHbt2uHChQuIiIjAyJEjn6vNsLAwzJkzR85hEhEREREREVUI2a9o29jYoEWLFpKy5s2bIz09HUD59qR9UnBwMHJycsTj1q1bcg+biIiIiIiISBayJ9qdO3dGamqqpOzXX3+Fvb09gPLtSfskY2NjmJubSw4i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IDExEU5OTpLVcT09PaHVanHx4kUx5vE2dDG6NvTJz8+HVquVHERERERUtZhoExGVg6urKzZt2oSYmBisW7cOaWlp6Nq1K/755x9oNBoolUpYWFhI3mNtbQ2NRgMA0Gg0Jbag0b1+WoxWq8X9+/f1jissLAwqlUo87Ozs5DhdIiIiInoBvHWciKgcevfuLf65devWcHV1hb29PbZt2wZTU9MqG1dwcDCCgoLE11qtlsk2ERERURXjFW0ioudgYWGBt956C9euXYNarUZBQQGys7MlMRkZGeIz3Wq1usQq5LrXT4sxNzcvNZk3NjaGubm55CAiIiKiqsVEm4joOeTm5uL69euwsbGBs7MzatSogbi4OLE+NTUV6enpcHNzAwC4ubnh/PnzyMzMFGNiY2Nhbm6OFi1aiDGPt6GL0bVBRERERC8HJtpEROXw6aef4siRI7hx4wYSEhLw3nvvwdDQEMOGDYNKpYKfnx+CgoJw6NAhJCcnY9SoUXBzc0PHjh0BAB4eHmjRogU+/PBD/PLLL9i3bx9mzZoFf39/GBsbAwAmTJiA3377DdOnT8eVK1fw1VdfYdu2bZg6dWpVnjoRERERPSM+o01EVA6///47hg0bhr///hv169dHly5dcOLECdSvXx8AsHz5chgYGGDQoEHIz8+Hp6cnvvrqK/H9hoaG2L17NyZOnAg3NzeYmZlh5MiRmDt3rhjj4OCAPXv2YOrUqVi5ciUaNmyIb7/9llt7EREREb1kmGgTEZXDli1byqw3MTHB2rVrsXbt2lJj7O3tsXfv3jLb6d69O86ePftcYyQiIiKi6oG3jhMRERERERHJiIk2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYyYaBMRERERERHJSPZEOywsDG+//TZq164NKysreHt7IzU1VRLz4MED+Pv7o27duqhVqxYGDRqEjIwMuYdCREREREREVOlkT7SPHDkCf39/nDhxArGxsSgsLISHhwfy8vLEmKlTp+Lnn3/G9u3bceTIEdy5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rOrhPLPk5GRkZmaiffv2MDIygpGREY4cOYJVq1bByMgIRUVFVT3EcrOxsUGLFi0kZc2bN0d6enoVjej5TZs2DTNnzoSPjw+cnJzw4YcfYurUqQgLC6vqob0QtVoNAMjIyJCUZ2RkiHX06uD8WH1wfqz+OD++Xl72+RHgHFkdcX6sOEy0K5EgCAgICMDOnTtx8OBBODg4VPWQnkvPnj1x/vx5pKSkiIeLiwt8fX2RkpICQ0PDqh5iuXXu3LnEFhm//vor7O3tq2hEz+/evXswMJD+lzY0NERxcXEVjUgeDg4OUKvViIuLE8u0Wi2SkpLg5uZWhSMjOXF+rH44P1Z/nB9fD6/K/AhwjqyOOD9WHN46Xon8/f0RFRWFn376CbVr1xafD1CpVDA1Na3i0ZVf7dq1SzwXZGZmhrp16750zwtNnToVnTp1woIFCzB06FCcPHkS69evx/r166t6aM+sX79++PLLL9GoUSO0bNkSZ8+exbJlyzB69OiqHtpT5ebm4tq1a+LrtLQ0pKSkwNLSEo0aNUJgYCDmz5+Ppk2bwsHBAbNnz4atrS28vb2rbtAkK86P1Q/nx+qB8yO9KvMjwDmyOuL8WIEqZW1zEgTh0bLz+o6NGzdW9dBe2Mu6NYMgCMLPP/8stGrVSjA2NhYcHR2F9evXV/WQnotWqxWmTJkiNGrUSDAxMRHeeOMN4fPPPxfy8/OremhPdejQIb3/N0aOHCkIwqMtGmbPni1YW1sLxsbGQs+ePYXU1NSqHTTJivNj9cT5sepxfqRXeX4UBM6RVY3zY8VRCIIgVHg2T0RERERERPSa4DPaRERERERERDJiok1EREREREQkIybaRERERERERDJiok1EREREREQkIybaRERERERERDJiok1EREREREQkIybaRERERERERDJiok1EREREREQkIybaRERERERERDJiok1EREREREQkIybaRERERERERDJiok1EREREREQko/8Hne5lbRdJ8noAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_scenario(compile_scenario(fm))" ] }, { "cell_type": "markdown", "id": "0b104cf8-75cd-4752-be4c-0c25e6c3a7ce", "metadata": {}, "source": [ "Not bad for a simplistic priority queue heuristic! Using the default `ws3.forest.GreedyAreaSelector` class to select harvest areas is definitely not the only way to simulate harvesting in `ws3`. \n", "\n", "You can always _manually prescribe_ any combination of treatments in any period, and `ws3` will its best to comply. By default `ws3` has several layers of fault protection turned on to avoid crashing with angry-looking error messages every time a user prescribes an invalid action. " ] }, { "cell_type": "markdown", "id": "2651a9c6-7f6e-412b-aab7-b000013936a5", "metadata": {}, "source": [ "## Implement some manually prescribed harvest actions" ] }, { "cell_type": "markdown", "id": "61902182-d363-4d64-afd1-09a7e95bf485", "metadata": {}, "source": [ "Below we reset the `fm` instance (which resets applied actions and inventory to starting positions), the manually prescribe a harvesting actions (using our sample `DevelopmentType` instance from earlier as the target, just as an example). " ] }, { "cell_type": "markdown", "id": "09fbbe86-62a4-4a32-9742-971c61ef9da4", "metadata": {}, "source": [ "First, we try to harvest 1.0 hectare of age 9 stands in period 1." ] }, { "cell_type": "code", "execution_count": 48, "id": "df1df4d4-1a38-4dcf-b606-c92b7c753015", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "not operable\n", "tsa24_clipped 1 2403002 204 2423002 harvest 1 9\n", "(80, 500)\n" ] }, { "data": { "text/plain": [ "(4, None, None)" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fm.reset()\n", "fm.apply_action(dtype_key=dt.key, \n", " acode=\"harvest\",\n", " period=1,\n", " age=9,\n", " area=1.0)" ] }, { "cell_type": "markdown", "id": "39a689ee-18cc-4b00-8368-d8a06087a785", "metadata": {}, "source": [ "No good. Not operable. Also not surprizing, given that we defined harvest operability window to start at age 40 for all development types.\n", "\n", "We can use the `operable_dtypes` method to find a suitable target for our harvesting action." ] }, { "cell_type": "code", "execution_count": 49, "id": "3d8b63b7-2f82-4521-95ad-c3cb8bf04d99", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{('tsa24_clipped', '1', '2401002', '204', '2401002'): [135,\n", " 105,\n", " 155,\n", " 80,\n", " 113,\n", " 145,\n", " 115,\n", " 85,\n", " 125,\n", " 153,\n", " 91,\n", " 93,\n", " 95],\n", " ('tsa24_clipped', '1', '2402000', '100', '2402000'): [165],\n", " ('tsa24_clipped', '1', '2402002', '204', '2402002'): [115, 93, 95],\n", " ('tsa24_clipped', '1', '2403000', '100', '2403000'): [93]}" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fm.operable_dtypes(acode=\"harvest\", period=1)" ] }, { "cell_type": "code", "execution_count": 50, "id": "b708c948-b7a4-493f-b475-23ef5b04b849", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fm.operable_area(acode=\"harvest\", period=5, age=40)" ] }, { "cell_type": "markdown", "id": "863f782f-d1ef-47cb-b11f-99745b7c670b", "metadata": {}, "source": [ "How much area is operable for development type `('tsa24_clipped', '1', '2401002', '204', '2401002')` age 135 in period 1?" ] }, { "cell_type": "code", "execution_count": 51, "id": "61241bcf-e820-4b11-8d09-d04f823d093f", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "np.float64(72.24421919373785)" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fm.operable_area(acode=\"harvest\", period=1, age=135)" ] }, { "cell_type": "markdown", "id": "a7f2a2d6-3ab6-48b1-aca7-515042194a90", "metadata": {}, "source": [ "Harvest 50 ha of that." ] }, { "cell_type": "code", "execution_count": 52, "id": "2dd7355a-c9d0-4860-a2df-72cdb28646aa", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "(0, 0.0, [[('tsa24_clipped', '1', '2401002', '204', '2421002'), 1.0, 0]])" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fm.apply_action(dtype_key=(\"tsa24_clipped\", \"1\", \"2401002\", \"204\", \"2401002\"),\n", " acode=\"harvest\",\n", " period=1,\n", " age=135,\n", " area=50.,\n", " compile_c_ycomps=True)" ] }, { "cell_type": "markdown", "id": "4900adf7-4181-4572-8019-468cf6d58f24", "metadata": {}, "source": [ "Note that the way we set this model up, the actionned area transitions to develoment type `('tsa24_clipped', '1', '2401002', '204', '2421002')`, which corresponds to second-growth yield curve (as opposed to the first-growth yield curve the area was originally tracking along). We will look for this second-growth development type key below and try to harvest it a second time." ] }, { "cell_type": "markdown", "id": "03b05e83-05a4-433e-9f56-6a3b0a072e4a", "metadata": {}, "source": [ "Commit the action. Just roll with it. Normally `ws3` takes care of committing actions at appropriate moments, but you have to do this yourself when running in fully manual mode (like we are doing now)." ] }, { "cell_type": "code", "execution_count": 53, "id": "205dde37-b916-433f-b999-ace0c76eb531", "metadata": { "tags": [] }, "outputs": [], "source": [ "fm.commit_actions(period=1)" ] }, { "cell_type": "markdown", "id": "2190a0c8-9bb5-4001-aebc-4375be70b7d1", "metadata": {}, "source": [ "Check the new operable area." ] }, { "cell_type": "code", "execution_count": 54, "id": "2f7dadd0-ff66-4e59-9e05-cd7ab7058caa", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "np.float64(22.244219193737848)" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fm.operable_area(acode=\"harvest\", period=1, age=135)" ] }, { "cell_type": "markdown", "id": "93ca99ed-8b1f-4882-8f65-d11f8ceba828", "metadata": {}, "source": [ "22.2 operable ha left. Makes sense." ] }, { "cell_type": "markdown", "id": "f60bdcbd-2e1a-479b-837b-93d7bdf27b88", "metadata": {}, "source": [ "So, we know that our previously harvested area transitions to development type `('tsa24_clipped', '1', '2401002', '204', '2421002')`. \n", "\n", "We can query the development type object about its period-wise operability." ] }, { "cell_type": "code", "execution_count": 55, "id": "96a0508c-2c15-43be-9c19-e4595dead201", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'harvest': {1: (80, 500),\n", " 2: (80, 500),\n", " 3: (80, 500),\n", " 4: (80, 500),\n", " 5: (80, 500),\n", " 6: (80, 500),\n", " 7: (80, 500),\n", " 8: (80, 500),\n", " 9: (80, 500),\n", " 10: (80, 500)}}" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dtk = (\"tsa24_clipped\", \"1\", \"2401002\", \"204\", \"2421002\")\n", "dt = fm.dtypes[dtk]\n", "dt.operability" ] }, { "cell_type": "markdown", "id": "2a09cf9c-8c87-4b8a-a3db-5399a6a8476d", "metadata": {}, "source": [ "We can see that it become operable at age 80.\n", "\n", "If we inspect the private `_areas` attribute of the develoment type, we can see that there is 0.42 ha of age-20 area in the initial inventory, and a new 50.0 ha that gets created from our harvest action (which is" ] }, { "cell_type": "code", "execution_count": 56, "id": "349e2792-2296-42af-b5b2-9414d1355d38", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{0: defaultdict(float, {20: np.float64(0.422054121206099)}),\n", " 1: defaultdict(float, {20: np.float64(0.422054121206099), 0: 50.0}),\n", " 2: defaultdict(float, {30: np.float64(0.422054121206099), 10: 50.0}),\n", " 3: defaultdict(float, {40: np.float64(0.422054121206099), 20: 50.0}),\n", " 4: defaultdict(float, {50: np.float64(0.422054121206099), 30: 50.0}),\n", " 5: defaultdict(float, {60: np.float64(0.422054121206099), 40: 50.0}),\n", " 6: defaultdict(float, {70: np.float64(0.422054121206099), 50: 50.0}),\n", " 7: defaultdict(float, {80: np.float64(0.422054121206099), 60: 50.0}),\n", " 8: defaultdict(float, {90: np.float64(0.422054121206099), 70: 50.0}),\n", " 9: defaultdict(float, {100: np.float64(0.422054121206099), 80: 50.0}),\n", " 10: defaultdict(float, {110: np.float64(0.422054121206099), 90: 50.0})}" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt._areas" ] }, { "cell_type": "markdown", "id": "241a1788-f956-4e8d-84b8-beeec9b38c89", "metadata": {}, "source": [ "We can use the `operable_ages` method to find the first period in which it become operable." ] }, { "cell_type": "code", "execution_count": 57, "id": "151e65bb-11e2-4ad5-8af5-6a65b9ff3867", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "period: 1 operable ages: [] operable area: 0.0\n", "period: 2 operable ages: [] operable area: 0.0\n", "period: 3 operable ages: [] operable area: 0.0\n", "period: 4 operable ages: [] operable area: 0.0\n", "period: 5 operable ages: [] operable area: 0.0\n", "period: 6 operable ages: [] operable area: 0.0\n", "period: 7 operable ages: [80] operable area: 0.422054121206099\n", "period: 8 operable ages: [90] operable area: 0.422054121206099\n", "period: 9 operable ages: [80, 100] operable area: 50.4220541212061\n", "period: 10 operable ages: [90, 110] operable area: 50.4220541212061\n" ] } ], "source": [ "for p in fm.periods: \n", " print(\"period:\", p,\n", " \"operable ages:\", dt.operable_ages(\"harvest\", p),\n", " \"operable area:\", dt.operable_area(\"harvest\", p))" ] }, { "cell_type": "markdown", "id": "d9a67c00-eb46-4562-97b4-063e3f67d09c", "metadata": {}, "source": [ "So, the 50 ha of area we previously harvested does not become operable again until period 9." ] }, { "cell_type": "markdown", "id": "da09ea29-59e0-423a-b073-b7bfb14c0391", "metadata": {}, "source": [ "Try to harvest the same area (now tracking along a second-growth yield curve) a second time." ] }, { "cell_type": "code", "execution_count": 58, "id": "204bb45e-9c58-4437-b9b1-ef7e82cfec14", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "(0, 0.0, [[('tsa24_clipped', '1', '2401002', '204', '2421002'), 1.0, 0]])" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fm.apply_action(dtype_key=dtk, \n", " acode=\"harvest\",\n", " period=9,\n", " age=80,\n", " area=50.,\n", " compile_c_ycomps=True)" ] }, { "cell_type": "code", "execution_count": 59, "id": "5bfcedc5-332e-4c4e-a352-9ad5cecb5f00", "metadata": { "tags": [] }, "outputs": [], "source": [ "fm.commit_actions(period=9)" ] }, { "cell_type": "markdown", "id": "53cc0bdf-db3e-495a-9581-5611bebac0ba", "metadata": {}, "source": [ "Plot results." ] }, { "cell_type": "code", "execution_count": 60, "id": "9cce5ad3-c8a7-4d49-b3dc-3f6b73a5a73c", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "(
,\n", " array([,\n", " ,\n", " ], dtype=object))" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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JUlKT0+3KA8ICJC7uzvjK26KyZMnKysrS3Pnzs2XQEuSvb29XnrpJdWoUcMse+6551S+fHkdPnxYjz76qCpUqKDevXtLupRM/+tf/1KNGjXk6OioevXq6f3337f4GejevbuaNWtmcZ4uXbrIxsbGYkzbtm2bbGxs9N1330kqeE503nSe/fv3q23btipbtqyqVaumyZMn57uWX3/9VY899pjKlSsnDw8PDR8+XKtXr7ZqnvXhw4fVoEGDfAm0dOk7UB4bGxtlZWXp888/N8fx5557zqzftWuXOnXqJBcXF5UvX17t27dXQkJCvjbT09M1fPhw1apVS46Ojqpevbr69Omjv/7666p9zM7OVufOneXq6qqtW7cWej1Lly5Vu3bt8q1Zkfd/4oYNG8z/Exs1amR+PkuWLFGjRo3k5OSkgIAA7dq1q9DzSFLZsmVVpUqVfGObJD3yyCPavHmzTp48ec127gbciS4hGRkZBf5wnT9/Pl/ZnDlz1KBBAz322GOyt7fXsmXL9OKLLyo3N1fh4eEWscnJyerVq5deeOEFPf/886pXr5569OihcePGKTU1VV5eXmbs5s2bdfz4cfXs2dMse+GFFzRv3jz169dPL730ko4cOaJZs2Zp165d2rJli8qUKaMTJ06oQ4cOqlKlil599VW5ubnp6NGjWrJkiSSpSpUqmjNnjoYMGaLHH39c3bt3lyQ1btxY0qUvjXl3XV999VWVK1dOixYtUrdu3fTVV1/p8ccflySlpqaqbdu2unDhghn30UcfWX3XKTY2Vr/88ov69esnLy8v7du3Tx999JH27dunhISEfIPRk08+qbp16+qdd94x/wN5++239frrr+upp57SwIED9eeff+qDDz5Q69attWvXLnOAXrx4sf755x8NGTJElSpV0vbt2/XBBx/ot99+0+LFiwvtZ2JionJycvL9J3X539OSJUv04osvqkKFCpo5c6bCwsKUkpKiSpUqSbr0uOHWrVvVs2dPVa9eXUePHtWcOXPUpk0b7d+/X2XLlrVoMyAgoNQ/voTbG2PczR3jnnrqKY0cOVKLFi3SiBEjLOoWLVqkDh06qGLFipJkXu/999+viRMnKi0tTTNmzNCWLVssxrHi0KNHD9WvX1+TJk3SihUr9NZbb8nd3V0ffvih2rVrp3fffVfz58/XK6+8ovvvv9981DM3N1eP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M2TIEIvXK1eulJ2dnV566SWL8n/9618yDMN8LPu+++5T+fLltWnTJkmX7jjnPa78ww8/6J9//pFhGNq8ebNatWp1zesoX768nnnmGfO1g4ODHnjgAYufu1WrVqlatWrmXW7p0sJ91m5f98gjjyg+Pl6PPfaYfvzxR02ePFkhISGqVq1agdNqrnTx4kWtWbNG3bp10z333GOWV61aVU8//bQ2b95s/n189dVXatKkifmE0eWufOIxIyNDHTp00IEDB7RhwwY1bdr0mn251ndEf39/BQUFma/z7pC3a9dONWvWzFde0Pg2adIkrVmzRp9++qlatGihnJwcXbhwIV8c3x0t8Th3CXnggQfUvHnzfOUVK1bM949zy5YteuONNxQfH5/vP+WMjAy5urqar319fQs8X48ePfTaa6/p999/V7Vq1bRhwwadOHFCPXr0MGMOHjyojIwMi/kil8tbjOHhhx9WWFiYxo8fr2nTpqlNmzbq1q2bnn76aTk6OhZ63YcOHZJhGHr99df1+uuvX/U81apV06+//lrgI0v16tUr9Bx5Tp48qfHjx2vBggX5FpK48ou5lP+zO3jwoAzDUN26dQtsv0yZMuafU1JSNHbsWH377bf55lYWdK6CGFeZh3f5IJinYsWKFuc5e/asJk6cqLlz5+r333+3aKug8+fV3+57wqL0Yoy7+WPck08+qcjISC1cuFCvvfaaDMPQ4sWLzTl8ksw50wW16efnV+CiWTfiyvHK1dVVTk5O+R5pdHV1tVif4uDBg/rpp5/MueZXsmYxoKuNoVfrlySLuaN55VeO4ZLk4uJizrfu2rWrYmJi1LVrV/3www9q0qRJgf1gfEVxqlChgiQV+MubvB030tLSLBLUPPb29qpevbpF2a+//ipvb2+z3Tz169c366VLv1wKCgrS999/L+lSEt2qVSu1bNlSFy9eVEJCgjw9PXXy5Emrkujq1avn+9moWLGixdZcv/76q2rXrp0vrigr799///1asmSJcnJy9OOPP+rrr7/WtGnT9MQTTygpKUn+/v5Xfe+ff/6pf/75p8Bxs379+srNzdWxY8fUoEEDHT58WGFhYVb1adiwYTp37px27dqlBg0aWH0tkvXfEQsb2yQVOL5dnsw/88wzatasmZ577rl8+1oztlkiiS7lDh8+rPbt28vPz09Tp05VjRo15ODgoJUrV2ratGn5FqC52ly6Hj16aPTo0Vq8eLGGDRumRYsWydXV1WLlvdzcXHl4eGj+/PkFtpH35SZvw/iEhAQtW7ZMq1evVv/+/TVlyhQlJCQUus9xXn9feeWVfHeT8hTX9iRPPfWUtm7dqhEjRqhp06YqX768cnNz821LkufKzy43N9dcJMPOzi5ffN51Xrx4UY888ohOnjypUaNGyc/PT+XKldPvv/+u55577pqLBOXNaz516lS+/+QkFXhuyXJAHTp0qObOnathw4YpKChIrq6usrGxUc+ePQs8f94gWtBcHeBWYoy7ft7e3mrVqpUWLVqk1157TQkJCUpJSdG7775bLO1f7YvSxYsXr/qegsYra8aw3NxcNWrUSFOnTi0w9sovhFeqVKlSgV8Or9WHgsoLS8bzdO/eXc8++6wWLFiQL4k+deqUypYty6rxKFaurq6qWrWq9u7dm68u75dxBS0mKkmOjo7XXLG7MC1btjT3CP7+++/173//W25ubmrYsKG+//57eXp6SpJVSbQ140FxcnBw0P3336/7779f9957r/r166fFixfrjTfeuCnnK0zXrl21YMECTZo0SV988YVVfyeXf0csSFHGNunan7ODg4Mee+wxTZo0SWfPnrUYx/juaIkkupRbtmyZsrOz9e2331r8tsnaxRXy+Pr66oEHHtDChQsVERGhJUuWqFu3bhZ3VWrXrq21a9fqoYcesuo//xYtWqhFixZ6++23FRMTo969e2vBggUaOHDgVb985T0WU6ZMmUJXo5YuLQxx8ODBfOXJycnX7NupU6cUFxen8ePHa+zYsWZ5Qe1dTe3atWUYhnx9fXXvvfdeNW7Pnj36+eef9fnnn1ssRhMbG2vVefz8/CRJR44cUaNGjazu3+W+/PJL9e3b12LF23PnzhW4umLeuSpXrnzVuz7ArcIYd31jXJ4ePXroxRdfVHJyshYuXKiyZcuqS5cuFufIa/PKLZeSk5OvuhCX9P8f3btyHLkZe9DWrl1bP/74o9q3b39ddzn8/Pz01VdfFXu/riY7O1u5ubkFPulz5MgR824eUJxCQ0P1ySefaPv27QUualcUPj4+Wrt2rU6fPm1xN/rAgQNmfZ5WrVopJydH//vf//T777+byXLr1q3NJPree+81k+kb5ePjo/3798swDIvx4NChQzfUbt7TUX/88YdZVtB4U6VK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huIA7h6GYej06dPy9vaWre2d9btCxkgAN4LxEQAKVpTxsdQl0cePH1eNGjVKuhsA7gDHjh1T9erVS7obxYoxEkBxYHwEgIJZMz6WuiS6QoUKki513sXFpYR7A+B2lJmZqRo1apjjyZ2EMRKAtaZMmaJly5bp4MGDcnJyUmBgoEaMGKE2bdqYY0mbNm20ceNGi/e98MILio6ONl+npKRoyJAhWr9+vcqXL6++fftq4sSJsrf//18jN2zYoMjISO3bt081atTQmDFj9Nxzz1m0GxUVpffee0+pqalq0qSJPvjgAz3wwANm/blz5/Svf/1LCxYsUHZ2tkJCQjR79mx5enpadb2MjwBuRFG+P5a6JDrv8RsXFxcGQAA35E58nI8xEoC1tm3bppdeekn333+/Lly4oNdee03PPvusJMvx8fnnn9eECRPM12XLljX/fPHiRYWGhsrLy0tbt27VH3/8oT59+qhMmTJ65513JElHjhxRaGioBg8erPnz5ysuLk4DBw5U1apVFRISIklauHChIiMjFR0drcDAQE2fPl0hISFKTk6Wh4eHJGn48OFasWKFFi9eLFdXV0VERKh79+7asmWLVdfL+AigOFjz/bHUbXGVmZkpV1dXZWRkMAACuC538jhyJ18bgJvrzz//NBPWvDGkTZs2atq0qaZPn17ge7777jt17txZx48fN+8IR0dHa9SoUfrzzz/l4OCgUaNGacWKFdq7d6/5vp49eyo9PV2rVq2SJAUGBur+++/XrFmzJF2av1yjRg0NHTpUr776qjIyMlSlShXFxMToiSeekCQdOHBA9evXV3x8vFq0aHHN62N8BHAjijKG3FkrSgAAAKBAGRkZBZbPnz9flStXVsOGDTV69Gj9888/Zl18fLwaNWpk8Uh1SEiIMjMztW/fPjMmODjYos2QkBDFx8dLknJycpSYmGgRY2trq+DgYDMmMTFR58+ft4jx8/NTzZo1zRgAKC1K3ePcAAAAKF65ubkaNmyYWrRooYSEBLP86aeflo+Pj7y9vbV7926NGjVKycnJWrJkiSQpNTU135zkvNepqamFxmRmZurs2bM6deqULl68WGDMgQMHzDYcHBzk5uaWLybvPFfKzs5Wdna2+TozM9PajwMAbghJNAAAwB0uPDxce/fu1XfffSd/f3+zfNCgQeafGzVqpKpVq6p9+/Y6fPiw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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_scenario(compile_scenario(fm))" ] }, { "cell_type": "markdown", "id": "4120fade-d91c-4214-83bc-c71b0aafd0de", "metadata": {}, "source": [ "Note that you would rarely (if ever) need to be poking around the guts of your `ws3` model in this way just to schedule some harvesting treatments. The point of the stuff above is to help you understand some of the basic action scheduling and action operability functions (and where the bit live in the `ws3` data model), which in turn are the building blocks of all the higher-level scheduling functions in ws3. \n", "\n", "If you like, take some time now to go have a closer look at the source code for the `GreedyAreaSelector` class in (defined in the `ws3.forest` module). If you look closely, you will see that it is basically just combining all the bit we used in our random-seeming example above (i.e., `operable_dtypes`, `operable_area`, `apply_action`, `commit_actions`), glued together with some `while` loops and `if` conditions and other stuff. Neat, right? \n", "\n", "If you wanted to, you could write your own `AreaSelector` class that uses different logic to select and operate on area in your model (as long as your class has an `__init__` method that sets a `parent` attribute that points back to your `ForestModel` instance and an `operate` method with appropriate args, it should work). You can monkey-patch the `ForestModel.areaselector` attribute at runtime to change the default behaviour of your model as well (several of the fault-recovery functions in the `ForestModel` class use the `areaselector` to find operable area when the things go a bit pear-shaped and you have set up the model to do its best to find operable area and keep going when part of the prescribed action schedule is infeasible). See `ForestModel.repair_actions`, `ForestModel.commit_actions`, `ForestModel.apply_action`, and `ForestModel.apply_schedule` for examples of where the `areaselector` gets used to smooth over bumps in the road." ] }, { "cell_type": "markdown", "id": "19755940-60e6-46d2-ac78-d97f38644741", "metadata": {}, "source": [ "## Implement optimization-based action scheduling\n", "\n", "`ws3` also includes functions to automate the process of formulating and solving linear programming (LP) optimization problems to schedule actions in your model. Using an optimization approach, you formulate your forest-level management problem in terms of an _objective function_ and _constraints_.\n", "\n", "`ws3` currently includes functions to formulate and solve Model I type optimization problems, as first documented in Johson and Scheurman (1977).\n", "\n", ">Johnson, K.N. and H.L. Scheurman (1977). “Techniques for prescribing optimal\n", "timber harvest and investment under different objectives—discussion and\n", "synthesis”. In: Forest Science Monograph 23.suppl_1.\n", "\n" ] }, { "cell_type": "markdown", "id": "22273eb0-2152-4450-9b7d-587c95ec165f", "metadata": {}, "source": [ "The optimization problem can be formulated as follows\n", "\n", "$$\n", "\\begin{align}\n", " \\text{max} \\quad & \\sum_{i\\in I}\\sum_{j \\in J_{i}}c_{ij}x_{ij} & \\\\\n", " \\text{s.t.} \\quad & \\nonumber\\\\\n", " &(1-\\varepsilon_{p})y_p \\leq \\sum_{i\\in I}\\sum_{j\\in J_{i}}\\mu_{ijpt}x_{ij} \\leq (1+\\varepsilon_{p})y_p, & \\forall p\\in O', t\\in T'_p \\\\\n", " &v^{-}_{ot}\\leq\\sum_{i\\in Z}\\sum_{j\\in J_{i}}\\mu_{ijot}x_{ij} \\leq v^{+}_{ot}, & \\forall o\\in O, t\\in T \\\\\n", " &\\sum_{j\\in J_{i}}x_{ij} = 1, \\forall i\\in Z \\\\\n", " &0 \\leq x_{ij} \\leq 1, & \\forall i \\in Z, j \\in J_{i}\n", "\\end{align}\n", "$$\n", "\n", "where\n", "\n", "$$\n", "\\begin{align*}\n", " I := & \\,\\, \\text{set of spatial zones}\\\\\n", " J_{i} := & \\,\\, \\text{set of available prescriptions for zone $i \\in I$}\\\\\n", " O := & \\,\\, \\text{set of forest outputs}\\\\\n", " O' \\subseteq O := & \\,\\, \\text{set of targeted forest outputs}\\\\\n", " T := & \\,\\, \\text{set of time periods in the planning horizon}\\\\\n", " T'_p \\subseteq O := & \\,\\, \\text{subset of $T$ on which even-flow constraints for output $p \\in O^{\\prime}$ are applied}\\\\\n", " \\varepsilon_{p} := & \\,\\, \\text{admissible level of variation on yield of targeted output $p \\in O^{\\prime}$} \\\\\n", " \\mu_{ijot} := & \\,\\, \\text{quantity of output $o \\in O$ produced in period $t \\in T$ by prescription $j \\in J_{i}$}\\\\\n", " & \\,\\, \\text{in zone $i \\in I$}\\\\\n", " \\mu_{ijpt} := & \\,\\, \\text{quantity of output $p \\in O'$ produced in period $t \\in T$ by prescription $j \\in J_{i}$}\\\\\n", " & \\,\\, \\text{in zone $i \\in I$}\\\\\n", " v^{-}_{ot} := & \\,\\, \\text{lower bound on yield of output $o \\in O$ in period $t \\in T$} \\\\\n", " v^{+}_{ot} := & \\,\\, \\text{upper bound on yield of output $o \\in O$ in period $t \\in T$} \\\\\n", " c_{ij} := & \\,\\, \\text{objective function contribution of prescription $j \\in J_{i}$ in zone $i \\in I$} \\\\\n", " x_{ij} := & \\,\\, \\text{proportion of zone $i \\in Z$ on which prescription $j \\in J_{i}$ is applied} \\\\\n", " y_p = & \\sum_{i\\in I}\\sum_{j\\in J_i}\\mu_{ijpt^R_p}x_{ij}\\text{, i.e. total yield of targeted output $p \\in O'$ at reference period $t^R_p$} \n", "\\end{align*}\n", "$$\n", "\n", "The objective function maximizes the sum of $c_{ij}x_{ij}$ products, which represent yield of a user-defined output---the output can be anything, but common examples include maximizing harvest volume or minimizing harvest area. Other, more complex objectives functions can be defined (e.g., minimize a penalty-based weighted multi-objective goal programming objective function).\n", "\n", "The variables $x_{ij}$ are linear, with domain $\\{x_{ij} \\in \\mathbb{R}|0 \\leq x_{ij} \\leq 1\\}$. Coverage constraints require prescriptions to cover the entire zone---doing nothing for the entire planning horizon is considered a prescription that could generate some outputs. Variable bounds and coverage constraints are automatically set by the `ws3` optimization problem formulation functions.\n", "\n", "\n", "The set $O^{\\prime} \\subseteq O$ represents targeted outputs, for which we enforce even-flow constraints.\n", "Even-flow constraints are expressed in terms of $y_p$, which represents total yield of targeted output $p \\in O^{\\prime}$ in reference period $t^R_p$.\n", "Note that even-flow constraints are defined over time periods $T'_p$, which is any subset of $T$ (need not be contiguous)---$T'_p$ can be unique for each output $p \\in O^{\\prime}$.\n", "\n", "General constraints set upper and lower bounds on periodic yield of any output $o \\in O$---we use these constraints to set minimum and maximum levels of any performance indicator defined in the model (or combinations thereof). " ] }, { "cell_type": "markdown", "id": "5589a4b9-f1b6-4d16-a79e-6b0630b88f71", "metadata": {}, "source": [ "Below we show an example of using the built-in optimization functions in `ws3` to formulate and solve a Model I linear programming (LP) optimization problem." ] }, { "cell_type": "markdown", "id": "18f40bd9-1122-47bf-872c-91510e90fcd6", "metadata": {}, "source": [ "`ws3` uses external LP solvers to solve the optimization problems that it formulates. By default `ws3` uses the `HiGHS` solver via `highspy` bindings, but bindings to other solvers (i.e., CBC via `pulp', Gurobi via `gurobipy`) are also implemented and can be actived by calling the `ws3.opt.Problem.solver` method." ] }, { "cell_type": "markdown", "id": "c8a7a326-f965-4405-9364-1fef220e3f64", "metadata": {}, "source": [ "First we need to define a few utility functions that we will use to build the problems (e.g., objective function coefficient function, even flow constraint coefficient function, general constraint coefficient function).\n", "\n", "Note that similar versions of these functions are included in the local `util` module in the examples subdirectory, which are used to speed up and simplify setting and running models in other example notebooks." ] }, { "cell_type": "code", "execution_count": 61, "id": "86b121d7-0383-4ff2-aaae-6ed9aae0e9a0", "metadata": { "tags": [] }, "outputs": [], "source": [ "def cmp_c_z(fm, path, expr):\n", " \"\"\"\n", " Compile objective function coefficient (given ForestModel instance, \n", " leaf-to-root-node path, and expression to evaluate).\n", " \"\"\"\n", " result = 0.\n", " for t, n in enumerate(path, start=1):\n", " d = n.data()\n", " if fm.is_harvest(d[\"acode\"]):\n", " result += fm.compile_product(t, expr, d[\"acode\"], [d[\"dtk\"]], d[\"age\"], coeff=False)\n", " return result\n", "\n", "def cmp_c_cflw(fm, path, expr, mask=None): # product, all harvest actions\n", " \"\"\"\n", " Compile flow constraint coefficient for product indicator (given ForestModel \n", " instance, leaf-to-root-node path, expression to evaluate, and optional mask).\n", " \"\"\"\n", " result = {}\n", " for t, n in enumerate(path, start=1):\n", " d = n.data()\n", " if mask and not fm.match_mask(mask, d[\"dtk\"]): continue\n", " if fm.is_harvest(d[\"acode\"]):\n", " result[t] = fm.compile_product(t, expr, d[\"acode\"], [d[\"dtk\"]], d[\"age\"], coeff=False)\n", " return result\n", "\n", "\n", "def cmp_c_caa(fm, path, expr, acodes, mask=None): # product, named actions\n", " \"\"\"\n", " Compile constraint coefficient for product indicator (given ForestModel \n", " instance, leaf-to-root-node path, expression to evaluate, list of action codes, \n", " and optional mask).\n", " \"\"\"\n", " result = {}\n", " for t, n in enumerate(path, start=1):\n", " d = n.data()\n", " if mask and not fm.match_mask(mask, d[\"dtk\"]): continue\n", " if d[\"acode\"] in acodes:\n", " result[t] = fm.compile_product(t, expr, d[\"acode\"], [d[\"dtk\"]], d[\"age\"], coeff=False)\n", " return result\n", "\n", "\n", "def cmp_c_ci(fm, path, yname, mask=None): # product, named actions\n", " \"\"\"\n", " Compile constraint coefficient for inventory indicator (given ForestModel instance, \n", " leaf-to-root-node path, expression to evaluate, and optional mask).\n", " \"\"\"\n", " result = {}\n", " for t, n in enumerate(path, start=1):\n", " d = n.data()\n", " if mask and not fm.match_mask(mask, d[\"_dtk\"]): continue\n", " result[t] = fm.inventory(t, yname=yname, age=d[\"_age\"], dtype_keys=[d[\"_dtk\"]])\n", " return result" ] }, { "cell_type": "markdown", "id": "2f90cba3-c1f5-4847-8177-a8f0e01c3239", "metadata": {}, "source": [ "Define a generic base scenario function, and link it to a dispatch function keyed on scenario name string (e.g., `base`). \n", "\n", "Note how we use `functools.partial` to specialize the more general functions defined above for use in the `coeff_funcs` arg of `ForestModel.add_problem`. Otherwise we would have to define an entirely new function each time we defined a slightly different objective or constraint in one of our scenarios, which would get tedious and messy. The tedium and mess would be more evident if we had a large number of alternative scenarios defined in the same notebook (which we do not here, but use your imagination). \n", "\n", "Note also that the expected data structures for the various args to `ForestModel.add_problem` must be matched exactly or `ws3` will likely crash somewhere in one of the series of complicated private optimization model-building methods that get called from `ForestModel.add_problem`. You _should not_ have to unpack the exact logic of this model-building code to figure out why your model is crashing... it really is quite complicated and hard to follow. If you model is crashing there, you probably fed invalid (or incorrectly structured) args to `ForestModel.add_problem`. Carefully review the structure and values of your args to find the problem." ] }, { "cell_type": "markdown", "id": "4eb7864d-f55b-4362-8ab9-126ec41b0eae", "metadata": {}, "source": [ "`ForestModel.add_problem` arg specs are described below.\n", "\n", "`name`: String. Used as key to store `Problem` instances in a dict in the `ForestModel` instanace, so make sure it is unique within a given model or you will overwrite dict values (assuming you want to stuff multiple problems, and their solutions, into your model at the same time). \n", " \n", "`coeff_funcs`: Dict of function references, keyed on _row name_ strings. These are the functions that generate the LP optimization problem matrix coefficients (for the objective function and constraint rows). This one gets complicated, and is a likely source of bugs. Make sure the row name key strings are all unique or you will make a mess. You can name the constraint rows anything you want, but the objective function row has to be named `z`. All coefficient functions must accept exactly two args, in this order: a `ws3.forest.ForestModel` instance and a `ws3.common.Path` instance. The `z` coefficient function is special in that it must return a single float value. All other (i.e., constraint) coefficient functions just return a dict of floats, keyed on period ints (can be sparse, i.e., not necessary to include key:value pairs in output dict if value is 0.0). It is useful (but not necessary) to use `functools.partial` to specialize a smaller number of more general function definitions (with more args, that get \"locked down\" and hidden by `partial`) as we have done in the example in this notebook.\n", "\n", "`cflw_e`: Dict of `(dict, int)` tuples, keyed on _row name_ strings (must match _row name_ key values used to define coefficient functions for flow constraints in `coeff_func` dict), where the int:float dict embedded in the tuple defines epsilon values keyed on periods (must include all periods, even if epsilon value is always the same). See example below. \n", "\n", "```\n", "{\n", " 'cflw_acut':({1:0.01, 2:0.01, ..., 10:0.01}, 1),\n", " 'cflw_vcut':({1:0.05, 2:0.05, ..., 10:0.05}, 1)\n", "}\n", "```\n", "\n", "`cgen_data`: Dict of dict of dicts. The outer-level dict is keyed on _row name_ strings (must match row names used in `coeff_funcs`. The middle second level of dicts always has keys `'lb'` and `'ub'`, and the inner level of dicts specifies lower- and upper-bound general constraint RHS (float) values, keyed on period (int).\n", "\n", "`acodes`: List of strings. Action codes to be included in optimization problem formulation (actions must defined in the `ForestModel` instance, but can be only a subset).\n", "\n", "`sense`: Must be one of `ws3.opt.SENSE_MAXIMIZE` or `ws3.opt.SENSE_MINIMIZE`.\n", "\n", "`mask`: Tuple of strings constituting a valid mask for your `ForestModel` instance. Can be `None` if you do not want to filter `DevelopmentType` instances." ] }, { "cell_type": "code", "execution_count": 62, "id": "26e3d841-4a9c-40ee-998d-0d5e456d89f7", "metadata": { "tags": [] }, "outputs": [], "source": [ "def gen_scenario(fm, name=\"base\", util=0.85, harvest_acode=\"harvest\",\n", " cflw_ha={}, cflw_hv={}, \n", " cgen_ha={}, cgen_hv={}, cgen_gs={}, \n", " tvy_name=\"totvol\", obj_mode=\"max_hv\", mask=None):\n", " from functools import partial\n", " import numpy as np\n", " coeff_funcs = {}\n", " cflw_e = {}\n", " cgen_data = {}\n", " acodes = [\"null\", harvest_acode]\n", " vexpr = \"%s * %0.2f\" % (tvy_name, util)\n", " if obj_mode == \"max_hv\":\n", " sense = ws3.opt.SENSE_MAXIMIZE \n", " zexpr = vexpr\n", " elif obj_mode == \"min_ha\":\n", " sense = ws3.opt.SENSE_MINIMIZE \n", " zexpr = \"1.\"\n", " else:\n", " raise ValueError(\"Invalid obj_mode: %s\" % obj_mode)\n", " coeff_funcs[\"z\"] = partial(cmp_c_z, expr=zexpr)\n", " T = fm.periods\n", " if cflw_ha:\n", " cname = \"cflw_ha\"\n", " coeff_funcs[cname] = partial(cmp_c_caa, expr=\"1.\", acodes=[harvest_acode], mask=None)\n", " cflw_e[cname] = cflw_ha\n", " if cflw_hv:\n", " cname = \"cflw_hv\"\n", " coeff_funcs[cname] = partial(cmp_c_caa, expr=vexpr, acodes=[harvest_acode], mask=None) \n", " cflw_e[cname] = cflw_hv \n", " if cgen_ha:\n", " cname = \"cgen_ha\"\n", " coeff_funcs[cname] = partial(cmp_c_caa, expr=\"1.\", acodes=[harvest_acode], mask=None)\n", " cgen_data[cname] = cgen_ha\n", " if cgen_hv:\n", " cname = \"cgen_hv\"\n", " coeff_funcs[cname] = partial(cmp_c_caa, expr=vexpr, acodes=[harvest_acode], mask=None) \n", " cgen_data[cname] = cgen_hv\n", " if cgen_gs:\n", " cname = \"cgen_gs\"\n", " coeff_funcs[cname] = partial(cmp_c_ci, yname=tvy_name, mask=None)\n", " cgen_data[cname] = cgen_gs\n", " return fm.add_problem(name, coeff_funcs, cflw_e, cgen_data=cgen_data, acodes=acodes, sense=sense, mask=mask)" ] }, { "cell_type": "markdown", "id": "b3d74ea0-f88c-44b9-8195-f8ad6fc323b3", "metadata": {}, "source": [ "We need to add a \"null\" action to the model for the optimization functions to work correctly. This is basically a pass-through action that literally does nothing (i.e., just grow the forest for one time step, which `ws3` models as an explicit decision option in the dynamic programming state trees it builds when it generates the LP problem matrix)." ] }, { "cell_type": "code", "execution_count": 63, "id": "80741c98-1b51-4bbb-9397-8cc7b426bf05", "metadata": { "tags": [] }, "outputs": [], "source": [ "fm.add_null_action()" ] }, { "cell_type": "markdown", "id": "f4ec1047-ed70-4aa9-b616-cfc738dddd46", "metadata": {}, "source": [ "We define some scenario options below. Specify which scenario by setting the `scenario_name` variable below." ] }, { "cell_type": "code", "execution_count": 64, "id": "cfafcb76", "metadata": {}, "outputs": [], "source": [ "def run_scenario(fm, scenario_name=\"base\", solver=ws3.opt.SOLVER_PULP):\n", " import sys\n", " cflw_ha = {}\n", " cflw_hv = {}\n", " cgen_ha = {}\n", " cgen_hv = {}\n", " cgen_gs = {}\n", " \n", " # define harvest area and harvest volume flow constraints\n", " cflw_ha = ({p:0.05 for p in fm.periods}, 1)\n", " cflw_hv = ({p:0.05 for p in fm.periods}, 1)\n", "\n", " if scenario_name == \"base\":\n", " # Base scenario\n", " print(\"running base scenario\")\n", " elif scenario_name == \"base-cgen_ha\":\n", " # Base scenario, plus harvest area general constraints\n", " print(\"running base scenario plus harvest area constraints\")\n", " cgen_ha = {\"lb\":{1:0.}, \"ub\":{1:100.}}\n", " elif scenario_name == \"base-cgen_hv\":\n", " # Base scenario, plus harvest volume general constraints\n", " print(\"running base scenario plus harvest volume constraints\")\n", " cgen_hv = {\"lb\":{1:0.}, \"ub\":{1:10000.}}\n", " elif scenario_name == \"base-cgen_gs\":\n", " # Base scenario, plus growing stock general constraints\n", " print(\"running base scenario plus growing stock constraints\")\n", " cgen_gs = {\"lb\":{10:120000.}, \"ub\":{10:1000000.}}\n", " else:\n", " assert False # bad scenario name\n", "\n", " p = gen_scenario(fm=fm, \n", " name=scenario_name, \n", " cflw_ha=cflw_ha, \n", " cflw_hv=cflw_hv,\n", " cgen_ha=cgen_ha,\n", " cgen_hv=cgen_hv,\n", " cgen_gs=cgen_gs)\n", " p.solver(solver)\n", "\n", " fm.reset()\n", " p.solve()\n", "\n", " if p.status() != ws3.opt.STATUS_OPTIMAL:\n", " print(\"Model not optimal.\")\n", " df = None \n", " else:\n", " sch = fm.compile_schedule(p)\n", " fm.apply_schedule(sch, \n", " force_integral_area=False, \n", " override_operability=False,\n", " fuzzy_age=False,\n", " recourse_enabled=False,\n", " verbose=False,\n", " compile_c_ycomps=True)\n", " df = compile_scenario(fm)\n", " fig, ax = plot_scenario(df)\n", " return fig, df, p" ] }, { "cell_type": "markdown", "id": "552c8c7b-8c31-4d90-96b7-dcab85187a34", "metadata": {}, "source": [ "Note that the `Problem.solve` method return a reference to the lower-level `gurobi.Model` object in case we need or want to poke around it (can yield insight into how the optimization problem is formulated on the solver side of things, or help debug).\n", "\n", "Be vigilant for \"infeasible or unbounded model\" messages and such below, in case these are unexpected. Depending on how the rest of the model was set up, `ws3` may automatically attempt to resolve infeasible models using \"feasibility relaxation\" mode in Gurobi (which might not be what you want, depending on the situation)." ] }, { "cell_type": "code", "execution_count": 65, "id": "c5927ee2-4de5-4523-acee-40d1ea956f91", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "running base scenario\n" ] }, { "data": { "text/plain": [ "(
,\n", " period oha ohv ogs\n", " 0 1 141.884535 18776.518225 129802.193327\n", " 1 2 134.790309 17837.692438 122458.829241\n", " 2 3 134.790309 17837.692363 113354.435693\n", " 3 4 134.790309 17837.692369 104521.374395\n", " 4 5 134.790309 18086.166846 96456.943325\n", " 5 6 134.790310 19715.344321 85374.110531\n", " 6 7 147.721252 19715.344047 72562.743826\n", " 7 8 135.688774 19715.344193 59660.980417\n", " 8 9 148.978763 19134.468782 49258.413261\n", " 9 10 148.978762 19715.344123 37323.465115,\n", " )" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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xsvJyUFKSgpSUlIAPL11MiUlBenp6cjJycG0adNw/Phx3Lx5E3FxcRg4cCBatGgBDw8PANJbJ0+cOIHff/9d462Turq68PPzw8WLF7F161asWrVKcvVoypQpiImJwbJly3DlyhXMmzcPp06dQkBAQLV/JkRERET04nhFm4jeeKXdOjlq1CisW7cO586dw+bNm5GVlQVra2u4u7tj4cKFklu2q+vWSSIiojdds5l7ZG/z5mIv2dukNxsTbSJ642m6dfJZ+/btK7eN6rp1koiIiIhqP946TkRERERERCQjJtpEREREREREMmKiTURERERERCQjJtpEREREREREMmKiTURERERERCQjJtpEREREREREMmKiTURERERERCQjJtpEREREREREMmKiTURERERERCQjJtpEREREREREMmKiTURERERERCQjJtpEREREREREMmKiTURERERERCQjJtpEREREREREMmKiTURERERERCSjSifa8fHx6N+/P6ytraFQKBAdHS2pFwQBISEhsLKygoGBAdzc3HD16lVJzIMHD+Dr6wtjY2OYmprCz88POTk5L3UiRERERERERLVBpRPt3NxcdOjQAeHh4Rrrw8LCsHr1akRERCApKQmGhobw8PBAXl6eGOPr64uLFy8iNjYWu3fvRnx8PMaPH//iZ0FERERERERUS+hU9g2enp7w9PTUWCcIAlauXInZs2dj4MCBAIAffvgBFhYWiI6OxtChQ3H58mXExMTg5MmTcHJyAgCsWbMG/fr1w1dffQVra+uXOB0iIiIiIiKimiXrM9ppaWlQKpVwc3MTy0xMTODs7IzExEQAQGJiIkxNTcUkGwDc3NygpaWFpKQkje3m5+dDpVJJDiIiIiIiIqLaSNZEW6lUAgAsLCwk5RYWFmKdUqmEubm5pF5HRwdmZmZizPNCQ0NhYmIiHjY2NnIOm4iIiIiIiEg2r8Sq48HBwcjOzhaP27dv1/SQiIiIiIiIiDSSNdG2tLQEAGRkZEjKMzIyxDpLS0tkZmZK6p88eYIHDx6IMc/T09ODsbGx5CAiIiIiIiKqjWRNtO3s7GBpaYm4uDixTKVSISkpCS4uLgAAFxcXZGVlITk5WYw5ePAgiouL4ezsLOdwiIiIiIiIiKpdpVcdz8nJwbVr18TXaWlpSElJgZmZGZo2bYrAwEAsWrQILVu2hJ2d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V9NDeiF9+vTB+fPnkZKSIh5OTk7w9fVFSkoKtLW1a3qIFdatW7cSW2T88ccfsLW1raERvbhHjx5BS0v6I62trY3i4uIaGpE87OzsYGlpibi4OLFMpVIhKSkJLi4uNTgykhPnx9qH82Ptx/nxzfC6zI8A58jaiPNj1eGt49XI398fUVFR+OWXX2BkZCQ+H2BiYgIDA4MaHl3FGRkZlXguyNDQEA0aNHjlnhcKCgpC165d8eWXX2LIkCE4ceIE1q9fj/Xr19f00Cqtf//++OKLL9C0aVO0bdsWZ86cwfLlyzFmzJiaHlq5cnJycO3aNfF1WloaUlJSYGZmhqZNmyIwMBCLFi1Cy5YtYWdnhzlz5sDa2hre3t41N2iSFefH2ofzY+3A+ZFel/kR4BxZG3F+rELVsrY5CYLwdNl5TcfGjRtremgv7VXdmkEQBOHXX38V2rVrJ+jp6Qn29vbC+vXra3pIL0SlUglTpkwRmjZtKujr6wtvvfWW8J///EfIz8+v6aGV69ChQxp/NkaNGiUIwtMtGubMmSNYWFgIenp6Qp8+fYTU1NSaHTTJivNj7cT5seZxfqTXeX4UBM6RNY3zY9VRCIIgVHk2T0RERERERPSG4DPaRERERERERDJiok1EREREREQkIybaRERERERERDJiok1EREREREQkIybaRERERERERDJiok1EREREREQkIybaRERERERERDJiok1EREREREQkIybaRERERERERDJiok1EREREREQkIybaRERERERERDJiok1EREREREQko/8HsaGFbiV+px4AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "run_scenario(fm, \"base\")" ] }, { "cell_type": "code", "execution_count": 66, "id": "485e2eb9-529c-40f0-a4c1-47a4edb38fcd", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "running base scenario plus harvest area constraints\n" ] }, { "data": { "image/png": "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V+LEiRNV7gNdPt4PPvigwpWpcnJtzzJixAgkJSVhxowZ6NixIxo0aICysrIK27KUe/izKysrExf2MDQ0rBBffp6lpaX417/+hdzcXHz44YdwcnKCubk5bty4gbfffvuRixuVP2d969atCv8QAtDZNyCddKdMmYItW7YgJCQEHh4eUCqVUCgU8Pf319l/+USr69khotrC+e3J2dnZoUePHti5cyc++ugjnDhxAllZWVi2bJks7Vf2Raq0tLTS9+iaq6ozf5WVlcHFxQWrVq3SGfvwF8aHNWrUSOeXx0eNQVd5VQl7uaFDh2L06NHYvn17hUT71q1bqF+/PlfDJ9kplUo0adIE58+fr1BX/qOdrgVQAcDExOSRK5FXxdPTU9xD+ejRo/j4449haWmJdu3a4ejRo7C1tQWAaiXa1ZkT5GRsbIwuXbqgS5cuePXVVzFu3Djs2rUL8+bNq5H+qjJkyBBs374dS5cuxVdffVWtP5MHvyPq8jjzG/Doz9nY2BiDBw/G0qVLcefOHclcxu+OUky0nwM//PADioqKsGfPHsmvVtVdEKKco6MjXnvtNezYsQPBwcH47rvv4OvrK7lC07JlS/z000/o3r17tb4kdO3aFV27dsWSJUsQExODgIAAbN++He+8806lX9LKb8GpV69elatsA/cXs7h69WqF8oyMjEeO7datW0hISMCCBQsQFhYmlutqrzItW7aEIAhwdHTEq6++WmncuXPncOXKFWzbtk2yiE58fHy1+nFycgIAZGZmwsXFpdrje9A333yDsWPHSlbzvXv3rs5VI8v7aty4caVXkIhqA+e3J5vfyr355puYPHkyMjIysGPHDtSvXx+DBg2S9FHe5sPbTWVkZFS6eBjwf7cIPjyH1MT+vC1btsQvv/yCvn37PtGVEicnJ3z77beyj6syRUVFKCsr03m3UGZmpnhFkEhuPj4++OKLL3Dy5Emdi/E9DgcHB/z000/4559/JFe1L1++LNaX69GjB4qLi/H111/jxo0bYkLds2dPMdF+9dVXxYT7aTk4OODixYsQBEEyJ/z6669P1W75nVb//e9/xTJdc85LL72E+vXr65yPL1++DAMDA/EHwJYtW+r88UMXX19feHt74+2330bDhg117rDxsAe/I9aWO3fuQBAE/PPPP5J/L8vHwDnuPj6j/Rwo/0Xq4VuBt2zZ8tht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f/58pKamIjg4uNY/EyIi4P+S7KtXr+Knn35Co0aNJPUP/tBYTtcPjYmJiSgpKRFjKvuh8UEP/tDo6OgIlUolidFqtUhJSeGPkURUJzHRJqIXXmpqKjp16oROnToBAEJDQ9GpUyeEhYVVu43o6Gg4OTmhb9++GDBgADw9PbFp0yaxXqlU4uDBg8jMzISrqyvef/99hIWFiVvbAEC3bt0QExODTZs2oUOHDvjmm28QGxv7XOyhTUR1k64fGs+ePQvgfpI9bNgwpKamIjo6GqWlpdBoNNBoNCguLgZQez80KhQKhISEYPHixdizZw/OnTuHMWPGwM7ODr6+vrX3gRERVRNvHSeiF16vXr0gCEK1469du1ahzNraWtwztjLt27fH0aNHq4wZPnw4hg8fXu2xEBE9jdTUVPTu3Vt8/WDye/PmTezZswcAKtye/fPPP6NXr14A7v/QGBwcjL59+8LAwAB+fn5Yu3atGFv+Q2NQUBBcXV3RuHHjSn9onDNnDj766CO0atWqwg+NM2fORGFhISZOnIi8vDx4enoiLi6Oe2gTUZ3ERJuIiIjoBaXrh0atVgulUgkHB4dq/QhZWz80KhQKLFy4EAsXLnzkmIiI9I23jhMRERERERHJiIk2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYy4GBoREREREdFDWszaJ2t715b6yNoe1W28ok1EREREREQkIybaRERERERERDJiok1EREREREQkIybaRERERERERDJiok1EREREREQkIybaRERERERERDJiok1EREREREQkIybaRERERERERDJiok1EREREREQkIybaRERERERERDJiok1EREREREQkIyN9D4CIiIiIiOhF1GLWPtnbvLbUR/Y26fHxijYRERERERGRjJhoExEREREREcmIiTYRERERERGRjJhoExEREREREcmIiTYRERERERGRjJhoExEREREREcmIiTYRERERERGRjJhoExEREREREcmIiTYRvfASExMxaNAg2NnZQaFQIDY2VqwrKSnBhx9+CBcXF5ibm8POzg5jxozBzZs3JW3k5uYiICAAFhYWsLS0RGBgIAoKCiQxZ8+eRY8ePWBqagp7e3tERERUGMuuXbvg5OQEU1NTuLi4YP/+/TVyzkRERERUc5hoE9ELr7CwEB06dMCGDRsq1N2+fRunT5/G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oyNWrlwJZ2dnBAcHY9iwYVi9erVezpeIiIiIngwTbSKiagoKCoKPjw+8vLwk5WlpaSgpKZGUOzk5oXnz5khOTgYAJCcnw8XFRbI6rlqthlarxYULF8SYh9tWq9ViG7oUFRVBq9VKDiIiIiLSL646TkRUDdu3b8fp06dx6tSpCnUajQbGxsawtLSUlNva2kKj0YgxD29BU/76UTFarRZ37tyBmZlZhb7Dw8OxYMGCJz4vIiIiIpIfr2gTET3C9evXMW3aNERHR8PU1FTfw5GYPXs28vPzxeP69ev6HhIRERHRC4+JNhHRI6SlpSEnJwedO3eGkZERjIyMcOTIEaxduxZGRkawtbVFcXEx8vLyJO/Lzs6GSqUCAKhUqgqrkJe/flSMhYWFzqvZAGBiYgILCwvJQURERET6xUSbiOgR+vbti3PnziE9PV083NzcEBAQIP7/evXqISEhQXxPRkYGsrKy4OHhAQDw8PDAuXPnkJOTI8bEx8fDwsICbdq0EWMebKM8prwNIiIiIno28BltIqJHaNiwIdq1aycpMzc3R6NGjcTywMBAhIaGwtraGhYWFpgyZQo8PDzQtWtXAIC3tzfatGmD0aNHIyIiAhqNBnPmzEFQUBBMTEwAAO+++y7Wr1+PmTNnYvz48Th06BB27tyJffv21e4JExEREdFTYaJNRCSD1atXw8DAAH5+figqKoJarcann34q1hsaGmLv3r1477334OHhAXNzc4wdOxYLFy4UYxwdHbFv3z5Mnz4dkZGRaNasGb744guo1Wp9nBIRERERPSEm2kRET+Dw4cOS16amptiwYQM2bNhQ6XscHBywf//+Ktvt1asXzpw5I8cQiYiIiEhP+Iw2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYyYaBMRERERERHJSPZEOzw8HF26dEHDhg1hY2MDX19fZGRkSGLu3r2LoKAgNGrUCA0aNICfnx+ys7PlHgoRERERERFRrZM90T5y5AiCgoJw4sQJxMfHo6SkBN7e3igsLBRjpk+fjh9++AG7du3CkSNHcPPmTQwdOlTuoRARERERERHVOiO5G4yLi5O83rp1K2xsbJCWloaePXsiPz8fX375JWJiYtCnTx8AwJYtW+Ds7IwTJ06ga9eucg+JiIiIiIiIqNbU+DPa+fn5AABra2sAQFpaGkpKSuDl5SXGODk5oXnz5khOTtbZRlFREbRareQgIiIiIiIiqotqNNEuKytDSEgIunfvjnbt2gEANBoNjI2NYWlpKYm1tbWFRqPR2U54eDiUSqV42Nvb1+SwiYiIiIiIiJ5YjSbaQUFBOH/+PLZv3/5U7cyePRv5+fnicf36dZlGSERERERERCQv2Z/RLhccHIy9e/ciMTERzZo1E8tVKhWKi4uRl5cnuaqdnZ0NlUqlsy0TExOYmJjU1FCJiIiIiIiIZCP7FW1BEBAcHIzdu3fj0KFDcHR0lNS7urqiXr16SEhIEMsyMjKQlZUFDw8PuYdDREREREREVKtkv6IdFBSEmJgYfP/992jYsKH43LVSqYSZmRmUSiUCAwMRGhoKa2trWFhYYMqUKfDw8OCK40RERERERPTMkz3R3rhxIwCgV69ekvItW7bg7bffBgCsXr0aBgYG8PPzQ1FREdRqNT799FO5h0JERERERERU62RPtAVBeGSMqakpNmzYgA0bNsjdPREREREREZFe1fg+2kREREREREQvEibaRERERKRTeHg4unTpgoYNG8LGxga+vr7IyMiQxNy9exdBQUFo1KgRGjRoAD8/P2RnZ0tisrKy4OPjg/r168PGxgYzZszAvXv3JDGHDx9G586dYWJigldeeQVbt26tMJ4NGzagRYsWMDU1hbu7O06ePCn7ORMRyYGJNhERERHpdOTIEQQFBeHEiROIj49HSUkJvL29UVhYKMZMnz4dP/zwA3bt2oUjR47g5s2bGDp0qFhfWloKHx8fFBcXIykpCdu2bcPWrVsRFhYmxmRmZsLHxwe9e/dGeno6QkJC8M477+DAgQNizI4dOxAaGop58+bh9OnT6NChA9RqNXJycmrnwyAiegw1to82ERERET3b4uLiJK+3bt0KGxsbpKWloWfPnsjPz8eXX36JmJgY9OnTB8D9BXCdnZ1x4sQJdO3aFQcPHsTFixfx008/wdbWFh07dsSiRYvw4YcfYv78+TA2NkZUVBQcHR2xcuVKAICzszOOHTuG1atXQ61WAwBWrVqFCRMmYNy4cQCAqKgo7Nu3D5s3b8asWbNq8VMhIno0XtEmIiIiomrJz88HAFhbWwMA0tLSUFJSAi8vLzHGyckJzZs3R3JyMgAgOTkZLi4usLW1FWPUajW0Wi0uXLggxjzYRnlMeRvFxcVIS0uTxBgYGMDLy0uMISKqS3hFm4iIiIgeqaysDCEhIejevTvatWsHANBoNDA2NoalpaUk1tbWFhqNRox5MMkury+vqypGq9Xizp07uHXrFkpLS3XGXL58udIxFxUVoaioSHyt1Wof44yJiJ4cr2gTERER0SMFBQXh/Pnz2L59u76HUm3h4eFQKpXiYW9vr+8hEdELgok2EVE11LWVd4mIalNwcDD27t2Ln3/+Gc2aNRPLVSoViouLkZeXJ4nPzs6GSqUSYx6eC8tfPyrGwsICZmZmaNy4MQwNDXXGlLehy+zZs5Gfny8e169ff7wTJyJ6Qky0iYiqoS6tvEtEVFsEQUBwcDB2796NQ4cOwdHRUVLv6uqKevXqISEhQSzLyMhAVlYWPDw8AAAeHh44d+6cZHXw+Ph4WFhYoE2bNmLMg22Ux5S3YWxsDFdXV0lMWVkZEhISxBhdTExMYGFhITmIiGoDn9EmIqqGurTyLhFRbQkKCkJMTAy+//57NGzYUHymWqlUwszMDEqlEoGBgQgNDYW1tTUsLCwwZcoUeHh4oGvXrgAAb29vtGnTBqNHj0ZERAQ0Gg3mzJmDoKAgmJiYAADeffddrF+/HjNnzsT48eNx6NAh7Ny5E/v27RPHEhoairFjx8LNzQ2vvfYa1qxZg8LCQnEVciKiuoRXtImInoC+Vt4lIqpNGzduRH5+Pnr16oUmTZqIx44dO8SY1atXY+DAgfDz80PPnj2hUqnw3XffifWGhobYu3cvDA0N4eHhgbfeegtjxozBwoULxRhHR0fs27cP8fHx6NChA1auXIkvvvhC8gPjm2++iRUrViAsLAwdO3ZEeno64uLiKiyQRkRUF/CKNhHRY9LnyrtmZmaSOq6oS0Q1SRCER8aYmppiw4YN2LBhQ6UxDg4O2L9/f5Xt9OrVC2fOnKkyJjg4GMHBwY8cExGRvvGKNhHRY6pLK+9yRV0iIiKiuoeJNhHRY9D3yrsP44q6RERERHUPE20iomqoKyvvPowr6hIRERHVPXxGm4ioGurSyrtEREREVLfxijYRUTXUpZV3iYiIiKhu4xVtIqJqqGsr7xIRERFR3cUr2kREREREREQyYqJNREREREREJCMm2kREREREREQyYqJNREREREREJCMm2kREREREREQyYqJNREREREREJCMm2kREREREREQyYqJNREREREREJCMm2kREREREREQyYqJNREREREREJCMm2kREREREREQyYqJNREREREREJCMm2kREREREREQyYqJNREREREREJCMm2kREREREREQyYqJNREREREREJCMm2kREREREREQyYqJNREREREREJCMm2kREREREREQyYqJNREREREREJCMm2kREREREREQyYqJNREREREREJCMm2kREREREREQyYqJNREREREREJCMm2kREREREREQyYqJNREREREREJCMm2kREREREREQy0muivWHDBrRo0QKmpqZwd3fHyZMn9TkcIqI6g/MjEZFunB+J6Fmgt0R7x44dCA0Nxbx583D69Gl06NABarUaOTk5+hoSEVGdwPmRiEg3zo9E9KzQW6K9atUqTJgwAePGjUObNm0QFRWF+vXrY/PmzfoaEhFRncD5kYhIN86PRPSsMNJHp8XFxUhLS8Ps2bPFMgMDA3h5eSE5OblCfFFREYqKisTX+fn5AACtVvtY/ZYV3X7CEeumq/9nsY/a6ud56aO2+tFXH7XVT22dy6PiBUGQdRxPi/Pj0/VRW/08i33UVj/PSx+11Q/nx+p73PkRkGeOfBb/zGurn+elj9rqh+dS9/qorJ9HxVZrfhT04MaNGwIAISkpSVI+Y8YM4bXXXqsQP2/ePAEADx48eMh+XL9+vbamvmrh/MiDB4+6cjzr86MgcI7kwYNHzRzVmR/1ckX7cc2ePRuhoaHi67KyMuTm5qJRo0ZQKBR6HNmT0Wq1sLe3x/Xr12FhYaHv4TwVnkvd87ycB1Cz5yIIAv755x/Y2dnJ2m5t4/xYd/Fc6qbn5Vw4P1YP58i66Xk5D4DnUlfV1Lk8zvyol0S7cePGMDQ0RHZ2tqQ8OzsbKpWqQryJiQlMTEwkZZaWljU5xFphYWHxzP9HXI7nUvc8L+cB1Ny5KJVK2dt8Wpwf7+N/v3UTz6Xu4fxY+fwIcI6s656X8wB4LnVVTZxLdedHvSyGZmxsDFdXVyQkJIhlZWVlSEhIgIeHhz6GRERUJ3B+JCLSjfMjET1L9HbreGhoKMaOHQs3Nze89tprWLNmDQoLCzFu3Dh9DYmIqE7g/EhEpBvnRyJ6Vugt0X7zzTfx119/ISwsDBqNBh07dkRcXBxsbW31NaRaY2Jignnz5lW4lelZxHOpe56X8wCer3N5HJwfn48/c55L3fS8nMvzch6P60WeH4Hn58/9eTkPgOdSV9WFc1EIQh3bu4GIiIiIiIjoGaaXZ7SJiIiIiIiInldMtImIiIiIiIhkxESbiIiIiIiISEZMtImIiIiIiIhkxES7FoWHh6NLly5o2LAhbGxs4Ovri4yMDH0P66ktXboUCoUCISEh+h7KE7lx4wbeeustNGrUCGZmZnBxcUFqaqq+h/XYSktLMXfuXDg6OsLMzAwtW7bEokWL8Cysd5iYmIhBgwbBzs4OCoUCsbGxknpBEBAWFoYmTZrAzMwMXl5euHr1qn4GSzWC82PdxPlR/zg/0vM6PwKcI+sCzo81h4l2LTpy5AiCgoJw4sQJxMfHo6SkBN7e3igsLNT30J7YqVOn8Nlnn6F9+/b6HsoTuXXrFrp374569erhxx9/xMWLF7Fy5UpYWVnpe2iPbdmyZdi4cSPWr1+PS5cuYdmyZYiIiMC6dev0PbRHKiwsRIcOHbBhwwad9REREVi7di2ioqKQkpICc3NzqNVq3L17t5ZHSjWF82Pdw/mxbuD8SM/j/AhwjqwrOD/WIIH0JicnRwAgHDlyRN9DeSL//POP0KpVKyE+Pl54/fXXhWnTpul7SI/tww8/FDw9PfU9DFn4+PgI48ePl5QNHTpUCAgI0NOIngwAYffu3eLrsrIyQaVSCcuXLxfL8vLyBBMTE+Hrr7/WwwipNnB+1D/Oj3UP50cShGd/fhQEzpF1CefHmsMr2nqUn58PALC2ttbzSJ5MUFAQfHx84OXlpe+hPLE9e/bAzc0Nw4cPh42NDTp16oTPP/9c38N6It26dUNCQgKuXLkCAPjll19w7Ngx9O/fX88jezqZmZnQaDSS/86USiXc3d2RnJysx5FRTeL8qH+cH+s+zo8vpmd9fgQ4R9YlnB9rjlGt9EIVlJWVISQkBN27d0e7du30PZzHtn37dpw+fRqnTp3S91Ceyu+//46NGzciNDQUH330EU6dOoWpU6fC2NgYY8eO1ffwHsusWbOg1Wrh5OQEQ0NDlJaWYsmSJQgICND30J6KRqMBANja2krKbW1txTp6vnB+rBs4P9Z9nB9fPM/6/AhwjqxrOD/WHCbaehIUFITz58/j2LFj+h7KY7t+/TqmTZuG+Ph4mJqa6ns4T6WsrAxubm745JNPAACdOnXC+fPnERUV9UxNkgCwc+dOREdHIyYmBm3btkV6ejpCQkJgZ2f3zJ0Lvdg4P9YNnB+J6p5neX4EOEfWRZwfaw5vHdeD4OBg7N27Fz///DOaNWum7+E8trS0NOTk5KBz584wMjKCkZERjhw5grVr18LIyAilpaX6HmK1NWnSBG3atJGUOTs7IysrS08jenIzZszArFmz4O/vDxcXF4wePRrTp09HeHi4vof2VFQqFQAgOztbUp6dnS3W0fOD82Pdwfmx7uP8+GJ51udHgHNkXcT5seYw0a5FgiAgODgYu3fvxqFDh+Do6KjvIT2Rvn374ty5c0hPTxcPNzc3BAQEID09HYaGhvoeYrV17969whYZV65cgYODg55G9ORu374NAwPpX2lDQ0OUlZXpaUTycHR0hEqlQkJCglim1WqRkpICDw8PPY6M5MT5se7h/Fj3cX58MTwv8yPAObIu4vxYc3jreC0KCgpCTEwMvv/+ezRs2FB8PkCpVMLMzEzPo6u+hg0bVnguyNzcHI0aNXrmnheaPn06unXrhk8++QQjRozAyZMnsWnTJmzatEnfQ3tsgwYNwpIlS9C8eXO0bdsWZ86cwapVqzB+/Hh9D+2RCgoK8Ouvv4qvMzMzkZ6eDmtrazRv3hwhISFYvHgxWrVqBUdHR8ydOxd2dnbw9fXV36BJVpwf6x7Oj3UD50d6XuZHgHNkXcT5sQbVytrmJAjC/WXndR1btmzR99Ce2rO6NYMgCMIPP/wgtGvXTjAxMRGcnJyETZs26XtIT0Sr1QrTpk0TmjdvLpiamgovv/yy8PHHHwtFRUX6Htoj/fzzzzr/bowdO1YQhPtbNMydO1ewtbUVTExMhL59+woZGRn6HTTJivNj3cT5Uf84P9LzPD8KAudIfeP8WHMUgiAINZ7NExEREREREb0g+Iw2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYyYaBMRERERERHJiIk2ERERERERkYyYaBMRERERERHJ6P8BqvQAlLX2AVgAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, df, problem = run_scenario(fm, \"base-cgen_ha\")\n" ] }, { "cell_type": "code", "execution_count": 67, "id": "82a9b0a4-9162-434f-93cc-110233624af6", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "running base scenario plus harvest volume constraints\n" ] }, { "data": { "text/plain": [ "(
,\n", " period oha ohv ogs\n", " 0 1 81.849890 9999.999947 140127.508949\n", " 1 2 85.942386 10500.000063 141439.460810\n", " 2 3 85.942385 10499.999964 141064.869749\n", " 3 4 85.942385 10500.000020 140773.172499\n", " 4 5 85.942385 10499.999991 141788.996357\n", " 5 6 82.813939 10500.000036 141745.391916\n", " 6 7 79.921287 10499.999990 139643.874917\n", " 7 8 77.757396 10499.999965 136343.798843\n", " 8 9 85.942385 10499.999988 132921.438318\n", " 9 10 85.942386 10500.000015 127570.946218,\n", " )" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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derUkSSlp6dblPv5+cnNzY35FXdEdHS0zp8/r4ULF+ZLoCXJzs5Or732mry9vc2yF154QZUqVdLPP/+sxx9/XJUrV1ZoaKikK8n0P//5T3l7e8vBwUH169fXe++9Z/E78NRTT6lFixYW/fTo0UM2NjYWc9qOHTtkY2Ojr7/+WlLB90Tn3c5z+PBhderUSRUqVFCNGjUUHR2db19+++03PfHEE6pYsaLc3d01fPhwrVu3zqr7rH/++Wc1atQoXwItXfkMlMfGxkbnz5/X4sWLzXn8hRdeMOv37t2rbt26ydnZWZUqVVLnzp21ffv2fG2mp6dr+PDhqlOnjhwcHFSzZk3169dPf/7553XHmJWVpe7du8vFxUXbtm274f6sXLlSjz32WL5nVuT9Tfzuu+/Mv4lNmjQxj88XX3yhJk2ayNHRUX5+ftq7d+8N+5GkChUq6L777ss3t0nSP/7xD23dulVnzpy5aTtlAWeiS0hGRkaBv1w5OTn5yubPn69GjRrpiSeekJ2dnb766iu9+uqrys3NVXh4uEVscnKy+vbtq5deekmDBg1S/fr19cwzz2jChAlKSUmRp6enGbt161adPn1affr0McteeuklLVq0SAMGDNBrr72m48ePa+7cudq7d6++//57lS9fXmlpaerSpYvuu+8+jRkzRq6urvr111/1xRdfSJLuu+8+zZ8/X6+88oqefPJJPfXUU5Kkpk2bSrryoTHvrOuYMWNUsWJFLVu2TMHBwfr888/15JNPSpJSUlLUqVMnXbp0yYxbsGCB1WedEhIS9Msvv2jAgAHy9PTUoUOHtGDBAh06dEjbt2/PNxn16tVL9erV09tvv23+AXnrrbc0fvx49e7dWy+++KL++OMPzZkzRx06dNDevXvNCXr58uX6+++/9corr6hq1arauXOn5syZo99//13Lly+/4TiTkpKUnZ2d74/U1T+nL774Qq+++qoqV66s2bNnKyQkRCdOnFDVqlUlXbnccNu2berTp49q1qypX3/9VfPnz1fHjh11+PBhVahQwaJNPz+/Un/5Eu5uzHF3do7r3bu3Ro0apWXLlmnkyJEWdcuWLVOXLl1UpUoVSTL3t1WrVoqKilJqaqpmzZql77//3mIeKwrPPPOMGjRooHfeeUdr1qzRlClT5Obmpg8++ECPPfaYpk6dqtjYWL3++utq1aqVealnbm6unnjiCW3dulWDBw9WgwYNdODAAc2YMUM//vjjTeerbdu2qWrVqte9X3DIkCHy9PTUxIkTtX37di1YsECurq7atm2batWqpbfffltr167Vu+++q8aNG6tfv34W77906ZLS09OVnZ2tgwcPaty4capcubIefvjhfH21aNEi3z2FQFFYvXq1HnjgAbVu3bpQ77t06ZICAwPVrl07vffee6pQoYIMw9ATTzyhb7/9VmFhYWrWrJnWrVunkSNH6tSpU5oxY4YkqX379vryyy+VmZkpZ2dnGYah77//Xra2ttqyZYueeOIJSVdOJtja2qpt27Y3HMvZs2fVtWtXPfXUU+rdu7f++9//avTo0WrSpIm6desm6Upy/9hjj+n//u//NHToUHl6eiouLk7ffvutVftbu3ZtJSYm6uDBgzd8Bse///1vvfjii3r44YfN2+nq1q0r6co83r59ezk7O2vUqFEqX768PvjgA3Xs2FGbNm0yfwbnzp1T+/btdeTIEQ0cOFAtWrTQn3/+qVWrVun3339XtWrV8vV74cIF9ezZU7t379Y333yjVq1aXXeMp06d0okTJ677GfGnn37Ss88+q5deeknPPfec3nvvPfXo0UMxMTF644039Oqrr0qSoqKi1Lt3byUnJ+e7UiEzM1PZ2dn6888/9emnn+rgwYN644038vXl5+cnwzC0bds2de/e/bpjLjMMFKuFCxcakm64NWrUyOI9f//9d752AgMDjfvvv9+irHbt2oYkIz4+3qI8OTnZkGTMmTPHovzVV181KlWqZLa/ZcsWQ5IRGxtrERcfH29RvmLFCkOSsWvXruvu5x9//GFIMt588818dZ07dzaaNGliXLx40SzLzc012rRpY9SrV88sGzZsmCHJ2LFjh1mWlpZmuLi4GJKM48ePX7d/wyj4uH322WeGJGPz5s1m2ZtvvmlIMvr27WsR++uvvxrlypUz3nrrLYvyAwcOGHZ2dhblBfUVFRVl2NjYGL/99tsNx/nRRx8ZkowDBw7kq5Nk2NvbGz/99JNZ9sMPP+T7eRbUf2JioiHJ+PTTT/PVvf3224YkIzU19YZjAwqLOa745jh/f3/Dz8/Pomznzp0Wv/fZ2dmGu7u70bhxY+PChQtm3OrVqw1JRmRkpFmWNxfmOX78uCHJWLhwYb6+r933vPcOHjzYLLt06ZJRs2ZNw8bG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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "run_scenario(fm, \"base-cgen_hv\")" ] }, { "cell_type": "code", "execution_count": 68, "id": "3fc85e87-6244-4c2e-9cfd-74e83f065fc2", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "running base scenario plus growing stock constraints\n" ] }, { "data": { "text/plain": [ "(
,\n", " period oha ohv ogs\n", " 0 1 93.081607 13039.534091 136551.586426\n", " 1 2 97.735687 13691.510811 133453.764565\n", " 2 3 88.427526 13691.510729 128413.423102\n", " 3 4 90.425830 12387.557414 125671.076910\n", " 4 5 90.642853 12387.557299 124871.681847\n", " 5 6 92.350775 12387.557364 124426.889792\n", " 6 7 91.844362 12387.557393 124024.129732\n", " 7 8 90.851291 12387.557367 123436.887975\n", " 8 9 90.052194 12387.557264 122106.393677\n", " 9 10 88.427526 12387.557373 120000.000163,\n", " )" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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o4ceekhr165Vnz59VLt2be3YsUNTpkzRzz//fNlctX79elWoUOGi1y7269dPAQEBGjNmjDZs2KA5c+bIx8dH69evV9WqVfXqq69q5cqVeu2111SvXj316NHD4f1nzpzR0aNHlZ2drZ07d2r48OEqV66c7rzzzjx9NW7cOM/1jYBdVqxYodtuu03NmjW7ovedOXNGERERatGihV5//XWVLl1axhg99NBD+vbbbxUVFaVGjRrpyy+/1ODBg3XgwAFNmTJFktSyZUt9+umnyszMlJeXl4wxWrdunZydnbVmzRo99NBDks4dcHB2dlbz5s0vOZYjR46oXbt2euSRR9SlSxd9/PHHGjp0qOrXr6/7779f0rkvAO677z793//9n/r376+AgADNnz9f3377bYH2t1q1akpKStLOnTsveV+QDz/8UM8884zuvPNO69K9GjVqSDqXy1u2bCkvLy8NGTJEpUqV0ptvvqnWrVvr+++/t34Gx48fV8uWLfXTTz/p6aefVuPGjfX3339r+fLl+vPPP1WxYsU8/Z48eVIdO3bU5s2b9fXXX6tp06YXHeOBAwe0b9++i84Rf/nlFz3++OPq27evnnjiCb3++uvq0KGD4uPj9fLLL+v555+XJMXGxqpLly5KTU3Nc8ZDZmamsrOz9ffff+uDDz7Qzp079fLLL+fpKzQ0VMYYrV+/Xg8++OBFx3zTMChx5s6dayRdcqlbt67De/75558824mIiDC33nqrQ1u1atWMJJOQkODQnpqaaiSZGTNmOLQ///zzpmzZstb216xZYySZefPmOcQlJCQ4tC9dutRIMps2bbrofv71119Gkhk1alSedW3atDH169c3p06dstpycnLM3XffbWrWrGm1DRgwwEgyycnJVtuhQ4eMt7e3kWT27t170f6Nyf9z++ijj4wks3r1aqtt1KhRRpLp1q2bQ+zvv/9uXFxczCuvvOLQvmPHDuPq6urQnl9fsbGxxsnJyfzxxx+XHOfbb79tJJkdO3bkWSfJuLm5mV9++cVq++GHH/L8PPPrPykpyUgyH3zwQZ51r776qpFk0tPTLzk24EqQ34ouv4WFhZnQ0FCHto0bNzr8zmdnZxs/Pz9Tr149c/LkSStuxYoVRpIZOXKk1ZabB3Pt3bvXSDJz587N0/eF+5773j59+lhtZ86cMVWqVDFOTk5mwoQJVvuRI0eMp6en6dmzp9X24YcfGmdnZ7NmzRqHfuLj440ks27dukt+Fi1atMjzWRjz//9/jIiIMDk5OVZ7WFiYcXJyMs8++2ye8d5zzz15tpObS3OXWrVqmW+//TbfsfTp08d4enpecrzA1cjIyDCSTGRkZJ51R44cMX/99Ze1nJ9Xe/bsaSSZl156yeE9y5YtM5LM+PHjHdofffRR4+TkZM07Nm3aZCSZlStXGmOM2b59u5FkOnfubJo1a2a976GHHjJ33HGH9frbb781khx+V+65554885KsrCwTEBBgOnXqZLVNmjTJSDLLli2z2k6ePGlCQkLybDM/X331lXFxcTEuLi4mLCzMDBkyxHz55ZcmOzs7T2yZMmUc8lGuyMhI4+bmZn799Ver7eDBg6ZcuXKmVatWVtvIkSONJLNkyZI828jNO7mfxeLFi82xY8fMPffcYypWrGi2bt16yf0wxpivv/7aSDKfffZZnnW5fxfXr19vtX355ZdGkvH09HSYf7755psX/ewiIiKs/Obm5mb69u3r8Dfj/P2XZCZOnHjZcd8MOHW8BJs1a5YSExPzLLlHRc53/hGO3CNF99xzj3777TdlZGQ4xAYHBysiIsKh7fbbb1ejRo20cOFCq+3s2bP6+OOP1aFDB2v7ixcvlre3t/71r3/p77//tpbQ0FCVLVvW+iYx9wjIihUr8j1CdSmHDx/WN998oy5duujYsWNWH//73/8UERGhPXv2WKc0rly5UnfddZfDUYNbbrnFOuXpcs7/3E6dOqW///7bur5ly5YteeIvvMnEkiVLlJOToy5dujh8HgEBAapZs6bDN6vn93XixAn9/fffuvvuu2WMueypOrmnsucegbpQeHi49Q2rdO7ImZeXl3777bd8+z99+rT+97//6bbbbpOPj0+++5rb16VOawKuFvmt8PPbY489ppSUFP36669W28KFC+Xu7q6OHTtKOncK/KFDh/T88887XCvZvn17hYSE6PPPP7+i/buc86/1c3FxUZMmTWSMUVRUlNXu4+OjWrVqOeSvxYsXq3bt2goJCXH42eRe53y5o1j/+9//Lpo/JSkqKsrhDKZmzZrlGVfueM8fV646deooMTFRy5Yt05AhQ1SmTJk8dx3PVb58eZ08eVL//PPPJccMXKnMzExJyvfJJK1bt9Ytt9xiLbNmzcoT89xzzzm8Xrly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lS5dOt98vHv3bjk7O1tfANaoUSPfLz/yExkZqbZt2+qpp55SuXLl8n3CxoXOnyMWlZMnT8oYo2PHjjn8vcwdAznuHK7RvgHkfiN14anAc+fOveJtPfbYY9qwYYPeffdd/f333w6nVUrnjgCfPXtW48aNy/Pe3LuuSueK2Au/Ecs97ST3USy5d7m+cJLm5+en1q1b680333RIdLn++usv698PPPCANmzYoI0bNzqsv9gRqfPl97lJ0tSpUy/73lyPPPKIXFxcNGbMmDzbMcZYpz7m15cxRtOmTStQP6GhoXJzc9PmzZsLPLYLubi45BnjjBkzLnr0KSUlxeGaHqA4kN+uLr/l6tSpk1xcXPTRRx9p8eLFevDBBx2ejdukSRP5+fkpPj7e4TFZX3zxhX766Se1b9/+otv28vJSxYoVresyc73xxhsFHl9BdenSRQcOHNBbb72VZ93Jkyd14sSJS74/LCxMR44cyffaw2tx9OjRfK/Tf/vttyUp38sjtmzZorvvvtvWcQC5hgwZotKlS+vpp59Wenp6nvVXclT4gQce0NmzZzVz5kyH9ilTpsjJycm6A7h07oh5qVKlNHHiRPn6+lqnPbds2VIbNmzQ999/X6Cj2QUVERGhAwcOOFxPferUqXxzRH6+/fbbfD+LlStXSnK8nKZMmTJ5crmLi4vatm2rTz/91OEsgfT0dM2fP18tWrSwLtHp1KmTdWr6hfIbQ48ePTR9+nTFx8dr6NChl92XypUrKygo6JrmiBeT32U5R48e1SeffKKgoKA8l1qlpKTIycmJ+eP/wxHtG0Dbtm3l5uamDh06qG/fvjp+/Ljeeust+fn55TuRu5QuXbroxRdf1IsvvihfX988R1zuuece9e3bV7Gxsdq2bZvatm2rUqVKac+ePVq8eLGmTZumRx99VO+//77eeOMNPfzww6pRo4aOHTumt956S15eXnrggQcknTvFs06dOlq4cKFuv/12+fr6ql69eqpXr55mzZqlFi1aqH79+urdu7duvfVWpaenKykpSX/++ad++OEHSef+oHz44Ydq166d+vfvbz3+plq1ag7X8uTHy8tLrVq1UlxcnE6fPq3KlSvrq6++uqJvBGvUqKHx48dr2LBh+v333xUZGaly5cpp7969Wrp0qfr06aMXX3xRISEhqlGjhl588UUdOHBAXl5e+uSTTy55KuP5PDw81LZtW3399dcaO3Zsgcd3vgcffFAffvihvL29VadOHSUlJenrr7+2Tjk636FDh7R9+/Y8j04Cihr57eryWy4/Pz/de++9mjx5so4dO5bny4XciXGvXr10zz33qFu3btbjvapXr66BAwdecvvPPPOMJkyYoGeeeUZNmjTR6tWr9fPPPxf0R1JgTz75pBYtWqRnn31W3377rZo3b66zZ89q9+7dWrRokfXs9Itp3769XF1d9fXXX1uP6LHDd999pxdeeEGPPvqoatasqezsbK1Zs0ZLlixRkyZN8lwLm5KSosOHD1s3owPsVrNmTc2fP1/dunVTrVq11L17dzVs2FDGGO3du1fz58+Xs7NzvpehXahDhw6699579Z///Ee///67GjZsqK+++kqffvqpBgwY4HAT1tKlSys0NFQbNmywnqEtnTuifeLECZ04ccLWQrtv376aOXOmunXrpv79+6tSpUqaN2+edVPHy5350q9fP/3zzz96+OGHFRISouzsbK1fv14LFy5U9erV1atXLys2NDRUX3/9tSZPnqzAwEAFBwerWbNmGj9+vBITE9WiRQs9//zzcnV11ZtvvqmsrCyH534PHjxYH3/8sTp37qynn35aoaGhOnz4sJYvX674+Pg8l5dIUkxMjDIzM/Wf//xH3t7e+T5K63wdO3bU0qVL8xzhv1b333+/qlSpombNmsnPz0/79u3T3LlzdfDgQYcbjOZKTExU8+bN851b3pQK8Y7muEq5jxu52KNj7rnnnjyPv1m+fLlp0KCB8fDwMNWrVzcTJ0407777bp5HwFSrVs20b9/+kv03b97cSDLPPPPMRWPmzJljQkNDjaenpylXrpypX7++GTJkiDl48KAxxpgtW7aYbt26mapVqxp3d3fj5+dnHnzwQbN582aH7axfv96EhoYaNze3PI+D+fXXX02PHj1MQECAKVWqlKlcubJ58MEHzccff+ywje3bt5t77rnHeHh4mMqVK5tx48aZd955p0CPv/nzzz/Nww8/bHx8fIy3t7fp3Lmz9WiC/B5N89dff+W7nU8++cS0aNHClClTxpQpU8aEhISY6Ohok5qaasX8+OOPJjw83JQtW9ZUrFjR9O7d23oMV36Px7nQkiVLjJOTk9m3b59DuyQTHR2dJ75atWoOj6M4cuSI6dWrl6lYsaIpW7asiYiIMLt3784TZ4wxs2fPNqVLlzaZmZmXHRdwJchv5xRFfsv11ltvGUmmXLly+T6OxRhjFi5caO644w7j7u5ufH19Tffu3c2ff/7pEHPh472MOffotaioKOPt7W3KlStnunTpYg4dOlTgHNqzZ09TpkyZPOPJ7/9Bdna2mThxoqlbt65xd3c35cuXN6GhoWbMmDEmIyPjsp/DQw89ZNq0aePQdrH/jwUd7y+//GJ69Ohhbr31VuPp6Wk8PDxM3bp1zahRo8zx48fzjGHo0KGmatWqDo8SAwrDL7/8Yp577jlz2223GQ8PD+Pp6WlCQkLMs88+a7Zt2+YQe7HfQ2OMOXbsmBk4cKAJDAw0pUqVMjVr1jSvvfZavv+HBw8enO+jnW677TYjyeExWMZc/PFeF/7u546xWrVqDm2//fabad++vfH09DS33HKL+fe//20++eQTI8ls2LDhUh+P+eKLL8zTTz9tQkJCTNmyZY2bm5u57bbbTL9+/fI81nT37t2mVatWxtPT00hymDNt2bLFREREmLJly5rSpUube++91+FRWrn+97//mZiYGFO5cmXj5uZmqlSpYnr27Gn+/vtvh89i8eLFDu8bMmSIkWRmzpx5yf3ZsmWLkZTnEYgX+7uY39wx95GNr732mtU2c+ZM06JFC1OxYkXj6upqbrnlFtOhQweHR+DmOnr0qHFzczNvv/32Jcd6M3EyppDuLADAVmfPnlWdOnXUpUuXfE9ttdMdd9yh1q1ba8qUKYXaDwAUlTVr1qh169bavXv3RZ8UUZiysrJUvXp1vfTSS+rfv3+R9w/cDKZOnaqBAwfqzz//VOXKlYt7OEWqTZs2CgwM1Icfflgs/U+dOlVxcXH69ddfudnj/0OhDVxHFi5cqOeee0779u275J2Nr0VCQoIeffRR/fbbbxd9zBEAXI9yT4Ms6HWcdoqPj9err76qPXv2XPYxcAAu78I7Xp86dUp33HGHzp49WyiXsJR0ycnJatmypfbs2XPJG1kWhtOnT6tGjRp66aWX9Pzzzxdp3yUZhTYAAACA68r999+vqlWrqlGjRsrIyNB///tf7dq1S/PmzdPjjz9e3MMDuBkaAAAAgOtLRESE3n77bc2bN8+6vG7BggV5bvoIFBeOaAMAAAAAYCOeow0AAAAAgI0otAEAAAAAsNF1eY12Tk6ODh48qHLlytn6UHYANw9jjI4dO6bAwEA5O9843zmSHwFcqxs1P0rkSADX5kry43VZaB88eFBBQUHFPQwAN4D9+/erSpUqxT0M25AfAdjlRsuPEjkSgD0Kkh+vy0K7XLlyks7toJeXVzGPBsD1KDMzU0FBQVY+uVGQHwFcqxs1P0rkSADX5kry43VZaOee6uPl5UWSBHBNbrRTB8mPAOxyo+VHiRwJwB4FyY831oU3AAAAKLDVq1erQ4cOCgwMlJOTk5YtW3bR2GeffVZOTk6aOnWqQ/vhw4fVvXt3eXl5ycfHR1FRUTp+/LhDzPbt29WyZUt5eHgoKChIcXFxeba/ePFihYSEyMPDQ/Xr19fKlSsd1htjNHLkSFWqVEmenp4KDw/Xnj17rnrfAaAwXXGhfbmEXJAkWJCEDABF5XqaaAKAnU6cOKGGDRtq1qxZl4xbunSpNmzYoMDAwDzrunfvrl27dikxMVErVqzQ6tWr1adPH2t9Zmam2rZtq2rVqiklJUWvvfaaRo8erTlz5lgx69evV7du3RQVFaWtW7cqMjJSkZGR2rlzpxUTFxen6dOnKz4+XsnJySpTpowiIiJ06tQpGz4JALCZuUIrV640//nPf8ySJUuMJLN06VKH9RMmTDDe3t5m2bJl5ocffjAPPfSQCQ4ONidPnrRi2rVrZxo2bGg2bNhg1qxZY2677TbTrVu3Ao8hIyPDSDIZGRlXOnwAMMY45pHL5bVcS5YsMQ0bNjSBgYFmypQpDusul9cyMjKMv7+/6d69u9m5c6f56KOPjKenp3nzzTetmHXr1hkXFxcTFxdnfvzxRzN8+HBTqlQps2PHjqvaLwC4Ern578I88ueff5rKlSubnTt3mmrVqjnkvx9//NFIMps2bbLavvjiC+Pk5GQOHDhgjDHmjTfeMOXLlzdZWVlWzNChQ02tWrWs1126dDHt27d3GE+zZs1M3759jTHG5OTkmICAAPPaa69Z648ePWrc3d3NRx99VOB9JEcCuBZXkkOuuNB2ePMFE9KCJMGCJOTLIUkCuFYXyyMXK7RLwkTzWvYLAC4nv0L77Nmz5t577zVTp041xpg8+e+dd94xPj4+Dts5ffq0cXFxMUuWLDHGGPPkk0+ajh07OsR88803RpI5fPiwMcaYoKCgPF9gjhw50jRo0MAYY8yvv/5qJJmtW7c6xLRq1cq88MILBd5HciSAa3ElOcTWa7T37t2rtLQ0hYeHW23e3t5q1qyZkpKSJElJSUny8fFRkyZNrJjw8HA5OzsrOTk53+1mZWUpMzPTYQGAopKTk6Mnn3xSgwcPVt26dfOsL0heS0pKUqtWreTm5mbFREREKDU1VUeOHLFizs+fuTG5+TM/5EcAhWnixIlydXXVCy+8kO/6tLQ0+fn5ObS5urrK19dXaWlpVoy/v79DTO7ry8Wcv/789+UXkx9yJIDiYmuhXZAkWJCEfKHY2Fh5e3tbC88/BFCUSspEMz/kRwCFZevWrZo2bZree++96/YO5ORIAMXlurjr+LBhw5SRkWEt+/fvL+4hAbhJpKSklOiJJvkRQGFJSkrSoUOHVLVqVbm6usrV1VV//PGH/v3vf6t69eqSpICAAB06dMjhfWfOnNHhw4cVEBBgxaSnpzvE5L6+XMz5689/X34x+SFHAiguthbaBUmCBUnIF3J3d7eed8hzDwEUpTVr1pSYiWZ+yI8ACkvXrl21fft2bdu2zVoCAwM1ePBgffnll5KksLAwHT16VCkpKdb7vvnmG+Xk5KhZs2ZWzOrVq3X69GkrJjExUbVq1VL58uWtmFWrVjn0n5iYqLCwMElScHCwAgICHGIyMzOVnJxsxeSHHAmguNhaaBckCRYkIQNASfHkk0+WmIkmANjt+PHjVm6Tzt1vZ/v27ZIkX19f1atXz2EpVaqUAgICVKtWLUlS7dq11a5dO/Xu3VsbN27UunXrFBMTo65du1qPAnv88cfl5uamqKgo7dq1SwsXLtS0adM0aNAgaxz9+/dXQkKCJk2apN27d2v06NHavHmzYmJiJElOTk4aMGCAxo8fr+XLl2vHjh3q0aOHAgMDFRkZWXQfGAAU1JXeae3YsWNm69atZuvWrUaSmTx5stm6dav5448/jDHnHu/l4+NjPv30U7N9+3bTsWPHfB/vdccdd5jk5GSzdu1aU7NmTR7vBaBInZ9HLpfXLnThXXeNuXxeO3r0qPH39zdPPvmk2blzp1mwYIEpXbp0nsd7ubq6mtdff9389NNPZtSoUTzeC0Ch+vbbb42kfJf88kh++e9///uf6datmylbtqzx8vIyvXr1MseOHXOI+eGHH0yLFi2Mu7u7qVy5spkwYUKebS9atMjcfvvtxs3NzdStW9d8/vnnDutzcnLMiBEjjL+/v3F3dzdt2rQxqampV7S/5EgA16JQH+91sYTcs2dPY0zBkmBBEvKlkCQBXKvz88jl8tqFinOieSX7BQBX40bOIzfyvgEofFeSQ5yMMaZIDp3bKDMzU97e3srIyOBaGwBX5UbNIzfqfgEoOjdyHrmR9w1A4buSHOJaRGO6aVR/6XNbt/f7hPa2bg8AiktR5UfyMAA7kVMAXI3r4vFeAAAAAABcLyi0AQAAAACwEYU2AAAAAAA2otAGAAAAAMBGFNoAAAAAANiIQhsAAAAAABvxeC8AAACgGNn9CDGJx4gBxY0j2gAAAAAA2IhCGwAAAAAAG1FoAwAAAABgIwptAAAAAABsRKENAAAAAICNKLQBAAAAALDRTfV4L7sfncBjEwDcKMiPAAAA9uGINgAAAAAANrqpjmjj5mT3kTqJo3UAAAAALo5CGwAAALgJcJkQUHQotAGb8McLAAAAgMQ12gAAAAAA2IpCGwAAAAAAG3HqOIoVp1tfGT4vAAAAoOSj0MZFUdQBAAAAwJWj0AaQB1+yAACAq8EcAjiHa7QBAAAAALARR7QBAAAAXDfsPmouceQc9qPQBgAAAIALcBo8rgWFNgAAAAAUA47O37gotK9D/ELiRsC3xLieFcX/36LK9dfjvvB5XXsfAG4u5JWix83QAAAAAACwEYU2AAAAAAA24tRxAACAm9Tq1av12muvKSUlRf/3f/+npUuX6r777pMknT59WkOHDtXKlSv122+/ydvbW+Hh4ZowYYICAwOtbRw+fFj9+vXTZ599JmdnZ3Xq1EnTpk1T2bJlrZjt27crOjpamzZt0i233KJ+/fppyJAhDmNZvHixRowYod9//101a9bUxIkT9cADD1jrjTEaNWqU3nrrLR09elTNmzfX7NmzVbNmzUL+lAAUBKenO+KINoCb3urVq9WhQwcFBgbKyclJy5Yts9blTjTr16+vMmXKKDAwUD169NDBgwcdtnH48GF1795dXl5e8vHxUVRUlI4fP+4Qs337drVs2VIeHh4KCgpSXFxcnrEsXrxYISEh8vDwUP369bVy5cpC2WcAkKQTJ06oYcOGmjVrVp51//zzj7Zs2aIRI0Zoy5YtWrJkiVJTU/XQQw85xHXv3l27du1SYmKiVqxYodWrV6tPnz7W+szMTLVt21bVqlVTSkqKXnvtNY0ePVpz5syxYtavX69u3bopKipKW7duVWRkpCIjI7Vz504rJi4uTtOnT1d8fLySk5NVpkwZRURE6NSpU4XwyQDAtaHQBnDTu54mmgBgp/vvv1/jx4/Xww8/nGedt7e3EhMT1aVLF9WqVUt33XWXZs6cqZSUFO3bt0+S9NNPPykhIUFvv/22mjVrphYtWmjGjBlasGCB9YXkvHnzlJ2drXfffVd169ZV165d9cILL2jy5MlWX9OmTVO7du00ePBg1a5dW+PGjVPjxo01c+ZMSeeOZk+dOlXDhw9Xx44d1aBBA33wwQc6ePCgw5ejAFBSUGgDuOldLxNNAChuGRkZcnJyko+PjyQpKSlJPj4+atKkiRUTHh4uZ2dnJScnWzGtWrWSm5ubFRMREaHU1FQdOXLEigkPD3foKyIiQklJSZKkvXv3Ki0tzSHG29tbzZo1s2Lyk5WVpczMTIcFAIoC12gDwBW60onmww8/fNGJ5sSJE3XkyBGVL19eSUlJGjRokENfERERlzxak5WVpaysLOs1k0gAheXUqVMaOnSounXrJi8vL0lSWlqa/Pz8HOJcXV3l6+urtLQ0KyY4ONghxt/f31pXvnx5paWlWW3nx5y/jfPfl19MfmJjYzVmzJgr3VUAJdT19JhjjmgDwBW4lolmfhPE3HWXirncJNLb29tagoKCrm0HASAfp0+fVpcuXWSM0ezZs4t7OAU2bNgwZWRkWMv+/fuLe0gAbhIU2gBQQCVxoskkEkBhy819f/zxhxITE60vGSUpICBAhw4dcog/c+aMDh8+rICAACsmPT3dISb39eVizl9//vvyi8mPu7u7vLy8HBYAKAoU2gBQACVhopkfJpEAClNu7tuzZ4++/vprVahQwWF9WFiYjh49qpSUFKvtm2++UU5Ojpo1a2bFrF69WqdPn7ZiEhMTVatWLZUvX96KWbVqlcO2ExMTFRYWJkkKDg5WQECAQ0xmZqaSk5OtGAAoSSi0AeAySspEEwDsdvz4cW3btk3btm2TdO6mY9u3b5d0Lvc9+uij2rx5s+bNm6ezZ88qLS1NaWlpys7OliTVrl1b7dq1U+/evbVx40atW7dOMTEx6tq1q/Ws7ccff1xubm6KiorSrl27tHDhQk2bNs3hnhT9+/dXQkKCJk2apN27d2v06NHavHmzYmJiJElOTk4aMGCAxo8fr+XLl2vHjh3q0aOHAgMDFRkZWXQfGAAUEDdDA3DTO378uH755Rfr9d69e7Vt2zb5+vqqUqVKevTRR7VlyxatWLHCmmhKkq+vr9zc3BwmmvHx8Tp9+nS+E80xY8YoKipKQ4cO1c6dOzVt2jRNmTLF6rd///665557NGnSJLVv314LFizQ5s2bHR4BBgB22rx5s+69917r9fnF78GDB7V8+XJJUqNGjRze9+2336p169aSzj1VISYmRm3atJGzs7M6deqk6dOnW7He3t766quvFB0drdDQUFWsWFEjR450eATi3Xffrfnz52v48OF6+eWXVbNmTS1btkz16tWzYoYMGaITJ06oT58+Onr0qFq0aKGEhAR5eHjY+ZEAgC0otAHc9C420ezZs6dGjx5doiaaAGCn1q1byxjj0JaZmSlvb29Vq1Ytz7r8+Pr6av78+ZeMadCggdasWXPJmM6dO6tz584XXe/k5KSxY8dq7Nixlx0TABQ3Cm0AN738JprnK0kTTQAAAJR8XKMNAAAAAICNKLQBAAAAALARhTYAAAAAADai0AYAAAAAwEYU2gAAAAAA2IhCGwAAAAAAG9leaJ89e1YjRoxQcHCwPD09VaNGDY0bN87h8TjGGI0cOVKVKlWSp6enwsPDtWfPHruHAgAAAABAkbO90J44caJmz56tmTNn6qefftLEiRMVFxenGTNmWDFxcXGaPn264uPjlZycrDJlyigiIkKnTp2yezgAAAAAABQpV7s3uH79enXs2FHt27eXJFWvXl0fffSRNm7cKOnc0eypU6dq+PDh6tixoyTpgw8+kL+/v5YtW6auXbvaPSQAAAAAAIqM7Ue07777bq1atUo///yzJOmHH37Q2rVrdf/990uS9u7dq7S0NIWHh1vv8fb2VrNmzZSUlJTvNrOyspSZmemwAAAAAABQEtl+RPull15SZmamQkJC5OLiorNnz+qVV15R9+7dJUlpaWmSJH9/f4f3+fv7W+suFBsbqzFjxtg9VAAAAAAAbGf7Ee1FixZp3rx5mj9/vrZs2aL3339fr7/+ut5///2r3uawYcOUkZFhLfv377dxxAAAAAAA2Mf2I9qDBw/WSy+9ZF1rXb9+ff3xxx+KjY1Vz549FRAQIElKT09XpUqVrPelp6erUaNG+W7T3d1d7u7udg8VAAAAAADb2X5E+59//pGzs+NmXVxclJOTI0kKDg5WQECAVq1aZa3PzMxUcnKywsLC7B4OAAAA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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "run_scenario(fm, \"base-cgen_gs\")" ] }, { "cell_type": "markdown", "id": "e07c4bfa-fd62-49a3-b9c7-9c2b61d451c9", "metadata": {}, "source": [ "Ta da!" ] }, { "cell_type": "markdown", "id": "4b531d3d-e908-4612-86cf-41abe92e553f", "metadata": {}, "source": [ "## Instantiate `ForestModel` from Woodstock-format model input text files" ] }, { "cell_type": "markdown", "id": "709868de-4c7d-4e51-9f18-492fb8d13e51", "metadata": {}, "source": [ "Start by creating a new directory to hold the model definition files." ] }, { "cell_type": "markdown", "id": "83095b12-fce0-4bd4-8b88-15d12d918661", "metadata": {}, "source": [ "Woodstock models are defined in terms of a number of _sections_. The sections can be defined in a single text file, or in separate text files. We will use separate text files for each section in this example.\n", "\n", "Our model will include the following sections:\n", "\n", "LANDSCAPE\n", "AREAS\n", "YIELD\n", "ACTIONS\n", "TRANSITIONS\n", "\n", "There are other possible sections that one can include in a Woodstock model, which will not include here. This is not intended to be a comprehensive overview of Woodstock-format model definition. Refer to the Woodstock technical documentation for the complete story." ] }, { "cell_type": "markdown", "id": "c5eaed48-ed53-488e-a247-ace133a35591", "metadata": {}, "source": [ "> Note! Although we tried to make both the handed-coded model above and the Woodstock-format model below as similar as possible, a few differences have slipped in and the models are not totally equivalent (which explains why the same call to `schedule_harvest_areacontrol` produces somewhat different results. \n", "\n", "> This should not compromise the purpose of this notebook, but can be a bit distracting if you start comparing output from both parts of the example. We will try to fix this at some point to make output from both model match well enough that the differences will not be so evident to the naked eye." ] }, { "cell_type": "code", "execution_count": 69, "id": "6c738d45-ce65-4c0c-8a39-4afa6bd84234", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mkdir: cannot create directory ‘data/_woodstock_model_files’: File exists\n" ] } ], "source": [ "!mkdir data/_woodstock_model_files_tsa24_clipped" ] }, { "cell_type": "markdown", "id": "8395ca5d-2511-49e3-827a-115ae0dee0c7", "metadata": {}, "source": [ "### `LANDSCAPE` section" ] }, { "cell_type": "markdown", "id": "cc93d3f1-3f03-4367-9312-66734a09357e", "metadata": {}, "source": [ "The `LANDSCAPE` section defines themes (i.e., state variables), theme basecodes (i.e., valid state variable values), and theme aggregates (i.e., groups of state variable values within a given theme, which can include aggregates with no [documented] limit on recursion depth)." ] }, { "cell_type": "markdown", "id": "0cdfe484-2efa-4742-99f7-efdd2eef629f", "metadata": {}, "source": [ "We can start by printing `fm._theme_basecodes`, to provide a \"cheat sheet\" for the values we need to code into the `LANDSCAPE` section of our Woodstock model definition." ] }, { "cell_type": "code", "execution_count": 70, "id": "c5a44754-e10a-4ddf-9f30-5925b71c3aab", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[['tsa24_clipped'],\n", " ['1', '0'],\n", " ['2403002',\n", " '2403005',\n", " '2401001',\n", " '2401005',\n", " '2401002',\n", " '2401006',\n", " '2402005',\n", " '2402001',\n", " '2402003',\n", " '2401007',\n", " '2402007',\n", " '2403004',\n", " '2403000',\n", " '2401004',\n", " '2403003',\n", " '2403007',\n", " '2403006',\n", " '2401003',\n", " '2402004',\n", " '2402006',\n", " '2403001',\n", " '2401000',\n", " '2402002',\n", " '2402000'],\n", " ['1201', '104', '100', '204', '304'],\n", " ['2403002',\n", " '2403005',\n", " '2401001',\n", " '2401005',\n", " '2421002',\n", " '2401002',\n", " '2422004',\n", " '2401006',\n", " '2422003',\n", " '2423003',\n", " '2402005',\n", " '2402001',\n", " '2402003',\n", " '2423001',\n", " '2401007',\n", " '2422002',\n", " '2402007',\n", " '2423000',\n", " '2403004',\n", " '2421007',\n", " '2403000',\n", " '2401004',\n", " '2403003',\n", " '2403007',\n", " '2423007',\n", " '2422000',\n", " '2403006',\n", " '2423004',\n", " '2401003',\n", " '2402004',\n", " '2402006',\n", " '2422007',\n", " '2423002',\n", " '2403001',\n", " '2401000',\n", " '2402002',\n", " '2402000']]" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fm._theme_basecodes" ] }, { "cell_type": "markdown", "id": "418fb41b-986a-418e-bbde-2ac1705113c4", "metadata": {}, "source": [ "Print the THEME values to a format that we can easily copy and past into our text file to speed up coding this up." ] }, { "cell_type": "code", "execution_count": 71, "id": "96ab4937-a238-46d3-a9ef-4137c1e88d78", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2403002\n", "2403005\n", "2401001\n", "2401005\n", "2401002\n", "2401006\n", "2402005\n", "2402001\n", "2402003\n", "2401007\n", "2402007\n", "2403004\n", "2403000\n", "2401004\n", "2403003\n", "2403007\n", "2403006\n", "2401003\n", "2402004\n", "2402006\n", "2403001\n", "2401000\n", "2402002\n", "2402000\n" ] } ], "source": [ "for v in fm._theme_basecodes[2]: print(v)" ] }, { "cell_type": "code", "execution_count": 72, "id": "b8a9c4a6-1dd2-406e-ae44-401c0e640d8e", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1201\n", "104\n", "100\n", "204\n", "304\n" ] } ], "source": [ "for v in fm._theme_basecodes[3]: print(v)" ] }, { "cell_type": "code", "execution_count": 73, "id": "82d92270-b21a-4799-915b-3b46a1b5d219", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2403002\n", "2403005\n", "2401001\n", "2401005\n", "2421002\n", "2401002\n", "2422004\n", "2401006\n", "2422003\n", "2423003\n", "2402005\n", "2402001\n", "2402003\n", "2423001\n", "2401007\n", "2422002\n", "2402007\n", "2423000\n", "2403004\n", "2421007\n", "2403000\n", "2401004\n", "2403003\n", "2403007\n", "2423007\n", "2422000\n", "2403006\n", "2423004\n", "2401003\n", "2402004\n", "2402006\n", "2422007\n", "2423002\n", "2403001\n", "2401000\n", "2402002\n", "2402000\n" ] } ], "source": [ "for v in fm._theme_basecodes[4]: print(v)" ] }, { "cell_type": "code", "execution_count": 74, "id": "b3bd2911-bad8-47ae-a27d-a0a1cd710239", "metadata": { "tags": [] }, "outputs": [], "source": [ "landscape_section = \\\n", "\"\"\"\n", "*THEME Timber Supply Area (TSA)\n", "tsa24_clipped\n", "\n", "*THEME Timber Harvesting Land Base (THLB)\n", "0\n", "1\n", "\n", "*THEME Analysis Unit (AU)\n", "2402002\n", "2401007\n", "2402001\n", "2401005\n", "2402000\n", "2403004\n", "2403006\n", "2401004\n", "2401006\n", "2402004\n", "2402007\n", "2403005\n", "2401002\n", "2403007\n", "2403003\n", "2401000\n", "2402005\n", "2402006\n", "2401003\n", "2403002\n", "2402003\n", "2403000\n", "2401001\n", "2403001\n", "\n", "*THEME Leading tree species (CANFI species code)\n", "304\n", "100\n", "1201\n", "204\n", "104\n", "\n", "*THEME Yield curve ID\n", "2402002\n", "2401007\n", "2422007\n", "2402001\n", "2401005\n", "2422003\n", "2402000\n", "2403004\n", "2423004\n", "2403006\n", "2421007\n", "2423003\n", "2401004\n", "2401006\n", "2402004\n", "2421002\n", "2422004\n", "2423002\n", "2422002\n", "2402007\n", "2403005\n", "2401002\n", "2403007\n", "2423007\n", "2403003\n", "2401000\n", "2402005\n", "2402006\n", "2401003\n", "2423001\n", "2403002\n", "2402003\n", "2422000\n", "2403000\n", "2401001\n", "2423000\n", "2403001\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": 75, "id": "6cb3f630-a475-43a8-b933-15b9cfc4670a", "metadata": { "tags": [] }, "outputs": [], "source": [ "with open(\"data/_woodstock_model_files_tsa24_clipped/tsa24_clipped.lan\", \"w\") as f: f.write(landscape_section)\n" ] }, { "cell_type": "markdown", "id": "45e2538c-62e6-4d63-aa04-ef33a923ba19", "metadata": {}, "source": [ "### `AREAS` section\n", "\n", "The `AREAS` section defines the initial inventory, as area by development type and age. " ] }, { "cell_type": "markdown", "id": "087f1eb5-0e4a-45fc-8faa-5c81eac6b906", "metadata": {}, "source": [ "Rather can manually code this section (which would be long and also prone to user error), we can use a bit of code to print the required information in the correct format (which we can then copy and paste)." ] }, { "cell_type": "code", "execution_count": 76, "id": "e2dc1ac7-cfd0-44c4-8ea8-db105506423d", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "*A tsa24_clipped 0 2401000 100 2401000 85 15.182274886309896\n", "*A tsa24_clipped 0 2401000 100 2401000 95 20.653788842921458\n", "*A tsa24_clipped 0 2401000 100 2401000 105 1.109374490200082\n", "*A tsa24_clipped 0 2401000 100 2401000 125 25.73174833461312\n", "*A tsa24_clipped 0 2401000 100 2401000 135 62.02382759721078\n", "*A tsa24_clipped 0 2401000 100 2401000 145 45.32228954967691\n", "*A tsa24_clipped 0 2401000 100 2401000 155 3.052804424896181\n", "*A tsa24_clipped 0 2402005 1201 2402005 85 1.812979326195168\n", "*A tsa24_clipped 1 2401002 204 2401002 78 103.76740323520823\n", "*A tsa24_clipped 1 2401002 204 2401002 80 4.173147018452507\n", "*A tsa24_clipped 1 2401002 204 2401002 85 282.1296355046733\n", "*A tsa24_clipped 1 2401002 204 2401002 91 73.1021561503533\n", "*A tsa24_clipped 1 2401002 204 2401002 93 28.37956666951611\n", "*A tsa24_clipped 1 2401002 204 2401002 95 94.94675966211176\n", "*A tsa24_clipped 1 2401002 204 2401002 105 32.175418531537815\n", "*A tsa24_clipped 1 2401002 204 2401002 113 4.184826329641321\n", "*A tsa24_clipped 1 2401002 204 2401002 115 50.030816858894816\n", "*A tsa24_clipped 1 2401002 204 2401002 125 78.16612132001225\n", "*A tsa24_clipped 1 2401002 204 2401002 135 72.24421919373785\n", "*A tsa24_clipped 1 2401002 204 2401002 145 96.38442685503642\n", "*A tsa24_clipped 1 2401002 204 2401002 153 9.591469412607397\n", "*A tsa24_clipped 1 2401002 204 2401002 155 34.32629241113743\n", "*A tsa24_clipped 1 2401002 204 2421002 20 0.422054121206099\n", "*A tsa24_clipped 1 2402000 100 2402000 165 0.638005468748551\n", "*A tsa24_clipped 1 2402002 204 2402002 78 32.64168183055375\n", "*A tsa24_clipped 1 2402002 204 2402002 93 48.21816452980633\n", "*A tsa24_clipped 1 2402002 204 2402002 95 33.89498244313859\n", "*A tsa24_clipped 1 2402002 204 2402002 115 3.195378954654358\n", "*A tsa24_clipped 1 2403000 100 2403000 93 14.811643286926836\n", "*A tsa24_clipped 1 2403002 204 2403002 73 2.243990590272984\n", "*A tsa24_clipped 1 2403002 204 2423002 9 59.81429119367274\n", "*A tsa24_clipped 1 2403002 204 2423002 18 32.366198551219505\n" ] } ], "source": [ "for name, group in gstands:\n", " dtk, age, area = tuple(map(lambda x: str(x), name[:-1])), int(name[-1]), group[\"area\"].sum()\n", " print(\"*A\", \" \".join(v for v in dtk), age, area)" ] }, { "cell_type": "code", "execution_count": 77, "id": "362774d0-9988-432b-8a4e-ad69fd74cb62", "metadata": {}, "outputs": [], "source": [ "areas_section = \\\n", "\"\"\"\n", "*A tsa24_clipped 0 2401000 100 2401000 85 15.182274886309896\n", "*A tsa24_clipped 0 2401000 100 2401000 95 20.653788842921458\n", "*A tsa24_clipped 0 2401000 100 2401000 105 1.109374490200082\n", "*A tsa24_clipped 0 2401000 100 2401000 125 25.73174833461312\n", "*A tsa24_clipped 0 2401000 100 2401000 135 62.02382759721078\n", "*A tsa24_clipped 0 2401000 100 2401000 145 45.32228954967691\n", "*A tsa24_clipped 0 2401000 100 2401000 155 3.052804424896181\n", "*A tsa24_clipped 0 2402005 1201 2402005 85 1.812979326195168\n", "*A tsa24_clipped 1 2401002 204 2401002 78 103.76740323520823\n", "*A tsa24_clipped 1 2401002 204 2401002 80 4.173147018452507\n", "*A tsa24_clipped 1 2401002 204 2401002 85 282.1296355046733\n", "*A tsa24_clipped 1 2401002 204 2401002 91 73.1021561503533\n", "*A tsa24_clipped 1 2401002 204 2401002 93 28.37956666951611\n", "*A tsa24_clipped 1 2401002 204 2401002 95 94.94675966211176\n", "*A tsa24_clipped 1 2401002 204 2401002 105 32.175418531537815\n", "*A tsa24_clipped 1 2401002 204 2401002 113 4.184826329641321\n", "*A tsa24_clipped 1 2401002 204 2401002 115 50.030816858894816\n", "*A tsa24_clipped 1 2401002 204 2401002 125 78.16612132001225\n", "*A tsa24_clipped 1 2401002 204 2401002 135 72.24421919373785\n", "*A tsa24_clipped 1 2401002 204 2401002 145 96.38442685503642\n", "*A tsa24_clipped 1 2401002 204 2401002 153 9.591469412607397\n", "*A tsa24_clipped 1 2401002 204 2401002 155 34.32629241113743\n", "*A tsa24_clipped 1 2401002 204 2421002 20 0.422054121206099\n", "*A tsa24_clipped 1 2402000 100 2402000 165 0.638005468748551\n", "*A tsa24_clipped 1 2402002 204 2402002 78 32.64168183055375\n", "*A tsa24_clipped 1 2402002 204 2402002 93 48.21816452980633\n", "*A tsa24_clipped 1 2402002 204 2402002 95 33.89498244313859\n", "*A tsa24_clipped 1 2402002 204 2402002 115 3.195378954654358\n", "*A tsa24_clipped 1 2403000 100 2403000 93 14.811643286926836\n", "*A tsa24_clipped 1 2403002 204 2403002 73 2.243990590272984\n", "*A tsa24_clipped 1 2403002 204 2423002 9 59.81429119367274\n", "*A tsa24_clipped 1 2403002 204 2423002 18 32.366198551219505\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": 78, "id": "d63d445a-b720-4633-8ff9-421fb132308e", "metadata": {}, "outputs": [], "source": [ "with open(\"data/_woodstock_model_files_tsa24_clipped/tsa24_clipped.are\", \"w\") as f: f.write(areas_section)\n" ] }, { "cell_type": "markdown", "id": "473cefbc-cc18-4e4d-b8e2-5c4274a06e70", "metadata": { "tags": [] }, "source": [ "### `YIELDS` section\n", "\n", "The `YIELDS` section defines yield curves and links these to development types.\n", "\n", "We can use a bit of code to output the required data in the correct format. It would be possible to manually code this (like any other section) but would be long and error prone." ] }, { "cell_type": "code", "execution_count": 79, "id": "7fcb6ece-075d-4a9b-a3ba-0ec9ff0d4bb1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "*Y ? ? 2403007 ? 2403007\n", "s0100 1 6 28 61 100 143 186 226 264 297 326 350 370 384 395 402 404 404 401 395 387 378 367 354 341 327 313 298 284 269 269\n", "*Y ? ? 2403007 ? 2423007\n", "s0100 1 0 0 0 30 99 177 244 300 343 378 407 432 452 468 483 495 505 513 519 523 526 529 531 534 535 535 535 535 536 535\n" ] } ], "source": [ "yname = \"s%04d\" % int(au_row.canfi_species)\n", "for is_managed in (0, 1):\n", " curve_id = au_row.unmanaged_curve_id if not is_managed else au_row.managed_curve_id\n", " mask = (\"?\", \"?\", str(au_id), \"?\", str(curve_id))\n", " points = [(r.x, r.y) for _, r in curve_points_table.loc[curve_id].iterrows() if not r.x % period_length and r.x <= max_age]\n", " c = ws3.core.Curve(yname, points=points, type=\"a\", is_volume=True, xmax=fm.max_age, period_length=period_length)\n", " print(\"*Y\", \" \".join(v for v in mask))\n", " print(yname, \"1\", \" \".join(str(int(c[x])) for x in range(fm.period_length, 300+fm.period_length, fm.period_length)))" ] }, { "cell_type": "code", "execution_count": 80, "id": "d7842c82-546e-47bf-be8f-c1cf546c24d0", "metadata": {}, "outputs": [], "source": [ "yields_section = \\\n", "\"\"\"\n", "*Y ? ? 2401000 ? 2401000\n", "s0100 1 0 1 5 10 16 24 33 43 54 64 75 85 95 104 113 121 127 133 138 143 146 148 150 151 151 150 149 147 145 145\n", "*Y ? ? 2401000 ? 2401000\n", "s0100 1 0 1 5 10 16 24 33 43 54 64 75 85 95 104 113 121 127 133 138 143 146 148 150 151 151 150 149 147 145 145\n", "*Y ? ? 2402000 ? 2402000\n", "s0100 1 4 13 27 42 58 76 93 110 126 141 156 169 182 193 203 211 219 225 231 235 238 240 242 242 242 241 240 238 235 235\n", "*Y ? ? 2402000 ? 2422000\n", "s0100 1 0 0 0 0 3 18 46 79 112 144 171 195 215 234 248 261 272 282 290 298 305 311 316 320 325 328 330 333 335 336\n", "*Y ? ? 2403000 ? 2403000\n", "s0100 1 3 15 37 67 99 133 166 197 225 250 272 290 305 316 325 330 333 333 331 328 322 316 308 299 289 279 268 257 246 246\n", "*Y ? ? 2403000 ? 2423000\n", "s0100 1 0 0 0 5 38 88 142 190 231 265 293 315 334 350 365 377 388 396 403 410 416 420 424 427 429 431 433 433 433 433\n", "*Y ? ? 2401001 ? 2401001\n", "s0304 1 0 0 0 0 0 0 2 5 11 18 25 32 40 47 54 62 66 70 75 79 83 88 92 94 95 97 97 97 97 97\n", "*Y ? ? 2401001 ? 2401001\n", "s0304 1 0 0 0 0 0 0 2 5 11 18 25 32 40 47 54 62 66 70 75 79 83 88 92 94 95 97 97 97 97 97\n", "*Y ? ? 2402001 ? 2402001\n", "s0304 1 0 0 0 0 0 3 8 17 29 43 57 71 84 96 107 117 125 132 138 143 146 149 150 151 151 150 149 146 144 144\n", "*Y ? ? 2402001 ? 2402001\n", "s0304 1 0 0 0 0 0 3 8 17 29 43 57 71 84 96 107 117 125 132 138 143 146 149 150 151 151 150 149 146 144 144\n", "*Y ? ? 2403001 ? 2403001\n", "s0304 1 0 0 1 6 16 30 48 68 87 106 123 140 154 167 178 188 195 201 206 209 210 211 210 209 206 203 199 195 190 190\n", "*Y ? ? 2403001 ? 2423001\n", "s0304 1 0 0 0 0 0 0 6 21 43 70 97 126 152 176 199 218 236 252 265 277 288 297 306 314 321 326 331 336 339 340\n", "*Y ? ? 2401002 ? 2401002\n", "s0204 1 0 4 12 25 40 57 73 89 103 116 128 137 145 152 157 160 162 163 163 162 160 158 154 151 147 142 137 132 127 127\n", "*Y ? ? 2401002 ? 2421002\n", "s0204 1 0 0 0 0 1 7 23 47 71 94 114 132 146 157 166 173 179 183 187 190 191 192 193 194 195 195 195 196 196 196\n", "*Y ? ? 2402002 ? 2402002\n", "s0204 1 5 18 37 57 79 101 122 142 160 176 191 203 214 222 229 233 237 238 239 238 236 233 229 224 219 213 207 201 194 194\n", "*Y ? ? 2402002 ? 2422002\n", "s0204 1 0 0 0 1 16 55 100 143 180 208 231 247 261 271 278 282 286 288 289 290 291 292 292 293 293 293 293 293 293 293\n", "*Y ? ? 2403002 ? 2403002\n", "s0204 1 8 29 59 93 129 165 200 232 261 287 309 328 343 355 363 368 371 371 369 365 359 352 344 334 324 313 301 290 277 277\n", "*Y ? ? 2403002 ? 2423002\n", "s0204 1 0 0 0 24 98 184 257 312 353 380 400 413 422 428 433 435 436 437 436 434 433 431 430 429 428 428 428 428 428 428\n", "*Y ? ? 2401003 ? 2401003\n", "s0304 1 0 0 0 1 6 15 27 42 58 74 89 103 116 127 137 145 152 157 161 164 166 167 166 165 163 161 158 154 150 150\n", "*Y ? ? 2401003 ? 2401003\n", "s0304 1 0 0 0 1 6 15 27 42 58 74 89 103 116 127 137 145 152 157 161 164 166 167 166 165 163 161 158 154 150 150\n", "*Y ? ? 2402003 ? 2402003\n", "s0304 1 0 0 2 9 22 42 67 94 120 145 168 189 207 222 235 245 252 258 261 262 261 259 255 251 245 238 231 223 215 215\n", "*Y ? ? 2402003 ? 2422003\n", "s0304 1 0 0 0 0 0 6 25 52 84 117 150 180 206 228 247 263 277 290 301 311 319 327 333 338 342 347 350 353 357 358\n", "*Y ? ? 2403003 ? 2403003\n", "s0304 1 6 25 53 86 120 155 189 220 249 275 297 315 330 342 350 356 359 359 357 354 348 341 333 324 314 304 293 281 270 270\n", "*Y ? ? 2403003 ? 2423003\n", "s0304 1 0 0 0 1 17 60 114 170 221 264 299 327 352 372 390 404 416 426 435 443 450 456 461 466 469 471 473 474 475 476\n", "*Y ? ? 2401004 ? 2401004\n", "s0104 1 0 0 0 0 0 2 6 12 22 33 45 58 70 83 94 105 115 125 133 139 145 150 154 157 159 160 160 159 158 158\n", "*Y ? ? 2401004 ? 2401004\n", "s0104 1 0 0 0 0 0 2 6 12 22 33 45 58 70 83 94 105 115 125 133 139 145 150 154 157 159 160 160 159 158 158\n", "*Y ? ? 2402004 ? 2402004\n", "s0104 1 0 0 0 1 4 11 22 35 51 68 87 106 125 142 159 174 188 199 209 216 222 225 227 228 226 224 220 215 209 209\n", "*Y ? ? 2402004 ? 2422004\n", "s0104 1 0 0 0 0 0 0 5 18 37 60 85 111 134 156 176 194 210 224 236 247 257 265 273 280 286 291 296 300 303 304\n", "*Y ? ? 2403004 ? 2403004\n", "s0104 1 0 0 1 6 16 33 55 80 105 129 153 175 195 213 229 242 253 262 269 274 277 279 279 277 275 271 267 261 255 255\n", "*Y ? ? 2403004 ? 2423004\n", "s0104 1 0 0 0 0 1 10 33 63 98 133 165 195 222 245 266 284 301 316 329 341 351 360 368 374 380 384 387 390 393 394\n", "*Y ? ? 2401005 ? 2401005\n", "s1201 1 2 12 30 53 78 102 124 144 160 174 184 191 196 198 198 196 193 188 182 175 168 161 153 145 137 129 120 112 105 105\n", "*Y ? ? 2401005 ? 2401005\n", "s1201 1 2 12 30 53 78 102 124 144 160 174 184 191 196 198 198 196 193 188 182 175 168 161 153 145 137 129 120 112 105 105\n", "*Y ? ? 2402005 ? 2402005\n", "s1201 1 8 30 59 89 118 146 170 191 208 221 230 237 240 240 238 234 229 222 214 205 196 186 176 166 156 146 137 127 118 118\n", "*Y ? ? 2402005 ? 2402005\n", "s1201 1 8 30 59 89 118 146 170 191 208 221 230 237 240 240 238 234 229 222 214 205 196 186 176 166 156 146 137 127 118 118\n", "*Y ? ? 2403005 ? 2403005\n", "s1201 1 10 37 73 111 148 183 214 240 260 276 287 294 297 296 292 286 278 268 258 246 233 220 208 195 182 169 158 146 135 135\n", "*Y ? ? 2403005 ? 2403005\n", "s1201 1 10 37 73 111 148 183 214 240 260 276 287 294 297 296 292 286 278 268 258 246 233 220 208 195 182 169 158 146 135 135\n", "*Y ? ? 2401006 ? 2401006\n", "s1201 1 4 17 35 57 79 101 121 139 155 168 179 187 193 197 199 199 198 196 192 188 182 176 170 163 156 149 142 134 127 127\n", "*Y ? ? 2401006 ? 2401006\n", "s1201 1 4 17 35 57 79 101 121 139 155 168 179 187 193 197 199 199 198 196 192 188 182 176 170 163 156 149 142 134 127 127\n", "*Y ? ? 2402006 ? 2402006\n", "s1201 1 8 30 59 90 121 150 176 199 219 234 246 255 260 262 262 260 255 249 242 234 225 215 205 195 184 174 164 154 144 144\n", "*Y ? ? 2402006 ? 2402006\n", "s1201 1 8 30 59 90 121 150 176 199 219 234 246 255 260 262 262 260 255 249 242 234 225 215 205 195 184 174 164 154 144 144\n", "*Y ? ? 2403006 ? 2403006\n", "s1201 1 9 35 69 106 143 178 210 237 260 279 293 302 308 310 309 306 300 292 283 273 261 250 237 225 212 199 187 175 163 163\n", "*Y ? ? 2403006 ? 2403006\n", "s1201 1 9 35 69 106 143 178 210 237 260 279 293 302 308 310 309 306 300 292 283 273 261 250 237 225 212 199 187 175 163 163\n", "*Y ? ? 2401007 ? 2401007\n", "s0100 1 0 0 3 12 27 47 71 95 119 140 160 177 191 203 213 220 225 228 229 228 226 223 218 213 207 200 193 186 178 178\n", "*Y ? ? 2401007 ? 2421007\n", "s0100 1 0 0 0 0 3 19 49 83 118 151 180 205 226 245 261 275 286 296 305 313 320 327 332 337 341 344 347 350 352 353\n", "*Y ? ? 2402007 ? 2402007\n", "s0100 1 0 2 12 29 54 83 113 142 170 194 216 235 250 263 272 278 282 283 283 280 276 270 263 256 247 238 229 219 209 209\n", "*Y ? ? 2402007 ? 2422007\n", "s0100 1 0 0 0 2 24 65 114 161 201 235 264 288 307 323 338 351 362 371 379 385 391 396 401 405 407 410 412 413 414 415\n", "*Y ? ? 2403007 ? 2403007\n", "s0100 1 6 28 61 100 143 186 226 264 297 326 350 370 384 395 402 404 404 401 395 387 378 367 354 341 327 313 298 284 269 269\n", "*Y ? ? 2403007 ? 2423007\n", "s0100 1 0 0 0 30 99 177 244 300 343 378 407 432 452 468 483 495 505 513 519 523 526 529 531 534 535 535 535 535 536 535\n", "*YC ? ? ? ? ?\n", "totvol _SUM(s0100, s0204, s0304, s1201, s0104)\n", "swdvol _SUM(s0100, s0204, s0304, s0104)\n", "hwdvol _SUM(s1201)\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": 81, "id": "9e27d054-cd3b-4ccb-be94-bca3311b46a2", "metadata": {}, "outputs": [], "source": [ "with open(\"data/_woodstock_model_files_tsa24_clipped/tsa24_clipped.yld\", \"w\") as f: f.write(yields_section)" ] }, { "cell_type": "markdown", "id": "37e5ef58-3ce3-4130-83e4-d3aae3501ee2", "metadata": { "tags": [] }, "source": [ "### `ACTIONS` section\n", "\n", "The `ACTIONS` section defines actions (i.e., treatments). This part of our model is very simple, so it is easy to code this by hand." ] }, { "cell_type": "code", "execution_count": 82, "id": "a554ec7b-8186-4d06-8703-a7556d111770", "metadata": {}, "outputs": [], "source": [ "actions_section = \\\n", "\"\"\"\n", "ACTIONS\n", "*ACTION harvest 0\n", "*OPERABLE harvest\n", "? 1 ? ? ? _AGE >= 80 AND _AGE <= 999\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": 83, "id": "ed4f7862-bcf0-45e6-8933-80f00670a2e5", "metadata": {}, "outputs": [], "source": [ "with open(\"data/_woodstock_model_files_tsa24_clipped/tsa24_clipped.act\", \"w\") as f: f.write(actions_section)\n" ] }, { "cell_type": "markdown", "id": "40ea8f87-6f5d-4970-b5e2-724a813c31c1", "metadata": { "tags": [] }, "source": [ "### `TRANSITIONS` section\n", "\n", "The `TRANSITIONS` section defines transitions (i.e., change in theme-wise state variable values and age, induced by applying an action to an area of an age class within a development type).\n", "\n", "We have AU-wise transitions to specific TIPSY curves in this model, so easiest to use a bit of code to print out the correct data in the correcet format." ] }, { "cell_type": "code", "execution_count": 84, "id": "53903274-5bc7-49ae-b564-994fb344757d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "*CASE harvest\n", "*SOURCE ? ? 2402000 ? ?\n", "*TARGET ? ? ? ? 2422000 100\n", "*SOURCE ? ? 2403000 ? ?\n", "*TARGET ? ? ? ? 2423000 100\n", "*SOURCE ? ? 2403001 ? ?\n", "*TARGET ? ? ? ? 2423001 100\n", "*SOURCE ? ? 2401002 ? ?\n", "*TARGET ? ? ? ? 2421002 100\n", "*SOURCE ? ? 2402002 ? ?\n", "*TARGET ? ? ? ? 2422002 100\n", "*SOURCE ? ? 2403002 ? ?\n", "*TARGET ? ? ? ? 2423002 100\n", "*SOURCE ? ? 2402003 ? ?\n", "*TARGET ? ? ? ? 2422003 100\n", "*SOURCE ? ? 2403003 ? ?\n", "*TARGET ? ? ? ? 2423003 100\n", "*SOURCE ? ? 2402004 ? ?\n", "*TARGET ? ? ? ? 2422004 100\n", "*SOURCE ? ? 2403004 ? ?\n", "*TARGET ? ? ? ? 2423004 100\n", "*SOURCE ? ? 2401007 ? ?\n", "*TARGET ? ? ? ? 2421007 100\n", "*SOURCE ? ? 2402007 ? ?\n", "*TARGET ? ? ? ? 2422007 100\n", "*SOURCE ? ? 2403007 ? ?\n", "*TARGET ? ? ? ? 2423007 100\n" ] } ], "source": [ "acode = \"harvest\"\n", "print(\"*CASE\", acode)\n", "for au_id, au_row in au_table.iterrows():\n", " if not au_row.thlb: continue\n", " target_curve_id = au_row.managed_curve_id\n", " smask = \" \".join((\"?\", \"?\", str(au_id), \"?\", \"?\"))\n", " tmask = \" \".join((\"?\", \"?\", \"?\", \"?\", str(target_curve_id)))\n", " print(\"*SOURCE\", smask)\n", " print(\"*TARGET\", tmask, \"100\")" ] }, { "cell_type": "code", "execution_count": 85, "id": "ed9af8b4-6fe3-49c1-86c0-58845ea6c187", "metadata": {}, "outputs": [], "source": [ "transitions_section = \\\n", "\"\"\"\n", "*CASE harvest\n", "*SOURCE ? ? 2402000 ? ?\n", "*TARGET ? ? ? ? 2422000 100\n", "*SOURCE ? ? 2403000 ? ?\n", "*TARGET ? ? ? ? 2423000 100\n", "*SOURCE ? ? 2403001 ? ?\n", "*TARGET ? ? ? ? 2423001 100\n", "*SOURCE ? ? 2401002 ? ?\n", "*TARGET ? ? ? ? 2421002 100\n", "*SOURCE ? ? 2402002 ? ?\n", "*TARGET ? ? ? ? 2422002 100\n", "*SOURCE ? ? 2403002 ? ?\n", "*TARGET ? ? ? ? 2423002 100\n", "*SOURCE ? ? 2402003 ? ?\n", "*TARGET ? ? ? ? 2422003 100\n", "*SOURCE ? ? 2403003 ? ?\n", "*TARGET ? ? ? ? 2423003 100\n", "*SOURCE ? ? 2402004 ? ?\n", "*TARGET ? ? ? ? 2422004 100\n", "*SOURCE ? ? 2403004 ? ?\n", "*TARGET ? ? ? ? 2423004 100\n", "*SOURCE ? ? 2401007 ? ?\n", "*TARGET ? ? ? ? 2421007 100\n", "*SOURCE ? ? 2402007 ? ?\n", "*TARGET ? ? ? ? 2422007 100\n", "*SOURCE ? ? 2403007 ? ?\n", "*TARGET ? ? ? ? 2423007 100\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": 86, "id": "83253f93-9edd-4b1a-be49-609981f3e0e4", "metadata": {}, "outputs": [], "source": [ "with open(\"data/_woodstock_model_files_tsa24_clipped/tsa24_clipped.trn\", \"w\") as f: f.write(transitions_section)" ] }, { "cell_type": "markdown", "id": "cd5e79bf-78ff-4e2d-be35-061270bde2c8", "metadata": {}, "source": [ "### Create and run `ForestModel` instance" ] }, { "cell_type": "code", "execution_count": 87, "id": "63caeb20-8ea2-4a9e-9bca-623b8e08e1e1", "metadata": {}, "outputs": [], "source": [ "fm = ws3.forest.ForestModel(model_name=\"tsa24_clipped\",\n", " model_path=\"data/_woodstock_model_files_tsa24_clipped\",\n", " base_year=base_year,\n", " horizon=horizon,\n", " period_length=period_length,\n", " max_age=max_age)" ] }, { "cell_type": "code", "execution_count": 88, "id": "2b17687f-0e31-4fd7-b0ac-be84a05571ce", "metadata": {}, "outputs": [], "source": [ "fm.import_landscape_section()" ] }, { "cell_type": "code", "execution_count": 89, "id": "9b98c164-1697-44c5-8eb6-75480fb96414", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fm.import_areas_section(convert_periods_to_years=period_length)\n" ] }, { "cell_type": "code", "execution_count": 90, "id": "98118df3-ca57-4511-9b66-1cb1dca7ff7d", "metadata": {}, "outputs": [], "source": [ "fm.import_yields_section(convert_periods_to_years=period_length)\n" ] }, { "cell_type": "code", "execution_count": 91, "id": "7c578f04-2274-4cdb-bd10-17764b7309da", "metadata": {}, "outputs": [], "source": [ "fm.import_actions_section(convert_periods_to_years=period_length)\n" ] }, { "cell_type": "code", "execution_count": 92, "id": "4d3e528f-1de4-49de-a9f8-f87279004b2a", "metadata": {}, "outputs": [], "source": [ "fm.import_transitions_section(convert_periods_to_years=period_length)\n" ] }, { "cell_type": "code", "execution_count": 93, "id": "21328d8c-a905-420c-afaa-927131d4681b", "metadata": {}, "outputs": [], "source": [ "fm.reset()" ] }, { "cell_type": "code", "execution_count": 94, "id": "fdc3bf93-e461-465c-be5d-6d13dac2269f", "metadata": { "tags": [] }, "outputs": [], "source": [ "sch = schedule_harvest_areacontrol(fm)" ] }, { "cell_type": "code", "execution_count": 95, "id": "21689e1a-e3c2-4f0b-82c0-3969d9936ea6", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "(
,\n", " array([,\n", " ,\n", " ], dtype=object))" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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v2rXrq3du3dr6tSp+umnn645V23evFnlypXL897FF198UT4+PhozZowSEhI0b948eXh4aPPmzapSpYrefPNNrVixQm+//bbq1aun5557zub9Fy9eVGpqqjIzM7Vnzx6NHDlSZcqU0QMPPJBjrPvuuy/H/Y2AVZYtW6YaNWooKCjout538eJFhYaGqlmzZnrnnXdUsmRJGYahxx57TGvXrlWfPn3UqFEjrVy5UkOHDtWJEyc0depUSVLz5s319ddfKy0tTW5ubjIMQ99//73s7e21ceNGPfbYY5Iun3Cwt7dX06ZN883l9OnTateunZ544gl17dpVn3/+uV599VXVr19f7du3l3T5FwCtW7fW77//rpdfflk+Pj6KiYnR2rVrC3S8VatWVXx8vPbs2ZPvuiCffPKJ+vbtqwceeMC8da969eqSLs/lzZs3l5ubm4YNG6YSJUro3XffVcuWLbV+/Xrz7+Ds2bNq3ry59u3bp+eff1733Xef/vzzT33zzTf69ddfVb58+Rzjnjt3Tp06ddL27du1evVq3X///XnmeOLECR07dizP74iHDh3S008/rQEDBuiZZ57RO++8o44dOyo6OlqvvfaaBg0aJEmaMGGCunbtqgMHDuS44iEtLU2ZmZn6888/9fHHH2vPnj167bXXcowVGBgowzC0efNmPfroo3nmfNcwUOzMnz/fkJTvVrduXZv3/PPPPzn2Exoaatxzzz02bVWrVjUkGbGxsTbtBw4cMCQZM2fOtGkfNGiQUbp0aXP/GzduNCQZCxcutImLjY21af/qq68MSca2bdvyPM4//vjDkGSMGjUqR1+bNm2M+vXrG+fPnzfbsrKyjIceesioWbOm2TZ48GBDkrFlyxaz7eTJk4a7u7shyThy5Eie4xtG7p/bp59+akgyNmzYYLaNGjXKkGR0797dJvbo0aOGg4OD8cYbb9i0796923B0dLRpz22sCRMmGHZ2dsYvv/ySb57vv/++IcnYvXt3jj5JhpOTk3Ho0CGz7Ycffsjx95nb+PHx8YYk4+OPP87R9+abbxqSjJSUlHxzA64H81vhzW/BwcFGYGCgTdvWrVtt/s9nZmYaXl5eRr169Yxz586ZccuWLTMkGVFRUWZb9jyY7ciRI4YkY/78+TnGvvrYs9/bv39/s+3ixYtG5cqVDTs7O+Ott94y20+fPm24uroaPXv2NNs++eQTw97e3ti4caPNONHR0YYk4/vvv8/3s2jWrFmOz8Iw/u/fY2hoqJGVlWW2BwcHG3Z2dsYLL7yQI9+HH344x36y59LsrVatWsbatWtzzaV///6Gq6trvvkCN+LMmTOGJCMsLCxH3+nTp40//vjD3K6cV3v27GlIMoYPH27znqVLlxqSjPHjx9u0P/nkk4adnZ35vWPbtm2GJGPFihWGYRjGrl27DElGly5djKCgIPN9jz32mNG4cWPz9dq1aw1JNv9XHn744RzfSzIyMgwfHx+jc+fOZtvkyZMNScbSpUvNtnPnzhkBAQE59pmbVatWGQ4ODoaDg4MRHBxsDBs2zFi5cqWRmZmZI7ZUqVI281G2sLAww8nJyTh8+LDZ9ttvvxllypQxWrRoYbZFRUUZkowvv/wyxz6y553sz2LJkiXG33//bTz88MNG+fLljZ07d+Z7HIZhGKtXrzYkGd9++22Ovuyfi5s3bzbbVq5caUgyXF1dbb5/vvvuu3l+dqGhoeb85uTkZAwYMMDmZ8aVxy/JmDhx4jXzvhtw6XgxNnv2bMXFxeXYss+KXOnKMxzZZ4oefvhh/fzzzzpz5oxNrL+/v0JDQ23a7r33XjVq1EiLFi0y2y5duqTPP/9cHTt2NPe/ZMkSubu761//+pf+/PNPcwsMDFTp0qXN3yRmnwFZtmxZrmeo8nPq1Cl999136tq1q/7++29zjL/++kuhoaE6ePCgeUnjihUr9OCDD9qcNahQoYJ5ydO1XPm5nT9/Xn/++ad5f8uOHTtyxF+9yMSXX36prKwsde3a1ebz8PHxUc2aNW1+s3rlWOnp6frzzz/10EMPyTCMa16qk30pe/YZqKuFhISYv2GVLp85c3Nz088//5zr+BcuXNBff/2lGjVqyMPDI9djzR4rv8uagBvF/Hbr57ennnpKiYmJOnz4sNm2aNEiOTs7q1OnTpIuXwJ/8uRJDRo0yOZeyQ4dOiggIEDLly+/ruO7livv9XNwcFCTJk1kGIb69Oljtnt4eKhWrVo289eSJUtUu3ZtBQQE2PzdZN/nfK2zWH/99Vee86ck9enTx+YKpqCgoBx5Zed7ZV7Z6tSpo7i4OC1dulTDhg1TqVKlcqw6nq1s2bI6d+6c/vnnn3xzBq5XWlqaJOX6ZJKWLVuqQoUK5jZ79uwcMQMHDrR5vWLFCjk4OOill16yaf/3v/8twzDMS8AbN26s0qVLa8OGDZIun7nOvjR6x44d+ueff2QYhjZt2qTmzZtf8zhKly6tZ555xnzt5OSkBx54wOb/XmxsrCpVqmSeLZcuLzhY0Mf3/etf/1J8fLwee+wx/fDDD5o0aZJCQ0NVqVKlXG/judqlS5e0atUqhYWF6Z577jHbK1asqKefflqbNm0y/z6++OILNWzY0Lxa6UpXXzl55swZtW3bVvv379e6devUqFGja+Zyre+IderUUXBwsPk6+0x769atVaVKlRztuc1xb731llatWqUPPvhADz74oDIzM3Xx4sUccXx3tMWl48XYAw88oCZNmuRoL1u2bI5/wN9//71GjRql+Pj4HD+8z5w5I3d3d/O1v79/ruM99dRTeu2113TixAlVqlRJ69at08mTJ/XUU0+ZMQcPHtSZM2ds7l+5UvYCEg8//LA6d+6sMWPGaOrUqWrZsqXCwsL09NNPy9nZOd/jPnTokAzD0Ouvv67XX389z3EqVaqkX375JdfLo2rVqpXvGNlOnTqlMWPG6LPPPsux+MXVX+ClnJ/dwYMHZRiGatasmev+S5QoYf752LFjioqK0jfffJPjfs/cxsqNkce9gVdOlNnKli1rM865c+c0YcIEzZ8/XydOnLDZV27jZ/ff7s/NRfHE/Hbr57cuXbooMjJSixYt0muvvSbDMLRkyRLzfkJJ5j3cue0zICAg14W+bsbVc5W7u7tcXFxyXDrp7u5us1bGwYMHtW/fPvPe96sVZPGivObPvPKSZHMfa3b71fO3JLm5uZn3f3fq1EkxMTHq1KmTduzYoYYNG+aaB3MrrFamTBlJyvWXPNlPEklJSbEpYrM5OjqqcuXKNm2//PKLfH19zf1mq127ttkvXf4lVHBwsDZu3CjpcqHdvHlzNWvWTJcuXVJCQoK8vb116tSpAhXalStXzvH/o2zZsjaPJfvll19UvXr1HHHX81SB+++/X19++aUyMzP1ww8/6KuvvtLUqVP15JNPKikpSXXq1MnzvX/88Yf++eefXOfO2rVrKysrS8ePH1fdunV1+PBhde7cuUA5DR48WOfPn9fOnTtVt27dAh+LVPDviPnNb5JyneOuLPifeeYZ3XffferVq1eO534zv9mi0L4DHD58WG3atFFAQICmTJkiPz8/OTk5acWKFZo6dWqOhXPyur/vqaee0ogRI7RkyRINHjxYixcvlru7u82KgllZWfLy8tLChQtz3Uf2lyA7Ozt9/vnnSkhI0LfffquVK1fq+eef1+TJk5WQkJDvc6Cz833llVdynJnKZtXjWbp27arNmzdr6NChatSokUqXLq2srKwcj2XJdvVnl5WVZS7s4eDgkCM++zgvXbqkf/3rXzp16pReffVVBQQEqFSpUjpx4oR69ep1zcWNsu+zPn36dI4fhJJyHVuynXRffPFFzZ8/X4MHD1ZwcLDc3d1lZ2enbt265Tp+9kSb271DQGFhfrtxvr6+at68uRYvXqzXXntNCQkJOnbsmCZOnGjJ/vP6InXp0qU835PbXFWQ+SsrK0v169fXlClTco29+gvj1cqVK5frl8dr5ZBbe34Fe7YnnnhCzz77rD777LMchfbp06dVsmRJVsOH5dzd3VWxYkXt2bMnR1/2L+1yWwBVkpydna+5Enl+mjVrZj5DeePGjfrPf/4jDw8P1atXTxs3bpS3t7ckFajQLsicYCUnJyfdf//9uv/++3Xvvfeqd+/eWrJkiUaNGnVLxstPp06d9Nlnn+mtt97Sxx9/XKC/kyu/I+bmeuY36dqfs5OTkx577DG99dZbOnfunM1cxndHWxTad4Bvv/1WGRkZ+uabb2x+a1XQBSGy+fv764EHHtCiRYsUERGhL7/8UmFhYTZnaKpXr67Vq1eradOmBfqS8OCDD+rBBx/UG2+8oZiYGPXo0UOfffaZ+vbtm+eXtOxLcEqUKJHvKtvS5cUsDh48mKP9wIED18zt9OnTWrNmjcaMGaOoqCizPbf95aV69eoyDEP+/v66995784zbvXu3fvrpJ3300Uc2i+jExcUVaJyAgABJ0pEjR1S/fv0C53elzz//XD179rRZzff8+fO5rhqZPVb58uXzPIMEFAbmtxub37I99dRTGjRokA4cOKBFixapZMmS6tixo80Y2fu8+nFTBw4cyHPxMOn/LhG8eg65Fc/nrV69un744Qe1adPmhs6UBAQE6IsvvrA8r7xkZGQoKysr16uFjhw5Yp4RBKzWoUMHvf/++9q6dWuui/Fdj6pVq2r16tX6+++/bc5q79+/3+zP1rx5c2VmZurTTz/ViRMnzIK6RYsWZqF97733mgX3zapatap+/PFHGYZhMyccOnTopvabfaXV77//brblNudUqFBBJUuWzHU+3r9/v+zt7c1fAFavXj3XX37kJiwsTG3btlWvXr1UpkyZXJ+wcbUrvyMWlnPnzskwDP399982Py+zc2COu4x7tO8A2b+RuvpS4Pnz51/3vp566iklJCToww8/1J9//mlzWaV0+QzwpUuXNG7cuBzvzV51VbpcxF79G7Hsy06yH8WSvcr11V/SvLy81LJlS7377rs2E122P/74w/zzI488ooSEBG3dutWmP68zUlfK7XOTpGnTpl3zvdmeeOIJOTg4aMyYMTn2YxiGeeljbmMZhqHp06cXaJzAwEA5OTlp+/btBc7tag4ODjlynDlzZp5nnxITE23u6QGKAvPbjc1v2Tp37iwHBwd9+umnWrJkiR599FGbZ+M2adJEXl5eio6OtnlM1v/+9z/t27dPHTp0yHPfbm5uKl++vHlfZrY5c+YUOL+C6tq1q06cOKH33nsvR9+5c+eUnp6e7/uDg4N1+vTpXO89vBmpqam53qf//vvvS1Kut0fs2LFDDz30kKV5ANmGDRumkiVL6vnnn1dKSkqO/us5K/zII4/o0qVLmjVrlk371KlTZWdnZ64ALl0+Y16iRAlNnDhRnp6e5mXPzZs3V0JCgtavX1+gs9kFFRoaqhMnTtjcT33+/Plc54jcrF27NtfPYsWKFZJsb6cpVapUjrncwcFBbdu21ddff21zlUBKSopiYmLUrFkz8xadzp07m5emXy23HJ577jnNmDFD0dHRevXVV695LJUqVZKfn99NfUfMS2635aSmpuqLL76Qn59fjlutEhMTZWdnx/fH/48z2neAtm3bysnJSR07dtSAAQN09uxZvffee/Ly8sr1i1x+unbtqldeeUWvvPKKPD09c5xxefjhhzVgwABNmDBBSUlJatu2rUqUKKGDBw9qyZIlmj59up588kl99NFHmjNnjh5//HFVr15df//9t9577z25ubnpkUcekXT5Es86depo0aJFuvfee+Xp6al69eqpXr16mj17tpo1a6b69eurX79+uueee5SSkqL4+Hj9+uuv+uGHHyRd/oHyySefqF27dnr55ZfNx99UrVrV5l6e3Li5ualFixaaNGmSLly4oEqVKmnVqlXX9RvB6tWra/z48RoxYoSOHj2qsLAwlSlTRkeOHNFXX32l/v3765VXXlFAQICqV6+uV155RSdOnJCbm5u++OKLfC9l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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_scenario(compile_scenario(fm))" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.3" } }, "nbformat": 4, "nbformat_minor": 5 }