1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//! Callback of Optimization Iteration
use ;
/// OptProgress expresses Optimization Progress that is passed to a [`OptCallbackFn`]
/// OptCallbackFn is a trait of a callback function for optimization
/// Typical usage is to show progress bar and save current result to the file
///
/// Example
///
/// ```rust
/// let pb = ProgressBar::new(n_iter);
/// pb.set_style(
/// ProgressStyle::default_bar()
/// .template(
/// "{spinner:.green} [{elapsed_precise}] [{wide_bar:.cyan/blue}] {pos}/{len} (eta={eta}) {msg} ",
/// ).unwrap()
/// .progress_chars("#>-")
/// );
/// pb.set_draw_target(ProgressDrawTarget::stderr_with_hz(10));
/// let mut callback = |op: OptProgress<SolutionType, ScoreType>| {
/// pb.set_message(format!(
/// "best score {:.4e}, acceptance ratio {:.2e}",
/// op.score.into_inner(),
/// op.acceptance_ratio
/// ));
/// pb.set_position(op.iter as u64);
/// };
/// ```