<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Computing Minimal Siphons in Petri Net Models of Resource Allocation Systems: An Evolutionary Approach</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Fernando Tricas</string-name>
          <email>ftricas@unizar.es</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>José Manuel Colom</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Juan Julián Merelo</string-name>
          <email>jmerelo@geneura.ugr.es</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Depto de Informática e Ingeniería de Sistemas Universidad de Zaragoza</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Depto. ATC/CITIC Universidad de Granada</institution>
        </aff>
      </contrib-group>
      <fpage>307</fpage>
      <lpage>322</lpage>
      <abstract>
        <p>Petri Nets are graph based tools to model and study concurrent systems and their properties; one of them is liveness, which is related to the possibility of every part of the system to be activated eventually. Siphons are sets of places that have been related to liveness properties. When we need to deal with realistic problems its computation is hard or even impossible and this is why in this paper we are approaching it using evolutionary computation, a meta-heuristic that has proved it can successfully find solutions when the search space is big. In this work a formulation of the siphon property using linear constraints is presented for general Petri Nets. We will also present an evaluation for a family of resource allocation systems (RAS). The proposed solution is based on a genetic algorithm (GA); we will show how siphons can be computed using it, with experiments showing that in some cases they are able to find a few solutions in less time than previous deterministic algorithms.</p>
      </abstract>
      <kwd-group>
        <kwd>Siphons</kwd>
        <kwd>genetic algorithms</kwd>
        <kwd>computing</kwd>
        <kwd>deadlock prevention</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        A Resource Allocation System (RAS) is a discrete event system in which a finite
set of concurrent processes shares in a competitive way a finite set of resources.
RAS are usually complex enough to take advantage of the use of formal methods,
which can help to improve its understanding, providing tools for the analysis and
implementation steps. They also help in the dialog between people involved in
the design, construction and system management. Our proposal is to use Petri
(or Place/Transition) Nets as a tool for this purpose. They are used to visualize
and, through formal analysis, describe structural properties of the system they
represent[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>
        Software systems are also complex systems that can be seen as a set of
processes sharing (and competing for) resources. There is some recent work in this
area, such as [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] where a more detailed discussion of similarities and differences
with Flexible Manufacturing Systems (FMS) as the archetypal example of RAS
can be seen. In [
        <xref ref-type="bibr" rid="ref3 ref4">3, 4</xref>
        ] there is some work related to software systems and special
classes of Petri Nets for concurrency problems. The competition for resources
implies the existence of deadlocks; they occur when some processes are waiting
for the evolution of other processes, that are also waiting for the former ones to
evolve (the dependence does not need to be direct). RAS have proved to be
specially useful when synthesizing deadlock avoidance and prevention policies, and
many of the published work relies on minimal siphons for this [
        <xref ref-type="bibr" rid="ref10 ref5 ref6 ref7 ref8 ref9">5–10</xref>
        ]. A minimal
siphon is a set of places such that existence of any edge from a transition t to
a place of D implies that there is an edge from some place of D to t. When a
siphon reaches a state with no tokens, it will never become marked again; for this
reason they are related to liveness properties. In consequence, some (efficient)
methods to compute these structural components are needed.
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] some promising work has been done in the field of Flexible
Manufacturing Systems. They propose to reduce the number of siphons to be considered
for deadlock prevention, but they do not avoid the computation of the whole set
of minimal siphons. In most cases siphon enumeration cannot be avoided, and
this makes interesting to obtain better methods to find them ([
        <xref ref-type="bibr" rid="ref11 ref12 ref5 ref9">5, 11, 12, 9</xref>
        ]).
      </p>
      <p>In this work we are going to propose a genetic algorithm (GA). that uses a
formulation of the siphon property by means on linear constraints. This
implementation has been tested in a well-known family of RAS. We will show how we
can compute siphons using a genetic algorithm with an existing generic
package. This approach opens the door to adapt another siphon-based techniques for
deadlock prevention.</p>
      <p>The contents of this paper are organized as follows. Section 2 provides an
introduction to Petri Nets and the main concepts related to the problem,
Section 3 presents the standard Genetic Algorithm. There is also some information
about methods existing in the literature for solving the same problem, Section 4
presents the adapted method, Section 5 shows our experimental setup and the
experimental results, together with some discussion about them. Finally, some
conclusions are presented.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Petri Nets</title>
      <p>A Petri net (or Place/Transition net) is a 3-tuple N = hP, T, W i where P and T
