Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/12/18 15:12:29 (6 years ago)
Author:
abeham
Message:

#2457:

  • Restructured FLA plugin (moved files between folders, added common base classes)
  • Fixed AC1 in QAPDirectedWalk (ouch!)
  • Changed PartialInformationContent to be in range [0;1]
  • Added unit test for information analysis
  • Refactored information analysis and discard ability to use more symbols than 2 as shapes
Location:
branches/2457_ExpertSystem
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2457_ExpertSystem

    • Property svn:ignore
      •  

        old new  
        55.gitignore
        66.vs
         7packages
  • branches/2457_ExpertSystem/HeuristicLab.Analysis.FitnessLandscape/3.3/CharacteristicCalculator/RandomWalkCalculator.cs

    r14690 r16137  
    2020#endregion
    2121
     22using System.Collections.Generic;
     23using System.Linq;
    2224using HeuristicLab.Common;
    2325using HeuristicLab.Core;
     
    2527using HeuristicLab.Optimization;
    2628using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    27 using System;
    28 using System.Collections.Generic;
    29 using System.Linq;
    30 using System.Threading;
    3129
    3230namespace HeuristicLab.Analysis.FitnessLandscape {
    3331  [Item("Random Walk Calculator", "Calculates characteristics from a random walk.")]
    3432  [StorableClass]
    35   public class RandomWalkCalculator : NamedItem, ICharacteristicCalculator {
    36 
    37     [Storable]
    38     private IProblem problem;
    39     public IProblem Problem {
    40       get { return problem; }
    41       set {
    42         if (problem == value) return;
    43         problem = value;
    44         var soProblem = problem as ISingleObjectiveHeuristicOptimizationProblem;
    45         walker.Problem = soProblem;
    46       }
    47     }
    48 
    49     [Storable]
    50     private RandomWalk walker;
     33  public sealed class RandomWalkCalculator : AlgorithmCharacteristicCalculator<RandomWalk> {
    5134
    5235    [StorableConstructor]
    5336    private RandomWalkCalculator(bool deserializing) : base(deserializing) { }
    54     private RandomWalkCalculator(RandomWalkCalculator original, Cloner cloner)
    55       : base(original, cloner) {
    56       problem = cloner.Clone(original.problem);
    57       walker = cloner.Clone(original.walker);
    58       characteristics = cloner.Clone(original.characteristics);
    59     }
     37    private RandomWalkCalculator(RandomWalkCalculator original, Cloner cloner) : base(original, cloner) { }
    6038    public RandomWalkCalculator() : this(new RandomWalk()) { }
    61     public RandomWalkCalculator(RandomWalk walker) {
     39    public RandomWalkCalculator(RandomWalk walker) : base(walker) {
    6240      Name = ItemName;
    6341      Description = ItemDescription;
    64       this.walker = walker;
    6542      characteristics = new CheckedItemList<StringValue>(
    6643        new[] { "AutoCorrelation1", "CorrelationLength", "InformationContent",
     
    7451    }
    7552
    76     private CheckedItemList<StringValue> characteristics;
    77     public ReadOnlyCheckedItemList<StringValue> Characteristics {
    78       get { return characteristics.AsReadOnly(); }
     53    public override bool CanCalculate() {
     54      return base.CanCalculate() && Problem.Operators.Any(x => x is IManipulator);
    7955    }
    8056
    81     public bool CanCalculate() {
    82       return Problem is ISingleObjectiveHeuristicOptimizationProblem
    83         && Problem.Operators.Any(x => x is IManipulator);
    84     }
    85 
    86     public IEnumerable<IResult> Calculate() {
    87       walker.Prepare(true);
    88       using (var waitHandle = new AutoResetEvent(false)) {
    89         EventHandler evHandle = (sender, e) => {
    90           if (walker.ExecutionState == ExecutionState.Paused
    91           || walker.ExecutionState == ExecutionState.Stopped) waitHandle.Set();
    92         };
    93         walker.ExecutionStateChanged += evHandle;
    94         try {
    95           walker.Start();
    96           waitHandle.WaitOne();
    97         } finally { walker.ExecutionStateChanged -= evHandle; }
    98       }
    99       foreach (var p in characteristics.CheckedItems) {
    100         var resultName = "RandomWalk." + walker.MutatorParameter.Value.Name + "." + p.Value.Value;
    101         IResult result;
    102         if (walker.Results.TryGetValue(p.Value.Value, out result)) {
    103           yield return new Result(resultName, result.Value);
    104         } else yield return new Result(resultName, new DoubleValue(0));
    105       }
    106       walker.Prepare(true);
    107     }
    108 
    109     public void CollectParameterValues(IDictionary<string, IItem> values) {
    110       walker.CollectParameterValues(values);
    111     }
    112 
    113     public IKeyedItemCollection<string, IParameter> Parameters {
    114       get { return ((IParameterizedItem)walker).Parameters; }
     57    public override IEnumerable<IResult> Calculate() {
     58      foreach (var result in base.Calculate())
     59        yield return new Result("RandomWalk." + Algorithm.MutatorParameter.Value.Name + "." + result.Name, result.Value);
    11560    }
    11661  }
Note: See TracChangeset for help on using the changeset viewer.