Skip to content

Commit 157773f

Browse files
committed
Keep only EgorSolver::new constructor with xtypes
1 parent 61ab73b commit 157773f

File tree

3 files changed

+14
-38
lines changed

3 files changed

+14
-38
lines changed

ego/src/egor.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,10 @@ impl<O: GroupFunc> EgorBuilder<O> {
142142
} else {
143143
Xoshiro256Plus::from_entropy()
144144
};
145+
let xtypes = to_xtypes(xlimits);
145146
Egor {
146147
fobj: ObjFunc::new(self.fobj),
147-
solver: EgorSolver::new(self.config, xlimits, rng),
148+
solver: EgorSolver::new(self.config, &xtypes, rng),
148149
}
149150
}
150151

@@ -159,7 +160,7 @@ impl<O: GroupFunc> EgorBuilder<O> {
159160
};
160161
Egor {
161162
fobj: ObjFunc::new(self.fobj),
162-
solver: EgorSolver::new_with_xtypes(self.config, xtypes, rng),
163+
solver: EgorSolver::new(self.config, xtypes, rng),
163164
}
164165
}
165166
}

ego/src/egor_service.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,13 @@ impl EgorServiceBuilder {
8686
} else {
8787
Xoshiro256Plus::from_entropy()
8888
};
89+
let xtypes = to_xtypes(xlimits);
8990
EgorService {
9091
config: EgorConfig {
91-
xtypes: Some(to_xtypes(xlimits)),
92+
xtypes: Some(xtypes.clone()),
9293
..self.config.clone()
9394
},
94-
solver: EgorSolver::new(self.config, xlimits, rng),
95+
solver: EgorSolver::new(self.config, &xtypes, rng),
9596
}
9697
}
9798

@@ -109,7 +110,7 @@ impl EgorServiceBuilder {
109110
xtypes: Some(xtypes.to_vec()),
110111
..self.config.clone()
111112
},
112-
solver: EgorSolver::new_with_xtypes(self.config, xtypes, rng),
113+
solver: EgorSolver::new(self.config, xtypes, rng),
113114
}
114115
}
115116
}

ego/src/egor_solver.rs

+7-33
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
//! ```no_run
99
//! use ndarray::{array, Array2, ArrayView1, ArrayView2, Zip};
1010
//! use egobox_doe::{Lhs, SamplingMethod};
11-
//! use egobox_ego::{EgorBuilder, EgorConfig, InfillStrategy, InfillOptimizer, ObjFunc, EgorSolver};
11+
//! use egobox_ego::{EgorBuilder, EgorConfig, InfillStrategy, InfillOptimizer, ObjFunc, EgorSolver, to_xtypes};
1212
//! use egobox_moe::MoeParams;
1313
//! use rand_xoshiro::Xoshiro256Plus;
1414
//! use ndarray_rand::rand::SeedableRng;
@@ -25,10 +25,10 @@
2525
//! y
2626
//! }
2727
//! let rng = Xoshiro256Plus::seed_from_u64(42);
28-
//! let xlimits = array![[-2., 2.], [-2., 2.]];
28+
//! let xtypes = to_xtypes(&array![[-2., 2.], [-2., 2.]]);
2929
//! let fobj = ObjFunc::new(rosenb);
3030
//! let config = EgorConfig::default();
31-
//! let solver: EgorSolver<MoeParams<f64, Xoshiro256Plus>> = EgorSolver::new(config, &xlimits, rng);
31+
//! let solver: EgorSolver<MoeParams<f64, Xoshiro256Plus>> = EgorSolver::new(config, &xtypes, rng);
3232
//! let res = Executor::new(fobj, solver)
3333
//! .configure(|state| state.max_iters(20))
3434
//! .run()
@@ -47,7 +47,7 @@
4747
//! ```no_run
4848
//! use ndarray::{array, Array2, ArrayView1, ArrayView2, Zip};
4949
//! use egobox_doe::{Lhs, SamplingMethod};
50-
//! use egobox_ego::{EgorBuilder, EgorConfig, InfillStrategy, InfillOptimizer, ObjFunc, EgorSolver};
50+
//! use egobox_ego::{EgorBuilder, EgorConfig, InfillStrategy, InfillOptimizer, ObjFunc, EgorSolver, to_xtypes};
5151
//! use egobox_moe::MoeParams;
5252
//! use rand_xoshiro::Xoshiro256Plus;
5353
//! use ndarray_rand::rand::SeedableRng;
@@ -83,6 +83,7 @@
8383
//! let rng = Xoshiro256Plus::seed_from_u64(42);
8484
//! let xlimits = array![[0., 3.], [0., 4.]];
8585
//! let doe = Lhs::new(&xlimits).sample(10);
86+
//! let xtypes = to_xtypes(&xlimits);
8687
//!
8788
//! let fobj = ObjFunc::new(f_g24);
8889
//!
@@ -94,7 +95,7 @@
9495
//! .target(-5.5080);
9596
//!
9697
//! let solver: EgorSolver<MoeParams<f64, Xoshiro256Plus>> =
97-
//! EgorSolver::new(config, &xlimits, rng);
98+
//! EgorSolver::new(config, &xtypes, rng);
9899
//!
99100
//! let res = Executor::new(fobj, solver)
100101
//! .configure(|state| state.max_iters(40))
@@ -218,36 +219,9 @@ impl<SB: SurrogateBuilder> EgorSolver<SB> {
218219
/// Constructor of the optimization of the function `f` with specified random generator
219220
/// to get reproducibility.
220221
///
221-
/// The function `f` should return an objective value but also constraint values if any.
222-
/// Design space is specified by the matrix `xlimits` which is `[nx, 2]`-shaped
223-
/// the ith row contains lower and upper bounds of the ith component of `x`.
224-
pub fn new(
225-
config: EgorConfig,
226-
xlimits: &ArrayBase<impl Data<Elem = f64>, Ix2>,
227-
rng: Xoshiro256Plus,
228-
) -> Self {
229-
let env = Env::new().filter_or("EGOBOX_LOG", "info");
230-
let mut builder = Builder::from_env(env);
231-
let builder = builder.target(env_logger::Target::Stdout);
232-
builder.try_init().ok();
233-
EgorSolver {
234-
config: EgorConfig {
235-
xtypes: Some(to_xtypes(xlimits)), // align xlimits and xtypes
236-
..config
237-
},
238-
xlimits: xlimits.to_owned(),
239-
surrogate_builder: SB::new_with_xtypes(&to_xtypes(xlimits)),
240-
rng,
241-
}
242-
}
243-
244-
/// Constructor of the optimization of the function `f` with specified random generator
245-
/// to get reproducibility. This constructor is used for mixed-integer optimization
246-
/// when `f` has discrete inputs to be specified with list of xtypes.
247-
///
248222
/// The function `f` should return an objective but also constraint values if any.
249223
/// Design space is specified by a list of types for input variables `x` of `f` (see [`XType`]).
250-
pub fn new_with_xtypes(config: EgorConfig, xtypes: &[XType], rng: Xoshiro256Plus) -> Self {
224+
pub fn new(config: EgorConfig, xtypes: &[XType], rng: Xoshiro256Plus) -> Self {
251225
let env = Env::new().filter_or("EGOBOX_LOG", "info");
252226
let mut builder = Builder::from_env(env);
253227
let builder = builder.target(env_logger::Target::Stdout);

0 commit comments

Comments
 (0)