lumix.analysis.scenario.LXScenario

class lumix.analysis.scenario.LXScenario(name, modifications=<factory>, description='')[source]

Type-safe scenario definition for what-if analysis.

A scenario represents a set of modifications to a base model that allow you to explore different business conditions or assumptions.

Examples

Create a high-capacity scenario:

high_capacity = (
    LXScenario[Product]("high_capacity")
    .modify_constraint_rhs("capacity", multiply=1.5)
    .describe("Increase capacity by 50%")
)

Create a low-cost scenario:

low_cost = (
    LXScenario[Product]("low_cost")
    .modify_constraint_rhs("min_production", set_value=50.0)
    .modify_variable_bound("production", lower=10.0)
    .describe("Lower minimum production requirements")
)

Create a combined scenario:

optimistic = (
    LXScenario[Product]("optimistic")
    .modify_constraint_rhs("capacity", multiply=1.3)
    .modify_constraint_rhs("budget", add=10000.0)
    .describe("Optimistic market conditions")
)
Parameters:
__init__(name, modifications=<factory>, description='')
Parameters:
Return type:

None

Methods

__init__(name[, modifications, description])

add_custom_modification(modification)

Add custom modification.

describe(description)

Add description to scenario.

modify_constraint_rhs(constraint_name[, ...])

Modify constraint right-hand side.

modify_variable_bound(variable_name[, ...])

Modify variable bounds.

Attributes

name: str
modifications: List[LXScenarioModification]
description: str = ''
describe(description)[source]

Add description to scenario.

Parameters:

description (str) – Human-readable description

Return type:

Self

Returns:

Self for chaining

modify_constraint_rhs(constraint_name, set_value=None, add=None, multiply=None, description='')[source]

Modify constraint right-hand side.

Parameters:
  • constraint_name (str) – Name of constraint to modify

  • set_value (Optional[float]) – Set RHS to this value

  • add (Optional[float]) – Add this value to RHS

  • multiply (Optional[float]) – Multiply RHS by this factor

  • description (str) – Description of modification

Return type:

Self

Returns:

Self for chaining

Examples

# Set capacity to 1000 scenario.modify_constraint_rhs(“capacity”, set_value=1000.0)

# Increase capacity by 200 scenario.modify_constraint_rhs(“capacity”, add=200.0)

# Increase capacity by 50% scenario.modify_constraint_rhs(“capacity”, multiply=1.5)

modify_variable_bound(variable_name, lower=None, upper=None, description='')[source]

Modify variable bounds.

Parameters:
  • variable_name (str) – Name of variable to modify

  • lower (Optional[float]) – New lower bound

  • upper (Optional[float]) – New upper bound

  • description (str) – Description of modification

Return type:

Self

Returns:

Self for chaining

Examples

# Set lower bound scenario.modify_variable_bound(“production”, lower=100.0)

# Set both bounds scenario.modify_variable_bound(“inventory”, lower=50.0, upper=500.0)

add_custom_modification(modification)[source]

Add custom modification.

Parameters:

modification (LXScenarioModification) – Custom modification to add

Return type:

Self

Returns:

Self for chaining

__init__(name, modifications=<factory>, description='')
Parameters:
Return type:

None