Beispiel #1
0
 public HomeController(ILogger <HomeController> logger, IRepository repo, ScheduleGenerator _scheduleGenerator)
 {
     _logger    = logger;
     repository = repo;
     repo.Load();
     scheduleGenerator = _scheduleGenerator;
 }
Beispiel #2
0
        private void AddPodsAndPricesToDB(ERecargaDbContext context)
        {
            Random gen   = new Random();
            int    podId = 1;

            for (int i = 1; i < 16; i++)
            {
                int podIdentifier = 1;
                for (int j = 1; j < 11; j++)
                {
                    context.Pods.AddOrUpdate(x => x.Id,
                                             new Pod()
                    {
                        Id = podId++, isActive = true, StationId = i, PodId = PodTypeEnum.Normal, Identifier = podIdentifier++
                    });
                }

                for (int j = 1; j < 11; j++)
                {
                    context.Pods.AddOrUpdate(x => x.Id,
                                             new Pod()
                    {
                        Id = podId++, isActive = true, StationId = i, PodId = PodTypeEnum.Fast, Identifier = podIdentifier++
                    });
                }

                foreach (var price in ScheduleGenerator.GeneratePrices(gen.Next(5, 15), gen.Next(10, 25)))
                {
                    price.StationId = i;
                    context.Prices.Add(price);
                }
            }
        }
Beispiel #3
0
        public void Main_DisplaysWikiOutput()
        {
            var cut = new ScheduleGenerator(
                "2020-01-27",
                Console.Out);
            var result = cut.Generate();

            output.WriteLine(result);
            Assert.NotNull(result);
        }
Beispiel #4
0
    void OnMouseUp()
    {
        if (newGame) {

            // clear the old save data
            if (!Directory.Exists(".\\Assets\\Resources") && File.Exists(".\\Assets\\Resources\\save_data.bin")) {
                File.Delete(".\\Assets\\Resources\\save_data.bin");
            }

            SaveDataScript.save_data = new SaveDataScript.SaveData();

            world_generator = gameObject.AddComponent<WorldGenerator>();
            schedule_generator = gameObject.AddComponent<ScheduleGenerator>();

            var map_width = 50;
            var map_height = 50;

            world_generator.generate_world("red_overworld", map_width, map_height);
            world_generator.generate_world("blue_overworld", map_width, map_height);
            world_generator.generate_world("green_overworld", map_width, map_height);
            world_generator.generate_world("purple_overworld", map_width, map_height);
            world_generator.generate_world("yellow_overworld", map_width, map_height);

            schedule_generator.generate_schedule();

            Application.LoadLevel("StartingPortalRoom");
        }
        if (loadGame) {
            var loaded = SaveDataScript.load();
            if (loaded) {
                Application.LoadLevel("StartingPortalRoom");
            }
        }
        if(addPlayer) {
            GameObject.FindGameObjectWithTag("Player").GetComponent<PauseMenuScript>().hostNetwork();
        }
        if (enterAddress) {
            Application.LoadLevel("ServerConnect");
        }
        if(connect) {
            man.networkAddress = GameObject.FindGameObjectWithTag("Text").GetComponent<Text>().text;
            Debug.Log("Adding player 2");
            Application.LoadLevel("NSceneGenTest");

        }
        if (back) {
            Destroy(GameObject.FindGameObjectWithTag("Player"));
            Application.LoadLevel("MainMenu");
        }
        if (exit) {
            Application.Quit();
        }
    }
Beispiel #5
0
        static void Main(string[] args)
        {
            var parser = new CSVItemParser.Parser();

            parser.Parse();
            var generator = new ScheduleGenerator();
            var schedule  = generator.Generate(parser.Payees);

            foreach (var str in schedule)
            {
                Console.WriteLine(str);
            }
        }
Beispiel #6
0
        public void AddSalesFulfillmentTestSingleSale()
        {
            ProductMasterItem master = new ProductMasterItem(1, "Code1", "", 48, 92, .5, "OM", 40, 100, "", true, "", "", 0, 0, 0, 0);

            StaticInventoryTracker.ProductMasterList.Clear();
            StaticInventoryTracker.ProductMasterList.Add(master);

            var sale = new SalesItem(master, "1001", 100, 0, "D", DateTime.Today);

            StaticInventoryTracker.SalesItems.Add(sale);

            ScheduleGenerator.AddSalesFulfillment(master, 60);

            Assert.AreEqual(60, sale.Fulfilled);
        }
