protected void AddTransition(WithinAgentTransition <T> transition) { if (!_modelStates.Contains(transition.Origin)) { throw new ArgumentException( "This transition is invalid because the origin state is not part of this model"); } if (!_modelStates.Contains(transition.Destination)) { throw new ArgumentException( "This transition is invalid because the destination state is not part of this model"); } _allTransitions.Add(transition); transition.Origin.TransitionsFromThisState.Add(transition); transition.Origin.WithinHostTransitionsFromState.Add(transition); }
private void GeneratePermutationCache() { _cachedPermutations.Clear(); var k = WithinHostTransitionsFromState.Count; var permutationMaker = new AllPermutationsGenerator(k); foreach (var permutation in permutationMaker.AllPermutations) { var transitionPermutation = new WithinAgentTransition <T> [k]; for (var x = 0; x < k; x++) { var idx = permutation[x]; transitionPermutation[x] = WithinHostTransitionsFromState[idx]; } _cachedPermutations.Add(transitionPermutation); } _permutationCacheSize = WithinHostTransitionsFromState.Count; }