9#include <gch/small_vector.hpp>
11#include "sleipnir/optimization/solver/exit_status.hpp"
12#include "sleipnir/util/function_ref.hpp"
23template <
typename Scalar,
typename DecisionVariables>
48template <
typename Scalar,
typename DecisionVariables>
54 gch::small_vector<std::future<MultistartResult<Scalar, DecisionVariables>>>
62 gch::small_vector<MultistartResult<Scalar, DecisionVariables>> results;
63 results.reserve(futures.size());
65 for (
auto& future : futures) {
66 results.emplace_back(future.get());
69 return *std::ranges::min_element(results, [](
const auto& a,
const auto& b) {
71 if (a.status == ExitStatus::SUCCESS && b.status != ExitStatus::SUCCESS) {
76 return a.cost < b.cost;
Definition intrusive_shared_ptr.hpp:29
Definition function_ref.hpp:13
Definition multistart.hpp:24
ExitStatus status
The solver exit status.
Definition multistart.hpp:26
Scalar cost
The solution's cost.
Definition multistart.hpp:28
DecisionVariables variables
The decision variables.
Definition multistart.hpp:30