Ejemplo n.º 1
0
def _broadcast(agent, term, intention):
    # Illocutionary force.
    ilf = agentspeak.grounded(term.args[0], intention.scope)
    if not agentspeak.is_atom(ilf):
        return
    if ilf.functor == "tell":
        goal_type = agentspeak.GoalType.belief
        trigger = agentspeak.Trigger.addition
    elif ilf.functor == "untell":
        goal_type = agentspeak.GoalType.belief
        trigger = agentspeak.Trigger.removal
    elif ilf.functor == "achieve":
        goal_type = agentspeak.GoalType.achievement
        trigger = agentspeak.Trigger.addition
    else:
        raise agentspeak.AslError("unknown illocutionary force: %s" % ilf)

    # Prepare message.
    message = agentspeak.freeze(term.args[1], intention.scope, {})
    tagged_message = message.with_annotation(
        agentspeak.Literal("source", (agentspeak.Literal(agent.name), )))

    # Broadcast.
    for receiver in agent.env.agents.values():
        if receiver == agent:
            continue

        receiver.call(trigger, goal_type, tagged_message,
                      agentspeak.runtime.Intention())

    yield
Ejemplo n.º 2
0
    def handle_sim_start(self, simulation):
        self._set_belief("id", simulation.get("id"))
        self._set_belief("map", simulation.get("map"))
        self._set_belief("seedCapital", int(simulation.get("seedCapital")))
        self._set_belief("steps", int(simulation.get("steps")))
        self._set_belief("team", simulation.get("team"))

        role = simulation.find("role")
        self._set_belief(
            "role", agentspeak.Literal(role.get("name").lower()),
            int(role.get("speed")), int(role.get("load")),
            int(role.get("battery")),
            tuple(tool.get("name") for tool in role.findall("./tool")))

        # Update item beliefs.
        item_beliefs = []

        for item in simulation.findall("./item"):
            tools = tuple(tool.get("name") for tool in item.findall("./tool"))
            parts = tuple(
                agentspeak.Literal("parts", (part.get("name"),
                                             int(part.get("amount"))))
                for part in item.findall("./item"))

            item_beliefs.append(
                agentspeak.Literal(
                    "item",
                    (item.get("name"), int(item.get("volume")), tools, parts),
                    PERCEPT_TAG))

        self._replace_beliefs(("item", 4), item_beliefs)
Ejemplo n.º 3
0
 def remove_belief(self, name: str, *args):
     """Remove an existing agent's belief."""
     new_args = ()
     for x in args:
         if type(x) == str:
             new_args += (asp.Literal(x),)
         else:
             new_args += (x,)
     term = asp.Literal(name, tuple(new_args), PERCEPT_TAG)
     self.agent.bdi_intention_buffer.append((asp.Trigger.removal, asp.GoalType.belief, term,
                                             asp.runtime.Intention()))
Ejemplo n.º 4
0
    def test_request_action(self):
        agent = agentspeak.mapc2017.Agent()
        with open(os.path.join(os.path.dirname(__file__),
                               "request-action.xml")) as xml:
            agent.message_received(etree.parse(xml).getroot())

        term = agentspeak.Literal("money", (50000, ))
        intention = agentspeak.runtime.Intention()
        self.assertTrue(agent.test_belief(term, intention))

        term = agentspeak.Literal(
            "shop", ("shop1", 48.8217, 2.33207, 4, agentspeak.Var()))
        intention = agentspeak.runtime.Intention()
        self.assertTrue(agent.test_belief(term, intention))

        agent.dump()
Ejemplo n.º 5
0
 def _string2term(agent, term, intention):
     string = asp.grounded(term.args[0], intention.scope)
     result = asp.Literal(string)
     logger.success("[DBG] {} -> {}".format(string, result))
     if asp.unify(term.args[-1], result, intention.scope,
                  intention.stack):
         yield
Ejemplo n.º 6
0
    def connection_lost(self, exc):
        LOGGER.warning("socket connection lost (reason: %s)", exc)

        self.call(agentspeak.Trigger.removal, agentspeak.GoalType.belief,
                  agentspeak.Literal("connected", (self.name, )),
                  agentspeak.runtime.Intention())

        self.env.run()
