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);
        }
Example #6
0
        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);
        }
Example #13
0
        /// <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()}");
            }
        }