lumix.analysis.scenario.LXScenarioAnalyzer¶
- class lumix.analysis.scenario.LXScenarioAnalyzer(base_model, optimizer, include_baseline=True)[source]¶
Scenario analysis for optimization models.
Allows running multiple what-if scenarios on a base model and comparing the results to understand how different assumptions affect outcomes.
Examples
Create analyzer and add scenarios:
analyzer = LXScenarioAnalyzer(base_model, optimizer) # Add scenarios analyzer.add_scenario( LXScenario[Product]("high_capacity") .modify_constraint_rhs("capacity", multiply=1.5) ) analyzer.add_scenario( LXScenario[Product]("low_capacity") .modify_constraint_rhs("capacity", multiply=0.8) ) # Run all scenarios results = analyzer.run_all_scenarios() # Compare results print(analyzer.compare_scenarios()) # Get specific result high_cap_solution = analyzer.get_result("high_capacity")
- Parameters:
base_model (LXModel[TModel])
optimizer (LXOptimizer[TModel])
include_baseline (bool)
- __init__(base_model, optimizer, include_baseline=True)[source]¶
Initialize scenario analyzer.
- Parameters:
base_model (
LXModel[TypeVar(TModel)]) – Base optimization modeloptimizer (
LXOptimizer[TypeVar(TModel)]) – Optimizer to use for solving scenariosinclude_baseline (
bool) – Whether to include baseline (unmodified) scenario
Methods
__init__(base_model, optimizer[, ...])Initialize scenario analyzer.
add_scenario(scenario)Add scenario to analyze.
add_scenarios(*scenarios)Add multiple scenarios.
compare_scenarios([scenario_names, ...])Compare scenario results.
get_best_scenario([maximize])Get name of best scenario by objective value.
get_result(scenario_name)Get result for specific scenario.
run_all_scenarios([include_baseline])Run all scenarios.
run_scenario(scenario_name)Run single scenario.
sensitivity_to_parameter(parameter_name, values)Analyze sensitivity to a single parameter across multiple values.
Create interactive visualization for scenario comparison.
- __init__(base_model, optimizer, include_baseline=True)[source]¶
Initialize scenario analyzer.
- Parameters:
base_model (
LXModel[TypeVar(TModel)]) – Base optimization modeloptimizer (
LXOptimizer[TypeVar(TModel)]) – Optimizer to use for solving scenariosinclude_baseline (
bool) – Whether to include baseline (unmodified) scenario
- add_scenario(scenario)[source]¶
Add scenario to analyze.
- Parameters:
scenario (
LXScenario[TypeVar(TModel)]) – Scenario to add- Return type:
Self- Returns:
Self for chaining
- add_scenarios(*scenarios)[source]¶
Add multiple scenarios.
- Parameters:
*scenarios (
LXScenario[TypeVar(TModel)]) – Scenarios to add- Return type:
Self- Returns:
Self for chaining
- run_scenario(scenario_name)[source]¶
Run single scenario.
- Parameters:
scenario_name (
str) – Name of scenario to run- Return type:
LXSolution[TypeVar(TModel)]- Returns:
Solution for the scenario
- Raises:
KeyError – If scenario not found
- get_result(scenario_name)[source]¶
Get result for specific scenario.
- Parameters:
scenario_name (
str) – Name of scenario- Return type:
Optional[LXSolution[TypeVar(TModel)]]- Returns:
Solution if available, None otherwise
- compare_scenarios(scenario_names=None, include_baseline=True, sort_by_objective=True)[source]¶
Compare scenario results.
- sensitivity_to_parameter(parameter_name, values, modification_type='rhs_multiply', target_type='constraint')[source]¶
Analyze sensitivity to a single parameter across multiple values.
- Parameters:
- Return type:
Dict[float,LXSolution[TypeVar(TModel)]]- Returns:
Dictionary mapping parameter values to solutions
Examples
Analyze sensitivity to capacity multiplier:
results = analyzer.sensitivity_to_parameter( "capacity", values=[0.8, 0.9, 1.0, 1.1, 1.2, 1.3], modification_type="rhs_multiply" ) for multiplier, solution in results.items(): print(f"Capacity × {multiplier}: ${solution.objective_value:,.2f}")
- visualize()[source]¶
Create interactive visualization for scenario comparison.
Requires the visualization extra: pip install lumix-opt[viz]
- Return type:
LXScenarioCompare[TypeVar(TModel)]- Returns:
LXScenarioCompare instance
Examples
Basic usage:
analyzer = LXScenarioAnalyzer(model, optimizer) analyzer.add_scenario(scenario1) analyzer.add_scenario(scenario2) analyzer.run_all_scenarios() analyzer.visualize().show()
Comparison chart:
analyzer.visualize().plot_comparison().show()
Export to HTML:
analyzer.visualize().to_html("scenarios.html")