Ejemplo n.º 1
0
 public List <double> GetPerfectArrayValue(int correctScorePoints)
 {
     return(FootballHelper.GetPerfectArrayValue(correctScorePoints));
 }
        public string TestNetwork(Dictionary <LastMatch, List <LastMatch> > matches)
        {
            // Собираю статистику
            double[] minMaxHelperArray = new double[14];
            for (int i = 0; i < 14; i += 2)
            {
                minMaxHelperArray[i]     = 1000.0;
                minMaxHelperArray[i + 1] = -1000.0;
            }
            double fullSumm = 0.0;
            double oneSumm  = 0.0;

            // перебираем все пришедшие матчи для обучения
            foreach (var dict in matches)
            {
                var tmpInputParameters = new List <double>();
                // Преобразуем входные параметры к подходящему виду так же, как это делает нейросеть
                foreach (var Lmatch in dict.Value)
                {
                    tmpInputParameters.AddRange(Lmatch.ToListDouble());
                }
                // Получаем первичное предсказание вспомогательных сетей
                var helpNetworkResult = GetHistoryPrediction(tmpInputParameters);
                // Получаем входные параметры для Ванги
                var studyMatch = dict.Key;

                // Набираю параметры для нейронки
                var vangaNetworkReult = FootballHelper.GetVangaInputParametersByCorrectMarchForFootballLearning(studyMatch);
                var parametersList    = new List <double>()
                {
                    studyMatch.tier_A, studyMatch.tier_B, studyMatch.Important_A, studyMatch.Important_B, studyMatch.replacements_A, studyMatch.replacements_B, studyMatch.tier_tournament
                };
                vangaNetworkReult.AddRange(parametersList);

                var VangaAnswer = GetFinalPrediction(vangaNetworkReult);

                var perfectHelpAnswer  = FootballHelper.GetCurrectParametersForHelperLearning(studyMatch);
                var perfectVangaAnswer = FootballHelper.GetPerfectArrayValue(studyMatch.Score_A - studyMatch.Score_B + 6);

                // Подсчёт изначальной ошибки
                var helpErrors = new List <double>();
                for (int i = 0; i < perfectHelpAnswer.Count; i++)
                {
                    var tmp = helpNetworkResult[i] - perfectHelpAnswer[i];
                    if (minMaxHelperArray[2 * i] > tmp)
                    {
                        minMaxHelperArray[2 * i] = tmp;
                    }
                    if (minMaxHelperArray[2 * i + 1] < tmp)
                    {
                        minMaxHelperArray[2 * i + 1] = tmp;
                    }
                    helpErrors.Add(tmp);
                }
                var VangaErrors = new List <double>();
                for (int i = 0; i < perfectVangaAnswer.Count; i++)
                {
                    oneSumm += VangaAnswer[i] - perfectVangaAnswer[i];
                    VangaErrors.Add(VangaAnswer[i] - perfectVangaAnswer[i]);
                }

                // Без Шага обучения
                // Статистика
                fullSumm += oneSumm;
                oneSumm   = 0.0;
            }
            fullSumm /= matches.Count;
            var resultString = "Main: " + fullSumm.ToString("f4") + " other min/max: ";

            for (int i = 0; i < 14; i += 2)
            {
                switch (i)
                {
                case 0:
                    resultString += "Tot: ";
                    break;

                case 2:
                    resultString += "SvA: ";
                    break;

                case 4:
                    resultString += "SvB: ";
                    break;

                case 6:
                    resultString += "VA: ";
                    break;

                case 8:
                    resultString += "VB: ";
                    break;

                case 10:
                    resultString += "ShA: ";
                    break;

                case 12:
                    resultString += "ShB: ";
                    break;

                default:
                    break;
                }
                resultString += minMaxHelperArray[i].ToString("f2") + "/" + minMaxHelperArray[i + 1].ToString("f2") + " ";
            }
            return(resultString);
        }