Ejemplo n.º 7
0
        async def run(self):
            """
            Coroutine run cyclic.
            """
            if self.agent.bdi_enabled:
                msg = await self.receive(timeout=0)
                if msg:
                    mdata = msg.metadata
                    ilf_type = mdata["ilf_type"]
                    if ilf_type == "tell":
                        goal_type = asp.GoalType.belief
                        trigger = asp.Trigger.addition
                    elif ilf_type == "untell":
                        goal_type = asp.GoalType.belief
                        trigger = asp.Trigger.removal
                    elif ilf_type == "achieve":
                        goal_type = asp.GoalType.achievement
                        trigger = asp.Trigger.addition
                    else:
                        raise asp.AslError(
                            "unknown illocutionary force: {}".format(ilf_type))

                    intention = asp.runtime.Intention()
                    functor, args = parse_literal(msg.body)

                    message = asp.Literal(functor, args)
                    message = asp.freeze(message, intention.scope, {})

                    tagged_message = message.with_annotation(
                        asp.Literal("source",
                                    (asp.Literal(str(msg.sender)), )))
                    self.agent.bdi_intention_buffer.append(
                        (trigger, goal_type, tagged_message, intention))

                if self.agent.bdi_intention_buffer:
                    temp_intentions = deque(self.agent.bdi_intention_buffer)
                    for trigger, goal_type, term, intention in temp_intentions:
                        self.agent.bdi_agent.call(trigger, goal_type, term,
                                                  intention)
                        '''self.agent.bdi_agent.step()'''
                        self.agent.bdi_intention_buffer.popleft()

                self.agent.bdi_agent.step()

            else:
                await asyncio.sleep(0.1)
Ejemplo n.º 8
0
def test_unifies_annotated():
    X = agentspeak.Var()
    Y = agentspeak.Var()
    foo_a = agentspeak.Literal("foo", (), ("a",))
    foo_ab = agentspeak.Literal("foo", (), ("a", "b"))
    foo_XY = agentspeak.Literal("foo", (), (X, Y))
    foo_XX = agentspeak.Literal("foo", (), (X, X))

    assert agentspeak.unifies_annotated(foo_a, foo_ab)
    assert agentspeak.unifies_annotated(foo_a, foo_XY)
    assert agentspeak.unifies_annotated(foo_a, foo_XX)
    assert agentspeak.unifies_annotated(foo_ab, foo_XY)
    assert agentspeak.unifies_annotated(foo_XY, foo_ab)
    assert agentspeak.unifies_annotated(foo_XX, foo_ab)
    assert agentspeak.unifies_annotated(foo_XX, foo_ab)

    assert not agentspeak.unifies_annotated(foo_ab, foo_XX)
Ejemplo n.º 9
0
    def test_unifies_annotated(self):
        X = agentspeak.Var()
        Y = agentspeak.Var()
        foo_a = agentspeak.Literal("foo", (), ("a", ))
        foo_ab = agentspeak.Literal("foo", (), ("a", "b"))
        foo_XY = agentspeak.Literal("foo", (), (X, Y))
        foo_XX = agentspeak.Literal("foo", (), (X, X))

        self.assertTrue(agentspeak.unifies_annotated(foo_a, foo_ab))
        self.assertTrue(agentspeak.unifies_annotated(foo_a, foo_XY))
        self.assertTrue(agentspeak.unifies_annotated(foo_a, foo_XX))
        self.assertTrue(agentspeak.unifies_annotated(foo_ab, foo_XY))
        self.assertTrue(agentspeak.unifies_annotated(foo_XY, foo_ab))
        self.assertTrue(agentspeak.unifies_annotated(foo_XX, foo_ab))
        self.assertTrue(agentspeak.unifies_annotated(foo_XX, foo_ab))

        self.assertFalse(agentspeak.unifies_annotated(foo_ab, foo_XX))
        self.assertFalse(agentspeak.unifies_annotated(foo_XY, foo_a))
Ejemplo n.º 10
0
 def set_belief(self, name: str, *args):
     """Set an agent's belief. If it already exists, updates it."""
     new_args = ()
     for x in args:
         if type(x) == str:
             new_args += (asp.Literal(x),)
         else:
             new_args += (x,)
     term = asp.Literal(name, tuple(new_args), PERCEPT_TAG)
     found = False
     for belief in list(self.agent.bdi_agent.beliefs[term.literal_group()]):
         if asp.unifies(term, belief):
             found = True
         else:
             self.agent.bdi_intention_buffer.append((asp.Trigger.removal, asp.GoalType.belief, belief,
                                                     asp.runtime.Intention()))
     if not found:
         self.agent.bdi_intention_buffer.append((asp.Trigger.addition, asp.GoalType.belief, term,
                                                 asp.runtime.Intention()))
