46 lines
1 KiB
Go
46 lines
1 KiB
Go
package gago
|
|
|
|
// Generational returns a GA instance that uses the generational model.
|
|
func Generational(GenomeFactory GenomeFactory) GA {
|
|
return GA{
|
|
GenomeFactory: GenomeFactory,
|
|
NPops: 2,
|
|
PopSize: 50,
|
|
Model: ModGenerational{
|
|
Selector: SelTournament{
|
|
NContestants: 3,
|
|
},
|
|
MutRate: 0.5,
|
|
},
|
|
}
|
|
}
|
|
|
|
// SimulatedAnnealing returns a GA instance that mimicks a basic simulated
|
|
// annealing procedure.
|
|
func SimulatedAnnealing(GenomeFactory GenomeFactory) GA {
|
|
return GA{
|
|
GenomeFactory: GenomeFactory,
|
|
NPops: 1,
|
|
PopSize: 1,
|
|
Model: ModSimAnn{
|
|
T: 100, // Starting temperature
|
|
Tmin: 1, // Stopping temperature
|
|
Alpha: 0.99, // Decrease rate per iteration
|
|
},
|
|
}
|
|
}
|
|
|
|
// HillClimbing returns a GA instance that mimicks a basic hill-climbing
|
|
// procedure.
|
|
func HillClimbing(GenomeFactory GenomeFactory) GA {
|
|
return GA{
|
|
GenomeFactory: GenomeFactory,
|
|
NPops: 1,
|
|
PopSize: 1,
|
|
Model: ModMutationOnly{
|
|
NChosen: 1,
|
|
Selector: SelElitism{},
|
|
Strict: true,
|
|
},
|
|
}
|
|
}
|