From 554047418e737d43bfca42b118195956c7613361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Rapin?= Date: Sun, 1 May 2022 12:38:15 +0200 Subject: [PATCH] Sample initialization in portfolio (#1400) * Sample initialization in portfolio * done * fix * fix * fix Co-authored-by: Jeremy Rapin --- nevergrad/optimization/optimizerlib.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/nevergrad/optimization/optimizerlib.py b/nevergrad/optimization/optimizerlib.py index a4998f62f..4e311094f 100644 --- a/nevergrad/optimization/optimizerlib.py +++ b/nevergrad/optimization/optimizerlib.py @@ -1447,6 +1447,7 @@ def _internal_ask_candidate(self) -> p.Parameter: self._current += 1 optim_index = self._current % len(self.optims) opt = self.optims[optim_index] + if opt.num_workers > opt.num_ask - (opt.num_tell - opt.num_tell_not_asked): break # if there are workers left, use this optimizer if k > num: @@ -1455,6 +1456,10 @@ def _internal_ask_candidate(self) -> p.Parameter: if optim_index is None: raise RuntimeError("Something went wrong in optimizer selection") opt = self.optims[optim_index] + if optim_index > 1 and not opt.num_ask and not opt._suggestions and not opt.num_tell: + # most algorithms start at 0, lets avoid that for all but the first if they have no information + opt._suggestions.append(self.parametrization.sample()) + # (hacky suggestion to avoid calling args and kwargs) candidate = opt.ask() candidate._meta["optim_index"] = optim_index return candidate