Skip to main content

Seasonal Workforce Planning

LINEAR PROGRAMMING

Agriculture · Production · Tactical

A 1,200 ha grain-oilseed farm in the Châteauguay valley south of Montréal runs on a tightly seasonal labour profile: a skeleton crew through winter, a three-week seeding sprint in late April, a summer of scouting and spraying, and an all-hands harvest in September–October. Hiring too late costs yield; hiring too early costs wages. Linear programming finds the cost-optimal hire-retain-fire plan for the whole season at once, given monthly labour demand, wages, and hiring/severance frictions.

Why this decision matters

Three verified facts on Canadian agricultural labour

7.4%
peak vacancy rate in Canadian agriculture (2022) — 28,200 unfilled positions and an estimated CAD $3.5 billion in lost sales.
Canadian Agricultural Human Resource Council · AGRI LMI 2022
101,100
peak-season workers projected to be needed by 2030 in Canadian agriculture — up 15% from 2023's baseline of 87,700.
CAHRC Labour Market Forecast 2023–2030 · Forecast
71.7¢
of every revenue dollar on Canadian oilseed & grain farms in 2022 was spent on operating expenses — labour is one of the largest, most volatile components.
Statistics Canada, Farm operating revenues and expenses 2022 · The Daily, Mar 2024

Where this decision fits

Agriculture sector decision chain · tactical, pre-season horizon

Strategiccrops & fields
Workforcethis page
Plantingseed & inputs
Growingirrigation & pests
Harvestscheduling
Post-Harveststorage & market

Problem & formulation

Canonical multi-period workforce LP

OR family
Linear Programming
Complexity
P (polynomial)
Solver realism
★★★ Exact (LP)
Reference
Hanssmann & Hess (1960)

Sets & indices

SymbolMeaningDomain
\(i \in I\)Worker type (field crew, machine operator, agronomist)finite
\(t \in T\)Month in the planning horizon\(\{1, \ldots, 12\}\)

Parameters

SymbolMeaningUnit
\(d_{i,t}\)Labour demand in month \(t\) for worker type \(i\)hours
\(H\)Hours worked per full-time-equivalent per monthhrs
\(c_i\)Wage for worker type \(i\) (monthly, one FTE)CAD
\(h_i\)Hiring cost per new worker of type \(i\) (posting, training)CAD
\(f_i\)Severance cost per released worker of type \(i\)CAD
\(x_{i,0}\)Starting headcount of type \(i\) (carried from prior season)FTE

Decision variables

SymbolMeaningDomain
\(x_{i,t}\)Number of FTE of type \(i\) retained in month \(t\)\(\geq 0\)
\(y_{i,t}\)New hires of type \(i\) in month \(t\)\(\geq 0\)
\(z_{i,t}\)Releases of type \(i\) in month \(t\)\(\geq 0\)

Objective

Minimize the total labour cost over the planning horizon — wages paid, plus hiring and severance frictions:

$$\min \; \sum_{i \in I} \sum_{t \in T} \bigl( c_i \, x_{i,t} \;+\; h_i \, y_{i,t} \;+\; f_i \, z_{i,t} \bigr)$$

Constraints

Demand must be met every month, and the headcount must reconcile period to period:

$$H \cdot x_{i,t} \;\geq\; d_{i,t} \qquad \forall\, i \in I,\ t \in T \qquad \text{(demand)}$$ $$x_{i,t} \;=\; x_{i,t-1} \;+\; y_{i,t} \;-\; z_{i,t} \qquad \forall\, i \in I,\ t \in T \qquad \text{(headcount balance)}$$ $$x_{i,t},\, y_{i,t},\, z_{i,t} \;\geq\; 0 \qquad \forall\, i \in I,\ t \in T \qquad \text{(non-negativity)}$$

An integer-valued variant (\(x, y, z \in \mathbb{Z}^+\)) would make the problem a mixed-integer program; in practice the LP relaxation is near-integer for this structure and the LP solution can be rounded with negligible cost increase.

Why this formulation works

The LP is a classic network-flow problem on a monthly staircase graph: each worker type defines an independent sub-problem whose optimal structure is well known. When hiring plus firing is cheaper than carrying unused workers across a low-demand valley, the model fires and re-hires; when carrying is cheaper, it smooths. The dual variables reveal the implicit hourly rate the farm is paying at each month, useful for sensitivity analysis.

Real-world → OR mapping

How a farm manager’s vocabulary translates to the LP

On the farmIn the LP model
Field crew / tractor operator / agronomist\(i \in I\)
Each month of the growing season\(t \in T\), \(|T| = 12\)
Hours of spraying, scouting, seeding needed\(d_{i,t}\)
Standard full-time-equivalent month (≈160 hrs)\(H\)
Payroll + benefits for one FTE-month\(c_i\)
Posting + onboarding + orientation cost\(h_i\)
Severance + record-of-employment admin\(f_i\)
Headcount carried from prior winter\(x_{i,0}\)
How many workers on payroll in month \(t\)\(x_{i,t}\)
Seasonal hires brought on in month \(t\)\(y_{i,t}\)
Releases at month \(t\)\(z_{i,t}\)
Total labour cost for the yearObjective value

