Port from julia version instead
This commit is contained in:
37
src/agent.rs
Normal file
37
src/agent.rs
Normal file
@@ -0,0 +1,37 @@
|
||||
use crate::{gaussian::Gaussian, player::Player, N_INF};
|
||||
|
||||
pub(crate) struct Agent {
|
||||
pub(crate) player: Player,
|
||||
pub(crate) message: Gaussian,
|
||||
pub(crate) last_time: u64,
|
||||
}
|
||||
|
||||
impl Agent {
|
||||
pub(crate) fn receive(&self, elapsed: u64) -> 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: u64::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 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user