Use array impl instead of vec

This commit is contained in:
2021-10-27 11:33:54 +02:00
parent 1eea1bfb71
commit 71b795d9ed
5 changed files with 7 additions and 8 deletions

View File

@@ -12,7 +12,7 @@ fn main() {
let k_tom = ks::kernel::Exponential::new(1.0, 1.0); let k_tom = ks::kernel::Exponential::new(1.0, 1.0);
// Jerry's skill has a constant offset and smooth dynamics. // Jerry's skill has a constant offset and smooth dynamics.
let k_jerry: Vec<Box<dyn ks::Kernel>> = vec![ let k_jerry: [Box<dyn ks::Kernel>; 2] = [
Box::new(ks::kernel::Constant::new(1.0)), Box::new(ks::kernel::Constant::new(1.0)),
Box::new(ks::kernel::Matern52::new(0.5, 1.0)), Box::new(ks::kernel::Matern52::new(0.5, 1.0)),
]; ];
@@ -37,20 +37,20 @@ fn main() {
model.fit(); model.fit();
// We can predict a future outcome... // We can predict a future outcome...
let (p_win, _p_los) = model.probabilities(&[&"Jerry"], &[&"Tom"], 4.0); let (p_win, _p_los) = model.probabilities(&["Jerry"], &["Tom"], 4.0);
println!( println!(
"Chances that Jerry beats Tom at t = 4.0: {:.1}%", "Chances that Jerry beats Tom at t = 4.0: {:.1}%",
100.0 * p_win 100.0 * p_win
); );
// ... or simulate what could have happened in the past. // ... or simulate what could have happened in the past.
let (p_win, _p_los) = model.probabilities(&[&"Jerry"], &[&"Tom"], 2.0); let (p_win, _p_los) = model.probabilities(&["Jerry"], &["Tom"], 2.0);
println!( println!(
"Chances that Jerry beats Tom at t = 2.0: {:.1}%", "Chances that Jerry beats Tom at t = 2.0: {:.1}%",
100.0 * p_win 100.0 * p_win
); );
let (p_win, _p_los) = model.probabilities(&[&"Jerry"], &[&"Tom"], -1.0); let (p_win, _p_los) = model.probabilities(&["Jerry"], &["Tom"], -1.0);
println!( println!(
"Chances that Jerry beats Tom at t = -1.0: {:.1}%", "Chances that Jerry beats Tom at t = -1.0: {:.1}%",
100.0 * p_win 100.0 * p_win

View File

@@ -57,7 +57,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut model = ks::model::Binary::new(ks::model::binary::Observation::Probit); let mut model = ks::model::Binary::new(ks::model::binary::Observation::Probit);
for team in teams { for team in teams {
let kernel: Vec<Box<dyn ks::Kernel>> = vec![ let kernel: [Box<dyn ks::Kernel>; 2] = [
Box::new(ks::kernel::Constant::new(0.03)), Box::new(ks::kernel::Constant::new(0.03)),
Box::new(ks::kernel::Matern32::new(0.138, 1.753 * seconds_in_year)), Box::new(ks::kernel::Matern32::new(0.138, 1.753 * seconds_in_year)),
]; ];

View File

@@ -1,4 +1,3 @@
use std::cmp::Ordering;
use std::f64::consts::{PI, SQRT_2, TAU}; use std::f64::consts::{PI, SQRT_2, TAU};
use crate::math::erfc; use crate::math::erfc;

View File

@@ -11,7 +11,7 @@ fn kickscore_basic() {
let k_tom = ks::kernel::Exponential::new(1.0, 1.0); let k_tom = ks::kernel::Exponential::new(1.0, 1.0);
let k_jerry: Vec<Box<dyn ks::Kernel>> = vec![ let k_jerry: [Box<dyn ks::Kernel>; 2] = [
Box::new(ks::kernel::Constant::new(1.0)), Box::new(ks::kernel::Constant::new(1.0)),
Box::new(ks::kernel::Matern52::new(0.5, 1.0)), Box::new(ks::kernel::Matern52::new(0.5, 1.0)),
]; ];

View File

@@ -61,7 +61,7 @@ fn nba_history() {
let mut model = ks::model::Binary::new(ks::model::binary::Observation::Probit); let mut model = ks::model::Binary::new(ks::model::binary::Observation::Probit);
for team in teams { for team in teams {
let kernel: Vec<Box<dyn ks::Kernel>> = vec![ let kernel: [Box<dyn ks::Kernel>; 2] = [
Box::new(ks::kernel::Constant::new(0.03)), Box::new(ks::kernel::Constant::new(0.03)),
Box::new(ks::kernel::Matern32::new(0.138, 1.753 * seconds_in_year)), Box::new(ks::kernel::Matern32::new(0.138, 1.753 * seconds_in_year)),
]; ];