← Back to coordinationmethod
LC¶
Source: Distributed_Design_Optimizer/coordination/coordinationmethod/LC.py
Lagrangian Coordination (LC) method module.
This module implements the standard Lagrangian Coordination method for distributed multidisciplinary design optimization.
Classes¶
LC¶
Inherits from: CoordinationMethodBasis
Lagrangian Coordination (LC) method implementation.
This coordination method uses Lagrangian relaxation to coordinate subsystems in a distributed optimization problem. It manages Lagrangian multipliers to enforce consistency between coupled subsystems.
Methods¶
init(self, convergence_indicator_innerloop: ConvergenceIndicator_Innerloop_Interface, convergence_indicator_outerloop: ConvergenceIndicator_Outerloop_Interface, updatecouplingparametermethod_outerloop: UpdateCouplingParameterMethodInterface, iterationscheme: IterationSchemeInterface) → None
Initialize the LC coordination method.
Args:
convergence_indicator_innerloop: Convergence indicator for inner loop (e.g., ConvergenceIndicator_Innerloop_DeWit).
convergence_indicator_outerloop: Convergence indicator for outer loop (e.g., ConvergenceIndicator_Outerloop_DeWit).
updatecouplingparametermethod_outerloop: Method for updating coupling parameters in outer loop.
iterationscheme: Iteration scheme for inner loop execution.
validate_inputs(self) → None
Validate the inputs provided to the LC coordination method.
Validates that the iteration scheme is compatible with LC. Validation of the update coupling parameter method and convergence indicators is delegated to LocalSubSystemLC.validate_inputs, since those components are handed to the subsystems.
Raises:
ValueError: If any parameter is outside the allowed range.
createSubSystems(self, id_list: List[str], level_list: List[int], neighborid_list: List[List[str]], analysis_list: List[AnalysisInterface], localobjective_list: List[LocalObjectiveInterface], localconstraints_list: List[LocalConstraintsInterface], optimization_list: List[OptimizationInterface]) → List[LocalSubSystemLC]
Create subsystems for Lagrangian coordination.
Args:
id_list: List of unique identifiers for each subsystem.
level_list: List of hierarchy levels for each subsystem.
neighborid_list: List of neighbor subsystem IDs for each subsystem.
analysis_list: List of analysis objects for each subsystem.
localobjective_list: List of local objective functions for each subsystem.
localconstraints_list: List of local constraints for each subsystem.
optimization_list: List of optimization objects for each subsystem.
Returns:
List of initialized LocalSubSystemLC objects.
createControllerSubSystem(self, subsystemsIn: List[LocalSubSystemLC]) → SubSystemInterface | None
Create a controller subsystem for coordinating local subsystems.
Args:
subsystemsIn: List of local subsystems to be coordinated.
Returns:
None, as LC operates without a central controller.
createMiddleLevel(self, idparent: str, idchild: str, multiprocessing_lock: object) → MiddleLevelDataStorageLC
Create a middle level data storage for coupling between subsystems.
Args:
idparent: Identifier of the parent subsystem.
idchild: Identifier of the child subsystem.
multiprocessing_lock: Optional lock for thread-safe access in multiprocessing.
Returns:
MiddleLevelDataStorage instance for managing coupling data.
createControllerMiddleLevel(self, idparent: str, idchild: str, local_neighbors_list: List[str], multiprocessing_lock: object) → MiddleLevelDataStorageLC | None
Create middle level between controller and local subsystem.
Args:
idparent: Identifier of the parent (controller) subsystem.
idchild: Identifier of the child subsystem.
local_neighbors_list: List of neighbor IDs for the local subsystem (unused).
multiprocessing_lock: Optional lock for thread-safe access in multiprocessing.
Returns:
None, as LC operates without a central controller.
centralized_prepare_updateCouplingParameters(self, subsystemsIn: List[LocalSubSystemLC]) → None
Prepare centralized update of coupling parameters for all subsystems.
For LC, no centralized operation is required.
Args:
subsystemsIn: List of subsystems to prepare coupling parameters for.
print_beginning_of_centralized_prepare_updateCouplingParameters(self) → None
Nothing to print.