11 #ifndef RGROUPDECOMPGA_H_
12 #define RGROUPDECOMPGA_H_
19 #include "../../../External/GA/ga/StringChromosome.h"
20 #include "../../../External/GA/ga/GaBase.h"
21 #include "../../../External/GA/ga/GaOperation.h"
22 #include "../../../External/GA/ga/LinkedPopLinearSel.h"
23 #include "../../../External/GA/ga/IntegerStringChromosomePolicy.h"
29 using namespace GapeGa;
32 class RGroupDecompositionChromosome;
34 struct RGroupDecompData;
36 typedef LinkedPopLinearSel<RGroupDecompositionChromosome, RGroupGa>
54 this->operationName = operationName;
63 bool isOk() {
return true; }
67 void copyGene(
const StringChromosomeBase& other)
override;
70 return fingerprintVarianceScoreData;
85 vector<size_t> permutation;
93 GaResult(
const double score,
const vector<vector<size_t>>& permutations)
106 const chrono::steady_clock::time_point*
const t0 =
nullptr);
109 return chromosomePolicy;
124 const vector<shared_ptr<GaOperation<RGroupDecompositionChromosome>>>
134 IntegerStringChromosomePolicy chromosomePolicy;
135 int numberOperations;
136 int numberOperationsWithoutImprovement;
138 unsigned int numPermutations;
140 const chrono::steady_clock::time_point*
const t0;
142 void createOperations();
144 static void rGroupMutateOperation(
145 const std::vector<std::shared_ptr<RGroupDecompositionChromosome>>&
147 std::vector<std::shared_ptr<RGroupDecompositionChromosome>>& children);
148 static void rGroupCrossoverOperation(
149 const std::vector<std::shared_ptr<RGroupDecompositionChromosome>>&
151 std::vector<std::shared_ptr<RGroupDecompositionChromosome>>& children);
RGroupDecompositionChromosome(RGroupGa &rGroupGa)
OperationName getOperationName() const
void setOperationName(OperationName operationName)
const vector< size_t > & getPermutation() const
double getFitness() const
double recalculateScore()
FingerprintVarianceScoreData & getFingerprintVarianceScoreData()
void copyGene(const StringChromosomeBase &other) override
const RGroupGa & getRGroupGA() const
IntegerStringChromosomePolicy & getChromosomePolicy()
const RGroupDecompData & getRGroupData() const
int chromosomeLength() const
int numberDecompositions() const
RGroupGa(const RGroupDecompData &rGroupData, const chrono::steady_clock::time_point *const t0=nullptr)
vector< GaResult > runBatch()
const vector< shared_ptr< GaOperation< RGroupDecompositionChromosome > > > getOperations() const
shared_ptr< RGroupDecompositionChromosome > createChromosome()
GaResult run(int runNumber=1)
unsigned int numberPermutations() const
#define RDKIT_RGROUPDECOMPOSITION_EXPORT
void copyVarianceData(const FingerprintVarianceScoreData &fromData, FingerprintVarianceScoreData &toData)
void clearVarianceData(FingerprintVarianceScoreData &fingerprintVarianceScoreData)
LinkedPopLinearSel< RGroupDecompositionChromosome, RGroupGa > RGroupGaPopulation
RGroupScorer rGroupScorer
GaResult & operator=(const GaResult &other)
GaResult(const GaResult &other)
GaResult(const double score, const vector< vector< size_t >> &permutations)