lumix.goal_programming.objective_builder.build_weighted_objective

lumix.goal_programming.objective_builder.build_weighted_objective(relaxed_constraints, base=10.0, exponent_offset=6)[source]

Build single weighted objective for goal programming.

Combines all priorities into one objective using exponentially decreasing weights to ensure higher priorities dominate lower priorities.

Objective: minimize sum(priority_weight[p] * goal_weight[g] * deviation[g])

Parameters:
  • relaxed_constraints (List[RelaxedConstraint]) – List of relaxed constraints with deviation variables

  • base (float) – Base for exponential priority-to-weight conversion (default: 10)

  • exponent_offset (int) – Offset for exponent (default: 6, so P1=10^6, P2=10^5)

Return type:

LXLinearExpression

Returns:

Linear expression for weighted goal programming objective

Example

Priority 1 goals get weight 10^6, priority 2 get 10^5, etc. This ensures P1 goals are effectively optimized first, then P2, etc.