Skip to content

← Back to coordinationmethod

Consensus_ALC

Source: Distributed_Design_Optimizer/coordination/coordinationmethod/Consensus_ALC.py

Consensus-based ALC coordination method module.

This module implements consensus-based Augmented Lagrangian Coordination for distributed multidisciplinary design optimization.

Classes

Consensus_ALC

Inherits from: CoordinationMethodBasis

Consensus ALC coordination method for distributed optimization.

This coordination method implements consensus-based Augmented Lagrangian Coordination. Each subsystem maintains its own copy of the shared coupling variables and drives them towards a common consensus value, allowing the independent subproblems to be solved fully in parallel.

Methods

init(self, convergence_indicator_innerloop: ConvergenceIndicator_Innerloop_Interface, convergence_indicator_outerloop: ConvergenceIndicator_Outerloop_Interface, updatecouplingparametermethod_outerloop: UpdateCouplingParameterMethodInterface, iterationscheme: IterationSchemeInterface) → None

Initialize the Consensus_ALC 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 Consensus_ALC coordination method.

Validates that the iteration scheme is compatible with Consensus_ALC. Validation of the update coupling parameter method and convergence indicators is delegated to LocalSubSystemConsensusALC.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[LocalSubSystemConsensusALC]

Create subsystems for consensus-based augmented 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 LocalSubSystemConsensusALC objects.

createControllerSubSystem(self, subsystemsIn: List[LocalSubSystemConsensusALC]) → SubSystemInterface | None

Create a controller subsystem for coordinating local subsystems.

Args:

subsystemsIn: List of local subsystems to be coordinated.

Returns:

None, as Consensus ALC operates without a central controller.

createMiddleLevel(self, idparent: str, idchild: str, multiprocessing_lock: object) → MiddleLevelDataStorageConsensusALC

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) → MiddleLevelDataStorageConsensusALC | 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 Consensus ALC operates without a central controller.

centralized_prepare_updateCouplingParameters(self, subsystemsIn: List[LocalSubSystemConsensusALC]) → None

Prepare centralized update of coupling parameters for all subsystems.

For Consensus ALC, 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.