From 7cd6a986998098ae08b9caceedb860b2b74c8098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20B=C3=A1rtek?= Date: Thu, 23 Sep 2021 09:36:13 +0200 Subject: [PATCH] Do not get stuck due to adaptive capping (#749) * Do not get stuck due to adaptive capping If the incumbent has all the instance-seed pairs covered and the challenger is ruled out due to adaptive capping, we cancel all the runs on the current challenger to proceed to the next challenger. * Intensification: Discard capped challenger early Discard a challenger that is ruled out due to adaptive capping immediately. Do not wait for the incumbent to be saturated. Once a challenger is ruled out due to adaptive capping, it would always fail the adaptive cap test in the future. * Remove an unnecessary statement Simplify the fix to issue #748. Follows a suggestion by @dengdifan: https://github.com/automl/SMAC3/pull/749/files#r691892051 * Update the documentation of the challenger discard process Follow a suggestion by @dengdifan: https://github.com/automl/SMAC3/pull/749#issuecomment-908186602 --- smac/intensification/intensification.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/smac/intensification/intensification.py b/smac/intensification/intensification.py index da742431b..18cadb15f 100644 --- a/smac/intensification/intensification.py +++ b/smac/intensification/intensification.py @@ -404,6 +404,9 @@ def get_next_run(self, # If no more time, stage transition is a must if not is_there_time_due_to_adaptive_cap: + # Since the challenger fails to outperform the incumbent due to adaptive capping, + # we discard all the forthcoming runs. + self.to_run = [] self.stage = IntensifierStage.RUN_INCUMBENT self.logger.debug( "Stop challenger itensification due "