13#if !defined(ULTRA_DECISION_VECTOR_H)
14#define ULTRA_DECISION_VECTOR_H
50 decision_vector() =
default;
51 decision_vector(std::vector<double> vs, std::vector<coordinate> cs)
52 : values(
std::move(vs)), coords(
std::move(cs))
55 std::vector<double> values {};
56 std::vector<coordinate> coords {};
58 [[nodiscard]]
bool empty() const noexcept {
return values.empty(); }
59 [[nodiscard]] std::size_t size() const noexcept {
return values.size(); }
61 [[nodiscard]]
bool is_valid() const noexcept
63 return values.size() == coords.size();
71 typename DV::coordinate;
73 { dv.values } -> std::same_as<std::vector<double> &>;
74 { cdv.values } -> std::same_as<const std::vector<double> &>;
76 { dv.coords } -> std::same_as<std::vector<typename DV::coordinate> &>;
77 { cdv.coords } -> std::same_as<const std::vector<typename DV::coordinate> &>;
79 { cdv.empty() } -> std::convertible_to<bool>;
80 { cdv.size() } -> std::convertible_to<std::size_t>;
93 decltype(extract_decision_vector(std::declval<const I &>()))>;
99 && std::copy_constructible<I>
103 ind.apply_decision_vector(dv);
Checks whether a type models a concrete decision-vector representation.
Definition decision_vector.h:69
Definition individual.h:93
Supports numerical optimisation via decision-vector perturbation.
Definition decision_vector.h:97
std::remove_cvref_t< decltype(extract_decision_vector(std::declval< const I & >()))> decision_vector_t
Concrete decision-vector type associated with I.
Definition decision_vector.h:91
dv_param_kind
Original scalar category used when writing back an optimised value.
Definition decision_vector.h:27
Metadata describing one optimisable parameter.
Definition decision_vector.h:45
Coord coord
identifies the parameter within the source object
Definition decision_vector.h:46
dv_param_kind kind
determines scalar write-back format
Definition decision_vector.h:47