public override PatternResult Test(List <Pattern> patterns)
        {
            if (patterns.Count == 0)
            {
                return(null);
            }

            DoubleVector actual;
            double       error   = 0.0;
            double       correct = 0;

            foreach (Pattern p in patterns)
            {
                actual = sann.FeedForward(p.Inputs.Scale(0.02, 0.98));
                error += sann.GetMeanSquareError(p.Outputs, actual);

                if (GetOutputCharacter(actual) == GetOutputCharacter(p.Outputs))
                {
                    correct++;
                }
            }

            return(new PatternResult(error, (correct / patterns.Count) * 100.0));
        }