lumix.linearization.engine.LXLinearizer

class lumix.linearization.engine.LXLinearizer(model, solver_capability, config=None)[source]

Automatic linearization engine.

Transforms nonlinear expressions into linear equivalents by: - Detecting nonlinear terms in model - Checking solver capabilities - Applying appropriate linearization techniques - Adding auxiliary variables and constraints

Example

linearizer = LXLinearizer(model, solver_capability, config)

if linearizer.needs_linearization():

linearized_model = linearizer.linearize_model()

Parameters:
__init__(model, solver_capability, config=None)[source]

Initialize linearization engine.

Parameters:

Methods

__init__(model, solver_capability[, config])

Initialize linearization engine.

get_statistics()

Get linearization statistics.

linearize_model()

Linearize the entire model.

needs_linearization()

Check if model contains nonlinear terms requiring linearization.

__init__(model, solver_capability, config=None)[source]

Initialize linearization engine.

Parameters:
needs_linearization()[source]

Check if model contains nonlinear terms requiring linearization.

Return type:

bool

Returns:

True if linearization is needed

linearize_model()[source]

Linearize the entire model.

Creates a new model with: - All original variables and constraints - Auxiliary variables for linearized terms - Auxiliary constraints for linearization

Return type:

LXModel

Returns:

Linearized model

Example

linearized = linearizer.linearize_model() solution = solver.solve(linearized)

get_statistics()[source]

Get linearization statistics.

Return type:

dict

Returns:

Dictionary with counts of linearized terms