/// <summary> /// Evaluates given solution program using given samplesGenerator. Prints a comparison of desiredOutputs to realOutputs and computes success rate. /// </summary> /// <param name="generator"></param> /// <param name="p"></param> /// <param name="samplesCount"></param> public static void runEvaluation(TrainingSamplesGenerator generator, SolutionProgram p, int samplesCount, bool quiet = false) { Interpret i = new Interpret(); int currectCount = 0; foreach (var sample in generator.generateSamples(samplesCount)) { p.evaluate(sample, i); Printing.PrintMsg(sample.ToString() + "\treal output: " + sample.realOutputs2String + " " + (sample.isCorrectlyAnswered ? "OK" : "WRONG"), quiet); if (sample.isCorrectlyAnswered) { currectCount++; } } Console.WriteLine($"Success rate: {currectCount} out of {samplesCount} ({((double)(currectCount*100) / samplesCount).ToString("0.##")}%)"); }
/// <summary> /// Returns the percentage of correctly answered tests /// </summary> /// <param name="batchSize"></param> /// <param name="p"></param> /// <returns></returns> protected virtual double evaluate(int batchSize, SolutionProgram p) { int currectCount = 0; //var samples = generator.generateSamples(batchSize).ToList(); foreach (var sample in generator.generateSamples(batchSize)) { p.evaluate(sample, i); bool isCorrect = sample.isCorrectlyAnswered; printMSG(sample.ToString() + "\treal output: " + sample.realOutputs2String + " " + (isCorrect ? "OK" : "WRONG"), true); if (isCorrect) { currectCount++; } } return((double)(currectCount * 100) / batchSize); }