34 #ifndef __TASMANIAN_OPTIM_ENUMERATES_HPP
35 #define __TASMANIAN_OPTIM_ENUMERATES_HPP
80 inline void checkVarSize(
const std::string method_name,
const std::string var_name,
const int var_size,
const int exp_size) {
81 if (var_size != exp_size) {
82 throw std::runtime_error(
"Size of " + var_name +
" (" + std::to_string(var_size) +
") in the function " + method_name +
83 "() is not equal to its expected value of (" + std::to_string(exp_size) +
")");
124 using ObjectiveFunction = std::function<void(
const std::vector<double> &x_batch, std::vector<double> &fval_batch)>;
134 return [=](
const std::vector<double> &x_values, std::vector<double> &fval_values)->
void {
135 int num_points = x_values.size() / num_dimensions;
136 std::vector<double> x(num_dimensions);
137 for (
int i=0; i<num_points; i++) {
138 std::copy_n(x_values.begin() + i * num_dimensions, num_dimensions, x.begin());
139 fval_values[i] = f_single(x);
181 inline void identity(
const std::vector<double> &x, std::vector<double> &y) { std::copy(x.begin(), x.end(), y.begin()); }
195 const std::vector<double> &gx0,
const double lambda) {
196 double residual = 0.0;
197 for (
size_t i=0; i<x.size(); i++) {
198 double subdiff = (x0[i] - x[i]) / lambda + gx[i] - gx0[i];
199 residual += subdiff * subdiff;
201 return std::sqrt(residual);
DiffeRential Evolution Adaptive Metropolis methods.
std::function< double(const std::vector< double > &x)> ObjectiveFunctionSingle
Generic non-batched objective function signature.
Definition: tsgOptimizationUtils.hpp:102
std::function< void(const std::vector< double > &x_single, std::vector< double > &grad)> GradientFunctionSingle
Generic non-batched gradient function signature.
Definition: tsgOptimizationUtils.hpp:159
void identity(const std::vector< double > &x, std::vector< double > &y)
Generic identity projection function.
Definition: tsgOptimizationUtils.hpp:181
std::function< void(const std::vector< double > &x_single, std::vector< double > &proj)> ProjectionFunctionSingle
Generic non-batched projection function signature.
Definition: tsgOptimizationUtils.hpp:175
ObjectiveFunction makeObjectiveFunction(const int num_dimensions, const ObjectiveFunctionSingle f_single)
Creates a TasOptimization::ObjectiveFunction object from a TasOptimization::ObjectiveFunctionSingle o...
Definition: tsgOptimizationUtils.hpp:133
void checkVarSize(const std::string method_name, const std::string var_name, const int var_size, const int exp_size)
Definition: tsgOptimizationUtils.hpp:80
double computeStationarityResidual(const std::vector< double > &x, const std::vector< double > &x0, const std::vector< double > &gx, const std::vector< double > &gx0, const double lambda)
Definition: tsgOptimizationUtils.hpp:194
std::function< void(const std::vector< double > &x_batch, std::vector< double > &fval_batch)> ObjectiveFunction
Generic batched objective function signature.
Definition: tsgOptimizationUtils.hpp:124
Encapsulates the Tasmanian Optimization module.
Definition: TasmanianOptimization.hpp:86
Definition: tsgOptimizationUtils.hpp:65
int performed_iterations
The number of iterations performed by the current optimization call.
Definition: tsgOptimizationUtils.hpp:67
double residual
The current residual, e.g., the stationarity residual for the gradient descent.
Definition: tsgOptimizationUtils.hpp:69