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 <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() const;

    void runSingleThreaded();

    void setRunParallel(bool runParallel);

  private:
    int runStart(int start_idx) const;


    MultiStartOptimizationProblem& msProblem;

    int numberOfStarts = 1;

    bool restartOnFailure = false;

    bool runParallel = true;

    int first_start_idx = 0;
};

} // namespace parpe

#endif