<!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>Temporal Planning in Dynamic Environments for P-CLAIM Agents</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Muhammad Adnan Hashmi</string-name>
          <email>Adnan.Hashmi@lip6.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Amal El Fallah Seghrouchni</string-name>
          <email>Amal.Elfallah@lip6.fr</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Laboratoire d'Informatique de Paris 6, Universite ́ Pierre et Marie Curie</institution>
          ,
          <addr-line>75016 Paris</addr-line>
          ,
          <country country="FR">France</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Laboratoire d'Informatique de Paris 6, Universite ́ Pierre et Marie Curie</institution>
          ,
          <addr-line>75016 Paris</addr-line>
          ,
          <country country="FR">France</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-Time and uncertainty of the environment are very important aspects in the development of real world applications. Another important issue for the real world agents is, the balance between deliberation and reactivity. But most of the agent oriented programming languages ignore some or all of these important aspects. In this paper we try to fill this gap by presenting an extension to the architecture of CLAIM agent oriented programming language to endow the agents with the planning capability. We remove the assumption that agents' actions are instantaneous. We are interested in the temporal planning of on the fly goals. A coherrent framework is proposed in which agents are able to generate, monitor and repair their temporal plans. Our proposed framework creates a balance between reactivity and deliberation. This work could be considered as a first step towards a complete temporal planning solution for an AOP language.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Most of the agent oriented programming languages in the
current literature use a PRS like approach to achieve the goals
of agent. Some examples of these programming languages
are Jason[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], 3APL[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], 2APL[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and JACK[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. But these
languages lack the ability to incorporate planning. Sometimes
the execution of the actions without planning results in the
unability to achieve the goals. There has been some work to
incorporate planning within such programming languages [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ],
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] but these systems do not take into account the duration
of agent actions, neither do they consider the uncertainty of the
environment. These systems assume that the agents’ actions
are instantaneous and that the effects produced on the
environment are only those which are produced by the agent’s actions.
But these assumptions are unrealistic for the development of
real world applications. There are some systems like ZENO[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ],
TGP[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], SAPA[
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] which give the ability to plan with durative
tasks and even there are systems which give this ability in
the dynamic environments like IxTeT[
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. But these systems
are separate planning solutions. They are not programming
languages, so they lack the flexibility and control that a
programming language offers to its programmers. Moreover,
these systems are built on a proactive approach but in the
real world applications it is necessary to create a balance
between proactivity and reactivity because it is a dynamic
world and the goals of agents are not necessarily given to
him at the start, new goals arrive and some old goals are
dropped during the life cycle of the agent and some goals
require immediate achievement. In this work, we try to fill
these gaps by incorporating a temporal planner, an executor,
an execution monitor and a plan repairing component to a
CLAIM agent[
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. We call this extension of the language
as P-CLAIM. The main problems dealt with in this work
are 1) Modifications and extensions to the CLAIM agent’s
architecture to include a temporal planning component. 2)
Execution monitoring and plan repairing. 3) Creating a balance
between deliberation and reactivity.
      </p>
      <p>
        In our proposed framework, we have made use of
Hierarchical Task Network (HTN) planning technique. The main
algorithm used to generate plan for a goal is JSHOP2[
        <xref ref-type="bibr" rid="ref13">13</xref>
        ],
