#include "../src/NeuronNetwork/Network" #include class X: public Shin::NeuronNetwork::Problem { public: X(bool x,bool y):x(x),y(y) {} protected: std::vector representation() const { return std::vector({x,y}); } private: bool x; bool y; }; int main() { srand(time(NULL)); int lm=5; Shin::NeuronNetwork::FeedForwardNetwork net({2,lm,1}); bool x=1; int prev_err=0; int err=0; int l; int n; int w; int pot; int wei; int c=0; std::cout << "\ntest 1 & 1 -" << net.solve(X(1,1))[0]; std::cout << "\ntest 1 & 0 -" << net.solve(X(1,0))[0]; std::cout << "\ntest 0 & 1 - " << net.solve(X(0,1))[0]; std::cout << "\ntest 0 & 0- " << net.solve(X(0,0))[0]; std::cout << "\n---------------------------------------"; do{ if(c%10000 ==1) { std::cout << "\nmixed"; srand(time(NULL)); } err=0; c++; l=rand()%2+1; n=rand()%lm; w=rand()%2; if(l==2) n=0; pot=net[l]->operator[](n)->getPotential(); net[l]->operator[](n)->setPotential(pot*(rand()%21+90)/100); wei=net[l]->operator[](n)->getWeight(w); net[l]->operator[](n)->setWeight(w,wei*(rand()%21+90)/100); for(int i=0;i<100;i++) { bool x= rand()%2; bool y=rand()%2; Shin::NeuronNetwork::Solution s =net.solve(X(x,y)); if(s[0]!= (x xor y)) err++; } if(err > prev_err) { net[l]->operator[](n)->setPotential(pot); net[l]->operator[](n)->setWeight(w,wei); }; // std::cout << "C: " << c << " err: " << err << " prev: "<