Changeset 13443 for branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/JobShopSchedulingProblem new.cs
- Timestamp:
- 12/08/15 14:31:05 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/JobShopSchedulingProblem new.cs
r13437 r13443 26 26 using HeuristicLab.Data; 27 27 using HeuristicLab.Encodings.PermutationEncoding; 28 using HeuristicLab.Encodings.Schedule;29 28 using HeuristicLab.Encodings.ScheduleEncoding; 30 29 using HeuristicLab.Optimization; 31 30 using HeuristicLab.Parameters; 32 31 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 33 using HeuristicLab.PluginInfrastructure;34 32 using HeuristicLab.Problems.Instances; 35 33 … … 95 93 get { return (IFixedValueParameter<IntValue>)Parameters["Resources"]; } 96 94 } 97 public IValueParameter<IScheduleEvaluator> ScheduleEvaluatorParameter {98 get { return (IValueParameter<IScheduleEvaluator>)Parameters["ScheduleEvaluator"]; }99 }100 public OptionalValueParameter<IScheduleDecoder> ScheduleDecoderParameter {101 get { return (OptionalValueParameter<IScheduleDecoder>)Parameters["ScheduleDecoder"]; }102 }103 95 #endregion 104 96 … … 118 110 get { return ResourcesParameter.Value.Value; } 119 111 set { ResourcesParameter.Value.Value = value; } 120 }121 public IScheduleEvaluator ScheduleEvaluator {122 get { return ScheduleEvaluatorParameter.Value; }123 set { ScheduleEvaluatorParameter.Value = value; }124 }125 public IScheduleDecoder ScheduleDecoder {126 get { return ScheduleDecoderParameter.Value; }127 set { ScheduleDecoderParameter.Value = value; }128 112 } 129 113 #endregion … … 151 135 Parameters.Add(new FixedValueParameter<IntValue>("Jobs", "The number of jobs used in this JSSP instance.", new IntValue())); 152 136 Parameters.Add(new FixedValueParameter<IntValue>("Resources", "The number of resources used in this JSSP instance.", new IntValue())); 153 Parameters.Add(new ValueParameter<IScheduleEvaluator>("ScheduleEvaluator", "The evaluator used to determine the quality of a solution.", new MakespanEvaluator()));154 Parameters.Add(new OptionalValueParameter<IScheduleDecoder>("ScheduleDecoder", "The operator that decodes the representation and creates a schedule.", new JSMDecoder()));155 137 156 138 Encoding = new DirectScheduleEncoding(); … … 162 144 163 145 public override double Evaluate(ISchedule solution, IRandom random) { 164 //TODO change to decoder 165 var schedule = (Schedule)solution; 146 var schedule = Encoding.Decode(solution, JobData); 166 147 return MakespanEvaluator.GetMakespan(schedule); 167 148 } … … 194 175 } 195 176 private void ScheduleEvaluatorParameter_ValueChanged(object sender, EventArgs eventArgs) { 196 ScheduleEvaluator.QualityParameter.ActualNameChanged += ScheduleEvaluator_QualityParameter_ActualNameChanged;177 //ScheduleEvaluator.QualityParameter.ActualNameChanged += ScheduleEvaluator_QualityParameter_ActualNameChanged; 197 178 ParameterizeOperators(); 198 179 } … … 205 186 } 206 187 private void ScheduleDecoderParameter_ValueChanged(object sender, EventArgs eventArgs) { 207 if (ScheduleDecoder != null) ScheduleDecoder.ScheduleParameter.ActualNameChanged += ScheduleDecoder_ScheduleParameter_ActualNameChanged;188 //if (ScheduleDecoder != null) ScheduleDecoder.ScheduleParameter.ActualNameChanged += ScheduleDecoder_ScheduleParameter_ActualNameChanged; 208 189 ParameterizeOperators(); 209 190 } … … 222 203 223 204 private void ApplyEncoding() { 224 if (SolutionCreator.GetType() == typeof(JSMRandomCreator)) {225 Operators.AddRange(ApplicationManager.Manager.GetInstances<IJSMOperator>());226 ScheduleDecoder = new JSMDecoder();227 } else if (SolutionCreator.GetType() == typeof(PRVRandomCreator)) {228 Operators.AddRange(ApplicationManager.Manager.GetInstances<IPRVOperator>());229 ScheduleDecoder = new PRVDecoder();230 } else if (SolutionCreator.GetType() == typeof(PWRRandomCreator)) {231 Operators.AddRange(ApplicationManager.Manager.GetInstances<IPWROperator>());232 ScheduleDecoder = new PWRDecoder();233 } else if (SolutionCreator.GetType() == typeof(DirectScheduleRandomCreator)) {234 Operators.AddRange(ApplicationManager.Manager.GetInstances<IDirectScheduleOperator>());235 ScheduleDecoder = null;236 }205 //if (SolutionCreator.GetType() == typeof(JSMRandomCreator)) { 206 // Operators.AddRange(ApplicationManager.Manager.GetInstances<IJSMOperator>()); 207 // ScheduleDecoder = new JSMDecoder(); 208 //} else if (SolutionCreator.GetType() == typeof(PRVRandomCreator)) { 209 // Operators.AddRange(ApplicationManager.Manager.GetInstances<IPRVOperator>()); 210 // ScheduleDecoder = new PRVDecoder(); 211 //} else if (SolutionCreator.GetType() == typeof(PWRRandomCreator)) { 212 // Operators.AddRange(ApplicationManager.Manager.GetInstances<IPWROperator>()); 213 // ScheduleDecoder = new PWRDecoder(); 214 //} else if (SolutionCreator.GetType() == typeof(DirectScheduleRandomCreator)) { 215 // Operators.AddRange(ApplicationManager.Manager.GetInstances<IDirectScheduleOperator>()); 216 // ScheduleDecoder = null; 217 //} 237 218 } 238 219 … … 301 282 BestKnownQuality = data.BestKnownQuality ?? double.NaN; 302 283 if (data.BestKnownSchedule != null) { 303 var enc = new JSMEncoding(); 304 enc.JobSequenceMatrix = new ItemList<Permutation>(data.Resources); 284 var enc = new JSMEncoding(0); 305 285 for (int i = 0; i < data.Resources; i++) { 306 enc.JobSequenceMatrix [i] = new Permutation(PermutationTypes.Absolute, new int[data.Jobs]);286 enc.JobSequenceMatrix.Add(new Permutation(PermutationTypes.Absolute, new int[data.Jobs])); 307 287 for (int j = 0; j < data.Jobs; j++) { 308 288 enc.JobSequenceMatrix[i][j] = data.BestKnownSchedule[i, j]; 309 289 } 310 290 } 311 BestKnownSolution = new JSMDecoder().CreateScheduleFromEncoding(enc, jobData);312 if (ScheduleEvaluator is MeanTardinessEvaluator)313 BestKnownQuality = MeanTardinessEvaluator.GetMeanTardiness(BestKnownSolution, jobData);314 else if (ScheduleEvaluator is MakespanEvaluator)315 BestKnownQuality = MakespanEvaluator.GetMakespan(BestKnownSolution);291 BestKnownSolution = JSMDecoder.DecodeSchedule(enc, jobData, JSMDecodingErrorPolicyTypes.RandomPolicy, JSMForcingStrategyTypes.SwapForcing); 292 //if (ScheduleEvaluator is MeanTardinessEvaluator) 293 // BestKnownQuality = MeanTardinessEvaluator.GetMeanTardiness(BestKnownSolution, jobData); 294 //else if (ScheduleEvaluator is MakespanEvaluator) 295 // BestKnownQuality = MakespanEvaluator.GetMakespan(BestKnownSolution); 316 296 } 317 297
Note: See TracChangeset
for help on using the changeset viewer.