using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using HeuristicLab.Common; using HeuristicLab.Problems.GrammaticalOptimization; namespace HeuristicLab.Algorithms.Bandits.GrammarPolicies { public class RandomPolicy : GrammarPolicy { public RandomPolicy(IProblem problem, bool useCanonicalRepresentation) : base(problem, useCanonicalRepresentation) { } public override bool TrySelect(Random random, string curState, IEnumerable afterStates, out int selectedStateIdx) { // never fail => allows re-visits of terminal states selectedStateIdx = random.Next(afterStates.Count()); return true; } } }