Skip to content

odys.solvers.solver_config

Solver configuration passed to EnergySystem.optimize(). Wraps common options (time limit, MIP gap, threads, presolve) and solver-specific passthrough.

See Solvers in the User Guide for installation and usage.

Solver configuration for energy system optimization.

SolverConfig

Bases: BaseModel

Configuration for optimization solvers.

Controls solver selection, common behavior like time limits and optimality gaps, and allows raw solver-specific options for advanced use cases.

Source code in src/odys/solvers/solver_config.py
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class SolverConfig(BaseModel):
    """Configuration for optimization solvers.

    Controls solver selection, common behavior like time limits and optimality
    gaps, and allows raw solver-specific options for advanced use cases.
    """

    model_config = ConfigDict(frozen=True, extra="forbid")

    solver_name: SolverName = Field(default=SolverName.HIGHS, description="Solver name.")
    time_limit: float | None = Field(default=None, gt=0, description="Max solve time in seconds.")
    mip_rel_gap: float | None = Field(default=None, ge=0, le=1, description="Relative MIP gap tolerance.")
    presolve: bool | None = Field(
        default=None,
        description="Turn solver presolve on or off. None keeps the solver's own default.",
    )
    threads: int | None = Field(default=None, gt=0, description="Number of solver threads.")
    log_output: bool = Field(default=False, description="Display solver output logs.")
    solver_options: dict[str, Any] | None = Field(
        default=None,
        description="Raw solver-specific options. Override translated common options.",
    )

SolverName

Bases: StrEnum

Supported solver names for energy system optimization.

Source code in src/odys/solvers/solver_config.py
 9
10
11
12
13
14
15
class SolverName(StrEnum):
    """Supported solver names for energy system optimization."""

    HIGHS = "highs"
    GUROBI = "gurobi"
    CPLEX = "cplex"
    SCIP = "scip"