Skip to content

Commit b51df50

Browse files
authored
Upgrade argmin 0.10 (#17)
1 parent 56e799d commit b51df50

File tree

4 files changed

+19
-10
lines changed

4 files changed

+19
-10
lines changed

Cargo.toml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,14 @@ keywords = ["optimizer", "optimization", "constrained", "derivative-free"]
1111
categories = ["algorithms", "api-bindings", "science"]
1212
documentation = "https://docs.rs/cobyla"
1313

14+
[features]
15+
serde1 = ["dep:serde", "argmin/serde1"]
16+
1417
[dependencies]
18+
serde = { version = "1", features = ["derive"], optional = true }
1519
libc = "0.2"
16-
argmin = "0.8.0"
17-
serde = "1"
20+
argmin-observer-slog = "0.1"
21+
argmin = "0.10"
1822
instant = "0.1"
1923

2024
[dev-dependencies]

examples/paraboloid.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
use argmin::core::observers::{ObserverMode, SlogLogger};
1+
use argmin::core::observers::ObserverMode;
22
use argmin::core::{CostFunction, Error, Executor};
3+
use argmin_observer_slog::SlogLogger;
34
use cobyla::{minimize, CobylaSolver, Func, RhoBeg, StopTols};
45

56
/// Problem cost function

src/cobyla_solver.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ use crate::cobyla_state::*;
66
use std::mem::ManuallyDrop;
77

88
use argmin::core::{CostFunction, Problem, Solver, State, TerminationStatus, KV};
9+
#[cfg(feature = "serde1")]
910
use serde::{Deserialize, Serialize};
1011

1112
/// [Argmin Solver](https://www.argmin-rs.org/book/index.html) which implements COBYLA method.
1213
///
1314
/// ```
1415
/// use argmin::core::{CostFunction, Error, Executor};
15-
/// use argmin::core::observers::{ObserverMode, SlogLogger};
16+
/// use argmin::core::observers::{ObserverMode};
17+
/// use argmin_observer_slog::SlogLogger;
1618
/// use cobyla::CobylaSolver;
1719
///
1820
/// struct ParaboloidProblem;
@@ -40,7 +42,7 @@ use serde::{Deserialize, Serialize};
4042
///
4143
/// println!("Result of COBYLA:\n{}", res);
4244
/// ```
43-
#[derive(Clone, Serialize, Deserialize)]
45+
#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
4446
pub struct CobylaSolver {
4547
/// Initial guess for x value
4648
x0: Vec<f64>,

src/cobyla_state.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::cobyla::cobyla_context_t;
22
/// Implementation of `argmin::IterState` for Cobyla optimizer
33
use argmin::core::{Problem, State, TerminationReason, TerminationStatus};
4+
#[cfg(feature = "serde1")]
45
use serde::{Deserialize, Serialize};
56
use std::collections::HashMap;
67
use std::mem::ManuallyDrop;
@@ -24,7 +25,8 @@ use std::mem::ManuallyDrop;
2425
/// * termination status
2526
/// * COBYLA specific parameters: rhobeg, rhoend, iprint, maxfun
2627
///
27-
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
28+
#[derive(Clone, Debug, Default)]
29+
#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
2830
pub struct CobylaState {
2931
/// Current parameter vector
3032
pub param: Option<Vec<f64>>,
@@ -68,7 +70,7 @@ pub struct CobylaState {
6870
/// Cost function calls budget
6971
pub maxfun: i32,
7072

71-
#[serde(skip)]
73+
#[cfg_attr(feature = "serde1", serde(skip))]
7274
pub cobyla_context: Option<ManuallyDrop<*mut cobyla_context_t>>,
7375
}
7476

@@ -83,7 +85,7 @@ where
8385
///
8486
/// ```
8587
/// # use argmin::core::{IterState, State};
86-
/// # let state: IterState<Vec<f64>, (), (), (), f64> = IterState::new();
88+
/// # let state: IterState<Vec<f64>, (), (), (), (), f64> = IterState::new();
8789
/// # let param_old = vec![1.0f64, 2.0f64];
8890
/// # let state = state.param(param_old);
8991
/// # assert!(state.prev_param.is_none());
@@ -529,7 +531,7 @@ impl State for CobylaState {
529531
///
530532
/// ```
531533
/// # use argmin::core::{IterState, State, ArgminFloat, TerminationStatus};
532-
/// # let mut state: IterState<Vec<f64>, (), (), (), f64> = IterState::new();
534+
/// # let mut state: IterState<Vec<f64>, (), (), (), (), f64> = IterState::new();
533535
/// let termination_status = state.get_termination_status();
534536
/// # assert_eq!(*termination_status, TerminationStatus::NotTerminated);
535537
/// ```
@@ -543,7 +545,7 @@ impl State for CobylaState {
543545
///
544546
/// ```
545547
/// # use argmin::core::{IterState, State, ArgminFloat, TerminationReason};
546-
/// # let mut state: IterState<Vec<f64>, (), (), (), f64> = IterState::new();
548+
/// # let mut state: IterState<Vec<f64>, (), (), (), (), f64> = IterState::new();
547549
/// let termination_reason = state.get_termination_reason();
548550
/// # assert_eq!(termination_reason, None);
549551
/// ```

0 commit comments

Comments
 (0)