void Neuron::Push(shared_ptr<Algorithm> alg, NeuroCube & cube) { if(bSetOEC) bSetOEC = true; if(!bPushed) { //std::cout << "Pushing " << X << " " << Y << " "<< Z << "\n"; //bPushed = true; //if(bSetOEC) //bSetOEC = true; if(vInputData.size() > 0) { for(int i=0; i<vOutputs.size(); i++) { int ner = cube.getNeuron(vOutputs[i]); Neuron * n = &Neuron(); if(ner == -1) { for(int o=0; o<cube.DedicatedOutputs.size(); o++) { if(cube.DedicatedOutputs[o].MyPosition == vOutputs[i]) { n = &cube.DedicatedOutputs[o]; break; } } } else n = &cube.Neurons[ner]; if(n->bSetOEC) int a = 1; //if(!n->WasPushed()) //n->Push(alg, cube); //delete &n; } Outputs = vector<double>(); alg->CalculateOutputs(vInputData,vOutputs,vOutputWeights,Outputs, cube); InputEvent ie = InputEvent(vInputData,vOutputWeights,Outputs); vInputEvents.push_back(ie); iInputsSinceLastReward++; if(bSetOEC) { oCatcher->onOutput(vInputData); vInputData = vector<double>(); } vInputData = vector<double>(); } } }