21template <
typename Scalar,
typename DecisionVariables>
44template <
typename Scalar,
typename DecisionVariables>
47 const DecisionVariables& initial_guess)>
49 std::span<const DecisionVariables> initial_guesses) {
52 futures.reserve(initial_guesses.size());
54 for (
const auto& initial_guess : initial_guesses) {
55 futures.emplace_back(std::async(std::launch::async,
solve, initial_guess));
59 results.reserve(futures.size());
61 for (
auto& future : futures) {
62 results.emplace_back(future.get());
65 return *std::ranges::min_element(results, [](
const auto& a,
const auto& b) {
72 return a.cost < b.cost;
Definition function_ref.hpp:13
wpi::util::SmallVector< T > small_vector
Definition small_vector.hpp:10
Definition expression_graph.hpp:11
VariableMatrix< Scalar > solve(const VariableMatrix< Scalar > &A, const VariableMatrix< Scalar > &B)
Solves the VariableMatrix equation AX = B for X.
Definition variable_matrix.hpp:1382
ExitStatus
Solver exit status. Negative values indicate failure.
Definition exit_status.hpp:14
@ SUCCESS
Solved the problem to the desired tolerance.
Definition exit_status.hpp:16
MultistartResult< Scalar, DecisionVariables > multistart(function_ref< MultistartResult< Scalar, DecisionVariables >(const DecisionVariables &initial_guess)> solve, std::span< const DecisionVariables > initial_guesses)
Solves an optimization problem from different starting points in parallel, then returns the solution ...
Definition multistart.hpp:45
The result of a multistart solve.
Definition multistart.hpp:22
ExitStatus status
The solver exit status.
Definition multistart.hpp:24
Scalar cost
The solution's cost.
Definition multistart.hpp:26
DecisionVariables variables
The decision variables.
Definition multistart.hpp:28