Beispiel #7
0
        public void ScheduleGenerator_FirstWeekDayRun_ShouldGenerateTwoWeeksFromCurrent()
        {
            SetupRandom(10);
            var engineers      = GetEngineers();
            var generator      = new ScheduleGenerator();
            var lastDayEntries = new List <ScheduleEntry>();
            var result         = generator.GenerateSchedule(new ScheduleGenerationRequest
            {
                Date              = new DateTime(2018, 1, 4),
                Engineers         = engineers,
                LastDueDayEntries = lastDayEntries
            });

            AssertScheduleRules(result, lastDayEntries);
            Assert.Equal(Constants.ShiftsPerDay * 10, result.Count);
        }
Beispiel #8
0
        public void ScheduleGenerator_WeekDayRunHaveNextWeekEntries_ShouldGenerateEmpty()
        {
            SetupRandom();

            var engineers      = GetEngineers();
            var generator      = new ScheduleGenerator();
            var lastDayEntries = GetDayEntries(engineers.Take(2).ToList(), new DateTime(2018, 1, 8));
            var result         = generator.GenerateSchedule(new ScheduleGenerationRequest
            {
                Date              = new DateTime(2018, 1, 4),
                Engineers         = engineers,
                LastDueDayEntries = lastDayEntries
            });

            AssertScheduleRules(result, lastDayEntries);
            Assert.Empty(result);
        }
Beispiel #9
0
        public void AddSalesFulfillmentTestMultipleSale()
        {
            ProductMasterItem master = new ProductMasterItem(1, "Code1", "", 48, 92, .5, "OM", 40, 100, "", true, "", "", 0, 0, 0, 0);

            StaticInventoryTracker.ProductMasterList.Clear();
            StaticInventoryTracker.ProductMasterList.Add(master);

            var sale  = new SalesItem(master, "1001", 100, 0, "D", DateTime.Today);
            var sale2 = new SalesItem(master, "1002", 300, 0, "D", DateTime.Today.AddDays(1)); // should fill last

            StaticInventoryTracker.SalesItems.Add(sale);
            StaticInventoryTracker.SalesItems.Add(sale2);

            ScheduleGenerator.AddSalesFulfillment(master, 260);

            Assert.AreEqual(100, sale.Fulfilled);
            Assert.AreEqual(160, sale2.Fulfilled);
        }
Beispiel #10
0
        public void ScheduleGenerator_WeekendDayRun_ShouldGenerateNextWeek()
        {
            SetupRandom();
            var fixture        = new Fixture();
            var engineers      = GetEngineers();
            var generator      = new ScheduleGenerator();
            var lastDayEntries = new List <ScheduleEntry>();

            var result = generator.GenerateSchedule(new ScheduleGenerationRequest
            {
                Date              = new DateTime(2018, 1, 6),
                Engineers         = engineers,
                LastDueDayEntries = lastDayEntries
            });

            AssertScheduleRules(result, lastDayEntries);
            Assert.Equal(Constants.ShiftsPerDay * 5, result.Count);
        }
        public void GetOptimalSchedule(string graphData, string timeInformation, string expected)
        {
            var reader = new DependenciesReader();
            var graph  = reader.Read(graphData.Split(Separator, StringSplitOptions.RemoveEmptyEntries));
            var additionalInformationReader = new AdditionalInformationReader();

            additionalInformationReader.FillData(timeInformation.Split(Separator, StringSplitOptions.RemoveEmptyEntries), graph);

            var scheduleGenerator = new ScheduleGenerator(graph);


            var actual = scheduleGenerator.GetOptimalSchedule().ToArray();

            var formattedActual = string.Join(" ", actual.Select(p => p.Id.ToString(CultureInfo.InvariantCulture)));

            _testOutput.WriteLine(formattedActual);

            Assert.Equal(expected, formattedActual);
        }
Beispiel #12
0
        public void ScheduleGenerator_WeekDayRun_ShouldGenerateNextWeek()
        {
            SetupRandom();
            var fixture        = new Fixture();
            var engineers      = GetEngineers();
            var generator      = new ScheduleGenerator();
            var lastDayEntries = GetDayEntries(engineers.Take(2).ToList(), new DateTime(2018, 1, 5));

            var result = generator.GenerateSchedule(new ScheduleGenerationRequest
            {
                Date              = new DateTime(2018, 1, 4),
                Engineers         = engineers,
                LastDueDayEntries = lastDayEntries
            });

            AssertScheduleRules(result, lastDayEntries);
            Assert.Equal(Constants.ShiftsPerDay * 5, result.Count);
            Assert.NotEqual(engineers[0].Id, result[0].EngineerId);
            Assert.NotEqual(engineers[1].Id, result[0].EngineerId);
        }