which is very efficient HTN planning system and plans for
tasks in the same order that they will later be executed. The
main motivation behind using the HTN planning technique
is the similarities among the BDI model of agency and
the HTN planning technique[
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Due to these similarities
HTN planning is more suitable and natural candidate for
incorporating planning in a BDI like system.
      </p>
      <p>The remainder of this paper is organized as follows. Section
2 puts some light on the current architecture of CLAIM
language and JSHOP2 planner. In section 3, some important
representations are presented which are helpful in
understanding the agent architecture in P-CLAIM. Our proposed
architecture of P-CLAIM agent with planning, execution and
plan repairing components is presented in section 4. In section
5, we give an example to describe the working of system.
Section 6 discussed some of the related work. Section 7
concludes the paper and some future directions are discussed.</p>
    </sec>
    <sec id="sec-2">
      <title>II. BACKGROUND</title>
      <p>In this section, we briefly discuss the architecture of CLAIM
language and JSHOP2 algorithm to generate a plan. A
multiagent system in CLAIM is a set of distributed hierarchies
of agents deployed on computers connected via a network.
All the computers have a global clock. With respect to the
hierarchical representation, an agent is a node in a hierarchy.
It is an autonomous, intelligent and mobile entity. It has a
parent and contains (optional) sub-agents, running processes
and cognitive elements (e.g. knowledge, goals, capabilities).
An agent can dynamically create another agent, and the newly
created agent becomes the sub-agent of the creator agent.
In addition, an agent has three mobility primitives, in (enter
another agent), out (leave another agent) and move (move from
one hierarchy to another).</p>
      <p>
        In CLAIM language, an agent can be defined as follows:
defineAgent agentName f
parent=null j agentName ;
knowledge=null j f (knowledge;)*g
goals=null j f (goal;)*g
messages=null j f (message;)*g
capabilities=null j f (capability;)*g
processes=null j f (process j )*g
agents=null j f (agentName;)*g
g
For a more detailed description of CLAIM language, we refer
to [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>JSHOP2 is an HTN planning algorithm, and it deals with
the procedural goals. Domain description required by JSHOP2
consists of methods and operators. A method indicates how to
decompose a compound task into partially ordered subtasks. A
method has three parts. The task for which the method is to be
used, the condition which must be true in the current state to
apply the method, and subtasks that need to be accomplished
in order to accomplish that task. An operator is similar to the
operators in classical planning and it tells how to perform a
primitive task. It has a condition, a list of add effects and a list
of delete effects. Planning proceeds by using the methods to
decompose tasks recursively into smaller and smaller subtasks,
until the planner reaches primitive tasks that can be performed
directly using the planning operators.</p>
      <p>
        The rationale behind choosing JSHOP2 for our work is
threefold. Firstly, it is an HTN planner and the domain
information from CLAIM can be easily transformed into the
domain information needed by the planner due to the
similarities among BDI like systems and HTN planning systems as
discussed in [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Secondly, JSHOP2 plans for the actions in
the same order that they will later be executed. So it knows
the current state at every planning step. This property of
the planner can be exploited for interleaving planning with
execution and at every step planner can plan using the current
state of the world. Thirdly, it can call external user defined
functions to check the precondition of a method or an operator
and this property is important for a planning component for
CLAIM agents because in CLAIM language there could be
calls to user defined functions to check the precondition of
capabilities.
      </p>
    </sec>
    <sec id="sec-3">
      <title>III. SOME IMPORTANT REPRESENTATIONS In this section some important representations are presented which are helpful in understanding the architecture of an agent in P-CLAIM.</title>
      <sec id="sec-3-1">
        <title>A. Domain Representation in P-CLAIM</title>
        <p>
          We have modified the domain representation in CLAIM
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], in order to facilitate the translation to the representation
needed by a planner. Agent’s capabilities have now been
divided into actions and activities. Actions are the primitive
actions that an agent can perform. Some of the actions are
programmer defined while the others are already defined in
the language like mobility primitives in, out, move.
Programmer can also override the already defined actions to define
his requirements more accurately. An action consists of a
condition, a triggering message, the effects and a duration.
T riggerM essage(Act) returns the triggering message of an
action Act. Each effect of an action has an offset associated
with it. This offset is the time taken by the action to produce
the effect after the start of the action and it could be zero if
this effect is achieved as soon as the action is started or it
could be greater than zero. Of f set(Ef f ) denotes the offset
associated with an effect Ef f . Activities are the short plans
(recipes) in the plan library of the agent to achieve different
composite goals.
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>B. Goal Representation in P-CLAIM</title>
        <p>Goals in P-CLAIM are procedural goals. It means the goals
of an agent are the tasks that agent wants to achieve. Some
goals are initially given to the agent, when the multi-agent
system is launched and some goals are given to the agent
during the life of the agent using message passing by other
agents or by user interaction. Goals have priorities associated
with them. The priority of a goal could be Preemptive High,
High or Normal. A goal having Preemptive High priority
means that this goal should be immediately achieved by the
agent, we also call this goal a reactive goal. High priority
means that goal should be achieved before all the Normal
priority goals currently present. Normal priority goals are the
lowest priority goals. Goals with Preemptive High priority are
stored in Global Reactive Goals (GRG) list and all other goals
of agent are stored in a priority queue called Global Proactive
Goals (GPG) list.</p>
      </sec>
      <sec id="sec-3-3">
        <title>C. Messages Format</title>
        <p>A message received by an agent in P-CLAIM has five parts.
First part is the identity. Each message is assigned a unique
number as identity. Second part is the sender, which represents
the sender of the message. Thirdly, a message has a priority
associated with it. This field has a value among Preemptive
High, High and Normal. Fourthly, a message has a proposition
which is the actual contents of the message. This proposition
could be a new goal to achieve or it could be an information
given to the agent which was demanded by the agent in an
earlier message. Finally, a message has a ResponseTo field
which is either blank or it contains a number pointing to
the identity of an earlier message to which this message is
responding.</p>
      </sec>
      <sec id="sec-3-4">
        <title>D. Translation of Domain Description</title>
        <p>
          The information needed by JSHOP2 algorithm to generate
the plan includes the initial state information, goals
information and domain description (methods and operators). In our
formalism, this information is automatically extracted from the
agent. Initial state information is taken from the knowledge of
the agent and from the hierarchical representation of MAS.
Goal for the Planner is a one to one mapping from agent’s goal
to Planner’s goal. In our framework, only one goal is passed to
the JSHOP2 algorithm at a time. Agent’s actions are mapped
to the operators in JSHOP2. P-CLAIM agent’s activities are
converted into JSHOP2 methods. For each activity of the
agent, an equivalent method is generated with the same name
as that of activity. Activity’s condition is mapped to the
method’s precondition. In JSHOP2, methods have subtasks.
Subtasks may be primitive tasks or other composite tasks.
Equivalently in P-CLAIM, the body of an activity consists
of different processes. So we need to convert these processes
into JSHOP2 methods and operators. To read in detail about
this conversion, we refer to our earlier article[
          <xref ref-type="bibr" rid="ref15">15</xref>
          ].
        </p>
      </sec>
      <sec id="sec-3-5">
        <title>E. Policy File</title>
        <p>Each agent maintains a policy file in which it stores the
importance of all other agents in the MAS for him. Importance
of an agent depends on its position in the hierarchy relative
to the position of the agent who is maintaining the policy.
Importance also depends on the services provided by the agent
during the life cycle of the agent. After receiving the message,
the agent analyzes the policy file. Importance of the agent
could be Normal or High.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>IV. AGENT ARCHITECTURE</title>
      <p>There are concurrently four threads running inside the agent
all the time. In the following subsections, we explain these
threads in detail. Figure 1 is showing the architecture of an
agent.</p>
      <sec id="sec-4-1">
        <title>A. Messages Handler</title>
        <p>This thread is always waiting for the messages from other
agents or from the user. It puts the messages into Planner
Messages Queue(PMQ). These messages are either a request
to achieve some goal or they are responses to some earlier sent
message. After putting in the PMQ, these messages are fetched
and analyzed. If the message contains some information
demanded in an earlier message then this information is added
to the knowledge of the agent along with an acknowledgement
having the identity of the message in which this information
was demanded. Agent’s treatment of a message, which is
a request to achieve some goal, depends on the priority
associated with message and the importance of sender.</p>
        <p>The Messages Handler fetches the goal attached with a
message and assigns a priority to the goal based on the priority
associated with message and the importance of sender. A goal
fetched from a message of priority Preemptive High or High
which is assigned by an agent having Normal importance in
the policy file is assigned a High priority. It means that agent
does not preempt his own goals for the goals assigned by an
agent of Normal importance. A goal fetched from a message,
sent by an agent having High importance in the policy file is
assigned the same priority as of the message. After assigning a
priority to the goal, the goal is added to one of the two global
goals lists. A goal of priority Preemptive High is added to
GRG list and a goal of priority High or Normal is added to
GPG list.</p>
        <p>There is another messages queue maintained inside the
agent, called Executor Messages Queue(EMQ). Messages
which are sent by the Planner for the execution of actions
are put in the EMQ. These are the triggering messages for the
actions in the plan generated by the Planner. Number of
messages in EMQ are denoted by length(EM Q) and EM Q[i]
denotes the ith message in EMQ. Each triggering message in
EMQ has a time stamp associated with it. T imeStamp(M sg)
denotes the time stamp associated with a triggering message
M sg.</p>
      </sec>
      <sec id="sec-4-2">
        <title>B. Planner</title>
        <p>Planner starts when the multi-agent system is launched.
Once started, the Planner procedure runs throughout the life
cycle of the agent. When there are no goals in either of the
goals lists then it sits idle and waits for new goals to arrive
and as soon as a new goal arrives, it starts planning. Before
starting the Planner, the agent goes through an initialization
phase, in which it sets the values of certain global variables.</p>
        <p>Three states of the world are maintained in the system,
SP (Act) which denotes the state of the world anticipated by
planner just before the execution of the action Act, secondly
SW is the current actual state of the world and F inalSP
Algorithm 1 M ain Algorithm
Algorithm 2 T reat Reactive Goal
1: Fetch first goal g 2 GRG
2: Suspension Signal ON
3: Wait until fExecution Signal = OF F g
4: Start T ime Current system time
5: RP lan Compute P lan(SW; g; D)
6: if RP lan 6= F ail then
7: for i = 1 To length(RP lan) do
8: T imeStamp(ExeM essages[i]) T imeStamp(RP lan[i])
9: ExeM essages[i] T riggerM essage(RP lan[i])
10: end for
11: End T ime Current system time
12: Duration End T ime - Start T ime
13: for i = 1 To length(EM Q) do
14: T imeStamp(EM Q[i]) T imeStamp(EM Q[i])</p>
        <p>Duration
15: end for
16: Send ExeM essages to EMQ
17: end if
+
18: Suspension Signal</p>
        <p>OF F
denotes the state of the world to which the Planner has
planned till now. More precisely, it is the state of the world
anticipated by planner after the very last action that the Planner
has planned for. In the initialization phase F inalSP is set
equal to the SW . Suspension Signal is set to OF F and
Execution Signal is set to ON .</p>
        <p>The M ain Algorithm (Algorithm 1) runs in an infinite
loop and ensures that reactive goals are immediately planned
for and achieved. First it looks at the GRG list and if it is
not empty, (Lines 2-4) the control moves to the procedure
T reat Reactive Goal (Algorithm 2). Some of the notations
used inside the T reat Reactive Goal procedure are as
follows. length(RP lan) denotes the number of actions in the
plan RP lan. ExeM essages is an array of triggering
messages for the actions in the plan. T imeStamp(Act) denotes
the time stamp assigned to an action Act for its execution.
T reat Reactive Goal fetches the first reactive goal g and
sets the Suspension Signal to ON to ask the Executor to
suspend the execution and waits for the Execution Signal
to go OF F which indicates that the Executor has suspended
the execution (Lines 1-3) then it calls the Compute P lan
procedure to plan for the reactive goal (Line 5). The current</p>
        <p>fg 2 LG : no other goal is constrained to precede gg
else</p>
        <p>M f(m; ) : m is an instance of a method in D, unifies
fhead(m); gg, pre(m) is T rue in S, and m and are as general
as possibleg
if M = then</p>
        <p>Return F ail
end if
Non deterministically choose pair (m; ) 2 M
Modify LG by removing g, adding sub(m), constraining each
goal in sub(m) to precede the goals that g preceded, and applying
else
if sub(m) 6=</p>
        <p>LG0</p>
        <p>then
fg 2 sub(m) : no goal in LG precedes gg</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>LG0 fg 2 LG : no goal in LG precedes gg</title>
      <p>end if
end if
if New acknowledgement in knowledge then
id identity of the message whose acknowledgement has arrived
Fetch all goals associated with message id from Pending Tasks
list and put in the LG
end if
if G is a proactive goal then
repeat</p>
      <p>
        Call T reat Reactive Goal
until GRG =
end if
50: end loop
state of the world SW , the reactive goal just fetched g
and domain description D are passed to Compute P lan
procedure. This procedure call returns a temporal plan RP lan
for the reactive goal. Because every action in P-CLAIM is
executed using a triggering message, so an array ExeM essages
is generated containing the triggering messages for all the
actions in the temporal plan RP lan with a T imeStamp
associated with every message (Lines 7-10) and this array of
Algorithm 4 T emporal Converter(I; P; D)
1: for j = 1 TO no of literals(I) do
2: P roduction T ime(Literal(I[j])) 0
3: end for
4: for i = 1 TO length(P ) do
5: T imeStamp(P [i]) M ax fP roduction T ime(P re(P [i][j]))
:j = 1 To no of pre(P [i])g
6: P rereq(P [i]) Actions which achieve the preconditions of P [i]
7: SP (P [i]) World state anticipated before the execution of P [i]
8: for j = 1 TO no of ef f ects(P [i]) do
9: P roduction T ime(Literal(P [i][j])) T imeStamp(P [i])
+ Of f set(Literal(P [i][j]))
10: end for
11: end for
messages is sent to EMQ (Line 17) from where the Executor
executes the actions triggered by these messages. But before
sending ExeM essages to EMQ, the T imeStamp of all the
messages currently in the EMQ is updated, because due to
the suspension of execution, those triggering messages can
not be executed at their intended time. So every message’s
T imeStamp is increased by the duration of the suspension
(Lines 13-15). Suspension Signal is then set to OF F (Line
18) to allow the Executor to resume execution and control is
passed back to M ain Algorithm (Algorithm 1) which looks
for another goal in GRG. The M ain Algorithm turns its
attention to the proactive goals only when it finds that there is
no reactive goal (Line 5). Algorithm fetches the first goal from
GPG (Line 6). High priority goals are always fetched before
Normal priority goals. Then Compute P lan procedure is
called with the parameters F inalSP , g and D. A plan P P lan
is returned (Line 7 ) which is then sent to EMQ in the form
of triggering messages (Lines 9-13). Now we elaborate the
working of Compute P lan procedure (Algorithm 3) (Many
lines of the algorithm are taken from [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]).
      </p>
      <p>
        Compute P lan procedure is an extension of JSHOP2[
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]
algorithm. It takes three parameters S, G and D as input,
where S is initial state, G is a list of goals and D is the agent’s
domain description. Compute P lan procedure has an internal
goals list called Local Goals (LG) list . Algorithm chooses a
goal g 2 LG which has no predecessors (Line 4). At this point
there could be two cases. The first case is if g is a primitive
task, then procedure finds an operator a that matches g and
whose preconditions are satisfied in S. It applies the action a
to state S and adds it to his plan P (Lines 17,21-23). If no
such operator a exists then procedure returns failure (Lines
18-19). In P-CLAIM a message to other agent is also treated
as primitive action. So, g could be a message to other agent
for information retrieval. If this is the case, then a message for
the retrieval of information is generated with identity x and
is sent to other agent. And all the tasks which depend on this
information are put in the Pending Tasks list (Lines 11-15).
All these tasks are assigned same identity x as of the message
before sending them to Pending Tasks list.
      </p>
      <p>The second case is where g is a compound goal, so a method
needs to be applied for the decomposition of g into its
subtasks. In this case the planner nondeterministically chooses a
method instance m matching g, that decomposes g into
subgoals (Line 29) and applies this method (Lines 33-34). If no
such method m exists then procedure returns failure (Lines
30-32).</p>
      <p>At the end of each planning step, the Compute P lan
procedure looks for any newly arrived acknowledgement for
an earlier sent message. If a new acknowledgement for a
message with identity id has been arrived then the procedure
removes all the tasks depending on id, from Pending Tasks list
and puts them in the Local Goals list to process those goals
(Lines 41-44).</p>
      <p>While planning for a proactive goal, the Compute P lan
procedure checks GRG for any new goals after each
planning step and whenever it finds a goal in GRG, it
suspends planning for the proactive goal and calls the procedure
T reat Reactive Goal , which we have explained earlier
(Lines 45-49). When GRG becomes empty, procedure resumes
planning for the proactive goal from the same state at which
it had suspended the planning. While planning for a reactive
goal, the Compute P lan procedure does not look at GRG,
because a new reactive goal is treated only when all the
previous reactive goals have been treated.</p>
      <p>When Compute P lan finds a plan for one goal, it converts
the total order plan into a temporal plan by calling the
procedure T emporal Converter (Algorithm 4). The procedure
takes three parameters I, P and D, where I is the initial
state, P is the total order plan which is to be converted and
D is the domain description file which is needed to extract
the information about the durations of all the actions and
offsets of all the effects. Some notations used in the procedure
are as follows. no of literals(I) denotes the number of
literals in the initial state and Literal(I[j]) points to the
jth literal in initial state. P roduction T ime(Lit) represents
the time of achievement of a literal Lit. length(P ) returns
the number of actions in the plan P . no of pre(Act) and
no of ef f ects(Act) denote the number of preconditions and
number of effects of an action Act respectively while in the
same vein P re(P [i][j]) and Literal(P [i][j]) denote the jth
precondition and jth effect of ith action in plan P respectively.
We have used a simple and efficient technique to convert a
plan into temporal plan. The procedure starts by setting the
P roduction T ime of all the literals in the initial state to
0 (Lines 1-3). Then procedure loops through all the actions
starting from the first action, going towards the last one and
sets the T imeStamp of the action to the maximum of the
P roduction T ime of all its preconditions, because an action
can be executed at least when all of its preconditions have
been achieved (Lines 4-5). After setting the T imeStamp of
an action, the procedure sets the P roduction T ime of all the
effects of the action. The production time of an effect is the
T imeStamp of the action plus the time at which the effect is
produced by the action, the Of f set of the effect (Lines 8-10).</p>
      <sec id="sec-5-1">
        <title>C. Executor</title>
        <p>The Executor is running in parallel with the Planner. It
waits for triggering messages to come in the EMQ, fetches
the messages and executes the actions associated with the
17:
18:
19:
20:
21:
22:
23:
24:
25:
Algorithm 5 Executor
1: loop
2: if Suspension Signal = ON then
3: Execution Signal OF F
4: Wait until fSuspension Signal = OF F g
5: Execution Signal ON
6: end if
7: if EM Q 6= then
8: N extActions Fetch all next messages C from EMQ having
the earliest T imeStamp from current system time
9: N extT ime T imeStamp(N extActions)
10: Wait for system time to reach N extT ime
11: for i = 1 TO length(N extActions) do
12: if All the actions in P rereq(N extActions[i]) has not sent
acknowledgement for termination then
13: Wait for all the acknowledgements
14: Duration Time spent waiting for acknowledgements
15: for i = 1 To length(EM Q) do
16: T imeStamp(EM Q[i]) T imeStamp(EM Q[i]) +</p>
        <p>Duration
end for
end if
if SP (N extActions[i]) = SW then</p>
        <p>Execute N extActions[i] in a separate thread
else</p>
        <p>MP lan P lan M ender(SW; SP (NextActions[i]))
Execute M P lan
for i = 1 To length(EM Q) do</p>
        <p>T imeStamp(EM Q[i]) T imeStamp(EM Q[i]) +</p>
        <p>T imeSpan(MP lan)
26: end for
27: Execute N extActions[i] in a separate thread
28: end if
29: end for
30: end if
31: end loop
messages at their planned time stamps. Every running
action sends an acknowledgement just before its termination
to the Executor. Algorithm 5 is a simplified version of
the Executor. The Executor fetches all the next messages
from EMQ that have the closest T imeStamp to the current
system time. Then the Executor waits for the system time
to reach the T imeStamp of these messages (Lines 10-11).
When system time approaches that time, the Executor checks
whether the prerequisite actions of the actions associated
with these messages have been terminated or not. If they
have not been terminated then it waits for their termination.
And increases the T imeStamp of all the messages in EMQ
by the duration of waiting for their termination (Lines
1420). Then it checks for any discrepency among the current
world state and the one anticipated by the Planner for the
execution of these actions. If there is no discrepency then
these actions are executed in a separate thread (Lines 21-22)
and the Executor fetches the next messages from EMQ. But
if there is discrepency among the two world states, then the
Executor calls the Plan Mender to generate a plan from the
current world state to the intended world state and executes
the plan thus returned to remove the discrepency (Lines
2425). After executing this plan the Executor is ready to execute
the actions which it had suspended due to discrepency (Line
29). But before executing these actions, it augments their
T imeStamp by the duration of the discrepency removal.
Moreover, after executing each action, the Executor checks
the Suspension Signal. When Suspension Signal is set
to ON , it turns Execution Signl to OF F , suspends the
execution, and waits for Suspension Signal to go OF F . The
Executor resumes the execution once the Suspension Signal
is turned to OF F . But now the triggering messages for the
plan of reactive goal are at the front of EMQ, so the Executor
first executes the plan for the reactive goal for which it had
suspended the execution and then it resumes the execution of
plan on which it was working before the suspension (Line 29).
Algorithm 6 P lan M ender(I; G)
1: Generate a plan P using SATPLAN from I to G ignoring the duration
of actions
2: T P Call T emporal Converter(I; P; D)
3: Return T P</p>
      </sec>
      <sec id="sec-5-2">
        <title>D. Plan Mender</title>
        <p>
          This procedure is responsible for repairing the plan. It takes
as input the current actual world state I and the anticipated
world state G. The Plan Mender generates a temporal plan
for the agent to reach the anticipated world state starting
from the current world state and returns this plan to the
Executor. The Plan mender uses the classical STRIPS style
planning technique to compute its plan because now the goals
for the planner are a state to be reached (declarative goal).
So, the Plan Mender just uses operators from the domain
description file to compute the plan. In this case, the activities
are not helpful in generating the plan which were used by
the Planner component. The basic algorithm used by the Plan
Mender is shown in Algorithm 6. Plan mender computes a
plan without taking into account the durations of the actions
using the SATPLAN planner[
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] and then uses the procedure
T emporal Converter to convert the plan to a temporal plan.
        </p>
        <p>Fig. 2. (a).ROCO Activities</p>
        <p>(b).Plan for Clean T able</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>V. EXAMPLE</title>
      <p>In this example scenario we have one mobile agent ROCO,
which is a home servant. When the MAS is launched then
ROCO has the goal Clean T able. ROCO has activity
associated with this goal Clean T able. All the activities of
ROCO are shown in tree form in Figure 2(a) (A rectangle
is showing a goal and an associated oval is an Activity
associated with the goal, rectangles at the bottom without an
associated oval are Actions.). M ain Algorithm fetches goal
Clean T able from GPG list. And calls Compute P lan to
plan for this goal which generates a plan consisting of the
following actions M ove(Room1; T able), ArrangeBooks,
ArrangeCover, Dusting. A short description of the actions
in this plan is shown in Figure 3.
The plan is converted to the temporal plan using the
procedure T emporal Converter and the plan returned is
shown in figure 2(b). In this example, all the effects of
all the actions have an offset equal to the duration of the
action. Here we explain the conversion of totally ordered
plan to temporal plan. Procedure starts by assigning the
P roduction T ime of all the literals in the initial state to 0.
There is only one literal At(ROCO; Room1) in the initial
state so P roduction T ime(At(ROCO; Room1)) is set to 0.
Now the procedure takes first action M ove(Room1; T able)
and sets its T imeStamp to 0, which is the maximum
P roduction T ime from all of its preconditions. Next,
the procedure sets the P roduction T ime of the effects
of M ove(Room1; T able). This action has only one effect
At(ROCO; T able). P roduction T ime(At(ROCO; T able))
is assigned the value T imeStamp(M ove(Room1)) plus
Of f set(At(ROCO; T able)). Putting the values, we
get P roduction T ime(At(ROCO; T able)) equals 1
minute, because Of f set(At(ROCO; T able)) is equal to
the duration of M ove(Room1; T able). Now procedure
moves to second goal which is Arrange Books
and sets its T imeStamp to be the maximum of
P roduction T ime of all of its preconditions. It
has only one precondition At(ROCO; T able) whose
P roduction T ime has already been calculated to 1 minute.
So T imeStamp(Arrange Books) is assigned 1 munite. In
this way the procedure continues and finds the plan shown in
figure 2(b). Planner sends the messages for each action of the
plan along with their T imeStamp to the EMQ for execution
and Executor starts executing the plan. When the Executor
has executed M ove(Room1; T able), ArrangeBooks
and ArrangeCover, it checks that Suspension Signal
is set to ON , because the Planner has just fetched a
reactive goal Bring W ater from the GRG. The Executor
suspends the execution, sets the Execution Signal
to OF F and waits for the Suspension Signal to
go to OF F again. It receives the following plan
in the EMQ, M ove(T able; Kitchen), T akeGlass,
F illGlassW ithW ater, M ove(Kitchen; OwnerRoom),
Give(Glass; Owner). Now the Executor executes this plan.
After the execution of this plan ROCO is in OwnerRoom.
Now the Executor resumes its suspended plan but before
resuming the suspended plan, it increases the T imeStamp
of all the actions in the suspended plan by the T imeSpan
of the plan for goal Bring W ater, then it checks whether
the preconditions of the suspended plan hold in the
current state. The preconditions of its suspended plan are
At(ROCO; T able)^Arranged(Books)^Arranged(Cover)
and the current state is Arranged(Books) ^
Arranged(Cover) ^ At(ROCO; OwnerRoom). The
Executor calls Plan Mender to generate a plan from current
state of the world to the intended state of the world.
Plan Mender returns a plan consisting of only one action
M ove(OwnerRoom; T able). Executor executes this plan, so
ROCO moves to Table. Now again the Executor checks for
any discrepency among the current state and the anticipated
state but now both states are same so the Executor executes
the suspended plan i.e. it executes the Dusting action.</p>
    </sec>
    <sec id="sec-7">
      <title>VI. RELATED WORK</title>
      <p>
        In this section, we briefly review some work from the
existing literature which is related to our work. Some of
the research related to ours is CYPRESS[
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], RETSINA[
        <xref ref-type="bibr" rid="ref18">18</xref>
        ],
DECAF[
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] and the systems proposed in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] and [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>
        In our opinion, the system closest to our research is
CYPRESS system, which also integrates a planning system
SIPE2[
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] with an execution system PRS[
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. It has the ability
to react to the unanticipated changes in the environment by
replanning and also deals with probabilistic planning. Our
approach has the added advantage of handling temporal
knowledge. Another aspect differentiating P-CLAIM to CYPRESS
is the mobility of the agents. In P-CLAIM, the agents are
mobile so the context of an agent changes while moving from
one machine to another. The planner component must be able
to deal with the changing context because the planning is
interleaved with execution. An advantage of CYPRESS system
over our proposed system is in the way CYPRESS performs
replanning. We suspend the execution while computing a plan
to remove any discrepencies. While CYPRESS system uses
asynchronous replanning in which the system continues to
execute the unaffected portion of the plan while a planning
module computes a new plan.
      </p>
      <p>Our system has many similarities with RETSINA. Like our
system, RETSINA also interleaves planning with execution
and supports planning for dynamic and real environments.
But one main difference of RETSINA system with our system
is that RESTINA system plans by only reduction of the top
level task and it does not plan among the top level tasks, but
our system uses a HTN planner which also plans among the
top level tasks. So the plan generated is more optimal in our
system than in RETSINA system. Another main difference is
that RETSINA system does not use the existing information
from the BDI system whereas our system proposes a method
to use the existing agent’s and world’s information.</p>
      <p>
        Another framework DECAF[
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] which can be seen as an
inspiration of RETSINA, relates to our system. But, in DECAF,
the planner only estimates preconditions, select task templates
and instantiates them. It lacks the ability to anticipate future
actions.
      </p>
      <p>
        Like our system, [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] also provides a way to translate the
information from a JACK[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] agent to the information needed
by JSHOP[
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] planner. Main differences of this approach with
our approach are that in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] it is the responsibility of the
programmer to specify the points where the planner should
be called while our system plans for each goal. Our system
has the ability to deal with the unanticipated changes in the
environment, while [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] has no such ability.
      </p>
      <p>
        Another framework incorporating planning in a BDI
language is presented in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. It incorporates classical planning
into BDI framework. More precisely it extends the X-BDI[
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]
model to use the propositional planning algorithms for
performaing means-end reasoning. Our hypothesis is that our
proposed system has the advantage of being more efficient
as the HTN planning technique can find plans more rapidly
with the help of additional domain knowledge provided by
the programmer. Another important aspect is the loss of the
domain knowledge provided by the programmer in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. The
advantage of using the HTN planning is that the plans can
be synthesized according to the intentions of the programmer
without loosing the domain knowledge.
      </p>
    </sec>
    <sec id="sec-8">
      <title>VII. CONCLUSION AND FUTURE WORK</title>
      <p>In this paper, we have presented an extension to the CLAIM
language to endow the agents with the capability to plan ahead.
This modified and extended language is called P-CLAIM.
Agents are able to create temporal plans. Execution monitoring
and plan repairing components are added. A balance between
deliberation and reactivity has been established and the agents
are able to turn their attention while planning to the newly
arrived reactive goals. This work can be considered as a first
step towards a comprehensive temporal planning solution for
an Agent Oriented Programming language.</p>
      <p>After creating the temporal plan for an agent but before its
execution, the plan of an agent should be coordinated with
the plans of those agents with which the plan could be in
conflict or whose plans could be helpful for this agent. Our
next task is to propose a coordination mechanism to coordinate
the temporal plans of different agents. Coordinating the plan
of agent with every other agent in the MAS is very costly, so
another important task to do is to intelligently calculate the
set of those agents whose plan could be in conflict or whose
plans could be helpful for the agent and then the plan should
be coordinated with only those agents.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>R.</given-names>
            <surname>Bordini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hubner</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Vieira</surname>
          </string-name>
          , “
          <article-title>Jason and the Golden Fleece of agent-oriented programming</article-title>
          ,
          <source>” Multiagent systems artificial societies and simulated organizations</source>
          , vol.
          <volume>15</volume>
          , p.
          <fpage>3</fpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>M.</given-names>
            <surname>Dastani</surname>
          </string-name>
          ,
          <string-name>
            <surname>M. van Riemsdijk</surname>
          </string-name>
          , and J. Meyer, “
          <article-title>Programming multi-agent systems in 3APL,” Multiagent systems artificial societies and simulated organizations</article-title>
          , vol.
          <volume>15</volume>
          , p.
          <fpage>39</fpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Dastani</surname>
          </string-name>
          and J. Meyer, “
          <article-title>A practical agent programming language</article-title>
          ,
          <source>” Lecture Notes in Computer Science</source>
          , vol.
          <volume>4908</volume>
          , p.
          <fpage>107</fpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>P.</given-names>
            <surname>Busetta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Ronnquist</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Hodgson</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Lucas</surname>
          </string-name>
          , “
          <article-title>Jack intelligent agents-components for intelligent agents in java,” AgentLink News Letter</article-title>
          , vol.
          <volume>2</volume>
          , pp.
          <fpage>2</fpage>
          -
          <lpage>5</lpage>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5] L. de Silva and L. Padgham, “
          <article-title>Planning on demand in BDI systems</article-title>
          ,
          <source>” Proc. of ICAPS-05 (Poster)</source>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>F.</given-names>
            <surname>Meneguzzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Zorzo</surname>
          </string-name>
          , and M. da Costa Mora, “
          <article-title>Propositional planning in BDI agents</article-title>
          ,”
          <source>in Proceedings of the 2004 ACM symposium on Applied computing. ACM</source>
          New York, NY, USA,
          <year>2004</year>
          , pp.
          <fpage>58</fpage>
          -
          <lpage>63</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>de Silva</surname>
          </string-name>
          et al.,
          <source>“First Principles Planning in BDI Systems,” in Proceedings of the 8th international joint conference on Autonomous agents and multiagent systems, S. Decker</source>
          , Sichman and
          <string-name>
            <surname>C.</surname>
          </string-name>
          (.eds), Eds.,
          <year>2009</year>
          , pp.
          <fpage>1105</fpage>
          -
          <lpage>1112</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>J.</given-names>
            <surname>Penberthy</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Weld</surname>
          </string-name>
          , “
          <article-title>Temporal planning with continuous change,”</article-title>
          <source>in Proceedings of the national conference on Artificial Intelligence</source>
          . John Wiley &amp; Sons Ltd.,
          <year>1995</year>
          , pp.
          <fpage>1010</fpage>
          -
          <lpage>1010</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>D.</given-names>
            <surname>Smith</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Weld</surname>
          </string-name>
          , “
          <article-title>Temporal planning with mutual exclusion reasoning</article-title>
          ,” in
          <source>International joint conference on artificial intelligence</source>
          , vol.
          <volume>16</volume>
          . Lawrence Erlbaum Associates Ltd.,
          <year>1999</year>
          , pp.
          <fpage>326</fpage>
          -
          <lpage>337</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M.</given-names>
            <surname>Do</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Kambhampati</surname>
          </string-name>
          , “
          <article-title>Sapa: A domain-independent heuristic metric temporal planner,”</article-title>
          <source>in Proceedings of ECP-01</source>
          ,
          <year>2001</year>
          , pp.
          <fpage>109</fpage>
          -
          <lpage>120</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Ghallab</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Laruelle</surname>
          </string-name>
          , “
          <article-title>Representation and control in IxTeT, a temporal planner,”</article-title>
          <source>in Proc. 2nd Int. Conf. on AI Planning Systems</source>
          ,
          <year>1994</year>
          , pp.
          <fpage>61</fpage>
          -
          <lpage>67</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>A.</given-names>
            <surname>El Fallah-Seghrouchni</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Suna</surname>
          </string-name>
          , “
          <article-title>An unified framework for programming autonomous, intelligent and mobile agents</article-title>
          ,
          <source>” Lecture notes in computer science</source>
          , Springer, pp.
          <fpage>353</fpage>
          -
          <lpage>362</lpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>D.</given-names>
            <surname>Nau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Au</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Ilghami</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Kuter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Murdock</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Wu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Yaman</surname>
          </string-name>
          , “
          <article-title>SHOP2: An HTN planning system</article-title>
          ,
          <source>” Journal of Artificial Intelligence Research</source>
          , vol.
          <volume>20</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>379</fpage>
          -
          <lpage>404</lpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>S.</given-names>
            <surname>Sardina</surname>
          </string-name>
          and
          <string-name>
            <given-names>L.</given-names>
            <surname>Padgham</surname>
          </string-name>
          , “
          <article-title>Hierarchical planning in BDI agent programming languages: A formal approach,” in Proceedings of the fifth international joint conference on Autonomous agents and multiagent systems</article-title>
          . ACM New York, NY, USA,
          <year>2006</year>
          , pp.
          <fpage>1001</fpage>
          -
          <lpage>1008</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>H. M. Adnan</surname>
          </string-name>
          , “
          <article-title>A Planning Component for CLAIM Agents</article-title>
          ,” in To appear
          <source>in the Proceedings of International Workshop On Multi-Agent Systems Technology and Semantics. IEEE Romania</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>H.</given-names>
            <surname>Kautz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Selman</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Hoffmann</surname>
          </string-name>
          , “Satplan:
          <article-title>Planning as satisfiability,” in 5th International Planning Competition</article-title>
          . Citeseer,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>D.</given-names>
            <surname>Myers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Wesley</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Center</surname>
          </string-name>
          , “CYPRESS:
          <article-title>Reacting and Planning under Uncertainty,” in</article-title>
          DARPA Proceedings: Rome Laboratory Planning Initiative. Morgan Kaufmann,
          <year>1994</year>
          , p.
          <fpage>111</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>M.</given-names>
            <surname>Paolucci</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Shehory</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Sycara</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Kalp</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Pannu</surname>
          </string-name>
          , “
          <article-title>A planning component for RETSINA agents</article-title>
          ,
          <source>” Lecture notes in computer science</source>
          , Springer, pp.
          <fpage>147</fpage>
          -
          <lpage>161</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>J.</given-names>
            <surname>Graham</surname>
          </string-name>
          and
          <string-name>
            <given-names>K.</given-names>
            <surname>Decker</surname>
          </string-name>
          , “
          <article-title>Towards a distributed, environment-centered agent framework</article-title>
          ,
          <source>” Lecture notes in computer science</source>
          , Springer, pp.
          <fpage>290</fpage>
          -
          <lpage>304</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>D.</given-names>
            <surname>Wilkins</surname>
          </string-name>
          , “
          <article-title>Can AI planners solve practical problems?” Computational Intelligence</article-title>
          , vol.
          <volume>6</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>232</fpage>
          -
          <lpage>246</lpage>
          ,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>M.</given-names>
            <surname>Georgeff</surname>
          </string-name>
          and A. Lansky, “Procedural knowledge,
          <source>” Proceedings of the IEEE, Special Issue on Knowledge Representation</source>
          , vol.
          <volume>74</volume>
          , no.
          <issue>10</issue>
          , pp.
          <fpage>1383</fpage>
          -
          <lpage>1398</lpage>
          ,
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>D.</given-names>
            <surname>Nau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Cao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Lotem</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Mun</surname>
          </string-name>
          <article-title>˜oz-Avila, “SHOP: Simple hierarchical ordered planner</article-title>
          ,”
          <source>in Proceedings of the Sixteenth International Joint Conference on Artificial Intelligence table of contents</source>
          . Morgan Kaufmann Publishers Inc. San Francisco, CA, USA,
          <year>1999</year>
          , pp.
          <fpage>968</fpage>
          -
          <lpage>975</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>M.</given-names>
            <surname>Mora</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Lopes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Viccari</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Coelho</surname>
          </string-name>
          , “
          <article-title>BDI models and systems: Reducing the gap</article-title>
          ,”
          <source>in Proc. of ATAL-98, LNCS</source>
          , vol.
          <volume>1555</volume>
          . Springer.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>