Class: YPetri::Simulation::TransitionRepresentation
- Inherits:
-
NodeRepresentation
- Object
- NodeRepresentation
- YPetri::Simulation::TransitionRepresentation
- Defined in:
- lib/y_petri/simulation/transition_representation/S.rb,
lib/y_petri/simulation/transition_representation.rb,
lib/y_petri/simulation/transition_representation/T.rb,
lib/y_petri/simulation/transition_representation/s.rb,
lib/y_petri/simulation/transition_representation/t.rb,
lib/y_petri/simulation/transition_representation/TS.rb,
lib/y_petri/simulation/transition_representation/Ts.rb,
lib/y_petri/simulation/transition_representation/tS.rb,
lib/y_petri/simulation/transition_representation/ts.rb,
lib/y_petri/simulation/transition_representation/types.rb
Overview
A mixin with transition types.
Defined Under Namespace
Modules: Type_A, Type_S, Type_T, Type_TS, Type_Ts, Type_a, Type_s, Type_t, Type_tS, Type_ts, Types
Instance Attribute Summary collapse
-
#codomain ⇒ Object
readonly
Returns the value of attribute codomain.
-
#domain ⇒ Object
readonly
Returns the value of attribute domain.
-
#function ⇒ Object
readonly
source transition function.
Attributes inherited from NodeRepresentation
Instance Method Summary collapse
-
#codomain_assignment_code(vector: (fail ArgumentError, "No vector!"), source: (fail ArgumentError, "No source array!")) ⇒ Object
Builds a code string that assigns to the free places of the codomain.
-
#codomain_indices ⇒ Object
Returns the indices of this transition’s codomain in the marking vector.
-
#domain_access_code(vector: :m_vector) ⇒ Object
Builds a code string for accessing the domain directly from a marking vector, given as argument.
-
#domain_indices ⇒ Object
Returns the indices of this transition’s domain in the marking vector.
-
#free_codomain_indices ⇒ Object
Returns the indices of this transition’s codomain among the free places.
-
#free_domain_indices ⇒ Object
Returns the indices of this transition’s domain among the free places.
-
#increment_by_codomain_code(vector: (fail ArgumentError, "No vector!"), source: (fail ArgumentError, "No source array!")) ⇒ Object
Builds a closure that increments a vector with this transition’s codomain.
-
#initialize(net_transition) ⇒ TransitionRepresentation
constructor
Expect a single YPetri place as an argument.
Methods inherited from NodeRepresentation
Constructor Details
#initialize(net_transition) ⇒ TransitionRepresentation
Expect a single YPetri place as an argument.
16 17 18 19 20 |
# File 'lib/y_petri/simulation/transition_representation.rb', line 16 def initialize net_transition super @domain, @codomain = Places( source.domain ), Places( source.codomain ) type_init end |
Instance Attribute Details
#codomain ⇒ Object (readonly)
Returns the value of attribute codomain.
11 12 13 |
# File 'lib/y_petri/simulation/transition_representation.rb', line 11 def codomain @codomain end |
#domain ⇒ Object (readonly)
Returns the value of attribute domain.
11 12 13 |
# File 'lib/y_petri/simulation/transition_representation.rb', line 11 def domain @domain end |
#function ⇒ Object (readonly)
source transition function
12 13 14 |
# File 'lib/y_petri/simulation/transition_representation.rb', line 12 def function @function end |
Instance Method Details
#codomain_assignment_code(vector: (fail ArgumentError, "No vector!"), source: (fail ArgumentError, "No source array!")) ⇒ Object
Builds a code string that assigns to the free places of the codomain.
56 57 58 59 60 61 |
# File 'lib/y_petri/simulation/transition_representation.rb', line 56 def codomain_assignment_code vector: (fail ArgumentError, "No vector!"), source: (fail ArgumentError, "No source array!") Matrix.column_vector_assignment_code( vector: vector, indices: free_codomain_indices, source: source ) end |
#codomain_indices ⇒ Object
Returns the indices of this transition’s codomain in the marking vector.
30 31 32 |
# File 'lib/y_petri/simulation/transition_representation.rb', line 30 def codomain_indices codomain.map { |p| places.index p } end |
#domain_access_code(vector: :m_vector) ⇒ Object
Builds a code string for accessing the domain directly from a marking vector, given as argument.
49 50 51 52 |
# File 'lib/y_petri/simulation/transition_representation.rb', line 49 def domain_access_code( vector: :m_vector ) Matrix.column_vector_access_code( vector: vector, indices: domain_indices ) end |
#domain_indices ⇒ Object
Returns the indices of this transition’s domain in the marking vector.
24 25 26 |
# File 'lib/y_petri/simulation/transition_representation.rb', line 24 def domain_indices domain.map { |p| places.index p } end |
#free_codomain_indices ⇒ Object
Returns the indices of this transition’s codomain among the free places.
42 43 44 |
# File 'lib/y_petri/simulation/transition_representation.rb', line 42 def free_codomain_indices codomain.map { |p| free_places.index p } end |
#free_domain_indices ⇒ Object
Returns the indices of this transition’s domain among the free places.
36 37 38 |
# File 'lib/y_petri/simulation/transition_representation.rb', line 36 def free_domain_indices domain.map { |p| free_places.index p } end |
#increment_by_codomain_code(vector: (fail ArgumentError, "No vector!"), source: (fail ArgumentError, "No source array!")) ⇒ Object
Builds a closure that increments a vector with this transition’s codomain.
65 66 67 68 69 70 |
# File 'lib/y_petri/simulation/transition_representation.rb', line 65 def increment_by_codomain_code vector: (fail ArgumentError, "No vector!"), source: (fail ArgumentError, "No source array!") Matrix.column_vector_increment_by_array_code vector: vector, indices: free_codomain_indices, source: source end |