Opened 3 years ago

Closed 3 years ago

#2249 closed defect (done)

BestScopeSolutionAnalyzer chains previous best solutions in the scope

Reported by: abeham Owned by: abeham
Priority: medium Milestone: HeuristicLab 3.3.11
Component: Analysis Version: 3.3.10
Keywords: Cc:

Description

If the "BestSolution" is placed in the same scope that the analyzer clones as best solution it will create a lengthy chain. The analyzer should either not put its "BestSolution" in the scope and only keep it inside the results.

Another problem, if the scope to apply this analyzer on is the global scope it will have to clone a lot of variables such as quality charts and even the results collection will be cloned etc.

Algorithms should be designed or rewritten to always put solutions in a sub-scope of the global scope and never inside the global scope itself. This should be enforced as a design guideline for developing algorithms.

Change History (12)

comment:1 Changed 3 years ago by abeham

  • Owner set to architects
  • Status changed from new to assigned

comment:2 Changed 3 years ago by gkronber

Discussion in architects meeting: Analyzer should throw an exception if it is applied to the global scope. Subsequently, all algorithms that write solutions to the global scope should be fixed.

comment:3 Changed 3 years ago by gkronber

  • Owner changed from architects to abeham

comment:4 Changed 3 years ago by mkommend

  • Owner changed from abeham to mkommend
  • Status changed from assigned to accepted

comment:5 Changed 3 years ago by mkommend

  • Owner changed from mkommend to abeham
  • Status changed from accepted to reviewing

r11615: Refactored best scope solution analyzer.

  • Removed lookup parameters and stored solution only in the results and not in the scope.
  • Added type check for results.
  • Removed cloning of subscopes.

The BestScopeSolution does not throw an exception if it is applied on the global scope.

comment:6 Changed 3 years ago by mkommend

r11616: Removed BestScopeSolutionAnalyzer.BestKnownSolution parameter wiring in ExternalEvaluationProblem.

comment:7 Changed 3 years ago by mkommend

  • Owner changed from abeham to mkommend
  • Status changed from reviewing to assigned

comment:8 Changed 3 years ago by mkommend

  • Status changed from assigned to accepted

comment:9 Changed 3 years ago by mkommend

  • Owner changed from mkommend to abeham
  • Status changed from accepted to reviewing

r11618: Added fixed value parameter in BestScopeSolutionAnalyzer to enable changing the produced result name.

comment:10 Changed 3 years ago by abeham

  • Owner changed from abeham to mkommend

I reviewed the changes and tested the operator. The erratic behavior is still present e.g. in the LM-BFGS algorithm as still the whole scope is cloned (including the results). We could change that algorithm, but in the interest of time, I fixed the recursion in that I excluded the results collection to be cloned in a similar way to how you exclude subscopes to be cloned.

r11854: Added code to remove obsolete parameters in AfterDeserialization hook r11856: Prevent recursive cloning of best solution in results

Please have a quick look at the changes and forward to release or discuss if inappropriate in your opinion.

comment:11 Changed 3 years ago by mkommend

  • Owner changed from mkommend to abeham
  • Status changed from reviewing to readytorelease

comment:12 Changed 3 years ago by abeham

  • Resolution set to done
  • Status changed from readytorelease to closed

r11906: merged to stable

Note: See TracTickets for help on using tickets.