Changeset 9089 for branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems
- Timestamp:
- 12/27/12 19:14:51 (12 years ago)
- Location:
- branches/LearningClassifierSystems
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/LearningClassifierSystems
-
Property
svn:ignore
set to
*.suo
-
Property
svn:ignore
set to
-
branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3
-
Property
svn:ignore
set to
*.user
Plugin.cs
-
Property
svn:ignore
set to
-
branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/HeuristicLab.Algorithms.LearningClassifierSystems-3.3.csproj
r8941 r9089 96 96 </ItemGroup> 97 97 <ItemGroup> 98 <Compile Include="ActionSelection\ActionSelector.cs" /> 99 <Compile Include="ActionSelection\MaxValueActionSelector.cs" /> 100 <Compile Include="ActionSelection\RandomActionSelector.cs" /> 98 <Compile Include="LCSAdaptedGeneticAlgorithm.cs" /> 101 99 <Compile Include="LearningClassifierSystem.cs" /> 102 100 <Compile Include="LearningClassifierSystemMainLoop.cs" /> 103 101 <Compile Include="Properties\AssemblyInfo.cs" /> 104 102 <Compile Include="Plugin.cs" /> 105 <Compile Include="Selectors\IMatchSelector.cs" />106 <Compile Include="Selectors\MatchSelector.cs" />107 103 <None Include="Properties\AssemblyInfo.cs.frame" /> 108 104 </ItemGroup> … … 115 111 <Project>{CE7163C5-BFFE-45F0-9BD0-E10EF24E8BD2}</Project> 116 112 <Name>HeuristicLab.Encodings.CombinedIntegerVectorEncoding-3.3</Name> 113 </ProjectReference> 114 <ProjectReference Include="..\..\HeuristicLab.Encodings.ConditionActionEncoding\3.3\HeuristicLab.Encodings.ConditionActionEncoding-3.3.csproj"> 115 <Project>{422FB262-0845-4969-8D16-12F057AA90B1}</Project> 116 <Name>HeuristicLab.Encodings.ConditionActionEncoding-3.3</Name> 117 </ProjectReference> 118 <ProjectReference Include="..\..\HeuristicLab.Problems.ConditionActionClassification\3.3\HeuristicLab.Problems.ConditionActionClassification-3.3.csproj"> 119 <Project>{EA51D441-F6A3-41E1-9993-A2488E93C222}</Project> 120 <Name>HeuristicLab.Problems.ConditionActionClassification-3.3</Name> 117 121 </ProjectReference> 118 122 </ItemGroup> -
branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LearningClassifierSystem.cs
r8941 r9089 24 24 using HeuristicLab.Core; 25 25 using HeuristicLab.Data; 26 using HeuristicLab.Encodings.CombinedIntegerVectorEncoding; 27 using HeuristicLab.Operators; 26 using HeuristicLab.Encodings.ConditionActionEncoding; 28 27 using HeuristicLab.Optimization; 29 using HeuristicLab.Optimization.Operators;30 28 using HeuristicLab.Parameters; 31 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 39 37 [Creatable("Algorithms")] 40 38 [StorableClass] 41 public class LearningClassifierSystem : HeuristicOptimizationEngineAlgorithm, IStorableContent {39 public sealed class LearningClassifierSystem : HeuristicOptimizationEngineAlgorithm, IStorableContent { 42 40 public string Filename { get; set; } 43 41 44 42 #region Problem Properties 45 43 public override Type ProblemType { 46 get { return typeof(I SingleObjectiveHeuristicOptimizationProblem); }47 } 48 public new I SingleObjectiveHeuristicOptimizationProblem Problem {49 get { return (I SingleObjectiveHeuristicOptimizationProblem)base.Problem; }44 get { return typeof(IConditionActionProblem); } 45 } 46 public new IConditionActionProblem Problem { 47 get { return (IConditionActionProblem)base.Problem; } 50 48 set { base.Problem = value; } 51 49 } … … 59 57 get { return (ValueParameter<BoolValue>)Parameters["SetSeedRandomly"]; } 60 58 } 59 private ValueParameter<BoolValue> CreateInitialPopulationParameter { 60 get { return (ValueParameter<BoolValue>)Parameters["CreateInitialPopulation"]; } 61 } 61 62 private ValueParameter<IntValue> PopulationSizeParameter { 62 get { return (ValueParameter<IntValue>)Parameters["PopulationSize"]; } 63 } 64 //for test purpose 65 public ValueParameter<ICombinedIntegerVectorCreator> SolutionCreatorParameter { 66 get { return (ValueParameter<ICombinedIntegerVectorCreator>)Parameters["SolutionCreator"]; } 67 } 68 public ValueParameter<IntValue> Length { 69 get { return (ValueParameter<IntValue>)Parameters["Length"]; } 70 } 71 public ValueParameter<IntValue> ActionPartLength { 72 get { return (ValueParameter<IntValue>)Parameters["ActionPartLength"]; } 73 } 74 public ValueParameter<IntMatrix> Bounds { 75 get { return (ValueParameter<IntMatrix>)Parameters["Bounds"]; } 63 get { return (ValueParameter<IntValue>)Parameters["N"]; } 64 } 65 private ValueParameter<PercentValue> BetaParameter { 66 get { return (ValueParameter<PercentValue>)Parameters["Beta"]; } 67 } 68 private ValueParameter<PercentValue> AlphaParameter { 69 get { return (ValueParameter<PercentValue>)Parameters["Alpha"]; } 70 } 71 private ValueParameter<DoubleValue> ErrorZeroParameter { 72 get { return (ValueParameter<DoubleValue>)Parameters["ErrorZero"]; } 73 } 74 private ValueParameter<DoubleValue> PowerParameter { 75 get { return (ValueParameter<DoubleValue>)Parameters["v"]; } 76 } 77 private ValueParameter<PercentValue> GammaParameter { 78 get { return (ValueParameter<PercentValue>)Parameters["Gamma"]; } 79 } 80 private ValueParameter<PercentValue> CrossoverProbabilityParameter { 81 get { return (ValueParameter<PercentValue>)Parameters["CrossoverProbability"]; } 82 } 83 private ValueParameter<PercentValue> MutationProbabilityParameter { 84 get { return (ValueParameter<PercentValue>)Parameters["MutationProbability"]; } 85 } 86 private ValueParameter<IntValue> ThetaGAParameter { 87 get { return (ValueParameter<IntValue>)Parameters["ThetaGA"]; } 88 } 89 private ValueParameter<IntValue> ThetaDeletionParameter { 90 get { return (ValueParameter<IntValue>)Parameters["ThetaDeletion"]; } 91 } 92 private ValueParameter<IntValue> ThetaSubsumptionParameter { 93 get { return (ValueParameter<IntValue>)Parameters["ThetaSubsumption"]; } 94 } 95 private ValueParameter<PercentValue> DeltaParameter { 96 get { return (ValueParameter<PercentValue>)Parameters["Delta"]; } 97 } 98 private ValueParameter<PercentValue> ExplorationProbabilityParameter { 99 get { return (ValueParameter<PercentValue>)Parameters["ExplorationProbability"]; } 100 } 101 private ValueParameter<BoolValue> DoGASubsumptionParameter { 102 get { return (ValueParameter<BoolValue>)Parameters["DoGASubsumption"]; } 103 } 104 private ValueParameter<BoolValue> DoActionSetSubsumptionParameter { 105 get { return (ValueParameter<BoolValue>)Parameters["DoActionSetSubsumption"]; } 76 106 } 77 107 #endregion … … 86 116 set { SetSeedRandomlyParameter.Value = value; } 87 117 } 118 public BoolValue CreateInitialPopulation { 119 get { return CreateInitialPopulationParameter.Value; } 120 set { CreateInitialPopulationParameter.Value = value; } 121 } 88 122 public IntValue PopulationSize { 89 123 get { return PopulationSizeParameter.Value; } 90 124 set { PopulationSizeParameter.Value = value; } 91 125 } 92 126 public PercentValue Beta { 127 get { return BetaParameter.Value; } 128 set { BetaParameter.Value = value; } 129 } 130 public PercentValue Alpha { 131 get { return AlphaParameter.Value; } 132 set { AlphaParameter.Value = value; } 133 } 134 public DoubleValue ErrorZero { 135 get { return ErrorZeroParameter.Value; } 136 set { ErrorZeroParameter.Value = value; } 137 } 138 public DoubleValue Power { 139 get { return PowerParameter.Value; } 140 set { PowerParameter.Value = value; } 141 } 142 public PercentValue Gamma { 143 get { return GammaParameter.Value; } 144 set { GammaParameter.Value = value; } 145 } 146 public PercentValue CrossoverProbability { 147 get { return CrossoverProbabilityParameter.Value; } 148 set { CrossoverProbabilityParameter.Value = value; } 149 } 150 public PercentValue MutationProbability { 151 get { return MutationProbabilityParameter.Value; } 152 set { MutationProbabilityParameter.Value = value; } 153 } 154 public IntValue ThetaGA { 155 get { return ThetaGAParameter.Value; } 156 set { ThetaGAParameter.Value = value; } 157 } 158 public IntValue ThetaDeletion { 159 get { return ThetaDeletionParameter.Value; } 160 set { ThetaDeletionParameter.Value = value; } 161 } 162 public IntValue ThetaSubsumption { 163 get { return ThetaSubsumptionParameter.Value; } 164 set { ThetaSubsumptionParameter.Value = value; } 165 } 166 public PercentValue Delta { 167 get { return DeltaParameter.Value; } 168 set { DeltaParameter.Value = value; } 169 } 170 public PercentValue ExplorationProbability { 171 get { return ExplorationProbabilityParameter.Value; } 172 set { ExplorationProbabilityParameter.Value = value; } 173 } 174 public BoolValue DoGASubsumption { 175 get { return DoGASubsumptionParameter.Value; } 176 set { DoGASubsumptionParameter.Value = value; } 177 } 178 public BoolValue DoActionSetSubsumption { 179 get { return DoActionSetSubsumptionParameter.Value; } 180 set { DoActionSetSubsumptionParameter.Value = value; } 181 } 182 private RandomCreator RandomCreator { 183 get { return (RandomCreator)OperatorGraph.InitialOperator; } 184 } 185 public LearningClassifierSystemMainLoop MainLoop { 186 get { return (LearningClassifierSystemMainLoop)RandomCreator.Successor; } 187 } 93 188 #endregion 94 189 … … 98 193 Parameters.Add(new ValueParameter<IntValue>("Seed", "The random seed used to initialize the new pseudo random number generator.", new IntValue(0))); 99 194 Parameters.Add(new ValueParameter<BoolValue>("SetSeedRandomly", "True if the random seed should be set to a random value, otherwise false.", new BoolValue(true))); 100 Parameters.Add(new ValueParameter<IntValue>("PopulationSize", "The size of the population of solutions.", new IntValue(100))); 101 //for test purpose 102 Parameters.Add(new ValueParameter<ICombinedIntegerVectorCreator>("SolutionCreator", "The operator to create a solution.", new UniformRandomCombinedIntegerVectorCreator())); 103 Parameters.Add(new ValueParameter<IntValue>("Length", "The operator to create a solution.", new IntValue(3))); 104 Parameters.Add(new ValueParameter<IntValue>("ActionPartLength", "The operator to create a solution.", new IntValue(1))); 105 int[,] elements = new int[,] { { 0, 3 }, { 0, 3 }, { 0, 2 } }; 106 Parameters.Add(new ValueParameter<IntMatrix>("Bounds", "The operator to create a solution.", new IntMatrix(elements))); 195 Parameters.Add(new ValueParameter<BoolValue>("CreateInitialPopulation", "Specifies if a population should be created at the beginning of the algorithm.", new BoolValue(false))); 196 Parameters.Add(new ValueParameter<IntValue>("N", "Max size of the population of solutions.", new IntValue(100))); 197 Parameters.Add(new ValueParameter<PercentValue>("Beta", "Learning rate", new PercentValue(0.1))); 198 Parameters.Add(new ValueParameter<PercentValue>("Alpha", "", new PercentValue(0.1))); 199 Parameters.Add(new ValueParameter<DoubleValue>("ErrorZero", "The error below which classifiers are considered to have equal accuracy", new DoubleValue(10))); 200 Parameters.Add(new ValueParameter<DoubleValue>("v", "Power parameter", new DoubleValue(5))); 201 Parameters.Add(new ValueParameter<PercentValue>("Gamma", "Discount factor", new PercentValue(0.71))); 202 Parameters.Add(new ValueParameter<PercentValue>("CrossoverProbability", "Probability of crossover", new PercentValue(0.9))); 203 Parameters.Add(new ValueParameter<PercentValue>("MutationProbability", "Probability of mutation", new PercentValue(0.05))); 204 Parameters.Add(new ValueParameter<IntValue>("ThetaGA", "GA threshold. GA is applied in a set when the average time since the last GA is greater than ThetaGA.", new IntValue(25))); 205 Parameters.Add(new ValueParameter<IntValue>("ThetaDeletion", "Deletion threshold. If the experience of a classifier is greater than ThetaDeletion, its fitness may be considered in its probability of deletion.", new IntValue(20))); 206 Parameters.Add(new ValueParameter<IntValue>("ThetaSubsumption", "Subsumption threshold. The experience of a classifier must be greater than TheatSubsumption to be able to subsume another classifier.", new IntValue(20))); 207 Parameters.Add(new ValueParameter<PercentValue>("Delta", "Delta specifies the fraction of mean fitness in [P] below which the fitness of a classifier may be considered in its probability of deletion", new PercentValue(0.1))); 208 Parameters.Add(new ValueParameter<PercentValue>("ExplorationProbability", "Probability of selecting the action uniform randomly", new PercentValue(0.5))); 209 Parameters.Add(new ValueParameter<BoolValue>("DoGASubsumption", "Specifies if offsprings are tested for possible logical subsumption by parents.", new BoolValue(true))); 210 Parameters.Add(new ValueParameter<BoolValue>("DoActionSetSubsumption", "Specifies if action set is tested for subsuming classifiers.", new BoolValue(true))); 107 211 #endregion 108 212 109 213 #region Create operators 110 214 RandomCreator randomCreator = new RandomCreator(); 111 SolutionsCreator solutionsCreator = new SolutionsCreator(); 112 UniformSubScopesProcessor uniformSubScopeProcessor = new UniformSubScopesProcessor(); 113 UniformRandomizer uniformRandomizer = new UniformRandomizer(); 215 114 216 //ResultsCollector resultsCollector = new ResultsCollector(); 115 217 LearningClassifierSystemMainLoop mainLoop = new LearningClassifierSystemMainLoop(); … … 120 222 randomCreator.SetSeedRandomlyParameter.ActualName = SetSeedRandomlyParameter.Name; 121 223 randomCreator.SetSeedRandomlyParameter.Value = null; 122 123 SolutionCreatorParameter.Value.ActionPartLengthParameter.ActualName = ActionPartLength.Name;124 SolutionCreatorParameter.Value.LengthParameter.ActualName = Length.Name;125 SolutionCreatorParameter.Value.BoundsParameter.ActualName = Bounds.Name;126 127 solutionsCreator.NumberOfSolutionsParameter.ActualName = PopulationSizeParameter.Name;128 solutionsCreator.SolutionCreatorParameter.ActualName = SolutionCreatorParameter.Name;129 130 uniformSubScopeProcessor.Parallel = new BoolValue(true);131 132 uniformRandomizer.RandomParameter.ActualName = randomCreator.RandomParameter.ActualName;133 uniformRandomizer.MinParameter.Value = new DoubleValue(0);134 uniformRandomizer.MaxParameter.Value = new DoubleValue(100);135 uniformRandomizer.ValueParameter.ActualName = "Fitness";136 137 224 #endregion 138 225 139 226 #region Create operator graph 140 227 OperatorGraph.InitialOperator = randomCreator; 141 randomCreator.Successor = solutionsCreator; 142 solutionsCreator.Successor = uniformSubScopeProcessor; 143 uniformSubScopeProcessor.Operator = uniformRandomizer; 144 uniformSubScopeProcessor.Successor = mainLoop; 228 randomCreator.Successor = mainLoop; 145 229 #endregion 146 230 } 147 pr otectedLearningClassifierSystem(LearningClassifierSystem original, Cloner cloner)231 private LearningClassifierSystem(LearningClassifierSystem original, Cloner cloner) 148 232 : base(original, cloner) { 149 233 } … … 153 237 [StorableConstructor] 154 238 private LearningClassifierSystem(bool deserializing) : base(deserializing) { } 239 240 protected override void OnProblemChanged() { 241 if (Problem != null) { 242 ParameterizeEvaluator(Problem.Evaluator); 243 MainLoop.SetCurrentProblem(Problem); 244 } 245 base.OnProblemChanged(); 246 } 247 protected override void Problem_EvaluatorChanged(object sender, EventArgs e) { 248 ParameterizeEvaluator(Problem.Evaluator); 249 MainLoop.SetCurrentProblem(Problem); 250 base.Problem_EvaluatorChanged(sender, e); 251 } 252 protected override void Problem_SolutionCreatorChanged(object sender, EventArgs e) { 253 MainLoop.SetCurrentProblem(Problem); 254 base.Problem_SolutionCreatorChanged(sender, e); 255 } 256 257 private void ParameterizeEvaluator(IXCSEvaluator evaluator) { 258 evaluator.ActualTimeParameter.ActualName = "Iteration"; 259 evaluator.BetaParameter.ActualName = BetaParameter.Name; 260 evaluator.AlphaParameter.ActualName = AlphaParameter.Name; 261 evaluator.PowerParameter.ActualName = PowerParameter.Name; 262 evaluator.ErrorZeroParameter.ActualName = ErrorZeroParameter.Name; 263 } 155 264 } 156 265 } -
branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/LearningClassifierSystemMainLoop.cs
r8941 r9089 20 20 #endregion 21 21 22 using HeuristicLab.Algorithms.GeneticAlgorithm;23 22 using HeuristicLab.Common; 24 23 using HeuristicLab.Core; 25 24 using HeuristicLab.Data; 26 using HeuristicLab.Encodings.Co mbinedIntegerVectorEncoding;25 using HeuristicLab.Encodings.ConditionActionEncoding; 27 26 using HeuristicLab.Encodings.IntegerVectorEncoding; 28 27 using HeuristicLab.Operators; … … 31 30 using HeuristicLab.Parameters; 32 31 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 33 using HeuristicLab.Random;34 32 using HeuristicLab.Selection; 35 33 … … 40 38 [Item("LearningClassifierSystemMainLoop", "An operator which represents the main loop of a learning classifier system.")] 41 39 [StorableClass] 42 public class LearningClassifierSystemMainLoop : AlgorithmOperator {40 public sealed class LearningClassifierSystemMainLoop : AlgorithmOperator { 43 41 44 42 #region Parameter Properties … … 54 52 #endregion 55 53 56 #region Properties 57 public ISelector Selector { 58 get { return SelectorParameter.Value; } 59 set { SelectorParameter.Value = value; } 60 } 61 public ICrossover Crossover { 62 get { return CrossoverParameter.Value; } 63 set { CrossoverParameter.Value = value; } 64 } 65 public IManipulator Mutator { 66 get { return MutatorParameter.Value; } 67 set { MutatorParameter.Value = value; } 68 } 54 #region private properties 55 private SolutionsCreator initialSolutionsCreator; 56 private SolutionsCreator coveringMechanism; 57 private MatchConditionOperator matchConditionOperator; 58 private PredictionArrayCalculator predictionArrayCalculator; 59 private ActionSelector actionSelector; 60 61 private Placeholder evaluator; 62 private Placeholder actionExecuter; 63 private Placeholder classifierFetcher; 69 64 #endregion 70 65 71 66 [StorableConstructor] 72 67 private LearningClassifierSystemMainLoop(bool deserializing) : base(deserializing) { } 73 pr otectedLearningClassifierSystemMainLoop(LearningClassifierSystemMainLoop original, Cloner cloner)68 private LearningClassifierSystemMainLoop(LearningClassifierSystemMainLoop original, Cloner cloner) 74 69 : base(original, cloner) { 75 70 } … … 85 80 #region Create parameters 86 81 Parameters.Add(new ConstrainedValueParameter<ISelector>("Selector", "The operator used to select solutions for reproduction.", new ItemSet<ISelector>() { new ProportionalSelector() }, new ProportionalSelector())); 87 Parameters.Add(new ConstrainedValueParameter<ICrossover>("Crossover", "The operator used to cross solutions.", new ItemSet<ICrossover>() { new SinglePointCrossover() }, new SinglePointCrossover())); 88 Parameters.Add(new OptionalConstrainedValueParameter<IManipulator>("Mutator", "The operator used to mutate solutions.", new ItemSet<IManipulator>() { new UniformOnePositionManipulator() }, new UniformOnePositionManipulator())); 89 //for test purposes 90 int[] numbers = new int[3] { 1, 1, 1 }; 91 int[,] elements = new int[,] { { 0, 3 }, { 0, 3 }, { 0, 2 } }; 92 Parameters.Add(new ValueLookupParameter<CombinedIntegerVector>("TestTarget", "Target for test", new CombinedIntegerVector(numbers, 1, elements))); 93 82 Parameters.Add(new ConstrainedValueParameter<ICrossover>("Crossover", "The operator used to cross solutions.", new ItemSet<ICrossover>() { new HeuristicLab.Encodings.CombinedIntegerVectorEncoding.SinglePointCrossover() }, new HeuristicLab.Encodings.CombinedIntegerVectorEncoding.SinglePointCrossover())); 83 Parameters.Add(new ValueLookupParameter<IOperator>("Evaluator", "The operator used to evaluate solutions. This operator is executed in parallel, if an engine is used which supports parallelization.")); 84 UniformOnePositionManipulator test = new UniformOnePositionManipulator(); 85 test.IntegerVectorParameter.ActualName = "CombinedIntegerVector"; 86 Parameters.Add(new OptionalConstrainedValueParameter<IManipulator>("Mutator", "The operator used to mutate solutions.", new ItemSet<IManipulator>() { new UniformOnePositionManipulator() }, test)); 94 87 #endregion 95 88 96 89 #region Create operators 97 90 VariableCreator variableCreator = new VariableCreator(); 98 MatchSelector conditionMatchSelector = new MatchSelector(); 99 MatchSelector actionMatchSelector = new MatchSelector(); 91 ConditionalBranch initialPopulationConditionalBranch = new ConditionalBranch(); 92 initialSolutionsCreator = new SolutionsCreator(); 93 IntCounter iterationCounter = new IntCounter(); 94 UniformSubScopesProcessor matchCondtionSubScopesProcessor = new UniformSubScopesProcessor(); 95 matchConditionOperator = new MatchConditionOperator(); 96 predictionArrayCalculator = new PredictionArrayCalculator(); 97 actionSelector = new ActionSelector(); 98 UniformSubScopesProcessor matchActionSubScopesProcessor = new UniformSubScopesProcessor(); 99 MatchActionOperator matchActionOperator = new MatchActionOperator(); 100 ConditionalSelector conditionMatchSelector = new ConditionalSelector(); 101 ConditionalSelector actionMatchSelector = new ConditionalSelector(); 100 102 SubScopesProcessor coveringSubScopesProcessor = new SubScopesProcessor(); 101 SubScopes Remover subScopesRemover = new SubScopesRemover();103 SubScopesCounter matchsetCounter = new SubScopesCounter(); 102 104 Comparator comparator = new Comparator(); 103 ConditionalBranch co nditionalBranch = new ConditionalBranch();105 ConditionalBranch coveringConditionalBranch = new ConditionalBranch(); 104 106 MergingReducer mergingReducer = new MergingReducer(); 105 SolutionsCreator coveringMechanism = new SolutionsCreator(); 106 SubScopesProcessor actionSelectionSubScopesProcessor = new SubScopesProcessor(); 107 MaxValueActionSelector maxValueActionSelection = new MaxValueActionSelector(); 108 GeneticAlgorithmMainLoop geneticAlgorithmMainLoop = new GeneticAlgorithmMainLoop(); 109 110 UniformSubScopesProcessor uniformSubScopeProcessor = new UniformSubScopesProcessor(); 111 UniformRandomizer uniformRandomizer = new UniformRandomizer(); 107 MergingReducer mergingReducerWithSuccessor = new MergingReducer(); 108 coveringMechanism = new SolutionsCreator(); 109 evaluator = new Placeholder(); 110 SubScopesProcessor actionSetSubScopesProcessor = new SubScopesProcessor(); 111 DataReducer actionSetSizeDataReducer = new DataReducer(); 112 UniformSubScopesProcessor accuracySubScopesProcessor = new UniformSubScopesProcessor(); 113 CalculateAccuracy calculateAccuracy = new CalculateAccuracy(); 114 SumAccuracy sumAccuracy = new SumAccuracy(); 115 UniformSubScopesProcessor updateParametersSubScopesProcessor = new UniformSubScopesProcessor(); 116 LCSAdaptedGeneticAlgorithm adaptedGeneticAlgorithmMainLoop = new LCSAdaptedGeneticAlgorithm(); 117 118 classifierFetcher = new Placeholder(); 119 actionExecuter = new Placeholder(); 112 120 113 121 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("ZeroIntValue", new IntValue(0))); 114 122 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("OneIntValue", new IntValue(1))); 123 variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Iteration", new IntValue(0))); 124 125 initialPopulationConditionalBranch.ConditionParameter.ActualName = "CreateInitialPopulation"; 126 127 initialSolutionsCreator.NumberOfSolutionsParameter.ActualName = "N"; 128 129 iterationCounter.ValueParameter.ActualName = "Iteration"; 130 iterationCounter.IncrementParameter.ActualName = "OneIntValue"; 131 132 matchCondtionSubScopesProcessor.Operator = matchConditionOperator; 133 134 matchConditionOperator.MatchParameter.ActualName = "CombinedIntegerVector"; 115 135 116 136 conditionMatchSelector.CopySelected = new BoolValue(false); 117 conditionMatchSelector.MatchCondition = new BoolValue(true); 118 //this has to be set differently 119 conditionMatchSelector.MatchParameter.ActualName = "CombinedIntegerVector"; 120 conditionMatchSelector.TargetMatchParameter.ActualName = "TestTarget"; 137 conditionMatchSelector.ConditionParameter.ActualName = "MatchCondition"; 138 139 matchsetCounter.Name = "Count number of rules in match set"; 140 matchsetCounter.AccumulateParameter.Value = new BoolValue(false); 141 matchsetCounter.ValueParameter.ActualName = "MatchSetCount"; 121 142 122 143 comparator.Comparison = new Comparison(ComparisonType.LessOrEqual); 123 comparator.LeftSideParameter.ActualName = conditionMatchSelector.NumberOfSelectedSubScopesParameter.ActualName;144 comparator.LeftSideParameter.ActualName = matchsetCounter.ValueParameter.ActualName; 124 145 comparator.ResultParameter.ActualName = "Covering"; 125 146 //more than zero solutions have to be selected 126 147 comparator.RightSideParameter.ActualName = "ZeroIntValue"; 127 148 128 conditionalBranch.ConditionParameter.ActualName = "Covering"; 129 130 subScopesRemover.SubScopeIndexParameter.ActualName = "OneIntValue"; 131 subScopesRemover.RemoveAllSubScopes = false; 149 coveringConditionalBranch.Name = "Covering Branch"; 150 coveringConditionalBranch.ConditionParameter.ActualName = "Covering"; 151 152 matchActionSubScopesProcessor.Operator = matchActionOperator; 153 154 matchActionOperator.MatchParameter.ActualName = "CombinedIntegerVector"; 155 matchActionOperator.TargetMatchParameter.ActualName = actionSelector.SelectedActionParameter.ActualName; 132 156 133 157 coveringMechanism.NumberOfSolutionsParameter.ActualName = "OneIntValue"; 134 coveringMechanism.SolutionCreatorParameter.ActualName = "SolutionCreator"; 135 136 maxValueActionSelection.ValueParameter.ActualName = "Fitness"; 137 maxValueActionSelection.MatchParameter.ActualName = "CombinedIntegerVector"; 158 159 predictionArrayCalculator.MatchParameter.ActualName = "CombinedIntegerVector"; 160 161 actionSelector.PredictionArrayParameter.ActualName = predictionArrayCalculator.PredictionArrayParameter.Name; 162 actionSelector.RandomParameter.ActualName = "Random"; 163 actionSelector.ExplorationProbabilityParameter.ActualName = "ExplorationProbability"; 138 164 139 165 actionMatchSelector.CopySelected = new BoolValue(false); 140 actionMatchSelector.MatchCondition = new BoolValue(false); 141 //this has to be set differently 142 actionMatchSelector.MatchParameter.ActualName = "CombinedIntegerVector"; 143 actionMatchSelector.TargetMatchParameter.ActualName = maxValueActionSelection.SelectedActionParameter.ActualName; 166 actionMatchSelector.ConditionParameter.ActualName = "MatchAction"; 144 167 145 168 SelectorParameter.Value.CopySelected = new BoolValue(true); 146 169 SelectorParameter.Value.NumberOfSelectedSubScopesParameter.Value = new IntValue(200); 147 170 148 geneticAlgorithmMainLoop.SelectorParameter.ActualName = SelectorParameter.Name; 149 geneticAlgorithmMainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name; 150 geneticAlgorithmMainLoop.MutatorParameter.ActualName = MutatorParameter.Name; 151 geneticAlgorithmMainLoop.RandomParameter.ActualName = "Random"; 152 geneticAlgorithmMainLoop.ElitesParameter.ActualName = "OneIntValue"; 153 geneticAlgorithmMainLoop.MaximumGenerationsParameter.ActualName = "ZeroIntValue"; 154 geneticAlgorithmMainLoop.QualityParameter.ActualName = "Fitness"; 171 evaluator.Name = "Evaluator"; 172 173 classifierFetcher.Name = "ClassifierFetcher"; 174 175 actionExecuter.Name = "ActionExecuter"; 176 177 actionSetSizeDataReducer.TargetParameter.ActualName = "CurrentActionSetSize"; 178 actionSetSizeDataReducer.ParameterToReduce.ActualName = "Numerosity"; 179 actionSetSizeDataReducer.ReductionOperation.Value = new ReductionOperation(ReductionOperations.Sum); 180 actionSetSizeDataReducer.TargetOperation.Value = new ReductionOperation(ReductionOperations.Assign); 181 182 calculateAccuracy.AlphaParameter.ActualName = "Alpha"; 183 calculateAccuracy.ErrorParameter.ActualName = "Error"; 184 calculateAccuracy.ErrorZeroParameter.ActualName = "ErrorZero"; 185 calculateAccuracy.PowerParameter.ActualName = "v"; 186 187 sumAccuracy.AccuracyParameter.ActualName = calculateAccuracy.AccuracyParameter.ActualName; 188 sumAccuracy.NumerosityParameter.ActualName = "Numerosity"; 189 190 adaptedGeneticAlgorithmMainLoop.SelectorParameter.ActualName = SelectorParameter.Name; 191 adaptedGeneticAlgorithmMainLoop.CrossoverParameter.ActualName = CrossoverParameter.Name; 192 adaptedGeneticAlgorithmMainLoop.MutatorParameter.ActualName = MutatorParameter.Name; 193 adaptedGeneticAlgorithmMainLoop.RandomParameter.ActualName = "Random"; 194 adaptedGeneticAlgorithmMainLoop.MaximumGenerationsParameter.ActualName = "ZeroIntValue"; 195 adaptedGeneticAlgorithmMainLoop.QualityParameter.ActualName = "Fitness"; 155 196 //needed? 156 geneticAlgorithmMainLoop.MutationProbabilityParameter.Value = new PercentValue(10); 157 geneticAlgorithmMainLoop.MaximizationParameter.Value = new BoolValue(true); 158 159 uniformSubScopeProcessor.Parallel = new BoolValue(true); 160 161 uniformRandomizer.RandomParameter.ActualName = "Random"; 162 uniformRandomizer.MinParameter.Value = new DoubleValue(0); 163 uniformRandomizer.MaxParameter.Value = new DoubleValue(100); 164 uniformRandomizer.ValueParameter.ActualName = "Fitness"; 165 166 //ParameterizeSelectors(); 197 adaptedGeneticAlgorithmMainLoop.MutationProbabilityParameter.Value = new PercentValue(10); 198 adaptedGeneticAlgorithmMainLoop.MaximizationParameter.Value = new BoolValue(true); 167 199 #endregion 168 200 169 201 #region Create operator graph 170 202 OperatorGraph.InitialOperator = variableCreator; 171 variableCreator.Successor = conditionMatchSelector; 172 //variableCreator.Successor = geneticAlgorithmMainLoop; 173 //geneticAlgorithmMainLoop.Successor = conditionMatchSelector; 174 conditionMatchSelector.Successor = comparator; 175 comparator.Successor = conditionalBranch; 176 conditionalBranch.TrueBranch = coveringSubScopesProcessor; 177 conditionalBranch.FalseBranch = actionSelectionSubScopesProcessor; 178 conditionalBranch.Successor = subScopesRemover; 179 coveringMechanism.Successor = uniformSubScopeProcessor; 180 uniformSubScopeProcessor.Operator = uniformRandomizer; 203 204 variableCreator.Successor = initialPopulationConditionalBranch; 205 initialPopulationConditionalBranch.TrueBranch = initialSolutionsCreator; 206 initialPopulationConditionalBranch.FalseBranch = new EmptyOperator(); 207 initialPopulationConditionalBranch.Successor = classifierFetcher; 208 classifierFetcher.Successor = matchCondtionSubScopesProcessor; 209 matchCondtionSubScopesProcessor.Successor = conditionMatchSelector; 210 //variableCreator.Successor = adaptedGeneticAlgorithmMainLoop; 211 //adaptedGeneticAlgorithmMainLoop.Successor = conditionMatchSelector; 212 213 conditionMatchSelector.Successor = coveringSubScopesProcessor; 181 214 coveringSubScopesProcessor.Operators.Add(new EmptyOperator()); 182 coveringSubScopesProcessor.Operators.Add(coveringMechanism); 183 coveringSubScopesProcessor.Successor = actionSelectionSubScopesProcessor; 184 actionSelectionSubScopesProcessor.Operators.Add(new EmptyOperator()); 185 actionSelectionSubScopesProcessor.Operators.Add(maxValueActionSelection); 186 maxValueActionSelection.Successor = actionMatchSelector; 187 subScopesRemover.Successor = mergingReducer; 188 mergingReducer.Successor = conditionMatchSelector; 189 //mergingReducer.Successor = geneticAlgorithmMainLoop; 215 coveringSubScopesProcessor.Operators.Add(matchsetCounter); 216 coveringSubScopesProcessor.Successor = mergingReducerWithSuccessor; 217 matchsetCounter.Successor = comparator; 218 comparator.Successor = coveringConditionalBranch; 219 coveringConditionalBranch.TrueBranch = coveringMechanism; 220 coveringConditionalBranch.FalseBranch = new EmptyOperator(); 221 coveringConditionalBranch.Successor = predictionArrayCalculator; 222 predictionArrayCalculator.Successor = actionSelector; 223 actionSelector.Successor = matchActionSubScopesProcessor; 224 matchActionSubScopesProcessor.Successor = actionMatchSelector; 225 actionMatchSelector.Successor = actionExecuter; 226 actionExecuter.Successor = actionSetSubScopesProcessor; 227 actionSetSubScopesProcessor.Operators.Add(new EmptyOperator()); 228 actionSetSubScopesProcessor.Operators.Add(actionSetSizeDataReducer); 229 actionSetSizeDataReducer.Successor = accuracySubScopesProcessor; 230 accuracySubScopesProcessor.Operator = calculateAccuracy; 231 accuracySubScopesProcessor.Successor = sumAccuracy; 232 sumAccuracy.Successor = updateParametersSubScopesProcessor; 233 updateParametersSubScopesProcessor.Operator = evaluator; 234 235 actionSetSubScopesProcessor.Successor = mergingReducer; 236 237 mergingReducerWithSuccessor.Successor = iterationCounter; 238 iterationCounter.Successor = classifierFetcher; 239 //mergingReducer.Successor = adaptedGeneticAlgorithmMainLoop; 190 240 #endregion 191 241 } … … 197 247 stochasticOp.RandomParameter.Hidden = true; 198 248 } 249 } 250 251 internal void SetCurrentProblem(IConditionActionProblem problem) { 252 initialSolutionsCreator.SolutionCreatorParameter.ActualName = problem.SolutionCreatorParameter.Name; 253 initialSolutionsCreator.EvaluatorParameter.ActualName = problem.EvaluatorParameter.Name; 254 255 coveringMechanism.SolutionCreatorParameter.ActualName = problem.SolutionCreatorParameter.Name; 256 coveringMechanism.EvaluatorParameter.ActualName = problem.EvaluatorParameter.Name; 257 258 problem.ActionExecuter.SelectedActionParameter.ActualName = actionSelector.SelectedActionParameter.ActualName; 259 260 problem.ClassifierFetcher.IterationParameter.ActualName = "Iteration"; 261 262 evaluator.OperatorParameter.ActualName = problem.EvaluatorParameter.Name; 263 264 classifierFetcher.OperatorParameter.ActualName = problem.ClassifierFetcherParameter.Name; 265 266 actionExecuter.OperatorParameter.ActualName = problem.ActionExecuterParameter.Name; 267 268 matchConditionOperator.TargetMatchParameter.ActualName = problem.ClassifierFetcher.CurrentClassifierToMatchParameter.Name; 269 270 predictionArrayCalculator.PredictionParameter.ActualName = problem.Evaluator.PredictionParameter.ActualName; 271 predictionArrayCalculator.FitnessParameter.ActualName = problem.Evaluator.FitnessParameter.ActualName; 199 272 } 200 273 //private void ParameterizeSelectors() { -
branches/LearningClassifierSystems/HeuristicLab.Algorithms.LearningClassifierSystems/3.3/Properties
-
Property
svn:ignore
set to
AssemblyInfo.cs
-
Property
svn:ignore
set to
Note: See TracChangeset
for help on using the changeset viewer.