/** Sanity checks and other tests for the program units. */ #include "Individual.hpp" #include "Population.hpp" #include "Mlp.hpp" #include "MlpIndividual.hpp" #include "MlpFactory.hpp" #include "SynapticRandomizer.hpp" #include #include #include #include #include using namespace jymlp; using namespace std; int main(){ mt19937 mt; // mersenne twister. vector nn({2,3,2,2}); string facdef = "init_size: 2-4-5-2 \n" "init_actf: in-tanh-tanh-lin\n" "init_weights: uniform(-1,1)\n"; istringstream iss(facdef); MlpFactory mf(iss); iss.str("init_size: 2-4-5-2 \n"); iss.clear(); MlpFactory mf2(iss); Mlp *pm = mf.create(&mt); pm->toStream(cout); cout << endl; cout << pm->prettyPrint() << endl; Mlp *pm2 = mf2.create(&mt); cout << pm2->prettyPrint() << endl; Mlp mm(*pm); mm.toStream(cout); cout << endl; mm.prettyPrint(); SynapticRandomizer sr(&mt); vector af(4); af[0]=Unset; af[1]=hyptan; af[2]=hyptan; af[3]=linear; Population p,q; // Create, write and read some: for (int i=0;i<100;++i){ MlpIndividual *ni = new MlpIndividual(3, unique_ptr(new Mlp(nn,af,sr))); ni->setId(i); p.adopt(unique_ptr(ni)); } ofstream ofs("test_output_pop0.dat", ios::trunc); p.toStream(ofs); ifstream ifs("test_output_pop0.dat"); MlpIndividualReader mir; q.fromStream(ifs, &mir); ofstream ofs2("test_output_pop1.dat", ios::trunc); q.toStream(ofs2); return 0; }