Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.Algorithms.IteratedSentenceConstruction/HeuristicLab.Algorithms.IteratedSymbolicExpressionConstruction/3.3/Policies/RandomSymbolicExpressionConstructionPolicy.cs @ 12923

Last change on this file since 12923 was 12923, checked in by gkronber, 9 years ago

#2471

  • refactoring to use state value function V(s) instead of state/action value function Q(s,a)
  • added test case for artificial ant problem
File size: 1.7 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using HeuristicLab.Common;
5using HeuristicLab.Core;
6using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
7using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
8using HeuristicLab.Random;
9
10namespace HeuristicLab.Algorithms.IteratedSymbolicExpressionConstruction {
11  [StorableClass]
12  [Item("RandomSymbolicExpressionConstructionPolicy", "")]
13  public class RandomSymbolicExpressionConstructionPolicy : SymbolicExpressionConstructionPolicyBase {
14
15    public RandomSymbolicExpressionConstructionPolicy()
16      : base() {
17    }
18
19    protected override int Select(IReadOnlyList<object> followStates, IRandom random) {
20      var idxs = Enumerable.Range(0, followStates.Count);
21      return idxs.SampleRandom(random);
22    }
23
24    public sealed override void Update(IEnumerable<object> stateSequence, double quality) {
25
26      // ignore
27    }
28
29    protected override object CreateState(ISymbolicExpressionTreeNode root, List<ISymbol> actions, ISymbolicExpressionTreeNode parent, int childIdx) {
30      return null; // doesn't use state information
31    }
32
33    #region IItem
34    protected RandomSymbolicExpressionConstructionPolicy(RandomSymbolicExpressionConstructionPolicy original, Cloner cloner)
35      : base(original, cloner) {
36    }
37
38    [StorableConstructor]
39    protected RandomSymbolicExpressionConstructionPolicy(bool deserializing) : base(deserializing) { }
40
41    public override HeuristicLab.Common.IDeepCloneable Clone(HeuristicLab.Common.Cloner cloner) {
42      return new RandomSymbolicExpressionConstructionPolicy(this, cloner);
43    }
44
45    #endregion
46  }
47}
Note: See TracBrowser for help on using the repository browser.