func validateNand(g *genome.Genome) float64 { correct := 0 for _, n := range nandTests { r := g.EvalBool(n.in, bn.BoolAllGates) if r == n.out { correct++ } } return 1000.0 * float64(correct) / float64(len(nandTests)) }
func validateFunc(g *genome.Genome) float64 { result := 0.0 for _, n := range srTests { r := g.EvalMath(n.in) if math.IsInf(r, 0) { return 0.0 } fitness := math.Abs(r - n.out) fitness = 1000.0 / (1.0 + fitness) // fitness is normalized and max value is 1000 result += fitness } return result }
func validateFunc(g *genome.Genome) float64 { result := 0.0 for _, n := range srTests { r := g.EvalMath(n.in) // fmt.Printf("r=%v, n.in=%v, n.out=%v, g=%v\n", r, n.in, n.out, g) if math.IsInf(r, 0) { return 0.0 } fitness := math.Abs(r - n.out) fitness = 1000.0 / (1.0 + fitness) // fitness is normalized and max value is 1000 // fmt.Printf("r=%v, n.in=%v, n.out=%v, fitness=%v, g=%v\n", r, n.in, n.out, fitness, g) result += fitness } return result / float64(len(srTests)) }