Otoom banner
Whats new              
First-time visitors      
On the origin of Mind 
Applying Otoom        
Further developments
The Otoom fractal     
OtoomCM program
OMo program      
OWorm program   
OSound programs 
OVideo program   
Shapeworld (teaser)  
Programs Search What's new Parallels FAQs Basic Charter the social experiment Otoom blog List of blog topics other programs other programs Forum Mayaroma Museum Links Contact
LinkedIn icon
Otoom blog
on Facebook
discarded-full-sm.jpg 5g-navtheworm.jpg 5g-navthemindwhats.jpg 5g-navmyhome.jpg 5g-navtheisaa.jpg 5g-navsomething.jpg 6g-navdontreadthis.jpg Freedom uses collective knowledge...
Home  >  AI Programs  >  OWorm program

OWorm program

Note: One of the most convenient ways to run the program on a non-DOS machine is via vDos, an application that sets up its own DOS environment on your computer. All you have to do is pair a DOS drive letter with a Windows drive/directory letter, copy the program into it and type its name in the DOS window.

The purpose of the OWorm program is to demonstrate how the system underlying the OtoomCM can be used effectively to drive a virtual worm so it can find its 'food'. It is designed as a test bench to observe its behaviour under various conditions.

What follows is a summary. For more detail see the article "The Worm has Turned: an Adaptation of a Mind Simulation". For more information on the OtoomCM see about the computer program OtoomCM

The program can be downloaded. Please read the manual!

The worm consist of a simple rendition of several discs, the first being the head (in blue) and the rest being its segments (in black - the default number is 5 which can be changed in the program). The segments are connected via links whose lengths can also be changed inside the program. The worm is placed inside a square (its 'cage') and the food is represented as a red disc placed at the centre of the cage. Below is an animated version of the worm's movement around the cage until it finds its food (ref: C05).

c05 animation

(Note: the above animation is based on each movement per frame. In the program each movement has to be processed by the system and therefore takes much longer. This particular test run took 2 minutes 10 seconds. The longest test run in that series took 16 hours 15 minutes 51 seconds.)

The movements of the worm are tracked throughout a test run. Below is a screenshot of the paths taken by the time the food has been reached (ref: C05m0001.bmp):

c05m0001 image

The current starting position is marked in blue.

Movement of the worm is affected by starting at its head and applying three direction parameters to each one of its links in sequence: direction, direction-change, and additional-direction-change. Each subsequent parameter applies a further relative change of angle to the previous one. At the next cycle those changes are applied once more, this time starting at the tail end and moving towards the head. At each cycle the last segment (tail or head) becomes the anchor point to the surface of the cage. Thus the movements could be compared to the way a mosquito larva propels itself through the water.

The direction parameters start with the values 10-20-30 respectively and at each cycle the current parameters serve as the input to the inner matrix, get processed there and become the output at the completion of a cycle. The new parameter values get applied to the worm once again and another cycle starts.

Therefore at each cycle the location of the worm is a function of the phase states produced by the nodes of the inner matrix. These phase states in turn are a function of the input affected by the kind of condition induced by the initial Menus of the program. There is no 'awareness' of the worm in relation to the food - the only way the worm moves towards the food (or for that matter, away from it) is by responding to the conditions through the phase states which produced the output accordingly. The only exception occurs when the worm hits the edge of the cage: in that case the movement of the segments is constrained regardless of the direction parameter values, and the possible values under the circumstances become the input for the next cycle.

By conducting a series of test runs it can be shown that certain conditions enhance the behaviour of the worm while others make it worse. The criteria used to evaluate the behaviour are,

- total number of cycles it takes for the worm to reach its food;
- the mean distance from the worm's head to the food during its path;
- the path taken by the worm during its progress towards the food (ie, did it get close but veer away again or overshoot the food, did it hover near the food for a considerable period of time but without actually hitting it).

The evaluation of the tests involved,

