func Test_sus01(tst *testing.T) { //verbose() chk.PrintTitle("sus01. stochastic-universal-sampling") f := []float64{2.0, 1.8, 1.6, 1.4, 1.2, 1.0, 0.8, 0.6, 0.4, 0.2, 0.0} n := len(f) p := make([]float64, n) sum := la.VecAccum(f) for i := 0; i < n; i++ { p[i] = f[i] / sum } cs := make([]float64, len(p)) utl.CumSum(cs, p) selinds := make([]int, 6) SUSselect(selinds, cs, 0.1) io.Pforan("selinds = %v\n", selinds) chk.Ints(tst, "selinds", selinds, []int{0, 1, 2, 3, 5, 7}) }
func Test_rws01(tst *testing.T) { //verbose() chk.PrintTitle("rws01. roulette whell selection") f := []float64{2.0, 1.8, 1.6, 1.4, 1.2, 1.0, 0.8, 0.6, 0.4, 0.2, 0.0} n := len(f) p := make([]float64, n) sum := la.VecAccum(f) for i := 0; i < n; i++ { p[i] = f[i] / sum } cs := make([]float64, len(p)) utl.CumSum(cs, p) selinds := make([]int, 6) RouletteSelect(selinds, cs, []float64{0.81, 0.32, 0.96, 0.01, 0.65, 0.42}) io.Pforan("selinds = %v\n", selinds) chk.Ints(tst, "selinds", selinds, []int{5, 1, 8, 0, 4, 2}) }