Beispiel #13
0
        public ActionResult Create(StationViewModel viewModel)
        {
            var user = db.Employees.Find(User.Identity.GetUserId());

            viewModel._Station.CompanyId = user.CompanyId;

            if (ModelState.IsValid)
            {
                db.Stations.Add(viewModel._Station);

                foreach (var price in ScheduleGenerator.GeneratePrices(Double.Parse(viewModel.NormalCost), Double.Parse(viewModel.FastCost)))
                {
                    price.StationId = viewModel._Station.Id;
                    db.Prices.Add(price);
                }

                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(viewModel));
        }
Beispiel #14
0
        public void ScheduleGenerator_WeekendDayRun_ShouldCallRandomForAllCounts()
        {
            var randomMock     = SetupRandom();
            var fixture        = new Fixture();
            var engineers      = GetEngineers();
            var generator      = new ScheduleGenerator();
            var lastDayEntries = new List <ScheduleEntry>();

            var result = generator.GenerateSchedule(new ScheduleGenerationRequest
            {
                Date              = new DateTime(2018, 1, 6),
                Engineers         = engineers,
                LastDueDayEntries = lastDayEntries
            });

            AssertScheduleRules(result, lastDayEntries);
            Assert.Equal(Constants.ShiftsPerDay * 5, result.Count);
            for (int i = 1; i <= engineers.Count; i++)
            {
                randomMock.Verify(r => r.Next(It.Is <int>(p => p == i)), Times.Once);
            }
        }
Beispiel #15
0
        public void ScheduleDivisionTeams()
        {
            var scheduledSeries = new SeriesData();
            var startDivision   = BaseballScheduleHelper.GetRandomDivision();
            var teams           = BaseballScheduleHelper.GetLeagueTeamsByDivision(League.Circuit.NL, startDivision);
            var team            = BaseballScheduleHelper.GetRandomTeamFromList(teams);
            var opponents       = BaseballScheduleHelper.GetDivisionOpponents(team, teams);

            var scheduledGames = ScheduleGenerator.ScheduleDivisionSeries(scheduledSeries, team, teams, opponents);
            var awayGames      = from t in scheduledGames.GamesInSchedule
                                 where t.AwayTeam == team
                                 group t by t.AwayTeam
                                 into a
                                 select a.Count();

            var homeGames = from t in scheduledGames.GamesInSchedule
                            where t.HomeTeam == team
                            group t by t.HomeTeam
                            into h
                            select h.Count();

            var opponentGamesAway = from t in scheduledGames.GamesInSchedule
                                    where t.AwayTeam == team
                                    group t by t.HomeTeam
                                    into a
                                    select a.Count();

            var opponentGamesHome = from t in scheduledGames.GamesInSchedule
                                    where t.HomeTeam == team
                                    group t by t.AwayTeam
                                    into a
                                    select a.Count();

            //TODO: Assert scheduled team has played each opponent 19 times
            Assert.IsTrue(awayGames.First() == 38 && homeGames.First() == 38);     //Scheduled team should have 38 division home games and 38 division away games
            Assert.IsTrue(scheduledGames.GamesInSchedule.Count == 76);             //Total division games scheduled for team should be 76
        }
