- Timestamp:
- 07/11/19 16:30:22 (5 years ago)
- Location:
- branches/2988_ModelsOfModels2/HeuristicLab.Algorithms.EMM/Maps
- Files:
-
- 1 added
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/2988_ModelsOfModels2/HeuristicLab.Algorithms.EMM/Maps/EMMNetworkMap.cs
r17133 r17134 23 23 using HeuristicLab.Common; 24 24 using HeuristicLab.Core; 25 using HeuristicLab.Data; 25 26 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 27 using HeuristicLab.Parameters; 28 using HeuristicLab.Problems.DataAnalysis.Symbolic; 26 29 using HeuristicLab.Random; 30 using System; 27 31 using System.Collections.Generic; 28 32 … … 31 35 [StorableType("C200ECC2-6D33-4468-A538-580B07D75B3C")] 32 36 public class EMMNetworkMap : EMMMapBase<ISymbolicExpressionTree> { 33 public int NeghboorNumber { get; set; } 34 #region conctructors 37 private const string NegbourTypeParameterName = "NegbourType"; 38 private const string NegbourNumberParameterName = "NegbourNumber"; 39 public IFixedValueParameter<StringValue> NegbourTypeParameter { 40 get { return (IFixedValueParameter<StringValue>)Parameters[NegbourTypeParameterName]; } 41 } 42 public IValueParameter<IntValue> NegbourNumberParameter { 43 get { return (IValueParameter<IntValue>)Parameters[NegbourNumberParameterName]; } 44 } 45 public StringValue NegbourType { 46 get { return NegbourTypeParameter.Value; } 47 set { NegbourTypeParameter.Value.Value = value.Value; } 48 } 49 public IntValue NegbourNumber { 50 get { return NegbourNumberParameter.Value; } 51 set { NegbourNumberParameter.Value.Value = value.Value; } 52 } 53 #region constructors 35 54 [StorableConstructor] 36 55 protected EMMNetworkMap(StorableConstructorFlag _) : base(_) { } 37 public EMMNetworkMap() : this(1) { } 56 38 57 public override IDeepCloneable Clone(Cloner cloner) { 39 58 return new EMMNetworkMap(this, cloner); 40 59 } 41 public EMMNetworkMap(int neghboorNumber = 10) : base() { 42 NeghboorNumber = neghboorNumber; 60 public EMMNetworkMap() : base() { 61 Parameters.Add(new ValueParameter<IntValue>(NegbourNumberParameterName, "The parameter for FullMap type of map creation algorithm. Use one from: 10, 20.", new IntValue(10))); 62 Parameters.Add(new FixedValueParameter<StringValue>(NegbourTypeParameterName, "The parameter for FullMap type of map creation algorithm. Use one from: Percent, Number.", new StringValue("Number"))); 63 MapParameterUpdate(); 64 ModelSet = new List<ISymbolicExpressionTree>(); 43 65 } 44 public EMMNetworkMap(EMMNetworkMap original, Cloner cloner) : base(original, cloner) { Neg hboorNumber = original.NeghboorNumber; }66 public EMMNetworkMap(EMMNetworkMap original, Cloner cloner) : base(original, cloner) { NegbourNumber = original.NegbourNumber; } 45 67 #endregion 46 #region MapTransformation 47 override public void CreateMap(IRandom random, int k) { 48 ApplyNetworkMapCreationAlgorithm(random, CalculateDistances(), Map, NeghboorNumber); 68 #region Map Transformation 69 override public void CreateMap(IRandom random) { 70 MapParameterUpdate(); 71 if (Map != null) { 72 Map.Clear(); 73 } 74 ApplyNetworkMapCreationAlgorithm(random, ModelSetPreparation.CalculateDistances(ModelSet), Map, NegbourNumber.Value); 75 } 76 override public void CreateMap(IRandom random, ISymbolicDataAnalysisSingleObjectiveProblem problem) { 77 MapParameterUpdate(); 78 if (Map != null) { 79 Map.Clear(); 80 } 81 ApplyNetworkMapCreationAlgorithm(random, ModelSetPreparation.DistanceMatrixCalculation(ModelSet, DistanceParametr, problem), Map, NegbourNumber.Value); 82 } 83 override public void MapRead(IEnumerable<ISymbolicExpressionTree> trees) { 84 base.MapRead(trees); 85 string fileName = ("Map" + DistanceParametr + ".txt"); 86 Map = FileComuncations.IntMatrixFromFileRead(fileName); 87 NegbourNumber.Value = Map[0].Count; 49 88 } 50 89 public static void ApplyNetworkMapCreationAlgorithm(IRandom random, double[,] distances, List<List<int>> map, int neghboorNumber = 10) { … … 63 102 } 64 103 } 104 protected void MapParameterUpdate() { 105 switch (NegbourType.Value) { 106 case "Percent": NegbourNumber.Value = Convert.ToInt32((Convert.ToDouble(ModelSet.Count)) * (Convert.ToDouble(NegbourNumber.Value)) / 100.0); break; 107 case "Number": NegbourNumber.Value = NegbourNumber.Value; break; 108 default: NegbourNumber.Value = NegbourNumber.Value; break; 109 } 110 } 65 111 #endregion 66 #region Dialog with surrou dings112 #region Dialog with surroundings 67 113 public override ISymbolicExpressionTree NewModelForMutation(IRandom random, out int treeNumber, int parentTreeNumber) { 68 114 treeNumber = Map[parentTreeNumber].SampleRandom(random);
Note: See TracChangeset
for help on using the changeset viewer.