|
PANOC-ALM
quadratic-penalty
Nonconvex constrained optimization
|
Go to the documentation of this file.
18 using std::chrono::duration_cast;
19 using std::chrono::microseconds;
23 template <
template <
class>
class LineSearchT = LBFGSpp::LineSearchBacktracking>
26 using Params = LBFGSpp::LBFGSParam<real_t>;
46 bool always_overwrite_results,
52 auto start_time = std::chrono::steady_clock::now();
66 s.
status = SolverStatus::Converged;
67 }
catch (std::runtime_error &) {
68 s.
status = SolverStatus::MaxIter;
69 }
catch (std::logic_error &) {
72 s.
status = SolverStatus::NotFinite;
74 auto time_elapsed = std::chrono::steady_clock::now() - start_time;
75 s.
elapsed_time = duration_cast<microseconds>(time_elapsed);
79 bool conv = s.
status == SolverStatus::Converged;
81 if (conv || interrupted || always_overwrite_results) {
91 std::string
get_name()
const {
return "LBFGSSolver<?>"; }
112 template <
template <
class>
class LineSearchT = LBFGSpp::LineSearchBacktracking>
115 using Params = LBFGSpp::LBFGSBParam<real_t>;
124 bool always_overwrite_results,
130 auto start_time = std::chrono::steady_clock::now();
146 s.
status = SolverStatus::Converged;
147 }
catch (std::runtime_error &) {
148 s.
status = SolverStatus::MaxIter;
149 }
catch (std::logic_error &) {
152 s.
status = SolverStatus::NotFinite;
154 auto time_elapsed = std::chrono::steady_clock::now() - start_time;
155 s.
elapsed_time = duration_cast<microseconds>(time_elapsed);
159 bool conv = s.
status == SolverStatus::Converged;
161 if (conv || interrupted || always_overwrite_results) {
171 std::string
get_name()
const {
return "LBFGSBSolver<?>"; }
183 template <
class InnerSolverStats>
189 unsigned iterations = 0;
bool stop_requested() const
LineSearchT< real_t > LineSearch
AtomicStopSignal stop_signal
Eigen::Ref< vec > rvec
Default type for mutable references to vectors.
LineSearchT< real_t > LineSearch
const Params & get_params() const
SolverStatus
Exit status of a numerical solver such as ALM or PANOC.
Unconstrained LBFGS solver for ALM.
std::string get_name() const
realvec vec
Default type for vectors.
LBFGSSolver(Params params)
InnerStatsAccumulator< PANOCStats > & operator+=(InnerStatsAccumulator< PANOCStats > &acc, const PANOCStats &s)
real_t calc_ψ_grad_ψ(const Problem &p, crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m)
Calculate both ψ(x) and its gradient ∇ψ(x).
std::string get_name() const
real_t calc_ψ_ŷ(const Problem &p, crvec x, crvec y, crvec Σ, rvec ŷ)
Calculate both ψ(x) and the vector ŷ that can later be used to compute ∇ψ.
LBFGSBSolver(Params params)
void calc_err_z(const Problem &p, crvec x̂, crvec y, crvec Σ, rvec err_z)
Calculate the error between ẑ and g(x).
Eigen::Ref< const vec > crvec
Default type for immutable references to vectors.
LBFGSpp::LBFGSBParam< real_t > Params
std::chrono::microseconds elapsed_time
unsigned linesearch_failures
LBFGSpp::LBFGSParam< real_t > Params
AtomicStopSignal stop_signal
const Params & get_params() const
Stats operator()(const Problem &problem, crvec Σ, real_t ε, bool always_overwrite_results, rvec x, rvec y, rvec err_z)
Stats operator()(const Problem &problem, crvec Σ, real_t ε, bool always_overwrite_results, rvec x, rvec y, rvec err_z)
std::chrono::microseconds elapsed_time
double real_t
Default floating point type.
Problem description for minimization problems.
Box-constrained LBFGS solver for ALM.