Changeset 5665 for branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding
- Timestamp:
- 03/10/11 19:26:58 (14 years ago)
- Location:
- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/ParameterConfigurationTree.cs
r5653 r5665 2 2 using System.Collections; 3 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Text; 4 6 using HeuristicLab.Common; 5 7 using HeuristicLab.Core; … … 103 105 } 104 106 105 [Storable] 106 protected string name; 107 public string Name { 108 get { return name; } 109 set { name = value; } 110 } 107 public ParameterizedValueConfiguration AlgorithmConfiguration { 108 get { 109 return this.ParameterConfigurations.ElementAt(0).ValueConfigurations.First() as ParameterizedValueConfiguration; 110 } 111 } 112 113 public ParameterizedValueConfiguration ProblemConfiguration { 114 get { 115 return this.ParameterConfigurations.ElementAt(1).ValueConfigurations.First() as ParameterizedValueConfiguration; 116 } 117 } 118 119 //[Storable] 120 //protected string name; 121 //public string Name { 122 // get { return name; } 123 // set { name = value; } 124 //} 111 125 112 126 #region constructors and cloning 113 public ParameterConfigurationTree(IAlgorithm algorithm) 114 : base(null, algorithm.GetType()) { 115 this.Optimize = true; // root must always be optimized 127 public ParameterConfigurationTree(IAlgorithm algorithm, IProblem problem) 128 : base(null, algorithm.GetType(), false) { 129 this.Optimize = false; 130 this.IsOptimizable = false; 116 131 this.parameters = new Dictionary<string, IItem>(); 117 132 this.Name = algorithm.ItemName; 118 PopulateParameterConfigurations(algorithm); 119 } 120 public ParameterConfigurationTree() { 121 } 133 134 var algproblemitem = new AlgorithmProblemItem(); 135 algproblemitem.AlgorithmParameter.Value = algorithm; 136 algproblemitem.ProblemParameter.Value = problem; 137 this.discoverValidValues = false; 138 139 this.parameterConfigurations.Add(new SingleValuedParameterConfiguration("Algorithm", algproblemitem.AlgorithmParameter)); 140 this.parameterConfigurations.Add(new SingleValuedParameterConfiguration("Problem", algproblemitem.ProblemParameter)); 141 } 142 public ParameterConfigurationTree() { } 122 143 [StorableConstructor] 123 144 protected ParameterConfigurationTree(bool deserializing) : base(deserializing) { } … … 138 159 this.parameters.Add(p.Key, cloner.Clone(p.Value)); 139 160 } 140 this.name = original.name;161 //this.name = original.name; 141 162 } 142 163 public override IDeepCloneable Clone(Cloner cloner) { … … 181 202 public override void Parameterize(IParameterizedItem item) { 182 203 this.parameters.Clear(); 183 base.Parameterize(item); 184 ((IAlgorithm)item).CollectParameterValues(this.Parameters); 204 var algorithm = item as IAlgorithm; 205 var problem = algorithm.Problem; 206 207 AlgorithmConfiguration.Parameterize(algorithm); 208 ProblemConfiguration.Parameterize(problem); 209 210 //((IAlgorithm)AlgorithmConfiguration.ActualValue.Value).CollectParameterValues(this.Parameters); 211 //((IProblem)ProblemConfiguration.ActualValue.Value).CollectParameterValues(this.Parameters); 185 212 } 186 213 … … 251 278 return run; 252 279 } 280 281 public override string ParameterInfoString { 282 get { 283 string algorithmInfo = this.AlgorithmConfiguration.ParameterInfoString; 284 string problemInfo = this.ProblemConfiguration.ParameterInfoString; 285 var sb = new StringBuilder(); 286 if (!string.IsNullOrEmpty(algorithmInfo)) { 287 sb.Append("Algorithm: "); 288 sb.Append(algorithmInfo); 289 } 290 if (!string.IsNullOrEmpty(problemInfo)) { 291 if (sb.Length > 0) 292 sb.Append(", "); 293 sb.Append("Problem: "); 294 sb.Append(problemInfo); 295 } 296 return sb.ToString(); 297 } 298 } 253 299 } 254 300 } -
branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/ParameterConfigurations/ParameterConfiguration.cs
r5653 r5665 128 128 129 129 [Storable] 130 protected bool discoverValidValues; 131 public bool DiscoverValidValues { 132 get { return discoverValidValues; } 133 set { discoverValidValues = value; } 134 } 135 136 [Storable] 130 137 protected IItemSet<IItem> validValues; 131 138 132 139 #region Constructors and Cloning 133 public ParameterConfiguration(string parameterName, IValueParameter valueParameter ) {140 public ParameterConfiguration(string parameterName, IValueParameter valueParameter, bool discoverValidValues) { 134 141 this.ParameterName = parameterName; 135 142 this.parameterDataType = valueParameter.GetType(); 136 143 this.valueDataType = valueParameter.DataType; 137 this.validValues = GetValidValues(valueParameter); 144 this.discoverValidValues = discoverValidValues; 145 this.validValues = discoverValidValues ? GetValidValues(valueParameter) : new ItemSet<IItem> { valueParameter.Value }; 138 146 this.validTypes = GetValidTypes(valueParameter).ToArray(); 139 147 this.IsNullable = valueParameter.ItemName.StartsWith("Optional"); … … 169 177 this.isNullable = original.isNullable; 170 178 this.itemImage = original.itemImage; 179 this.discoverValidValues = original.discoverValidValues; 171 180 if (this.valueConfigurations != null) RegisterValueConfigurationEvents(); 172 181 } … … 210 219 val = CreateItem(t); 211 220 } 212 if (val is IParameterizedItem) { 213 this.ValueConfigurations.Add(new ParameterizedValueConfiguration(val, val.GetType()), true); 214 } else { 215 this.ValueConfigurations.Add(new RangeValueConfiguration(val, val.GetType()), true); 221 if (val != null) { // val can be null when ValidValues does not contain the type (this can happen when discoverValidValues=false) 222 if (val is IParameterizedItem) { 223 this.ValueConfigurations.Add(new ParameterizedValueConfiguration(val, val.GetType(), true), true); 224 } else { 225 this.ValueConfigurations.Add(new RangeValueConfiguration(val, val.GetType()), true); 226 } 216 227 } 217 228 } … … 395 406 } 396 407 397 public static IParameterConfiguration Create(IParameterizedNamedItem parent, IParameter parameter ) {408 public static IParameterConfiguration Create(IParameterizedNamedItem parent, IParameter parameter, bool discoverValidValues) { 398 409 if (parameter is IValueParameter) { 399 410 IValueParameter valueParameter = parameter as IValueParameter; 400 return new ParameterConfiguration(parameter.Name, valueParameter );411 return new ParameterConfiguration(parameter.Name, valueParameter, discoverValidValues); 401 412 } 402 413 return null; … … 410 421 } 411 422 var clonedValue = this.ActualValue.Value != null ? (IItem)this.ActualValue.Value.Clone() : null; 412 if (clonedValue != null) AdaptValidValues(parameter, clonedValue);423 if (clonedValue != null) AdaptValidValues(parameter, clonedValue); 413 424 parameter.Value = clonedValue; 414 425 } -
branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/ValueConfigurations/ParameterizedValueConfiguration.cs
r5653 r5665 12 12 [Storable] 13 13 protected IItemCollection<IParameterConfiguration> parameterConfigurations = new ItemCollection<IParameterConfiguration>(); 14 public IItemCollection<IParameterConfiguration> ParameterConfigurations {14 public virtual IItemCollection<IParameterConfiguration> ParameterConfigurations { 15 15 get { return new ReadOnlyItemCollection<IParameterConfiguration>(this.parameterConfigurations); } 16 16 protected set { this.parameterConfigurations = value; } … … 23 23 if (optimize) { 24 24 ClearParameterConfigurations(); 25 if (this.actualValue.Value is IParameterizedNamedItem) PopulateParameterConfigurations(this.actualValue.Value as IParameterizedNamedItem );25 if (this.actualValue.Value is IParameterizedNamedItem) PopulateParameterConfigurations(this.actualValue.Value as IParameterizedNamedItem, this.discoverValidValues); 26 26 } else { 27 27 ClearParameterConfigurations(); … … 35 35 ClearParameterConfigurations(); 36 36 base.ActualValue = value; 37 if(this.actualValue.Value != null) PopulateParameterConfigurations(this.actualValue.Value as IParameterizedNamedItem );37 if(this.actualValue.Value != null) PopulateParameterConfigurations(this.actualValue.Value as IParameterizedNamedItem, this.discoverValidValues); 38 38 } 39 } 40 41 [Storable] 42 protected bool discoverValidValues; 43 public bool DiscoverValidValues { 44 get { return discoverValidValues; } 45 set { discoverValidValues = value; } 39 46 } 40 47 … … 45 52 this.ParameterConfigurations = new ItemList<IParameterConfiguration>(); 46 53 } 47 public ParameterizedValueConfiguration(IItem value, Type valueDataType )54 public ParameterizedValueConfiguration(IItem value, Type valueDataType, bool discoverValidValues) 48 55 : base(value, valueDataType) { 56 this.discoverValidValues = discoverValidValues; 49 57 } 50 58 protected ParameterizedValueConfiguration(ParameterizedValueConfiguration original, Cloner cloner) 51 59 : base(original, cloner) { 60 this.discoverValidValues = original.discoverValidValues; 52 61 this.ParameterConfigurations = cloner.Clone(original.parameterConfigurations); 53 62 } … … 57 66 #endregion 58 67 59 protected virtual void PopulateParameterConfigurations(IParameterizedNamedItem parameterizedItem ) {68 protected virtual void PopulateParameterConfigurations(IParameterizedNamedItem parameterizedItem, bool discoverValidValues) { 60 69 foreach (var childParameter in parameterizedItem.Parameters) { 61 var pc = ParameterConfiguration.Create(parameterizedItem, childParameter); 62 if (pc != null) this.parameterConfigurations.Add(pc); 70 IValueParameter valueParameter = childParameter as IValueParameter; 71 if (valueParameter != null) { 72 var pc = new ParameterConfiguration(valueParameter.Name, valueParameter, discoverValidValues); 73 this.parameterConfigurations.Add(pc); 74 } 63 75 } 64 76 } … … 71 83 get { 72 84 StringBuilder sb = new StringBuilder(); 73 if ( this.Optimize&& this.ParameterConfigurations.Count > 0) {85 if ((this.Optimize) && this.ParameterConfigurations.Count > 0) { 74 86 var parameterInfos = new List<string>(); 75 87 foreach (var pc in this.ParameterConfigurations) { -
branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/ValueConfigurations/ValueConfiguration.cs
r5653 r5665 2 2 using System.Collections.Generic; 3 3 using System.Drawing; 4 using System.Linq;5 4 using HeuristicLab.Common; 6 5 using HeuristicLab.Core; 7 6 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 8 using HeuristicLab.PluginInfrastructure;9 7 10 8 namespace HeuristicLab.Problems.MetaOptimization { … … 74 72 #region Constructors and Cloning 75 73 public ValueConfiguration(IItem value, Type valueDataType) { 76 var validTypes = ApplicationManager.Manager.GetTypes(valueDataType).OrderBy(x => x.Name).ToArray();77 74 this.ActualValue = new ConstrainedValue(value, valueDataType, new ItemSet<IItem> { value }, false); 78 75 this.IsOptimizable = true;
Note: See TracChangeset
for help on using the changeset viewer.