Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/14/11 18:49:46 (13 years ago)
Author:
cneumuel
Message:

#1215

  • some fixes
Location:
branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/SymbolicExpressionGrammar
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/SymbolicExpressionGrammar/SymbolValueConfiguration.cs

    r6023 r6197  
    1 using System.Collections.Generic;
     1using System;
     2using System.Collections.Generic;
    23using System.Linq;
    34using HeuristicLab.Common;
     
    1112  [StorableClass]
    1213  public class SymbolValueConfiguration : ParameterizedValueConfiguration {
     14    [Storable]
     15    private IOptimizable parentOptimizable;
     16    public IOptimizable ParentOptimizable {
     17      get { return parentOptimizable; }
     18      set { this.parentOptimizable = value; }
     19    }
    1320
    1421    #region Constructors and Cloning
     
    2128      this.Optimize = false;
    2229      this.Name = symbol.Name;
    23       this.actualValue = new ConstrainedValue(symbol, symbol.GetType(), new ItemSet<IItem> { symbol }, false);
     30      this.ActualValue = new ConstrainedValue(symbol, symbol.GetType(), new ItemSet<IItem> { symbol }, false);
    2431    }
    2532    protected SymbolValueConfiguration(SymbolValueConfiguration original, Cloner cloner)
    2633      : base(original, cloner) {
     34      RegisterInitialFrequencyEvents();
     35      this.parentOptimizable = cloner.Clone(original.parentOptimizable);
    2736    }
    2837    public override IDeepCloneable Clone(Cloner cloner) {
    2938      return new SymbolValueConfiguration(this, cloner);
     39    }
     40    [StorableHook(HookType.AfterDeserialization)]
     41    private void AfterDeserialization() {
     42      RegisterInitialFrequencyEvents();
    3043    }
    3144    #endregion
     
    3346    protected override void PopulateParameterConfigurations(IItem item, bool discoverValidValues) {
    3447      this.ClearParameterConfigurations();
    35 
    3648      var symbol = (Symbol)item;
    3749
     
    4153      var initialFrequencyParameterConfiguration = new ParameterConfiguration("InitialFrequency", typeof(Symbol), new DoubleValue(symbol.InitialFrequency), initialFrequencyValueConfigurations);
    4254      this.parameterConfigurations.Add(initialFrequencyParameterConfiguration);
     55      RegisterInitialFrequencyEvents();
    4356
    4457      var constant = symbol as Constant;
     
    7487
    7588    public virtual void Parameterize(Symbol symbol) {
    76       symbol.InitialFrequency = GetDoubleValue("InitialFrequency");
    77      
     89      var actualValueSymbol = this.ActualValue.Value as Symbol;
     90      symbol.InitialFrequency = parentOptimizable.Optimize ? GetDoubleValue("InitialFrequency") : actualValueSymbol.InitialFrequency;
     91
    7892      var constant = symbol as Constant;
    7993      if (constant != null) {
    80         constant.MinValue = GetDoubleValue("MinValue");
    81         constant.MaxValue = GetDoubleValue("MaxValue");
    82         constant.ManipulatorMu = GetDoubleValue("ManipulatorMu");
    83         constant.ManipulatorSigma = GetDoubleValue("ManipulatorSigma");
    84         constant.MultiplicativeManipulatorSigma = GetDoubleValue("MultiplicativeManipulatorSigma");
     94        var actualValueConstant = this.ActualValue.Value as Constant;
     95        constant.MinValue = parentOptimizable.Optimize ? GetDoubleValue("MinValue") : actualValueConstant.MinValue;
     96        constant.MaxValue = parentOptimizable.Optimize ? GetDoubleValue("MaxValue") : actualValueConstant.MaxValue;
     97        constant.ManipulatorMu = parentOptimizable.Optimize ? GetDoubleValue("ManipulatorMu") : actualValueConstant.ManipulatorMu;
     98        constant.ManipulatorSigma = parentOptimizable.Optimize ? GetDoubleValue("ManipulatorSigma") : actualValueConstant.ManipulatorSigma;
     99        constant.MultiplicativeManipulatorSigma = parentOptimizable.Optimize ? GetDoubleValue("MultiplicativeManipulatorSigma") : actualValueConstant.MultiplicativeManipulatorSigma;
    85100      }
    86      
     101
    87102      var variable = symbol as HeuristicLab.Problems.DataAnalysis.Symbolic.Variable;
    88103      if (variable != null) {
    89         variable.WeightMu = GetDoubleValue("WeightMu");
    90         variable.WeightSigma = GetDoubleValue("WeightSigma");
    91         variable.WeightManipulatorMu = GetDoubleValue("WeightManipulatorMu");
    92         variable.WeightManipulatorSigma = GetDoubleValue("WeightManipulatorSigma");
    93         variable.MultiplicativeWeightManipulatorSigma = GetDoubleValue("MultiplicativeWeightManipulatorSigma");
     104        var actualValueVariable = this.ActualValue.Value as HeuristicLab.Problems.DataAnalysis.Symbolic.Variable;
     105        variable.WeightMu = parentOptimizable.Optimize ? GetDoubleValue("WeightMu") : actualValueVariable.WeightMu;
     106        variable.WeightSigma = parentOptimizable.Optimize ? GetDoubleValue("WeightSigma") : actualValueVariable.WeightSigma;
     107        variable.WeightManipulatorMu = parentOptimizable.Optimize ? GetDoubleValue("WeightManipulatorMu") : actualValueVariable.WeightManipulatorMu;
     108        variable.WeightManipulatorSigma = parentOptimizable.Optimize ? GetDoubleValue("WeightManipulatorSigma") : actualValueVariable.WeightManipulatorSigma;
     109        variable.MultiplicativeWeightManipulatorSigma = parentOptimizable.Optimize ? GetDoubleValue("MultiplicativeWeightManipulatorSigma") : actualValueVariable.MultiplicativeWeightManipulatorSigma;
    94110      }
    95111    }
     
    97113    private double GetDoubleValue(string name) {
    98114      return ((DoubleValue)ParameterConfigurations.Single(x => x.Name == name).ActualValue.Value).Value;
     115    }
     116
     117    private void RegisterInitialFrequencyEvents() {
     118      this.parameterConfigurations.Single(x => x.Name == "InitialFrequency").ToStringChanged += new EventHandler(initialFrequencyParameterConfiguration_ToStringChanged);
     119    }
     120    private void DeregisterInitialFrequencyEvents() {
     121      this.parameterConfigurations.Single(x => x.Name == "InitialFrequency").ToStringChanged -= new EventHandler(initialFrequencyParameterConfiguration_ToStringChanged);
     122    }
     123
     124    protected virtual void initialFrequencyParameterConfiguration_ToStringChanged(object sender, EventArgs e) {
     125      OnToStringChanged();
    99126    }
    100127
  • branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/SymbolicExpressionGrammar/SymbolicExpressionGrammarValueConfiguration.cs

    r6023 r6197  
    2828      var grammar = (ISymbolicExpressionGrammar)item;
    2929      foreach (Symbol symbol in grammar.Symbols) {
    30         var pc = new SingleValuedParameterConfiguration(symbol.Name, new SymbolValueConfiguration(symbol));
     30        var svc = new SymbolValueConfiguration(symbol);
     31        var pc = new SingleValuedParameterConfiguration(symbol.Name, svc);
     32        svc.ParentOptimizable = pc;
    3133        SetOptimizeIfOnlyOneValueConfiguration(pc);
    3234        this.parameterConfigurations.Add(pc);
     
    3638    public virtual void Parameterize(ISymbolicExpressionGrammar grammar) {
    3739      foreach (Symbol symbol in grammar.Symbols) {
    38         ((SymbolValueConfiguration)this.parameterConfigurations.Single(pc => pc.Name == symbol.Name).ValueConfigurations.First()).Parameterize(symbol);
     40        var symbolValueConfiguration = (SymbolValueConfiguration)this.parameterConfigurations.Single(pc => pc.Name == symbol.Name).ValueConfigurations.First();
     41        symbolValueConfiguration.Parameterize(symbol);
    3942      }
    4043    }
Note: See TracChangeset for help on using the changeset viewer.