Ejemplo n.º 11
0
def test_concat_lists():
    env = agentspeak.runtime.Environment()
    agent = agentspeak.runtime.Agent(env, "agent")
    intention = agentspeak.runtime.Intention()
    X = agentspeak.Var()

    term = agentspeak.Literal(".concat", ((1, 2), (3, ), X))
    next(agentspeak.stdlib._concat(agent, term, intention))

    assert X.grounded(intention.scope) == (1, 2, 3)
Ejemplo n.º 12
0
def test_concat_strings():
    env = agentspeak.runtime.Environment()
    agent = agentspeak.runtime.Agent(env, "agent")
    intention = agentspeak.runtime.Intention()
    X = agentspeak.Var()

    term = agentspeak.Literal(".concat", ("hello", " ", "world", X))
    next(agentspeak.stdlib._concat(agent, term, intention))

    assert X.grounded(intention.scope) == "hello world"
Ejemplo n.º 13
0
def _send(agent, recipient, ils, term):
    group = ils.literal_group()
    if group == ("tell", 0):
        frozen = agentspeak.grounded(term, {}).with_annotation(
            agentspeak.Literal("source", (agent.name, )))
        agent.emit(recipient,
                   functools.partial(agentspeak.runtime.add_belief, frozen))
    elif group == ("achieve", 0):
        frozen = term.with_annotation(
            agentspeak.Literal("source", (agent.name, )))
        agent.emit(
            recipient,
            functools.partial(agentspeak.runtime.call,
                              agentspeak.Trigger.addition,
                              agentspeak.GoalType.achievement, frozen))
    else:
        raise agentspeak.PysonError("unsupported illocutionary force: %s/%d" %
                                    (group[0], group[1]))

    return True
Ejemplo n.º 14
0
def _send(agent, term, intention):
    # Find the receivers: By a string, atom or list of strings or atoms.
    receivers = agentspeak.grounded(term.args[0], intention.scope)
    if not agentspeak.is_list(receivers):
        receivers = [receivers]
    receiving_agents = []
    for receiver in receivers:
        if agentspeak.is_atom(receiver):
            receiving_agents.append(agent.env.agents[receiver.functor])
        else:
            receiving_agents.append(agent.env.agents[receiver])

    # Illocutionary force.
    ilf = agentspeak.grounded(term.args[1], intention.scope)
    if not agentspeak.is_atom(ilf):
        return
    if ilf.functor == "tell":
        goal_type = agentspeak.GoalType.belief
        trigger = agentspeak.Trigger.addition
    elif ilf.functor == "untell":
        goal_type = agentspeak.GoalType.belief
        trigger = agentspeak.Trigger.removal
    elif ilf.functor == "achieve":
        goal_type = agentspeak.GoalType.achievement
        trigger = agentspeak.Trigger.addition
    else:
        raise agentspeak.AslError("unknown illocutionary force: %s" % ilf)

    # TODO: unachieve, askOne, askAll, tellHow, untellHow, askHow

    # Prepare message.
    message = agentspeak.freeze(term.args[2], intention.scope, {})
    tagged_message = message.with_annotation(
        agentspeak.Literal("source", (agentspeak.Literal(agent.name), )))

    # Broadcast.
    for receiver in receiving_agents:
        receiver.call(trigger, goal_type, tagged_message,
                      agentspeak.runtime.Intention())

    yield
Ejemplo n.º 15
0
def do_some_work():
    for developer in developers:
        if developer.active:
            if isinstance(developer, agentspeak.runtime.Agent):
                developer.call(agentspeak.Trigger.addition,
                               agentspeak.GoalType.achievement,
                               agentspeak.Literal("tick"),
                               agentspeak.runtime.Intention())

                env.run_agent(developer)
            else:
                developer.do_some_work()
Ejemplo n.º 16
0
    def _set_belief(self, name, *args):
        term = agentspeak.Literal(name, tuple(args), PERCEPT_TAG)

        found = False

        for belief in list(self.beliefs[term.literal_group()]):
            if agentspeak.unifies(term, belief):
                found = True
            else:
                self.call(agentspeak.Trigger.removal,
                          agentspeak.GoalType.belief, belief,
                          agentspeak.runtime.Intention())

        if not found:
            self.call(agentspeak.Trigger.addition, agentspeak.GoalType.belief,
                      term, agentspeak.runtime.Intention())
