Skip to content

← Back to IterationSchemeInterface documentation

IterationSchemeInterface - Source Code

File: Distributed_Design_Optimizer/coordination/innerloop_iterationscheme/IterationSchemeInterface.py

# Copyright (C) The DistributedDesignOptimizer Contributors
# Licensed under the GNU General Public License v3.0. See LICENSE file for details.
"""Interface module for inner loop iteration schemes.

This module defines the abstract base class for iteration schemes that
control how subsystems are executed during inner loop iterations.
"""

from typing import List, Tuple
from abc import ABC, abstractmethod
from Distributed_Design_Optimizer.subsystem import SubSystemInterface


class IterationSchemeInterface(ABC):
    """Abstract base class for inner loop iteration schemes.

    Defines the interface for different strategies to execute hierarchic
    subsystems during inner loop iterations.
    """

    @abstractmethod
    def run_innerloop_jobs_multiprocessing(self, subsystemsIn: List[SubSystemInterface]) -> Tuple[List[SubSystemInterface], List[int]]:
        """Execute inner loop jobs using multiprocessing.

        Args:
            subsystemsIn: List of subsystems to execute.

        Returns:
            Tuple containing the list of executed subsystems and their indices.
        """

    @abstractmethod
    def print_startup_summary(self) -> None:
        """Print the iteration scheme configuration at startup."""

    @abstractmethod
    def print_termination_summary(self) -> None:
        """Print the iteration scheme configuration at the end."""

    @abstractmethod
    def print_beginning_of_run_innerloop_jobs_multiprocessing(self) -> None:
        """Print a banner before executing inner loop jobs via multiprocessing."""