lumix.goal_programming.solver.LXGoalProgrammingSolver¶
- class lumix.goal_programming.solver.LXGoalProgrammingSolver(optimizer)[source]¶
Orchestrates sequential (lexicographic) goal programming.
For weighted mode, the model transformation is handled directly in LXModel. This solver is specifically for sequential mode, which requires multiple solve iterations.
Example
>>> solver = LXGoalProgrammingSolver(optimizer) >>> solution = solver.solve_sequential(model, relaxed_constraints)
- Parameters:
optimizer (LXOptimizer)
- __init__(optimizer)[source]¶
Initialize goal programming solver.
- Parameters:
optimizer (
LXOptimizer) – LXOptimizer instance configured with solver
Methods
__init__(optimizer)Initialize goal programming solver.
solve_sequential(model, relaxed_constraints, ...)Solve using sequential/lexicographic goal programming.
solve_weighted(model, **solver_params)Solve using weighted goal programming.
- __init__(optimizer)[source]¶
Initialize goal programming solver.
- Parameters:
optimizer (
LXOptimizer) – LXOptimizer instance configured with solver
- solve_sequential(model, relaxed_constraints, **solver_params)[source]¶
Solve using sequential/lexicographic goal programming.
Solves one priority level at a time: 1. Solve priority 1, record optimal deviation values 2. Add constraints fixing priority 1 deviations to optimal values 3. Solve priority 2 with fixed priority 1 4. Repeat for all priorities
- Parameters:
- Return type:
LXSolution[TypeVar(TModel)]- Returns:
Final solution with all priorities optimized sequentially
- Raises:
ValueError – If no objectives can be built from relaxed constraints
- solve_weighted(model, **solver_params)[source]¶
Solve using weighted goal programming.
This is a simple pass-through to the standard optimizer, since the weighted objective is already built into the model.
- Parameters:
- Return type:
LXSolution[TypeVar(TModel)]- Returns:
Solution from single optimization