Skip to content

← Back to updatecouplingparametermethod

UpdateCouplingParameterMethod_AugLagMultipliersAdaptiveWeights

Source: Distributed_Design_Optimizer/coordination/updatecouplingparametermethod/UpdateCouplingParameterMethod_AugLagMultipliersAdaptiveWeights.py

Standard ALC coupling parameter update method.

This module implements the standard Augmented Lagrangian Coordination update strategy for Lagrange multipliers and penalty weights.

Classes

UpdateCouplingParameterMethod_AugLagMultipliersAdaptiveWeights

Inherits from: UpdateCouplingParameterMethodInterface

Standard ALC update method for coupling parameters.

Implements the classic augmented Lagrangian update rules: - Multipliers: λ_new = λ_old + 2 * w² * c(x) - Weights: w_new = β * w_old if |c_new| > γ * |c_old|, else w_old

Attributes:

_beta: Penalty weight update factor for increasing weights (must be > 1).
_gamma: Inconsistency reduction threshold factor (must be in (0, 1)).
_initialweight: Initial value for penalty weights (must be >= 0).
_initialmultiplier: Initial value for Lagrange multipliers.

Methods

init(self, beta: float, gamma: float, initialweight: float, initialmultiplier: float) → None

Initialize the standard ALC update method.

Args:

beta: Penalty weight update factor for increasing weights.
gamma: Inconsistency reduction threshold factor.
initialweight: Initial value for penalty weights.
initialmultiplier: Initial value for Lagrange multipliers.

validate_inputs(self) → None

Validate the hyperparameters of this update method.

Raises:

ValueError: If any parameter is outside the allowed range.

update_CoordinationMultipliers(self, multiplierin: List[float], weightsin: List[float], inconsistencyin: List[float]) → None

📐 Pseudocode: Dual Update (Lagrange multiplier update) (Line 20) → Augmented Lagrangian Coordination; Dual Update (Lagrange multiplier update) (Line 22) → Consensus Augmented Lagrangian Coordination

Update Lagrange multipliers using the standard ALC rule.

Update formula: λ_new = λ_old + 2 * w² * c(x)

Args:

multiplierin: Current multiplier values to update in place.
weightsin: Current penalty weight values.
inconsistencyin: Current inconsistency values.

update_CoordinationWeights(self, weightin: List[float], inconsistencyIn: List[float], inconsistencyOldIn: List[float] | None) → None

📐 Pseudocode: Penalty Update (weight update) (Line 20) → Augmented Lagrangian Coordination; Penalty Update (weight update) (Line 22) → Consensus Augmented Lagrangian Coordination

Update penalty weights based on inconsistency progress.

If the inconsistency has not decreased sufficiently (by factor gamma), the weight is increased by factor beta.

Args:

weightin: Current weight values to update in place.
inconsistencyIn: Current inconsistency values.
inconsistencyOldIn: Previous iteration inconsistency values, or None.

get_InitialWeight(self) → float

Get the initial penalty weight value.

Returns:

The initial penalty weight value.

get_InitialMultiplier(self) → float

Get the initial Lagrange multiplier value.

Returns:

The initial Lagrange multiplier value.

print_startup_summary(self) → None

Print the augmented Lagrangian adaptive weight parameters beta and gamma at startup.

print_termination_summary(self) → None

Print the augmented Lagrangian adaptive weight parameters beta and gamma at the end.

update_state(self, other: UpdateCouplingParameterMethod_AugLagMultipliersAdaptiveWeights) → None

Update the state of this instance with values from another instance.

Args:

other: The source instance containing updated values from parallel execution.