Opened 4 weeks ago

Last modified 3 days ago

#2792 reviewing enhancement

Genetic algorithm should choose a mutation operator by default

Reported by: abeham Owned by: mkommend
Priority: medium Milestone: HeuristicLab 3.3.15
Component: Algorithms.GeneticAlgorithm Version: 3.3.14
Keywords: Cc:

Description

The mutation operator is an OptionalConstrainedValueParameter which by default is set to null, meaning no mutation operator is chosen. We know however that genetic algorithms usually work better with mutation.

Any user that creates a new GA, drops some problem to it and clicks run, essentially runs a bad configuration. I consider it a separate problem to chose the best mutation operator, but any mutation operator may be better than choosing no mutation.

Change History (11)

comment:1 Changed 4 weeks ago by abeham

The cleanest solution in my opinion would be to change the parameter type from OptionalConstrainedValueParameter<IManipulator> to ConstrainedValueParameter<IManipulator>. We do have the mutation probability parameter which, if set to 0%, can produce the same configuration compared to selecting no mutation operator. Of course this would break API backwards compatibility. (actually, the parameter was never exposed as an optional constrained value parameter, but as interface type)

Another option would be to check in OnProblemChanged if the user loads a problem for the first time and then select a mutation operator by default. This is a bit more tricky, because the user could deliberately change mutation to "-" in which case we must not overrule with a default choice.

Last edited 4 weeks ago by abeham (previous) (diff)

comment:2 Changed 4 weeks ago by abeham

  • Owner set to abeham
  • Status changed from new to accepted

comment:3 Changed 4 weeks ago by abeham

r15006: changed mutator parameter from optional constrained value to constrained value

comment:4 Changed 4 weeks ago by abeham

Shall we adapt the OS variants also? In OS mutation is not as important as it is for the standard GA. Nevertheless, the default configuration would be more consistent if in addition to the default 5% mutation probability, a mutation operator would also be selected.

comment:5 Changed 4 weeks ago by abeham

r15007: adapted wiring code to be the same as with crossover, choosing the default manipulator intead of the first (by name)

comment:6 Changed 4 weeks ago by abeham

r15008: small fix

comment:7 Changed 3 days ago by abeham

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

comment:8 Changed 3 days ago by mkommend

Pretty neat feature. Please adapt the OSGA as well!

comment:9 Changed 3 days ago by mkommend

r15047: Adapted symbolic data analysis problems to use the MultiSymbolicExpressionTreeManipulator as default.

comment:10 Changed 3 days ago by mkommend

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

comment:11 Changed 3 days ago by abeham

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

r15049:

  • adapted OSGA, Island-GA, Island-OSGA, and SASEGASA as well
  • added default crossover logic to SASEGASA
Note: See TracTickets for help on using tickets.