Program Listing for File multiStartOptimization.h¶
↰ Return to documentation for file (include/parpeoptimization/multiStartOptimization.h
)
#ifndef MULTI_START_OPTIMIZATION_H
#define MULTI_START_OPTIMIZATION_H
#include <parpeoptimization/optimizationProblem.h>
#include <vector>
#include <memory>
namespace parpe {
class MultiStartOptimizationProblem {
public:
virtual int getNumberOfStarts() const = 0;
virtual bool restartOnFailure() const { return false; }
virtual std::unique_ptr<OptimizationProblem>
getLocalProblem(int multiStartIndex) const = 0;
virtual ~MultiStartOptimizationProblem() = default;
};
class MultiStartOptimization {
public:
MultiStartOptimization(MultiStartOptimizationProblem& problem,
bool runParallel = true,
int first_start_idx = 0);
~MultiStartOptimization() = default;
void run();
void runMultiThreaded();
void runSingleThreaded();
void setRunParallel(bool runParallel);
private:
std::vector<OptimizationProblem *> createLocalOptimizationProblems();
MultiStartOptimizationProblem& msProblem;
int numberOfStarts = 1;
bool restartOnFailure = false;
bool runParallel = true;
int first_start_idx = 0;
};
} // namespace parpe
#endif