Changeset 11073
- Timestamp:
- 07/02/14 15:08:32 (10 years ago)
- Location:
- stable
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
/trunk/sources merged: 10213,10433,10476,10494
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Encodings.ScheduleEncoding.Views/3.3/JobView.Designer.cs
r9456 r11073 80 80 this.dueDateLabel.Name = "dueDateLabel"; 81 81 this.dueDateLabel.Size = new System.Drawing.Size(56, 13); 82 this.dueDateLabel.TabIndex = 0;82 this.dueDateLabel.TabIndex = 2; 83 83 this.dueDateLabel.Text = "Due Date:"; 84 84 // … … 90 90 this.dueDateTextBox.Name = "dueDateTextBox"; 91 91 this.dueDateTextBox.Size = new System.Drawing.Size(451, 20); 92 this.dueDateTextBox.TabIndex = 1;92 this.dueDateTextBox.TabIndex = 3; 93 93 this.dueDateTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.dueDateTextBox_Validating); 94 94 // … … 101 101 this.tasksGroupBox.Name = "tasksGroupBox"; 102 102 this.tasksGroupBox.Size = new System.Drawing.Size(510, 214); 103 this.tasksGroupBox.TabIndex = 2;103 this.tasksGroupBox.TabIndex = 4; 104 104 this.tasksGroupBox.TabStop = false; 105 105 this.tasksGroupBox.Text = "Tasks"; -
stable/HeuristicLab.Encodings.ScheduleEncoding.Views/3.3/TaskView.Designer.cs
r9456 r11073 83 83 this.resourceNrLabel.Name = "resourceNrLabel"; 84 84 this.resourceNrLabel.Size = new System.Drawing.Size(70, 13); 85 this.resourceNrLabel.TabIndex = 0;85 this.resourceNrLabel.TabIndex = 2; 86 86 this.resourceNrLabel.Text = "Resource Nr:"; 87 87 // … … 93 93 this.resourceNrTextBox.Name = "resourceNrTextBox"; 94 94 this.resourceNrTextBox.Size = new System.Drawing.Size(437, 20); 95 this.resourceNrTextBox.TabIndex = 1;95 this.resourceNrTextBox.TabIndex = 3; 96 96 this.resourceNrTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.resourceNrTextBox_Validating); 97 97 // … … 106 106 this.jobNrLabel.Name = "jobNrLabel"; 107 107 this.jobNrLabel.Size = new System.Drawing.Size(41, 13); 108 this.jobNrLabel.TabIndex = 0;108 this.jobNrLabel.TabIndex = 4; 109 109 this.jobNrLabel.Text = "Job Nr:"; 110 110 // … … 116 116 this.jobNrTextBox.Name = "jobNrTextBox"; 117 117 this.jobNrTextBox.Size = new System.Drawing.Size(437, 20); 118 this.jobNrTextBox.TabIndex = 1;118 this.jobNrTextBox.TabIndex = 5; 119 119 this.jobNrTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.jobNrTextBox_Validating); 120 120 // … … 125 125 this.durationLabel.Name = "durationLabel"; 126 126 this.durationLabel.Size = new System.Drawing.Size(50, 13); 127 this.durationLabel.TabIndex = 0;127 this.durationLabel.TabIndex = 6; 128 128 this.durationLabel.Text = "Duration:"; 129 129 // … … 135 135 this.durationTextBox.Name = "durationTextBox"; 136 136 this.durationTextBox.Size = new System.Drawing.Size(437, 20); 137 this.durationTextBox.TabIndex = 1;137 this.durationTextBox.TabIndex = 7; 138 138 this.durationTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.durationTextBox_Validating); 139 139 // -
stable/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMEncoding.cs
r9456 r11073 20 20 #endregion 21 21 22 using System; 22 23 using System.Text; 23 24 using HeuristicLab.Common; … … 53 54 54 55 foreach (Permutation p in JobSequenceMatrix) { 55 sb.Append (p.ToString() + " \n");56 sb.AppendLine(p.ToString()); 56 57 } 57 58 … … 59 60 return sb.ToString(); 60 61 } 61 62 63 public override bool Equals(object obj) {64 if (obj.GetType() == typeof(JSMEncoding))65 return AreEqual(this, obj as JSMEncoding);66 67 return false;68 }69 public override int GetHashCode() {70 if (JobSequenceMatrix.Count == 1)71 return JobSequenceMatrix[0].GetHashCode();72 if (JobSequenceMatrix.Count == 2)73 return JobSequenceMatrix[0].GetHashCode() ^ JobSequenceMatrix[1].GetHashCode();74 return 0;75 }76 private static bool AreEqual(JSMEncoding jSMEncoding1, JSMEncoding jSMEncoding2) {77 if (jSMEncoding1.JobSequenceMatrix.Count != jSMEncoding2.JobSequenceMatrix.Count)78 return false;79 for (int i = 0; i < jSMEncoding1.JobSequenceMatrix.Count; i++) {80 if (!AreEqual(jSMEncoding1.JobSequenceMatrix[i], jSMEncoding2.JobSequenceMatrix[i]))81 return false;82 }83 return true;84 }85 86 private static bool AreEqual(Permutation p1, Permutation p2) {87 if (p1.Length != p2.Length)88 return false;89 for (int i = 0; i < p1.Length; i++) {90 if (p1[i] != p2[i])91 return false;92 }93 return true;94 }95 62 } 96 63 } -
stable/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWREncoding.cs
r9456 r11073 75 75 return sb.ToString(); 76 76 } 77 78 public override bool Equals(object obj) {79 if (obj.GetType() == typeof(PWREncoding))80 return AreEqual(this, obj as PWREncoding);81 else82 return base.Equals(obj);83 }84 85 public override int GetHashCode() {86 if (PermutationWithRepetition.Length == 1)87 return PermutationWithRepetition[0].GetHashCode();88 if (PermutationWithRepetition.Length == 2)89 return PermutationWithRepetition[0].GetHashCode() ^ PermutationWithRepetition[1].GetHashCode();90 return 0;91 }92 93 private bool AreEqual(PWREncoding pWREncoding1, PWREncoding pWREncoding2) {94 if (pWREncoding1.PermutationWithRepetition.Length != pWREncoding2.PermutationWithRepetition.Length)95 return false;96 for (int i = 0; i < pWREncoding1.PermutationWithRepetition.Length; i++) {97 if (pWREncoding1.PermutationWithRepetition[i] != pWREncoding2.PermutationWithRepetition[i])98 return false;99 }100 return true;101 }102 77 } 103 78 } -
stable/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVEncoding.cs
r9456 r11073 74 74 75 75 foreach (int i in PriorityRulesVector) { 76 sb.Append(i .ToString()+ " ");76 sb.Append(i + " "); 77 77 } 78 78 -
stable/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Job.cs
r9456 r11073 20 20 #endregion 21 21 22 using System; 22 23 using System.ComponentModel; 23 24 using System.Text; 25 using HeuristicLab.Collections; 24 26 using HeuristicLab.Common; 25 27 using HeuristicLab.Core; … … 38 40 bool changed = dueDate != value; 39 41 dueDate = value; 40 if (changed) OnPropertyChanged("DueDate"); 42 if (changed) { 43 OnPropertyChanged("DueDate"); 44 OnToStringChanged(); 45 } 41 46 } 42 47 } … … 49 54 bool changed = index != value; 50 55 index = value; 51 if (changed) OnPropertyChanged("Index"); 56 if (changed) { 57 OnPropertyChanged("Index"); 58 OnToStringChanged(); 59 } 52 60 } 53 61 } … … 68 76 protected Job(Job original, Cloner cloner) 69 77 : base(original, cloner) { 70 this.DueDate = original.DueDate; 71 this.Index = original.Index; 72 this.Tasks = cloner.Clone(original.Tasks); 78 this.dueDate = original.DueDate; 79 this.index = original.Index; 80 this.tasks = cloner.Clone(original.Tasks); 81 RegisterEventHandlers(); 73 82 } 74 83 public Job() : this(-1, double.MaxValue) { } 75 84 public Job(int index, double dueDate) 76 85 : base() { 77 DueDate = dueDate; 78 Index = index; 79 Tasks = new ItemList<Task>(); 86 this.dueDate = dueDate; 87 this.index = index; 88 this.tasks = new ItemList<Task>(); 89 RegisterEventHandlers(); 80 90 } 81 91 … … 84 94 } 85 95 96 [StorableHook(HookType.AfterDeserialization)] 97 private void AfterDeserialization() { 98 RegisterEventHandlers(); 99 } 100 101 private void RegisterEventHandlers() { 102 Tasks.ItemsAdded += TasksOnItemsChanged; 103 Tasks.ItemsRemoved += TasksOnItemsChanged; 104 Tasks.ItemsReplaced += TasksOnItemsChanged; 105 Tasks.CollectionReset += TasksOnItemsChanged; 106 foreach (var task in Tasks) { 107 task.PropertyChanged += TaskOnPropertyChanged; 108 task.ToStringChanged += TaskOnToStringChanged; 109 } 110 } 111 112 private void TasksOnItemsChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<Task>> e) { 113 foreach (var task in e.OldItems) { 114 task.Value.PropertyChanged -= TaskOnPropertyChanged; 115 task.Value.ToStringChanged -= TaskOnToStringChanged; 116 } 117 foreach (var task in e.Items) { 118 task.Value.PropertyChanged += TaskOnPropertyChanged; 119 task.Value.ToStringChanged += TaskOnToStringChanged; 120 } 121 OnTasksChanged(); 122 OnToStringChanged(); 123 } 124 125 private void TaskOnPropertyChanged(object sender, EventArgs e) { 126 OnTasksChanged(); 127 } 128 129 private void TaskOnToStringChanged(object sender, EventArgs e) { 130 OnToStringChanged(); 131 } 132 86 133 public override string ToString() { 87 134 var sb = new StringBuilder(); 88 135 sb.Append("Job#" + Index + " [ "); 89 136 foreach (Task t in Tasks) { 90 sb.Append(t .ToString()+ " ");137 sb.Append(t + " "); 91 138 } 92 139 sb.Append("{" + DueDate + "} "); … … 100 147 } 101 148 149 public event EventHandler TasksChanged; 150 protected virtual void OnTasksChanged() { 151 var handler = TasksChanged; 152 if (handler != null) handler(this, EventArgs.Empty); 153 } 154 102 155 public event PropertyChangedEventHandler PropertyChanged; 103 156 protected virtual void OnPropertyChanged(string propertyName) { -
stable/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Resource.cs
r9456 r11073 73 73 sb.Append("Resource#" + Index + " [ "); 74 74 foreach (ScheduledTask t in Tasks) { 75 sb.Append(t .ToString()+ " ");75 sb.Append(t+ " "); 76 76 } 77 77 sb.Append("]"); 78 78 return sb.ToString(); 79 79 } 80 81 82 public override bool Equals(object obj) {83 if (obj.GetType() == typeof(Resource))84 return AreEqual(this, obj as Resource);85 else86 return false;87 }88 89 public override int GetHashCode() {90 if (Tasks.Count == 1)91 return Tasks[0].GetHashCode();92 if (Tasks.Count == 2)93 return Tasks[0].GetHashCode() ^ Tasks[1].GetHashCode();94 return 0;95 }96 97 private static bool AreEqual(Resource res1, Resource res2) {98 if (res1.Tasks.Count != res2.Tasks.Count)99 return false;100 for (int i = 0; i < res1.Tasks.Count; i++) {101 if (!res1.Tasks[i].Equals(res2.Tasks[i]))102 return false;103 }104 105 return true;106 }107 80 } 108 81 } -
stable/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Schedule.cs
r9456 r11073 149 149 sb.Append("[ "); 150 150 foreach (Resource r in Resources) { 151 sb.Append (r.ToString() + " \n");151 sb.AppendLine(r.ToString()); 152 152 } 153 153 sb.Append("]"); … … 164 164 return quality; 165 165 } 166 167 public override bool Equals(object obj) {168 if (obj.GetType() == typeof(Schedule))169 return AreEqual(this, obj as Schedule);170 else171 return false;172 }173 public override int GetHashCode() {174 if (Resources.Count == 1)175 return Resources[0].GetHashCode();176 if (Resources.Count == 2)177 return Resources[0].GetHashCode() ^ Resources[1].GetHashCode();178 return 0;179 }180 181 private static bool AreEqual(Schedule schedule1, Schedule schedule2) {182 if (schedule1.Resources.Count != schedule2.Resources.Count)183 return false;184 for (int i = 0; i < schedule1.Resources.Count; i++) {185 if (!schedule1.Resources[i].Equals(schedule2.Resources[i]))186 return false;187 }188 189 return true;190 }191 192 166 } 193 167 } -
stable/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/ScheduledTask.cs
r9456 r11073 75 75 return sb.ToString(); 76 76 } 77 78 public override bool Equals(object obj) {79 if (obj.GetType() == typeof(ScheduledTask))80 return AreEqual(this, obj as ScheduledTask);81 else82 return false;83 }84 85 public override int GetHashCode() {86 return TaskNr ^ JobNr;87 }88 89 public static bool AreEqual(ScheduledTask task1, ScheduledTask task2) {90 return (91 task1.TaskNr == task2.TaskNr &&92 task1.Duration == task2.Duration &&93 task1.JobNr == task2.JobNr &&94 task1.ResourceNr == task2.ResourceNr &&95 task1.StartTime == task2.StartTime &&96 task1.EndTime == task2.EndTime);97 }98 77 } 99 78 } -
stable/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Task.cs
r9456 r11073 38 38 bool changed = taskNr != value; 39 39 taskNr = value; 40 if (changed) OnPropertyChanged("TaskNr"); 40 if (changed) { 41 OnPropertyChanged("TaskNr"); 42 OnToStringChanged(); 43 } 41 44 } 42 45 } … … 48 51 bool changed = resourceNr != value; 49 52 resourceNr = value; 50 if (changed) OnPropertyChanged("ResourceNr"); 53 if (changed) { 54 OnPropertyChanged("ResourceNr"); 55 OnToStringChanged(); 56 } 51 57 } 52 58 } … … 89 95 protected Task(Task original, Cloner cloner) 90 96 : base(original, cloner) { 91 this. ResourceNr = original.ResourceNr;92 this. JobNr = original.JobNr;93 this. Duration = original.Duration;94 this. TaskNr = original.TaskNr;95 this. IsScheduled = original.IsScheduled;97 this.resourceNr = original.ResourceNr; 98 this.jobNr = original.JobNr; 99 this.duration = original.Duration; 100 this.taskNr = original.TaskNr; 101 this.isScheduled = original.IsScheduled; 96 102 } 97 103 public Task() : this(-1, -1, -1, 0) { } 98 104 public Task(int taskNr, int resNr, int jobNr, double duration) 99 105 : base() { 100 Duration = duration;101 ResourceNr = resNr;102 JobNr = jobNr;103 TaskNr = taskNr;104 IsScheduled = false;106 this.duration = duration; 107 this.resourceNr = resNr; 108 this.jobNr = jobNr; 109 this.taskNr = taskNr; 110 this.isScheduled = false; 105 111 } 106 112 … … 115 121 } 116 122 117 public override bool Equals(object obj) {118 if (obj.GetType() == typeof(Task))119 return AreEqual(this, obj as Task);120 else121 return false;122 }123 124 public override int GetHashCode() {125 return TaskNr ^ JobNr;126 }127 128 public static bool AreEqual(Task task1, Task task2) {129 return (task1.Duration == task2.Duration &&130 task1.IsScheduled == task2.IsScheduled &&131 task1.JobNr == task2.JobNr &&132 task1.ResourceNr == task2.ResourceNr &&133 task1.TaskNr == task2.TaskNr);134 }135 136 123 public event PropertyChangedEventHandler PropertyChanged; 137 124 protected virtual void OnPropertyChanged(string propertyName) { -
stable/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.cs
r9456 r11073 20 20 #endregion 21 21 22 using System; 22 23 using System.Windows.Forms; 24 using HeuristicLab.Collections; 25 using HeuristicLab.Encodings.ScheduleEncoding; 23 26 using HeuristicLab.MainForm; 24 27 using HeuristicLab.Optimization.Views; … … 43 46 protected override void OnContentChanged() { 44 47 base.OnContentChanged(); 45 if (Content == null) { 46 ganttChart.Reset(); 47 } else { 48 FillGanttChart(Content); 48 FillGanttChart(); 49 } 50 51 protected override void DeregisterContentEvents() { 52 Content.JobDataParameter.ValueChanged -= JobDataParameterOnValueChanged; 53 Content.JobData.ItemsAdded -= JobsOnChanged; 54 Content.JobData.ItemsRemoved -= JobsOnChanged; 55 Content.JobData.ItemsReplaced -= JobsOnChanged; 56 Content.JobData.CollectionReset -= JobsOnChanged; 57 foreach (var job in Content.JobData) { 58 job.TasksChanged -= JobOnTasksChanged; 59 } 60 base.DeregisterContentEvents(); 61 } 62 protected override void RegisterContentEvents() { 63 base.RegisterContentEvents(); 64 Content.JobDataParameter.ValueChanged += JobDataParameterOnValueChanged; 65 Content.JobData.ItemsAdded += JobsOnChanged; 66 Content.JobData.ItemsRemoved += JobsOnChanged; 67 Content.JobData.ItemsReplaced += JobsOnChanged; 68 Content.JobData.CollectionReset += JobsOnChanged; 69 foreach (var job in Content.JobData) { 70 job.TasksChanged += JobOnTasksChanged; 49 71 } 50 72 } 51 73 52 private void FillGanttChart(JobShopSchedulingProblem content) { 74 private void JobsOnChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<Job>> e) { 75 foreach (var job in e.OldItems) 76 job.Value.TasksChanged -= JobOnTasksChanged; 77 foreach (var job in e.Items) 78 job.Value.TasksChanged += JobOnTasksChanged; 79 FillGanttChart(); 80 } 81 82 private void JobDataParameterOnValueChanged(object sender, EventArgs e) { 83 Content.JobData.ItemsAdded += JobsOnChanged; 84 Content.JobData.ItemsRemoved += JobsOnChanged; 85 Content.JobData.ItemsReplaced += JobsOnChanged; 86 Content.JobData.CollectionReset += JobsOnChanged; 87 foreach (var job in Content.JobData) { 88 job.TasksChanged += JobOnTasksChanged; 89 } 90 FillGanttChart(); 91 } 92 93 private void JobOnTasksChanged(object sender, EventArgs e) { 94 FillGanttChart(); 95 } 96 97 private void FillGanttChart() { 53 98 ganttChart.Reset(); 99 if (Content == null) return; 54 100 int jobCount = 0; 55 foreach (var j in content.JobData) {101 foreach (var j in Content.JobData) { 56 102 double lastEndTime = 0; 57 foreach (var t in content.JobData[jobCount].Tasks) {103 foreach (var t in Content.JobData[jobCount].Tasks) { 58 104 int categoryNr = t.JobNr; 59 105 string categoryName = "Job" + categoryNr; … … 63 109 lastEndTime + 1, 64 110 lastEndTime + t.Duration, 65 "Job" + t.JobNr + " - " + "Task#" + t.TaskNr .ToString());111 "Job" + t.JobNr + " - " + "Task#" + t.TaskNr); 66 112 lastEndTime += t.Duration; 67 113 } -
stable/HeuristicLab.Tests
- Property svn:mergeinfo changed
/trunk/sources/HeuristicLab.Tests merged: 10494
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Tests/HeuristicLab.Encodings.ScheduleEncoding-3.3/DirectScheduleGTCrossoverTest.cs
r9885 r11073 20 20 #endregion 21 21 22 using System.Linq; 22 23 using HeuristicLab.Core; 23 24 using HeuristicLab.Encodings.ScheduleEncoding.PermutationWithRepetition; … … 48 49 actual = DirectScheduleGTCrossover.Apply(random, parent1, parent2, jobData, mutProp); 49 50 Schedule expected = DirectScheduleRandomCreator.Apply(3, 3, new PWREncoding(3, 3, new TestRandom(new int[] { 0, 2, 1, 1, 0, 2, 1, 2, 0 }, null)), TestUtils.CreateJobData()); 50 Assert.IsTrue( actual.Equals(expected));51 Assert.IsTrue(TestUtils.ScheduleEquals(actual, expected)); 51 52 } 53 52 54 } 53 55 } -
stable/HeuristicLab.Tests/HeuristicLab.Encodings.ScheduleEncoding-3.3/JSMJOXCrossoverTest.cs
r9885 r11073 53 53 actual = JSMJOXCrossover.Apply(random, p1, p2); 54 54 55 Assert.IsTrue( expected.Equals(actual));55 Assert.IsTrue(TestUtils.JSMEncodingEquals(expected, actual)); 56 56 } 57 57 } -
stable/HeuristicLab.Tests/HeuristicLab.Encodings.ScheduleEncoding-3.3/JSMSXXCrossoverTest.cs
r9885 r11073 53 53 actual = JSMSXXCrossover.Apply(random, p1, p2); 54 54 55 Assert.IsTrue( expected.Equals(actual));55 Assert.IsTrue(TestUtils.JSMEncodingEquals(expected, actual)); 56 56 } 57 57 } -
stable/HeuristicLab.Tests/HeuristicLab.Encodings.ScheduleEncoding-3.3/JSMShiftChangeManipulatorTest.cs
r9885 r11073 51 51 expected.JobSequenceMatrix = jsm; 52 52 53 Assert.IsTrue( individual.Equals(expected));53 Assert.IsTrue(TestUtils.JSMEncodingEquals(expected, individual)); 54 54 } 55 55 } -
stable/HeuristicLab.Tests/HeuristicLab.Encodings.ScheduleEncoding-3.3/PWRGOXCrossoverTest.cs
r9885 r11073 47 47 PWREncoding actual; 48 48 actual = PWRGOXCrossover.Apply(random, parent1, parent2); 49 Assert.IsTrue( actual.Equals(expected));49 Assert.IsTrue(TestUtils.PRWEncodingEquals(expected, actual)); 50 50 } 51 51 } -
stable/HeuristicLab.Tests/HeuristicLab.Encodings.ScheduleEncoding-3.3/PWRPPXCrossoverTest.cs
r9885 r11073 47 47 PWREncoding actual; 48 48 actual = PWRPPXCrossover.Apply(random, parent1, parent2); 49 Assert.IsTrue( actual.Equals(expected));49 Assert.IsTrue(TestUtils.PRWEncodingEquals(expected, actual)); 50 50 } 51 51 } -
stable/HeuristicLab.Tests/HeuristicLab.Encodings.ScheduleEncoding-3.3/TestUtils.cs
r9885 r11073 20 20 #endregion 21 21 22 using System.Linq; 22 23 using HeuristicLab.Core; 23 24 using HeuristicLab.Encodings.IntegerVectorEncoding; … … 97 98 return result; 98 99 } 100 public static bool ScheduleEquals(Schedule actual, Schedule expected) { 101 return actual.Resources.Count == expected.Resources.Count && 102 actual.Resources.Zip(expected.Resources, (a, e) => ResourceEquals(a, e)).All(_ => _); 103 } 104 105 public static bool ResourceEquals(Resource actual, Resource expected) { 106 return actual.Index == expected.Index && 107 actual.TotalDuration == expected.TotalDuration && 108 actual.Tasks.Count == expected.Tasks.Count && 109 actual.Tasks.Zip(expected.Tasks, (a, e) => TaskEquals(a, e)).All(_ => _); 110 } 111 112 public static bool TaskEquals(ScheduledTask actual, ScheduledTask expected) { 113 return 114 actual.StartTime == expected.StartTime && 115 actual.EndTime == expected.EndTime && 116 actual.Duration == expected.Duration && 117 actual.ResourceNr == expected.ResourceNr && 118 actual.JobNr == expected.JobNr && 119 actual.TaskNr == expected.TaskNr; 120 } 121 122 public static bool JSMEncodingEquals(JSMEncoding expected, JSMEncoding actual) { 123 if (expected.JobSequenceMatrix.Count != actual.JobSequenceMatrix.Count) 124 return false; 125 for (int i = 0; i < expected.JobSequenceMatrix.Count; i++) { 126 if (!PermutationEquals(expected.JobSequenceMatrix[i], actual.JobSequenceMatrix[i])) 127 return false; 128 } 129 return true; 130 } 131 private static bool PermutationEquals(Permutation p1, Permutation p2) { 132 if (p1.Length != p2.Length) 133 return false; 134 for (int i = 0; i < p1.Length; i++) { 135 if (p1[i] != p2[i]) 136 return false; 137 } 138 return true; 139 } 140 141 public static bool PRWEncodingEquals(PWREncoding expected, PWREncoding actual) { 142 if (expected.PermutationWithRepetition.Length != actual.PermutationWithRepetition.Length) 143 return false; 144 for (int i = 0; i < expected.PermutationWithRepetition.Length; i++) { 145 if (expected.PermutationWithRepetition[i] != actual.PermutationWithRepetition[i]) 146 return false; 147 } 148 return true; 149 } 99 150 } 100 151 }
Note: See TracChangeset
for help on using the changeset viewer.