From ee5cdd594b755553f745f8488bbc8bb25844285c Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Sun, 25 May 2025 15:03:39 +0200 Subject: [PATCH] fix(qav3): filter invalid best trials at MO optimization MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- .../freqaimodels/QuickAdapterRegressorV3.py | 17 ++++++++++------- .../user_data/strategies/QuickAdapterV3.py | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py index 233d90d..b166248 100644 --- a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py +++ b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py @@ -45,7 +45,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel): https://github.com/sponsors/robcaulk """ - version = "3.7.65" + version = "3.7.66" @cached_property def _optuna_config(self) -> dict: @@ -90,7 +90,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel): ) self._optuna_hp_value: dict[str, float] = {} self._optuna_train_value: dict[str, float] = {} - self._optuna_label_values: dict[str, dict] = {} + self._optuna_label_values: dict[str, list] = {} self._optuna_hp_params: dict[str, dict] = {} self._optuna_train_params: dict[str, dict] = {} self._optuna_label_params: dict[str, dict] = {} @@ -409,11 +409,14 @@ class QuickAdapterRegressorV3(BaseRegressionModel): f"Expected 2 objectives for {namespace} namespace, but got {n_objectives}" ) - best_trials = [ - trial - for trial in study.best_trials - if trial.values is not None and len(trial.values) == n_objectives - ] + best_trials = [] + for trial in study.best_trials: + if trial.values is not None and len(trial.values) == n_objectives: + if all( + isinstance(values, (int, float)) and np.isfinite(values) + for values in trial.values + ): + best_trials.append(trial) if not best_trials: return None diff --git a/quickadapter/user_data/strategies/QuickAdapterV3.py b/quickadapter/user_data/strategies/QuickAdapterV3.py index 0ad3a8c..280bbce 100644 --- a/quickadapter/user_data/strategies/QuickAdapterV3.py +++ b/quickadapter/user_data/strategies/QuickAdapterV3.py @@ -60,7 +60,7 @@ class QuickAdapterV3(IStrategy): INTERFACE_VERSION = 3 def version(self) -> str: - return "3.3.67" + return "3.3.68" timeframe = "5m" -- 2.43.0