- 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/EMMSucsessMap.cs
r17133 r17134 23 23 using HeuristicLab.Core; 24 24 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 25 using HeuristicLab.Problems.DataAnalysis.Symbolic;26 25 using System.Collections.Generic; 27 using System.Linq;28 26 29 27 namespace HeuristicLab.Algorithms.EvolvmentModelsOfModels { … … 32 30 public class EMMSucsessMap : EMMMapBase<ISymbolicExpressionTree> { 33 31 [Storable] 34 public List<double> Probabilities { get; private set; } 35 [Storable] 36 public List<List<double>> SucsessStatistics { get; private set; } 37 #region conctructors 32 public SelfConfiguration SelfConfigurationMechanism { get; private set; } 33 #region constructors 38 34 [StorableConstructor] 39 35 protected EMMSucsessMap(StorableConstructorFlag _) : base(_) { } … … 43 39 public EMMSucsessMap() : base() { 44 40 ModelSet = new List<ISymbolicExpressionTree>(); 45 S ucsessStatistics = new List<List<double>>();41 SelfConfigurationMechanism = new SelfConfiguration(); 46 42 } 47 43 public EMMSucsessMap(EMMSucsessMap original, Cloner cloner) : base(original, cloner) { 48 S ucsessStatistics = original.SucsessStatistics.Select(x => x.ToList()).ToList();44 SelfConfigurationMechanism = new SelfConfiguration(original.SelfConfigurationMechanism, cloner); 49 45 } 50 46 #endregion 51 #region Map Creation52 override public void CreateMap(IRandom random , int k) {53 54 Probabilities = new List<double>();55 Map.Clear();47 #region Map Creation 48 override public void CreateMap(IRandom random) { 49 if (Map != null) { 50 Map.Clear(); 51 } 56 52 Map.Add(new List<int>()); 57 53 MapSizeCheck(ModelSet.Count); 58 ApplySucsessMapCreationAlgorithm(random, CalculateDistances(), Map, Probabilities, SucsessStatistics);54 ApplySucsessMapCreationAlgorithm(random, ModelSet.Count); 59 55 } 60 public static void ApplySucsessMapCreationAlgorithm(IRandom random, double[,] distances, List<List<int>> map, List<double> probabilities, List<List<double>> sucsessStatistics) { 61 int mapSize = distances.GetLength(0); 56 override public void MapRead(IEnumerable<ISymbolicExpressionTree> trees) { 57 base.MapRead(trees); 58 string fileName = ("Map" + DistanceParametr + ".txt"); 59 SelfConfigurationMechanism.ReadFromFile(ModelSet.Count, fileName); 60 } 61 override public string[] MapToStoreInFile() { // Function that prepare Map to printing in .txt File: create a set of strings for future reading by computer 62 string[] s; 63 s = new string[1]; 64 for (int i = 0; i < Map.Count; i++) { 65 s[0] = ""; 66 s[0] += SelfConfigurationMechanism.Probabilities[i].ToString(); 67 } 68 return s; 69 } 70 private void ApplySucsessMapCreationAlgorithm(IRandom random, int mapSize) { 62 71 for (int t = 0; t < mapSize; t++) { 63 map[t].Add(t); 64 probabilities.Add(1.0 / ((double)(mapSize))); // uniform distribution as start point 72 Map[t].Add(t); 65 73 } 74 SelfConfigurationMechanism.Initialization(mapSize); 66 75 } 67 76 public override void MapUpDate(Dictionary<ISymbolicExpressionTree, double> population) { 68 SucsessStatisticCollection(population); 69 HelpFunctions.ProbabilitiesUpDate(SucsessStatistics, Probabilities); 70 } 71 private void SucsessStatisticCollection(Dictionary<ISymbolicExpressionTree, double> population) { 72 if (SucsessStatistics.Count != 0) 73 SucsessStatistics.Clear(); 74 for (int t = 0; t < Probabilities.Count; t++) { 75 SucsessStatistics.Add(new List<double>()); 76 SucsessStatistics[t].Add(0); 77 SucsessStatistics[t].Add(0); 78 } 79 foreach (var solution in population) { 80 TreeCheck(solution.Key, solution.Value); 81 } 82 } 83 private void TreeCheck(ISymbolicExpressionTree tree, double treeQuality) { 84 foreach (var treeNode in tree.IterateNodesPrefix().OfType<TreeModelTreeNode>()) { 85 SucsessStatistics[treeNode.TreeNumber][0] += 1; 86 SucsessStatistics[treeNode.TreeNumber][1] += treeQuality; 87 } 77 SelfConfigurationMechanism.UpDate(population); 88 78 } 89 79 #endregion 90 #region Map ApplayFunctions80 #region Map Apply Functions 91 81 public override ISymbolicExpressionTree NewModelForMutation(IRandom random, out int treeNumber, int parentTreeNumber) { 92 treeNumber = Map[ HelpFunctions.OneElementFromListProportionalSelection(random, Probabilities)][0];82 treeNumber = Map[SelfConfigurationMechanism.Aplay(random)][0]; 93 83 return (ISymbolicExpressionTree)ModelSet[treeNumber].Clone(); 94 84 }
Note: See TracChangeset
for help on using the changeset viewer.