Skip to content

Commit 5d75b8d

Browse files
committed
Implemented the Shubert-Piyavskii method for minimization
The Shubert-Piyavskii method optimizes a univariate, Lipschitz continuous function inside a specified interval. Given an accurate Lipschitz constant, it is guaranteed to come within an arbitrary epsilon of the true global minimum. Unlike most other deterministic global optimizations algorithm (e.g., golden-section search), it is not restricted to unimodal functions; moreover, it does not require an initial guess. It deterministically samples points from ever-narrowing subintervals of the search space until the sampled best point is sufficiently close to the lower bound given by the Lipschitz constant. I have added an implementation of an SP solver in crates/argmin/src/solver/shubertpiyavskii/, modifying crates/argmin/src/lib.rs and crates/argmin/src/solver/mod.rs accordingly. Additionally, I have added an example run of the solver to examples/shubertpiyavskii/.
1 parent b35808a commit 5d75b8d

File tree

5 files changed

+880
-1
lines changed

5 files changed

+880
-1
lines changed

crates/argmin/src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
//! - [Cauchy point method](`crate::solver::trustregion::CauchyPoint`)
4646
//! - [Dogleg method](`crate::solver::trustregion::Dogleg`)
4747
//! - [Steihaug method](`crate::solver::trustregion::Steihaug`)
48-
//!
48+
//!
4949
//! - [Steepest descent](`crate::solver::gradientdescent::SteepestDescent`)
5050
//!
5151
//! - [Conjugate gradient methods](`crate::solver::conjugategradient`)
@@ -69,6 +69,8 @@
6969
//!
7070
//! - [Golden-section search](`crate::solver::goldensectionsearch::GoldenSectionSearch`)
7171
//!
72+
//! - [Shubert-Piyavskii method](`crate::solver::shubertpiyavskii::ShubertPiyavskii`)
73+
//!
7274
//! - [Landweber iteration](`crate::solver::landweber::Landweber`)
7375
//!
7476
//! - [Brent's methods](`crate::solver::brent`)

crates/argmin/src/solver/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,6 @@ pub mod neldermead;
1616
pub mod newton;
1717
pub mod particleswarm;
1818
pub mod quasinewton;
19+
pub mod shubertpiyavskii;
1920
pub mod simulatedannealing;
2021
pub mod trustregion;

0 commit comments

Comments
 (0)