Skip to main content

Scalable Multi-agent Simulation Based on MapReduce

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNAI,volume 10207))

Abstract

Jason is perhaps the most advanced multi-agent programming language based on AgentSpeak. Unfortunately, its current Java-based implementation does not scale up and is seriously limited for simulating systems of hundreds of thousands of agents.

We are presenting a scalable simulation platform for running huge numbers of agents in a Jason style simulation framework. Our idea is (1) to identify independent parts of the simulation in order to parallelize as much as possible, and (2) to use and apply existing technology for parallel processing of large datasets (e.g. MapReduce).

We evaluate our approach on an early benchmark and show that it scales up linearly (in the number of agents).

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Notes

  1. 1.

    Source code available at https://github.com/niklasf/pyson.

  2. 2.

    This technique is well known in Prolog interpreters [12, 13].

  3. 3.

    http://yieldprolog.sourceforge.net/.

  4. 4.

    The test environment is a pristine Debian Jessie using an Intel Xeon CPU @ 4\(\,\times \,\)2.30 GHz and 26 GB RAM.

References

  1. Ahlbrecht, T., Dix, J., Fiekas, N., Grabowski, J., Herbold, V., Honsel, D., Waack, S., Welter, M.: Agent-based simulation for software development processes. Technical report IfI-16-02, TU Clausthal, September 2016 (to appear). http://www.in.tu-clausthal.de/fileadmin/homes/techreports/ifi1602ahlbrecht.pdf

  2. Ahlbrecht, T., Dix, J., Fiekas, N., Kraus, P., Müller, J.P.: An architecture for scalable simulation of systems of cognitive agents. Int. J. Agent-Orient. Softw. Eng. 5, 232–265 (2016)

    Article  Google Scholar 

  3. Bordini, R., Dix, J.: Chapter 13: Programming multi-agent systems. In: Weiss, G. (ed.) Multiagent Systems, pp. 587–639. MIT-Press, Cambridge (2013)

    Google Scholar 

  4. Bordini, R.H., Hübner, J.F., Wooldridge, M.: Programming Multi-agent Systems in AgentSpeak Using Jason (Wiley Series in Agent Technology). Wiley, Hoboken (2007). ISBN 0470029005

    Book  MATH  Google Scholar 

  5. Dean, J., Ghemawat, S.: MapReduce: simplified data processing on large clusters. Commun. ACM 51(1), 107–113 (2008). ISSN 0001–0782, doi:10.1145/1327452.1327492. http://doi.acm.org/10.1145/1327452.1327492

  6. Honsel, V., Honsel, D., Herbold, S., Grabowski, J., Waack, S.: Mining software dependency networks for agent-based simulation of software evolution. In: 2015 30th IEEE/ACM International Conference on Automated Software Engineering Workshop (ASEW), pp. 102–108. IEEE (2015)

    Google Scholar 

  7. Lin, J., Schatz, M.: Design patterns for efficient graph algorithms in MapReduce. In: Proceedings of 8th Workshop on Mining and Learning with Graphs, MLG 2010, pp. 78–85. ACM, New York (2010). ISBN 978-1-4503-0214-2, doi:10.1145/1830252.1830263. http://doi.acm.org/10.1145/1830252.1830263

  8. Radenski, A.: Using MapReduce streaming for distributed life simulation on the cloud. ECAL 2013, 284–291 (2013)

    Article  Google Scholar 

  9. Rao, A.S.: AgentSpeak(L): BDI agents speak out in a logical computable language. In: Velde, W., Perram, J.W. (eds.) MAAMAW 1996. LNCS, vol. 1038, pp. 42–55. Springer, Heidelberg (1996). doi:10.1007/BFb0031845

    Chapter  Google Scholar 

  10. Vitter, J.S.: Random sampling with a reservoir. ACM Trans. Math. Softw. (TOMS) 11(1), 37–57 (1985)

    Article  MathSciNet  MATH  Google Scholar 

  11. Wang, G., Salles, M.A.V., Sowell, B., Wang, X., Cao, T., Demers, A.J., Gehrke, J., White, W.M.: Behavioral simulations in MapReduce. CoRR, abs/1005.3773 (2010). http://arxiv.org/abs/1005.3773

  12. Wielemaker, J., Schrijvers, T., Triska, M., Lager, T.: SWI-Prolog. Theory Pract. Log. Prog. 12(1–2), 67–96 (2012)

    Article  MathSciNet  MATH  Google Scholar 

  13. Winikoff, M.: W-Prolog (1996). http://waitaki.otago.ac.nz/ michael/wp/index.html

  14. Zhang, S., Han, J., Liu, Z., Wang, K., Xu, Z.: SJMR: parallelizing spatial join with MapReduce on clusters. In: Proceedings of 2009 IEEE International Conference on Cluster Computing, 31 August – 4 September 2009, New Orleans, Louisiana, USA, pp. 1–8 (2009). doi:10.1109/CLUSTR.2009.5289178. http://dx.doi.org/10.1109/CLUSTR.2009.5289178

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Tobias Ahlbrecht .

Editor information

Editors and Affiliations

A Set of Instructions

A Set of Instructions

These instructions are used as an intermediate representation of Jason programs:

  • noop(agent, intention): Does nothing and succeeds always.

  • add_belief(term, agent, intention): Applies the current substitution to term and adds it to the belief base. Triggers a belief addition event.

  • remove_belief(term, agent, intention): Unifies term with the first matching belief and removes it from the belief base. Triggers a belief removal event.

  • test_belief(term, agent, intention): Tries to find a substitution such that term is a logical consequence of the belief base. Triggers a belief test event.

  • call(trigger, goal_type, term, agent, intention): Tries to find a plan matching trigger, goal_type and term and adds it as a subplan to the current intention.

  • call_delayed(trigger, goal_type, term, agent, intention): Tries to find a plan matching trigger, goal_type and term and creates a new intention with it.

  • push_query(query, agent, intention): Starts the Prolog query query and adds the resulting Python generator to the query stack. This is also used for actions that can yield multiple results.

  • next_or_fail(agent, intention): Tries to advance the topmost generator.

  • pop_query(agent, intention): Removes the topmost generator from the stack.

Rights and permissions

Reprints and permissions

Copyright information

© 2017 Springer International Publishing AG

About this paper

Cite this paper

Ahlbrecht, T., Dix, J., Fiekas, N. (2017). Scalable Multi-agent Simulation Based on MapReduce . In: Criado Pacheco, N., Carrascosa, C., Osman, N., Julián Inglada, V. (eds) Multi-Agent Systems and Agreement Technologies. EUMAS AT 2016 2016. Lecture Notes in Computer Science(), vol 10207. Springer, Cham. https://doi.org/10.1007/978-3-319-59294-7_31

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-59294-7_31

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-59293-0

  • Online ISBN: 978-3-319-59294-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics