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
57
58
59
60
61
62
63
64
65
66
67
//! EvalRun - Single evaluation run result
use serde::{Deserialize, Serialize};
use crate::metrics::RunMetrics;
/// Termination reason for an evaluation run
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TerminationReason {
/// Successfully completed (success condition met)
Success,
/// Failed (failure condition met)
Failure,
/// Timed out (max ticks reached)
Timeout,
/// Manually stopped
Stopped,
}
impl std::fmt::Display for TerminationReason {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Success => write!(f, "success"),
Self::Failure => write!(f, "failure"),
Self::Timeout => write!(f, "timeout"),
Self::Stopped => write!(f, "stopped"),
}
}
}
/// Single evaluation run result
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EvalRun {
/// Run index (0-based)
pub index: usize,
/// Seed used for this run
pub seed: u64,
/// Whether the run was successful
pub success: bool,
/// Termination reason
pub termination_reason: TerminationReason,
/// Run metrics
pub metrics: RunMetrics,
}
impl EvalRun {
/// Create new run result
pub fn new(
index: usize,
seed: u64,
success: bool,
termination_reason: TerminationReason,
metrics: RunMetrics,
) -> Self {
Self {
index,
seed,
success,
termination_reason,
metrics,
}
}
}