- Timestamp:
- 07/18/20 00:25:54 (4 years ago)
- Location:
- branches/2521_ProblemRefactoring
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2521_ProblemRefactoring/HeuristicLab.Algorithms.ParameterlessPopulationPyramid/3.3/ParameterlessPopulationPyramid.cs
r17513 r17680 119 119 120 120 #region ResultsProperties 121 private double ResultsBestQuality { 122 get { return ((DoubleValue)Results["Best Quality"].Value).Value; } 123 set { ((DoubleValue)Results["Best Quality"].Value).Value = value; } 124 } 125 126 private BinaryVector ResultsBestSolution { 127 get { return (BinaryVector)Results["Best Solution"].Value; } 128 set { Results["Best Solution"].Value = value; } 129 } 130 131 private int ResultsBestFoundOnEvaluation { 132 get { return ((IntValue)Results["Evaluation Best Solution Was Found"].Value).Value; } 133 set { ((IntValue)Results["Evaluation Best Solution Was Found"].Value).Value = value; } 134 } 135 136 private int ResultsEvaluations { 137 get { return ((IntValue)Results["Evaluations"].Value).Value; } 138 set { ((IntValue)Results["Evaluations"].Value).Value = value; } 139 } 140 private int ResultsIterations { 141 get { return ((IntValue)Results["Iterations"].Value).Value; } 142 set { ((IntValue)Results["Iterations"].Value).Value = value; } 143 } 144 145 private DataTable ResultsQualities { 146 get { return ((DataTable)Results["Qualities"].Value); } 147 } 148 private DataRow ResultsQualitiesBest { 149 get { return ResultsQualities.Rows["Best Quality"]; } 150 } 151 152 private DataRow ResultsQualitiesIteration { 153 get { return ResultsQualities.Rows["Iteration Quality"]; } 154 } 155 156 157 private DataRow ResultsLevels { 158 get { return ((DataTable)Results["Pyramid Levels"].Value).Rows["Levels"]; } 159 } 160 161 private DataRow ResultsSolutions { 162 get { return ((DataTable)Results["Stored Solutions"].Value).Rows["Solutions"]; } 163 } 121 [Storable] private DoubleValue resultsBestQuality; 122 public double ResultsBestQuality { 123 get => resultsBestQuality.Value; 124 set => resultsBestQuality.Value = value; 125 } 126 [Storable] private IntValue resultsBestFoundOnEvaluation; 127 public int ResultsBestFoundOnEvaluation { 128 get => resultsBestFoundOnEvaluation.Value; 129 set => resultsBestFoundOnEvaluation.Value = value; 130 } 131 [Storable] private IntValue resultsEvaluations; 132 public int ResultsEvaluations { 133 get => resultsEvaluations.Value; 134 set => resultsEvaluations.Value = value; 135 } 136 [Storable] private IntValue resultsIterations; 137 public int ResultsIterations { 138 get => resultsIterations.Value; 139 set => resultsIterations.Value = value; 140 } 141 [Storable] public DataRow ResultsQualitiesBest { get; private set; } 142 [Storable] public DataRow ResultsQualitiesIteration { get; private set; } 143 [Storable] public DataRow ResultsLevels { get; private set; } 144 [Storable] public DataRow ResultsSolutions { get; private set; } 164 145 #endregion 165 146 … … 175 156 tracker = cloner.Clone(original.tracker); 176 157 seen = new HashSet<BinaryVector>(original.seen.Select(cloner.Clone), new EnumerableBoolEqualityComparer()); 158 resultsBestQuality = cloner.Clone(original.resultsBestQuality); 159 resultsBestFoundOnEvaluation = cloner.Clone(original.resultsBestFoundOnEvaluation); 160 resultsEvaluations = cloner.Clone(original.resultsEvaluations); 161 resultsIterations = cloner.Clone(original.resultsIterations); 162 ResultsQualitiesBest = cloner.Clone(original.ResultsQualitiesBest); 163 ResultsQualitiesIteration = cloner.Clone(original.ResultsQualitiesIteration); 164 ResultsLevels = cloner.Clone(original.ResultsLevels); 165 ResultsSolutions = cloner.Clone(original.ResultsSolutions); 177 166 } 178 167 … … 239 228 240 229 // Set up the results display 241 Results.Add(new Result("Iterations", new IntValue(0))); 242 Results.Add(new Result("Evaluations", new IntValue(0))); 243 Results.Add(new Result("Best Solution", new BinaryVector(tracker.BestSolution))); 244 Results.Add(new Result("Best Quality", new DoubleValue(tracker.BestQuality))); 245 Results.Add(new Result("Evaluation Best Solution Was Found", new IntValue(tracker.BestFoundOnEvaluation))); 230 if (!Results.TryGetValue("Iterations", out var result)) 231 Results.Add(new Result("Iterations", resultsIterations = new IntValue(0))); 232 else result.Value = resultsIterations = new IntValue(0); 233 if (!Results.TryGetValue("Evaluations", out var result2)) 234 Results.Add(new Result("Evaluations", resultsEvaluations = new IntValue(0))); 235 else result2.Value = resultsEvaluations = new IntValue(0); 236 if (!Results.TryGetValue("Best Quality", out var result4)) 237 Results.Add(new Result("Best Quality", resultsBestQuality = new DoubleValue(tracker.BestQuality))); 238 else result4.Value = resultsBestQuality = new DoubleValue(tracker.BestQuality); 239 if (!Results.TryGetValue("Evaluation Best Solution Was Found", out var result5)) 240 Results.Add(new Result("Evaluation Best Solution Was Found", resultsBestFoundOnEvaluation = new IntValue(tracker.BestFoundOnEvaluation))); 241 else result5.Value = resultsBestFoundOnEvaluation = new IntValue(tracker.BestFoundOnEvaluation); 246 242 var table = new DataTable("Qualities"); 247 table.Rows.Add(new DataRow("Best Quality")); 248 var iterationRows = new DataRow("Iteration Quality"); 249 iterationRows.VisualProperties.LineStyle = DataRowVisualProperties.DataRowLineStyle.Dot; 250 table.Rows.Add(iterationRows); 251 Results.Add(new Result("Qualities", table)); 243 table.Rows.Add(ResultsQualitiesBest = new DataRow("Best Quality")); 244 table.Rows.Add(ResultsQualitiesIteration = new DataRow("Iteration Quality")); 245 ResultsQualitiesIteration.VisualProperties.LineStyle = DataRowVisualProperties.DataRowLineStyle.Dot; 246 if (!Results.TryGetValue("Qualities", out var result6)) 247 Results.Add(new Result("Qualities", table)); 248 else result6.Value = table; 252 249 253 250 table = new DataTable("Pyramid Levels"); 254 table.Rows.Add(new DataRow("Levels")); 255 Results.Add(new Result("Pyramid Levels", table)); 251 table.Rows.Add(ResultsLevels = new DataRow("Levels")); 252 if (!Results.TryGetValue("Pyramid Levels", out var result7)) 253 Results.Add(new Result("Pyramid Levels", table)); 254 else result7.Value = table; 256 255 257 256 table = new DataTable("Stored Solutions"); 258 table.Rows.Add(new DataRow("Solutions")); 259 Results.Add(new Result("Stored Solutions", table)); 257 table.Rows.Add(ResultsSolutions = new DataRow("Solutions")); 258 if (!Results.TryGetValue("Stored Solutions", out var result8)) 259 Results.Add(new Result("Stored Solutions", table)); 260 else result8.Value = table; 260 261 261 262 base.Initialize(cancellationToken); … … 273 274 } finally { 274 275 ResultsEvaluations = tracker.Evaluations; 275 ResultsBestSolution = new BinaryVector(tracker.BestSolution);276 276 ResultsBestQuality = tracker.BestQuality; 277 277 ResultsBestFoundOnEvaluation = tracker.BestFoundOnEvaluation; -
branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleEncoding.cs
r17461 r17680 30 30 [StorableType("09b9d24c-2576-495a-b06c-338d095cba0d")] 31 31 public interface IScheduleEncoding : IEncoding<IScheduleSolution> { 32 IValueParameter<ItemList<Job>> JobDataParameter { get; set;}33 IFixedValueParameter<IntValue> JobsParameter { get; set;}34 IFixedValueParameter<IntValue> ResourcesParameter { get; set;}32 IValueParameter<ItemList<Job>> JobDataParameter { get; } 33 IFixedValueParameter<IntValue> JobsParameter { get; } 34 IFixedValueParameter<IntValue> ResourcesParameter { get; } 35 35 36 36 ItemList<Job> JobData { get; } -
branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding.cs
r17614 r17680 34 34 public abstract class ScheduleEncoding<TSchedule> : Encoding<TSchedule>, IScheduleEncoding 35 35 where TSchedule : class, IScheduleSolution { 36 #region Encoding Parameters 37 [Storable] 38 private IValueParameter<ItemList<Job>> jobDataParameter; 39 public IValueParameter<ItemList<Job>> JobDataParameter { 40 get { return jobDataParameter; } 41 set { 42 if (value == null) throw new ArgumentNullException("JobData parameter must not be null."); 43 if (value.Value == null) throw new ArgumentNullException("JobData parameter value must not be null."); 44 if (jobDataParameter == value) return; 45 46 if (jobDataParameter != null) Parameters.Remove(jobDataParameter); 47 jobDataParameter = value; 48 Parameters.Add(jobDataParameter); 49 OnJobDataParameterChanged(); 50 } 51 } 52 53 [Storable] 54 private IFixedValueParameter<IntValue> jobsParameter; 55 public IFixedValueParameter<IntValue> JobsParameter { 56 get { return jobsParameter; } 57 set { 58 if (value == null) throw new ArgumentNullException("Jobs parameter must not be null."); 59 if (value.Value == null) throw new ArgumentNullException("Jobs parameter value must not be null."); 60 if (jobsParameter == value) return; 61 62 if (jobsParameter != null) Parameters.Remove(jobsParameter); 63 jobsParameter = value; 64 Parameters.Add(jobsParameter); 65 OnJobsParameterChanged(); 66 } 67 } 68 [Storable] 69 private IFixedValueParameter<IntValue> resourcesParameter; 70 public IFixedValueParameter<IntValue> ResourcesParameter { 71 get { return resourcesParameter; } 72 set { 73 if (value == null) throw new ArgumentNullException("Resources parameter must not be null."); 74 if (value.Value == null) throw new ArgumentNullException("Resources parameter value must not be null."); 75 if (resourcesParameter == value) return; 76 77 if (resourcesParameter != null) Parameters.Remove(resourcesParameter); 78 resourcesParameter = value; 79 Parameters.Add(resourcesParameter); 80 OnBoundsParameterChanged(); 81 } 82 } 83 84 [Storable] 85 private IValueParameter<IScheduleDecoder<TSchedule>> decoderParameter; 86 public IValueParameter<IScheduleDecoder<TSchedule>> DecoderParameter { 87 get { return decoderParameter; } 88 set { 89 if (value == null) throw new ArgumentNullException("Decoder parameter must not be null."); 90 if (value.Value == null) throw new ArgumentNullException("Decoder parameter value must not be null."); 91 if (decoderParameter == value) return; 92 93 if (decoderParameter != null) Parameters.Remove(decoderParameter); 94 decoderParameter = value; 95 Parameters.Add(decoderParameter); 96 OnDecoderParameterChanged(); 97 } 98 } 99 #endregion 36 [Storable] public IValueParameter<ItemList<Job>> JobDataParameter { get; private set; } 37 [Storable] public IFixedValueParameter<IntValue> JobsParameter { get; private set; } 38 [Storable] public IFixedValueParameter<IntValue> ResourcesParameter { get; private set; } 39 [Storable] public IValueParameter<IScheduleDecoder<TSchedule>> DecoderParameter { get; private set; } 100 40 101 41 public ItemList<Job> JobData { … … 120 60 protected ScheduleEncoding(ScheduleEncoding<TSchedule> original, Cloner cloner) 121 61 : base(original, cloner) { 122 jobDataParameter = cloner.Clone(original.JobDataParameter); 123 jobsParameter = cloner.Clone(original.JobsParameter); 124 resourcesParameter = cloner.Clone(original.ResourcesParameter); 125 decoderParameter = cloner.Clone(original.DecoderParameter); 62 JobDataParameter = cloner.Clone(original.JobDataParameter); 63 JobsParameter = cloner.Clone(original.JobsParameter); 64 ResourcesParameter = cloner.Clone(original.ResourcesParameter); 65 DecoderParameter = cloner.Clone(original.DecoderParameter); 66 67 RegisterParameterEvents(); 126 68 } 127 69 … … 132 74 int resources = jobData.SelectMany(j => j.Tasks).Select(t => t.ResourceNr).Distinct().Count(); 133 75 134 jobDataParameter = new ValueParameter<ItemList<Job>>(Name + ".JobData", new ItemList<Job>(jobData));135 jobsParameter = new FixedValueParameter<IntValue>(Name + ".Jobs", new IntValue(jobs));136 resourcesParameter = new FixedValueParameter<IntValue>(Name + ".Resources", new IntValue(resources));137 decoderParameter = new ValueParameter<IScheduleDecoder<TSchedule>>(Name + ".Decoder");76 Parameters.Add(JobDataParameter = new ValueParameter<ItemList<Job>>(Name + ".JobData", new ItemList<Job>(jobData))); 77 Parameters.Add(JobsParameter = new FixedValueParameter<IntValue>(Name + ".Jobs", new IntValue(jobs))); 78 Parameters.Add(ResourcesParameter = new FixedValueParameter<IntValue>(Name + ".Resources", new IntValue(resources))); 79 Parameters.Add(DecoderParameter = new ValueParameter<IScheduleDecoder<TSchedule>>(Name + ".Decoder")); 138 80 139 Parameters.Add(jobDataParameter); 140 Parameters.Add(jobsParameter); 141 Parameters.Add(resourcesParameter); 142 Parameters.Add(decoderParameter); 81 RegisterParameterEvents(); 82 } 83 84 private void RegisterParameterEvents() { 85 ItemListParameterChangeHandler<Job>.Create(JobDataParameter, () => { 86 ConfigureOperators(Operators); 87 OnJobDataChanged(); 88 }); 89 IntValueParameterChangeHandler.Create(JobsParameter, () => { 90 ConfigureOperators(Operators); 91 OnJobsChanged(); 92 }); 93 IntValueParameterChangeHandler.Create(ResourcesParameter, () => { 94 ConfigureOperators(Operators); 95 OnResourcesChanged(); 96 }); 97 ParameterChangeHandler<IScheduleDecoder<TSchedule>>.Create(DecoderParameter, () => { 98 ConfigureOperators(Operators); 99 OnDecoderChanged(); 100 }); 143 101 } 144 102 145 103 public Schedule Decode(IScheduleSolution schedule, ItemList<Job> jobData) { 146 104 return Decoder.DecodeSchedule(schedule, jobData); 147 }148 149 private void OnJobDataParameterChanged() {150 ConfigureOperators(Operators);151 }152 private void OnJobsParameterChanged() {153 ConfigureOperators(Operators);154 }155 private void OnBoundsParameterChanged() {156 ConfigureOperators(Operators);157 }158 159 private void OnDecoderParameterChanged() {160 ConfigureOperators(Operators);161 105 } 162 106 … … 187 131 manipulator.ScheduleParameter.ActualName = Name; 188 132 } 133 134 public event EventHandler JobDataChanged; 135 protected virtual void OnJobDataChanged() => JobDataChanged?.Invoke(this, EventArgs.Empty); 136 137 public event EventHandler JobsChanged; 138 protected virtual void OnJobsChanged() => JobsChanged?.Invoke(this, EventArgs.Empty); 139 140 public event EventHandler ResourcesChanged; 141 protected virtual void OnResourcesChanged() => ResourcesChanged?.Invoke(this, EventArgs.Empty); 142 143 public event EventHandler DecoderChanged; 144 protected virtual void OnDecoderChanged() => DecoderChanged?.Invoke(this, EventArgs.Empty); 189 145 } 190 146 } -
branches/2521_ProblemRefactoring/HeuristicLab.Parameters/3.3/ParameterChangeHandler.cs
r17614 r17680 21 21 22 22 using System; 23 using System.ComponentModel; 23 24 using HeuristicLab.Core; 24 25 using HeuristicLab.Data; … … 214 215 => new StringValueParameterChangeHandler(parameter, handler); 215 216 } 217 218 public class ItemListParameterChangeHandler<T> : ParameterChangeHandler<ItemList<T>> where T : class,IItem { 219 private ItemList<T> last; 220 221 private ItemListParameterChangeHandler(IValueParameter<ItemList<T>> parameter, Action handler) 222 : base(parameter, handler) { 223 last = parameter.Value; 224 if (last != null && !(last is ReadOnlyItemList<T>)) { 225 last.PropertyChanged += ParameterValueOnListChanged; 226 } 227 } 228 229 protected override void ParameterOnValueChanged(object sender, EventArgs e) { 230 if (last != null && !(last is ReadOnlyItemList<T>)) 231 last.PropertyChanged -= ParameterValueOnListChanged; 232 last = ((IValueParameter<ItemList<T>>)sender).Value; 233 if (last != null && !(last is ReadOnlyItemList<T>)) 234 last.PropertyChanged += ParameterValueOnListChanged; 235 base.ParameterOnValueChanged(sender, e); 236 } 237 238 private void ParameterValueOnListChanged(object sender, PropertyChangedEventArgs e) { 239 if (e.PropertyName == "Item[]") handler(); 240 } 241 public static ItemListParameterChangeHandler<T> Create(IValueParameter<ItemList<T>> parameter, Action handler) 242 => new ItemListParameterChangeHandler<T>(parameter, handler); 243 } 216 244 } -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.LinearAssignment/3.3/LinearAssignmentProblem.cs
r17594 r17680 67 67 get { return (IResultParameter<LAPAssignment>)Parameters["Best LAP Solution"]; } 68 68 } 69 //public IResultDefinition<LAPAssignment> BestLAPSolution => BestLAPSolutionParameter;70 69 #endregion 71 70 … … 101 100 public LinearAssignmentProblem() 102 101 : base(new PermutationEncoding("Assignment")) { 102 Encoding.LengthParameter.ReadOnly = DimensionRefParameter.ReadOnly = true; 103 103 104 Parameters.Add(new ValueParameter<DoubleMatrix>("Costs", CostsDescription, new DoubleMatrix(3, 3))); 104 105 Parameters.Add(new OptionalValueParameter<ItemSet<Permutation>>("BestKnownSolutions", "The list of best known solutions which is updated whenever a new better solution is found or may be the optimal solution if it is known beforehand.", null)); -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.Orienteering/3.3/OrienteeringProblem.cs
r17620 r17680 70 70 public OrienteeringProblem() 71 71 : base(new IntegerVectorEncoding("Route")) { 72 Maximization = true; 73 Encoding.LengthParameter.ReadOnly = DimensionRefParameter.ReadOnly = true; 74 Encoding.BoundsParameter.ReadOnly = BoundsRefParameter.ReadOnly = true; 75 72 76 Parameters.Add(OrienteeringProblemDataParameter = new ValueParameter<IOrienteeringProblemData>("OP Data", "The main parameters for the orienteering problem.", new OrienteeringProblemData())); 73 77 Parameters.Add(BestKnownSolutionParameter = new OptionalValueParameter<OrienteeringSolution>("BestKnownSolution", "The best known solution of this Orienteering instance.")); 74 78 Parameters.Add(BestOrienteeringSolutionParameter = new ResultParameter<OrienteeringSolution>("Best Orienteering Solution", "The best so far solution found.")); 75 Maximization = true;79 76 80 Dimension = OrienteeringProblemData.Cities; 77 81 Bounds = new Data.IntMatrix(new[,] { { 0, Dimension } }, @readonly: true); -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.PTSP/3.3/ProbabilisticTSP.cs
r17544 r17680 66 66 protected ProbabilisticTSP() : base(new PermutationEncoding("Tour")) { 67 67 Maximization = false; 68 Encoding.LengthParameter.ReadOnly = DimensionRefParameter.ReadOnly = true; 69 Encoding.PermutationTypeParameter.ReadOnly = PermutationTypeRefParameter.ReadOnly = true; 70 PermutationTypeRefParameter.Hidden = true; 71 68 72 Parameters.Add(PTSPDataParameter = new ValueParameter<IProbabilisticTSPData>("PTSP Data", "The main parameters for the pTSP.")); 69 73 Parameters.Add(BestKnownSolutionParameter = new OptionalValueParameter<IProbabilisticTSPSolution>("BestKnownSolution", "The best known solution of this pTSP instance.")); -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.QuadraticAssignment/3.3/QuadraticAssignmentProblem.cs
r17544 r17680 106 106 : base(new PermutationEncoding("Assignment") { Length = 5 }) { 107 107 Maximization = false; 108 Encoding.LengthParameter.ReadOnly = DimensionRefParameter.ReadOnly = true; 109 Encoding.PermutationTypeParameter.ReadOnly = PermutationTypeRefParameter.ReadOnly = true; 110 PermutationTypeRefParameter.Hidden = true; 111 108 112 Parameters.Add(BestKnownSolutionsParameter = new OptionalValueParameter<ItemSet<Permutation>>("BestKnownSolutions", "The list of best known solutions which is updated whenever a new better solution is found or may be the optimal solution if it is known beforehand.", null)); 109 113 Parameters.Add(BestKnownSolutionParameter = new OptionalValueParameter<Permutation>("BestKnownSolution", "The best known solution which is updated whenever a new better solution is found or may be the optimal solution if it is known beforehand.", null)); -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.Scheduling.Views/3.3/HeuristicLab.Problems.Scheduling.Views-3.3.csproj
r17461 r17680 183 183 <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project> 184 184 <Name>HeuristicLab.Optimization-3.3</Name> 185 <Private>False</Private> 186 </ProjectReference> 187 <ProjectReference Include="..\..\HeuristicLab.Parameters\3.3\HeuristicLab.Parameters-3.3.csproj"> 188 <Project>{56F9106A-079F-4C61-92F6-86A84C2D84B7}</Project> 189 <Name>HeuristicLab.Parameters-3.3</Name> 185 190 <Private>False</Private> 186 191 </ProjectReference> -
branches/2521_ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/JobShopSchedulingProblem.cs
r17517 r17680 79 79 80 80 #region Parameter Properties 81 [Storable] public IValueParameter<ItemList<Job>> JobDataParameter { get; private set; }81 [Storable] public ReferenceParameter<ItemList<Job>> JobDataParameter { get; private set; } 82 82 [Storable] public OptionalValueParameter<Schedule> BestKnownSolutionParameter { get; private set; } 83 [Storable] public IFixedValueParameter<IntValue> JobsParameter { get; private set; }84 [Storable] public IFixedValueParameter<IntValue> ResourcesParameter { get; private set; }83 [Storable] public ReferenceParameter<IntValue> JobsParameter { get; private set; } 84 [Storable] public ReferenceParameter<IntValue> ResourcesParameter { get; private set; } 85 85 [Storable] public IFixedValueParameter<EnumValue<JSSPObjective>> ObjectiveParameter { get; private set; } 86 86 #endregion … … 137 137 public JobShopSchedulingProblem() 138 138 : base(new JobSequenceMatrixEncoding()) { 139 Parameters.Add(JobDataParameter = new ValueParameter<ItemList<Job>>("JobData", "Jobdata defining the precedence relationships and the duration of the tasks in this JSSP-Instance.", new ItemList<Job>()));139 Parameters.Add(JobDataParameter = new ReferenceParameter<ItemList<Job>>("JobData", "Jobdata defining the precedence relationships and the duration of the tasks in this JSSP-Instance.", Encoding.JobDataParameter)); 140 140 Parameters.Add(BestKnownSolutionParameter = new OptionalValueParameter<Schedule>("BestKnownSolution", "The best known solution of this JSSP instance.")); 141 Parameters.Add(JobsParameter = new FixedValueParameter<IntValue>("Jobs", "The number of jobs used in this JSSP instance.", new IntValue()));142 Parameters.Add(ResourcesParameter = new FixedValueParameter<IntValue>("Resources", "The number of resources used in this JSSP instance.", new IntValue()));141 Parameters.Add(JobsParameter = new ReferenceParameter<IntValue>("Jobs", "The number of jobs used in this JSSP instance.", Encoding.JobsParameter)); 142 Parameters.Add(ResourcesParameter = new ReferenceParameter<IntValue>("Resources", "The number of resources used in this JSSP instance.", Encoding.ResourcesParameter)); 143 143 Parameters.Add(ObjectiveParameter = new FixedValueParameter<EnumValue<JSSPObjective>>("Objective", "The objective to use in the evaluation of a schedule.", new EnumValue<JSSPObjective>(JSSPObjective.Makespan))); 144 144 EncodingParameter.Hidden = false; 145 146 Encoding.ResourcesParameter = ResourcesParameter;147 Encoding.JobsParameter = JobsParameter;148 Encoding.JobDataParameter = JobDataParameter;149 145 150 146 RegisterEventHandlers(); … … 191 187 protected override void OnEncodingChanged() { 192 188 base.OnEncodingChanged(); 193 Encoding.ResourcesParameter = ResourcesParameter; 194 Encoding.JobsParameter = JobsParameter; 195 Encoding.JobDataParameter = JobDataParameter; 189 Parameters.Remove(JobDataParameter); 190 Parameters.Add(JobDataParameter = new ReferenceParameter<ItemList<Job>>("JobData", "Jobdata defining the precedence relationships and the duration of the tasks in this JSSP-Instance.", Encoding.JobDataParameter)); 191 Parameters.Remove(JobsParameter); 192 Parameters.Add(JobsParameter = new ReferenceParameter<IntValue>("Jobs", "The number of jobs used in this JSSP instance.", Encoding.JobsParameter)); 193 Parameters.Remove(ResourcesParameter); 194 Parameters.Add(ResourcesParameter = new ReferenceParameter<IntValue>("Resources", "The number of resources used in this JSSP instance.", Encoding.ResourcesParameter)); 196 195 } 197 196
Note: See TracChangeset
for help on using the changeset viewer.