Ejemplo n.º 17
0
 def _getSquadLeader(agent, term, intention):
   ##
   SQUAD_SIZE = 3 #soldados por escuadra
   LEADER_ROLE = "squadleader"
   [name, domain] = str(self.name).split("@");
   [team, role , user, nnum] = name.split("_");
   if len(name.split("_")) != 4:
     logger.success("ERROR: {} debe ser equipo_rol_usuario_num".format(name));
   nnum = int(name.split("_")[-1]);
   #en funcion del numero de agente, asigna lider
   #nos hacemos un "Round-robin"
   leaderID = "nil";
   squadNum =  nnum % SQUAD_SIZE;
   leaderID = team+"_"+LEADER_ROLE+"_"+user+"_"+str(squadNum)+"@"+domain;
   #cadena a literal y "groundea" valor al primer parametro
   sqLeader = asp.Literal(leaderID);
   if asp.unify(term.args[-1], sqLeader, intention.scope, intention.stack):
     yield
Ejemplo n.º 18
0
def test_unifies():
    assert not agentspeak.unifies(True, 1)

    assert agentspeak.unifies(3, 3.0)
    assert agentspeak.unifies(True, True)
    assert agentspeak.unifies(5, agentspeak.Wildcard())
    assert agentspeak.unifies((1, 2), (1, agentspeak.Wildcard()))
    assert agentspeak.unifies(("hello", 2), ("hello", agentspeak.Var()))

    assert agentspeak.unifies(agentspeak.Var(), agentspeak.Literal("beep"))
    assert agentspeak.unifies(agentspeak.Literal("boop"), agentspeak.Var())

    X = agentspeak.Var()
    assert agentspeak.unifies(agentspeak.Literal("foo", (X, X)), agentspeak.Literal("foo", (1, 1)))
    assert not agentspeak.unifies(agentspeak.Literal("bar", (X, X)), agentspeak.Literal("bar", (1, 2)))
Ejemplo n.º 19
0
    def test_unifies(self):
        self.assertFalse(agentspeak.unifies(True, 1))

        self.assertTrue(agentspeak.unifies(3, 3.0))
        self.assertTrue(agentspeak.unifies(True, True))
        self.assertTrue(agentspeak.unifies(5, agentspeak.Wildcard()))
        self.assertTrue(agentspeak.unifies((1, 2), (1, agentspeak.Wildcard())))
        self.assertTrue(
            agentspeak.unifies(("hello", 2), ("hello", agentspeak.Var())))

        self.assertTrue(
            agentspeak.unifies(agentspeak.Var(), agentspeak.Literal("beep")))
        self.assertTrue(
            agentspeak.unifies(agentspeak.Literal("boop"), agentspeak.Var()))

        X = agentspeak.Var()
        self.assertTrue(
            agentspeak.unifies(agentspeak.Literal("foo", (X, X)),
                               agentspeak.Literal("foo", (1, 1))))
        self.assertFalse(
            agentspeak.unifies(agentspeak.Literal("bar", (X, X)),
                               agentspeak.Literal("bar", (1, 2))))
Ejemplo n.º 20
0
 def visit_literal(self, ast_literal):
     return agentspeak.Literal(ast_literal.functor,
                               (t.accept(self) for t in ast_literal.terms),
                               (t.accept(self)
                                for t in ast_literal.annotations))
Ejemplo n.º 21
0
# -*- coding: utf-8 -*-
import asyncio
import time
from ast import literal_eval
from loguru import logger
from collections import deque
import agentspeak as asp
import agentspeak.runtime
from agentspeak.stdlib import actions as asp_action
from spade.behaviour import CyclicBehaviour
from spade.agent import Agent
from spade.template import Template
from spade.message import Message

PERCEPT_TAG = frozenset([asp.Literal("source", (asp.Literal("percept"),))])


class BDIAgent(Agent):
    def __init__(self, jid: str, password: str, asl: str, actions=None, *args, **kwargs):
        print("ccarstens ccarstens")
        self.asl_file = asl
        self.bdi_enabled = False
        self.bdi_intention_buffer = deque()
        self.bdi = None
        self.bdi_agent = None

        super().__init__(jid, password, *args, **kwargs)
        while not self.loop:
            time.sleep(0.01)

        template = Template(metadata={"performative": "BDI"})
Ejemplo n.º 22
0
def call_my_plan(agent, txt):
    agent.call(
        agentspeak.Trigger.addition,
        agentspeak.GoalType.achievement,
        agentspeak.Literal("my_plan", (txt.upper(), )),
        agentspeak.runtime.Intention())
Ejemplo n.º 23
0
 def as_term(self):
     return agentspeak.Literal(
         "issue",
         (agentspeak.Literal(self.type), self.patch, self.priority), ())
