63 std::uint32_t seed = 0xC0FFEEu);
70 const std::vector<double>& initMaxParams,
71 const std::vector<double>& limitMinParams,
72 const std::vector<double>& limitMaxParams);
80 std::vector<double> paramList;
83 explicit Candidate(
int numParams)
84 : paramList(static_cast<std::size_t>(numParams), 0.0)
89 static constexpr int kNumCandidatesFactor = 12;
90 static constexpr double kWeightingFactorMin = 0.5;
91 static constexpr double kWeightingFactorMax = 1.0;
92 static constexpr double kWeightingFactorFix = 0.8;
93 static constexpr double kCrossoverProbability = 0.8;
95 void createCandidate(Candidate& c,
96 const std::vector<double>& minParams,
97 const std::vector<double>& maxParams);
99 [[nodiscard]] Candidate mutateAndCrossover(
const Candidate& self,
103 double weightingFactor,
104 double crossoverProbability,
105 const std::vector<double>& minParams,
106 const std::vector<double>& maxParams);
108 [[nodiscard]] std::size_t getRandomCandidateIndex();
109 void getThreeRandomCandidates(std::size_t currentIdx,
114 IDifferentialEvolutionRating& rating_;
119 std::vector<Candidate> candidate_list_;
120 std::vector<Candidate> temp_candidate_list_;
122 std::vector<double> limit_min_params_;
123 std::vector<double> limit_max_params_;
void createCandidates(const std::vector< double > &initMinParams, const std::vector< double > &initMaxParams, const std::vector< double > &limitMinParams, const std::vector< double > &limitMaxParams)
Seed the population uniformly in [initMin, initMax] and rate it.