1import time
2
3from opfunu.cec_based import F12014
4
5from detpy.DETAlgs.lshade import LSHADE
6from detpy.DETAlgs.data.alg_data import LShadeData
7from detpy.models.fitness_function import FitnessFunctionOpfunu
8from detpy.models.enums import optimization, boundary_constrain
9
10fitness_fun_opf = FitnessFunctionOpfunu(
11 func_type=F12014,
12 ndim=10
13)
14
15if __name__ == "__main__":
16 # Define parameters
17 num_of_nfe = 10_000
18 population_size = 100
19 dimension = 10
20
21 # Define LSHADE parameters using LShadeData
22 params_lshade = LShadeData(
23 max_nfe=num_of_nfe,
24 population_size=population_size,
25 dimension=dimension,
26 lb=[-100] * dimension,
27 ub=[100] * dimension,
28 show_plots=True,
29 # We want the plots to be rendered (Best fitness per NFE, Average fitness per NFE, Standard deviation per NFE)
30 optimization_type=optimization.OptimizationType.MINIMIZATION,
31 boundary_constraints_fun=boundary_constrain.BoundaryFixing.RANDOM,
32 function=fitness_fun_opf,
33 log_population=True,
34 parallel_processing=['thread', 1]
35 )
36
37 # Initialize and run LSHADE
38 start_time = time.time()
39 lshade = LSHADE(params_lshade, db_conn='DE.db', db_auto_write=False)
40 results = lshade.run()
41 elapsed_time = time.time() - start_time
42
43 # Extract and display results
44 best_fitness = min(epoch.best_individual.fitness_value for epoch in results.epoch_metrics)
45 print(f"Best Fitness Value: {best_fitness}")
46 print(f"Elapsed Time: {elapsed_time:.2f} seconds")