public bool AddNewWaitResultMatch(string[] parameters, TournamentShort tournament, DateTime date, string prediction) { return(_disciplineController.AddNewWaitResultMatch(parameters, tournament, date, prediction)); }
public string GetPrediction(string[] parameters, DateTime date) { var tournament = tournamentList.First(it => it.Tournament_name == parameters[0]); var tierA = 0.0; var tierB = 0.0; List <double> tmpValue = new List <double>(); foreach (var lastMatches in lastMatchesA) { tmpValue.AddRange(lastMatches.ToListDouble()); } foreach (var lastMatches in lastMatchesB) { tmpValue.AddRange(lastMatches.ToListDouble()); } // Получение ранга команд из прошлых матчей (интересный костыль) tierA = tmpValue[8]; tierB = tmpValue[83]; var statisticPredicts = _network.GetHistoryPrediction(tmpValue); var finalInputParameters = new List <double>(); // Учесть, что количество сейвов - дробное число и его не надо преобразовать for (int i = 0; i < statisticPredicts.Count; i++) { if (i != 1 && i != 2) { finalInputParameters.AddRange(_interpritator.GetPrediction(statisticPredicts[i])); } else { finalInputParameters.Add(statisticPredicts[i]); finalInputParameters.Add(statisticPredicts[i]); } } for (int i = 0; i < statisticPredicts.Count; i++) { if (i != 1 && i != 2) { finalInputParameters[i] = _interpritator.GetPerfectValue((int)statisticPredicts[i]); } } var prediction = "ТБ: " + ((finalInputParameters[0] + finalInputParameters[1]) / 2).ToString("f1") + " Нарушений А: " + ((finalInputParameters[6] + finalInputParameters[7]) / 2).ToString("f2") + " Нарушений B: " + ((finalInputParameters[8] + finalInputParameters[9]) / 2).ToString("f2") + " Забито А: " + (((finalInputParameters[10] + finalInputParameters[11]) / 2) * ((finalInputParameters[4] + finalInputParameters[5]) / 2)).ToString("f2") + " Забито В: " + (((finalInputParameters[12] + finalInputParameters[13]) / 2) * ((finalInputParameters[2] + finalInputParameters[3]) / 2)).ToString("f2") + ";"; // Вывести приколы интерпритаторов. // Дополнительные параметры для итоговой нейронной сети finalInputParameters.Add(tierA); finalInputParameters.Add(tierB); // Важность для домашней команды и команды гостей finalInputParameters.Add(int.Parse(parameters[3])); finalInputParameters.Add(int.Parse(parameters[4])); // Замены у домашней команды и команды гостей finalInputParameters.Add(int.Parse(parameters[5])); finalInputParameters.Add(int.Parse(parameters[6])); finalInputParameters.Add(tournament.Tournament_size); /// Вычисление итогового результата. /// Результат - массив из 10 чисел. Число, первым выходящее за Епсилон больше 0.1 от Единицы, /// считается результатом с умеренным риском. Для преобразования результата в более понятный вид /// необходимо воспользоваться интерпритатором var finalPredict = _network.GetFinalPrediction(finalInputParameters); prediction += _interpritator.GetPrediction(finalPredict); _interactionController.AddNewWaitResultMatch(parameters, tournament, date, prediction); return(prediction); }