File size: 679 Bytes
315d4ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from dataclasses import dataclass, field

@dataclass
class EvolutionConfig:
    target_cn: float = 50.0
    maximize_cn: bool = False
    minimize_ysi: bool = True

    generations: int = 6
    population_size: int = 100
    mutations_per_parent: int = 5
    survivor_fraction: float = 0.5

    batch_size: int = 100
    max_offspring_attempts: int = 10

    # Filters
    filters: dict = field(default_factory=lambda: {
        "bp": (60.0, 250.0),
        "density": (720.0, None),
        "lhv": (30.0, None),
        "dynamic_viscosity": (0.0, 2.0),
    })

    def cn_objective(self, cn: float) -> float:
        return cn if self.maximize_cn else -abs(cn - self.target_cn)