Free cookie consent management tool by TermsFeed Policy Generator

source: branches/2987_MOEAD_Algorithm/HeuristicLab.Algorithms.DataAnalysis/3.4/MoeaD/MOEADSolution.cs @ 16557

Last change on this file since 16557 was 16557, checked in by bburlacu, 5 years ago

#2987: Branch HeuristicLab.Algorithms.DataAnalysis and add initial implementation.

File size: 2.6 KB
Line 
1using HeuristicLab.Common;
2using HeuristicLab.Core;
3using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
4
5namespace HeuristicLab.Algorithms.DataAnalysis.MoeaD {
6  public interface IMOEADSolution : IItem {
7    IItem Individual { get; set; }
8    double[] Qualities { get; set; }
9    double[] Constraints { get; set; }
10    int Dimensions { get; }
11  }
12
13  [Item("MOEADSolution", "Represents a solution inside the MOEA/D population")]
14  [StorableClass]
15  public class MOEADSolution : Item, IMOEADSolution {
16    public IItem Individual { get; set; }
17    public double[] Qualities { get; set; }
18    public double[] Constraints { get; set; }
19
20    public MOEADSolution(int nObjectives, int nConstraints) {
21      Qualities = new double[nObjectives];
22      Constraints = new double[nConstraints];
23    }
24
25    public MOEADSolution(IItem individual, int nObjectives, int nConstraints) : this(nObjectives, nConstraints) {
26      Individual = individual;
27    }
28
29    public MOEADSolution(IItem individual, double[] qualities, double[] constraints) {
30      Individual = individual;
31      Qualities = qualities;
32      Constraints = constraints;
33    }
34
35    public MOEADSolution(double[] qualities) {
36      Qualities = (double[])qualities.Clone();
37    }
38
39    public int Dimensions => Qualities == null ? 0 : Qualities.Length;
40
41    public override IDeepCloneable Clone(Cloner cloner) {
42      return new MOEADSolution(this, cloner);
43    }
44
45    protected MOEADSolution(MOEADSolution original, Cloner cloner) : base(original, cloner) {
46      Qualities = (double[])original.Qualities.Clone();
47      Constraints = (double[])original.Qualities.Clone();
48      Individual = (IItem)original.Individual.Clone(cloner);
49    }
50
51    [StorableConstructor]
52    protected MOEADSolution(bool deserializing) : base(deserializing) { }
53  }
54
55  [Item("MOEADSolution", "Represents a solution inside the MOEA/D population")]
56  [StorableClass]
57  public class MOEADSolution<T> : MOEADSolution where T : class, IItem {
58    public new T Individual {
59      get { return (T)base.Individual; }
60      set { base.Individual = value; }
61    }
62
63    public MOEADSolution(T individual, int nObjectives, int nConstraints) : base(individual, nObjectives, nConstraints) { }
64
65    protected MOEADSolution(MOEADSolution<T> original, Cloner cloner) : base(original, cloner) { }
66
67    public override IDeepCloneable Clone(Cloner cloner) {
68      return new MOEADSolution<T>(this, cloner);
69    }
70
71    [StorableConstructor]
72    protected MOEADSolution(bool deserializing) : base(deserializing) { }
73  }
74}
Note: See TracBrowser for help on using the repository browser.