Libs/Optimize/GradientDescentOptimizer.h
Namespaces
| Name |
|---|
| shapeworks User usage reporting (telemetry) |
Classes
| Name | |
|---|---|
| class | shapeworks::GradientDescentOptimizer Optimizes particle system positions using gradient descent. |
Source code
```cpp
pragma once
include
include
include "EarlyStoppingConfig.h"
include "Libs/Optimize/Domain/ImageDomainWithGradients.h"
include "Libs/Optimize/Function/EarlyStop/EarlyStopping.h"
include "Libs/Optimize/Function/VectorFunction.h"
include "ParticleSystem.h"
namespace shapeworks {
class GradientDescentOptimizer { public: static constexpr unsigned int Dimension = 3;
using VectorType = VectorFunction::VectorType;
using PointType = ParticleSystem::PointType;
void start_optimization() { start_adaptive_gauss_seidel_optimization(); } void start_adaptive_gauss_seidel_optimization(); void set_early_stopping_config(const EarlyStoppingConfig& config); void initialize_early_stopping_score_function(const ParticleSystem* p);
void augmented_lagrangian_constraints(VectorType& gradient, const PointType& pt, const size_t& dom, const double& maximum_update_allowed, size_t index);
void stop_optimization() { stop_optimization_ = true; }
void abort_processing() { stop_optimization_ = true; abort_processing_ = true; }
unsigned int get_number_of_iterations() const { return number_of_iterations_; }
void set_number_of_iterations(unsigned int val) { number_of_iterations_ = val; }
void set_verbosity(unsigned int val) { verbosity_ = val; }
unsigned int get_verbosity() const { return verbosity_; }
double get_time_step() const { return time_step_; }
void set_time_step(double val) { time_step_ = val; }
unsigned int get_maximum_number_of_iterations() const { return max_iterations_; }
void set_maximum_number_of_iterations(unsigned int val) { max_iterations_ = val; }
double get_tolerance() const { return tolerance_; }
void set_tolerance(double val) { tolerance_ = val; }
ParticleSystem* get_particle_system() { return particle_system_.GetPointer(); }
const ParticleSystem* get_particle_system() const { return particle_system_.GetPointer(); }
void set_particle_system(ParticleSystem* val) { particle_system_ = val; }
std::shared_ptr
std::shared_ptr
void set_gradient_function(std::shared_ptr
void set_initialization_mode(bool b) { initialization_mode_ = b; }
void set_check_iterations(size_t si) { check_iterations_ = si; }
void set_initialization_start_scaling_factor(double si) { init_start_scaling_factor_ = si; }
void set_iteration_callback(std::function
std::function
GradientDescentOptimizer();
~GradientDescentOptimizer() = default;
private: GradientDescentOptimizer(const GradientDescentOptimizer&) = delete;
GradientDescentOptimizer& operator=(const GradientDescentOptimizer&) = delete;
void reset_time_step_vectors();
ParticleSystem::Pointer particle_system_;
std::shared_ptr
// Adaptive Initialization variables bool initialization_mode_ = false; size_t check_iterations_ = 50; double init_start_scaling_factor_ = 0.0;
// Iteration callback
std::function
} // namespace shapeworks ```
Updated on 2026-03-31 at 16:02:11 +0000