7 #include "Identifiable.hpp"
8 #include "heterogeneous.hpp"
9 #include "qcor_pimpl.hpp"
18 class ObjectiveFunction;
31 struct OptimizerImpl {
32 std::shared_ptr<xacc::Optimizer> xacc_opt;
33 OptimizerImpl() =
default;
34 OptimizerImpl(std::shared_ptr<xacc::Optimizer> opt) : xacc_opt(opt) {}
35 std::pair<double, std::vector<double>> optimize(xacc::OptFunction &opt);
36 xacc::Optimizer *operator->() {
return xacc_opt.get(); }
48 Optimizer(
const std::string& name, xacc::HeterogeneousMap&& options);
49 Optimizer(std::shared_ptr<xacc::Identifiable> generic_obj);
52 OptimizerImpl *operator->();
55 std::pair<double, std::vector<double>> optimize(
56 std::function<
double(
const std::vector<double> &)> opt,
const int dim);
57 std::pair<double, std::vector<double>> optimize(
58 std::function<
double(
const std::vector<double> &, std::vector<double> &)>
63 std::pair<double, std::vector<double>> optimize(
64 std::shared_ptr<ObjectiveFunction> obj);
77 std::shared_ptr<Optimizer> createOptimizer(
78 const std::string &type, xacc::HeterogeneousMap &&options = {});