diff --git a/src/config.py b/src/config.py
index 658afc3bd20c4d2d426e6a6ba6bae825676541bc..74eb97348c30acf608080c7d6e2fe520976c237d 100644
--- a/src/config.py
+++ b/src/config.py
@@ -18,9 +18,9 @@ MODEL_FILE = f"{MODEL_NAME}.mo"
 MODEL_PATH = os.path.join(os.getcwd(), MODEL_FILE)
 SIMULATION_STOP_TIME = 3000  # in seconds
 
-# Parameters and result variables
+# Parameters to be varied and objectives to be optimized
 PARAMETERS = ["Q_max", "T_set"]
-RESULTS = ["energy", "comfort"]
+OBJECTIVES = ["energy", "comfort"]
 MAXIMIZE = ["comfort"]  # List of objectives to maximize
 
 # Parameter range
@@ -32,6 +32,13 @@ PARAM_BOUNDS = {
 # Results precision
 PRECISION = 2  # decimal places
 
+# Optimization settings
+OPTIMIZATION_CONFIG = {
+    "ALGORITHM_NAME": 'NSGA2',  # Algorithm selection
+    "POP_SIZE": 100,            # Population size for algorithm
+    "N_GEN": 50                 # Number of generations
+}
+
 # Plot configurations
 PLOT_CONFIG = {
     "PLOT_X": "Energy Consumption",
@@ -39,15 +46,6 @@ PLOT_CONFIG = {
     "PLOT_TITLE": "Pareto Front of Energy Consumption vs Comfort"
 }
 
-# Algorithm selection
-# Options: 'pymoo.NSGA2', 'pymoo.NSGA3', 'pymoo.CMAES', 'scipy.de', 'scipy.minimize'
-OPTIMIZATION_LIBRARY = 'pymoo'
-ALGORITHM_NAME = 'NSGA2'
-
-# Optimization settings
-POP_SIZE = 50  # Population size for NSGA2
-N_GEN = 100     # Number of generations
-
 # Parallel processing
 N_JOBS = -1  # Options: '-1', '1', 'n', 'None'
     # ====================================================================
diff --git a/src/optimize_main.py b/src/optimize_main.py
index 5aabd7c3b7349d58438b417a83a4af99e05acf37..0e77a00f730661748049745e63b4a80443c416dd 100644
--- a/src/optimize_main.py
+++ b/src/optimize_main.py
@@ -14,21 +14,21 @@ from pymoo.core.problem import Problem
 from pymoo.optimize import minimize
 from optimization_libraries import initialize_algorithm
 from parallel_computing import optimization_function, cleanup_temp_dirs
-from config import (PARAMETERS, RESULTS, PARAM_BOUNDS, PRECISION, PLOT_CONFIG, 
-            OPTIMIZATION_LIBRARY, ALGORITHM_NAME, POP_SIZE, N_GEN, N_JOBS, MAXIMIZE)  # Import all configuration variables
+from config import (PARAMETERS, OBJECTIVES, MAXIMIZE, PARAM_BOUNDS, PRECISION, PLOT_CONFIG, 
+            OPTIMIZATION_CONFIG, N_JOBS)  # Import all configuration variables
 
 class OptimizationProblem(Problem):
     def __init__(self):
         self.param_names = list(PARAM_BOUNDS.keys())
-        self.result_names = RESULTS
-        self.maximize_indices = [self.result_names.index(res) for res in MAXIMIZE]
+        self.objective_names = OBJECTIVES
+        self.maximize_indices = [self.objective_names.index(res) for res in MAXIMIZE]
         n_var = len(self.param_names)
         xl = np.array([PARAM_BOUNDS[param][0] for param in self.param_names])
         xu = np.array([PARAM_BOUNDS[param][1] for param in self.param_names])
         print(f"Number of variables: {n_var}")
         print(f"Lower bounds: {xl}")
         print(f"Upper bounds: {xu}")
-        super().__init__(n_var=n_var, n_obj=len(RESULTS), n_constr=0, xl=xl, xu=xu)
+        super().__init__(n_var=n_var, n_obj=len(OBJECTIVES), n_constr=0, xl=xl, xu=xu)
 
     def _evaluate(self, X, out, *args, **kwargs):
         param_values_list = [dict(zip(self.param_names, x)) for x in X]
@@ -43,14 +43,17 @@ class OptimizationProblem(Problem):
         out["F"] = np.array(results)  # Ensure results are a 2D array
 
 # Initialize the optimization algorithm
-algorithm = initialize_algorithm(OPTIMIZATION_LIBRARY, ALGORITHM_NAME, POP_SIZE)
+algorithm = initialize_algorithm(
+        OPTIMIZATION_CONFIG['ALGORITHM_NAME'],
+        OPTIMIZATION_CONFIG.get('POP_SIZE')
+    )
 
 # Define the optimization problem
 problem = OptimizationProblem()
 
 try:
     # Run the optimization
-    res = minimize(problem, algorithm, ("n_gen", N_GEN), verbose=True)
+    res = minimize(problem, algorithm, ("n_gen", OPTIMIZATION_CONFIG['N_GEN']), verbose=True)
 finally:
     # Cleanup temporary directories
     cleanup_temp_dirs()
@@ -65,7 +68,7 @@ for i, result in enumerate(res.F):
     result = tuple(result)
     
     print(f"Solution {i}: ", end="")
-    for name, value in zip(RESULTS, result):
+    for name, value in zip(OBJECTIVES, result):
         print(f"{name.capitalize()} = {value:.{PRECISION}f}", end=", ")
     print()