Opened 3 months ago

Closed 5 weeks ago

#2792 closed enhancement (done)

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 (18)

comment:1 Changed 3 months 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 3 months ago by abeham (previous) (diff)

comment:2 Changed 3 months ago by abeham

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

comment:3 Changed 3 months ago by abeham

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

comment:4 Changed 3 months 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 3 months 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 3 months ago by abeham

r15008: small fix

comment:7 Changed 8 weeks ago by abeham

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

comment:8 Changed 8 weeks ago by mkommend

Pretty neat feature. Please adapt the OSGA as well!

comment:9 Changed 8 weeks ago by mkommend

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

comment:10 Changed 8 weeks ago by mkommend

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

comment:11 Changed 8 weeks 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

comment:12 Changed 7 weeks ago by abeham

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

This should also be changed in ALPS

comment:13 Changed 7 weeks ago by mkommend

Reviewed r15006, r15007, r15008, r15049.

r15047 has been implemented by myself and should work.

Last edited 7 weeks ago by mkommend (previous) (diff)

comment:14 Changed 7 weeks ago by abeham

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

r15070: adapted ALPS and ALPS-OS

Regarding r15047: looks good

comment:15 Changed 7 weeks ago by mkommend

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

Reviewed r15070: looks fantastic.

comment:16 Changed 7 weeks ago by abeham

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

r15107: also adapted NSGA-II

comment:17 Changed 6 weeks ago by mkommend

  • Status changed from reviewing to readytorelease

Reviewed and tested r15107.

comment:18 Changed 5 weeks ago by mkommend

  • Resolution set to done
  • Status changed from readytorelease to closed

r15238: Merged r15006:r15008, r15047, r15049, r15070, r15107 into stable.

Note: See TracTickets for help on using tickets.