import "neurons" enum Behavior { RUN, HIDE, WANDER, ATTACK }; enum Health { POOR, OK, GOOD }; struct Example { Health health; bool hasKnife; bool hasGun; int ennemies; Behavior result; }; static Example examples[] = { { GOOD, false,false, 0, WANDER }, { GOOD, false,false, 1, WANDER }, { GOOD, false,true, 1, ATTACK }, { GOOD, false,true, 2, ATTACK }, { GOOD, true, false, 2, HIDE }, { GOOD, true, false, 1, ATTACK }, { OK, false,false, 0, WANDER }, { OK, false,false, 1, HIDE }, { OK, false,true, 1, ATTACK }, { OK, false,true, 2, HIDE }, { OK, true, false, 2, HIDE }, { OK, true, false, 1, HIDE }, { POOR, false,false, 0, WANDER }, { POOR, false,false, 1, HIDE }, { POOR, false,true, 1, HIDE }, { POOR, false,true, 2, RUN }, { POOR, true, false, 2, RUN }, { POOR, true, false, 1, HIDE } }; const char * behaviors[4] = { "Run", "Hide", "Wander", "Attack" }; #define NUM_EXAMPLES (sizeof(examples) / sizeof(Example)) static Example tests[] = { { GOOD, true, true, 1 }, { OK, true, true, 2 }, { POOR, false,false,0 }, { POOR, true, true, 1 }, { GOOD, false,true, 3 }, { GOOD, true, false,3 }, { POOR, true, false,3 } }; #define NUM_TESTS (sizeof(tests) / sizeof(Example)) #define NUM_ITERATIONS 6000 #define LEARN_RATE 0.2 #define NUM_INPUT 4 #define NUM_HIDDEN 3 #define NUM_OUTPUT 4 static Neuron inputNeurons[NUM_INPUT]; static Neuron hiddenNeurons[NUM_HIDDEN]; static Neuron outputNeurons[NUM_OUTPUT]; class NeuralApp : Application { void Main() { // ********** CONSTRUCT NEURAL NETWORK ***************** int i,h,o; int c; RandomSeed((uint)(((uint64)(GetTime() * 1000)) & MAXDWORD)); // Input to hidden cells synapses for(i = 0; iInit(); input->axons.size = NUM_HIDDEN; for(h = 0; h