samples; coursework: Fixed random seeding with time not working
[sdk] / samples / eC / neural / neural.ec
index b3371c5..4651023 100644 (file)
@@ -46,7 +46,7 @@ static Example examples[] =
    { POOR, true, false, 1, HIDE   }
 };
 
-char * behaviors[4] = { "Run", "Hide", "Wander", "Attack" };
+const char * behaviors[4] = { "Run", "Hide", "Wander", "Attack" };
 
 #define NUM_EXAMPLES (sizeof(examples) / sizeof(Example))
 
@@ -83,7 +83,7 @@ class NeuralApp : Application
       int i,h,o;
       int c;
 
-      RandomSeed((int)(GetTime() * 1000));
+      RandomSeed((uint)(((uint64)(GetTime() * 1000)) & MAXDWORD));
       // Input to hidden cells synapses
       for(i = 0; i<NUM_HIDDEN; i++)
          hiddenNeurons[i].Init();
@@ -98,11 +98,11 @@ class NeuralApp : Application
          for(h = 0; h<NUM_HIDDEN; h++)
          {
             Neuron * hidden = &hiddenNeurons[h];
-            Synapse * synapse = &input->axons._[h];
+            Synapse * synapse = &input->axons[h];
 
             if(!hidden->dendrons.size)
                hidden->dendrons.size = NUM_INPUT;
-            hidden->dendrons._[i] = synapse;
+            hidden->dendrons[i].ptr = synapse;
 
             synapse->dendron = input;
             synapse->axon = hidden;
@@ -119,11 +119,11 @@ class NeuralApp : Application
          for(o = 0; o<NUM_OUTPUT; o++)
          {
             Neuron * output = &outputNeurons[o];
-            Synapse * synapse = &hidden->axons._[o];
+            Synapse * synapse = &hidden->axons[o];
 
             if(!output->dendrons.size)
                output->dendrons.size = NUM_HIDDEN;
-            output->dendrons._[h] = synapse;
+            output->dendrons[h].ptr = synapse;
 
             synapse->dendron = hidden;
             synapse->axon = output;
@@ -151,14 +151,14 @@ class NeuralApp : Application
                outputNeurons[c].Unactivate();
 
             inputNeurons[0].activation = (double)example->health;
-            inputNeurons[1].activation = example->hasKnife;
-            inputNeurons[2].activation = example->hasGun;
+            inputNeurons[1].activation = (double)example->hasKnife;
+            inputNeurons[2].activation = (double)example->hasGun;
             inputNeurons[3].activation = example->ennemies;
             for(c = 0; c<NUM_OUTPUT; c++)
                outputNeurons[c].Activate();
 
             for(c = 0; c<NUM_OUTPUT; c++)
-               outputNeurons[c].error = ((double)example->result == c) - outputNeurons[c].activation;
+               outputNeurons[c].error = (double)((int)example->result == c) - outputNeurons[c].activation;
 
             for(c = 0; c<NUM_INPUT; c++)
                inputNeurons[c].BackPropagate();
@@ -177,8 +177,8 @@ class NeuralApp : Application
             outputNeurons[o].Unactivate();
 
          inputNeurons[0].activation = (double)example->health;
-         inputNeurons[1].activation = example->hasKnife;
-         inputNeurons[2].activation = example->hasGun;
+         inputNeurons[1].activation = (double)example->hasKnife;
+         inputNeurons[2].activation = (double)example->hasGun;
          inputNeurons[3].activation = example->ennemies;
 
          for(o = 0; o<NUM_OUTPUT; o++)
@@ -199,8 +199,8 @@ class NeuralApp : Application
             outputNeurons[o].Unactivate();
 
          inputNeurons[0].activation = (double)example->health;
-         inputNeurons[1].activation = example->hasKnife;
-         inputNeurons[2].activation = example->hasGun;
+         inputNeurons[1].activation = (double)example->hasKnife;
+         inputNeurons[2].activation = (double)example->hasGun;
          inputNeurons[3].activation = example->ennemies;
 
          for(o = 0; o<NUM_OUTPUT; o++)