Beispiel #16
0
        private void tsbCreateShedule_Click(object sender, EventArgs e)
        {
            if (!CheckInputData)
            {
                return;
            }

            CreateSheduleForm frmShedule = new CreateSheduleForm(false, new DateTime(DateTime.Now.Year, 9, 1), new DateTime(DateTime.Now.Year, 12, 31));

            if (frmShedule.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }

            ScheduleGenerator reactor = new ScheduleGenerator(EducationAdapter, Rooms,
                                                              GetSetting(getWeeksInSem(frmShedule.FirstDaySem, frmShedule.LastDaySem)),
                                                              frmShedule.FirstDaySem, frmShedule.LastDaySem, Schedule == null ? new Employments() : Schedule.Employments);

            Schedule = reactor.Generate();

            UpdateTableShedule();

            UpdateDistributeList(reactor.Results);

            WatchTriggerStateChange(false);

            if (dgvSchedule.ColumnCount <= 0)
            {
                cmbView.Enabled = false;
            }
            else
            {
                cmbView.Enabled = true;
            }

            curSheduleType = scheduleType.leesons;
        }
        public void Generate(string graphData, string expectedData)
        {
            var reader = new DependenciesReader();
            var graph  = reader.Read(graphData.Split(Separator, StringSplitOptions.RemoveEmptyEntries));

            var scheduleGenerator = new ScheduleGenerator(graph);
            var actual            = scheduleGenerator.Generate().ToArray();

            var expected = expectedData.Split(Separator, StringSplitOptions.RemoveEmptyEntries).OrderBy(p => p).ToArray();

            var formattedActual = new List <string>();

            foreach (var schedule in actual)
            {
                var formattedString = string.Join(" ", schedule.Select(p => p.Id.ToString(CultureInfo.InvariantCulture)));
                _testOutput.WriteLine(formattedString);
                formattedActual.Add(formattedString);
            }

            formattedActual.Sort();

            Assert.Equal(expected, formattedActual);
            Assert.Equal(expected.Length, actual.Length);
        }
    private static void Initialize()
    {
        ScheduleGenerator scheduleGenerator = (ScheduleGenerator)EditorWindow.GetWindow(typeof(ScheduleGenerator));

        scheduleGenerator.Show();
    }
Beispiel #19
0
        /// <summary>
        /// Main method to begin Scheduling courses. This method will wrap course objects in
        /// Course Container objects used in the scheduling algorithm, then pass the course
        /// objects and semesters list to the scheduling algorithm. Once scheduled, debug info
        /// will be printed and, if selected, the optimization algorithm will be ran. Once
        /// finished, a viewer form will be initiated, constructed, and opened for viewing.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void genSchedulesButton(object sender, EventArgs e)
        {
            // generate course containers for courses
            List <CourseContainer> processed = ScheduleGenerator.genCourseContainers(courseList).ToList();

            Console.WriteLine("\nBegining Scheduleing test...");



            //generate schedule and add course containers to semesters.
            //Add options to customCoursePriority comparer
            bool result = ScheduleGenerator.scheduleSemesters(processed, semesterList, preScheduleDict,
                                                              new CustumCoursePriority(
                                                                  delayGradCoursesCB.Checked,
                                                                  lowerLevelCB.Checked,
                                                                  labPairGroupingCB.Checked,
                                                                  prioritisedCoursePrefixes
                                                                  ), previousCompletedCourses
                                                              );



            //debug
            int totalScheduled = 0;

            Console.WriteLine("Semester List:");
            foreach (Semester sem in semesterList)
            {
                String output = (sem.SemesterReference + ':' + sem.TotalCredits + ':');
                foreach (CourseContainer course in sem.Courses)
                {
                    output += course.Course.courseReference + ',';
                }
                Console.WriteLine(output);

                totalScheduled += sem.TotalCredits;
            }
            Console.WriteLine("Course count: " + courseList.Count);
            Console.WriteLine("Total Credits Scheduled: " + totalScheduled);

            if (!result)
            {
                return;
            }


            //testing schedule optimizer
            if (overloadableCB.Checked)
            {
                ScheduleOptimizer.checkOverflow(semesterList, preScheduleDict, previousCompletedCourses);
            }


            //create new form
            ScheduleResultView schedule = new ScheduleResultView();

            // add previously completed courses to first result, if any
            if (previousCompletedCourses.Count != 0)
            {
                schedule.scheduleViewer.Nodes.Add("Previously Completed Courses");
                foreach (Course course in previousCompletedCourses)
                {
                    schedule.scheduleViewer.Nodes[0].Nodes.Add(course.courseReference);
                }
            }


            foreach (Semester semester in semesterList)
            {
                //check if semester is empty
                if (semester.Courses.Count == 0)
                {
                    continue;
                }

                //add the semester header
                schedule.scheduleViewer.Nodes.Add(semester.SemesterReference);

                //add each course to Subheaders
                foreach (CourseContainer course in semester.Courses)
                {
                    schedule.scheduleViewer.Nodes[schedule.scheduleViewer.Nodes.Count - 1]
                    .Nodes.Add(course.Course.courseReference);
                }
            }



            //display view
            this.SuspendLayout();
            schedule.ShowDialog();

            //clear results when finished viewing
            foreach (Semester semester in semesterList)
            {
                semester.removeAllCourses();
            }
            processed = null;
        }