- 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/EMMRankMap.cs
r17133 r17134 24 24 using HeuristicLab.Core; 25 25 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 26 using HeuristicLab.Problems.DataAnalysis.Symbolic; 26 27 using System; 27 28 using System.Collections.Generic; 29 using System.Linq; 28 30 29 31 namespace HeuristicLab.Algorithms.EvolvmentModelsOfModels { 30 32 [Item("RankMap", "A map of models of models of models")] 31 33 [StorableType("1D4DD90E-553A-46DB-B0CD-6A899AA0B6D0")] 32 public class EMMRankMap : EMMMapBase<ISymbolicExpressionTree> { 34 public class EMMRankMap : EMMMapBase<ISymbolicExpressionTree> { // it do not work absolutely 33 35 [Storable] 34 36 public List<List<double>> Probabilities { get; set; } 35 #region con ctructors37 #region constructors 36 38 [StorableConstructor] 37 39 protected EMMRankMap(StorableConstructorFlag _) : base(_) { } … … 39 41 return new EMMRankMap(this, cloner); 40 42 } 41 public EMMRankMap() : base() { ModelSet = new List<ISymbolicExpressionTree>(); } 42 public EMMRankMap(EMMRankMap original, Cloner cloner) : base(original, cloner) { } 43 public EMMRankMap() : base() { 44 ModelSet = new List<ISymbolicExpressionTree>(); 45 Probabilities = new List<List<double>>(); 46 } 47 public EMMRankMap(EMMRankMap original, Cloner cloner) : base(original, cloner) { 48 if (original.Probabilities != null) { 49 Probabilities = original.Probabilities.Select(x => x.ToList()).ToList(); 50 } 51 } 43 52 #endregion 44 53 #region MapCreation 45 override public void CreateMap(IRandom random, int k) { 46 47 Probabilities = new List<List<double>>(); 54 override public void CreateMap(IRandom random) { 48 55 MapSizeCheck(ModelSet.Count); 49 ApplyRankMapCreationAlgorithm( random, CalculateDistances(), Map, Probabilities);56 ApplyRankMapCreationAlgorithm(ModelSetPreparation.CalculateDistances(ModelSet), Map, Probabilities); 50 57 } 51 public static void ApplyRankMapCreationAlgorithm(IRandom random, double[,] distances, List<List<int>> map, List<List<double>> probabilities) { 58 override public void CreateMap(IRandom random, ISymbolicDataAnalysisSingleObjectiveProblem problem) { 59 MapSizeCheck(ModelSet.Count); 60 ApplyRankMapCreationAlgorithm(ModelSetPreparation.DistanceMatrixCalculation(ModelSet, DistanceParametr, problem), Map, Probabilities); 61 } 62 override public void MapRead(IEnumerable<ISymbolicExpressionTree> trees) { 63 base.MapRead(trees); 64 MapFullment(trees.Count()); 65 string fileName = ("Map" + DistanceParametr + ".txt"); 66 Probabilities = FileComuncations.DoubleMatrixFromFileRead(fileName); 67 } 68 protected void MapFullment(int mapSize) { 69 if (Map != null) { 70 Map.Clear(); 71 } 72 for (int t = 0; t < mapSize; t++) { 73 for (int i = 0; i < mapSize; i++) { 74 if (i == t) 75 continue; 76 Map[t].Add(i); 77 } 78 } 79 } 80 override public string[] MapToStoreInFile() { // Function that prepare Map to printing in .txt File: create a set of strings for future reading by computer 81 string[] s; 82 s = new string[Map.Count]; 83 for (int i = 0; i < Map.Count; i++) { 84 s[i] = ""; 85 for (int j = 0; j < (Map.Count - 1); j++) { 86 s[i] += Probabilities[i][j].ToString(); 87 if (j != (Map.Count - 2)) { s[i] += " "; } 88 } 89 } 90 return s; 91 } 92 public static void ApplyRankMapCreationAlgorithm(double[,] distances, List<List<int>> map, List<List<double>> probabilities) { 52 93 int mapSize = distances.GetLength(0); 53 94 double tempSum = 0; … … 64 105 currentList[i].Add(distances[i, t]); 65 106 } 66 currentList.Sort((a, b) => a[1].CompareTo(b[1])); /// загадкой является то нафига оно мне вообще понадобилось in DistanceMap.. но это работающая сортировка.107 currentList.Sort((a, b) => a[1].CompareTo(b[1])); ///workable sorting 67 108 for (int i = 0; i < currentList.Count; i++) { 68 109 currentList[i].Add(currentList.Count - i); … … 79 120 } 80 121 #endregion 81 #region Map ApplayFunctions122 #region Map Apply Functions 82 123 public override ISymbolicExpressionTree NewModelForMutation(IRandom random, out int treeNumber, int parentTreeNumber) { 83 124 treeNumber = Map[parentTreeNumber][HelpFunctions.OneElementFromListProportionalSelection(random, Probabilities[parentTreeNumber])];
Note: See TracChangeset
for help on using the changeset viewer.