Advertisement

Multiagent System

Started by October 27, 2009 10:50 AM
8 comments, last by Hodgman 15 years ago
Hello, I'm making a multi-agent system to investigate resource allocation, so there will need to be contract/negotiation/etc between agents, and hopefully the system can be multi-threaded as there might be a lot of agents. I'm free to use any language I wish, so I was wondering if anyone can suggest a suitable language/library for this. Otherwise C++ I guess it will be :D
Aww come on.. posts about what to make an mmo in will go on for pages, but no one has any advice for this?
Advertisement
Quote: Original post by CzarKirk
Aww come on.. posts about what to make an mmo in will go on for pages, but no one has any advice for this?
It would help if your post actually contained a question, or, you know, enough details to actually base advice on.

A 'multi-agent system' could be anything with more than one entity, and 'resource allocation' should have very little to do with anything, in this day and age.

And if your question was 'what language?', then the boiler-plate answer is: whatever you feel most comfortable with.

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

I'm trying to create an abstract simulation of a multi-agent environment; here are some things I could implement.. Contract Net (CNET), KQML, FIPA agent communcation languages, for example. I can find tons of academic articles and research papers on them, but no real concrete program examples so I'm kind of going around in the dark.
And yet the answer to the question "what language should I use?" is still... whatever you know. That's like asking "what language should I write my PhD thesis paper in?" Whatever you speak.

Personally, I would go with C++ just because most of the tools you will find for AI are in C++.

Dave Mark - President and Lead Designer of Intrinsic Algorithm LLC
Professional consultant on game AI, mathematical modeling, simulation modeling
Co-founder and 10 year advisor of the GDC AI Summit
Author of the book, Behavioral Mathematics for Game AI
Blogs I write:
IA News - What's happening at IA | IA on AI - AI news and notes | Post-Play'em - Observations on AI of games I play

"Reducing the world to mathematical equations!"

Well, there are dedicated agent-based languages, such as Concurrent Metatem and Agent0, but buggered if I can find anything useful to read on them other than random computer science journal articles. Wikipedia lets me down; CM's article is only a bit more comprehensive than Agent0's. It seems to be more of a thing like Prolog.. nice to learn in school, but when it comes down to it, C++ time. Which is why I came here, to see if anybody knows anything about these mystical languages and where to get them and if they are worth using... or if I'd be barking up the wrong tree and would be better off with a more traditional language.
Advertisement
Most people on GameDev.net have to solve practical problems within pre-existing software, rather than academic problems. That means that more often than not we tend to use the language of the host software - almost always C++. Maybe Python, or Java.

Personally for something like you describe I would choose Python as a good compromise between being fairly high-level and yet having decent libraries and an easily understood imperative syntax. There are several libraries for Python that offer the actor model or distributed processing but I couldn't recommend one in particular. I would recommend going with a distributed and multi-process model rather than a threaded model however.
Hello CzarKirk,

maybe JADE is what you have searched for : http://jade.tilab.com/
I've heard of it in an AI lecture, but have never used it...


dj3hut1


The engine will probably be the least of the project.

Use a 'blackboard' system for the message/info passing part of it.

The simulation logic will be the most effort (either in detail or in balancing it)] and you might want to use a scripting language like python to do that (but not if you need real speed).

You are lucky in your mutli-threading option because this type of problem is solvable in sequential passes where the agents get to process the current 'turn' (equally) and then post their adjustments to be applied the next 'turn'.

You just use cental dispatching to worker threads to load level all agents (each running its turn) and then synchronusly doing updates and then repeating. Simulation Data is all read-only so you dont need protective interlocks ( agents can execute their 'turn' independantly on different threads (one one each CPU core).

The domain specific logic for your simulations 'mechanics' will likely take the most time to make it operate as you want (BONUS points would be a system that adapts to a given scenario -- a project probably a magnitude more complex).
--------------------------------------------[size="1"]Ratings are Opinion, not Fact
If you're going to go for a parallel system, there's existing libraries that can do much of the work for you, such as:
http://www.threadingbuildingblocks.org/
http://code.google.com/p/jobswarm/

Herb Sutter has written lots of good articles on modern concurrency:
http://herbsutter.wordpress.com/

This topic is closed to new replies.

Advertisement