Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

So, I like dabbling in intelligent agent design (mainly video-game 'bots' but also some general task automation), but as a budding psychologist, I'd be really interested in a platform for developing such agents in a cognitively plausible setting.

Such a platform would probably take the form of a cognitive architecture, but since these are meant to be implementations of psychological theories above all else, I'm worried that none of them are up for actually acting as an intelligent agent in a complex software environment like a video-game.

Has anyone tried using such an architecture to produce an agent of the kind I've been describing? Failing that, do any cognitive architectures look particularly suitable for this sort of job?

My current hunch is that a hybrid architecture like CLARION might work, but not having any experience with it, I'm still hesitant.

I know that SOAR has famously been used to simulate a fighter pilot, but that took years of hand-coding production rules, and thus seems like an impractical platform from my standpoint.

share|improve this question
    
Hey, sorry for screwing up your bounty a bit... Was testing something. –  Shog9 Nov 10 '11 at 2:25
add comment

migrated from stackoverflow.com Nov 10 '11 at 2:13

This question came from our site for professional and enthusiast programmers.

3 Answers

I did a little bit of research into cognitive architectures in my undergraduate days, so let me attempt to access the dregs of my memory.

The main limitation you'll run into is kind of summed up from this quote in the wikipedia article:

The architecture often tries to reproduce the behavior of the modelled system (human), in a way that timely behavior (reaction times) of the architecture and modelled cognitive systems can be compared in detail. Other cognitive limitations are often modeled as well, e.g. limited working memory, attention or issues due to cognitive load.

(emphasis mine)

That is the main emphasis of cognitive architectures has been from a psychological angle--modeling human cognition-- not for generic agent building. They're useful, as you state, for performing tasks related to engineering psychology where you want to study the effects of human attention, reaction time, etc on performing specific tasks. Similar to the fighter pilot example you cite. For example, I recall from my brief experience in this area that a lot of attention was paid to simulating minutia such as how well human beings see movement, color, and other features based on the distance from the eye's focus.

So while I think it would be very interesting to try to use a cognitive architecture for an AI, I think its more interesting as an attempt to model a human player then as a competent game AI.

Moreover, as you yourself state, these architectures are just that -- an architecture. They're very generic. Building up to something like a game AI may be just as difficult to do in one of these architectures as it would be in a general-purpose programming language. If you're familiar with the Harvard Architecture of a computer, the following description of the core of a cognitive architecture might sound familiar (from my undergrad paper):

Cognitive architectures divide elements of human memory between declarative memory, descriptive memory about things (what a bike is) and procedural memory, methods for doing things (how to ride a bike).
While the names assigned to units of declarative memory change per architecture, elements of procedural memory are almost always referred to as production rules or as abbreviated productions. Production rules take their name from their syntax which is of the form: If some declarative memory precondition is met, then alter declarative memory. Cognitive architectures execute by repeatedly selecting production rule(s) whose preconditions are met then executing the selected rule(s).

So in this very generic architecture, you have to specify all the rules for a game, how to interact with the game, etc in what is effectively a programming language where the code is a set of goals/procedures that are conditionally reevaluated based on memory. This isn't really a very natural way for us to write code :) And if you did want something like this, you could do something similar in a rule-based language such as Prolog. In addition, you'd also need to deal with the human perceptual limitations that the cognitive architecture imposes on the agent (reaction time, visual/auditory limitations, attention limitations, etc) which might not be appropriate in a video game.

In any case, its certainly interesting graduate level stuff in psychology/CS, so if you're doing this just for fun, go for it! It could be a very fun project. But if you're main interest is a good game AI, I'd turn to other tools that can get you where you want to go faster. I'd also go over to the gamedev stackexchange and read their questions on AI.

share|improve this answer
add comment

I have not dabbled on the subject for a long while now, but at the time there were two projects of interest. Note though that none are strictly confined to cognitive aspects but rather integration frameworks for heterogeneous systems to interact with one-another.

Back in the day when I was doing my masters I was looking into the Open Agent Architecture which provided basis for our work in multi-modal user interfaces. Unfortunately the project seem to have gone dormant for a few years now. I'm also not certain it will help a lot on the cognitive aspects of your projects, it does however provide good basis for communication and synchronization.

Another project I know about that could be useful is MARIE though it is mostly aimed at the robotics field it does tackle the approach of integrating multiple heterogeneous modules into a coherent whole. The author was attempting to use such integration as the basis layer for artificial intelligence. Since he is a big proponent of emergence rather than algorithmic approach you may find something in there worth your time.

It's not much to go by but I hope this helps.

share|improve this answer
add comment

I think you are looking for a practical cognitive architecture that is inspired from the theories of cognitive science and cognitive psychology, but not necessarily have to imitate them, in order to build an efficient AI system.

If that is the case, then ASMO (attentive self-modifying) cognitive architecture is the best architecture for building your AI agents. ASMO has been implemented mainly in robotic systems, but it is designed for practical use in building AI agents. Unlike Soar, you can use any general purpose programming language in ASMO.

The interesting part in ASMO is you don't have to write a rule-based system if you don't want to. ASMO allows any approach to be built as a module. The main difference to traditional programming is that it uses an emergence approach (through a competition of attention values) rather than telling the AI agent what to do step-by-step in a procedural manner.

Open Agent Architecture is more like a framework rather than a cognitive architecture. A cognitive architecture focuses on action selection to produce intelligence whereas a framework focuses on message sharing, communication, etc. Read the thesis of the guy who developed ASMO. He explains the differences.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.