CRANIS Implementation
This page is part of the obsolete CRANIS project (2010).
CRANIS is a theory, a model, and an implementation discussed here.
CRANIS systems compared
The name CRANIS system is given to any system implementing in some way the CRANIS model.
Three families of CRANIS systems are considered: natural intelligence, software implementations and hardware implementations.
Natural Intelligence |
Software Implementation |
Hardware Implementation | |
Material |
brain components: neurons, synapses, dendrites |
Usual available computers. Common CPUs. Standard OS. O-O (Java libraries) |
Distributed Processing Units, with one I/O control unit, and a shared signal bus. All DPU identical, with small local memory |
Magnitude |
109 neurons, 1012 synapses |
106 concept cells, 108 links between cells, 1010 bytes globally |
106 DPUs, 108 links between cells, 1010 bytes globally |
Ease of programming |
(? sci-fi) |
Good |
Average |
Cost |
- |
Low |
High |
Parallelization |
Yes |
No |
Yes |
Speed |
Fast |
Slow |
Fast |
A concept node used in software or hardware implementation of CRANIS is NOT the one-to-one equivalent of a biological neuron. Similarities exist, but regarding granularity and redundancy, biological neurons are certainly different from software or hardware CRANIS implementations.
One can assume that no engineering is suitable to directly improve the natural intelligences, and that the number of natural intelligences (especially human beings) is already too high for the available planet.
The hardware implementation is highly promising, but probably complex and certainly costly regarding prototyping and production.
Hence from here only the O-O software implementation of CRANIS is considered.
Quantitative assumptions
The following is assumed to evaluate memory needs and to describe performance choices.
- Number of concepts : 0.2 x 106
- Average number of halflinks per concepts: 0.5 x 102 (a relation is represented by 2 halflinks)
- Number of percepts and variants (cumulated) per langage : 105
- Average number of connections between concepts, percepts and variants, per concept : 0.2 x 102
- Average number of focus in an active conscience tree : 10
- Average size of words : 10 characters, thus 24 bytes.
Memory components
The memory of a CRANIS program may include:
- concept set. A concept requires 8 bytes per se, without counting the jelly relations. The concept memory consumes around 1.6 Mb.
- consciousness (focus tree). One focus uses mainly 8 bytes per concept. With 10 focus, an active conscience memory consumes around 16 Mb.
- jelly (inter-concept relations, including qualified and fuzzy relations). One single half link consumes typically 32 bytes. Actually this may vary between 20 and 40 bytes, depending on JVM (32 bits or 64 bits) and depending on software design choices (priviledging either memory or speed). With the above assumptions, the jelly memory consumes 32 x 2 x 105 x 0.5 x 102 bytes = 320 Mb
- language set (1 or many). One inter-layer connection consumes 4 bytes. With the above assumptions, a language set memory would consume 4 x 0.2 x 106 x 0.2 x 102 bytes for the link part, and 24 x 105 bytes for the wording part, thus globally 18.4 Mb.
The practical conclusion of this paragraph is that the jelly is by far the most significant memory consumer.
Client Server
The architecture involves servers, heavy clients and light client.
Server | Heavy Client | Light Client | |
Concept memory? | yes | yes | yes |
Conscience memory? | yes | partial and delayed | no |
Jelly memory? | yes | yes | no |
Language set memory? | no | yes (1 or many) | yes (1) |
Purpose | Running consciouness | Monitoring & intelligent connection | Basic sommucation |
User interface | no | yes | yes |
Priority | Speed ! | Display & I/O | Display & I/O |
Estimated memory | 350 Mb | 400 Mb | 40 Mb |
One server is able to answer to requests from various simultaneous heavy and light clients.
The server is a CPU intensive program. Its critical measure is the average time per excitation cycle, and this value should be between 10 and 100 milliseconds.
The clients demand less CPU performance, but will require some resources for animated display, at least when representing consciousness activity.
Java Packages
The main package (mscp.alex.brain) contains the following classes, with meaning close to explanations given in the CRANIS theory and model:
- hLink: half link, i.e. half of a jelly relation.
- concept: concept, relations, jelly
- langSet: language Set, including percepts (words), variants (flexions) and trans-layer connections.
- focus: consciousness component
- topNodes: top sorted concept nodes, present in a focus and ordered on excitation level
- server: thread present on the server side, producing answer to client requests
- clock: timing accessory
- tunable: utility class for tunable parameters
- closeWord: utility class to find lexical form close to a String argument