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 variablesbase (
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:
- 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.