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; }
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)); }