Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/08/15 14:31:05 (8 years ago)
Author:
mkommend
Message:

#2521: Adapted decoders for SchedulingProblem.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/JobShopSchedulingProblem new.cs

    r13437 r13443  
    2626using HeuristicLab.Data;
    2727using HeuristicLab.Encodings.PermutationEncoding;
    28 using HeuristicLab.Encodings.Schedule;
    2928using HeuristicLab.Encodings.ScheduleEncoding;
    3029using HeuristicLab.Optimization;
    3130using HeuristicLab.Parameters;
    3231using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    33 using HeuristicLab.PluginInfrastructure;
    3432using HeuristicLab.Problems.Instances;
    3533
     
    9593      get { return (IFixedValueParameter<IntValue>)Parameters["Resources"]; }
    9694    }
    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     }
    10395    #endregion
    10496
     
    118110      get { return ResourcesParameter.Value.Value; }
    119111      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; }
    128112    }
    129113    #endregion
     
    151135      Parameters.Add(new FixedValueParameter<IntValue>("Jobs", "The number of jobs used in this JSSP instance.", new IntValue()));
    152136      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()));
    155137
    156138      Encoding = new DirectScheduleEncoding();
     
    162144
    163145    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);
    166147      return MakespanEvaluator.GetMakespan(schedule);
    167148    }
     
    194175    }
    195176    private void ScheduleEvaluatorParameter_ValueChanged(object sender, EventArgs eventArgs) {
    196       ScheduleEvaluator.QualityParameter.ActualNameChanged += ScheduleEvaluator_QualityParameter_ActualNameChanged;
     177      //ScheduleEvaluator.QualityParameter.ActualNameChanged += ScheduleEvaluator_QualityParameter_ActualNameChanged;
    197178      ParameterizeOperators();
    198179    }
     
    205186    }
    206187    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;
    208189      ParameterizeOperators();
    209190    }
     
    222203
    223204    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      //}
    237218    }
    238219
     
    301282      BestKnownQuality = data.BestKnownQuality ?? double.NaN;
    302283      if (data.BestKnownSchedule != null) {
    303         var enc = new JSMEncoding();
    304         enc.JobSequenceMatrix = new ItemList<Permutation>(data.Resources);
     284        var enc = new JSMEncoding(0);
    305285        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]));
    307287          for (int j = 0; j < data.Jobs; j++) {
    308288            enc.JobSequenceMatrix[i][j] = data.BestKnownSchedule[i, j];
    309289          }
    310290        }
    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);
    316296      }
    317297
Note: See TracChangeset for help on using the changeset viewer.