PETRI NET
A 'Petri net' (also known as a 'place/transition net' or 'P/T net') is one of several mathematical representations of discrete distributed systems. As a modeling language, it graphically depicts the structure of a distributed system as a directed bipartite graph with annotations. As such, a Petri net has place nodes, transition nodes, and directed arcs connecting places with transitions. Petri nets were invented in 1962 by Carl Adam Petri.
A Petri net consists of ''places'', ''transitions'', and ''directed arcs''. Arcs run between places and transitions—not between places and places or transitions and transitions. The places from which an arc runs to a transition are called the input places of the transition; the places to which arcs run from a transition are called the output places of the transition.
Places may contain any number of tokens. A distribution of tokens over the places of a net is called a ''marking''. Transitions act on input tokens by a process known as ''firing''. A transition is ''enabled'' if it can fire, i.e., there are tokens in every input place. When a transition fires, it consumes the tokens from its input places, performs some processing task, and places a specified number of tokens into each of its output places. It does this atomically, i.e., in one non-interruptible step.
Execution of Petri nets is nondeterministic. This means two things:
# multiple transitions can be enabled at the same time, any one of which can fire
# none are ''required'' to fire — they fire at will, between time 0 and infinity, or not at all (i.e. it is totally possible that nothing fires at all).
Since firing is nondeterministic, Petri nets are well suited for modeling the concurrent behavior of distributed systems.
A 'Petri net' is a 5-tuple , where (see Desel and Juhás[1])
★ is a set of ''places''.
★ is a set of ''transitions''.
★ is a set of arcs known as a ''flow relation''. The set is subject to the constraint that no arc may connect two places or two transitions, or more formally: .
★ is an ''initial marking'', where for each place , there are tokens.
★ is a set of ''arc weights'', which assigns to each arc some denoting how many tokens are consumed from a place by a transition, or alternatively, how many tokens are produced by a transition and put into each place.
A variety of other formal definitions exist. Some definitions do not have arc weights, but they allow multiple arcs between the same place and transition, which is conceptually equal to one arc with a weight of more than one.
The state of a Petri net can be represented as an M vector, where the 1st value of the vector is the number of tokens in the 1st place of the net, the 2nd is the number of tokens in the 2nd place, and so on. Such a representation fully describes the state of a Petri net.
A state-transition list, , which can be shortened to simply is called a ''firing sequence'' if each and every transition satisfies the firing criteria (i.e. there are enough tokens in the input for every transition). In this case, the state-transition list of is called a ''trajectory'', and is called ''reachable'' from through the firing sequence of . Mathematically written: . The set of all firing sequences that can be reached from a net and an initial marking are noted as .
The state-transition matrix is by large, and represents the number of tokens taken by each transition from each place. Similarly, represents the number of tokens given by each transition to each place. The sum of the two, can be used for calculating the above mentioned equation of which can now be simply written as , where is a vector of how many times each transition fired in the sequence. Note that just because the equation can be satisfied, does not mean that it can actually be carried out - for that there should be enough tokens for each transition to fire, i.e. the satisfiability of the equation is required but not sufficient to say that state can be reached from state .
All states that can be reached from a net with an initial marking are denoted as . The 'reachability problem' is then the following: is it true that ? Where is, e.g. an erroneous state.
The reachability of the states can be represented with a ''reachability graph'' which is a directed graph whose points represent states (i.e. M), and arcs represent transitions between two such states. The graph is constructed as follows: the starting state () is taken, and all possible transitions are explored from this state, then the transitions from these states, and so on. The way the graph should be constructed is through breadth-first search, as the graph may be infinitely large, and so depth-first search would not find all possible states even if given infinite time.
While reachability seems to a be a good tool to find erroneous states, for practical problems the constructed graph usually has far too many states to calculate. To alleviate this problem, the LTL logic is usually used in conjunction with the tableau method to prove that such states cannot be reached. LTL uses the semi-decision technique to find if indeed a state can be reached, by finding a set of necessary conditions for the state to be reached then proving that those conditions cannot be satisfied.
Reachability is known to be decidable, in at least exponential time. All known general algorithms so far, however, employ non-primitive recursive space [2].
Petri nets can be described as having different levels of liveness . While the levels of liveness are defined on transitions within the Petri net, the Petri net itself is considered live if and only if every transition within it is live.
A Petri net ()'s transition ''t'' is
★ live, or ''dead'', if and only if it can not be fired, i.e. it is not in any firing sequence where
★ live if and only if it can possibly be fired, i.e. it is in a firing sequence where
★ live if and only if for any k positive whole number, t can be fired at least k times in a firing sequence where
★ live if and only if there exists a firing sequence where ''t'' is fired infinitely
★ live or simply ''live'' if and only if in any reachable state M (i.e. ), ''t'' is live
Note that these are increasingly stringent requirements such that if a transition is live for example, it is automatically and live as well. As an example, (b) Example Petri net is live with the given initial state, but with a different (e.g. totally empty) initial state, all of its transitions are dead.
In computer programming and other applications, the property of liveness of a Petri net is used to model that the system can never lock up.
A Petri net is inherently -bounded if in no reachable state can at any place contain more than tokens. A Petri net is ''safe'' if it is 1-bounded. Naturally, the initial marking is also restricted by the boundedness. Note that a Petri net is inherently bounded if and only if all its reachability graphs (i.e reachability graphs with all possible starting states) all have a finite number of states.
Formally, is a set of ''capacity restrictions'', which assigns to each place some positive number denoting the maximum number of tokens that can occupy that place. A net in which each of its places has some capacity , is known as an 'inherently -bounded' Petri net.
Boundedness is decidable by looking at covering, by constructing the Karp-Miller Tree. In computer programming and other applications, the property of boundedness of a Petri net is used to model that system resources such as CPUs are bounded.
Boundedness of a certain place in an inherently bounded net can be mimicked in a non-inherently bounded net by doing a ''place-transformation'', where a new place (called ''counter-place'') is created, and all transitions that put x tokens to the original place take x tokens from the counter-place, and all transitions that take away x tokens from the original place put x tokens to the counter-place. The number of tokens in must now satisfy the equation place+counter-place=boundedness. Thus, doing a place-transformation for all places in a bounded net, and restricting the starting state to conform to the above noted equality, a bounded net can easily be transformed to a non-bounded net. Therefore any analysis that is used on inherently non-bounded nets can be used on bounded nets (but not the other way around).
There are many extensions to Petri nets. Some of them are completely backwards-compatible (e.g. coloured Petri nets) with the original Petri net, some add properties that cannot be modelled in the original Petri net (e.g. timed Petri nets). If they can be modelled in the original Petri net, they are not real extensions, instead, they are convenient ways of showing the same thing, and can be transformed with mathematical formulas back to the original Petri net, without losing any meaning. Extensions that cannot be transformed are sometimes very powerful, but usually lack the full range of mathematical tools available to analyse normal Petri nets.
The term high-level Petri net is used for many Petri net formalisms that extend the basic P/T net formalism. This includes coloured Petri nets, hierarchical Petri nets, and all other extensions sketched in this section.
A short list of possible extensions:
★ In a standard Petri net, tokens are indistinguishable. In a Coloured Petri net, every token has a value. In popular tools for coloured Petri nets such as CPN Tools, the values of tokens are typed, and can be tested and manipulated with a functional programming language. A subsidiary of coloured Petri nets are the well-formed Petri nets, where the arc and guard expressions are restricted to make it easier to analyse the net.
★ Another popular extension of Petri nets is hierarchy: Hierarchy in the form of different views supporting levels of refinement and abstraction were studied by Fehling. Another form of hierarchy is found in so-called object Petri nets or object systems where a Petri net can contain Petri nets as its tokens inducing a hierarchy of nested Petri nets that communicate by synchronisation of transitions on different levels. See [3] for an informal introduction to object Petri nets.
★ A Vector Addition System with States (VASS) can be seen as a generalisation of a Petri net. Consider a finite state automaton where each transition is labelled by a transition from the Petri net. The Petri net is then synchronised with the finite state automaton, i.e., a transition in the automaton is taken at the same time as the corresponding transition in the Petri net. It is only possible to take a transition in the automaton if the corresponding transition in the Petri net is enabled, and it is only possible to fire a transition in the Petri net if there is a transition from the current state in the automaton labelled by it. (The definition of VASS is usually formulated slightly differently.)
★ Prioritised Petri nets add priorities to transitions, whereby a transition cannot fire, if a higher-priority transition is enabled (i.e. can fire). Thus, transitions are in priority groups, and e.g. priority group 3 can only fire if all transitions are disabled in groups 1 and 2. Within a priority group, firing is ''still'' non-deterministic.
★ The non-deterministic property has been a very valuable one, as it lets the user abstract a large number of properties (depending on what the net is used for). In certain cases, however, the need arises to also model the timing, not only the structure of a model. For these cases, timed Petri nets have evolved, where there are transitions that are timed, and possibly transitions which are not timed (if there are, transitions that are not timed have a higher priority than timed ones). A subsidiary of timed Petri nets are the stochastic Petri nets that add non-deterministic time through adjustable randomness of the transitions. The exponential random distribution is usually used to 'time' these nets. In this case, the nets' reachability graph can be used as a Markov chain.
There are many more extensions to Petri nets, however, it is important to keep in mind, that as the complexity of the net increases in terms of extended properties, the harder it is to use standard tools to evaluate certain properties of the net. For this reason, it is a good idea to use the most simple net type possible for a given modelling task.
There are six main types of petri net:
# State Machine (SM) - here, every transition has one incoming arc, and one outgoing arc. This means, that there can ''not'' be ''concurrency'', but there can be ''conflict'' (i.e. Where should the token from the place go? To one transition or the other?). Mathematically:
# Marked Graph (MG) - here, every place has one incoming arc, and one outgoing arc. This means, that there can ''not'' be ''conflict'', but there can be ''concurrency''. Mathematically:
# Free choice (FC) - here, an arc is either the only arc going from the place, or it is the only arc going to a transition. I.e. there can be ''both concurrency and conflict, but not at the same time''. Mathematically:
# Extended free choice (EFC) - a Petri net that can be ''transformed into an FC''.
# Asymmetric choice (AC) - concurrency and conflict (in sum, ''confusion''), but ''not asymmetrically''. Mathematically:
# Petri Net (PN) - ''confusion'' is allowed (i.e. everything is allowed)
Other ways of modelling concurrent computation have been proposed, including process algebra, the actor model, and the theory of traces[2]. Different models provide tradeoffs of concepts such as compositionality, modularity, and locality.
An approach to relating some of these models of concurrency is proposed in the chapter by Winskel and Nielsen[3].
★ Software design
★ Workflow management
★ Data analysis
★ Concurrent programming
★ Reliability engineering
★ Diagnosis
★ CPN/tools
★ Finite state machine
★ Process architecture
★ Vector Addition System with States (VASS)
★ Signal Interpreted Petri Nets (SIPN)
★ Fuzziness in Petri Nets, , Janette, Cardoso, Physica-Verlag, , ISBN 3-7908-1158-0
★ Coloured Petri Nets, , Kurt, Jensen, Springer Verlag, , ISBN 3-540-62867-3
★ Сети Петри (Petri Nets, in Russian), , Вадим, Котов, Наука, Москва, 1984,
★ Formális moódszerek az informatikában (Formal methods in informatics), , András, Pataricza, TYPOTEX Kiadó, 2004, ISBN 963-9548-08-1
★ Petri Nets, Peterson, James L., , , ACM Computing Surveys, 1977
★ Petri Net Theory and the Modeling of Systems, , James Lyle, Peterson, Prentice Hall, , ISBN 0-13-661983-5
★
★ A Primer in Petri Net Design, , Wolfgang, Reisig, Springer-Verlag, , ISBN 3-540-52044-9
★ Modelling of Concurrent Systems: Structural and Semantical Methods in the High Level Petri Net Calculus, , Robert-Christoph, Riemann, Herbert Utz Verlag, , ISBN 3-89675-629-X
★ Models of Software Architecture - Design and Analysis with UML and Petri-Nets, , Harald, Störrle, Books on Demand, , ISBN 3-8311-1330-0 With courtesy of the author, freely available online.
★ Petri Net Synthesis for Discrete Event Control of Manufacturing Systems, , Mengchu, Zhou, Kluwer Academic Publishers, , ISBN 0-7923-9289-2
★ Modeling, Simulation, & Control of Flexible Manufacturing Systems: A Petri Net Approach, , Mengchu, Zhou, World Scientific Publishing, , ISBN 981-02-3029-X
1. Desel, Jörg and Juhás, Gabriel "''What Is a Petri Net? Informal Answers for the Informed Reader''", Hartmut Ehrig ''et al.'' (Eds.): Unifying Petri Nets, LNCS 2128, pp. 1-25, 2001. [1]
2. Antoni Mazurkiewicz, "Introduction to Trace Theory", in ''The Book of Traces'' V. Diekert, G. Rozenberg, eds. World Scientific, Singapore (1995) pp 3-67.
3. G. Winskel, M. Nielsen. "Models for Concurrency". Handbook of Logic and the Foundations of Computer Science, vol. 4, pages 1-148, OUP.
★ Petri Nets World
★ Petri Net Markup Language
★ Exchangeable Routing Language
★ Java Petri net simulator
Basic Petri nets
A Petri net consists of ''places'', ''transitions'', and ''directed arcs''. Arcs run between places and transitions—not between places and places or transitions and transitions. The places from which an arc runs to a transition are called the input places of the transition; the places to which arcs run from a transition are called the output places of the transition.
Places may contain any number of tokens. A distribution of tokens over the places of a net is called a ''marking''. Transitions act on input tokens by a process known as ''firing''. A transition is ''enabled'' if it can fire, i.e., there are tokens in every input place. When a transition fires, it consumes the tokens from its input places, performs some processing task, and places a specified number of tokens into each of its output places. It does this atomically, i.e., in one non-interruptible step.
Execution of Petri nets is nondeterministic. This means two things:
# multiple transitions can be enabled at the same time, any one of which can fire
# none are ''required'' to fire — they fire at will, between time 0 and infinity, or not at all (i.e. it is totally possible that nothing fires at all).
Since firing is nondeterministic, Petri nets are well suited for modeling the concurrent behavior of distributed systems.
A formal definition
A 'Petri net' is a 5-tuple , where (see Desel and Juhás[1])
★ is a set of ''places''.
★ is a set of ''transitions''.
★ is a set of arcs known as a ''flow relation''. The set is subject to the constraint that no arc may connect two places or two transitions, or more formally: .
★ is an ''initial marking'', where for each place , there are tokens.
★ is a set of ''arc weights'', which assigns to each arc some denoting how many tokens are consumed from a place by a transition, or alternatively, how many tokens are produced by a transition and put into each place.
A variety of other formal definitions exist. Some definitions do not have arc weights, but they allow multiple arcs between the same place and transition, which is conceptually equal to one arc with a weight of more than one.
Basic mathematical properties
The state of a Petri net can be represented as an M vector, where the 1st value of the vector is the number of tokens in the 1st place of the net, the 2nd is the number of tokens in the 2nd place, and so on. Such a representation fully describes the state of a Petri net.
A state-transition list, , which can be shortened to simply is called a ''firing sequence'' if each and every transition satisfies the firing criteria (i.e. there are enough tokens in the input for every transition). In this case, the state-transition list of is called a ''trajectory'', and is called ''reachable'' from through the firing sequence of . Mathematically written: . The set of all firing sequences that can be reached from a net and an initial marking are noted as .
The state-transition matrix is by large, and represents the number of tokens taken by each transition from each place. Similarly, represents the number of tokens given by each transition to each place. The sum of the two, can be used for calculating the above mentioned equation of which can now be simply written as , where is a vector of how many times each transition fired in the sequence. Note that just because the equation can be satisfied, does not mean that it can actually be carried out - for that there should be enough tokens for each transition to fire, i.e. the satisfiability of the equation is required but not sufficient to say that state can be reached from state .
Reachability
All states that can be reached from a net with an initial marking are denoted as . The 'reachability problem' is then the following: is it true that ? Where is, e.g. an erroneous state.
The reachability of the states can be represented with a ''reachability graph'' which is a directed graph whose points represent states (i.e. M), and arcs represent transitions between two such states. The graph is constructed as follows: the starting state () is taken, and all possible transitions are explored from this state, then the transitions from these states, and so on. The way the graph should be constructed is through breadth-first search, as the graph may be infinitely large, and so depth-first search would not find all possible states even if given infinite time.
While reachability seems to a be a good tool to find erroneous states, for practical problems the constructed graph usually has far too many states to calculate. To alleviate this problem, the LTL logic is usually used in conjunction with the tableau method to prove that such states cannot be reached. LTL uses the semi-decision technique to find if indeed a state can be reached, by finding a set of necessary conditions for the state to be reached then proving that those conditions cannot be satisfied.
Reachability is known to be decidable, in at least exponential time. All known general algorithms so far, however, employ non-primitive recursive space [2].
Liveness
Petri nets can be described as having different levels of liveness . While the levels of liveness are defined on transitions within the Petri net, the Petri net itself is considered live if and only if every transition within it is live.
A Petri net ()'s transition ''t'' is
★ live, or ''dead'', if and only if it can not be fired, i.e. it is not in any firing sequence where
★ live if and only if it can possibly be fired, i.e. it is in a firing sequence where
★ live if and only if for any k positive whole number, t can be fired at least k times in a firing sequence where
★ live if and only if there exists a firing sequence where ''t'' is fired infinitely
★ live or simply ''live'' if and only if in any reachable state M (i.e. ), ''t'' is live
Note that these are increasingly stringent requirements such that if a transition is live for example, it is automatically and live as well. As an example, (b) Example Petri net is live with the given initial state, but with a different (e.g. totally empty) initial state, all of its transitions are dead.
In computer programming and other applications, the property of liveness of a Petri net is used to model that the system can never lock up.
Boundedness
A Petri net is inherently -bounded if in no reachable state can at any place contain more than tokens. A Petri net is ''safe'' if it is 1-bounded. Naturally, the initial marking is also restricted by the boundedness. Note that a Petri net is inherently bounded if and only if all its reachability graphs (i.e reachability graphs with all possible starting states) all have a finite number of states.
Formally, is a set of ''capacity restrictions'', which assigns to each place some positive number denoting the maximum number of tokens that can occupy that place. A net in which each of its places has some capacity , is known as an 'inherently -bounded' Petri net.
Boundedness is decidable by looking at covering, by constructing the Karp-Miller Tree. In computer programming and other applications, the property of boundedness of a Petri net is used to model that system resources such as CPUs are bounded.
Boundedness of a certain place in an inherently bounded net can be mimicked in a non-inherently bounded net by doing a ''place-transformation'', where a new place (called ''counter-place'') is created, and all transitions that put x tokens to the original place take x tokens from the counter-place, and all transitions that take away x tokens from the original place put x tokens to the counter-place. The number of tokens in must now satisfy the equation place+counter-place=boundedness. Thus, doing a place-transformation for all places in a bounded net, and restricting the starting state to conform to the above noted equality, a bounded net can easily be transformed to a non-bounded net. Therefore any analysis that is used on inherently non-bounded nets can be used on bounded nets (but not the other way around).
Extensions
There are many extensions to Petri nets. Some of them are completely backwards-compatible (e.g. coloured Petri nets) with the original Petri net, some add properties that cannot be modelled in the original Petri net (e.g. timed Petri nets). If they can be modelled in the original Petri net, they are not real extensions, instead, they are convenient ways of showing the same thing, and can be transformed with mathematical formulas back to the original Petri net, without losing any meaning. Extensions that cannot be transformed are sometimes very powerful, but usually lack the full range of mathematical tools available to analyse normal Petri nets.
The term high-level Petri net is used for many Petri net formalisms that extend the basic P/T net formalism. This includes coloured Petri nets, hierarchical Petri nets, and all other extensions sketched in this section.
A short list of possible extensions:
★ In a standard Petri net, tokens are indistinguishable. In a Coloured Petri net, every token has a value. In popular tools for coloured Petri nets such as CPN Tools, the values of tokens are typed, and can be tested and manipulated with a functional programming language. A subsidiary of coloured Petri nets are the well-formed Petri nets, where the arc and guard expressions are restricted to make it easier to analyse the net.
★ Another popular extension of Petri nets is hierarchy: Hierarchy in the form of different views supporting levels of refinement and abstraction were studied by Fehling. Another form of hierarchy is found in so-called object Petri nets or object systems where a Petri net can contain Petri nets as its tokens inducing a hierarchy of nested Petri nets that communicate by synchronisation of transitions on different levels. See [3] for an informal introduction to object Petri nets.
★ A Vector Addition System with States (VASS) can be seen as a generalisation of a Petri net. Consider a finite state automaton where each transition is labelled by a transition from the Petri net. The Petri net is then synchronised with the finite state automaton, i.e., a transition in the automaton is taken at the same time as the corresponding transition in the Petri net. It is only possible to take a transition in the automaton if the corresponding transition in the Petri net is enabled, and it is only possible to fire a transition in the Petri net if there is a transition from the current state in the automaton labelled by it. (The definition of VASS is usually formulated slightly differently.)
★ Prioritised Petri nets add priorities to transitions, whereby a transition cannot fire, if a higher-priority transition is enabled (i.e. can fire). Thus, transitions are in priority groups, and e.g. priority group 3 can only fire if all transitions are disabled in groups 1 and 2. Within a priority group, firing is ''still'' non-deterministic.
★ The non-deterministic property has been a very valuable one, as it lets the user abstract a large number of properties (depending on what the net is used for). In certain cases, however, the need arises to also model the timing, not only the structure of a model. For these cases, timed Petri nets have evolved, where there are transitions that are timed, and possibly transitions which are not timed (if there are, transitions that are not timed have a higher priority than timed ones). A subsidiary of timed Petri nets are the stochastic Petri nets that add non-deterministic time through adjustable randomness of the transitions. The exponential random distribution is usually used to 'time' these nets. In this case, the nets' reachability graph can be used as a Markov chain.
There are many more extensions to Petri nets, however, it is important to keep in mind, that as the complexity of the net increases in terms of extended properties, the harder it is to use standard tools to evaluate certain properties of the net. For this reason, it is a good idea to use the most simple net type possible for a given modelling task.
Main Petri net types
There are six main types of petri net:
# State Machine (SM) - here, every transition has one incoming arc, and one outgoing arc. This means, that there can ''not'' be ''concurrency'', but there can be ''conflict'' (i.e. Where should the token from the place go? To one transition or the other?). Mathematically:
# Marked Graph (MG) - here, every place has one incoming arc, and one outgoing arc. This means, that there can ''not'' be ''conflict'', but there can be ''concurrency''. Mathematically:
# Free choice (FC) - here, an arc is either the only arc going from the place, or it is the only arc going to a transition. I.e. there can be ''both concurrency and conflict, but not at the same time''. Mathematically:
# Extended free choice (EFC) - a Petri net that can be ''transformed into an FC''.
# Asymmetric choice (AC) - concurrency and conflict (in sum, ''confusion''), but ''not asymmetrically''. Mathematically:
# Petri Net (PN) - ''confusion'' is allowed (i.e. everything is allowed)
Other models of concurrency
Other ways of modelling concurrent computation have been proposed, including process algebra, the actor model, and the theory of traces[2]. Different models provide tradeoffs of concepts such as compositionality, modularity, and locality.
An approach to relating some of these models of concurrency is proposed in the chapter by Winskel and Nielsen[3].
Application areas
★ Software design
★ Workflow management
★ Data analysis
★ Concurrent programming
★ Reliability engineering
★ Diagnosis
Programming tools
★ CPN/tools
See also
★ Finite state machine
★ Process architecture
★ Vector Addition System with States (VASS)
★ Signal Interpreted Petri Nets (SIPN)
References
★ Fuzziness in Petri Nets, , Janette, Cardoso, Physica-Verlag, , ISBN 3-7908-1158-0
★ Coloured Petri Nets, , Kurt, Jensen, Springer Verlag, , ISBN 3-540-62867-3
★ Сети Петри (Petri Nets, in Russian), , Вадим, Котов, Наука, Москва, 1984,
★ Formális moódszerek az informatikában (Formal methods in informatics), , András, Pataricza, TYPOTEX Kiadó, 2004, ISBN 963-9548-08-1
★ Petri Nets, Peterson, James L., , , ACM Computing Surveys, 1977
★ Petri Net Theory and the Modeling of Systems, , James Lyle, Peterson, Prentice Hall, , ISBN 0-13-661983-5
★
★ A Primer in Petri Net Design, , Wolfgang, Reisig, Springer-Verlag, , ISBN 3-540-52044-9
★ Modelling of Concurrent Systems: Structural and Semantical Methods in the High Level Petri Net Calculus, , Robert-Christoph, Riemann, Herbert Utz Verlag, , ISBN 3-89675-629-X
★ Models of Software Architecture - Design and Analysis with UML and Petri-Nets, , Harald, Störrle, Books on Demand, , ISBN 3-8311-1330-0 With courtesy of the author, freely available online.
★ Petri Net Synthesis for Discrete Event Control of Manufacturing Systems, , Mengchu, Zhou, Kluwer Academic Publishers, , ISBN 0-7923-9289-2
★ Modeling, Simulation, & Control of Flexible Manufacturing Systems: A Petri Net Approach, , Mengchu, Zhou, World Scientific Publishing, , ISBN 981-02-3029-X
Footnotes
1. Desel, Jörg and Juhás, Gabriel "''What Is a Petri Net? Informal Answers for the Informed Reader''", Hartmut Ehrig ''et al.'' (Eds.): Unifying Petri Nets, LNCS 2128, pp. 1-25, 2001. [1]
2. Antoni Mazurkiewicz, "Introduction to Trace Theory", in ''The Book of Traces'' V. Diekert, G. Rozenberg, eds. World Scientific, Singapore (1995) pp 3-67.
3. G. Winskel, M. Nielsen. "Models for Concurrency". Handbook of Logic and the Foundations of Computer Science, vol. 4, pages 1-148, OUP.
External links
★ Petri Nets World
★ Petri Net Markup Language
★ Exchangeable Routing Language
★ Java Petri net simulator
This article provided by Wikipedia. To edit the contents of this article, click here for original source.
psst.. try this: add to faves

العربية
中国
Français
Deutsch
Ελληνική
हिन्दी
Italiano
日本語
Português
Русский
Español
