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:
  • model (LXModel[TypeVar(TModel)]) – LXModel with relaxed goal constraints already added

  • relaxed_constraints (List[RelaxedConstraint[TypeVar(TModel)]]) – List of relaxed constraints with deviations

  • **solver_params (Any) – Additional solver 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:
  • model (LXModel[TypeVar(TModel)]) – LXModel with weighted goal objective already set

  • **solver_params (Any) – Additional solver parameters

Return type:

LXSolution[TypeVar(TModel)]

Returns:

Solution from single optimization