Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/21/17 11:33:53 (7 years ago)
Author:
pkimmesw
Message:

#2665 Testet Problems, Testet error functions, Small fixes, Created HL files

Location:
branches/PushGP/HeuristicLab.PushGP
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/PushGP/HeuristicLab.PushGP

    • Property svn:ignore
      •  

        old new  
        11*.user
         2packages
         3TestResults
  • branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Encoding/PlushEncoding.cs

    r15289 r15334  
    2727      minLengthParameter = new FixedValueParameter<IntValue>(Name + ".MinLength", new IntValue(25));
    2828      maxLengthParameter = new FixedValueParameter<IntValue>(Name + ".MaxLength", new IntValue(100));
    29       minCloseParameter = new FixedValueParameter<IntValue>(Name + ".MinClose", new IntValue(0));
    3029      maxCloseParameter = new FixedValueParameter<IntValue>(Name + ".MaxClose", new IntValue(3));
    3130      closeBiasLevelParameter = new FixedValueParameter<DoubleValue>(Name + ".CloseBiasLevel", new DoubleValue(3d));
    3231      instructionsParameter = new ValueParameter<IExpressionsConfiguration>(Name + ".Instructions");
    3332      ercOptionsParameter = new ValueParameter<ErcOptions>(Name + ".ErcOptions");
    34       inInstructionProbabilityParameter = new FixedValueParameter<PercentValue>(Name + ".InInstructionProbability");
     33      inInstructionProbabilityParameter = new FixedValueParameter<PercentValue>(Name + ".InInstructionProbability", new PercentValue(0.1));
    3534
    3635      Parameters.Add(minLengthParameter);
    3736      Parameters.Add(maxLengthParameter);
    38       Parameters.Add(minCloseParameter);
    3937      Parameters.Add(maxCloseParameter);
    4038      Parameters.Add(closeBiasLevelParameter);
     
    7876      ConfigureOperators(Operators);
    7977    }
    80     private void OnMinCloseParameterChanged() {
    81       RegisterMinCloseParameterEvents();
    82       ConfigureOperators(Operators);
    83     }
    8478    private void OnMaxCloseParameterChanged() {
    8579      RegisterMaxCloseParameterEvents();
     
    106100      RegisterMinLengthParameterEvents();
    107101      RegisterMaxLengthParameterEvents();
    108       RegisterMinCloseParameterEvents();
    109102      RegisterMaxCloseParameterEvents();
    110103      RegisterCloseBiasLevelParameterEvents();
     
    124117    }
    125118
    126     private void RegisterMinCloseParameterEvents() {
    127       MinCloseParameter.ValueChanged += (o, s) => ConfigureOperators(Operators);
    128       MinCloseParameter.Value.ValueChanged += (o, s) => ConfigureOperators(Operators);
    129     }
    130 
    131119    private void RegisterMaxCloseParameterEvents() {
    132120      MaxCloseParameter.ValueChanged += (o, s) => ConfigureOperators(Operators);
     
    156144    #region Encoding Parameters
    157145    [Storable]
    158     private IFixedValueParameter<IntValue> minLengthParameter;
    159     public IFixedValueParameter<IntValue> MinLengthParameter
     146    private IValueParameter<IntValue> minLengthParameter;
     147    public IValueParameter<IntValue> MinLengthParameter
    160148    {
    161149      get { return minLengthParameter; }
     
    174162
    175163    [Storable]
    176     private IFixedValueParameter<IntValue> maxLengthParameter;
    177     public IFixedValueParameter<IntValue> MaxLengthParameter
     164    private IValueParameter<IntValue> maxLengthParameter;
     165    public IValueParameter<IntValue> MaxLengthParameter
    178166    {
    179167      get { return maxLengthParameter; }
     
    192180
    193181    [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
    214184    {
    215185      get { return maxCloseParameter; }
     
    228198
    229199    [Storable]
    230     private IFixedValueParameter<DoubleValue> closeBiasLevelParameter;
    231     public IFixedValueParameter<DoubleValue> CloseBiasLevelParameter
     200    private IValueParameter<DoubleValue> closeBiasLevelParameter;
     201    public IValueParameter<DoubleValue> CloseBiasLevelParameter
    232202    {
    233203      get { return closeBiasLevelParameter; }
     
    246216
    247217    [Storable]
    248     private IFixedValueParameter<PercentValue> inInstructionProbabilityParameter;
    249     public IFixedValueParameter<PercentValue> InInstructionProbabilityParameter
     218    private IValueParameter<PercentValue> inInstructionProbabilityParameter;
     219    public IValueParameter<PercentValue> InInstructionProbabilityParameter
    250220    {
    251221      get { return inInstructionProbabilityParameter; }
     
    321291    }
    322292
    323     public int MinClose
    324     {
    325       get { return MinCloseParameter.Value.Value; }
    326       set { MinCloseParameter.Value.Value = value; }
    327     }
    328 
    329293    public int MaxClose
    330294    {
     
    341305
    342306    #region Operator Discovery
    343     private static readonly IEnumerable<Type> encodingSpecificOperatorTypes;
     307    private static readonly IEnumerable<Type> EncodingSpecificOperatorTypes;
    344308    static PlushEncoding() {
    345       encodingSpecificOperatorTypes = new List<Type>() {
     309      EncodingSpecificOperatorTypes = new List<Type>() {
    346310        typeof (IPlushOperator),
    347311        typeof (IPlushCreator),
     
    353317    private void DiscoverOperators() {
    354318      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);
    356320      var operators = discoveredTypes.Select(t => (IOperator)Activator.CreateInstance(t));
    357321      var newOperators = operators.Except(Operators, new TypeEqualityComparer<IOperator>()).ToList();
     
    374338        creator.MinLengthParameter.ActualName = MinLengthParameter.Name;
    375339        creator.MaxLengthParameter.ActualName = MaxLengthParameter.Name;
    376         creator.MinCloseParameter.ActualName = MinCloseParameter.Name;
    377         creator.MaxCloseParameter.ActualName = MinCloseParameter.Name;
     340        creator.MaxCloseParameter.ActualName = MaxCloseParameter.Name;
    378341        creator.CloseBiasLevelParameter.ActualName = CloseBiasLevelParameter.Name;
    379342        creator.ErcOptionsParameter.ActualName = ErcOptionsParameter.Name;
  • branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Encoding/PlushEntry.cs

    r15275 r15334  
    99    public PlushEntry() { }
    1010
     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]
    1118    public PlushEntry(bool deserializing) : base(deserializing) { }
    1219
     
    1421      Instruction = cloner.Clone(origin.Instruction);
    1522      Close = origin.Close;
     23      Silent = origin.Silent;
    1624    }
    1725
     
    2028    [Storable]
    2129    public int Close { get; set; }
     30    [Storable]
     31    public bool Silent { get; set; }
    2232
    2333    public override IDeepCloneable Clone(Cloner cloner) {
  • branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Encoding/PlushVector.cs

    r15289 r15334  
    11namespace HeuristicLab.Problems.ProgramSynthesis.Push.Encoding {
    22  using System.Collections.Generic;
    3 
    43  using HeuristicLab.Common;
    54  using HeuristicLab.Core;
     
    98
    109  [StorableClass]
    11   public class PlushVector : Item {
     10  public sealed class PlushVector : Item {
    1211
    1312    [Storable]
     
    2221
    2322    [StorableConstructor]
    24     public PlushVector(bool deserializing) : base(deserializing) {
     23    private PlushVector(bool deserializing) : base(deserializing) {
    2524    }
    2625
    2726    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
    2932      pushProgram = origin.pushProgram;
    3033    }
     
    6265      var instructions = new List<Expression>();
    6366
    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;
    6677        var instructionType = entry.Instruction.GetType();
    6778
    68         close += entry.Close;
    69 
    70         PushExpressionAttribute attribute;
    7179        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 {
    7486              close--;
    7587              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);
    8288            }
    8389          }
    8490        }
    85 
    86         instructions.Add(entry.Instruction);
    8791
    8892        if (close > 0 && depth > 0) {
     
    96100      }
    97101
     102      instructions.Reverse();
    98103      return new PushProgram(instructions);
    99104    }
Note: See TracChangeset for help on using the changeset viewer.