public void testSchedule1() { MachineJob job1 = new MachineJob(6, 3, "job1"); MachineJob job2 = new MachineJob(18, 6, "job2"); MachineJob job3 = new MachineJob(12, 6, "job3"); MachineJob job4 = new MachineJob(8, 5, "job4"); MachineJob job5 = new MachineJob(8, 4, "job5"); MachineJob job6 = new MachineJob(17, 8, "job6"); MachineJob job7 = new MachineJob(18, 10, "job7"); PrecedenceChain chain1 = new PrecedenceChain(); PrecedenceChain chain2 = new PrecedenceChain(); chain1.AddJob(job4); chain1.AddJob(job3); chain1.AddJob(job2); chain1.AddJob(job1); chain2.AddJob(job7); chain2.AddJob(job6); chain2.AddJob(job5); _precedenceChainCollection.AddChain(chain1); _precedenceChainCollection.AddChain(chain2); var firstChain = _precedenceChainCollection.GetNextScheduableJob(); var secondChain = _precedenceChainCollection.GetNextScheduableJob(); var ThirdChain = _precedenceChainCollection.GetNextScheduableJob(); var FourthChain = _precedenceChainCollection.GetNextScheduableJob(); var FithChain = _precedenceChainCollection.GetNextScheduableJob(); Assert.IsTrue(FithChain.FirstOrDefault().JobName == job4.JobName); Assert.IsTrue(FourthChain.FirstOrDefault().JobName == job7.JobName); Assert.IsTrue(ThirdChain.FirstOrDefault().JobName == job3.JobName); Assert.IsTrue(secondChain.FirstOrDefault().JobName == job5.JobName); Assert.IsTrue(firstChain.FirstOrDefault().JobName == job1.JobName); }
public void AddSingleMachineToTotalWeightedCompletionTime() { MachineJob job1 = new MachineJob(3, 2, DateTime.Now, DateTime.Now.AddDays(3)); _totalWeightedCompletionTime.Add(job1); Assert.IsTrue(_totalWeightedCompletionTime.Count == 1); }
public void AddJobToPrecedenceList() { MachineJob job1 = new MachineJob(3, 2, DateTime.Now, DateTime.Now.AddDays(3)); MachineJob job2 = new MachineJob(3, 2, DateTime.Now, DateTime.Now.AddDays(3)); job2.Add(job1); Assert.IsTrue(job2.Contains(job1)); }
public void ScheduleTotalWeightedCompletionTimeNoPresedence() { MachineJob job1 = new MachineJob(3, 2, DateTime.Now, DateTime.Now.AddDays(3)); MachineJob job2 = new MachineJob(5, 2, DateTime.Now, DateTime.Now.AddDays(3)); _totalWeightedCompletionTime.Add(job1); _totalWeightedCompletionTime.Add(job2); Assert.AreEqual(job2, _totalWeightedCompletionTime.ScheduleJobsWithoutPresidence().FirstOrDefault()); }
public void AddSingleJobToChain() { MachineJob job1 = new MachineJob(6, 3, "job1"); PrecedenceChain precedenceChain = new PrecedenceChain(); precedenceChain.AddJob(job1); Assert.IsTrue(precedenceChain.Pfactor == job1.WeightedProcessingTime); Assert.AreEqual(precedenceChain.PeekNextJob.FirstOrDefault(), job1); }
private void executeMachines() { var job = new MachineJob(); JobHandle handle = job.Schedule(); handle.Complete(); /* * foreach (Machine machine in machines.Values) { * machine.run(); * }*/ }
public void RemoveJobFromPrecedenceList() { MachineJob job1 = new MachineJob(3, 2, DateTime.Now, DateTime.Now.AddDays(3)); MachineJob job2 = new MachineJob(3, 2, DateTime.Now, DateTime.Now.AddDays(3)); job2.Add(job1); Assert.IsTrue(job2.Contains(job1)); job2.Remove(job1); Assert.IsFalse(job2.Contains(job1)); }
public void BCheckGetNextJobInChain() { MachineJob job1 = new MachineJob(6, 3, "job1"); MachineJob job2 = new MachineJob(18, 6, "job2"); PrecedenceChain precedenceChain = new PrecedenceChain(); precedenceChain.AddJob(job2); precedenceChain.AddJob(job1); var tmp = precedenceChain.PeekNextJob; Assert.IsTrue(precedenceChain.Pfactor == job1.WeightedProcessingTime); Assert.AreEqual(precedenceChain.PeekNextJob.FirstOrDefault(), job1); }
private List <MachineJob> buildJobList(int numberOfJobs) { List <MachineJob> result = new List <MachineJob>(); for (int index = 0; index < numberOfJobs; index++) { var rand = new Random(); var rand2 = new Random(); var randWeight = rand.Next(); var randProces = rand2.Next(); MachineJob randJob = new MachineJob(randWeight, randProces, DateTime.Now, DateTime.Now.AddDays(4)); result.Add(randJob); } return(result); }
public void ClearJobPrecedenceList() { MachineJob job1 = new MachineJob(3, 2, DateTime.Now, DateTime.Now.AddDays(3)); MachineJob job2 = new MachineJob(3, 2, DateTime.Now, DateTime.Now.AddDays(3)); MachineJob job3 = new MachineJob(3, 2, DateTime.Now, DateTime.Now.AddDays(3)); job2.Add(job1); job2.Add(job3); Assert.IsTrue(job2.Count == 2); job2.Clear(); Assert.IsTrue(job2.Count == 0); }
public void GetJobPrecedenceList() { MachineJob job1 = new MachineJob(3, 2, DateTime.Now, DateTime.Now.AddDays(3)); MachineJob job2 = new MachineJob(3, 2, DateTime.Now, DateTime.Now.AddDays(3)); MachineJob job3 = new MachineJob(3, 2, DateTime.Now, DateTime.Now.AddDays(3)); job2.Add(job1); job2.Add(job3); var tmp = job2.GetPrecidenceChain(); foreach (var item in tmp) { Assert.IsTrue((item == job1) || (job3 == item)); } }
public void TestAddJobToNextJobeList() { MachineJob job1 = new MachineJob(6, 3, "job1"); MachineJob job2 = new MachineJob(18, 6, "job2"); PrecedenceChain precedenceChain = new PrecedenceChain(); precedenceChain.AddJob(job2); precedenceChain.AddJob(job1); precedenceChain.CheckNextJob(); Assert.IsTrue(precedenceChain.Pfactor == 5); var tmp = precedenceChain.PeekNextJob; Assert.AreEqual(tmp[0], job1); Assert.AreEqual(tmp[1], job2); }
/// <summary> /// Insert machines from a csv into database if table is empty /// </summary> public void InsertFromCSV() { try { //Prevent multiple file import if (queryController.CheckIfTableEmpty <MachineJob>() == false) { Console.WriteLine(Resource1.FileWasAlreadyInserted); ShowOptions(); return; } List <MachineJob> machineJobs = new List <MachineJob>(); List <Machine> machines = new List <Machine>(); string plan = Resource1.plan; string[] splittedPlan = plan.Split(new string[] { Environment.NewLine, "\r\n", "\r", "\n" }, StringSplitOptions.None); int machineID = 1; foreach (string line in splittedPlan) { var values = line.Split(';'); if (String.IsNullOrEmpty(line) || values[0].Equals("machine")) { continue; } MachineJob newMachineJob = new MachineJob(); Machine newMachine = machines.Where(x => x.name.Equals(values[0])).FirstOrDefault(); if (newMachine == null) { newMachine = new Machine(); newMachine.id = machineID++; newMachine.name = values[0]; machines.Add(newMachine); } newMachineJob.Machine = newMachine; if (int.TryParse(values[1], out int result)) { newMachineJob.id = result; } if (DateTime.TryParseExact(values[2], "yyyy-MM-dd-HH-mm", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out DateTime startDate)) { newMachineJob.startdate = startDate; } if (DateTime.TryParseExact(values[3], "yyyy-MM-dd-HH-mm", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out DateTime endDate)) { newMachineJob.enddate = endDate; } machineJobs.Add(newMachineJob); } //Save jobs and machines to DB queryController.InsertObjectsIntoDatabase(machineJobs); Console.WriteLine($"{Resource1.MachineControllerInsertDone}"); ShowOptions(); } catch (Exception ex) { Console.WriteLine($"{Resource1.MachineControllerCsvImportFailed}:{Environment.NewLine + ex.ToString()}"); } }