Adds the headline async/await capability for IO-bound evaluations (HTTP services, RPC clients, spawned subprocesses) — the differentiator vs pymoo / hyperopt / MOEA Framework. No public-API breaks for synchronous users. The new surface is gated behind a new `async` feature flag. - core::async_problem::AsyncProblem trait (async fn evaluate_async). - algorithms::parallel_eval_async::evaluate_batch_async helper using futures::stream::FuturesOrdered with concurrency-bounded chunks; preserves input order so seeded determinism holds when evaluations are themselves deterministic. - run_async on RandomSearch and DifferentialEvolution. - examples/async_eval.rs: simulated 20 ms remote service. concurrency=1 → 4.2 s, concurrency=4 → 2.1 s (2× speedup). Bumps Cargo.toml to 0.8.0; CHANGELOG entry covers the above plus a note that 0.6.0/0.7.0 on crates.io are yanked experimentals and 0.8 picks up cleanly from 0.5.
24 lines
524 B
Rust
24 lines
524 B
Rust
//! Concrete data types and the `Problem` trait that the rest of the crate is built on.
|
|
|
|
#[cfg(feature = "async")]
|
|
pub mod async_problem;
|
|
pub mod candidate;
|
|
pub mod evaluation;
|
|
pub mod objective;
|
|
pub mod partial_problem;
|
|
pub mod population;
|
|
pub mod problem;
|
|
pub mod result;
|
|
pub mod rng;
|
|
|
|
#[cfg(feature = "async")]
|
|
pub use async_problem::AsyncProblem;
|
|
pub use candidate::*;
|
|
pub use evaluation::*;
|
|
pub use objective::*;
|
|
pub use partial_problem::*;
|
|
pub use population::*;
|
|
pub use problem::*;
|
|
pub use result::*;
|
|
pub use rng::*;
|