From aa38fc8b700dd00e05546cc7313570fbb223cf1d Mon Sep 17 00:00:00 2001 From: Volodymyr Orlov Date: Mon, 26 Oct 2020 16:00:55 -0700 Subject: [PATCH] fix: SVS: post-review changes --- src/svm/svc.rs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/svm/svc.rs b/src/svm/svc.rs index 6e79177..b0bf8b0 100644 --- a/src/svm/svc.rs +++ b/src/svm/svc.rs @@ -462,7 +462,12 @@ impl<'a, T: RealNumber, M: Matrix, K: Kernel> Optimizer<'a, range } - fn select_pair(&mut self, idx_1: Option, idx_2: Option, cache: &mut Cache) -> Option<(usize, usize, T)> { + fn select_pair( + &mut self, + idx_1: Option, + idx_2: Option, + cache: &mut Cache, + ) -> Option<(usize, usize, T)> { let mut idx_1 = idx_1; let mut idx_2 = idx_2; @@ -526,15 +531,14 @@ impl<'a, T: RealNumber, M: Matrix, K: Kernel> Optimizer<'a, } } } - } + } if idx_1.is_none() || idx_2.is_none() { None } else { - let idx_1 = idx_1.unwrap(); let idx_2 = idx_2.unwrap(); - + if k_v_12.is_none() { k_v_12 = Some(self.kernel.apply(&self.sv[idx_1].x, &self.sv[idx_2].x)); } @@ -550,7 +554,6 @@ impl<'a, T: RealNumber, M: Matrix, K: Kernel> Optimizer<'a, tol: T, cache: &mut Cache, ) -> bool { - match self.select_pair(idx_1, idx_2, cache) { Some((idx_1, idx_2, k_v_12)) => { let mut curv = self.sv[idx_1].k + self.sv[idx_2].k - T::two() * k_v_12; @@ -583,10 +586,9 @@ impl<'a, T: RealNumber, M: Matrix, K: Kernel> Optimizer<'a, self.update(idx_1, idx_2, step, cache); return self.gmax - self.gmin > tol; - }, - None => false - } - + } + None => false, + } } fn update(&mut self, v1: usize, v2: usize, step: T, cache: &mut Cache) {