diff --git a/src/akkudoktoreos/class_optimize.py b/src/akkudoktoreos/class_optimize.py index 918418f..0185a99 100644 --- a/src/akkudoktoreos/class_optimize.py +++ b/src/akkudoktoreos/class_optimize.py @@ -198,7 +198,7 @@ class optimization_problem: return (gesamtbilanz,) def optimize( - self, start_solution: Optional[List[float]] = None + self, start_solution: Optional[List[float]] = None, ngen: int = 400 ) -> Tuple[Any, Dict[str, List[Any]]]: """Run the optimization process using a genetic algorithm.""" population = self.toolbox.population(n=300) @@ -222,7 +222,7 @@ class optimization_problem: lambda_=200, cxpb=0.5, mutpb=0.3, - ngen=400, + ngen=ngen, stats=stats, halloffame=hof, verbose=self.verbose, @@ -244,6 +244,8 @@ class optimization_problem: start_hour: Optional[int] = None, worst_case: bool = False, startdate: Optional[Any] = None, # startdate is not used! + *, + ngen: int = 400, ) -> Dict[str, Any]: """ Perform EMS (Energy Management System) optimization and visualize results. @@ -303,7 +305,9 @@ class optimization_problem: "evaluate", lambda ind: self.evaluate(ind, ems, parameter, start_hour, worst_case), ) - start_solution, extra_data = self.optimize(parameter["start_solution"]) + start_solution, extra_data = self.optimize( + parameter["start_solution"], ngen=ngen + ) # Perform final evaluation on the best solution o = self.evaluate_inner(start_solution, ems, start_hour) diff --git a/tests/test_class_optimize.py b/tests/test_class_optimize.py index 4655aa3..647ad8a 100644 --- a/tests/test_class_optimize.py +++ b/tests/test_class_optimize.py @@ -11,7 +11,6 @@ DIR_TESTDATA = Path(__file__).parent / "testdata" @pytest.mark.parametrize( "fn_in, fn_out", [("optimize_input_1.json", "optimize_result_1.json")] ) -@pytest.mark.skip(reason="Expensive - Skipped per default") def test_optimize(fn_in, fn_out): # Load input and output data with open(DIR_TESTDATA / fn_in, "r") as f_in: @@ -26,7 +25,9 @@ def test_optimize(fn_in, fn_out): start_hour = 10 # Call the optimization function - ergebnis = opt_class.optimierung_ems(parameter=input_data, start_hour=start_hour) + ergebnis = opt_class.optimierung_ems( + parameter=input_data, start_hour=start_hour, ngen=3 + ) # Assert that the output contains all expected entries. # This does not assert that the optimization always gives the same result!