예제 #1
0
        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);
        }
예제 #3
0
        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();
        }