Changeset 15334 for branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Encoding
- Timestamp:
- 08/21/17 11:33:53 (7 years ago)
- Location:
- branches/PushGP/HeuristicLab.PushGP
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PushGP/HeuristicLab.PushGP
- Property svn:ignore
-
old new 1 1 *.user 2 packages 3 TestResults
-
- Property svn:ignore
-
branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Encoding/PlushEncoding.cs
r15289 r15334 27 27 minLengthParameter = new FixedValueParameter<IntValue>(Name + ".MinLength", new IntValue(25)); 28 28 maxLengthParameter = new FixedValueParameter<IntValue>(Name + ".MaxLength", new IntValue(100)); 29 minCloseParameter = new FixedValueParameter<IntValue>(Name + ".MinClose", new IntValue(0));30 29 maxCloseParameter = new FixedValueParameter<IntValue>(Name + ".MaxClose", new IntValue(3)); 31 30 closeBiasLevelParameter = new FixedValueParameter<DoubleValue>(Name + ".CloseBiasLevel", new DoubleValue(3d)); 32 31 instructionsParameter = new ValueParameter<IExpressionsConfiguration>(Name + ".Instructions"); 33 32 ercOptionsParameter = new ValueParameter<ErcOptions>(Name + ".ErcOptions"); 34 inInstructionProbabilityParameter = new FixedValueParameter<PercentValue>(Name + ".InInstructionProbability" );33 inInstructionProbabilityParameter = new FixedValueParameter<PercentValue>(Name + ".InInstructionProbability", new PercentValue(0.1)); 35 34 36 35 Parameters.Add(minLengthParameter); 37 36 Parameters.Add(maxLengthParameter); 38 Parameters.Add(minCloseParameter);39 37 Parameters.Add(maxCloseParameter); 40 38 Parameters.Add(closeBiasLevelParameter); … … 78 76 ConfigureOperators(Operators); 79 77 } 80 private void OnMinCloseParameterChanged() {81 RegisterMinCloseParameterEvents();82 ConfigureOperators(Operators);83 }84 78 private void OnMaxCloseParameterChanged() { 85 79 RegisterMaxCloseParameterEvents(); … … 106 100 RegisterMinLengthParameterEvents(); 107 101 RegisterMaxLengthParameterEvents(); 108 RegisterMinCloseParameterEvents();109 102 RegisterMaxCloseParameterEvents(); 110 103 RegisterCloseBiasLevelParameterEvents(); … … 124 117 } 125 118 126 private void RegisterMinCloseParameterEvents() {127 MinCloseParameter.ValueChanged += (o, s) => ConfigureOperators(Operators);128 MinCloseParameter.Value.ValueChanged += (o, s) => ConfigureOperators(Operators);129 }130 131 119 private void RegisterMaxCloseParameterEvents() { 132 120 MaxCloseParameter.ValueChanged += (o, s) => ConfigureOperators(Operators); … … 156 144 #region Encoding Parameters 157 145 [Storable] 158 private I FixedValueParameter<IntValue> minLengthParameter;159 public I FixedValueParameter<IntValue> MinLengthParameter146 private IValueParameter<IntValue> minLengthParameter; 147 public IValueParameter<IntValue> MinLengthParameter 160 148 { 161 149 get { return minLengthParameter; } … … 174 162 175 163 [Storable] 176 private I FixedValueParameter<IntValue> maxLengthParameter;177 public I FixedValueParameter<IntValue> MaxLengthParameter164 private IValueParameter<IntValue> maxLengthParameter; 165 public IValueParameter<IntValue> MaxLengthParameter 178 166 { 179 167 get { return maxLengthParameter; } … … 192 180 193 181 [Storable] 194 private IFixedValueParameter<IntValue> minCloseParameter; 195 public IFixedValueParameter<IntValue> MinCloseParameter 196 { 197 get { return minCloseParameter; } 198 set 199 { 200 if (value == null) throw new ArgumentNullException("Min close parameter must not be null."); 201 if (value.Value == null) throw new ArgumentNullException("Min close parameter value must not be null."); 202 if (minCloseParameter == value) return; 203 204 if (minCloseParameter != null) Parameters.Remove(minCloseParameter); 205 minCloseParameter = value; 206 Parameters.Add(minCloseParameter); 207 OnMinCloseParameterChanged(); 208 } 209 } 210 211 [Storable] 212 private IFixedValueParameter<IntValue> maxCloseParameter; 213 public IFixedValueParameter<IntValue> MaxCloseParameter 182 private IValueParameter<IntValue> maxCloseParameter; 183 public IValueParameter<IntValue> MaxCloseParameter 214 184 { 215 185 get { return maxCloseParameter; } … … 228 198 229 199 [Storable] 230 private I FixedValueParameter<DoubleValue> closeBiasLevelParameter;231 public I FixedValueParameter<DoubleValue> CloseBiasLevelParameter200 private IValueParameter<DoubleValue> closeBiasLevelParameter; 201 public IValueParameter<DoubleValue> CloseBiasLevelParameter 232 202 { 233 203 get { return closeBiasLevelParameter; } … … 246 216 247 217 [Storable] 248 private I FixedValueParameter<PercentValue> inInstructionProbabilityParameter;249 public I FixedValueParameter<PercentValue> InInstructionProbabilityParameter218 private IValueParameter<PercentValue> inInstructionProbabilityParameter; 219 public IValueParameter<PercentValue> InInstructionProbabilityParameter 250 220 { 251 221 get { return inInstructionProbabilityParameter; } … … 321 291 } 322 292 323 public int MinClose324 {325 get { return MinCloseParameter.Value.Value; }326 set { MinCloseParameter.Value.Value = value; }327 }328 329 293 public int MaxClose 330 294 { … … 341 305 342 306 #region Operator Discovery 343 private static readonly IEnumerable<Type> encodingSpecificOperatorTypes;307 private static readonly IEnumerable<Type> EncodingSpecificOperatorTypes; 344 308 static PlushEncoding() { 345 encodingSpecificOperatorTypes = new List<Type>() {309 EncodingSpecificOperatorTypes = new List<Type>() { 346 310 typeof (IPlushOperator), 347 311 typeof (IPlushCreator), … … 353 317 private void DiscoverOperators() { 354 318 var assembly = typeof(IPlushOperator).Assembly; 355 var discoveredTypes = ApplicationManager.Manager.GetTypes( encodingSpecificOperatorTypes, assembly, true, false, false);319 var discoveredTypes = ApplicationManager.Manager.GetTypes(EncodingSpecificOperatorTypes, assembly, true, false, false); 356 320 var operators = discoveredTypes.Select(t => (IOperator)Activator.CreateInstance(t)); 357 321 var newOperators = operators.Except(Operators, new TypeEqualityComparer<IOperator>()).ToList(); … … 374 338 creator.MinLengthParameter.ActualName = MinLengthParameter.Name; 375 339 creator.MaxLengthParameter.ActualName = MaxLengthParameter.Name; 376 creator.MinCloseParameter.ActualName = MinCloseParameter.Name; 377 creator.MaxCloseParameter.ActualName = MinCloseParameter.Name; 340 creator.MaxCloseParameter.ActualName = MaxCloseParameter.Name; 378 341 creator.CloseBiasLevelParameter.ActualName = CloseBiasLevelParameter.Name; 379 342 creator.ErcOptionsParameter.ActualName = ErcOptionsParameter.Name; -
branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Encoding/PlushEntry.cs
r15275 r15334 9 9 public PlushEntry() { } 10 10 11 public PlushEntry(Expression instruction = null, int close = 0, bool silent = false) { 12 Instruction = instruction; 13 Close = close; 14 Silent = silent; 15 } 16 17 [StorableConstructor] 11 18 public PlushEntry(bool deserializing) : base(deserializing) { } 12 19 … … 14 21 Instruction = cloner.Clone(origin.Instruction); 15 22 Close = origin.Close; 23 Silent = origin.Silent; 16 24 } 17 25 … … 20 28 [Storable] 21 29 public int Close { get; set; } 30 [Storable] 31 public bool Silent { get; set; } 22 32 23 33 public override IDeepCloneable Clone(Cloner cloner) { -
branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Encoding/PlushVector.cs
r15289 r15334 1 1 namespace HeuristicLab.Problems.ProgramSynthesis.Push.Encoding { 2 2 using System.Collections.Generic; 3 4 3 using HeuristicLab.Common; 5 4 using HeuristicLab.Core; … … 9 8 10 9 [StorableClass] 11 public class PlushVector : Item {10 public sealed class PlushVector : Item { 12 11 13 12 [Storable] … … 22 21 23 22 [StorableConstructor] 24 p ublicPlushVector(bool deserializing) : base(deserializing) {23 private PlushVector(bool deserializing) : base(deserializing) { 25 24 } 26 25 27 26 public PlushVector(PlushVector origin, Cloner cloner) : base(origin, cloner) { 28 entries = new List<PlushEntry>(origin.entries); 27 entries = new List<PlushEntry>(origin.entries.Count); 28 for (var i = 0; i < origin.entries.Count; i++) { 29 entries.Add(cloner.Clone(origin.entries[i])); 30 } 31 29 32 pushProgram = origin.pushProgram; 30 33 } … … 62 65 var instructions = new List<Expression>(); 63 66 64 for (var i = currentIndex; i < entries.Count; i++) { 65 var entry = entries[i]; 67 for (; currentIndex < entries.Count; currentIndex++) { 68 var entry = entries[currentIndex]; 69 70 if (entry.Silent) 71 continue; 72 73 close += entry.Close; 74 instructions.Add(entry.Instruction); 75 76 PushExpressionAttribute attribute; 66 77 var instructionType = entry.Instruction.GetType(); 67 78 68 close += entry.Close;69 70 PushExpressionAttribute attribute;71 79 if (ExpressionTable.TypeToAttributeTable.TryGetValue(instructionType, out attribute)) { 72 for (var blockIdx = 0u; blockIdx < attribute.ExecIn && currentIndex < entries.Count; blockIdx++) { 73 if (close != 0) { 80 for (var blockIdx = 0u; blockIdx < attribute.RequiredBlockCount; blockIdx++) { 81 if (close == 0 && currentIndex < entries.Count) { 82 currentIndex++; 83 var subProgram = FromPlush(ref currentIndex, ref close, depth + 1); 84 instructions.Add(subProgram); 85 } else { 74 86 close--; 75 87 instructions.Add(PushProgram.Empty); 76 } else {77 currentIndex++;78 var subProgram = FromPlush(ref currentIndex, ref close, depth + 1);79 var subExpression = subProgram.Count == 1 ? subProgram.Expressions[0] : subProgram;80 81 instructions.Add(subExpression);82 88 } 83 89 } 84 90 } 85 86 instructions.Add(entry.Instruction);87 91 88 92 if (close > 0 && depth > 0) { … … 96 100 } 97 101 102 instructions.Reverse(); 98 103 return new PushProgram(instructions); 99 104 }
Note: See TracChangeset
for help on using the changeset viewer.