31 #define _SCL_SECURE_NO_DEPRECATE
44 #define SLEEP(secs) Sleep(secs * 1000)
47 #define SLEEP(secs) sleep(secs);
53 printf(
"%s\n", msg.c_str());
54 for (
int i = 0; i < numOfRuns; i++)
55 printf(
"%4d] om=%5.3f comm=%5.3f (id=%d)\n", i,
56 runs[i]->getOmission(),
121 config->addSubsection( model_config );
127 child_config->addNameValue(
"Id", i );
128 child_config->addNameValue(
"OmissionError",
_bestRun[i]->getOmission() * 100 );
129 child_config->addNameValue(
"CommissionError",
_bestRun[i]->getCommission() * 100 );
132 child_config->addSubsection( alg_config );
134 model_config->addSubsection( child_config );
150 _numBestRuns = model_config->getAttributeAsInt(
"Count", 0 );
156 Configuration::subsection_list::const_iterator fin = runs.end();
157 Configuration::subsection_list::const_iterator it = runs.begin();
161 for( i = 0; it != fin; ++it ) {
171 if ( run_config->getName() !=
"Run" ) {
197 std::string
error =
"Parameter SubAlgorithm not set properly.";
205 if ( alg->needNormalization() ) {
282 Log::instance()->
warn(
"Multithreading is still experimental. When max threads is greater than 1, depending on software and hardware configuration this application may crash or you may see lots of raster IO warnings. In these cases, we recommend you to set this parameter to 1.\n");
287 Log::instance()->
warn(
"The specified training proportion value is less than or equals 1. Please note that there was a change in the valid range for this parameter from 0-1 to 0-100. Small values may result in zero presence points being used to train the model.\n");
313 static int iterations = 0;
314 static int runId = 0;
347 algo->setParameters(
_param );
348 algo->setSampler(train);
439 sortRuns(runList, _numFinishedRuns, 0);
441 printListOfRuns(
"Finished Runs by Omission:", runList, _numFinishedRuns);
446 printListOfRuns(
"Best Omission Runs by Commission:", runList, _numFinishedRuns);
450 int firstRun = (int)ceil( (
double) medianRun - (double)
_numBestRuns / 2.0 );
455 {
_bestRun[i] = runList[i + firstRun]; }
459 printf(
"Median: %d First: %d\n", medianRun, firstRun);
471 int nelements,
int errorType)
480 for (i = 0; i < nelements - 1; i++)
482 for (j = 0; j < nelements - i - 1; j++)
485 runJ1 = runList[j + 1];
491 runList[j + 1] = runJ0;
515 float progByTotalRuns = 0.0;
516 float progByHardOmission = 0.0;
518 float avgProgressActiveRuns = 0.0;
531 float progress = (progByTotalRuns > progByHardOmission)? progByTotalRuns : progByHardOmission;
int _currentModelsUnderOmissionThreshold
AlgorithmPtr getAlgorithm()
double _commissionThreshold
void warn(const char *format,...)
'Warn' level.
std::vector< ConfigurationPtr > subsection_list
static AlgorithmPtr newAlgorithm(std::string const id)
double Scalar
Type of map values.
float getProgress() const
static Log * instance()
Returns the instance pointer, creating the object on the first call.
void sortRuns(AlgorithmRun **runList, int nelements, int errorType)
int calculateBestSubset()
float getProgress() const
void error(const char *format,...)
'Error' level.
double getOmission() const
int getParameter(std::string const &name, std::string *value)
bool _softOmissionThreshold
void setNormalization(const SamplerPtr &samp) const
double getError(int type) const
Scalar getValue(const Sample &x) const
void splitSampler(const SamplerPtr &orig, SamplerPtr *train, SamplerPtr *test, double propTrain)
double _omissionThreshold
AlgorithmRun ** _activeRun
std::string _subAlgorithm
static void printListOfRuns(string msg, AlgorithmRun **runs, int numOfRuns)
AbstractBestSubsets(AlgMetadata const *)
double getCommission() const
virtual ~AbstractBestSubsets()=0
void info(const char *format,...)
'Info' level.
Scalar getValue(const Sample &x) const
virtual void _setConfiguration(const ConstConfigurationPtr &)
int _commissionSampleSize
virtual void _getConfiguration(ConfigurationPtr &) const
int getConvergence(Scalar *const val) const
int earlyTerminationConditionMet()
virtual void computeNormalization(const ReferenceCountedPointer< const SamplerImpl > &samplerPtr)=0
Normalizer * _normalizerPtr
AlgorithmRun ** _finishedRun
int initialize(int id, int comm_samples, const SamplerPtr &train_sampler, const SamplerPtr &test_sampler)