from dataclasses import dataclass, field
from typing import Optional
from detpy.models.fitness_function import FitnessFunctionBase
from detpy.models.enums.boundary_constrain import BoundaryFixing
from detpy.models.enums.optimization import OptimizationType
@dataclass
class BaseData:
epoch: int = 100
population_size: int = 100
dimension: int = 10
lb: list = field(default_factory=lambda: [-100, -100, -100, -100, -100, -100, -100, -100, -100, -100])
ub: list = field(default_factory=lambda: [100, 100, 100, 100, 100, 100, 100, 100, 100, 100])
mode: OptimizationType = OptimizationType.MINIMIZATION
boundary_constraints_fun: BoundaryFixing = BoundaryFixing.RANDOM
function: FitnessFunctionBase = None
log_population: bool = False
parallel_processing: Optional[list] = None
[docs]
@dataclass
class DEData(BaseData):
mutation_factor: float = 0.5
crossover_rate: float = 0.5
[docs]
@dataclass
class COMDEData(BaseData):
mutation_factor: float = 0.1
crossover_rate: float = 0.1
[docs]
@dataclass
class DERLData(BaseData):
mutation_factor: float = 0.1
crossover_rate: float = 0.1
[docs]
@dataclass
class NMDEData(BaseData):
delta_f: float = 0.1
delta_cr: float = 0.1
sp: int = 10
[docs]
@dataclass
class SADEData(BaseData):
prob_f: float = 0.1
prob_cr: float = 0.1
[docs]
@dataclass
class EMDEData(BaseData):
crossover_rate: float = 0.1
[docs]
@dataclass
class IDEData(BaseData):
pass
[docs]
@dataclass
class DELBData(BaseData):
crossover_rate: float = 0.1
w_factor: float = 0.1 # control frequency of local exploration around trial and best vectors
[docs]
@dataclass
class OppBasedData(BaseData):
mutation_factor: float = 0.1
crossover_rate: float = 0.1
max_nfc: float = 0.1
jumping_rate: float = 0.1
[docs]
@dataclass
class DEGLData(BaseData):
mutation_factor: float = 0.1
crossover_rate: float = 0.1
radius: int = 10 # neighborhood size, 2k + 1 <= NP, at least k=2
weight: float = 0.1 # controls the balance between the exploration and exploitation
[docs]
@dataclass
class JADEData(BaseData):
archive_size: int = 10
mutation_factor_mean: float = 0.1
mutation_factor_std: float = 0.1
crossover_rate_mean: float = 0.1
crossover_rate_std: float = 0.1
crossover_rate_low: float = 0.1
crossover_rate_high: float = 0.1
c: float = 0.1 # describes the rate of parameter adaptation
p: float = 0.1 # describes the greediness of the mutation strategy
[docs]
@dataclass
class AADEData(BaseData):
mutation_factor: float = 0.1
crossover_rate: float = 0.1
[docs]
@dataclass
class EIDEData(BaseData):
crossover_rate_min: float = 0.1
crossover_rate_max: float = 0.1
[docs]
@dataclass
class MGDEData(BaseData):
crossover_rate: float = 0.1
mutation_factor_f: float = 0.1
mutation_factor_k: float = 0.1
threshold: float = 0.1
mu: float = 0.1
[docs]
@dataclass
class FiADEData(BaseData):
mutation_factor: float = 0.5
crossover_rate: float = 0.5
adaptive: bool = True
[docs]
@dataclass
class ImprovedDEData(BaseData):
mutation_factor: float = 0.1
crossover_rate: float = 0.5