public void ExportAdjacencies() { System.IO.StreamWriter writerAdj = new System.IO.StreamWriter("C:\\Users\\Eric\\Desktop\\Adjacencies.csv"); ModelBasedValue <int[], int[]> model = (ModelBasedValue <int[], int[]>)agent._actionValue; IEqualityComparer <int[]> comparer = new IntArrayComparer(); List <int[]> allStates = model.Qtable.Keys.ToList(); foreach (int[] state in allStates) { foreach (int[] action in availableActions) { int[] neighbor = model.PredictNextState(state, action); if (!(neighbor == null)) { writerAdj.WriteLine(string.Join(",", state) + "," + string.Join(",", neighbor)); } } } writerAdj.Flush(); writerAdj.Close(); }
public static List <ValidationRuleResult> ExpandResult(Taxonomy taxonomy, Dictionary <int, int[]> factkeydict, ValidationRuleResult ruleresult, List <int> groupaspects) { var result = new List <ValidationRuleResult>(); var rule = taxonomy.ValidationRules.FirstOrDefault(i => i.ID == ruleresult.ID); var ruleparameterdictionary = rule.Parameters.ToDictionary(i => i.Name); var ruleresultparameterdictionary = ruleresult.Parameters.ToDictionary(i => i.Name); var factparameterids = ruleparameterdictionary.Where(i => !i.Value.IsGeneral).Select(i => i.Key).ToList(); //get the projection var projections = new Dictionary <int[], Dictionary <string, List <int[]> > >(new IntArrayEqualityComparer()); foreach (var parmaeterid in factparameterids) { var rulep = ruleparameterdictionary[parmaeterid]; var p = ruleresultparameterdictionary[parmaeterid]; foreach (var fact in p.FactIDs) { var factid = Utilities.Converters.FastParse(fact.Substring(2)); var taxonomykey = factkeydict[factid]; var key = GetPartsOfMainParts(taxonomy, taxonomykey, groupaspects); var keyarray = key.ToArray(); if (!projections.ContainsKey(keyarray)) { projections.Add(keyarray, new Dictionary <string, List <int[]> >()); } var paramdict = projections[keyarray]; if (!paramdict.ContainsKey(parmaeterid)) { paramdict.Add(parmaeterid, new List <int[]>()); } paramdict[parmaeterid].Add(taxonomykey); } } //doing the implicit filtering var ic = new IntArrayComparer(); if (projections.Count > 0) { foreach (var projectionkey in projections) { var projectedresult = ruleresult.Copy(); result.Add(projectedresult); foreach (var p in projectedresult.Parameters) { //var pfacts = ruleresult.Parameters.FirstOrDefault(i => i.Name == p.Name).InstanceFacts; //var facts = pfacts.Where(i => ic.Contains(i.InstanceKey, projectionkey)); var paramdict = projections[projectionkey.Key]; if (paramdict.ContainsKey(p.Name)) { var facts = paramdict[p.Name]; p.FactIDs = facts.Select(i => String.Format("T:{0}", taxonomy.FactsManager.GetFactIndex(i))).ToList(); p.InstanceFacts.Clear(); //p.InstanceFacts = facts.ToList(); } else { p.FactIDs.Clear(); p.InstanceFacts.Clear(); p.Value = ruleparameterdictionary[p.Name].FallBackValue; } } //SetCells(instance, projectedresult); } } else { result.Add(ruleresult); } return(result); }
public void ExportAdjacencies() { System.IO.StreamWriter writerAdj = new System.IO.StreamWriter("C:\\Users\\Eric\\Desktop\\Adjacencies.csv"); ModelBasedValue<int[], int[]> model = (ModelBasedValue<int[], int[]>)agent._actionValue; IEqualityComparer<int[]> comparer = new IntArrayComparer(); List<int[]> allStates = model.Qtable.Keys.ToList(); foreach (int[] state in allStates) { foreach (int[] action in availableActions) { int[] neighbor = model.PredictNextState(state, action); if (!(neighbor== null)) writerAdj.WriteLine(string.Join(",", state) + "," + string.Join(",", neighbor)); } } writerAdj.Flush(); writerAdj.Close(); }