Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/08/18 16:40:07 (6 years ago)
Author:
lkammere
Message:

#2886: Make grammar more configurable in grammar enumeration.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2886_SymRegGrammarEnumeration/HeuristicLab.Algorithms.DataAnalysis.SymRegGrammarEnumeration/GrammarEnumeration/GrammarEnumerationAlgorithm.cs

    r15915 r15930  
    3535    private readonly string MaxComplexityParameterName = "Max. Complexity";
    3636    private readonly string GuiUpdateIntervalParameterName = "GUI Update Interval";
     37    private readonly string GrammarSymbolsParameterName = "Grammar Symbols";
    3738
    3839    public override bool SupportsPause { get { return false; } }
     
    8586    public ICheckedItemCollection<IGrammarEnumerationAnalyzer> Analyzers {
    8687      get { return AnalyzersParameter.Value; }
     88    }
     89
     90    public IFixedValueParameter<ReadOnlyCheckedItemCollection<EnumValue<GrammarRule>>> GrammarSymbolsParameter {
     91      get { return (IFixedValueParameter<ReadOnlyCheckedItemCollection<EnumValue<GrammarRule>>>)Parameters[GrammarSymbolsParameterName]; }
     92    }
     93
     94    public ReadOnlyCheckedItemCollection<EnumValue<GrammarRule>> GrammarSymbols {
     95      get { return GrammarSymbolsParameter.Value; }
    8796    }
    8897
     
    136145      Analyzers.SetItemCheckedState(Analyzers.First(analyzer => analyzer is RSquaredEvaluator), true);
    137146      //Analyzers.SetItemCheckedState(Analyzers.First(analyzer => analyzer is SentenceLogger), true);
     147
     148      var grammarSymbols = Enum.GetValues(typeof(GrammarRule))
     149        .Cast<GrammarRule>()
     150        .Select(v => new EnumValue<GrammarRule>(v));
     151
     152      Parameters.Add(new FixedValueParameter<ReadOnlyCheckedItemCollection<EnumValue<GrammarRule>>>(
     153        GrammarSymbolsParameterName,
     154        new ReadOnlyCheckedItemCollection<EnumValue<GrammarRule>>(new CheckedItemCollection<EnumValue<GrammarRule>>(grammarSymbols))
     155      ));
     156      foreach (EnumValue<GrammarRule> grammarSymbol in GrammarSymbols) {
     157        GrammarSymbols.SetItemCheckedState(grammarSymbol, true);
     158      }
    138159    }
    139160
    140161    public GrammarEnumerationAlgorithm(GrammarEnumerationAlgorithm original, Cloner cloner) : base(original, cloner) {
    141 
    142 
    143162    }
    144163    #endregion
     
    165184      PhraseExpansionCount = 0;
    166185
    167       Grammar = new Grammar(Problem.ProblemData.AllowedInputVariables.ToArray());
     186      Grammar = new Grammar(Problem.ProblemData.AllowedInputVariables.ToArray(), GrammarSymbols.CheckedItems.Select(v => v.Value));
    168187
    169188      OpenPhrases = new SearchDataStore(SearchDataStructure); // Select search strategy
     
    261280      SymbolString s = new SymbolString(Grammar.StartSymbol);
    262281
    263       while (Grammar.GetComplexity(s) <= MaxComplexity) {
     282      while (!s.IsSentence() && Grammar.GetComplexity(s) <= MaxComplexity) {
    264283        int expandedSymbolIndex = s.NextNonterminalIndex();
    265284        NonterminalSymbol expandedSymbol = (NonterminalSymbol)s[expandedSymbolIndex];
Note: See TracChangeset for help on using the changeset viewer.