Ejemplo n.º 24
0
 def _getSquadLeader(agent, term, intention):
   sqLeader = asp.Literal(str(self.name));
   if asp.unify(term.args[-1], sqLeader, intention.scope, intention.stack):
     yield
Ejemplo n.º 25
0
import asyncio

from lxml import etree

from heapq import heapify, heappop

import agentspeak
import agentspeak.runtime
import agentspeak.ext_stdlib

LOGGER = agentspeak.get_logger(__name__)

actions = agentspeak.Actions(agentspeak.ext_stdlib.actions)

PERCEPT_TAG = frozenset(
    [agentspeak.Literal("source", (agentspeak.Literal("percept"), ))])


class Environment(agentspeak.runtime.Environment):
    def time(self):
        return asyncio.get_event_loop().time()

    def run(self):
        super(Environment, self).run()
        self.dispatch_wait_until()

    def dispatch_wait_until(self):
        earliest = None
        for agent in self.agents.values():
            for intention_stack in agent.intentions:
                wait = intention_stack[-1].wait_until
Ejemplo n.º 26
0
        more_work = False
        for agent in agents:
            more_work |= agent.step(env)


result_file = open("result.csv", "w")

plot = "--plot" in sys.argv

if plot:
    plt.ion()
    fig = plt.figure()
    plt.axis([0, 5 * 365, 0, 600])

for day in range(5 * 365):
    term = agentspeak.Literal("day", (day, ))
    print(term)

    for agent in agents:
        agent.call(agentspeak.Trigger.addition,
                   agentspeak.GoalType.achievement,
                   env,
                   term, {},
                   delayed=True)

    run()

    print(len(files))

    if plot:
        import matplotlib.pyplot as plt
