From c7eb3ec63b6187c629f45f67246f130c0f2c4468 Mon Sep 17 00:00:00 2001 From: Dominique Lasserre Date: Mon, 18 Nov 2024 20:54:39 +0100 Subject: [PATCH] optimize: Enforce start solution with at least two elements Closes #205 (#207) * mate -> cxTwoPoints needs at least two elements. --- src/akkudoktoreos/class_optimize.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/akkudoktoreos/class_optimize.py b/src/akkudoktoreos/class_optimize.py index bc0b3f5..0ec9f4e 100644 --- a/src/akkudoktoreos/class_optimize.py +++ b/src/akkudoktoreos/class_optimize.py @@ -3,7 +3,7 @@ from typing import Any, Optional, Tuple import numpy as np from deap import algorithms, base, creator, tools -from pydantic import BaseModel, Field, model_validator +from pydantic import BaseModel, Field, field_validator, model_validator from typing_extensions import Self from akkudoktoreos.class_akku import EAutoParameters, PVAkku, PVAkkuParameters @@ -40,6 +40,14 @@ class OptimizationParameters(BaseModel): raise ValueError("Input lists have different lenghts") return self + @field_validator("start_solution") + def validate_start_solution( + cls, start_solution: Optional[list[float]] + ) -> Optional[list[float]]: + if start_solution is not None and len(start_solution) < 2: + raise ValueError("Requires at least two values.") + return start_solution + class EAutoResult(BaseModel): """This object contains information related to the electric vehicle and its charging and discharging behavior."""