Example #1
0
        private void simulateOneHour()
        {
            var sw = new Stopwatch();

            sw.Start();

            if (ProjectByCreationTimeInHours.TryGetValue(HoursElapsed, out var projects))
            {
                foreach (var project in projects)
                {
                    var problem = CreatePlanSelectionProblem(project);
                    var plans   = problem.SuggestPlans(out _);

                    project.Plans = plans;

                    if (plans.Length > 0)
                    {
                        scheduleWork(plans[0], HoursElapsed, project.Id);
                    }
                }
            }

            if (HoursElapsed > 0 && HoursElapsed % ExecutorsEconomicBehaviour.PaymentRateUpdatingIntervalHours == 0)
            {
                updatePaymentRates(HoursElapsed);
            }

            sw.Stop();

            _log.Debug($"Hour {HoursElapsed} modeled in {sw.ElapsedMilliseconds} ms");
        }
Example #2
0
        public void GenerateProjects(int hours)
        {
            var projectByCreationTime = generateProjects(
                hours,
                MarketBehaviour.ClockIntervalHours,
                MarketBehaviour.NewProjectProbability, ProjectFactory);

            if (ProjectByCreationTimeInHours == null)
            {
                ProjectByCreationTimeInHours = projectByCreationTime;
            }
            else
            {
                foreach (var pair in projectByCreationTime)
                {
                    if (ProjectByCreationTimeInHours.ContainsKey(pair.Key))
                    {
                        throw new InvalidOperationException("Different project generation calls overlap in time scale");
                    }

                    ProjectByCreationTimeInHours[pair.Key] = pair.Value;
                }
            }
        }