Opened 4 years ago

Last modified 4 years ago

#2011 new defect

GeneticAlgorithm's way of wiring the population size is not optimal for creating UserDefinedAlgorithms

Reported by: mkommend Owned by: swagner
Priority: low Milestone: HeuristicLab 4.0
Component: Algorithms.GeneticAlgorithm Version: 3.3.7
Keywords: Cc:

Description

This is severe malfunction, because if one changes the population size of an algorithm, the user assumes that the algorithm uses the changed population size, but this is not the case as a hidden parameter of the selector (NumberOfSelectedScopes) has to be manually changed to get the algorithm working correctly.

Change History (2)

comment:1 Changed 4 years ago by abeham

  • Component changed from Selection to Algorithms.GeneticAlgorithm
  • Summary changed from UserDefinedAlgorithms do not parameterize the selector correctly to GeneticAlgorithm's way of wiring the population size is not optimal for creating UserDefinedAlgorithms

I think the title doesn't quite explain the problem. UDAs do not parameterize anything correctly, because they parameterize nothing at all. The problem is not the UDA, but the GA in that it is not UDA-friendly. Also I think the affected component is GeneticAlgorithm and not Selection. It might be that we need to fix this in Selection, but the problem's root is at line 316 in GeneticAlgorithm.cs:

selector.NumberOfSelectedSubScopesParameter.Value = new IntValue(2 * (PopulationSizeParameter.Value.Value - ElitesParameter.Value.Value));

Anyway, I think this is by design and could only be solved through some kind of inheritable, serializable ParameterBindings which we discussed and which proved to be harder to realize than initially anticipated. We can only strive to make our algorithms UDA-friendly to avoid such situations, which I think we should achieve with this ticket.

I hope you don't mind, but I changed the title and component accordingly.

comment:2 Changed 4 years ago by gkronber

  • Milestone changed from HeuristicLab 3.3.x Backlog to HeuristicLab 4.0.x Backlog
  • Priority changed from high to low
Note: See TracTickets for help on using tickets.