Ticket #30 (new task)

Opened 15 years ago

Last modified 15 years ago

Basis of Multiple-Participant decision making

Reported by: smidl Owned by: smidl
Priority: major Milestone: Replication of ACC merging experiment
Component: bdm core Version:
Keywords: Cc: smidl@…, vbar@…

Description

Multiple Participand decision-making (MPDM) was the main reason why to start this project.

I propose to keep any communication and related stuff out of BDM library. All stuff related to mpdm will be located in folder applications/mpdm where classes such as "participant" or perhaps "agent" should reside.

Rather than writing the whole class hierarchy by us I proppse to look for a free version of multiagent systems - written preferably in C++. I am not sure about Java... would it be OK?

  • make survey of multi-agent systems
  • choose one system and copy (?) it into mpdm (?)
  • build offsprings of their agents that would use element of the BDM library for communication and for internal routines

Change History

Changed 15 years ago by vbarta

I'd prefer not to build a Java application on top of a C++ library - I've done it before, and while it's certainly possible, it requires a lot of glue to cover the language incompatibilities (types, exceptions, threads), with lots of space for very interesting bugs... Porting Java to C++ is OK in general, but I'm afraid multiple participants will want to communicate over a network, which is implemented in standard libraries in Java (multiple standard libraries - network communication in Java may have stabilized by now, but that doesn't mean all multi-agent systems will use the latest ad greatest way to communicate) and 3rd-party libraries in C++, and they have almost nothing in common... So when you're doing the survey, please try to find something in C++ - if there really isn't anything good enough, well, it is possible to use Java...

Changed 15 years ago by smidl

I came across an interesting page of open source projects from NASA featuring at least two interesting projects:

I am also in favor of C++, however, I would like to go as mainstream as possible...

Changed 15 years ago by smidl

After a short look at the NASA thing i am not really happy with them :(

Another option appears to be Mobile-C which is written in C/C++ but most likely in Ch which is a sort of interpreted C.

It looks very powerfu but also very scary (interpreted C?)...

Changed 15 years ago by smidl

  • cc smidl@…, vbar@… added

Changed 15 years ago by smidl

As agreed, we will not try to fill an existing system, but rather create a trivial implementation of our own dumb-agent application.

Issues:

  • data exchange format: most likeliy string in libconfig format,
    • memory management and exception handling - this needs to be resolved in BDM library
  • communication mechanism: perhaps ACE?
  • how to manage the agents? On a single machine, on multiple...

Perhaps, we could use JADE as inspiration, I believe that it is the most used environment.

Changed 15 years ago by vbarta

Upon reflection, I don't really recommend ACE ( http://www.cse.wustl.edu/~schmidt/ACE-overview.html ), but Boost seems to have Boost.Asio ( http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio.html ) as a modern ACE replacement... That would also take care of memory management, using the same library.

Changed 15 years ago by smidl

On a second thought, the amount of work needed for implementation of such a beast is too high to end up with only a proof-of-concept solution...

Hence, I did a bit more search. This time not on agent-systems but "distributed control". I think this is much more fruitful than before. There are various implementations such as TACO, SMI++, but the most promising looks to be TANGO: http://www.tango-controls.org/

Advantages:

  • actively maintained
  • developed in Europe by research institutions, -> potentially active collaboration on European level
  • written as opensource (binaries for debian)

Disadvantges:

  • appears to be too complex to our current needs

However, I think it is worth trying before reinventing the wheel...

Note: See TracTickets for help on using tickets.