The AI model behind Ancient Brain
Ancient Brain was developed out of ideas
in Artificial Intelligence (AI).
The basic idea
is that problems are defined as "Worlds"
and solutions to the problems are defined as "Minds".
The World defines a "problem"
(for example, a 3-D virtual world,
or a game of chess,
or any problem that can be defined in software).
The Mind defines an attempted "solution" to that problem.
You "run" a Mind in a World to see how it does.
Minds compete to solve the problem and their performance is shown on the World "scoreboard".
Worlds may be driven by a Mind,
or may be driven by a human user.
In summary, users may:
- Run a World and interact with it as a user.
- Run a Mind in a World.
- Write new Minds and Worlds and upload them to the shared collection.
- Clone existing Minds and Worlds and modify them.
This site aims to become a global repository of
of many different types:
research problems and solutions,
teaching practicals and answers,
The core algorithm: World with a Mind
The core algorithm for a World with a Mind is to repeatedly:
- Send a "Get State" message to the World to get the current state of the world,
a description of the world right now.
The Mind may only be allowed to see part of the entire World.
- Send "Get Action" message to the Mind, with the current state of the world
as argument, to get the Mind's suggestion for what action
to take in this state.
- Send "Take Action" message to the World, with that action as argument.
- Repeat the loop.
var x = world.getState();
var a = mind.getAction(x);
The core algorithm: World with no Mind
The core algorithm for a World with no Mind is to repeatedly:
- Send a "Next Step" message to the World.
This acts as a clock.
The World knows it will be rendered to screen after each step.
- Repeat the loop.
MindM - Minds calling other Minds
The separation of Mind from World means that a
to see what action it would take.
It may execute the other Mind's suggested action, or just ignore it.
Mind.getAction ( State x )
if ( some conditions )
return ( my own idea for an action )
return ( OtherMind.getAction(x) )
// do whatever OtherMind does for this state
How to call another Mind.
The architecture encourages this re-use of other people's Minds.
The aim is to provide a platform for the creation of large, hybrid, "society of mind" systems,
with the main Mind
calling other Minds from many different authors.
A Mind that calls another Mind is called
may not provide any actions of its own
Here is an example of a MindM
that does not provide any actions of its own.
Imagine that the best performing Minds on a World are TopMind and SecondMind.
But we notice that in some states, SecondMind performs better than TopMind
(just in most states it performs worse).
We can make a new Mind as follows.
Mind.getAction ( State x )
if ( some condition )
return ( SecondMind.getAction(x) )
return ( TopMind.getAction(x) )
This Mind may in fact now perform better than either of the top two Minds, without providing any action of its own.
MindAS - Minds calling multiple Minds
A general way of calling multiple Minds
is to poll Minds for suggested actions, and then decide which one of the Minds to "obey"
(execute its action).
Each time step, the main Mind sends the state to n
other Minds, and asks them for suggestions.
It then picks one to execute.
This is called
(AS standing for "Action Selection").
The AI is in the "Action Selection"
The reader so far may wonder where the "AI" is.
The answer is that the AI is in the "Action Selection" algorithms.
Complex "Minds" are envisaged as consisting of "societies" or "economies" of "Sub-Minds",
with many different suggestions for what to do next.
Actions that are taken
will emerge internally from competition among parts of the Mind.
We will not detail here the many ideas in AI (and Cognitive Science) along these lines.
Our aim was to build a global platform to allow for experimentation in such ideas.
Large-scale multi-author AI
The AI-related inspiration for this work
was to enable the construction of large-scale, collaborative, hybrid, multi-author,
"society of mind" systems
We imagine such systems having many sub-Minds,
using different algorithms,
and written by different authors,
calling each other in levels
below a top-level Mind.
It is hoped that experiments in such AI systems will emerge as this site expands.
One idea in this AI research
was that the Mind could be physically distributed around the world,
with parts of it in different locations.
This is possible with Ancient Brain.
See calling remote JS.