Opened 9 years ago

Closed 8 years ago

#1494 closed enhancement (done)

Implement ULX crossover

Reported by: abeham Owned by: abeham
Priority: high Milestone: HeuristicLab 3.3.5
Component: Encodings.PermutationEncoding Version: 3.3.5
Keywords: Cc:

Description

This crossover is described in Tate, D. M. & Smith, A. E. A genetic approach to the quadratic assignment problem Computers & Operations Research, 1995, 22, 73-83.

Change History (10)

comment:1 Changed 9 years ago by abeham

  • Status changed from new to accepted

comment:2 Changed 9 years ago by abeham

r6056

  • Added the ULX crossover for permutation encodings
  • Added an IEqualityComparer<Permutation> that will check whether two permutations are equal

comment:3 Changed 9 years ago by abeham

  • Priority changed from medium to high

comment:4 Changed 8 years ago by abeham

  • Owner changed from abeham to gkronber
  • Status changed from accepted to reviewing
  • Version changed from branch to 3.3.4

r6342

  • merged to trunk

comment:5 Changed 8 years ago by abeham

  • Owner changed from gkronber to mkommend

comment:6 Changed 8 years ago by mkommend

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

PermutationEqualityComparer

  • GetHashCode(Permutation obj) should follow the same logic as the comparison for equality
  • should derive from EqualityComparer<Permutation> instead of implementing IEqualityComparer<Permutation>
  • EqualsAbsolute(Permutation x, Permutation y) could be written as return x.SequenceEquals(y);

UniformLikeCrossOver

  • I would write the overriden Cross method before the static implementation to have a more natural reading flow.

The remaining source code looks very good.

Version 0, edited 8 years ago by mkommend (next)

comment:7 Changed 8 years ago by abeham

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

r6507

  • Made ULX crossover sealed
  • PermutationEqualityComparer
    • Now derives from EqualityComparer<Permutation>
    • Fixed the GetHashCode function to return the same hash value when the objects are equal according to the equals function. The function is probably not that efficient using string's GetHashCode, but I couldn't come up with an easier solution in time.
    • Created a unit test to test this comparer

Thanks for reviewing, the Cross method is below the static implementation in most other crossovers and manipulation operators as well.

comment:8 Changed 8 years ago by mkommend

r6512: Corrected access modifiers of the cloning and storable ctor.

comment:9 Changed 8 years ago by mkommend

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

comment:10 Changed 8 years ago by swagner

  • Resolution set to done
  • Status changed from readytorelease to closed
  • Version changed from 3.3.4 to 3.3.5
Note: See TracTickets for help on using tickets.