- under the above auspices comparing the outcome of a test run (some condition in place) with the basic configuration (no conditions);
- comparing the outcome of a test run (an additional condition in place) with another test run (previous condition/s);
- the comparisons involve taking the mean of the total number of cycles in one test run and comparing it with the best and worst result, and with the better and worse means in a subsequent test run.

The test runs used for the evaluation are labeled a, c, d, e, g, h, i j, k, l, m, n, o; where 'a' represents the basic configuration ('b' has each of the initial direction parameters changed by 180 deg, and 'f' represents a derivative from an experimental test run 't'; all three have been discarded for further evaluation). These labels designate a certain condition.

Ten different matrix sizes have been used, labeled essentially 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Within each test run four different starting positions for the worm are used, so that with starting position 2 the matrix sizes become 11, 12, 13, .., 20, with starting position 3 the same matrix sizes are 21, 22, 23, ..., 30, and with starting position 4 the sizes are 31, 32, 33, ..., 40.

The conditions with their respective labels are,

a - no condition;
c - block factor (more than 1 times processing in the inner matrix);
d - position cycling (resetting to the next starting position with the current phase states intact);
e - position cycling, block factor;
g - position cycling, approval factor (additional processing if worm has moved closer to the food);
h - position cycling, block factor, approval factor;
i - teach mode-3 cycles (worm is moved to the food not through matrix processing but the resulting direction parameters are an input to the matrix, done 3 times);
j - teach mode-1 cycle;
k - block factor, teach mode-3 cycles;
l - position cycling, teach mode-3 cycles;
m - position cycling, block factor, teach mode-3 cycles;
n - position cycling, approval factor, teach mode-3 cycles;
o - position cycling, block factor, approval factor, teach mode-3 cycles.

Thus the test runs can be arranged in the following grid:

test run grid

Overview of the dependencies within the test runs:

test run dependencies

Graph showing the number of total cycles arranged by test runs:

test run graph

7 test runs out of 12 (e, g, i, k, m, n, o) achieved a better result compared with the basic configuration (a).

The above includes all the total cycle numbers regardless of exceptionally worse numbers in specific cases. However, when comparisons are made between the mean of test run 'a' with the best and worst result and with the better and worse means in a subsequent test run, the following comparisons achieved a better result in both of the above cases:

a - d;
a - e;
a - g;
a - h;
a - i;
a - j;
a - k;
a - l;
a - m;
a - n;
a - o;
c - k;
d - e;
d - g;
d - h;
d - l;
d - m;
g - n;
h - o.

Only the following combinations achieved a better result in one of the above cases:

a - c;
e - h;
e - m;
i - j.

Therefore, out of 23 comparisons 19 showed an improvement in both cases, and only 4 showed an improvement in one case.


Despite the fact that the system (the artificial mind at that scale) does not provide the worm with an awareness about its proximity to the food (hence getting close to the food and moving away again, or overshooting its target on some occasions) under certain conditions the system demonstrates an enhanced finding of the food and learning from given examples.

This is achieved by the creation of phase states which are re-representative of input such that a particular path becomes a conceptual template for subsequent movements driving the worm towards its food.

It should be born in mind that the worm's movements are not achieved through geometric directions in relation to the target, but are the indirect result of phase states created through the three direction parameter values positioning the worm in a particular manner. The integer values inside the matrix are entirely meaningless in terms of the worm's movement as well as the proximity to the food at any stage. These integer values are only used to create the phase states, which in turn allow the emergence of domains which consist of mutually affinitive nodes. The domains in turn are clusters of phase states which are responsible for the ultimate outcome.

In a biological system (from a real worm to higher organisms up to humans) the higher scales provide for multiple input that allows phase states to converge so that with the additional information the system would realise the proximity to the food for instance (hence rather than overshooting its target an appropriate action would be taken).

Under downloads the following is available:
the program;
a spreadsheet containing the results from the test runs;
an example of worm movements in animated form.

© Martin Wurzinger - see Terms of Use