Archive for February, 2008

February 18, 2008: 1:47 pm: Uncategorized

I’ve previously mentioned that I’m working on a static analysis tool for productions. Basically it gives you a score that reflects the match between two productions based on their conditions and actions. This allows you to visualize their relationships without ever having to run the model. A huge chunk of the basic logic is done and thanks to the joys of open source tools and my new favorite project, Zest, after a day of tinkering I’ve got a basic (but far from ideal) visualization tool:


Here we’ve got the unit one semantic model showing one of the three different view types: following. This shows which productions can follow the chain-category production. You can also view proceeding productions (those leading into chain-category, which only shows initial-retrieve in green), or All (showing all the productions and all their relationships).

It’s still not perfect. It’s not handling chunk type tests (simple addition), nor variables (bloody impossible without a hypothesis testing tool too), nor more comparison slot tests (less-than, etc). But all in all, pretty damned cool and useful.

February 14, 2008: 6:15 pm: Uncategorized

In the weeks that have passed since I last posted on my work and ideas much has happened in the world of interfacing ACT-R with robots. As of Friday, jACT-R was piloting our in house robot, George. Yeah, there were a few glitches, but damn was it cool. The integration of jACT-R with actual robots and simulated has illustrated many interesting issues with respect to modeling in realtime domains (and I’ll use the softer definition of being able run within a 50ms cycle time on average, not deterministically). I’m thinking about putting together a talk for the ACT-R workshop this year on the topic. Could be interesting.

The test bed has been a social learning model (two actually, otherwise it wouldn’t be very social) of a chimp learning what food is safe to pursue in the presence of an alpha male. It’s quite entertaining. Two robo-chimps enter a space. The dominant will always pursue whatever food it can see and if a subordinate gets too close, the dominant will smack it. The subordinate needs to learn what food is safe to pursue based on distance and its visibility to the dominant. I’ve got the models up and running and interacting with each other in parallel (trivial for jACT-R, but not the Lisp) and the models are actually running faster than playerstage (i.e. they spend most of their time waiting for the simulation to advance the clock and send sensor data). The subordinate engages in perspective taking and can make the critical go/no-go decisions. The only problem is that the dominant has suddenly decided to pacifist on me. It refuses to smack the subordinate.

Much fun. The challenges that this work have presented have resulted in some serious improvements to jACT-R, to the point that I will state outright that I believe jACT-R is the better option if you need to work with real systems. Granted, it’s still not feature complete (compared to the Lisp) and there are still significant gaps in the theoretical validations – but all in all, she’s a fast and easily (and safely) extended system.

One element that I’ve been working on after hours has been a static production analysis tool. It hooks into the model compiler (unlike the Lisp which builds a live model, jACT-R models are entirely declarative and need to be parsed, compiled and built), and examines the possible end states of productions. From this it can generate probable execution paths. If you’ve ever had to read someone else’s model (hell, even your own after a month away from it) you’ll see the obvious appeal of such a tool. This would be particularly useful for inspecting a model after an extended run with production compilation enabled. Those productions can get down-right strange after enough time. I’m hoping to have a function GUI for this beast to show this summer. Hopefully I’ll be doing a tutorial at the ACT-R workshop to introduce folks to the whole system. A coming out party, if you will.

Anyway. Now back to the barrel and inject some aggression into those monkeys.