Thanks Owen,

I didn't know that NetLogo had an eval function. There's nothing in the
documentation under *eval*. In fact, the word *eval *doesn't appear at all,
and *evaluate *appears only in a couple of comments in examples that
evaluate expressions. But now that I know it's there, it's worth
considering. There's still the problem of generating the strings to be
evaluated though. Without syntactic support that's non-trivial. Writing and
embedding a GP system is also non-trivial. (I'm not interested in a GA with
a fixed rule template.)

In general I like NetLogo. It would be my first choice for relatively simple
agent-based models. My main complaints about it are its lack of a real
sub-classing and inheritance system and (probably most important) that one
is limited to a single file of NetLogo code. That means that anything of any
complexity quickly gets difficult to manage. Can you imagine dealing with
the NetLogo file that includes NetLogo GP code as well as any other code?  I
wouldn't want to start down that road.

I couldn't find the paper by Miles Parker that you mentioned. I think I
copied the list on the email I sent him. So far, no reply.

I mentioned Drools <http://jboss.org/drools/> in an early message.  Here's
what I originally wrote about it.

>From my initial Googling the closest I could find was
*Drools*<http://jboss.org/drools/>.
It's intended to provide a forward chaining rule programming language for
distributed systems (J2EE). It's open source from JBoss. Although it has
nothing to do with Agent-based modeling, it seems quite nice and quite
general. It runs on top of and is completely integrated with Java.  Agent
can simply be an object type. Its
Template<http://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/docs/drools-expert/html_single/index.html#d0e5774>capability
allows it to generate rules that are stored as Java objects,
which seems to make it capable of manipulating rules dynamically. I'll have
to look into that further. One can make it a simulation engine by keeping a
tick counter in the workspace.

I still think it's the closest thing there is to what I want -- and that it
can be used to create what I want more easily than anything else. In fact,
with a little work I'd say that enhanced Drools can be to Java with respect
to Agent-Based Modeling and Simulation what C++ is to C with respect to OO
Programming. It will be a layer of abstraction that provides the right
additional elements without getting in the way. (By the way, Jade doesn't do
it for me. It supports agent communication across a distributed system, but
it doesn't support rule-driven agents or agents interacting in a workspace.
It's intended domain of application is really not ABM. It's intended to
allow one to use agents in developing distributed systems.)

I had never heard of Drools a week ago. But having looked at the website,
having scanned some of the documentation, and having talked to some of the
people on their list, I'm quite impressed. It seems well designed and
implemented. It's also both mature (version 5.0) and active.

It's amazing what's out there that one doesn't know about. I thought that
perhaps the list could point me to some other hidden gems.

-- Russ



On Tue, Aug 25, 2009 at 11:44 AM, Owen Densmore <[email protected]> wrote:

> On Aug 24, 2009, at 6:18 PM, Russ Abbott wrote:
>
> I think Marcus gets to the problem. I want agents that can create new
> agents that have new functionality -- or equivalently modify their own
> functionality in new ways.
>
>
> Well, will table based functionality work?  .. i.e. a list of behavior
> parameters?
>
> If not, will code snippets work?  NetLogo has an eval function (run &
> runresult) so dynamically created code snippets as behavior would work.
>
> I don't see how NetLogo lets you do that.
>
>
> See above.
>
> You need the ability to manipulate the rules themselves.
>
>
> Well, both the above can do that.
>
> Just creating a class of agents that you call rules doesn't do that. It
> doesn't provide a way to create new functionality.
>
>
> Agreed, at least to a point.  Agents are just objects.  And it's easy to
> embed genetic algorithms in them.  I've got a TSP in NetLogo that uses the
> algorithm in the Modern Heuristics book.  The list probably has a hundred
> others!
>
> As Marcus said, think of it as having an agent with a built-in Genetic
> Programming system that it can use to generate and test possible rules.
>
>
> OK, GP is a different deal.  None the less, with the eval function in
> NetLogo, I believe this is possible.
>
> When it finds good ones, it either creates a new agent with those rules or
> it replaces its own rules with that new rule set. I don't see how NetLogo
> lets you do that without building an awful lot of new stuff.
>
>
> This is a fairly big/detailed conversation.
>
> What are the performance requirements, for example.  Redfish found that
> there are ranges of number of agents that NetLogo does fine with, but when
> we got in the 100,000+ range, we had to move to Processing and roll our own
> agent classes.  Hopefully you are not in Doug Robert's world needing a room
> full of clusters, but if so, he's the expert on the list.
>
> How about other agent systems?  We used Repast for years, but found that
> there was very little it could do that NetLogo could not.  It might be worth
> another look after all these years.
>
>  How about libraries that already exist to make your life easier?  I think
> there are GP libraries in several languages.  That might bias you in a
> particular direction.
>
> And possibly most important of all is community.  Is there a community that
> is working in this domain?  This was why I mentioned Miles, I thought his
> WedTech talk of a few years past sounded like it might do well in this
> domain.
>
>    -- Owen
>
>
============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
lectures, archives, unsubscribe, maps at http://www.friam.org

Reply via email to