Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/10/09 12:59:37 (15 years ago)
Author:
gkronber
Message:

merged r1200 and r1209 from CEDMA refactoring branch into trunk. #479 (Crossover operators create trees that are larger than the allowed max size)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.GP/Recombination/SizeFairCrossOver.cs

    r1197 r1212  
    8383      if (shorterBranches.Count > 0 && longerBranches.Count > 0) {
    8484        double pEqualLength = equalLengthBranches.Count > 0 ? 1.0 / removedBranchSize : 0.0;
    85         double pLonger = (1.0 - pEqualLength) / (longerBranches.Count * (1.0 + longerBranches.Average(p => p.branchSize) / shorterBranches.Average(p => p.branchSize)));
     85        double pLonger;
     86        if (parent.Size == maxTreeSize) {
     87          pLonger = 0.0;
     88        } else {
     89          pLonger = (1.0 - pEqualLength) / (longerBranches.Count * (1.0 + longerBranches.Average(p => p.branchSize) / shorterBranches.Average(p => p.branchSize)));
     90        }
    8691        double pShorter = (1.0 - pEqualLength - pLonger);
    8792
Note: See TracChangeset for help on using the changeset viewer.