Changeset 9089 for branches/LearningClassifierSystems
- Timestamp:
- 12/27/12 19:14:51 (12 years ago)
- Location:
- branches/LearningClassifierSystems
- Files:
-
- 63 added
- 16 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
-
branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3
-
Property
svn:ignore
set to
*.user
Plugin.cs
-
Property
svn:ignore
set to
-
branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/CombinedIntegerVector.cs
r8941 r9089 25 25 using HeuristicLab.Common; 26 26 using HeuristicLab.Core; 27 using HeuristicLab.Data; 28 using HeuristicLab.Encodings.ConditionActionEncoding; 27 29 using HeuristicLab.Encodings.IntegerVectorEncoding; 28 30 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 31 33 [StorableClass] 32 34 [Item("CombinedIntegerVector", "Represents a combined vector of integer values.")] 33 public class CombinedIntegerVector : IntegerVector, I Matching{35 public class CombinedIntegerVector : IntegerVector, IClassifier { 34 36 35 37 [Storable] 36 protected int actionPart; 38 protected int actionLength; 39 public int ActionLength { get { return actionLength; } } 37 40 38 41 /// <summary> … … 42 45 /// </summary> 43 46 [Storable] 44 protected int[,] bounds; 47 protected IntMatrix bounds; 48 public IntMatrix Bounds { get { return (IntMatrix)bounds.Clone(); } } 45 49 46 50 [StorableConstructor] … … 48 52 public CombinedIntegerVector() : base() { } 49 53 50 public CombinedIntegerVector(int[] elements, int actionPart, int[,]bounds)54 public CombinedIntegerVector(int[] elements, int actionPart, IntMatrix bounds) 51 55 : base(elements) { 52 this.action Part= actionPart;56 this.actionLength = actionPart; 53 57 //check if combinedVector satisfies bounds and if bounds is set correctly (at leats one row with 2 columns) is missing! 54 58 this.bounds = bounds; 55 59 } 56 60 57 public CombinedIntegerVector(IntegerVector combinedVector, int actionPart, int[,]bounds)61 public CombinedIntegerVector(IntegerVector combinedVector, int actionPart, IntMatrix bounds) 58 62 : this(combinedVector.ToArray(), actionPart, bounds) { } 59 63 60 public CombinedIntegerVector(IntegerVector condition, IntegerVector action, int[,]bounds)64 public CombinedIntegerVector(IntegerVector condition, IntegerVector action, IntMatrix bounds) 61 65 : base(condition.Concat(action).ToArray()) { 62 action Part= action.Length;66 actionLength = action.Length; 63 67 //check if combinedVector satisfies bounds and if bounds is set correctly (at leats one row with 2 columns) is missing! 64 68 this.bounds = bounds; 65 69 } 66 70 71 public CombinedIntegerVector(IntegerVector condition, IntMatrix conditionBounds, IntegerVector action, IntMatrix actionBounds) 72 : this(condition, action, CombineBounds(conditionBounds, actionBounds)) { 73 } 74 75 private static IntMatrix CombineBounds(IntMatrix conditionBounds, IntMatrix actionBounds) { 76 int columns = conditionBounds.Columns < actionBounds.Columns ? conditionBounds.Columns : actionBounds.Columns; 77 IntMatrix bounds = new IntMatrix(conditionBounds.Rows + actionBounds.Rows, columns); 78 for (int i = 0; i < conditionBounds.Rows; i++) { 79 for (int j = 0; j < columns; j++) { 80 bounds[i, j] = conditionBounds[i % conditionBounds.Rows, j]; 81 } 82 } 83 84 for (int i = conditionBounds.Rows; i < actionBounds.Rows + conditionBounds.Rows; i++) { 85 for (int j = 0; j < columns; j++) { 86 bounds[i, j] = actionBounds[i % actionBounds.Rows, j]; 87 } 88 } 89 return bounds; 90 } 91 67 92 public CombinedIntegerVector(IRandom random, int length, int min, int max, int actionLenght, int actionMin, int actionMax) : 68 93 this(new IntegerVector(length, random, min, max), new IntegerVector(actionLenght, random, actionMin, actionMax), null) { 69 bounds = new int[length + actionLenght, 2];94 bounds = new IntMatrix(length + actionLenght, 2); 70 95 for (int i = 0; i < length; i++) { 71 96 bounds[i, 0] = min; … … 78 103 } 79 104 80 public CombinedIntegerVector(int length, int actionPart, int[,]bounds)105 public CombinedIntegerVector(int length, int actionPart, IntMatrix bounds) 81 106 : base(length) { 82 this.action Part= actionPart;107 this.actionLength = actionPart; 83 108 this.bounds = bounds; 84 109 } … … 86 111 protected CombinedIntegerVector(CombinedIntegerVector original, Cloner cloner) 87 112 : base(original, cloner) { 88 actionPart = original.actionPart; 89 bounds = (int[,])original.bounds.Clone(); 90 } 113 actionLength = original.actionLength; 114 bounds = (IntMatrix)original.bounds.Clone(); 115 } 116 91 117 public override IDeepCloneable Clone(Cloner cloner) { 92 118 return new CombinedIntegerVector(this, cloner); 93 119 } 94 120 95 public I MatchingCondition {121 public IClassifier Condition { 96 122 get { 97 int[] condition = new int[Length - action Part];98 Array.Copy(this.array, condition, Length - action Part);123 int[] condition = new int[Length - actionLength]; 124 Array.Copy(this.array, condition, Length - actionLength); 99 125 return new CombinedIntegerVector(condition, 0, bounds); 100 126 } 101 127 } 102 128 103 public I MatchingAction {129 public IClassifier Action { 104 130 get { 105 int[] action = new int[actionPart]; 106 Array.Copy(this.array, Length - actionPart, action, 0, actionPart); 107 return new CombinedIntegerVector(action, actionPart, bounds); 108 } 109 } 110 111 public bool MatchCondition(IMatching target) { 131 int[] action = new int[actionLength]; 132 Array.Copy(this.array, Length - actionLength, action, 0, actionLength); 133 134 IntMatrix actionBounds = GetElementsOfBoundsForAction(bounds, Length, actionLength); 135 return new CombinedIntegerVector(action, actionLength, actionBounds); 136 } 137 } 138 139 private IntMatrix GetElementsOfBoundsForAction(IntMatrix bounds, int length, int actionPartLength) { 140 IntMatrix actionBounds = new IntMatrix(actionPartLength, bounds.Columns); 141 int start = length - actionPartLength; 142 for (int i = start; i < length; i++) { 143 int pos = i % bounds.Rows; 144 for (int j = 0; j < bounds.Columns; j++) { 145 actionBounds[i - start, j] = bounds[pos, j]; 146 } 147 } 148 return actionBounds; 149 } 150 151 public bool MatchCondition(IClassifier target) { 112 152 var targetVector = target as CombinedIntegerVector; 113 153 if (targetVector == null) return false; … … 115 155 116 156 int curbounds; 117 for (int i = 0; i < this.Length - this.action Part; i++) {118 curbounds = i % bounds. GetLength(0);157 for (int i = 0; i < this.Length - this.actionLength; i++) { 158 curbounds = i % bounds.Rows; 119 159 //if don't care symbol is matched, next indices can be checked 120 160 if (this[i].Equals(bounds[curbounds, 1] - 1)) { … … 129 169 130 170 // no "don't care" symbols have to be considered 131 public bool MatchAction(I Matchingtarget) {171 public bool MatchAction(IClassifier target) { 132 172 var targetVector = target as CombinedIntegerVector; 133 173 if (targetVector == null) return false; 134 if (targetVector.action Part != this.actionPart) return false;135 136 int curPos = this.Length - this.action Part;137 int curTargetPos = targetVector.Length - targetVector.action Part;138 for (int i = 0; i < this.action Part; i++) {174 if (targetVector.actionLength != this.actionLength) return false; 175 176 int curPos = this.Length - this.actionLength; 177 int curTargetPos = targetVector.Length - targetVector.actionLength; 178 for (int i = 0; i < this.actionLength; i++) { 139 179 if (!this[curPos + i].Equals(targetVector[curTargetPos + i])) { 140 180 return false; … … 149 189 int curbounds; 150 190 for (int i = 0; i < this.Length; i++) { 151 curbounds = i % bounds. GetLength(0);152 if (i >= this.Length - this.action Part|| this[i] < bounds[curbounds, 1] - 1) {191 curbounds = i % bounds.Rows; 192 if (i >= this.Length - this.actionLength || this[i] < bounds[curbounds, 1] - 1) { 153 193 strBuilder.Append(this[i]); 154 194 } else { … … 171 211 } 172 212 173 public bool Equals(I Matchingother) {213 public bool Equals(IClassifier other) { 174 214 return this.MatchAction(other) && this.MatchCondition(other); 175 215 } 176 216 177 217 public override int GetHashCode() { 178 int result = action Part;218 int result = actionLength; 179 219 for (int i = 0; i < array.Length; i++) { 180 220 result ^= array[i]; -
branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/CombinedIntegerVectorCreator.cs
r8941 r9089 23 23 using HeuristicLab.Core; 24 24 using HeuristicLab.Data; 25 using HeuristicLab.Encodings.IntegerVectorEncoding; 25 using HeuristicLab.Operators; 26 using HeuristicLab.Optimization; 26 27 using HeuristicLab.Parameters; 27 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 33 34 [Item("CombinedIntegerVectorCreator", "A base class for operators creating combined int-valued vectors.")] 34 35 [StorableClass] 35 public abstract class CombinedIntegerVectorCreator : IntegerVectorCreator, ICombinedIntegerVectorCreator { 36 public abstract class CombinedIntegerVectorCreator : SingleSuccessorOperator, IStochasticOperator, ICombinedIntegerVectorCreator { 37 public override bool CanChangeName { 38 get { return false; } 39 } 40 public ILookupParameter<IRandom> RandomParameter { 41 get { return (LookupParameter<IRandom>)Parameters["Random"]; } 42 } 43 public IValueLookupParameter<IntValue> LengthParameter { 44 get { return (IValueLookupParameter<IntValue>)Parameters["Length"]; } 45 } 46 public IValueLookupParameter<IntMatrix> BoundsParameter { 47 get { return (IValueLookupParameter<IntMatrix>)Parameters["Bounds"]; } 48 } 49 36 50 public IValueLookupParameter<IntValue> ActionPartLengthParameter { 37 51 get { return (IValueLookupParameter<IntValue>)Parameters["ActionPartLength"]; } … … 44 58 [StorableConstructor] 45 59 protected CombinedIntegerVectorCreator(bool deserializing) : base(deserializing) { } 46 protected CombinedIntegerVectorCreator( IntegerVectorCreator original, Cloner cloner) : base(original, cloner) { }60 protected CombinedIntegerVectorCreator(CombinedIntegerVectorCreator original, Cloner cloner) : base(original, cloner) { } 47 61 protected CombinedIntegerVectorCreator() 48 62 : base() { 63 Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators.")); 64 Parameters.Add(new ValueLookupParameter<IntValue>("Length", "The length of the vector.")); 65 Parameters.Add(new ValueLookupParameter<IntMatrix>("Bounds", "The bounds matrix can contain one row for each dimension with three columns specifying minimum (inclusive), maximum (exclusive), and step size. If less rows are given the matrix is cycled.")); 49 66 Parameters.Add(new LookupParameter<CombinedIntegerVector>("CombinedIntegerVector", "The vector which should be manipulated.")); 50 67 Parameters.Add(new ValueLookupParameter<IntValue>("ActionPartLength", "The length of the vector.")); 51 68 } 52 69 53 p rotected override IntegerVector Create(IRandom random, IntValue length, IntMatrix bounds) {54 CombinedIntegerVectorParameter.ActualValue = Create( random, length, bounds, ActionPartLengthParameter.ActualValue);55 return CombinedIntegerVectorParameter.ActualValue;70 public sealed override IOperation Apply() { 71 CombinedIntegerVectorParameter.ActualValue = Create(RandomParameter.ActualValue, LengthParameter.ActualValue, BoundsParameter.ActualValue, ActionPartLengthParameter.ActualValue); 72 return base.Apply(); 56 73 } 57 74 -
branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Creators/UniformRandomCombinedIntegerVectorCreator.cs
r8941 r9089 50 50 /// <returns>The newly created integer vector.</returns> 51 51 public static CombinedIntegerVector Apply(IRandom random, int length, IntMatrix bounds, int actionPartLength) { 52 var result = new CombinedIntegerVector(length, actionPartLength, GetElementsOfBounds(bounds));52 var result = new CombinedIntegerVector(length, actionPartLength, bounds); 53 53 result.Randomize(random, bounds); 54 54 return result; 55 }56 57 private static int[,] GetElementsOfBounds(IntMatrix bounds) {58 int[,] realBounds = new int[bounds.Rows, bounds.Columns];59 for (int i = 0; i < bounds.Rows; i++) {60 for (int j = 0; j < bounds.Columns; j++) {61 realBounds[i, j] = bounds[i, j];62 }63 }64 return realBounds;65 55 } 66 56 -
branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/HeuristicLab.Encodings.CombinedIntegerVectorEncoding-3.3.csproj
r8941 r9089 104 104 <Compile Include="CombinedIntegerVector.cs" /> 105 105 <Compile Include="CombinedIntegerVectorCreator.cs" /> 106 <Compile Include="CombinedIntegerVectorCrossover.cs" /> 107 <Compile Include="CombinedIntegerVectorManipulator.cs" /> 108 <Compile Include="Covering\CombinedIntegerVectorCoveringCreator.cs" /> 106 109 <Compile Include="Creators\UniformRandomCombinedIntegerVectorCreator.cs" /> 107 <Compile Include="Matching\IMatching.cs" /> 110 <Compile Include="Crossovers\SinglePointCrossover.cs" /> 111 <Compile Include="Interfaces\ICombinedIntegerVectorManipulator.cs" /> 112 <Compile Include="Interfaces\ICombinedIntegerVectorCrossover.cs" /> 108 113 <Compile Include="Interfaces\IBoundedCombinedIntegerVectorOperator.cs" /> 109 114 <Compile Include="Interfaces\ICombinedIntegerVectorCreator.cs" /> 110 115 <Compile Include="Interfaces\ICombinedIntegerVectorOperator.cs" /> 111 <Compile Include="Properties\AssemblyInfo.cs" /> 116 <Compile Include="Manipulator\UniformActionManipulator.cs"> 117 <SubType>Code</SubType> 118 </Compile> 119 <Compile Include="Manipulator\UniformOnePositionInConditionManipulator.cs" /> 120 <Compile Include="Manipulator\UniformSomePositionsManipulator.cs" /> 112 121 <Compile Include="Plugin.cs" /> 113 122 <None Include="Properties\AssemblyInfo.cs.frame" /> 123 <Compile Include="Properties\AssemblyInfo.cs" /> 114 124 </ItemGroup> 115 125 <ItemGroup> 116 126 <None Include="HeuristicLab.snk" /> 117 127 <None Include="Plugin.cs.frame" /> 128 </ItemGroup> 129 <ItemGroup> 130 <ProjectReference Include="..\..\HeuristicLab.Encodings.ConditionActionEncoding\3.3\HeuristicLab.Encodings.ConditionActionEncoding-3.3.csproj"> 131 <Project>{422FB262-0845-4969-8D16-12F057AA90B1}</Project> 132 <Name>HeuristicLab.Encodings.ConditionActionEncoding-3.3</Name> 133 </ProjectReference> 118 134 </ItemGroup> 119 135 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> -
branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Interfaces/IBoundedCombinedIntegerVectorOperator.cs
r8941 r9089 20 20 #endregion 21 21 22 using HeuristicLab.Encodings.IntegerVectorEncoding; 22 using System; 23 using HeuristicLab.Common; 24 using HeuristicLab.Core; 25 using HeuristicLab.Data; 23 26 24 27 namespace HeuristicLab.Encodings.CombinedIntegerVectorEncoding { … … 26 29 /// The bounds parameter must contain at least one row and at least two columns. The first two columns specify min and max values, the last column specifies the step size, but is optional (1 is assumed if omitted). 27 30 /// </summary> 28 public interface IBoundedCombinedIntegerVectorOperator : IBoundedIntegerVectorOperator { } 31 public interface IBoundedCombinedIntegerVectorOperator : ICombinedIntegerVectorOperator, IOperator, IParameterizedNamedItem, INamedItem, IParameterizedItem, IItem, IContent, IDeepCloneable, ICloneable { 32 IValueLookupParameter<IntMatrix> BoundsParameter { get; } 33 } 29 34 } -
branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Interfaces/ICombinedIntegerVectorCreator.cs
r8941 r9089 20 20 #endregion 21 21 22 using System; 23 using HeuristicLab.Common; 22 24 using HeuristicLab.Core; 23 25 using HeuristicLab.Data; 24 using HeuristicLab. Encodings.IntegerVectorEncoding;26 using HeuristicLab.Optimization; 25 27 26 28 namespace HeuristicLab.Encodings.CombinedIntegerVectorEncoding { 27 public interface ICombinedIntegerVectorCreator : IIntegerVectorCreator, IBoundedCombinedIntegerVectorOperator { 29 public interface ICombinedIntegerVectorCreator : ISolutionCreator, IBoundedCombinedIntegerVectorOperator, ICombinedIntegerVectorOperator, IOperator, IParameterizedNamedItem, INamedItem, IParameterizedItem, IItem, IContent, IDeepCloneable, ICloneable { 30 IValueLookupParameter<IntValue> LengthParameter { get; } 28 31 IValueLookupParameter<IntValue> ActionPartLengthParameter { get; } 29 32 ILookupParameter<CombinedIntegerVector> CombinedIntegerVectorParameter { get; } -
branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Interfaces/ICombinedIntegerVectorOperator.cs
r8941 r9089 20 20 #endregion 21 21 22 using System; 23 using HeuristicLab.Common; 22 24 using HeuristicLab.Core; 23 25 24 26 namespace HeuristicLab.Encodings.CombinedIntegerVectorEncoding { 25 public interface ICombinedIntegerVectorOperator : IOperator { } 27 public interface ICombinedIntegerVectorOperator : IOperator, IParameterizedNamedItem, INamedItem, IParameterizedItem, IItem, IContent, IDeepCloneable, ICloneable { 28 } 26 29 } -
branches/LearningClassifierSystems/HeuristicLab.Encodings.CombinedIntegerVectorEncoding/3.3/Properties
-
Property
svn:ignore
set to
AssemblyInfo.cs
-
Property
svn:ignore
set to
-
branches/LearningClassifierSystems/LearningClassifierSystem.sln
r8941 r9089 11 11 EndProject 12 12 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Algorithms.LearningClassifierSystems-3.3", "HeuristicLab.Algorithms.LearningClassifierSystems\3.3\HeuristicLab.Algorithms.LearningClassifierSystems-3.3.csproj", "{1FAB379A-3624-4EE3-9756-E8CA34BAADB4}" 13 EndProject 14 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Encodings.ConditionActionEncoding-3.3", "HeuristicLab.Encodings.ConditionActionEncoding\3.3\HeuristicLab.Encodings.ConditionActionEncoding-3.3.csproj", "{422FB262-0845-4969-8D16-12F057AA90B1}" 15 EndProject 16 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.ConditionActionClassification-3.3", "HeuristicLab.Problems.ConditionActionClassification\3.3\HeuristicLab.Problems.ConditionActionClassification-3.3.csproj", "{EA51D441-F6A3-41E1-9993-A2488E93C222}" 13 17 EndProject 14 18 Global … … 42 46 {1FAB379A-3624-4EE3-9756-E8CA34BAADB4}.Release|x64.ActiveCfg = Release|Any CPU 43 47 {1FAB379A-3624-4EE3-9756-E8CA34BAADB4}.Release|x86.ActiveCfg = Release|Any CPU 48 {422FB262-0845-4969-8D16-12F057AA90B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 49 {422FB262-0845-4969-8D16-12F057AA90B1}.Debug|Any CPU.Build.0 = Debug|Any CPU 50 {422FB262-0845-4969-8D16-12F057AA90B1}.Debug|x64.ActiveCfg = Debug|Any CPU 51 {422FB262-0845-4969-8D16-12F057AA90B1}.Debug|x86.ActiveCfg = Debug|Any CPU 52 {422FB262-0845-4969-8D16-12F057AA90B1}.Release|Any CPU.ActiveCfg = Release|Any CPU 53 {422FB262-0845-4969-8D16-12F057AA90B1}.Release|Any CPU.Build.0 = Release|Any CPU 54 {422FB262-0845-4969-8D16-12F057AA90B1}.Release|x64.ActiveCfg = Release|Any CPU 55 {422FB262-0845-4969-8D16-12F057AA90B1}.Release|x86.ActiveCfg = Release|Any CPU 56 {EA51D441-F6A3-41E1-9993-A2488E93C222}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 57 {EA51D441-F6A3-41E1-9993-A2488E93C222}.Debug|Any CPU.Build.0 = Debug|Any CPU 58 {EA51D441-F6A3-41E1-9993-A2488E93C222}.Debug|x64.ActiveCfg = Debug|Any CPU 59 {EA51D441-F6A3-41E1-9993-A2488E93C222}.Debug|x86.ActiveCfg = Debug|Any CPU 60 {EA51D441-F6A3-41E1-9993-A2488E93C222}.Release|Any CPU.ActiveCfg = Release|Any CPU 61 {EA51D441-F6A3-41E1-9993-A2488E93C222}.Release|Any CPU.Build.0 = Release|Any CPU 62 {EA51D441-F6A3-41E1-9993-A2488E93C222}.Release|x64.ActiveCfg = Release|Any CPU 63 {EA51D441-F6A3-41E1-9993-A2488E93C222}.Release|x86.ActiveCfg = Release|Any CPU 44 64 EndGlobalSection 45 65 GlobalSection(SolutionProperties) = preSolution
Note: See TracChangeset
for help on using the changeset viewer.