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)