are two non-empty disjoint sets whose elements are called places and transitions,
respectively. In a generic way, elements belonging to P [ T are called nodes.
W : (P ⇥ T ) [ (T ⇥ P ) ! IN defines the weighted flow relation: if W (x, y) &gt; 0,
then we say that there is an arc from x to y, with weight or multiplicity W (x, y).
Ordinary nets are those where W : (P ⇥ T ) [ (T ⇥ P ) ! { 0, 1}.</p>
      <p>Given a net N = hP, T, W i and a node x 2 P [ T , •x = {y 2 P [ T |
W (y, x) &gt; 0} is the pre-set of x, while x• = {y 2 P [ T | W (x, y) &gt; 0} is
the post-set of x. This notation is extended to a set of nodes as follows: given
X ✓ P [ T, •X = Sx2 X •x, X• = Sx2 X x•.</p>
      <p>A Petri net is self–loop free when W (x, y) 6= 0 implies that W (y, x) = 0.
The Pre–incidence matrix Pre : P ⇥ T ! IN of N is Pre[p, t] = W (p, t).
The Post–incidence matrix Post : P ⇥ T ! IN of N is Post[p, t] = W (t, p).
A self–loop free Petri net N = hP, T, W i can be alternatively represented as
N = hP, T, Ci where C is the incidence matrix: a P ⇥ T indexed matrix such
that C[p, t] = W (t, p) W (p, t) = Post[p, t] Pre[p, t]. A marking is a mapping
m : P ! IN; in general, markings are represented in vector form. A transition
t 2 T is enabled for a marking m if and only if 8 p 2 •t . m[p] W (p, t); this
fact will be denoted as m! t (or m[t&gt;). If t is enabled at m, it can occur; when
it occurs, this gives a new marking m0 = m + C[P, t]; this will be denoted as
m t m0 (or m[t&gt;m0), and we say that m’ is reached from m by the occurrence
!
of t. The state equation of a marked net is an algebraic equation that gives a
necessary condition for the reachability of a marking from the initial marking: a
markings m 2 IN|P | such that 9 2 IN|T | . m = m0 +C· is said to be potentially
reachable. The potentially reachability set of a net is the set of solutions for
the state equation. Flows (Semiflows) are integer (natural) annullers of matrix
C (That is, a vector, y 6= 0 such that y · C = 0). Right and left annullers
are called T–(Semi)flows and P–(Semi)flows, respectively. The support of P–
(Semi)flows is given by: kyk = {p 2 P | y[p] &gt; 0}. Let PS be the set of minimal
P–Semiflows of N . A (Semi)flow is called minimal when its support is not a
strict super-set of the support of any other, and the greatest common divisor
of its elements is one. A P–Semiflow y defines the following invariant property:
8 m0 . 8 m 2 PRS(N , m0) . y · m = y · m0 (cyclic behavior law).</p>
      <p>
        Given N an ordinary Petri net, a subset of places D ✓ P is a siphon (E ✓ P
is a trap) of the net N if, and only if, •D ✓ D• (E• ✓ •E). A siphon (trap)
is minimal if, and only if, it does not properly contain another siphon (trap).
Siphons have the important property that, if at a given marking the siphon is
unmarked, it will never be marked. Researchers have considered and studied
different methods for finding siphons and traps. Among them let us present the
main types, that we will classify based on the underlying techniques used for their
computation: Algebraic methods compute families of siphons by means of the
solution of a set of linear equations or inequalities. They use the net incidence–
matrix or a transformation of it. Methods using this approach can be found
in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Methods based on graph theory directly use the graph representation
of the Petri net to compute siphons: methods using this approach can be found
in [
        <xref ref-type="bibr" rid="ref14 ref15">14, 15</xref>
        ]. Methods based on logic formulas are based on characterizing siphons
by means of boolean variables, which typically represent places or transitions
and their relations. Methods using this approach can be found in [
        <xref ref-type="bibr" rid="ref16 ref17">16, 17</xref>
        ].
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Genetic Algorithms</title>
      <p>
        Genetic algorithms [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] are inspired by Darwin’s theory about evolution and
its genetic-molecular basis. More technically the genetic algorithm is a search
heuristic that mimics the process of natural selection. A random population
of candidate solutions is evolved trying to explore the search space looking for
better solutions. The sketch of the basic genetic algorithm is [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]:
1. (Start) Generate random population of n chromosomes (suitable solutions)
2. (Fitness) Evaluate the fitness of each chromosome in the population
3. (New population) Create a new population by repeating the following
steps until the new population is complete
(a) (Selection) Select two parent chromosomes from a population
according to their fitness (the better fitness, the bigger chance to be selected)
(b) (Crossover) With some probability cross over the parents to form a
new offspring (children). If no crossover was performed, offspring is
an exact copy of parents.
(c) (Mutation) With a mutation probability mutate new offspring at each
locus (position in chromosome).
      </p>
      <p>(d) (Accepting) Place new offspring in a new population</p>
      <sec id="sec-3-1">
        <title>4. (Replace) Use new generated population for a further run of algorithm</title>
      </sec>
      <sec id="sec-3-2">
        <title>5. (Test) If the end condition is satisfied, stop, and return the best solution</title>
        <p>in current population</p>
      </sec>
      <sec id="sec-3-3">
        <title>6. (Loop) Go to step 2</title>
        <p>
          The main task of a genetic algorithms designer is to find good parameter
settings (population size, encoding, selection criteria, genetic operator
probabilities, fitness evaluation, ...). We have used the Algorithm::Evolutionary [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]
implementation following the example tide_bitstring.pl for the experiments.
There are many other available implementations, but this one is known by the
authors, is written in Perl and needs just a few lines of code to be adapted to
new problems. Since it is written in an interpreted scripting language it can be,
in general, slower than other libraries written in Java or C++.
4
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>The Proposed Approach</title>
      <p>
        As far as we know, there are no approaches using genetic algorithms to compute
structural properties of Petri Net models. Some work has been done on process
mining and scheduling [
        <xref ref-type="bibr" rid="ref21 ref22 ref23 ref24">21–24</xref>
        ]. A siphon is a special set of places, as defined
above. In [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] the method presented in [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] (algebraic based) was selected, taking
advantage of a parallel approach. Here we will explore a logic formula based
approach: with the formulation for siphons presented in [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ] we will explore the
space state by means of the use of a genetic algorithm in its more classic way.
      </p>
      <p>It is straightforward to try to use the standard GA without much difficulty:
each place p of the Petri net will be represented by means of a binary variable
vp. The siphon property can be represented as follows:
8 p 2 P, 8 t 2 •p, vp </p>
      <p>X vq, with vq, vp 2 { 0, 1}
q2 •t
(1)</p>
      <p>The siphon would be composed of the set of places whose corresponding
variable equals to one, vp = 1. The meaning of each equation is that if place
p is in the set (it belongs to the siphon) it must contain, at least, one of the</p>
      <p>That is, we are not interested in the whole set of places since it is a siphon
but it is an uninteresting one. Finally,</p>
      <p>X vp &lt; |P \ P0|
p2 P \P0
8 Y 2 PS , X vp &lt; kYk</p>
      <p>p2 Y
places that are in the pre–set of each of its entry transitions. This needs to be
completed with some restrictions that avoid undesired situations:</p>
      <p>In this case, the selected set of places cannot be a P-Semiflow, since they
are uninteresting siphons. P-Semiflows cannot be emptied because of the cyclic
behavior law described above. Moreover, they are much less expensive from a
computational point of view. For the Figure 1 and the set of equations shown
there the assignment vp_0_1 = vp_1_0 = vr_0_0 = vr_0_1 = 1 is a solution
and the set of places defined by them is a minimal siphon ({p_0_1, p_1_0,
r_0_0, r_0_1}). It is easy to see that if we add vp_0_0 = 1 to the previous
solution the equations remain true. This is one of the problems of this method:
these equations can describe siphons, but they do not need to be minimal.
(2)
(3)</p>
      <p>With this formulation we can construct a fitness function for the genetic
algorithm that can guide the system towards a solution. As each variable can have
a value of 0 or 1, this approach is well-suited to be formulated as a genetic
algorithm. A final remark is that the genetic algorithm is an optimization algorithm
so some objective function is needed. We have decided to minimize the number of
active variables. Since we cannot state by means of a simple logical formula the
minimality property, we have chosen to compute the smaller siphons. We can
imagine alternative objective functions that would take into account just the
number of resource places, the number of process places, or some more complex
measurements. The complete system would be:
(4)
min Pp2 P vp
8 p 2 P, 8 t 2 •p, vp  Pq2 •t vq, vp 2 { 0, 1}
Pp2 P \P0 vp &lt; |P \ P0|
8 Y 2 PS , Pp2 Y vp &lt; kYk</p>
      <p>Since we want to obtain a result that minimizes the function and that satisfies
the restrictions we need to combine this information. When we have an individual
which represents an empty siphon or a siphon composed by all the places of
the net, we can return a negative number, equivalent to twice the number of
restrictions (the idea is to help de GA to avoid these solutions). For the other
restrictions, we can just count the number of places in the siphon when they are
met. When there are unmet restrictions, we just return the difference between
the number of such restrictions and the total number of restrictions (this is a
negative number, that grows when more restrictions are met). We have tried
several configurations giving more weight to the number of places in the siphon
or to the number of satisfied restrictions but not significant differences appear.
5</p>
    </sec>
    <sec id="sec-5">
      <title>The Experiments</title>
      <p>
        We have compared the nets used in [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] as a benchmark of the performance of
the methods. These nets belong to S4P R class. It is a well–know subclass for
the modeling of a wide set of RAS with a well-defined and easy to understand
structure. Even the proposed method should allow us to look for siphons in any
general PN, our previous work has concentrated in this class of nets and our
examples belong to it. S4P R nets allow the modeling of concurrent sequential
processes with routing decisions and a general conservative use of resources.
      </p>
      <p>
        There is a more detailed presentation of some of these models in [
        <xref ref-type="bibr" rid="ref25 ref29">29, 25</xref>
        ]. The
first and second classes of systems are obtained by means of the composition of
a set of sequential processes: each process, at each processing step, has attached
a single (and different) resource. An instance of the Petri net representing two of
such sequential processes of length two would follow the structure of the net in
Figure 1 (only the resources for the first process are shown). There are two ways
to study size variations in this family of systems: one of them is changing the
length of the process; that is, the number of processing steps (two in the figure).
The second one is changing the number of processes to be composed (in the
figure two processes are shown). For the experiment, the sequential processes
are composed with other processes according to the following rules: The first
process shares its resources with the second one in reverse order: the resource
used at the first step in the first process is used at the last step of the second
      </p>
      <sec id="sec-5-1">
        <title>Column 1: Name as in [25].</title>
      </sec>
      <sec id="sec-5-2">
        <title>Column 2: Size of the problem (number of processes in FMSAD; length of two parallel processes in FMSLD; number of philosophers in Phil).</title>
      </sec>
      <sec id="sec-5-3">
        <title>Column 3: Number of minimal siphons (computed by means of an algebraic algorithm).</title>
      </sec>
      <sec id="sec-5-4">
        <title>Column 4: Time needed to compute all the siphons (in seconds) with the method described by Lautenbach in [28]. Column 5: Time needed to compute all the siphons (in seconds) with the method described by Boer and Murata in [26].</title>
        <p>process; the resource used at the second step of the first process is used by the
one that is previous to the last step in the second process, and so on. The second
process is composed with the third one in a similar way and so on, until we reach
the total number of composed processes. The last process is composed with the
first one, in a similar way. Using the previous ideas two different families of
S4P R nets have been generated, labeled as FMSAD and FMSLD in the tables.</p>
        <p>FMSAD nets are obtained by means of the composition of a variable number
of sequential processes as the ones depicted in Figure 1, with a fixed length of
3. The number of processes to be composed in parallel is the parameter. In the
experiments, the number of composed processes is varying from 3 to 8. FMSLD
nets are obtained by means of the composition of a fixed number of two sequential
processes as the ones depicted in Figure 1, with a variable length which is the
parameter. In the experiments, this length is varying from 3 to 8.</p>
        <p>The last one corresponds to an implementation of the well known dining
philosophers problem. The parameter corresponds to the number of philosophers.
initial population and the number of evaluations. We start the experiment for
each example with an initial population of size 8 and we run the program thirty
times; if it fails (does not compute a siphon) more than once, we double the size
of the initial population and repeat until we can reach thirty iterations with at
most one failed result. We also established a maximum number of evaluations:
if no solution is found after this number of evaluations the algorithm stops (and
we consider this run a failure).</p>
        <p>
          We have tested two approaches for the initial population: First, introducing
the P–Semiflows (when there are less P–Semiflows than the size of the initial
population we add the needed individuals at random; when there are more,
we add all of them and we complete the population until we reach a multiple of
eight individuals). Second, using a fully random initial population. The reason for
trying the first approach is that P–Semiflows could guide the algorithm toward
interesting places in the net (in some classes of nets it is possible to construct
them as a seed [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ]). Notice that they cannot be part of the solution (they are
explicitly forbidden, see equation (3) in Section 4).
        </p>
        <p>When the algorithm stops, we can check whether the solution with best
fitness is a siphon or not: if it has not positive fitness it won’t be a siphon.</p>
        <p>The results obtained can be seen in Table 2. They also can be seen in a
graphical way in the second column of Figure 3 and in Figure 4. In the Figure 4
we have also included the standard deviation of the thirty runs of the program.
We have included in the Figure 3 the graphics for the algebraic methods as
a baseline. The times provided in the table and in the figures for the genetic
algorithms are the average of the thirty runs of each experiment with the smaller
acceptable initial population for each size of each problem.</p>
        <p>We can see that the genetic algorithm is slower, in general, than the algebraic
methods except for the case of FMSAD example, where the genetic algorithm
seems to obtain its solution in less time (and it grows slowly if we compare with
the algebraic method, which seems to grow exponentially).</p>
        <p>There are two things to remark here: the results should not be compared
directly, since the algebraic implementations where done in C, and the genetic
algorithm has been programmed using Perl (an interpreted language).
Nevertheless, putting the results together helps us to see that they are not so far away and
that the approach can be adequate for some types of problems or when the size
grows in such a way that it cannot be managed with deterministic methods. The
second thing to note is that the genetic algorithm does not obtain all the siphons
but a number of them (as the best fitted members of the final population).</p>
        <p>In Table 2 we can see that there are no relevant differences in time when
using the P–Semiflows as the initial population and when we use a random initial
population. In the FMSAD example there is a small difference in the number of
evaluations, which tend to be bigger (but the differences are small and there are
cases when there are less evaluations with the random population -sizes 4, 5-). In
the FMSLD example the number of evaluations tends to be lower for the initial
random population (except for sizes 5,7). Finally, in the Phil example, the cases
where the number of evaluations is better is the same for both initial types of
initial population.</p>
        <p>The results obtained show that the approach is suitable: we can compute
(minimal) siphons with the proposed method. Comparing with traditional
methods the genetic approach does not provide better time computation except for
one example (but they are implementations in different languages) and the
behavior is better with more complex problems (as one would expect). If we were
interested in computing all the siphons, we could add the computed ones as
negative restrictions (this set of places cannot be a solution, as we have done with
P–Semiflows) and apply again the GA.</p>
        <p>As another way to evaluate the approach we computed Table 3 where we can
see the total number of different siphons obtained with the proposed method
compared to the total number of siphons for each system. For this we have used</p>
      </sec>
      <sec id="sec-5-5">
        <title>FMSAD Example</title>
      </sec>
      <sec id="sec-5-6">
        <title>FMSLD Example</title>
        <p>the same experiments as in the previous table: we can count the number of
different siphons for each size of each problem in the 30 runs of the experiment.
With this we can show that the genetic algorithm has a good behavior (different
runs examine different parts of the solutions space) but we are not measuring
what would happen with the addition of new restrictions to forbid siphons that
have been computed previously. Moreover, when the size of the problem increases
the method computes less siphons. Our feeling is that this is due to the size of
the population (the size is small compared to the number of total siphons when</p>
      </sec>
      <sec id="sec-5-7">
        <title>FMSAD Example</title>
      </sec>
      <sec id="sec-5-8">
        <title>FMSLD Example</title>
        <p>the size of the problem grows). For this reason we have added columns 6 and 7.
There we can see that the number of different siphons computed increases with
a bigger initial population. We can also see in that Table that the random initial
population tends to produce more different siphons across different experiments.</p>
      </sec>
      <sec id="sec-5-9">
        <title>Column 1: Name (as in [25])</title>
      </sec>
      <sec id="sec-5-10">
        <title>Column 2: Size of the problem.</title>
      </sec>
      <sec id="sec-5-11">
        <title>Columns 3: Number of siphons obtained by means of an algebraic algorithm.</title>
      </sec>
      <sec id="sec-5-12">
        <title>Columns 4: Number of siphons obtained with the proposed method. P–Semiflows as initial population.</title>
      </sec>
      <sec id="sec-5-13">
        <title>Column 5: Number of siphons obtained with the proposed method. Random initial population.</title>
      </sec>
      <sec id="sec-5-14">
        <title>Columns 6-7: The same as columns 4-5 but doubling the size of the initial population.</title>
      </sec>
      <sec id="sec-5-15">
        <title>Columns 8-11: The results of columns 4-7 as a percentage of Column 3.</title>
        <p>6</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Conclusions and further work</title>
      <p>Some deadlock prevention control policies need the set of minimal siphons to be
computed. It is well known that this is a very hard task because the number of
such components can be very high. This paper has concentrated on the study of
such question.</p>
      <p>An adaptation of a set of logical formulas has been provided in order to try
the genetic algorithm to search for a structural component of the net (siphons).</p>
      <p>Even when it is not clear if the method has a good enough performance, it
opens the door to further work. It is our intention to try to apply it to some
deadlock prevention methods proposed in the past, where some special siphons
need to be computed at each step.</p>
      <p>Moreover, when the computation of all the siphons becomes prohibitively
expensive, the genetic algorithm can still deal with bigger problems if it is
acceptable for us to have a partial set of the siphons instead of the whole set
provided by algebraic approaches.</p>
      <p>
        In this sense, our proposal for further work will follow several ideas: First
of all, the genetic algorithm is well suited for parallelization as in [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]. Second,
the problem can be formulated not only in terms of siphon computation but in
terms of a problem with more information. In the last years some ideas have
been proposed in order to avoid the computation of all the minimal siphons.
The methods rely on the computation of some special bad siphons together with
bad markings (structural objects and bad states information is merged): if we
introduce the state equation the genetic algorithm will have more information
and, hopefully, it will be an alternative method to the one proposed in previously
published work. [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ]. Finally, we feel that adding more information about the
siphon properties to the method (siphonosity?) it would work better. Other
improvements for the GA need to be tested.
      </p>
    </sec>
    <sec id="sec-7">
      <title>Acknowledgments</title>
      <p>The authors are indebted to the anonymous referees and the PC who have helped
us to improve the quality and presentation of this paper. This work is supported
in part by project ANYSELF (TIN2011-28627-C04-02) by the Spanish Mineco
and TIN2011-27479-C04-01 by the Spanish Ministry of Science and Innovation;
P08-TIC-03903 awarded by the Andalusian Regional Government, project 83,
Campus CEI BioTIC, and by Group of Discrete Event Systems Engineering
(GISED) awarded by Aragonese Government.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Murata</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Petri nets: properties, analysis and applications</article-title>
          .
          <source>Proceedings of the IEEE</source>
          <volume>77</volume>
          (
          <issue>4</issue>
          ) (
          <year>April 1989</year>
          )
          <fpage>541</fpage>
          -
          <lpage>580</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>López-Grao</surname>
            ,
            <given-names>J.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Colom</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          :
          <string-name>
            <given-names>A Petri</given-names>
            <surname>Net</surname>
          </string-name>
          <article-title>Perspective on the Resource Allocation Problem in Software Engineering</article-title>
          .
          <source>Transactions on Petri Nets and Other Models of Concurrency</source>
          V. Springer-Verlag, Berlin, Heidelberg (
          <year>2012</year>
          )
          <fpage>181</fpage>
          -
          <lpage>200</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Liao</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stanley</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lafortune</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reveliotis</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kelly</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mahlke</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Eliminating Concurrency Bugs in Multithreaded Software: A New Approach Based on Discrete-Event Control</article-title>
          .
          <source>Control Systems Technology, IEEE Trans. PP</source>
          (
          <volume>99</volume>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Liao</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lafortune</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reveliotis</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mahlke</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Optimal LivenessEnforcing Control for a Class of Petri Nets Arising in Multithreaded Software</article-title>
          .
          <source>Automatic Control, IEEE Transactions on 58(5)</source>
          (May
          <year>2013</year>
          )
          <fpage>1123</fpage>
          -
          <lpage>1138</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Ezpeleta</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Colom</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Martínez</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>A Petri net based deadlock prevention policy for flexible manufacturing systems</article-title>
          .
          <source>IEEE Trans. Rob. Aut</source>
          .
          <volume>11</volume>
          (
          <issue>2</issue>
          ) (
          <year>1995</year>
          )
          <fpage>173</fpage>
          -
          <lpage>184</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Barkaoui</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pradat-Peyre</surname>
          </string-name>
          , J.:
          <article-title>On Liveness and Controlled Siphons in Petri Nets</article-title>
          . In Billington, J.,
          <string-name>
            <surname>Reisig</surname>
          </string-name>
          , W., eds.
          <source>: Proceedings of the 1996 International Conference on Aplications and Theory of Petri Nets</source>
          , Springer Verlag (
          <year>June 1996</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Tricas</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>García-Vallés</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Colom</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ezpeleta</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>An Iterative Method for Deadlock Prevention in FMS</article-title>
          . In Boel, R.,
          <string-name>
            <surname>Stremersch</surname>
          </string-name>
          , G., eds.:
          <source>Discrete Event Systems: Analysis and Control. Proc. of WODES</source>
          , Ghent, Belgium (
          <year>2000</year>
          )
          <fpage>139</fpage>
          -
          <lpage>148</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Huang</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jeng</surname>
            ,
            <given-names>M.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Xie</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chung</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Deadlock prevention policy based on Petri nets and siphons</article-title>
          .
          <source>Int. Journal of Production Research</source>
          <volume>39</volume>
          (
          <issue>2</issue>
          ) (
          <year>2001</year>
          )
          <fpage>283</fpage>
          -
          <lpage>305</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Iordache</surname>
            ,
            <given-names>M.V.</given-names>
          </string-name>
          , Moody, J.O.,
          <string-name>
            <surname>Antsaklis</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Synthesis of Deadlock Prevention Supervisors Using Petri Nets</article-title>
          .
          <source>IEEE Trans. Rob. Automat</source>
          .
          <volume>18</volume>
          (
          <issue>1</issue>
          ) (
          <year>2002</year>
          )
          <fpage>59</fpage>
          -
          <lpage>68</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhou</surname>
            ,
            <given-names>M.C.</given-names>
          </string-name>
          :
          <article-title>Elementary Siphons of Petri Nets and Their Applications to Deadlock Prevention in Flexible Manufacturing Systems</article-title>
          .
          <source>IEEE Trans. on Systems, Man, and Cybernetics</source>
          <volume>34</volume>
          (
          <issue>1</issue>
          ) (
          <year>January 2004</year>
          )
          <fpage>38</fpage>
          -
          <lpage>51</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Barkaoui</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chaoui</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zouari</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Supervisory Control of Discrete Event Systems Based on Structure of Petri Nets</article-title>
          .
          <source>In: Proceedings of the 1997 IEEE International Conference on Systems, Man and Cybernetics</source>
          . Computational Cybernetics and Simulation, Orlando, Florida, USA, IEEE (
          <year>October 1997</year>
          )
          <fpage>3750</fpage>
          -
          <lpage>3755</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Tricas</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Colom</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ezpeleta</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>A solution to the problem of deadlocks in concurrent systems using Petri nets and integer linear programming</article-title>
          . In Horton, G.,
          <string-name>
            <surname>Moller</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rude</surname>
          </string-name>
          , U., eds.
          <source>: Proc. of the 11th European Simulation Symposium</source>
          , Erlangen, Germany, The society for Computer Simulation International (oct
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hu</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Al-Ahmari</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>An</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>An extraction algorithm for a set of elementary siphons based on mixed-integer programming</article-title>
          .
          <source>Journal of Systems Science and Systems Engineering</source>
          <volume>21</volume>
          (
          <issue>1</issue>
          ) (
          <year>March 2012</year>
          )
          <fpage>106</fpage>
          -
          <lpage>125</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Jeng</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peng</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huang</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>An algorithm for calculating minimal siphons and traps of Petri nets</article-title>
          .
          <source>Int. J. of Intelligent Control and Systems</source>
          <volume>3</volume>
          (
          <issue>3</issue>
          ) (
          <year>1999</year>
          )
          <fpage>263</fpage>
          -
          <lpage>275</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Barkaoui</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lemaire</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>An effective characterization of minimal deadlocks and traps in petri nets based on graph theory</article-title>
          .
          <source>In: Proceedings of the 10th International Conference on Application and Theory of Petri Nets</source>
          ,
          <year>1989</year>
          . (
          <year>1989</year>
          )
          <fpage>1</fpage>
          -
          <lpage>21</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Tricas</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Deadlock</surname>
            <given-names>Analysis</given-names>
          </string-name>
          ,
          <source>Prevention and Avoidance in Sequential Resource Allocation Systems, Ph.D. Thesis</source>
          . Dep. Inf. e Ing. de Sist. U. Zaragoza (May
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Cordone</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ferrarini</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Piroddi</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Characterization of minimal and basis siphons with predicate logic and binary programming</article-title>
          .
          <source>In: IEEE Int. Symposium on Computer Aided Control System Design</source>
          ,
          <year>2002</year>
          , IEEE (
          <year>2002</year>
          )
          <fpage>193</fpage>
          -
          <lpage>198</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18. Holland,
          <string-name>
            <surname>J.H.</surname>
          </string-name>
          :
          <article-title>Adaptation in Natural and Artificial Systems: An Introductory Analysis with Applications to Biology, Control,</article-title>
          and
          <source>Artificial Intelligence</source>
          . Oxford, England: U Michigan Press (
          <year>1975</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Merelo</surname>
            ,
            <given-names>J.J.:</given-names>
          </string-name>
          <article-title>A Perl Primer for Evolutionary Algorithm Practitioners</article-title>
          .
          <source>SIGEVOlution</source>
          <volume>4</volume>
          (
          <issue>4</issue>
          ) (
          <year>March 2010</year>
          )
          <fpage>12</fpage>
          -
          <lpage>19</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Merelo-Guervós</surname>
            ,
            <given-names>J.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Castillo</surname>
            ,
            <given-names>P.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Alba</surname>
          </string-name>
          , E.:
          <article-title>Algorithm::Evolutionary, a flexible Perl module for evolutionary computation</article-title>
          .
          <source>Soft Computing</source>
          <volume>14</volume>
          (
          <issue>10</issue>
          ) (
          <year>2010</year>
          )
          <fpage>1091</fpage>
          -
          <lpage>1109</lpage>
          Accesible at http://sl.ugr.es/000K [sl.ugr.es].
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <given-names>Prashant</given-names>
            <surname>Reddy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Kumanan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Krishnaiah Chetty</surname>
          </string-name>
          ,
          <string-name>
            <surname>O.V.</surname>
          </string-name>
          :
          <article-title>Application of Petri Nets and a Genetic Algorithm to Multi-Mode Multi-Resource Constrained Project Scheduling</article-title>
          .
          <source>The Int. J. of Advanced Manufacturing Tech</source>
          .
          <volume>17</volume>
          (
          <issue>4</issue>
          ) (
          <year>2001</year>
          )
          <fpage>305</fpage>
          -
          <lpage>314</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Lim</surname>
            ,
            <given-names>A.H.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lee</surname>
            ,
            <given-names>C.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Raman</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Hybrid genetic algorithm and association rules for mining workflow best practices</article-title>
          .
          <source>Expert Systems with Applications</source>
          <volume>39</volume>
          (
          <issue>12</issue>
          ) (
          <year>September 2012</year>
          )
          <fpage>10544</fpage>
          -
          <lpage>10551</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Xing</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Han</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhou</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Deadlock-Free Genetic</surname>
          </string-name>
          Scheduling Algorithm for
          <source>Automated Manufacturing Systems Based on Deadlock Control Policy. Systems, Man, and Cybernetics</source>
          ,
          <string-name>
            <surname>Part</surname>
            <given-names>B</given-names>
          </string-name>
          , IEEE Trans.
          <volume>42</volume>
          (
          <issue>3</issue>
          ) (
          <year>2012</year>
          )
          <fpage>603</fpage>
          -
          <lpage>615</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Han</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Xing</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chen</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lei</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Deadlock-free genetic scheduling for flexible manufacturing systems using Petri nets and deadlock controllers</article-title>
          .
          <source>International Journal of Production Research</source>
          <volume>52</volume>
          (
          <issue>5</issue>
          ) (
          <year>October 2013</year>
          )
          <fpage>1557</fpage>
          -
          <lpage>1572</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Tricas</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ezpeleta</surname>
          </string-name>
          , J.:
          <article-title>Computing minimal siphons in Petri net models of resource allocation systems: a parallel solution</article-title>
          .
          <source>Sys. Man Cyber. Part A: Systems and Humans</source>
          ,
          <source>IEEE Trans. on 36(3)</source>
          (
          <year>2006</year>
          )
          <fpage>532</fpage>
          -
          <lpage>539</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Boer</surname>
            ,
            <given-names>E.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Murata</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Generating basis siphons and traps of Petri nets using the sign incidence matrix</article-title>
          .
          <source>IEEE Trans. on Circuits and Systems, I - Fundamental Theory and Applications</source>
          <volume>41</volume>
          (
          <issue>4</issue>
          ) (
          <year>1994</year>
          )
          <fpage>266</fpage>
          -
          <lpage>271</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Silva</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          : Las Redes de Petri en la Automática y la Informática. Ed. AC, Madrid (
          <year>1985</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <surname>Lautenbach</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Linear algebraic calculation of deadlocks and traps</article-title>
          . In Voss,
          <string-name>
            <given-names>K.</given-names>
            ,
            <surname>Genrich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            ,
            <surname>Rozemberg</surname>
          </string-name>
          , G., eds.
          <source>: Concurrency and Nets</source>
          . Springer Verlag (
          <year>1987</year>
          )
          <fpage>315</fpage>
          -
          <lpage>336</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          29.
          <string-name>
            <surname>Tricas</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ezpeleta</surname>
          </string-name>
          , J.:
          <article-title>RessAllocation Petri net Model</article-title>
          . In
          <string-name>
            <surname>Kordon</surname>
          </string-name>
          , F., et al.,
          <source>eds.: Model Checking Contest</source>
          <year>2013</year>
          , Milano, Italy (
          <year>June 2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          30.
          <string-name>
            <surname>Cano</surname>
            ,
            <given-names>E.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rovetto</surname>
            ,
            <given-names>C.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Colom</surname>
            ,
            <given-names>J.M.:</given-names>
          </string-name>
          <article-title>An algorithm to compute the minimal siphons in S4P R nets</article-title>
          .
          <source>Discrete Event Dynamic Systems</source>
          <volume>22</volume>
          (
          <issue>4</issue>
          ) (
          <year>2012</year>
          )
          <fpage>403</fpage>
          -
          <lpage>428</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          31.
          <string-name>
            <surname>Tricas</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>García-Vallés</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Colom</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ezpeleta</surname>
            ,
            <given-names>J.: A Petri</given-names>
          </string-name>
          <string-name>
            <surname>Net</surname>
          </string-name>
          <article-title>Structure-Based Deadlock Prevention Solution for Sequential Resource Allocation Systems</article-title>
          .
          <source>In: Proc of 2005 Int. Conf. on Robotics and Automation</source>
          , Barcelona, Spain (
          <year>2005</year>
          )
          <fpage>272</fpage>
          -
          <lpage>278</lpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>