public HomeController(ILogger <HomeController> logger, IRepository repo, ScheduleGenerator _scheduleGenerator) { _logger = logger; repository = repo; repo.Load(); scheduleGenerator = _scheduleGenerator; }
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); } } }
public void Main_DisplaysWikiOutput() { var cut = new ScheduleGenerator( "2020-01-27", Console.Out); var result = cut.Generate(); output.WriteLine(result); Assert.NotNull(result); }
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(); } }
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); } }
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); }
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); }
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); }
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); }
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); }
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); }
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)); }
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); } }
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 }
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(); }
/// <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; }