ok so i started on trying to build this.

- I have a global grid matrix of 100x100.

- each unit in this grid is set to 1.

- each unit has a local grid matrix of 10x10 with it self sitting in the middle as 1 in it's grid.

- all local matrices update from the global matrix.

- all units have a SensoryData type var and a List of type Model.

- SensoryData class is a stack of 10 local grid matrices, every time the units local matrix is different from the currentModel's SensoryData's matrix stack and the stack is not yet 10 it gets added to the stack.

- Model has a SensoryData type var and a NeuralNetwork type var (together with float[,] inputs, results, desired;). the NeuralNetwork gets created if the Model's SensoryData stack is full.

- The NN takes the first matrix of it's SensoryData stack and uses the x,y of where there is a 1 as input and as desired output for training the second x,y of matrix it's 1.

the idea now is to train the NN to find the causes of the difference between the 1ste and the 2nd matrix. for example; matrix 1 x,y are 4,5 and matrix 2 x,y are 5,5 => cause of difference is x+1.

then test the rest of the stack with this result, if the error is to big it takes the matrix which resulted in a big error and the previous one and creates a new NN to train.

if it learned this the unit saves the Model with the trained NN as a new world model in it's Model List.

it can then use this model to apply on it's own coordinates in the Global Matrix and so learned to move 1 grid unit over x by learning the causes of an observation.

my workflow atm is:

getting x,y from matrix 1 -> scaling this from 0 - 10 to -5 - 5 setting this as input for the NN

getting x,y from matrix 2 -> scaling this from 0 - 10 to -5 - 5 and use that for a SigmoidLog and set the Sigmoid result as desired for the NN training.

i set all weight random between -1 and 1.

i'm having a hard time upscaling the sigmoid result back to the right integers to use as grid coordinates. anyone here who know the proper way of upscaling sigmoid?