Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/10/13 15:15:13 (11 years ago)
Author:
sforsten
Message:

#1980:

  • added DecisionListView
  • added event handlers in *ProblemData
  • renamed project Problems.XCS.Views to Problems.lCS.Views and Problems.Instances.ConditionActionClassification to Problems.Instances.LCS
  • integrated niching in GAssist and added NichingTournamentSelector
  • minor code improvements and property changes
Location:
branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Action
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Action/IAction.cs

    r9334 r9352  
    2222using System.Collections.Generic;
    2323using HeuristicLab.Core;
     24using HeuristicLab.Optimization.Operators.LCS;
    2425
    2526namespace HeuristicLab.Encodings.DecisionList {
    26   public interface IAction : IItem {
     27  public interface IAction : IGAssistNiche {
    2728    string VariableName { get; }
    2829
    2930    int Possibilities { get; }
    3031    void Randomize(IRandom random);
     32    void Randomize(IRandom random, IEnumerable<IAction> except);
    3133
    3234    bool Match(IAction action);
  • branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Action/IntAction.cs

    r9334 r9352  
    2525using HeuristicLab.Common;
    2626using HeuristicLab.Core;
     27using HeuristicLab.Optimization.Operators.LCS;
    2728using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2829
     
    3132  [Item("IntAction", "")]
    3233  public class IntAction : Item, IAction<int> {
     34
     35    public static IEqualityComparer<IGAssistNiche> Comparer {
     36      get { return new DecisionListNicheComparer(); }
     37    }
     38    IEqualityComparer<IGAssistNiche> IGAssistNiche.Comparer {
     39      get { return Comparer; }
     40    }
    3341
    3442    [Storable]
     
    8896    }
    8997
     98    public void Randomize(IRandom random, IEnumerable<IAction> except) {
     99      if (except.Count() == 0) {
     100        Randomize(random);
     101        return;
     102      }
     103      try {
     104        var exceptInt = except.Cast<IntAction>().Select(x => x.currentAction);
     105        var newPossibleFeatures = possibleFeatures.Except(exceptInt);
     106        currentAction = newPossibleFeatures.ElementAt(random.Next(0, newPossibleFeatures.Count()));
     107      }
     108      catch (InvalidCastException) {
     109        throw new InvalidCastException("Actions have to be of type IntAction");
     110      }
     111    }
     112
    90113    public bool Match(IAction action) {
    91114      var targetCast = action as IntAction;
     
    103126
    104127    public override string ToString() {
    105       return currentAction.ToString();
     128      return variableName + ": " + currentAction.ToString();
     129    }
     130
     131    public bool SameNiche(IGAssistNiche niche) {
     132      return Match(niche as IAction);
     133    }
     134
     135    public int GetNicheHashCode() {
     136      int result = 1;
     137      result = 37 * result + currentAction;
     138      result = 37 * result + variableName.GetHashCode();
     139      foreach (var feature in possibleFeatures) {
     140        result = 37 * result + feature;
     141      }
     142      return result;
    106143    }
    107144  }
  • branches/LearningClassifierSystems/HeuristicLab.Encodings.DecisionList/3.3/Action/StringAction.cs

    r9334 r9352  
    2525using HeuristicLab.Common;
    2626using HeuristicLab.Core;
     27using HeuristicLab.Optimization.Operators.LCS;
    2728using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2829
     
    3132  [Item("StringAction", "")]
    3233  public class StringAction : Item, IAction<string> {
     34
     35    public static IEqualityComparer<IGAssistNiche> Comparer {
     36      get { return new DecisionListNicheComparer(); }
     37    }
     38
     39    IEqualityComparer<IGAssistNiche> IGAssistNiche.Comparer {
     40      get { return Comparer; }
     41    }
    3342
    3443    [Storable]
     
    92101    }
    93102
     103    public void Randomize(IRandom random, IEnumerable<IAction> except) {
     104      if (except.Count() == 0) {
     105        Randomize(random);
     106        return;
     107      }
     108      try {
     109        var exceptInt = except.Cast<StringAction>().Select(x => x.CurrentActionIndex);
     110        var newPossibleFeatures = Enumerable.Range(0, possibleFeatures.Count()).Except(exceptInt);
     111        currentActionIndex = newPossibleFeatures.ElementAt(random.Next(0, newPossibleFeatures.Count()));
     112      }
     113      catch (InvalidCastException) {
     114        throw new InvalidCastException("Actions have to be of type IntAction");
     115      }
     116    }
     117
    94118    public bool Match(IAction action) {
    95119      var targetCast = action as StringAction;
     
    107131
    108132    public override string ToString() {
    109       return CurrentAction;
     133      return variableName + ": " + CurrentAction;
     134    }
     135
     136    public bool SameNiche(IGAssistNiche niche) {
     137      return Match(niche as IAction);
     138    }
     139
     140    public int GetNicheHashCode() {
     141      int result = 1;
     142      result = 37 * result + currentActionIndex;
     143      result = 37 * result + variableName.GetHashCode();
     144      foreach (var feature in possibleFeatures) {
     145        result = 37 * result + feature.GetHashCode();
     146      }
     147      return result;
    110148    }
    111149  }
Note: See TracChangeset for help on using the changeset viewer.