Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/06/19 14:20:06 (5 years ago)
Author:
msemenki
Message:

#2988: New version of class structure.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2988_ModelsOfModels2/HeuristicLab.Algorithms.EMM/EMMBaseAlgorithm.cs

    r16760 r16899  
    2626using HeuristicLab.Core;
    2727using HeuristicLab.Data;
     28using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    2829using HeuristicLab.Optimization;
    2930using HeuristicLab.Parameters;
     
    5556    [Storable]
    5657    protected ExecutionState previousExecutionState;
     58
     59    [Storable]
     60    protected ExecutionState currentExecutionState;
    5761    #endregion
    5862
     
    7276    private const string InputFileParameterName = "InputFile";
    7377    private const string ClusterNumbersParameterName = "ClusterNumbers";
     78    private const string ClusterNumbersShowParameterName = "ClusterNumbersShow";
    7479    private const string AlgorithmImplementationTypeParameterName = "AlgorithmImplemetationType";
    75     private const string MapCreationTypeParameterName = "MapCreationType";
     80    private const string MapParameterName = "Map";
    7681    private const string NegbourTypeParameterName = "NegbourType";
    7782    private const string NegbourNumberParameterName = "NegbourNumber";
     
    8590      get { return (IValueParameter<IntValue>)Parameters[ClusterNumbersParameterName]; }
    8691    }
    87     public IFixedValueParameter<StringValue> AlgorithmImplementationTypeParameter {
    88       get { return (IFixedValueParameter<StringValue>)Parameters[AlgorithmImplementationTypeParameterName]; }
    89     }
    90     public IFixedValueParameter<StringValue> MapCreationTypeParameter {
    91       get { return (IFixedValueParameter<StringValue>)Parameters[MapCreationTypeParameterName]; }
     92    public IValueParameter<IntValue> ClusterNumbersShowParameter {
     93      get { return (IValueParameter<IntValue>)Parameters[ClusterNumbersShowParameterName]; }
     94    }
     95    public IConstrainedValueParameter<StringValue> AlgorithmImplementationTypeParameter {
     96      get { return (IConstrainedValueParameter<StringValue>)Parameters[AlgorithmImplementationTypeParameterName]; }
     97    }
     98    public IConstrainedValueParameter<EMMMapBase<ISymbolicExpressionTree>> MapParameter {
     99      get { return (IConstrainedValueParameter<EMMMapBase<ISymbolicExpressionTree>>)Parameters[MapParameterName]; }
    92100    }
    93101    public IFixedValueParameter<StringValue> NegbourTypeParameter {
     
    144152      set { ClusterNumbersParameter.Value = value; }
    145153    }
     154    public IntValue ClusterNumbersShow {
     155      get { return ClusterNumbersShowParameter.Value; }
     156      set { ClusterNumbersShowParameter.Value = value; }
     157    }
    146158    public StringValue AlgorithmImplemetationType {
    147159      get { return AlgorithmImplementationTypeParameter.Value; }
    148160      set { AlgorithmImplementationTypeParameter.Value.Value = value.Value; }
    149161    }
    150     public StringValue MapCreationType {
    151       get { return MapCreationTypeParameter.Value; }
    152       set { MapCreationTypeParameter.Value.Value = value.Value; }
     162    public EMMMapBase<ISymbolicExpressionTree> Map {
     163      get { return MapParameter.Value; }
     164      set { MapParameter.Value = value; }
    153165    }
    154166    public StringValue NegbourType {
     
    214226      Parameters.Add(new FixedValueParameter<IntValue>(SeedParameterName, "The random seed used to initialize the new pseudo random number generator.", new IntValue(0)));
    215227      Parameters.Add(new FixedValueParameter<StringValue>(InputFileParameterName, "The file with set of models that will be.", new StringValue("input.txt")));
    216       Parameters.Add(new FixedValueParameter<StringValue>(AlgorithmImplementationTypeParameterName, "The Type of possible algorith, implemetation, choose one: OnlyMapCreation, CreateMapAndGo, ReadMapAndGo.", new StringValue("CreateMapAndGo")));
    217       Parameters.Add(new FixedValueParameter<StringValue>(MapCreationTypeParameterName, "The type of map crearion algorithm. Use one from: IslandMap, FullMap.", new StringValue("IslandMap")));
     228      Parameters.Add(new ConstrainedValueParameter<StringValue>(AlgorithmImplementationTypeParameterName, "The Type of possible algorith, implemetation, choose one: OnlyMap, Full, Read."));
     229      Parameters.Add(new ConstrainedValueParameter<EMMMapBase<ISymbolicExpressionTree>>(MapParameterName, "The type of map crearion algorithm. Use one from: IslandMap, NetworkMap."));
    218230      Parameters.Add(new FixedValueParameter<IntValue>(NegbourNumberParameterName, "The parametr for FullMap type of map crearion algorithm. Use one from: 10, 20.", new IntValue(10)));
    219231      Parameters.Add(new FixedValueParameter<StringValue>(NegbourTypeParameterName, "The parametr for FullMap type of map crearion algorithm. Use one from: Percent, Number.", new StringValue("Number")));
     
    230242      Parameters.Add(new ValueParameter<IRandom>(RandomParameterName, new MersenneTwister()));
    231243      Parameters.Add(new ValueParameter<IntValue>("Elites", "The numer of elite Solutions which are kept in each generation.", new IntValue(1)));
    232       Parameters.Add(new ValueParameter<IntValue>(ClusterNumbersParameterName, "The number of clusters for model Map.", new IntValue(100)));
     244      Parameters.Add(new ValueParameter<IntValue>(ClusterNumbersParameterName, "The number of clusters for model Map.", new IntValue(10)));
     245      Parameters.Add(new ValueParameter<IntValue>(ClusterNumbersShowParameterName, "The number of clusters for model Map.", new IntValue(10)));
    233246      foreach (ISelector selector in ApplicationManager.Manager.GetInstances<ISelector>().Where(x => !(x is IMultiObjectiveSelector)).OrderBy(x => x.Name))
    234247        SelectorParameter.ValidValues.Add(selector);
     
    238251
    239252      ProblemChanged += EvolvmentModelsOfModelsAlgorithmBase_ProblemChanged;
    240 
     253      MapParameterUpdate();
    241254    }
    242255
     
    245258        Problem.SymbolicExpressionTreeInterpreter = new SymbolicDataAnalysisExpressionTreeBatchInterpreter();
    246259        //Problem.SymbolicExpressionTreeGrammar = new EMMGrammar();
     260      }
     261    }
     262    protected void MapParameterUpdate() {
     263      int neghboorNumber = 10;
     264
     265      switch (NegbourType.Value) {
     266        case "Percent": neghboorNumber = Convert.ToInt32((Convert.ToDouble(ClusterNumbersParameter.Value.Value)) * (Convert.ToDouble(NegbourNumber.Value)) / 100.0); break;
     267        case "Number": neghboorNumber = NegbourNumber.Value; break;
     268        default: neghboorNumber = NegbourNumber.Value; break;
     269      }
     270      var mapTypes = new EMMMapBase<ISymbolicExpressionTree>[]
     271      {
     272        new EMMIslandMap(),
     273        new EMMNetworkMap(neghboorNumber)
     274      };
     275      foreach (var t in mapTypes) {
     276        MapParameter.ValidValues.Add(t);
     277      }
     278      var algorithmType = new StringValue[]
     279        {
     280          new StringValue("Full"),
     281          new StringValue("Read"),
     282          new StringValue ("OnlyMap")
     283        };
     284      foreach (var t in algorithmType) {
     285        AlgorithmImplementationTypeParameter.ValidValues.Add(t);
    247286      }
    248287    }
     
    410449
    411450    protected override void OnExecutionStateChanged() {
    412       previousExecutionState = ExecutionState;
     451      previousExecutionState = currentExecutionState;
     452      currentExecutionState = ExecutionState;
    413453      base.OnExecutionStateChanged();
    414454    }
Note: See TracChangeset for help on using the changeset viewer.