Changeset 714 for cpp/frams/genetics
- Timestamp:
- 11/05/17 21:45:20 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cpp/frams/genetics/preconfigured.h
r551 r714 1 1 // This file is a part of Framsticks SDK. http://www.framsticks.com/ 2 // Copyright (C) 1999-201 5Maciej Komosinski and Szymon Ulatowski.2 // Copyright (C) 1999-2017 Maciej Komosinski and Szymon Ulatowski. 3 3 // See LICENSE.txt for details. 4 4 … … 15 15 class PreconfiguredGenetics 16 16 { 17 18 DefaultGenoConvManager gcm;19 GenMan genman;20 Geno::Validators validators;21 ModelGenoValidator model_validator; //validation through conversion17 public: 18 DefaultGenoConvManager gcm; 19 GenMan genman; 20 Geno::Validators validators; 21 ModelGenoValidator model_validator; //validation through conversion 22 22 23 PreconfiguredGenetics()23 PreconfiguredGenetics() 24 24 { 25 gcm.addDefaultConverters(); //without converters, the application would only handle "format 0" genotypes 26 if (Geno::useConverters(&gcm)!=NULL) 27 logPrintf("PreconfiguredGenetics", "init", LOG_WARN, "Geno converters already configured"); //someone is using multiple PreconfiguredGenetics objects? (or other potentially unsafe configuration) 28 if (Geno::useValidators(&validators)!=NULL) 29 logPrintf("PreconfiguredGenetics", "init", LOG_WARN, "Geno validators already configured"); 30 validators+=&genman; //primary validation: use the extended validity checking (through dedicated genetic operators) 31 validators+=&model_validator; //secondary validation: this simple validator handles all cases when there is no dedicated genetic validation operator, but a converter for a particular format is available. Converters may be less strict in detecting invalid genotypes but using them and checking whether they produced a valid f0 genotype is also some way to tell whether the initial genotype was valid. Otherwise, without dedicated genetic validation operator, we would have no validity check at all. 25 gcm.addDefaultConverters(); //without converters, the application would only handle "format 0" genotypes 26 if (Geno::useConverters(&gcm) != NULL) 27 logPrintf("PreconfiguredGenetics", "init", LOG_WARN, "Geno converters already configured"); //someone is using multiple PreconfiguredGenetics objects? (or other potentially unsafe configuration) 28 if (Geno::useValidators(&validators) != NULL) 29 logPrintf("PreconfiguredGenetics", "init", LOG_WARN, "Geno validators already configured"); 30 static const char* genactive_classes[] = { "N", "G", "T", "S", "*", "|", "@", NULL }; 31 NeuroClass::resetActive(); 32 NeuroClass::setGenActive(genactive_classes); 33 validators += &genman; //primary validation: use the extended validity checking (through dedicated genetic operators) 34 validators += &model_validator; //secondary validation: this simple validator handles all cases when there is no dedicated genetic validation operator, but a converter for a particular format is available. Converters may be less strict in detecting invalid genotypes but using them and checking whether they produced a valid f0 genotype is also some way to tell whether the initial genotype was valid. Otherwise, without dedicated genetic validation operator, we would have no validity check at all. 32 35 } 33 36 34 ~PreconfiguredGenetics()37 ~PreconfiguredGenetics() 35 38 { 36 Geno::useConverters(NULL);37 Geno::useValidators(NULL);39 Geno::useConverters(NULL); 40 Geno::useValidators(NULL); 38 41 } 39 42 };
Note: See TracChangeset
for help on using the changeset viewer.