Changeset 13435 for branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Schedule.cs
- Timestamp:
- 12/04/15 10:35:04 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Schedule.cs
r12012 r13435 25 25 using HeuristicLab.Common; 26 26 using HeuristicLab.Core; 27 using HeuristicLab.Data;28 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 28 … … 31 30 [Item("Schedule", "Represents the general solution for scheduling problems.")] 32 31 [StorableClass] 33 public class Schedule : NamedItem, ISchedule Encoding{32 public class Schedule : NamedItem, ISchedule { 34 33 35 34 #region Properties … … 38 37 public ItemList<Resource> Resources { 39 38 get { return resources; } 40 set {41 if (resources != null) DeregisterResourcesEvents();42 resources = value;43 if (resources != null) RegisterResourcesEvents();44 OnResourcesChanged();45 }46 39 } 47 40 [Storable] 48 private DoubleValue quality;49 public DoubleValue Quality {41 private double quality; 42 public double Quality { 50 43 get { return quality; } 51 44 set { 52 if (quality != value) { 53 if (quality != null) DeregisterQualityEvents(); 54 quality = value; 55 if (quality != null) RegisterQualityEvents(); 56 OnQualityChanged(); 57 } 45 if (quality == value) return; 46 quality = value; 47 OnQualityChanged(); 58 48 } 59 49 } … … 66 56 protected Schedule(Schedule original, Cloner cloner) 67 57 : base(original, cloner) { 68 this.Resources = cloner.Clone(original.Resources); 69 this.Quality = cloner.Clone(original.Quality); 58 this.resources = cloner.Clone(original.Resources); 59 this.quality = original.Quality; 60 //TODO clone 70 61 this.lastScheduledTaskOfJob = new Dictionary<int, ScheduledTask>(original.lastScheduledTaskOfJob); 62 63 RegisterResourcesEvents(); 71 64 } 72 65 public Schedule(int nrOfResources) { 73 Resources = new ItemList<Resource>();66 resources = new ItemList<Resource>(); 74 67 for (int i = 0; i < nrOfResources; i++) { 75 68 Resources.Add(new Resource(i)); 76 69 } 77 70 lastScheduledTaskOfJob = new Dictionary<int, ScheduledTask>(); 71 72 RegisterResourcesEvents(); 78 73 } 79 74 … … 89 84 changed(this, EventArgs.Empty); 90 85 } 91 private void RegisterQualityEvents() {92 Quality.ValueChanged += new EventHandler(Quality_ValueChanged);93 }94 private void DeregisterQualityEvents() {95 Quality.ValueChanged -= new EventHandler(Quality_ValueChanged);96 }97 private void Quality_ValueChanged(object sender, EventArgs e) {98 OnQualityChanged();99 }100 86 101 87 public event EventHandler ResourcesChanged; … … 107 93 private void RegisterResourcesEvents() { 108 94 Resources.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(Resources_PropertyChanged); 109 }110 private void DeregisterResourcesEvents() {111 Resources.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler(Resources_PropertyChanged);112 95 } 113 96 private void Resources_PropertyChanged(object sender, EventArgs e) { … … 154 137 return sb.ToString(); 155 138 } 156 157 public double CalculateMakespan() {158 double quality = 0;159 foreach (Resource r in Resources) {160 if (r.TotalDuration > quality) {161 quality = r.TotalDuration;162 }163 }164 return quality;165 }166 139 } 167 140 }
Note: See TracChangeset
for help on using the changeset viewer.