Changeset 17134 for branches/2988_ModelsOfModels2/HeuristicLab.Algorithms.EMM/EMMAlgorithm/EMMBaseAlgorithm.cs
- Timestamp:
- 07/11/19 16:30:22 (5 years ago)
- Location:
- branches/2988_ModelsOfModels2/HeuristicLab.Algorithms.EMM/EMMAlgorithm
- Files:
-
- 1 added
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/2988_ModelsOfModels2/HeuristicLab.Algorithms.EMM/EMMAlgorithm/EMMBaseAlgorithm.cs
r17133 r17134 41 41 42 42 namespace HeuristicLab.Algorithms.EvolvmentModelsOfModels { 43 [Item(" MOEADAlgorithmBase", "Base class for all MOEA/Dalgorithm variants.")]43 [Item("EMMAlgorithmBase", "Base class for all EMM algorithm variants.")] 44 44 [StorableType("A56A396B-965A-4ADE-8A2B-AE3A45F9C239")] 45 45 public abstract class EvolvmentModelsOfModelsAlgorithmBase : FixedDataAnalysisAlgorithm<ISymbolicDataAnalysisSingleObjectiveProblem> { … … 78 78 private const string AnalyzerParameterName = "Analyzer"; 79 79 private const string InputFileParameterName = "InputFile"; 80 private const string ClusterNumbersParameterName = "ClusterNumbers";81 private const string ClusterNumbersShowParameterName = "ClusterNumbersShow";82 80 private const string AlgorithmImplementationTypeParameterName = "AlgorithmImplementationType"; 81 private const string DistanceTypeParameterName = "DistanceType"; 83 82 private const string MapParameterName = "Map"; 84 private const string NegbourTypeParameterName = "NegbourType";85 private const string NegbourNumberParameterName = "NegbourNumber";86 83 public IValueParameter<MultiAnalyzer> AnalyzerParameter { 87 84 get { return (ValueParameter<MultiAnalyzer>)Parameters[AnalyzerParameterName]; } … … 90 87 get { return (IFixedValueParameter<IntValue>)Parameters[SeedParameterName]; } 91 88 } 92 public IValueParameter<IntValue> ClusterNumbersParameter {93 get { return (IValueParameter<IntValue>)Parameters[ClusterNumbersParameterName]; }94 }95 public IValueParameter<IntValue> ClusterNumbersShowParameter {96 get { return (IValueParameter<IntValue>)Parameters[ClusterNumbersShowParameterName]; }97 }98 89 public IConstrainedValueParameter<StringValue> AlgorithmImplementationTypeParameter { 99 90 get { return (IConstrainedValueParameter<StringValue>)Parameters[AlgorithmImplementationTypeParameterName]; } 100 91 } 92 public IConstrainedValueParameter<StringValue> DistanceTypeParameter { 93 get { return (IConstrainedValueParameter<StringValue>)Parameters[DistanceTypeParameterName]; } 94 } 101 95 public IConstrainedValueParameter<EMMMapBase<ISymbolicExpressionTree>> MapParameter { 102 96 get { return (IConstrainedValueParameter<EMMMapBase<ISymbolicExpressionTree>>)Parameters[MapParameterName]; } 103 97 } 104 public IFixedValueParameter<StringValue> NegbourTypeParameter { 105 get { return (IFixedValueParameter<StringValue>)Parameters[NegbourTypeParameterName]; } 106 } 107 public IFixedValueParameter<IntValue> NegbourNumberParameter { 108 get { return (IFixedValueParameter<IntValue>)Parameters[NegbourNumberParameterName]; } 109 } 98 110 99 public IFixedValueParameter<StringValue> InputFileParameter { 111 100 get { return (IFixedValueParameter<StringValue>)Parameters[InputFileParameterName]; } … … 151 140 set { SeedParameter.Value.Value = value; } 152 141 } 153 public IntValue ClusterNumbers {154 get { return ClusterNumbersParameter.Value; }155 set { ClusterNumbersParameter.Value = value; }156 }157 public IntValue ClusterNumbersShow {158 get { return ClusterNumbersShowParameter.Value; }159 set { ClusterNumbersShowParameter.Value = value; }160 }161 142 public StringValue AlgorithmImplemetationType { 162 143 get { return AlgorithmImplementationTypeParameter.Value; } 163 144 set { AlgorithmImplementationTypeParameter.Value.Value = value.Value; } 164 145 } 146 public StringValue DistanceType { 147 get { return DistanceTypeParameter.Value; } 148 set { DistanceTypeParameter.Value.Value = value.Value; } 149 } 165 150 public EMMMapBase<ISymbolicExpressionTree> Map { 166 151 get { return MapParameter.Value; } 167 152 set { MapParameter.Value = value; } 168 153 } 169 public StringValue NegbourType {170 get { return NegbourTypeParameter.Value; }171 set { NegbourTypeParameter.Value.Value = value.Value; }172 }173 public IntValue NegbourNumber {174 get { return NegbourNumberParameter.Value; }175 set { NegbourNumberParameter.Value.Value = value.Value; }176 }177 154 public StringValue InputFile { 178 155 get { return InputFileParameter.Value; } … … 229 206 Parameters.Add(new FixedValueParameter<IntValue>(SeedParameterName, "The random seed used to initialize the new pseudo random number generator.", new IntValue(0))); 230 207 Parameters.Add(new FixedValueParameter<StringValue>(InputFileParameterName, "The file with set of models that will be.", new StringValue("input.txt"))); 231 Parameters.Add(new ConstrainedValueParameter<StringValue>(AlgorithmImplementationTypeParameterName, "The Type of possible algorith, implemetation, choose one: OnlyMap, Full, Read.")); 232 Parameters.Add(new ConstrainedValueParameter<EMMMapBase<ISymbolicExpressionTree>>(MapParameterName, "The type of map crearion algorithm. Use one from: IslandMap, NetworkMap.")); 233 Parameters.Add(new FixedValueParameter<IntValue>(NegbourNumberParameterName, "The parametr for FullMap type of map crearion algorithm. Use one from: 10, 20.", new IntValue(10))); 234 Parameters.Add(new FixedValueParameter<StringValue>(NegbourTypeParameterName, "The parametr for FullMap type of map crearion algorithm. Use one from: Percent, Number.", new StringValue("Number"))); 208 Parameters.Add(new ConstrainedValueParameter<StringValue>(AlgorithmImplementationTypeParameterName, "The Type of possible algorithm, implementation, choose one: OnlyMap, Full, Read.")); 209 Parameters.Add(new ConstrainedValueParameter<StringValue>(DistanceTypeParameterName, "The Type of possible distance calculator for case of only distance calculation.")); 210 Parameters.Add(new ConstrainedValueParameter<EMMMapBase<ISymbolicExpressionTree>>(MapParameterName, "The type of map creation algorithm. Use one from: IslandMap, NetworkMap.")); 235 211 Parameters.Add(new FixedValueParameter<BoolValue>(SetSeedRandomlyParameterName, "True if the random seed should be set to a random value, otherwise false.", new BoolValue(true))); 236 212 Parameters.Add(new ValueParameter<IntValue>(PopulationSizeParameterName, "The size of the population of Solutions.", new IntValue(100))); 237 Parameters.Add(new ConstrainedValueParameter<ISelector>(SelectorParameterName, "The operator used to sel lect parents."));213 Parameters.Add(new ConstrainedValueParameter<ISelector>(SelectorParameterName, "The operator used to select parents.")); 238 214 Parameters.Add(new ValueParameter<PercentValue>(CrossoverProbabilityParameterName, "The probability that the crossover operator is applied.", new PercentValue(0.9))); 239 215 Parameters.Add(new ValueParameter<IntValue>(GroupSizeParameterName, "The GoupSize that the Selector operator is applied.", new IntValue(3))); … … 244 220 Parameters.Add(new ValueParameter<IntValue>(MaximumEvaluatedSolutionsParameterName, "The maximum number of evaluated Solutions (approximately).", new IntValue(100_000))); 245 221 Parameters.Add(new ValueParameter<IRandom>(RandomParameterName, new MersenneTwister())); 246 Parameters.Add(new ValueParameter<IntValue>("Elites", "The numer of elite Solutions which are kept in each generation.", new IntValue(1))); 247 Parameters.Add(new ValueParameter<IntValue>(ClusterNumbersParameterName, "The number of clusters for model Map.", new IntValue(10))); 248 Parameters.Add(new ValueParameter<IntValue>(ClusterNumbersShowParameterName, "The number of clusters for model Map.", new IntValue(10))); 222 Parameters.Add(new ValueParameter<IntValue>("Elites", "The number of elite Solutions which are kept in each generation.", new IntValue(1))); 249 223 foreach (ISelector selector in ApplicationManager.Manager.GetInstances<ISelector>().Where(x => !(x is IMultiObjectiveSelector)).OrderBy(x => x.Name)) 250 224 SelectorParameter.ValidValues.Add(selector); … … 274 248 if (Problem != null) { 275 249 Problem.SymbolicExpressionTreeInterpreter = new SymbolicDataAnalysisExpressionTreeBatchInterpreter(); 276 //Problem.SymbolicExpressionTreeGrammar = new EMMGrammar();277 250 } 278 251 } 279 252 protected void MapParameterUpdate() { 280 int neghboorNumber = 10;281 282 switch (NegbourType.Value) {283 case "Percent": neghboorNumber = Convert.ToInt32((Convert.ToDouble(ClusterNumbersParameter.Value.Value)) * (Convert.ToDouble(NegbourNumber.Value)) / 100.0); break;284 case "Number": neghboorNumber = NegbourNumber.Value; break;285 default: neghboorNumber = NegbourNumber.Value; break;286 }287 253 var mapTypes = new EMMMapBase<ISymbolicExpressionTree>[] 288 254 { 289 255 new EMMIslandMap(), 290 new EMMNetworkMap( neghboorNumber),256 new EMMNetworkMap(), 291 257 new EMMDisatanceMap(), 292 258 new EMMRankMap(), … … 301 267 new StringValue("Full"), 302 268 new StringValue("Read"), 303 new StringValue ("OnlyMap")304 269 }; 305 270 foreach (var t in algorithmType) { 306 271 AlgorithmImplementationTypeParameter.ValidValues.Add(t); 307 272 } 273 var distanceType = new StringValue[] 274 { 275 new StringValue("MSE"), 276 new StringValue("PearsonsRSquared"), 277 new StringValue ("Covariance"), 278 new StringValue ("MaxAbsoluteError"), 279 new StringValue ("MeanAbsoluteError"), 280 new StringValue ("Symbolic") 281 }; 282 foreach (var t in distanceType) { 283 DistanceTypeParameter.ValidValues.Add(t); 284 } 308 285 } 309 286 … … 320 297 } 321 298 322 //if (original.offspringPopulation != null) {323 // offspringPopulation = original.offspringPopulation.Select(cloner.Clone).ToList();324 //}325 326 //if (original.jointPopulation != null) {327 // jointPopulation = original.jointPopulation.Select(x => cloner.Clone(x)).ToList();328 //}329 330 299 if (original.executionContext != null) { 331 300 executionContext = cloner.Clone(original.executionContext); … … 335 304 globalScope = cloner.Clone(original.globalScope); 336 305 } 337 338 // hack 339 trees = original.trees.Select(x => cloner.Clone(x)).ToArray(); 306 // hack 307 if (original.trees != null) { 308 trees = original.trees.Select(x => cloner.Clone(x)).ToArray(); 309 } 340 310 } 341 311
Note: See TracChangeset
for help on using the changeset viewer.