public IActionResult InitAdPosition() { List <Ad_Page> pageList = null; List <Ad_Position> positionList = null; var result = InitProvider.InitAdPosition(out pageList, out positionList); List <InitAdPositionResult> data = new List <InitAdPositionResult>(); if (result > 0 && null != pageList && pageList.Count > 0) { foreach (var page in pageList) { data.Add(new InitAdPositionResult { PageID = page.PageID, PageName = page.PageName, PlatformType = page.PlatformType, PlatformName = EnumUtility.GetEnumDescription <EnumLibrary.ADTerminal>(page.PlatformType), PositionList = positionList.Where(p => p.PageID == page.PageID).ToList() }); } } return(KylinOk(data)); }
public IActionResult InitArea() { var result = InitProvider.InitArea(); string txt = string.Format("本次共初始化 {0} 个区域", result); return(KylinOk(txt)); }
public IActionResult InitGlobalConfig() { var result = InitProvider.InitGlobalConfig(); string txt = string.Format("本次共初始化 {0} 个全局配置项", result); return(KylinOk(txt)); }
public IActionResult InitSuperAdmin() { string account = "admin"; string pwd = "123456"; int rows = InitProvider.InitSuperAdmin(account, pwd); return(Ok(string.Format("超级管理初始化成功!账号:{0},密码:{1}", account, pwd))); }
public void Init() { InitProvider.InitApiMoudleAuthoriza(); string account = "admin"; string pwd = "123456"; int rows = InitProvider.InitSuperAdmin(account, pwd); InitProvider.InitIndustry(); InitProvider.InitArea(); InitProvider.InitGlobalConfig(); List <Ad_Page> pageList = null; List <Ad_Position> positionList = null; InitProvider.InitAdPosition(out pageList, out positionList); InitProvider.InitPointsConfig(); InitProvider.InitEmpiricalConfig(); InitProvider.InitLevelConfig(); }
private void btn1_Click(object sender, RoutedEventArgs e) { ForecastModel forecastModel = InitProvider.GetForecastModel(); #region validation Regex timeRegexp = new Regex(@"^(\d{1,4})$"); Regex scoreRegexp = new Regex(InitProvider.GetRegexpValidator(dataModels)); //валидации формы нет, отсев данных происходит в момент клика double currentTime = 0; double maxTime = 90 * 60; string score = "0-0"; int scoreFirstCommand = 0; int ScoreSecondCommand = 0; if (timeRegexp.IsMatch(textBoxTime.Text)) { currentTime = double.Parse(textBoxTime.Text); } if (scoreRegexp.IsMatch(textBoxScore.Text)) { score = textBoxScore.Text; scoreFirstCommand = int.Parse(score.Split(new[] { "-" }, StringSplitOptions.RemoveEmptyEntries)[0]); ScoreSecondCommand = int.Parse(score.Split(new[] { "-" }, StringSplitOptions.RemoveEmptyEntries)[1]); } if (currentTime < 0) { currentTime = 0; } if (currentTime > maxTime) { currentTime = maxTime; } #endregion //Основная идея - последующий отрезок матча воспринимается как отдельный матч. //Чем ближе к концу - тем больше вероятность текущего счета стремится к единице. //В момент, когда время равняется 90 минутам, невозможен иной исход, нежели тот, который задан. //Данная концепция согласуется с ситуацией, когда на N-ой минуте уже достигнут максимальный по таблице счет. //В этом случае, если не воспринимать оставшуюся часть игры, как отдельно взятый матч с ограниченным временем, //Можно прийти к результату, что изменений в матче происходить не будет. Однако, это не совсем логично. //Поэтому, в зависимости от счета, меняется и таблица результата, //И появляется, пусть и с меньшей вероятностью, ситуация, когда будет забито больше мячей, чем за все предбыдущие матчи. double timeLeftKoef = (maxTime - currentTime) / maxTime; #region update forecastModel var currentDataModels = ProbabilityProvider.GetCurrentDataModels(dataModels, timeLeftKoef, scoreFirstCommand, ScoreSecondCommand); //Эта вероятность (текущий счет) будет стремиться к единицы к концу матча. var currentFreeProbability = 1.0 - currentDataModels.Sum(x => x.Probability); var currentDataModel = ProbabilityProvider.GetCurrentDataModel(scoreFirstCommand, ScoreSecondCommand, currentFreeProbability); forecastModel.CurrentDataModel = currentDataModel; forecastModel.CurrentScoreFirstCommand = scoreFirstCommand; forecastModel.CurrentScoreSecondCommand = ScoreSecondCommand; forecastModel.CurrentTime = currentTime; forecastModel.DataModels = currentDataModels; #region probability //Надо ли загонять вероятности в 1? (с позиции математики - надо, //Однако, тут вычисления приближенные, и можно их все округлить вниз до знака, и потом добавить к какой-либо //(Мне, наверное, пришлась бы по душе большая) вероятности это значение)). Можно и поделить значения //Между всеми вероятностями. Но не придется ли снова нормировать значения? forecastModel.ProbabilityModels.Add(ProbabilityProvider.GetProbilityCommandWinOrDrawOrLose( ResultCommandEnum.FirstCommandWin, currentDataModel, currentDataModels)); forecastModel.ProbabilityModels.Add(ProbabilityProvider.GetProbilityCommandWinOrDrawOrLose( ResultCommandEnum.SecondCommandWin, currentDataModel, currentDataModels)); forecastModel.ProbabilityModels.Add(ProbabilityProvider.GetProbilityCommandWinOrDrawOrLose( ResultCommandEnum.Draw, currentDataModel, currentDataModels)); forecastModel.ProbabilityModels.Add(ProbabilityProvider.GetProbabilityOneScoreFirstAndSecondCommand(currentDataModels)); forecastModel.ProbabilityModels.Add(ProbabilityProvider.GetProbabilityCommandScoreOne( ResultCommandEnum.FirstCommandScoreOne, currentDataModels)); forecastModel.ProbabilityModels.Add(ProbabilityProvider.GetProbabilityCommandScoreOne( ResultCommandEnum.SecondCommandScoreOne, currentDataModels)); forecastModel.ProbabilityModels.Add(ProbabilityProvider.GetProbabilityOneScoreFirstOrSecondCommand(currentDataModels)); #endregion #endregion GetCurrentProbabilityTable(forecastModel); GetCurrentSpecificProbability(forecastModel); }
public IActionResult InitIndustry() { var result = InitProvider.InitIndustry(); return(KylinOk(result)); }
public IActionResult InitApiModuleAuthorize() { int rows = InitProvider.InitApiMoudleAuthoriza(); return(Ok(string.Format("共初始化接口授权 {0} 项", rows))); }
public IActionResult InitLevelConfig() { var result = InitProvider.InitLevelConfig(); return(KylinOk(result)); }