I don't think there is anything like that for c++ because c++ programs are pretty much operating system specific. Yes the language itself is os independent, but to make c++ programs do anything worthwhile they have to make os-specific function calls, and the programs have to be recompiled for each target platform.
@AD>>..C++ programs are pretty much operating system specific.
What on Earth are you talking about? There are robust cross-platform libraries for everything in C++ (you just have to stay clear of anything that bares the name Microsoft or Apple). The amount of platforms you can target with platform-independent code in C++ far exceeds anything found with Java. Not to mention that massively multi-threaded or parallel programming in C++ has far more powerful frameworks and better speed (e.g. TBB, OpenMP, OpenCL, CUDA, and to some extent C++0x).
I have to admit, I never really understood the need for frameworks specifically targeted for ABM. It's so trivial to implement from scratch in C++ (or any other proper language), when you have the proper skills. I have done it a few times. But I did look around a bit and found EcoLab that is free and seems reasonable. Not surprisingly, the code-base is small (25k lines of code) (as I said, it is pretty trivial to implement). My guess as to why there are vastly more Java implementations is because ABM is more of an academic topic and academics (even though I am one) seem to cling to toy-languages like Java (sorry for the ranting.. couldn't help it).
EcoLab: Seems pretty good, it's C++ and TLC, and seems fairly recently maintained (2010).
>>What on Earth are you talking about? There are robust cross-platform libraries for everything in C++
Agreed, but the libraries are os-specific. If you are going to write a library then you most likely will have to use os-specif function calls. If you look at the source code for boost libraries I'll bet you will find os-specific functions. That is what I had in mind.
Thank you very much Ancient Dragon and Mike_2000_17 and I'm very sorry I could not reply as soon as see your posts.
Well, in my case agent's mobility through multiple operating systems is not an issue. Because I'm interested in a multiagent system which run in the same OS. For Instance, say a system need to examine a stream of images and it has to identify several characteristics of images. So I want multiple agents who are experts in specific characteristics for this purpose, so that it allow the system to extract knowledge in a concurrent manner.
I'm very mush thank full if somebody can let me know about a c++ library for handling multiple agents.
I doubt that any ABM library is able to provide the kind of performance needed for an image processing task (they don't tend to be that stream-lined, or provide the kind of muscle power needed).
If I were you, I would be looking more towards parallel processing frameworks. Like OpenMP or TBB (Intel's Thread Building Blocks, if you have the funds for it). Because, it seems, in your application, the main thing is to do concurrent processing, the agent-based part is accessory. ABMs are used to develop emergent complexity from the interaction of simple agents, it isn't tailored for high-performance parallel processing, it just isn't the right tool for that. There is significant overhead associated to ABMs which you should only cope with if you have a strong motivation for swarm, emergent behaviours. If your application is simply about doing independent processing concurrently, you don't need to suffer that overhead if you go for simpler parallel computing or distributed computing models with much less overhead.
Now I can understand Mike. That's a great advice. You are correct, <<the agent-based part is accessory>> I was going in a wrong way. I will pay my more concentration on concurrent processing. Also I will let you know the progress.
Thanks in Advance.