39 lines
836 B
Rust
39 lines
836 B
Rust
use crate::{gaussian::Gaussian, player::Player, N_INF};
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct Agent {
|
|
pub(crate) player: Player,
|
|
pub(crate) message: Gaussian,
|
|
pub(crate) last_time: i64,
|
|
}
|
|
|
|
impl Agent {
|
|
pub(crate) fn receive(&self, elapsed: i64) -> Gaussian {
|
|
if self.message != N_INF {
|
|
self.message.forget(self.player.gamma, elapsed)
|
|
} else {
|
|
self.player.prior
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Default for Agent {
|
|
fn default() -> Self {
|
|
Self {
|
|
player: Player::default(),
|
|
message: N_INF,
|
|
last_time: i64::MIN,
|
|
}
|
|
}
|
|
}
|
|
|
|
pub(crate) fn clean<'a, A: Iterator<Item = &'a mut Agent>>(agents: A, last_time: bool) {
|
|
for a in agents {
|
|
a.message = N_INF;
|
|
|
|
if last_time {
|
|
a.last_time = i64::MIN;
|
|
}
|
|
}
|
|
}
|