FHOPS’ TOPM-inspired tactical–operational solver is formulated on an aggregate period grid and chooses harvest areas by planning unit, harvest system, and
period while carrying products through transport, facility consumption, inventory, outside purchases, and optional infrastructure/fleet modules. The equations
below mirror the implemented Pyomo model in fhops.model.milp.tactical_operational.build_tactical_operational_model and the validated contract in
fhops.planning.tactical_operational.models.TacticalOperationalScenario.
Problem statement. Given planning units, period calendars, product yields, harvest-system options, facility demand envelopes, transport arcs, external supply, and optional road/silviculture/fleet modules, choose harvest quantities and downstream flows that satisfy demand and feasibility constraints at minimum discounted delivered cost, or maximize discounted profit/NPV when product values are supplied.
Sets and indices.
\(b \in \mathcal{B}\): planning units/blocks.
\(o \in \mathcal{O}\): eligible block \(\times\) system \(\times\) period harvest options.
\(t \in \mathcal{T}\): ordered tactical–operational periods.
\(p \in \mathcal{P}\): products/species-grade classes.
\(a \in \mathcal{A}\): product transport arcs.
\(u \in \mathcal{U}\): external supply options, indexed by source/destination/product/period.
\((f,p,t) \in \mathcal{F}\): facility/product/period balance keys.
\(r \in \mathcal{R}\): optional road projects.
\(q \in \mathcal{Q}\): optional silviculture transitions.
\(e \in \mathcal{E}\): optional fleet acquisition options.
Parameters.
\(A_b\): operable area of planning unit \(b\) (ha).
\(L_o,U_o\): minimum/maximum active area for option \(o\) (ha).
\(Y_{b,p}\): product yield for block \(b\) and product \(p\) (m\(^3\)/ha).
\(K_o\): optional total production capacity for option \(o\) (m\(^3\)/period).
\(K^{fleet}_{s,t}\): base fleet capacity for system \(s\) in period \(t\) (m\(^3\)).
\(F_o,c_o\): fixed cost and variable cost per m\(^3\) for option \(o\).
\(c_a,c_u\): transport cost per m\(^3\) on arc \(a\) and delivered purchase cost per m\(^3\) for supply \(u\).
\(D^{min}_{f,p,t},D^{target}_{f,p,t},D^{max}_{f,p,t}\): facility demand envelope (m\(^3\)).
\(v_{f,p,t}\): optional delivered product value per m\(^3\) for profit objectives.
\(d_t\): discount factor for period \(t\).
\(I^0_{f,p}\): opening facility inventory (m\(^3\)).
\(C_a,C_r\): transport arc and active-road capacity (m\(^3\)/period).
\(B_r,M_r\): road build cost and maintenance cost per active period.
\(c_q\): silviculture cost per ha for transition \(q\).
\(N^{max}_e,K_e,C^{fleet}_e\): maximum units, added capacity per period, and purchase cost for fleet option \(e\).
Decision variables.
\(H_o \ge 0\): area harvested under option \(o\) (ha).
\(Z_o \in \{0,1\}\): activation indicator for option \(o\).
\(V_{o,p} \ge 0\): product volume produced by option \(o\) (m\(^3\)).
\(F_a \ge 0\): product flow on transport arc \(a\) (m\(^3\)).
\(P_u \ge 0\): external purchase quantity for supply option \(u\) (m\(^3\)).
\(C_{f,p,t} \ge 0\): facility consumption/demand fulfillment (m\(^3\)).
\(I_{f,p,t} \ge 0\): closing facility inventory (m\(^3\)).
\(R^B_{r,t},R^A_{r,t} \in \{0,1\}\): road build and available indicators when roads are enabled.
\(Q_{q,t} \ge 0\): silviculture activity area scheduled for transition \(q\) in period \(t\).
\(N_e \in \mathbb{Z}_{\ge 0}\): units purchased for fleet option \(e\).
Harvest quantity modes.
All modes enforce the physical upper bound:
Semi-continuous mode (the default) additionally enforces option-specific minimum active area:
Continuous mode omits that lower bound. Whole-block mode forces full operable area when active:
Core constraints.
Product conversion and option productivity:
Block area balance:
Fleet capacity with optional acquisition:
where \(\tau(e)\) is the purchase period sequence and \(L_e\) the economic life in periods. Purchases are bounded by \(0\le N_e\le N^{max}_e\).
Flow supply and arc capacity:
External purchase bounds:
Facility consumption bounds and target mode:
Facility inventory balance:
with \(I_{f,p,0}=I^0_{f,p}\).
Optional road module.
Road build timing, one-time build, availability, dependencies, block access, and active capacity are represented as:
Road costs enter the objective as \(\sum_{r,t}d_t(B_rR^B_{r,t}+M_rR^A_{r,t})\).
Optional silviculture module.
For each required transition \(q\) triggered by block/system harvest:
Transition area carries discounted cost \(\sum_{q,t}d_t c_q Q_{q,t}\).
Objective profiles.
Default minimum discounted delivered cost:
When demand rows include value per m\(^3\), max_discounted_profit maximizes
max_npv additionally adds declared final-period terminal inventory value:
Implementation mapping (equation blocks to code).
Equation/constraint block |
Pyomo component / helper |
Data provenance |
|---|---|---|
Harvest upper bound |
|
|
Semi-continuous minimum cut |
|
|
Whole-block mode |
|
|
Productivity cap |
|
|
Product conversion |
|
|
Block area balance |
|
|
Fleet capacity and acquisition |
|
|
Flow supply |
|
|
Arc capacity |
|
|
Purchase bounds |
|
|
Consumption bounds/targets |
|
|
Inventory balance |
|
|
Road build/availability/dependencies/access/capacity |
|
|
Silviculture fulfillment |
|
|
Objective profiles |
|
|
Bundle replay and telemetry |
|
|
This formulation is the canonical mathematical reference for the FHOPS tactical–operational MILP. Generated TeX/RST outputs are derived artifacts and should not be edited directly.