public void Schedule_EqualDifference_12WeightedSum()
        {
            var jobs = new Job[]
                {
                    new Job(1, 2),
                    new Job(2, 3),
                };

            var scheduler = new DecreaseOrderScheduler();

            // act
            Assert.AreEqual(11, scheduler.CalcWeightedSum(jobs));
            Assert.AreEqual(11, scheduler.CalcWeightedSum(jobs.Reverse().ToArray()));
        }
        public void Schedule_DifferentLengthAdnWeigth_23WeightedSum()
        {
            var jobs = new Job[]
                {
                    new Job(1, 2),
                    new Job(3, 5),
                };
            var scheduler = new DecreaseOrderScheduler();

            // act
            var result = scheduler.CalcWeightedSum(jobs);

            Assert.AreEqual(23, result);
        }
 protected override decimal GetRank(Job job)
 {
     return job.Weight - job.Length;
 }
示例#4
0
        private static void ScheduleProblem(string fileName)
        {
            var input = File.ReadAllLines(fileName);
            int jobsCount;
            if (!int.TryParse(input[0], out jobsCount))
            {
                Console.WriteLine("can't read jobs number");
            }
            var jobs = new Job[jobsCount];
            int jobIndex = 0;
            foreach (var jobString in input.Skip(1))
            {
                var jobParts = jobString.Split(' ');
                jobs[jobIndex] = new Job(int.Parse(jobParts[0]), int.Parse(jobParts[1]));
                jobIndex++;
            }

            Console.WriteLine("schedules jobs in decreasing order of the difference (weight - length). Weigthed sum: {0}",
                              new DecreaseOrderScheduler().CalcWeightedSum(jobs));
            Console.WriteLine("schedules jobs in decreasing order of the ratio (weight/length). Weigthed sum: {0}",
                              new DecreaseRatioScheduler().CalcWeightedSum(jobs));
        }