Skip to contents

Defines a management objective with a shared value function that translates raw metrics into 0–100 satisfaction scores. The value function is shared across all stakeholder groups: they may weight the objective differently, but agree on what "good" and "bad" look like for the metric.

Usage

sdm_objective(name, description, direction, range, value_function)

Arguments

name

Character. Human-readable name (e.g., "Hunter Opportunity").

description

Character. Plain language description (e.g., "Number of licenses issued").

direction

Character. One of "higher_is_better" or "lower_is_better".

range

Numeric vector of length 2. The c(min, max) bounds for normalization. Metric values outside this range are clamped.

value_function

Numeric vector of length 5. Token allocations across 5 equal bins of the range, defining the satisfaction curve shape. More tokens in a bin means satisfaction changes faster in that part of the range. Must have at least 1 token total. Common patterns:

  • c(8, 5, 4, 2, 1) – diminishing returns

  • c(4, 4, 4, 4, 4) – linear

  • c(1, 2, 4, 5, 8) – accelerating returns

Value

An sdm_objective object (named list with class "sdm_objective"). Fields: id (assigned as obj_N by sdm_scenario(), NULL until then), name, description, direction, range, value_function.

Examples

obj <- sdm_objective(
  name = "Hunter Opportunity",
  description = "Number of licenses issued",
  direction = "higher_is_better",
  range = c(0, 10000),
  value_function = c(8, 5, 4, 2, 1)
)
obj$id    # NULL until added to a scenario
#> NULL
obj$direction
#> [1] "higher_is_better"