Changeset 11732 for branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Algorithms.GrammaticalOptimization/AlternativesContextSampler.cs
- Timestamp:
- 01/07/15 09:21:46 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Algorithms.GrammaticalOptimization/AlternativesContextSampler.cs
r11730 r11732 17 17 private readonly Random random; 18 18 private readonly int contextLen; 19 private readonly Func<Random, int, IPolicy> policyFactory;19 private readonly IPolicy policy; 20 20 21 public AlternativesContextSampler(IProblem problem, Random random, int maxLen, int contextLen, Func<Random, int, IPolicy> policyFactory) {21 public AlternativesContextSampler(IProblem problem, Random random, int maxLen, int contextLen, IPolicy policy) { 22 22 this.maxLen = maxLen; 23 23 this.problem = problem; 24 24 this.random = random; 25 25 this.contextLen = contextLen; 26 this.policy Factory = policyFactory;26 this.policy = policy; 27 27 } 28 28 … … 32 32 for (int i = 0; i < maxIterations; i++) { 33 33 var sentence = SampleSentence(problem.Grammar).ToString(); 34 var quality = problem.Evaluate(sentence) / problem. GetBestKnownQuality(maxLen);34 var quality = problem.Evaluate(sentence) / problem.BestKnownQuality(maxLen); 35 35 DistributeReward(quality); 36 36 … … 45 45 46 46 47 private Dictionary<string, IPolicy > ntPolicy;47 private Dictionary<string, IPolicyActionInfo[]> contextActionInfos; 48 48 private List<Tuple<string, int>> updateChain; 49 49 50 50 private void InitPolicies(IGrammar grammar) { 51 this. ntPolicy = new Dictionary<string, IPolicy>();51 this.contextActionInfos = new Dictionary<string, IPolicyActionInfo[]>(); 52 52 this.updateChain = new List<Tuple<string, int>>(); 53 53 } … … 83 83 var lft = phrase.Subsequence(startIdx, endIdx - startIdx + 1).ToString(); 84 84 lft = problem.Hash(lft); 85 if (! ntPolicy.ContainsKey(lft)) {86 ntPolicy.Add(lft, policyFactory(random, g.GetAlternatives(nt).Count()));85 if (!contextActionInfos.ContainsKey(lft)) { 86 contextActionInfos.Add(lft, g.GetAlternatives(nt).Select(_ => policy.CreateActionInfo()).ToArray()); 87 87 } 88 var selectedAltIdx = ntPolicy[lft].SelectAction();88 var selectedAltIdx = policy.SelectAction(random, contextActionInfos[lft]); 89 89 selectedAlt = alts.ElementAt(selectedAltIdx); 90 90 updateChain.Add(Tuple.Create(lft, selectedAltIdx)); … … 103 103 var lft = e.Item1; 104 104 var action = e.Item2; 105 ntPolicy[lft].UpdateReward(action,reward);105 contextActionInfos[lft][action].UpdateReward(reward); 106 106 } 107 107 }
Note: See TracChangeset
for help on using the changeset viewer.