public void AddState(EpisState episState) { if (!States.Contains(episState)) { States.Add(episState); } }
private bool IsStateAlone(EpisState state) { foreach (var relation in TransitionRelation) { if (state.Equals(relation.Right) || state.Equals(relation.Left)) { return(false); } } return(true); }
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); }
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(); }
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); } } }
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); } } }