Opened 8 months ago

Closed 8 months ago

Last modified 8 months ago

#2643 closed defect (done)

Subtree crossover can fail when tree size is larger than maximum tree size

Reported by: bburlacu Owned by: mkommend
Priority: medium Milestone: HeuristicLab 3.3.14
Component: Encodings.SymbolicExpressionTreeEncoding Version: 3.3.13
Keywords: Cc:

Description

This is a weird corner case which normally doesn't happen in practice. However, the problem can appear for example when a run is paused and then the maximum tree length parameter is set to a lower value. In the extreme case, the new size limit can prevent all subtrees from the non-root parent from being swapped due to exceeded size limit. Furthermore, the maxInsertedBranchLength value as computed internally by the Cross method in SubtreeCrossover.cs can become negative.

Change History (7)

comment:1 Changed 8 months ago by bburlacu

  • Status changed from new to accepted

r14181: Prevent invalid values for maxInsertedBranchLength and maxInsertedBranchDepth in SubtreeCrossover.cs.

comment:2 Changed 8 months ago by bburlacu

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

comment:3 Changed 8 months ago by bburlacu

  • Milestone changed from HeuristicLab 3.3.14 to HeuristicLab 3.3.15

comment:4 Changed 8 months ago by mkommend

  • Milestone changed from HeuristicLab 3.3.15 to HeuristicLab 3.3.14
  • Status changed from reviewing to readytorelease

comment:5 Changed 8 months ago by mkommend

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

r14182: Merged r14181 into stable.

comment:6 Changed 8 months ago by mkommend

r14198: Corrected small bug in subtree crossover to preserve backwards compatibility.

comment:7 Changed 8 months ago by swagner

r14199: Merged r14198 into stable

Note: See TracTickets for help on using tickets.