Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/15/13 10:47:09 (12 years ago)
Author:
sforsten
Message:

#1980:

  • added problem instance provider to import csv files for ConditionActionClassificationProblemData
  • adapted LCSAdaptedGeneticAlgorithm to use the crossover probability
  • fixed a bug in XCSModelView
Location:
branches/LearningClassifierSystems/HeuristicLab.Problems.ConditionActionClassification/3.3
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/LearningClassifierSystems/HeuristicLab.Problems.ConditionActionClassification/3.3

    • Property svn:ignore
      •  

        old new  
        11obj
        22Plugin.cs
         3*.user
  • branches/LearningClassifierSystems/HeuristicLab.Problems.ConditionActionClassification/3.3/HeuristicLab.Problems.ConditionActionClassification-3.3.csproj

    r9154 r9160  
    7878      <Private>False</Private>
    7979    </Reference>
     80    <Reference Include="HeuristicLab.Problems.Instances-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
    8081    <Reference Include="System" />
    8182    <Reference Include="System.Core" />
  • branches/LearningClassifierSystems/HeuristicLab.Problems.ConditionActionClassification/3.3/Implementation/ConditionActionClassificationProblem.cs

    r9154 r9160  
    3030using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3131using HeuristicLab.Problems.DataAnalysis;
     32using HeuristicLab.Problems.Instances;
    3233
    3334namespace HeuristicLab.Problems.ConditionActionClassification {
    3435  [StorableClass]
    35   public class ConditionActionClassificationProblem : HeuristicOptimizationProblem<XCSEvaluator, UniformRandomCombinedIntegerVectorCreator>, IConditionActionProblem {
     36  public class ConditionActionClassificationProblem : HeuristicOptimizationProblem<XCSEvaluator, UniformRandomCombinedIntegerVectorCreator>, IConditionActionProblem,
     37  IProblemInstanceConsumer<ConditionActionClassificationProblemData> {
    3638    private const string ClassifierFetcherParameterName = "ClassifierFetcher";
    3739    private const string ActionExecuterParameterName = "ActionExecuter";
     
    8789    public ConditionActionClassificationProblemData ProblemData {
    8890      get { return ProblemDataParameter.Value; }
     91      protected set {
     92        ProblemDataParameter.Value = value;
     93        if (value != null) {
     94          SetProblemDataSpecificParameters();
     95        }
     96      }
    8997    }
    9098    IParameter IConditionActionProblem.PossibleActionsConcreteClassParameter {
     
    185193      Evaluator.InitialPredictionParameter.ActualName = "InitialPrediction";
    186194
     195      coveringSolutionCreator.ChangeSymbolProbabilityParameter.ActualName = ChangeSymbolProbabilityInCoveringParameter.Name;
     196      coveringSolutionCreator.CoverClassifierParameter.ActualName = ClassifierFetcher.CurrentClassifierToMatchParameter.ActualName;
     197      coveringSolutionCreator.CreatedClassifierParameter.ActualName = "CombinedIntegerVector";
     198
     199      ClassifierFetcher.ProblemDataParameter.ActualName = ProblemDataParameter.Name;
     200
     201      ActionExecuter.CurrentClassifierToMatchParameter.ActualName = ClassifierFetcher.CurrentClassifierToMatchParameter.ActualName;
     202      ActionExecuter.NegativeRewardParameter.ActualName = NegativeRewardParameter.Name;
     203      ActionExecuter.PositiveRewardParameter.ActualName = PositiveRewardParameter.Name;
     204
     205      ActionSetSubsumptionOperator.ClassifiersParameter.ActualName = "CombinedIntegerVector";
     206
     207      SetProblemDataSpecificParameters();
     208      ThetaMinimalNumberOfActions.Value = PossibleActions.Count;
     209
     210      InitializeOperators();
     211
     212      problemData.Changed += new System.EventHandler(problemData_Changed);
     213    }
     214
     215    private void problemData_Changed(object sender, System.EventArgs e) {
     216      SetProblemDataSpecificParameters();
     217    }
     218
     219    private void SetProblemDataSpecificParameters() {
    187220      SolutionCreator.ActionPartLengthParameter.ActualName = ProblemData.ActionLengthParameter.Name;
    188221      SolutionCreator.LengthParameter.ActualName = ProblemData.LengthParameter.Name;
    189222      SolutionCreator.BoundsParameter.ActualName = ProblemData.BoundsParameter.Name;
    190223
    191       coveringSolutionCreator.ChangeSymbolProbabilityParameter.ActualName = ChangeSymbolProbabilityInCoveringParameter.Name;
    192       coveringSolutionCreator.CoverClassifierParameter.ActualName = ClassifierFetcher.CurrentClassifierToMatchParameter.ActualName;
    193       coveringSolutionCreator.CreatedClassifierParameter.ActualName = "CombinedIntegerVector";
    194 
    195       ClassifierFetcher.ProblemDataParameter.ActualName = ProblemDataParameter.Name;
    196 
    197       ActionExecuter.CurrentClassifierToMatchParameter.ActualName = ClassifierFetcher.CurrentClassifierToMatchParameter.ActualName;
    198       ActionExecuter.NegativeRewardParameter.ActualName = NegativeRewardParameter.Name;
    199       ActionExecuter.PositiveRewardParameter.ActualName = PositiveRewardParameter.Name;
    200 
    201       ActionSetSubsumptionOperator.ClassifiersParameter.ActualName = "CombinedIntegerVector";
    202 
    203       SetPossibleActions();
    204       ThetaMinimalNumberOfActions.Value = PossibleActions.Count;
    205 
    206       InitializeOperators();
    207 
    208       problemData.Changed += new System.EventHandler(problemData_Changed);
    209     }
    210 
    211     private void problemData_Changed(object sender, System.EventArgs e) {
    212224      SetPossibleActions();
    213225    }
     
    282294      return actionBounds;
    283295    }
     296
     297    public void Load(ConditionActionClassificationProblemData data) {
     298      Name = data.Name;
     299      Description = data.Description;
     300      ProblemData = data;
     301    }
    284302  }
    285303}
  • branches/LearningClassifierSystems/HeuristicLab.Problems.ConditionActionClassification/3.3/Implementation/ConditionActionClassificationProblemData.cs

    r9154 r9160  
    4040      {0,0,1,1,0,0,0},
    4141      {0,1,1,1,0,0,0},
    42       {0,0,1,0,0,0,0},
     42      {0,0,1,0,0,0,1},
    4343      {1,0,1,0,1,1,0}
    4444    };
     
    117117      Parameters.Add(new FixedValueParameter<ReadOnlyCheckedItemList<StringValue>>("ActionVariables", "", actionVariables.AsReadOnly()));
    118118      Parameters.Add(new FixedValueParameter<ReadOnlyCheckedItemList<StringValue>>("ConditionVariables", "", conditionVariables.AsReadOnly()));
    119       Parameters.Add(new FixedValueParameter<IntValue>("Length", "", new IntValue(7)));
    120       Parameters.Add(new FixedValueParameter<IntValue>("ActionLength", "", new IntValue(1)));
    121       int[,] elements = new int[,] { { 0, 3 }, { 0, 3 }, { 0, 3 }, { 0, 3 }, { 0, 3 }, { 0, 3 }, { 0, 2 } };
    122       Parameters.Add(new FixedValueParameter<IntMatrix>("Bounds", "", new IntMatrix(elements)));
     119      Parameters.Add(new FixedValueParameter<IntValue>("Length", "", new IntValue(allowedConditionVariables.Count() + allowedActionVariables.Count())));
     120      Parameters.Add(new FixedValueParameter<IntValue>("ActionLength", "", new IntValue(allowedActionVariables.Count())));
     121      Parameters.Add(new FixedValueParameter<IntMatrix>("Bounds", "", GetBoundsMatrix(dataset, allowedConditionVariables, allowedActionVariables)));
    123122
    124123      ((ValueParameter<Dataset>)DatasetParameter).ReactOnValueToStringChangedAndValueItemImageChanged = false;
     124    }
     125
     126    private IntMatrix GetBoundsMatrix(Dataset dataset, IEnumerable<string> conditionVariables, IEnumerable<string> actionVariables) {
     127      IntMatrix bounds = new IntMatrix(conditionVariables.Count() + actionVariables.Count(), 2);
     128      int index = 0;
     129      foreach (var variable in conditionVariables) {
     130        var values = dataset.GetDoubleValues(variable);
     131        bounds[index, 0] = (int)values.Min();
     132        bounds[index, 1] = (int)values.Max() + 2;
     133        index++;
     134      }
     135      foreach (var variable in actionVariables) {
     136        var values = dataset.GetDoubleValues(variable);
     137        bounds[index, 0] = (int)values.Min();
     138        bounds[index, 1] = (int)values.Max() + 1;
     139        index++;
     140      }
     141      return bounds;
    125142    }
    126143
Note: See TracChangeset for help on using the changeset viewer.