20 #ifndef _ga_scaling_h_
21 #define _ga_scaling_h_
31 constexpr
float gaDefLinearScalingMultiplier = 1.2;
32 constexpr
float gaDefSigmaTruncationMultiplier = 2.0;
33 constexpr
float gaDefPowerScalingFactor = 1.0005;
34 constexpr
float gaDefSharingCutoff = 1.0;
48 GADefineIdentity(
"GAScalingScheme", GAID::Scaling);
69 GADefineIdentity(
"GANoScaling", GAID::NoScaling);
84 #if USE_LINEAR_SCALING == 1
88 GADefineIdentity(
"GALinearScaling", GAID::LinearScaling);
90 explicit GALinearScaling(
float fm = gaDefLinearScalingMultiplier)
94 GALinearScaling(
const GALinearScaling &arg) :
GAScalingScheme(arg) { copy(arg); }
100 ~GALinearScaling()
override =
default;
103 return new GALinearScaling(*
this);
110 GAScalingScheme::copy(arg);
111 c = (DYN_CAST(
const GALinearScaling &, arg)).c;
115 float multiplier(
float fm);
116 float multiplier()
const {
return c; }
128 #if USE_SIGMA_TRUNC_SCALING == 1
132 GADefineIdentity(
"GASigmaTruncationScaling", GAID::SigmaTruncationScaling);
134 explicit GASigmaTruncationScaling(
float m = gaDefSigmaTruncationMultiplier)
138 GASigmaTruncationScaling(
const GASigmaTruncationScaling &arg)
148 ~GASigmaTruncationScaling()
override =
default;
151 return new GASigmaTruncationScaling(*
this);
158 GAScalingScheme::copy(arg);
159 c = (DYN_CAST(
const GASigmaTruncationScaling &, arg)).c;
163 float multiplier(
float fm);
164 float multiplier()
const {
return c; }
176 #if USE_POWER_LAW_SCALING == 1
180 GADefineIdentity(
"GAPowerLawScaling", GAID::PowerLawScaling);
182 explicit GAPowerLawScaling(
float f = gaDefPowerScalingFactor) { k = f; }
192 ~GAPowerLawScaling()
override =
default;
195 return new GAPowerLawScaling(*
this);
202 GAScalingScheme::copy(arg);
203 k = (DYN_CAST(
const GAPowerLawScaling &, arg)).k;
207 float power(
float p) {
return k = p; }
208 float power()
const {
return k; }
274 GADefineIdentity(
"GASharing", GAID::Sharing);
276 explicit GASharing(GAGenome::Comparator func,
float cut = gaDefSharingCutoff,
285 explicit GASharing(
float cut = gaDefSharingCutoff,
float a = 1.0) :
303 ~GASharing()
override =
default;
304 GAScalingScheme *clone()
const override {
return new GASharing(*
this); }
308 GAGenome::Comparator distanceFunction(GAGenome::Comparator f)
312 GAGenome::Comparator distanceFunction()
const {
return df; }
315 float sigma()
const {
return _sigma; }
317 float alpha(
float c) {
return _alpha = c; }
318 float alpha()
const {
return _alpha; }
321 int minimaxi()
const {
return _minmax; }
324 GAGenome::Comparator df;
326 std::vector<float> d;
This defines the identifiers for polymorphic classes.
Definition: gaid.h:20
Definition: GAScaling.h:67
Definition: GAPopulation.h:66
Definition: GAScaling.h:46