Interactive solver

Edit the demand profile and cost inputs; re-solve in your browser

Workforce LP solver
3 worker types × 12 months · 108 variables · closed-form valley-smoothing
★★★ LP-exact
Standard month = 40 hrs/wk × 4 wks
FTE carried from prior winter
Quebec ag FTE ≈ $17/hr
Posting, training, onboarding
Notice period + admin

Monthly labour demand (hours)

JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
NOV
DEC
Field crew
Operator
Agronomist
Total cost (CAD)
of which wages
Total hires
Total releases
Peak headcount
Field crew Operator Agronomist Monthly demand (FTE-equivalent)

Under the hood

Because worker types do not interact (no cross-type constraints), the problem decomposes into three independent single-type LPs. For each type, the closed-form valley-smoothing algorithm computes the optimal trajectory in \(\mathcal{O}(|T|^2)\) time: start from \(x_t = \lceil d_t / H \rceil\) (just meet demand), then for every valley \([t_1, t_2]\) between local peaks compare carrying cost vs. fire-and-rehire cost, and fill the valley whenever carrying is cheaper. This is provably optimal for the convex LP; a general-purpose simplex implementation would return the same trajectory modulo tie-breaking.

Reading the solution

What a farm manager actually does with the output

Three patterns to watch for

  • Smoothed plateau vs. sharp pulse. If wages are low and hire/fire costs are high, the optimal plan carries workers through off-peak months; if wages dominate, the plan fires aggressively and rehires later.
  • Staggered by worker type. Agronomists often stay on through the scouting window (May–August) while field crew peak around seeding (April–May) and harvest (September–October). The LP reveals how the two cycles overlap.
  • Shadow prices (duals). The dual of each demand constraint is the implicit hourly rate being paid in that month. When a dual is high, the farm is capacity-constrained and could profitably add labour; when it is zero, labour is slack.

Sensitivity questions the model answers instantly

  • What if the hire cost doubles (e.g., because of a tighter labour market)? — rerun with a higher \(h_i\).
  • What if a Temporary Foreign Worker programme closes late in the season? — set \(d_{i,t}\) to zero for unavailable months and rerun.
  • What if we defer harvest by two weeks? — shift the Sept/Oct peak to October/November.

Model extensions

Natural generalizations beyond the base LP

Stochastic demand

Weather-driven demand uncertainty (e.g., wet spring delays seeding) suggests a two-stage stochastic program: commit to winter headcount now, adjust \(y, z\) once the spring forecast clarifies. Recourse penalties prevent under-hiring in peak months.

See the tactical cell →
Integer headcount (MIP)

Real workers come in whole numbers. The LP relaxation here is near-integer, but a true mixed-integer program enforces \(x, y, z \in \mathbb{Z}^+\) and is solvable by branch-and-bound for the small instance sizes typical on a single farm.

Continuous family →
Shared-labour cooperative

Two or more farms with complementary peak profiles can cooperate: one crew serves both, reducing total hires. The decision problem becomes a multi-farm LP with side constraints on simultaneous assignment and travel time between farms.

Related: field routing →

Key references

Cited above · DOIs and permanent URLs

Hanssmann, F., & Hess, S. W. (1960).
“A linear programming approach to production and employment scheduling.”
Management Technology, 1(1), 46–51. doi:10.1287/mantech.1.1.46
Ahumada, O., & Villalobos, J. R. (2009).
“Application of planning models in the agri-food supply chain: A review.”
European Journal of Operational Research, 196(1), 1–20. doi:10.1016/j.ejor.2008.02.014
Nahmias, S. (2009).
Production and Operations Analysis (6th ed.), Chapter 3: Aggregate Planning.
McGraw-Hill.
Canadian Agricultural Human Resource Council (2023).
Canadian Agriculture Labour Market Forecast 2023–2030.
Canadian Agricultural Human Resource Council (2024).
Grain and Oilseed — Labour Market Information and Forecast 2023–2030.
Sector-specific companion forecast. cahrc-ccrha.ca/grain-oilseed-lmi
Statistics Canada (2024).
“Farm operating revenues and expenses, 2022.”
The Daily, 28 March 2024. www150.statcan.gc.ca
Dantzig, G. B. (1963).
Linear Programming and Extensions.
Princeton University Press. (Foundational LP text; Chapter 13 covers workforce planning.)

Need to plan seasonal labour
for your farm or cooperative?

Get in Touch
Data and numerical examples are illustrative (representative Quebec grain-oilseed farm). This is an educational tool, not production software.