Opened 6 years ago

Closed 4 years ago

#1247 closed feature request (done)

Implement RAPGA

Reported by: swagner Owned by: jkarder
Priority: high Milestone: HeuristicLab 3.3.8
Component: Algorithms.OffspringSelectionGeneticAlgorithm Version: 3.3.8
Keywords: Cc:

Description


Change History (34)

comment:1 Changed 6 years ago by swagner

  • Component changed from ### Undefined ### to Algorithms.OffspringSelectionGeneticAlgorithm
  • Status changed from new to accepted

comment:2 Changed 6 years ago by swagner

  • Status changed from accepted to assigned

comment:3 Changed 5 years ago by ascheibe

  • Owner changed from swagner to jkarder

comment:4 Changed 5 years ago by jkarder

  • Status changed from assigned to accepted

comment:5 Changed 5 years ago by jkarder

  • Version changed from 3.3.1 to branch

comment:6 Changed 5 years ago by jkarder

r8313: initial commit

comment:7 Changed 5 years ago by jkarder

r8330: initial version

comment:8 Changed 5 years ago by jkarder

r8349: added duplication control

comment:9 Changed 5 years ago by jkarder

r8354: forgot to add DuplicateSelector

comment:10 Changed 5 years ago by jkarder

r8359:

  • adjusted event handling
  • improved operator graph
  • changed default parameter values

comment:11 Changed 5 years ago by jkarder

r8377:

  • added support for batch offspring creation
  • added population size analyzer
  • improved operator graph

comment:12 Changed 5 years ago by jkarder

r8378: added offspring success analyzer

comment:13 Changed 5 years ago by jkarder

r8379: added parameters

comment:14 Changed 5 years ago by jkarder

r8385:

  • added operator that evaluates expressions
  • added selection pressure analyzer
  • fixed bug in counting of evaluated solutions

comment:15 Changed 5 years ago by jkarder

r8400: removed batch size parameter initialization in main loop

comment:16 Changed 5 years ago by jkarder

r8406:

  • added similarity calculators
  • adjusted event handling
  • reformatted code

comment:17 Changed 5 years ago by jkarder

r8407:

  • fixed event handling
  • adjusted types

comment:18 Changed 5 years ago by jkarder

r8622:

  • fixed some bugs
  • minor code improvements

comment:19 Changed 5 years ago by jkarder

r8629: added reference to algorithm description

comment:20 Changed 5 years ago by jkarder

  • Owner changed from jkarder to ascheibe
  • Status changed from accepted to reviewing

comment:21 Changed 5 years ago by ascheibe

  • Owner changed from ascheibe to jkarder
  • Status changed from reviewing to assigned

comment:22 Changed 5 years ago by jkarder

r8631: removed similarity calculators

comment:23 Changed 5 years ago by jkarder

r8642: integrated branch into trunk

comment:24 Changed 5 years ago by jkarder

  • Owner changed from jkarder to ascheibe
  • Status changed from assigned to reviewing

comment:25 Changed 5 years ago by jkarder

r8643: removed branch RAPGA

comment:26 Changed 4 years ago by ascheibe

  • Milestone changed from HeuristicLab 3.3.x Backlog to HeuristicLab 3.3.8
  • Version changed from branch to 3.3.7

comment:27 Changed 4 years ago by ascheibe

  • Owner changed from ascheibe to jkarder
  • Status changed from reviewing to assigned

Thanks for implementing RAPGA. In my opinion this looks very good, I have only 3 reviewing comments:

  • As the DuplicatesSelector is a selection operator, it gets discovered by e.g. the GA as a selection operator. Executing a GA with the DuplicatesSelector fails because the SimilarityCalculator is not set. We could fix this by querying the operators collection and setting the SimilarityCalculator if it was not set by the algorithm or problem. This would fix the exception, the question is then if we want such a selection operator because it would mean that we always select duplicates and in the beginning of a GA run it could very well be that no individual is selected. We could switch the two scopes so that the selected scope contains the unique solutions. This would then allow us to have populations in a GA that only contain unique individuals. But of course the population would shrink with algorithm progress and the GA probably can't handle changing population sizes or empty populations. Maybe we should mark it as Non-Discoverable (where the downside is that we can't use this operator anymore for user-defined algorithms) or maybe this isn't a selection operator and we should remove the Selector interface and base class.
  • In the DuplicatesSelector you count the number of elements in marks with marks.Count(x => x). This should be marks.Count().
  • The Item Name of the SelectionPressureAnalyzer is PopulationSizeAnalyzer, it should be SelectionPressureAnalyzer.

comment:28 Changed 4 years ago by jkarder

r8855: applied some of the changes suggested by ascheibe in comment:27:ticket:1247

comment:29 Changed 4 years ago by jkarder

  • Owner changed from jkarder to ascheibe
  • Status changed from assigned to reviewing

comment:30 Changed 4 years ago by jkarder

Thanks for your review. It is sufficient to remove the Selector interface as all of the discovery is done using this interface. Even though the DuplicateSelector does not need most of the base class' properties, I decided to still inherit from the SingleObjectiveSelector because of the provided functionality.

comment:31 Changed 4 years ago by jkarder

r8856: updated RAPGA JSSP sample

comment:32 Changed 4 years ago by ascheibe

  • Owner changed from ascheibe to jkarder
  • Status changed from reviewing to readytorelease

Thanks very much, looks good.

comment:33 Changed 4 years ago by jkarder

Thanks!

comment:34 Changed 4 years ago by swagner

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