Many thanks and another 2 questions

5 views
Skip to first unread message

Jiansen

unread,
Apr 30, 2012, 2:30:19 PM4/30/12
to EnMAS Users
Hi Connor and Marty,

Thanks for getting me through examples. Your well documented
implementation helped the test of my typed actor library a lot.
Although I am not using EnMAS for building Multi-agent machine
learning platform, I hope the later version of my akka-compatible
actor library may help the correctness of your implementation.

Following are two tiny problems I found in the last a few days:

1. In org.enmas.messaging.messaging.scala

L135 /** Sent from a Session to a Server
L136 */
L137 case class AgentDied(id: Int)

In dead, for some reason, the message will be sent back to the session
(Server.scala L183), to trigger a log action (Session.scala L140).

I am "not sure if this alert is beneficial" neither, but if users may
care about the death of some agents, why not raise an exception at
this place and let users configure the behaviour they want?

2. I can see the Bundler application is really helpful; however, it
does not work for me because src/main/scala is not in my build path.
How could I include my workpath into the Bundler application?


All the best

Yours, Jiansen

Connor

unread,
May 2, 2012, 12:18:20 AM5/2/12
to EnMAS Users
Hey again,

Glad to hear you found the examples useful.

1. The AgendDied message is sent back to the client managers when some
agent on some other client node died. There's not really much that
user code can do to recover from that error, except to log that it
happened. It may be worthwhile to send this to iteration subscribers
for logging purposes. If agent code throws a runtime exception, Akka
simply restarts a new instance to take its place. Users can already
know about that via the lifecycle hooks built into the Akka actors
API. If an agent dies and causes this message to be thrown, either
the agent or the entire session (and actor subtree) was terminated,
probably on purpose, by a user. If this notification is an addition
you think would be nice to have, by all means add an issue to the
project on github.

2. The bundler, when invoked from inside the EnMAS project directory
using "sbt bundler", does include src/main/scala in the classpath.
This naturally includes org.enmas and all of its subpackages. If you
need additional modules present when building/running agents, POMDPs,
or iteration subscribers, place them in the <enmas-dir>/lib
directory. This is the default location for SBT to search for
unmanaged dependencies, so these automatically make it onto the
classpath. A word of caution, since EnMAS does code provisioning of
POMDP classes from the client manager to the server, if your POMDP
implementation has external dependencies they need to be in place in
the <enmas-dir>/lib directory on the server as well. If you are
running both server and client on the same node this isn't an issue.

The bundler is meant to be a convenient way to compile and package
simple modules written to the EnMAS API. However, it doesn't do
anything extremely magical. A properly configured class path and
working knowledge of scalac may get you further than the bundler can
take you.

If you have any more feedback, results, or general info about your
research (I gather you're implementing a library for typed actors),
I'm very interested to hear about it. I'm particularly interested in
how you used this project to test your implementation.

Cheers,
--
Connor
Reply all
Reply to author
Forward
0 new messages