y_petri 2.0.15 → 2.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/y_petri/{manipulator → agent}/hash_key_pointer.rb +2 -2
- data/lib/y_petri/agent/petri_net_related.rb +115 -0
- data/lib/y_petri/{manipulator → agent}/selection.rb +2 -1
- data/lib/y_petri/{manipulator/simulation_related_methods.rb → agent/simulation_related.rb} +93 -110
- data/lib/y_petri/agent.rb +22 -0
- data/lib/y_petri/core/timed/euler.rb +20 -0
- data/lib/y_petri/core/timed/pseudo_euler.rb +31 -0
- data/lib/y_petri/core/timed/quasi_euler.rb +23 -0
- data/lib/y_petri/core/timed.rb +70 -0
- data/lib/y_petri/core/timeless/pseudo_euler.rb +20 -0
- data/lib/y_petri/core/timeless.rb +12 -0
- data/lib/y_petri/core.rb +100 -0
- data/lib/y_petri/dsl.rb +66 -0
- data/lib/y_petri/fixed_assets.rb +7 -0
- data/lib/y_petri/net/element_access.rb +239 -0
- data/lib/y_petri/net/state/feature/delta.rb +88 -0
- data/lib/y_petri/net/state/feature/firing.rb +57 -0
- data/lib/y_petri/net/state/feature/flux.rb +58 -0
- data/lib/y_petri/net/state/feature/gradient.rb +75 -0
- data/lib/y_petri/net/state/feature/marking.rb +62 -0
- data/lib/y_petri/net/state/feature.rb +79 -0
- data/lib/y_petri/net/state/features/dataset.rb +135 -0
- data/lib/y_petri/net/state/features/record.rb +50 -0
- data/lib/y_petri/net/state/features.rb +126 -0
- data/lib/y_petri/net/state.rb +121 -0
- data/lib/y_petri/net/timed.rb +8 -0
- data/lib/y_petri/net/visualization.rb +3 -3
- data/lib/y_petri/net.rb +73 -77
- data/lib/y_petri/place.rb +8 -3
- data/lib/y_petri/simulation/dependency.rb +107 -0
- data/lib/y_petri/simulation/element_representation.rb +20 -0
- data/lib/y_petri/simulation/elements/access.rb +57 -0
- data/lib/y_petri/simulation/elements.rb +45 -0
- data/lib/y_petri/simulation/feature_set.rb +21 -0
- data/lib/y_petri/simulation/initial_marking/access.rb +55 -0
- data/lib/y_petri/simulation/initial_marking.rb +15 -0
- data/lib/y_petri/simulation/marking_clamps/access.rb +34 -0
- data/lib/y_petri/simulation/marking_clamps.rb +18 -0
- data/lib/y_petri/simulation/marking_vector/access.rb +106 -0
- data/lib/y_petri/simulation/marking_vector.rb +156 -0
- data/lib/y_petri/simulation/matrix.rb +64 -0
- data/lib/y_petri/simulation/place_mapping.rb +62 -0
- data/lib/y_petri/simulation/place_representation.rb +74 -0
- data/lib/y_petri/simulation/places/access.rb +121 -0
- data/lib/y_petri/simulation/places/clamped.rb +8 -0
- data/lib/y_petri/simulation/places/free.rb +8 -0
- data/lib/y_petri/simulation/places/types.rb +25 -0
- data/lib/y_petri/simulation/places.rb +41 -0
- data/lib/y_petri/simulation/recorder.rb +54 -0
- data/lib/y_petri/simulation/timed/recorder.rb +53 -0
- data/lib/y_petri/simulation/timed.rb +161 -261
- data/lib/y_petri/simulation/timeless/recorder.rb +25 -0
- data/lib/y_petri/simulation/timeless.rb +35 -0
- data/lib/y_petri/simulation/transition_representation/A.rb +58 -0
- data/lib/y_petri/simulation/transition_representation/S.rb +45 -0
- data/lib/y_petri/simulation/transition_representation/T.rb +80 -0
- data/lib/y_petri/simulation/transition_representation/TS.rb +46 -0
- data/lib/y_petri/simulation/transition_representation/Ts.rb +32 -0
- data/lib/y_petri/simulation/transition_representation/a.rb +30 -0
- data/lib/y_petri/simulation/transition_representation/s.rb +29 -0
- data/lib/y_petri/simulation/transition_representation/t.rb +37 -0
- data/lib/y_petri/simulation/transition_representation/tS.rb +38 -0
- data/lib/y_petri/simulation/transition_representation/ts.rb +32 -0
- data/lib/y_petri/simulation/transition_representation/types.rb +62 -0
- data/lib/y_petri/simulation/transition_representation.rb +79 -0
- data/lib/y_petri/simulation/transitions/A.rb +40 -0
- data/lib/y_petri/simulation/transitions/S.rb +24 -0
- data/lib/y_petri/simulation/transitions/T.rb +34 -0
- data/lib/y_petri/simulation/transitions/TS.rb +57 -0
- data/lib/y_petri/simulation/transitions/Ts.rb +60 -0
- data/lib/y_petri/simulation/transitions/a.rb +8 -0
- data/lib/y_petri/simulation/transitions/access.rb +186 -0
- data/lib/y_petri/simulation/transitions/s.rb +9 -0
- data/lib/y_petri/simulation/transitions/t.rb +22 -0
- data/lib/y_petri/simulation/transitions/tS.rb +55 -0
- data/lib/y_petri/simulation/transitions/ts.rb +58 -0
- data/lib/y_petri/simulation/transitions/types.rb +98 -0
- data/lib/y_petri/simulation/transitions.rb +21 -0
- data/lib/y_petri/simulation.rb +176 -781
- data/lib/y_petri/transition/assignment.rb +7 -5
- data/lib/y_petri/transition/construction.rb +119 -187
- data/lib/y_petri/transition/init.rb +311 -0
- data/lib/y_petri/transition/ordinary_timeless.rb +8 -6
- data/lib/y_petri/transition/timed.rb +11 -18
- data/lib/y_petri/transition.rb +104 -132
- data/lib/y_petri/version.rb +1 -1
- data/lib/y_petri/world/dependency.rb +40 -0
- data/lib/y_petri/world/petri_net_related.rb +61 -0
- data/lib/y_petri/{workspace/simulation_related_methods.rb → world/simulation_related.rb} +42 -49
- data/lib/y_petri/world.rb +27 -0
- data/lib/y_petri.rb +47 -99
- data/test/{manipulator_test.rb → agent_test.rb} +19 -17
- data/{lib/y_petri → test/examples}/demonstrator.rb +0 -0
- data/{lib/y_petri → test/examples}/demonstrator_2.rb +1 -0
- data/{lib/y_petri → test/examples}/demonstrator_3.rb +0 -0
- data/{lib/y_petri → test/examples}/demonstrator_4.rb +0 -0
- data/test/examples/example_2.rb +16 -0
- data/test/{manual_examples.rb → examples/manual_examples.rb} +0 -0
- data/test/net_test.rb +126 -121
- data/test/place_test.rb +1 -1
- data/test/sim_test +565 -0
- data/test/simulation_test.rb +338 -264
- data/test/transition_test.rb +77 -174
- data/test/world_mock.rb +12 -0
- data/test/{workspace_test.rb → world_test.rb} +19 -20
- data/test/y_petri_test.rb +4 -5
- metadata +101 -26
- data/lib/y_petri/dependency_injection.rb +0 -45
- data/lib/y_petri/manipulator/petri_net_related_methods.rb +0 -74
- data/lib/y_petri/manipulator.rb +0 -20
- data/lib/y_petri/net/selections.rb +0 -209
- data/lib/y_petri/simulation/collections.rb +0 -460
- data/lib/y_petri/workspace/parametrized_subclassing.rb +0 -22
- data/lib/y_petri/workspace/petri_net_related_methods.rb +0 -88
- data/lib/y_petri/workspace.rb +0 -16
- data/test/timed_simulation_test.rb +0 -153
@@ -1,74 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
# Public command interface of YPetri.
|
3
|
-
#
|
4
|
-
module YPetri::Manipulator::PetriNetRelatedMethods
|
5
|
-
# Net selection class.
|
6
|
-
#
|
7
|
-
NetSelection = Class.new YPetri::Manipulator::Selection
|
8
|
-
|
9
|
-
# Net point
|
10
|
-
#
|
11
|
-
attr_reader :net_point
|
12
|
-
|
13
|
-
# Net selection.
|
14
|
-
#
|
15
|
-
attr_reader :net_selection
|
16
|
-
|
17
|
-
def initialize
|
18
|
-
net_point_reset
|
19
|
-
@net_selection = NetSelection.new
|
20
|
-
super
|
21
|
-
end
|
22
|
-
|
23
|
-
delegate :place, :transition, :pl, :tr,
|
24
|
-
:places, :transitions, :nets,
|
25
|
-
:pp, :tt, :nn, to: :workspace
|
26
|
-
|
27
|
-
# Place constructor: Creates a new place in the current workspace.
|
28
|
-
#
|
29
|
-
def Place( *ordered_args, **named_args, &block )
|
30
|
-
fail ArgumentError, "If block is given, :guard named argument " +
|
31
|
-
"must not be given!" if named_args.has? :guard if block
|
32
|
-
named_args.update( guard: block ) if block # use block as a guard
|
33
|
-
named_args.may_have :default_marking, syn!: :m!
|
34
|
-
named_args.may_have :marking, syn!: :m
|
35
|
-
workspace.Place.new *ordered_args, **named_args
|
36
|
-
end
|
37
|
-
|
38
|
-
# Transiton constructor: Creates a new transition in the current workspace.
|
39
|
-
#
|
40
|
-
def Transition( *aa, **oo, &b )
|
41
|
-
workspace.Transition.new *aa, **oo, &b
|
42
|
-
end
|
43
|
-
|
44
|
-
# Net constructor: Creates a new Net instance in the current workspace.
|
45
|
-
#
|
46
|
-
def Net *aa, **oo, &b
|
47
|
-
workspace.Net.new *aa, **oo, &b
|
48
|
-
end
|
49
|
-
|
50
|
-
# Returns the net identified, or the net at point (if no argument given).
|
51
|
-
#
|
52
|
-
def net id=nil
|
53
|
-
id.nil? ? @net_point : workspace.net( id )
|
54
|
-
end
|
55
|
-
|
56
|
-
# Returns the name of the identified net, or of the net at point (if no
|
57
|
-
# argument given).
|
58
|
-
#
|
59
|
-
def ne id=nil
|
60
|
-
net( id ).name
|
61
|
-
end
|
62
|
-
|
63
|
-
# Sets net point to workspace.Net::Top
|
64
|
-
#
|
65
|
-
def net_point_reset
|
66
|
-
net_point_set( workspace.Net::Top )
|
67
|
-
end
|
68
|
-
|
69
|
-
# Sets net point to the net identified by the argument (by name or instance).
|
70
|
-
#
|
71
|
-
def net_point_set id
|
72
|
-
@net_point = workspace.net( id )
|
73
|
-
end
|
74
|
-
end # module YPetri::Manipulator::PetriNetRelatedMethods
|
data/lib/y_petri/manipulator.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
#encoding: utf-8
|
2
|
-
|
3
|
-
# Public command interface of YPetri.
|
4
|
-
#
|
5
|
-
class YPetri::Manipulator
|
6
|
-
attr_reader :workspace
|
7
|
-
|
8
|
-
def initialize
|
9
|
-
@workspace = YPetri::Workspace.new
|
10
|
-
super
|
11
|
-
end
|
12
|
-
|
13
|
-
require_relative 'manipulator/selection'
|
14
|
-
require_relative 'manipulator/hash_key_pointer'
|
15
|
-
require_relative 'manipulator/petri_net_related_methods'
|
16
|
-
require_relative 'manipulator/simulation_related_methods'
|
17
|
-
|
18
|
-
include YPetri::Manipulator::PetriNetRelatedMethods
|
19
|
-
include YPetri::Manipulator::SimulationRelatedMethods
|
20
|
-
end # class YPetri::Manipulator
|
@@ -1,209 +0,0 @@
|
|
1
|
-
# Selections of various kinds of places / transitions (place names / transition
|
2
|
-
# names) in a Petri net.
|
3
|
-
#
|
4
|
-
class YPetri::Net
|
5
|
-
# Names of places in the net.
|
6
|
-
#
|
7
|
-
def pp
|
8
|
-
places.map &:name
|
9
|
-
end
|
10
|
-
|
11
|
-
# Names of transitions in the net.
|
12
|
-
#
|
13
|
-
def tt
|
14
|
-
transitions.map &:name
|
15
|
-
end
|
16
|
-
|
17
|
-
# Array of _ts_ transitions in the net.
|
18
|
-
#
|
19
|
-
def timeless_nonstoichiometric_transitions
|
20
|
-
transitions.select { |t| t.timeless? && t.nonstoichiometric? }
|
21
|
-
end
|
22
|
-
alias ts_transitions timeless_nonstoichiometric_transitions
|
23
|
-
|
24
|
-
# Names of _ts_ transitions in the net.
|
25
|
-
#
|
26
|
-
def timeless_nonstoichiometric_tt
|
27
|
-
timeless_nonstoichiometric_transitions.map &:name
|
28
|
-
end
|
29
|
-
alias ts_tt timeless_nonstoichiometric_tt
|
30
|
-
|
31
|
-
# Array of _tsa_ transitions in the net.
|
32
|
-
#
|
33
|
-
def timeless_nonstoichiometric_nonassignment_transitions
|
34
|
-
transitions.select { |t|
|
35
|
-
t.timeless? && t.nonstoichiometric? && ! t.assignment_action?
|
36
|
-
}
|
37
|
-
end
|
38
|
-
alias tsa_transitions timeless_nonstoichiometric_nonassignment_transitions
|
39
|
-
|
40
|
-
# Names of _tsa_ transitions in the net.
|
41
|
-
#
|
42
|
-
def timeless_nonstoichiometric_nonassignment_tt
|
43
|
-
timeless_nonstoichiometric_nonassignment_transitions.map &:name
|
44
|
-
end
|
45
|
-
alias tsa_tt timeless_nonstoichiometric_nonassignment_tt
|
46
|
-
|
47
|
-
# Array of _tS_ transitions in the net.
|
48
|
-
#
|
49
|
-
def timeless_stoichiometric_transitions
|
50
|
-
transitions.select { |t| t.timeless? && t.stoichiometric? }
|
51
|
-
end
|
52
|
-
alias tS_transitions timeless_stoichiometric_transitions
|
53
|
-
|
54
|
-
# Names of _tS_ transitions in the net.
|
55
|
-
#
|
56
|
-
def timeless_stoichiometric_tt
|
57
|
-
timeless_stoichiometric_transitions.map &:name
|
58
|
-
end
|
59
|
-
alias tS_tt timeless_stoichiometric_tt
|
60
|
-
|
61
|
-
# Array of _Tsr_ transitions in the net.
|
62
|
-
#
|
63
|
-
def timed_nonstoichiometric_transitions_without_rate
|
64
|
-
transitions.select { |t| t.timed? && t.nonstoichiometric? && t.rateless? }
|
65
|
-
end
|
66
|
-
alias timed_rateless_nonstoichiometric_transitions \
|
67
|
-
timed_nonstoichiometric_transitions_without_rate
|
68
|
-
alias Tsr_transitions timed_nonstoichiometric_transitions_without_rate
|
69
|
-
|
70
|
-
# Names of _Tsr_ transitions in the net.
|
71
|
-
#
|
72
|
-
def timed_nonstoichiometric_tt_without_rate
|
73
|
-
timed_nonstoichiometric_transitions_without_rate.map &:name
|
74
|
-
end
|
75
|
-
alias timed_rateless_nonstoichiometric_tt \
|
76
|
-
timed_nonstoichiometric_tt_without_rate
|
77
|
-
alias Tsr_tt timed_nonstoichiometric_tt_without_rate
|
78
|
-
|
79
|
-
# Array of _TSr_ transitions in the net.
|
80
|
-
#
|
81
|
-
def timed_stoichiometric_transitions_without_rate
|
82
|
-
transitions.select { |t| t.timed? && t.stoichiometric? && t.rateless? }
|
83
|
-
end
|
84
|
-
alias timed_rateless_stoichiometric_transitions \
|
85
|
-
timed_stoichiometric_transitions_without_rate
|
86
|
-
alias TSr_transitions timed_stoichiometric_transitions_without_rate
|
87
|
-
|
88
|
-
# Names of _TSr_ transitions in the net.
|
89
|
-
#
|
90
|
-
def timed_stoichiometric_tt_without_rate
|
91
|
-
timed_stoichiometric_transitions_without_rate.map &:name
|
92
|
-
end
|
93
|
-
alias timed_rateless_stoichiometric_tt timed_stoichiometric_tt_without_rate
|
94
|
-
alias Tsr_tt timed_stoichiometric_tt_without_rate
|
95
|
-
|
96
|
-
# Array of _sR_ transitions in the net.
|
97
|
-
#
|
98
|
-
def nonstoichiometric_transitions_with_rate
|
99
|
-
transitions.select { |t| t.has_rate? && t.nonstoichiometric? }
|
100
|
-
end
|
101
|
-
alias sR_transitions nonstoichiometric_transitions_with_rate
|
102
|
-
|
103
|
-
# Names of _sR_ transitions in the net.
|
104
|
-
#
|
105
|
-
def nonstoichiometric_tt_with_rate
|
106
|
-
nonstoichiometric_transitions_with_rate.map &:name
|
107
|
-
end
|
108
|
-
alias sR_tt nonstoichiometric_tt_with_rate
|
109
|
-
|
110
|
-
# Array of _SR_ transitions in the net.
|
111
|
-
#
|
112
|
-
def stoichiometric_transitions_with_rate
|
113
|
-
transitions.select { |t| t.has_rate? and t.stoichiometric? }
|
114
|
-
end
|
115
|
-
alias SR_transitions stoichiometric_transitions_with_rate
|
116
|
-
|
117
|
-
# Names of _SR_ transitions in the net.
|
118
|
-
#
|
119
|
-
def stoichiometric_tt_with_rate
|
120
|
-
stoichiometric_transitions_with_rate.map &:name
|
121
|
-
end
|
122
|
-
alias SR_tt stoichiometric_tt_with_rate
|
123
|
-
|
124
|
-
# Array of transitions with _explicit assignment action_ (_A transitions_)
|
125
|
-
# in the net.
|
126
|
-
#
|
127
|
-
def assignment_transitions
|
128
|
-
transitions.select { |t| t.assignment_action? }
|
129
|
-
end
|
130
|
-
alias A_transitions assignment_transitions
|
131
|
-
|
132
|
-
# Names of transitions with _explicit assignment action_ (_A transitions_)
|
133
|
-
# in the net.
|
134
|
-
#
|
135
|
-
def assignment_tt
|
136
|
-
assignment_transitions.map &:name
|
137
|
-
end
|
138
|
-
alias A_tt assignment_tt
|
139
|
-
|
140
|
-
# Array of _stoichiometric_ transitions in the net.
|
141
|
-
#
|
142
|
-
def stoichiometric_transitions
|
143
|
-
transitions.select &:stoichiometric?
|
144
|
-
end
|
145
|
-
alias S_transitions stoichiometric_transitions
|
146
|
-
|
147
|
-
# Names of _stoichiometric_ transitions in the net.
|
148
|
-
#
|
149
|
-
def stoichiometric_tt
|
150
|
-
stoichiometric_transitions.map &:name
|
151
|
-
end
|
152
|
-
alias S_tt stoichiometric_tt
|
153
|
-
|
154
|
-
# Array of _nonstoichiometric_ transitions in the net.
|
155
|
-
#
|
156
|
-
def nonstoichiometric_transitions
|
157
|
-
transitions.select &:nonstoichiometric?
|
158
|
-
end
|
159
|
-
alias s_transitions nonstoichiometric_transitions
|
160
|
-
|
161
|
-
# Names of _nonstoichimetric_ transitions in the net.
|
162
|
-
#
|
163
|
-
def nonstoichiometric_tt
|
164
|
-
nonstoichiometric_transitions.map &:name
|
165
|
-
end
|
166
|
-
alias s_tt nonstoichiometric_tt
|
167
|
-
|
168
|
-
# Array of _timed_ transitions in the net.
|
169
|
-
#
|
170
|
-
def timed_transitions; transitions.select &:timed? end
|
171
|
-
alias T_transitions timed_transitions
|
172
|
-
|
173
|
-
# Names of _timed_ transitions in the net.
|
174
|
-
#
|
175
|
-
def timed_tt; timed_transitions.map &:name end
|
176
|
-
alias T_tt timed_tt
|
177
|
-
|
178
|
-
# Array of _timeless_ transitions in the net.
|
179
|
-
#
|
180
|
-
def timeless_transitions; transitions.select &:timeless? end
|
181
|
-
alias t_transitions timeless_transitions
|
182
|
-
|
183
|
-
# Names of _timeless_ transitions in the net.
|
184
|
-
#
|
185
|
-
def timeless_tt; timeless_transitions.map &:name end
|
186
|
-
alias t_tt timeless_tt
|
187
|
-
|
188
|
-
# Array of _transitions with rate_ in the net.
|
189
|
-
#
|
190
|
-
def transitions_with_rate; transitions.select &:has_rate? end
|
191
|
-
alias R_transitions transitions_with_rate
|
192
|
-
|
193
|
-
# Names of _transitions with rate_ in the net.
|
194
|
-
#
|
195
|
-
def tt_with_rate; transitions_with_rate.map &:name end
|
196
|
-
alias R_tt tt_with_rate
|
197
|
-
|
198
|
-
# Array of _rateless_ transitions in the net.
|
199
|
-
#
|
200
|
-
def rateless_transitions; transitions.select &:rateless? end
|
201
|
-
alias transitions_without_rate rateless_transitions
|
202
|
-
alias r_transitions rateless_transitions
|
203
|
-
|
204
|
-
# Names of _rateless_ transitions in the net.
|
205
|
-
#
|
206
|
-
def rateless_tt; rateless_transitions.map &:name end
|
207
|
-
alias tt_without_rate rateless_tt
|
208
|
-
alias r_tt rateless_tt
|
209
|
-
end # class YPetri::Net
|