Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/11/19 16:30:22 (5 years ago)
Author:
msemenki
Message:

#2988:

  1. The file system was changed, folders was added and part of files was transferred in these folders.
  2. HelpFunctions class was divided on 2 parts: HelpFuctions for common purposes static functions and SelfConfiguration that include functions for self-configuration mechanism realization (is used in EMMSucsessMap).
  3. Parts of self-configuration mechanism was transferred from EMMSucsessMap.cs to SelfConfiguration.cs. Now EMMSucsessMap used SelfConfiguration like one of data member. Other parts of project was adopted for this changing.
  4. FileComunication class was added. It include the majority of functions for printing to files or reading from files. Here were realized possibility to write and read to hl files.
  5. ModelTreeNode.cs has additional possibility - to write sub-model in string (then it is possible to write it in file).
  6. InfixExpressionFormatter.cs can work with TreeModelNode.
  7. Possibility for different map types to be readable from files was extended and cheeked.
  8. Such parameters like - ClusterNumbers, ClusterNumbersShow, NegbourNumber, NegbourType (that is used only in several maps) was transferred from EMMAlgorithm to Map Parameters. Now EMMBaseMap class inherited from ParameterizedNamedItem (not from Item). And EMMIslandMap and EMMNetworkMap contains their parameters (constructors was modified). CreationMap calls functions were simplified.
  9. Functions for different distance metric calculation was added. Now, it is possible to calculate different types of distances between models (with different random values of constants).
  10. DistanceParametr was added. Now maps can be created according different types of distance calculations.
  11. The class EMMClustering has new name KMeansClusterizationAlgorithm. On KMeansClusterizationAlgorithm bug with bloating of centroids list was fixed. Algorithm was adopted for working with different type of distance metric and get maximum number of iterations.
  12. Possibilities for constants optimization in sub-models an whole tree was added. EMMAlgorithm get new function for evaluation of individuals (and some additional technical stuff for that). Function for trees with model in usual tree transformation and back was added.
  13. EMMAlgorithm was divided on 2 parts:
  • EMMAlgorithm, that contain evolutionary algorithm working with sub-models, and use ready to use maps;
  • ModelSetPreparation, that contain distance calculation, model set simplification and map creation.
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  
    2323using HeuristicLab.Core;
    2424using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    25 using HeuristicLab.Problems.DataAnalysis.Symbolic;
    2625using System.Collections.Generic;
    27 using System.Linq;
    2826
    2927namespace HeuristicLab.Algorithms.EvolvmentModelsOfModels {
     
    3230  public class EMMSucsessMap : EMMMapBase<ISymbolicExpressionTree> {
    3331    [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
    3834    [StorableConstructor]
    3935    protected EMMSucsessMap(StorableConstructorFlag _) : base(_) { }
     
    4339    public EMMSucsessMap() : base() {
    4440      ModelSet = new List<ISymbolicExpressionTree>();
    45       SucsessStatistics = new List<List<double>>();
     41      SelfConfigurationMechanism = new SelfConfiguration();
    4642    }
    4743    public EMMSucsessMap(EMMSucsessMap original, Cloner cloner) : base(original, cloner) {
    48       SucsessStatistics = original.SucsessStatistics.Select(x => x.ToList()).ToList();
     44      SelfConfigurationMechanism = new SelfConfiguration(original.SelfConfigurationMechanism, cloner);
    4945    }
    5046    #endregion
    51     #region MapCreation
    52     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      }
    5652      Map.Add(new List<int>());
    5753      MapSizeCheck(ModelSet.Count);
    58       ApplySucsessMapCreationAlgorithm(random, CalculateDistances(), Map, Probabilities, SucsessStatistics);
     54      ApplySucsessMapCreationAlgorithm(random, ModelSet.Count);
    5955    }
    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) {
    6271      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);
    6573      }
     74      SelfConfigurationMechanism.Initialization(mapSize);
    6675    }
    6776    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);
    8878    }
    8979    #endregion
    90     #region MapApplayFunctions
     80    #region Map Apply Functions
    9181    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];
    9383      return (ISymbolicExpressionTree)ModelSet[treeNumber].Clone();
    9484    }
Note: See TracChangeset for help on using the changeset viewer.