Ejemplo n.º 27
0
    def handle_request_action(self, message):
        req = message[0]

        if self.action_id is not None:
            LOGGER.warning("%s: action id %d was not used", self.name,
                           self.action_id)
        self.action_id = int(req.get("id"))

        self_data = req.find("self")
        self._set_belief("charge", int(self_data.get("charge")))
        self._set_belief("load", int(self_data.get("load")))
        self._set_belief("lat", float(self_data.get("lat")))
        self._set_belief("lon", float(self_data.get("lon")))
        self._set_belief("routeLength", int(self_data.get("routeLength", 0)))

        route = []
        for wp in self_data.findall("./route"):
            route.append(
                agentspeak.Literal("wp", (int(wp.get("i")), float(
                    wp.get("lat")), float(wp.get("lon")), PERCEPT_TAG)))
        self._set_belief("route", tuple(route))

        self._set_belief("money", int(req.find("team").get("money")))

        action = self_data.find("action")
        if action is not None:
            self._set_belief("lastAction",
                             agentspeak.Literal(action.get("type")))
            self._set_belief("lastActionResult",
                             agentspeak.Literal(action.get("result")))
            # TODO: Action parameters
        else:
            self._replace_beliefs(("lastAction", 1), [])
            self._replace_beliefs(("lastActionResult", 1), [])

        # Update carried items.
        carried_items = []
        for item in self_data.findall("./items"):
            carried_items.append(
                agentspeak.Literal("item",
                                   (item.get("name"), int(item.get("amount"))),
                                   PERCEPT_TAG))
        self._replace_beliefs(("item", 2), carried_items)

        # Update entities.
        entities = []
        for entity in req.findall("entity"):
            entities.append(
                agentspeak.Literal(
                    "entity", (agentspeak.Literal(entity.get("name")),
                               entity.get("team"), float(entity.get("lat")),
                               float(entity.get("lon")),
                               agentspeak.Literal(entity.get("role").lower())),
                    PERCEPT_TAG))
        self._replace_beliefs(("entity", 5), entities)

        # Update charging station pecepts
        charging_stations = []
        for station in req.findall("chargingStation"):
            charging_stations.append(
                agentspeak.Literal(
                    "chargingStation",
                    (station.get("name"), float(station.get("lat")),
                     float(station.get("lon")), int(station.get("rate"))),
                    PERCEPT_TAG))
        self._replace_beliefs(("chargingStation", 4), charging_stations)

        # Update dumps.
        dumps = []
        for dump in req.findall("dump"):
            dumps.append(
                agentspeak.Literal("dump",
                                   (dump.get("name"), float(dump.get("lat")),
                                    float(dump.get("lon"))), PERCEPT_TAG))
        self._replace_beliefs(("dump", 4), dumps)

        # Update shops.
        shops = []
        for shop in req.findall("shop"):
            shop_items = []
            for item in shop.findall("item"):
                shop_items.append(
                    agentspeak.Literal(
                        "item", (item.get("name"), int(
                            item.get("price")), int(item.get("amount")))))
            shops.append(
                agentspeak.Literal(
                    "shop", (shop.get("name"), float(shop.get("lat")),
                             float(shop.get("lon")), int(shop.get("restock")),
                             tuple(shop_items)), PERCEPT_TAG))
        self._replace_beliefs(("shop", 5), shops)

        # Update storage percepts.
        storages = []
        for storage in req.findall("storage"):
            storage_items = []
            for item in storage.findall("item"):
                storage_items.append(
                    agentspeak.Literal(
                        "item", (item.get("name"), int(
                            item.get("stored")), int(item.get("delivered")))))
            storages.append(
                agentspeak.Literal(
                    "storage",
                    (storage.get("name"), float(
                        storage.get("lat")), float(storage.get("lon")),
                     int(storage.get("totalCapacity")),
                     int(storage.get("usedCapacity")), tuple(storage_items)),
                    PERCEPT_TAG))
        self._replace_beliefs(("storage", 6), storages)

        # Update workshops.
        workshops = []
        for workshop in req.findall("workshop"):
            workshops.append(
                agentspeak.Literal(
                    "workshop",
                    (workshop.get("name"), float(workshop.get("lat")),
                     float(workshop.get("lon"))), PERCEPT_TAG))
        self._replace_beliefs(("workshop", 3), workshops)

        # Update resource nodes.
        resource_nodes = []
        for node in req.findall("resourceNode"):
            resource_nodes.append(
                agentspeak.Literal(
                    "resourceNode",
                    (node.get("name"), float(node.get("lat")),
                     float(node.get("lon")), node.get("resource")),
                    PERCEPT_TAG))
        self._replace_beliefs(("resourceNode", 4), resource_nodes)

        # Update job percepts.
        jobs = []
        auctions = []
        missions = []
        posteds = []
        for job in req.findall("job"):
            required = tuple(
                agentspeak.Literal("required", (item.get("name"),
                                                int(item.get("amount"))))
                for item in job.findall("required"))

            jobs.append(
                agentspeak.Literal(
                    "job",
                    (job.get("id"), job.get("storage"), int(job.get("reward")),
                     int(job.get("start")), int(job.get("end")), required),
                    PERCEPT_TAG))

        for auction in req.findall("auction"):
            required = tuple(
                agentspeak.Literal("required", (item.get("name"),
                                                int(item.get("amount"))))
                for item in auction.findall("required"))

            reward = int(auction.get("reward"))
            auctions.append(
                agentspeak.Literal(
                    "auction",
                    (auction.get("id"), auction.get("storage"), reward,
                     int(auction.get("start")), int(
                         auction.get("end")), int(auction.get("fine")),
                     int(auction.get("lowestBid", str(reward + 1))),
                     int(auction.get("auctionTime")), required), PERCEPT_TAG))

        for mission in req.findall("mission"):
            required = tuple(
                agentspeak.Literal("required", (item.get("name"),
                                                int(item.get("amount"))))
                for item in mission.findall("required"))

            missions.append(
                agentspeak.Literal(
                    "mission",
                    (mission.get("id"), mission.get("storage"),
                     int(mission.get("reward")), int(mission.get("start")),
                     int(mission.get("end")), int(mission.get("fine")),
                     int(mission.get("lowestBid")), 0, required), PERCEPT_TAG))

        for posted in req.findall("posted"):
            required = tuple(
                agentspeak.Literal("required", (item.get("name"),
                                                int(item.get("amount"))))
                for item in posted.findall("required"))

            posteds.append(
                agentspeak.Literal(
                    "job",
                    (posted.get("id"), posted.get("storage"),
                     int(posted.get("reward")), int(posted.get("start")),
                     int(posted.get("end")), required), PERCEPT_TAG))

        self._replace_beliefs(("job", 5), jobs)
        self._replace_beliefs(("auction", 9), auctions)
        self._replace_beliefs(("mission", 9), missions)
        self._replace_beliefs(("posted", 5), posteds)

        # Update step.
        self._set_belief("timestamp", int(message.get("timestamp")))
        self._set_belief("deadline", int(req.get("deadline")))
        self.simulation_step = int(req.find("simulation").get("step"))
        self._set_belief("step", self.simulation_step)