示例#1
0
 public bool Equals(EpisTransitionPair other)
 {
     if (other != null)
     {
         return Right.Equals(other.Right) && Left.Equals(other.Left);
     }
     return false;
 }
示例#2
0
 public bool Equals(EpisTransitionPair other)
 {
     if (other != null)
     {
         return(Right.Equals(other.Right) && Left.Equals(other.Left));
     }
     return(false);
 }
示例#3
0
        public AssossiativeSet <Agent> GetTagedAgentOfTransitionBetween(EpisState a, EpisState b)
        {
            EpisTransitionPair key = new EpisTransitionPair(a, b);

            key = TransitionRelation.Find(x => x.Equals(key));
            if (key == null)
            {
                return(null);
            }
            return(key.TagedAgents);
        }
示例#4
0
        public void CopyFrom(ModelConfiguration modelConfiguration)
        {
            Name = modelConfiguration.Name;
            EpisState[]          StateArray = new EpisState[modelConfiguration.States.Count];
            EpisTransitionPair[] TransArray = new EpisTransitionPair[modelConfiguration.TransitionRelation.Count];

            modelConfiguration.States.CopyTo(StateArray);
            modelConfiguration.TransitionRelation.CopyTo(TransArray);

            States             = StateArray.ToList();
            TransitionRelation = TransArray.ToList();
        }
示例#5
0
        private void AddTransition(EpisState a, EpisState b, AssossiativeSet <Agent> tags, bool unionTagsIfAlreadyAPair)
        {
            EpisTransitionPair newPair = new EpisTransitionPair(a, b)
            {
                TagedAgents = tags
            };

            EpisTransitionPair availablePair = TransitionRelation.Find(x => x.Equals(newPair));

            if (availablePair == null)
            {
                TransitionRelation.Add(newPair);
            }
            else
            {
                if (unionTagsIfAlreadyAPair)
                {
                    availablePair.TagedAgents.Union(tags);
                }
            }
        }
示例#6
0
        public void GenerateRawStates(List <Atomic> atomics, List <Agent> agents)
        {
            ClearStateList();
            int stateCount = (int)Math.Pow(2, atomics.Count);

            bool[] positivity = InitializeSingleValueArray(atomics.Count, false);
            for (int i = 0; i < stateCount; i++)
            {
                EpisState toAdd = new EpisState(atomics.ToArray(), positivity);
                AddState(toAdd);
                IncreamentBinarySeq(ref positivity);
            }
            foreach (var s1 in States)
            {
                foreach (var s2 in States)
                {
                    EpisTransitionPair trans = new EpisTransitionPair(s1, s2);
                    trans.TagedAgents = new AssossiativeSet <Agent>(agents);
                    TransitionRelation.Add(trans);
                }
            }
        }