Пример #1
0
        private Model.Statics MapConfig(SimulationConfig config)
        {
            Model.Statics statics = new Model.Statics();
            statics.BatchingRule  = (Model.Statics.BatchingRules)config.Batching;
            statics.NDiningTables = config.LayoutTable;
            statics.ExpectedDiningMinutesbeforePeak = config.DiningTimeBeforePeak;
            statics.ExpectedDiningMinutesduringPeak = config.DiningTimeDuringPeak;
            statics.ExpectedDiningMinutesafterPeak  = config.DiningTimeAfterPeak;
            statics.AdsOption   = (Model.Statics.AdsOptions)config.Advertisement;
            statics.AdsLevel    = config.AdsLevel;
            statics.OpeningHour = config.OpeningHour;

            return(statics);
        }
Пример #2
0
        public async Task <IActionResult> Post([FromBody] SimulationConfig config)
        {
            await _hubContext.Clients.All.SendAsync("setClientMessage", "Run simulation");

            Model.Statics statics = MapConfig(config);

            List <Result> result = Enumerable.Range(0, 20).Select(seed =>
            {
                var sim = new Model(statics, seed);
                while (sim.Run(1))
                {
                    ;
                }
                return(sim.Result);
            }).ToList();

            return(Ok(result));
        }
Пример #3
0
        public async Task <IActionResult> RunSimulation(int id, [FromBody] RunSimulationModel simulation)
        {
            //_queue.QueueAsyncTask(async () =>
            //{
            //    await Task.Run(async () =>
            //     {
            //         await _hubContext.Clients.Client(simulation.ConnectionId).SendAsync("setSimulationResults", "testing");
            //         Model.Statics scenario = MapConfig(simulation.Config);
            //         Model model = new Model(scenario, seed: id);
            //         model.WarmUp(TimeSpan.FromHours(scenario.OpeningHour));
            //         await  RunSimulationAsync(model, simulation.ConnectionId);
            //     });
            //});
            //await _hubContext.Clients.Client(simulation.ConnectionId).SendAsync("setSimulationResults", "testing");
            Model.Statics scenario = MapConfig(simulation.Config);
            Model         model    = new Model(scenario, seed: id);

            model.WarmUp(TimeSpan.FromHours(scenario.OpeningHour));
            Console.WriteLine("running sim for 10 seconds");
            //List<ResultModel> results = new List<ResultModel>();
            List <Result> results = new List <Result>();

            do
            {
                model.WriteToConsole();
                //ResultModel result = new ResultModel();
                //result.BarAvgCust = model.Result.BarAvgCust;
                //result.BarAvgDrinksPerCust = model.Result.BarAvgDrinksPerCust;
                //result.BarDrinksSold = model.Result.BarDrinksSold;
                results.Add(model.Result);
                await Task.Delay(500);;
            } while (model.Run(TimeSpan.FromHours(1)));
            //string messageString = JsonSerializer.Serialize(results);
            //Console.WriteLine(messageString);
            //await _hubContext.Clients.Client(simulation.ConnectionId).SendAsync("setSimulationResults", messageString);
            //Console.WriteLine("finished running sim");
            return(Ok(results));
        }