i.e. it proceeds as if all actions and operations are
enabled. More precisely, the off-line part of FI
detection (outlined below) constructs for every pair
of active actions (a,b), a set ARSmodel(a,b)
containing every pair (R
1
,R
2
) where R
1
and R
2
are
rules of ARSmodel(a) and ARSmodel(b) respectively,
whose operations are incompatible. The intuition is
that a and b are potentially conflicting if
ARSmodel(a,b) is not empty. The procedure
constructs the following graph:
Graph
of potentially conflicting actions (GPCA)
Its nodes correspond to active actions and its edges
link every pair of nodes a and b for which
ARSmodel(a, b)≠Ø. An edge between a and b is
denoted (a, b, ARSmodel(a, b)) and called edge (a,
b) labeled by ARSmodel(a, b).
Example 5.3: In Example 5.2, we have seen that
actions a=avoid(FRobs) and b=Car.stop() have their
AR-models containing respectively the incompatible
rules R
1
= “Speed.module < ν → Inc(Speed.module)”
and R
2
= “true → Set(Speed.module,0)”. In the off-
line part of FI detection, the pair (R
1
, R
2
) is inserted
in ARSmodel(a,b) and GPCA receives the nodes a
and b and the edge (a, b) labeled by ARSmodel(a,b).
Intuitively, a and b are potentially conflicting, and
ARSmodel(a,b) will be used online to determine
when a and b are effectively conflicting.
Off-line part of FI detection
Inputs: Every active action a and its set ARSmodel(a)
Result: Graph of potentially conflicting actions (GPCA)
Procedure:
| // Let N be set of nodes and E be the set of edges of
GPCA
| Initialize N and E to empty
| for each pair (a, b) of active actions:
| | // Compute ARSmodel(a, b)
| | Initialize ARSmodel(a, b) to empty
| | for each R
1
ARSmodel(a) and R
2
ARSmodel(b)
| | | if R
1
and R
2
are incompatible
| | | | insert the pair (R
1
, R
2
) in ARSmodel(a, b)
| | if ARSmodel(a, b) )≠Ø:
| | | if a is not in N: insert a in N
| | | if b is not in N: insert b in N
| | | insert (a, b, ARSmodel(a, b)) in E
5.5 Online Part of FI Detection
The online part of FI detection (outlined below)
consists in determining which of the potentially
conflicting actions are effectively conflicting. More
precisely, for every pair (a, b) of actions which are
potentially conflicting (i.e. ARSmodel(a, b))≠Ø, a
and b are effectively conflicting when they are
enabled and ARSmodel(a, b) contains a pair (R
1
,
R
2
) of enabled rules. The procedure constructs the
following graph:
Graph of conflicting actions (GCA): It is a
restriction of GPCA in the sense that it is obtained
from GPCA by removing edges linking actions
which are not effectively conflicting. An edge
between a and b is denoted by (a, b).
On-line part of FI detection
Input: GPCA
Result: Graph of conflicting actions (GCA)
Procedure:
| Initialize GCA to GPCA
| for each edge (a, b, ARSmodel(a, b)) of GCA
| | if a or b are disabled or
| | | ARSmodel(a, b) has no pair of enabled rules:
| | | Remove the edge
| Redefine every edge (a,b, ARSmodel(a,b)) as (a,b)
Example 5.4: In Example 5.3, the resulting
GPCA of the off-line part of FI detection, contains
the edge (a, b) labeled by ARSmodel(a,b), for a=
avoid(FRobs) and b= stop() which are potentially
conflicting. In the on-line part of FI detection, the
obtained GCA contains the edge (a, b) when a and b
are effectively conflicting, i.e. close(FRobs)
approach(Stop)
reach(Stop)
Speed.module<ν
(from Example 5.2).
6 ONLINE FI RESOLUTION
FI resolution targets to find a solution to each pair of
conflicting actions a and b represented by an edge
(a, b) in GCA. Our FI resolution consists of a local
treatment followed by a global treatment.
6.1 Local Treatment of FI Resolution
We assume that a priority() function is given which
assigns priorities to active actions. Two sets are
used: the set of Elected Actions (EA) and the set of
Blocked Actions (BA). For each edge (a, b) in GCA,
the local treatment inserts the most and least priority
actions in EA and BA respectively. A problem arises
when EA∩BA≠Ø. Consider for example two edges
(a, b) and (a, c) of GCA, i.e. a is conflicting with b
and c. Assume that priority(b) < priority(a) <
priority(c). In (a, b), a
is elected and b is blocked. In
(a, c), c is elected and a is blocked.
Hence,
EA={a,c}, BA={a,b}, EA∩BA={a}≠Ø. A question
arises: should a be elected or blocked? If we apply a
conservative decision by blocking a, then both a and
b are blocked, while the reason why b has been
ICINCO2014-11thInternationalConferenceonInformaticsinControl,AutomationandRobotics
152