12 #ifndef MLPACK_CORE_OPTIMIZERS_FW_FRANK_WOLFE_HPP 13 #define MLPACK_CORE_OPTIMIZERS_FW_FRANK_WOLFE_HPP 20 namespace optimization {
79 typename LinearConstrSolverType,
80 typename UpdateRuleType>
96 FrankWolfe(
const LinearConstrSolverType linearConstrSolver,
97 const UpdateRuleType updateRule,
98 const size_t maxIterations = 100000,
99 const double tolerance = 1e-10);
117 template<
typename FunctionType>
118 double Optimize(FunctionType&
function, arma::mat& iterate);
122 const {
return linearConstrSolver; }
127 const UpdateRuleType&
UpdateRule()
const {
return updateRule; }
143 LinearConstrSolverType linearConstrSolver;
146 UpdateRuleType updateRule;
149 size_t maxIterations;
168 #include "frank_wolfe_impl.hpp" double Optimize(FunctionType &function, arma::mat &iterate)
Optimize the given function using FrankWolfe.
FrankWolfe(const LinearConstrSolverType linearConstrSolver, const UpdateRuleType updateRule, const size_t maxIterations=100000, const double tolerance=1e-10)
Construct the Frank-Wolfe optimizer with the given function and parameters.
const LinearConstrSolverType & LinearConstrSolver() const
Get the linear constrained solver.
double & Tolerance()
Modify the tolerance for termination.
The core includes that mlpack expects; standard C++ includes and Armadillo.
size_t MaxIterations() const
Get the maximum number of iterations (0 indicates no limit).
const UpdateRuleType & UpdateRule() const
Get the update rule.
size_t & MaxIterations()
Modify the maximum number of iterations (0 indicates no limit).
UpdateRuleType & UpdateRule()
Modify the update rule.
double Tolerance() const
Get the tolerance for termination.
Frank-Wolfe is a technique to minimize a continuously differentiable convex function over a compact ...
LinearConstrSolverType & LinearConstrSolver()
Modify the linear constrained solver.