lumix.linearization.techniques.LXPiecewiseLinearizer

class lumix.linearization.techniques.LXPiecewiseLinearizer(config)[source]

Piecewise-linear approximation for arbitrary nonlinear functions.

Supports multiple formulation methods and adaptive breakpoint generation for improved approximation accuracy.

Parameters:

config (LXLinearizerConfig)

__init__(config)[source]

Initialize piecewise linearizer.

Parameters:

config (LXLinearizerConfig) – Linearization configuration

Methods

__init__(config)

Initialize piecewise linearizer.

approximate_function(func, var[, ...])

Create piecewise-linear approximation of arbitrary function.

__init__(config)[source]

Initialize piecewise linearizer.

Parameters:

config (LXLinearizerConfig) – Linearization configuration

approximate_function(func, var, num_segments=None, x_min=None, x_max=None, method=None, adaptive=None)[source]

Create piecewise-linear approximation of arbitrary function.

Parameters:
  • func (Callable[[float], float]) – Function to approximate (e.g., lambda x: math.exp(x))

  • var (LXVariable) – Input variable

  • num_segments (Optional[int]) – Number of linear segments (default: from config)

  • x_min (Optional[float]) – Minimum domain value (default: var.lower_bound)

  • x_max (Optional[float]) – Maximum domain value (default: var.upper_bound)

  • method (Optional[Literal['sos2', 'incremental', 'logarithmic']]) – Linearization method (default: from config)

  • adaptive (Optional[bool]) – Use adaptive breakpoints (default: from config)

Return type:

LXVariable

Returns:

Output variable representing f(var)

Raises:

ValueError – If domain bounds cannot be determined

Example:

# Exponential growth
exp_y = linearizer.approximate_function(
    lambda x: math.exp(x),
    input_var,
    num_segments=50
)