Optimization of custom fitness function

 1from detpy.DETAlgs.data.alg_data import MGDEData, EIDEData
 2from detpy.DETAlgs.eide import EIDE
 3from detpy.DETAlgs.mgde import MGDE
 4from detpy.models.enums.basevectorschema import BaseVectorSchema
 5from detpy.models.enums.boundary_constrain import BoundaryFixing
 6from detpy.models.enums.optimization import OptimizationType
 7from detpy.models.fitness_function import FitnessFunctionBase
 8
 9
10class MyFitnessFunctionWrapper(FitnessFunctionBase):
11    def __init__(self, name):
12        super().__init__()
13        self.name = name
14        self.function = self._wrapped_fitness_func
15
16    def _wrapped_fitness_func(self, solution):
17        return MyFitnessFunc(solution)
18
19    def eval(self, params):
20        return self.function(params)
21
22
23def MyFitnessFunc(solution):
24    return solution[0] + solution[1]
25
26
27if __name__ == "__main__":
28    a = [0, 5]
29    b = [5, 10]
30    fitness_function = MyFitnessFunctionWrapper("Function name")
31
32    params = EIDEData(
33        max_nfe=1000,
34        population_size=10,
35        dimension=len(a),
36        lb=a,
37        ub=b,
38        optimization_type=OptimizationType.MINIMIZATION,
39        base_vector_schema=BaseVectorSchema.CURRENT,
40        boundary_constraints_fun=BoundaryFixing.RANDOM,
41        function=fitness_function,
42        log_population=True,
43        y=3
44    )
45    params.parallel_processing = ['thread', 5]
46
47    default2 = EIDE(params, db_conn="Differential_evolution.db", db_auto_write=False)
48    results = default2.run()
49    default2.write_results_to_database(results.epoch_metrics)