44
55#include " ffnn.hpp"
66
7- std::uniform_int_distribution< size_t > FFNN::random_chance (0U , 100U );
8- std::uniform_real_distribution<float > FFNN::new_random_weight (-1 .f, 1 .f);
7+ std::uniform_real_distribution< float > FFNN::random_chance (0 .f, 1 .f );
8+ std::uniform_real_distribution<float > FFNN::random_weight (-1 .f, 1 .f);
99
1010FFNN::FFNN () : input_layer(), w1(), hidden_layer(), w2(), output_layer()
1111{
@@ -16,13 +16,13 @@ void FFNN::randomize_network()
1616{
1717 for (size_t j = 0 ; j < INPUTS; ++j) {
1818 for (size_t i = 0 ; i < HIDDEN; ++i) {
19- w1 (i, j) = new_random_weight (rand_engine);
19+ w1 (i, j) = random_weight (rand_engine);
2020 }
2121 }
2222
2323 for (size_t j = 0 ; j < HIDDEN; ++j) {
2424 for (size_t i = 0 ; i < OUTPUT; ++i) {
25- w2 (i, j) = new_random_weight (rand_engine);
25+ w2 (i, j) = random_weight (rand_engine);
2626 }
2727 }
2828}
@@ -60,18 +60,18 @@ void FFNN::mutate()
6060 // mutate weight 1
6161 for (size_t j = 0 ; j < INPUTS; ++j) {
6262 for (size_t i = 0 ; i < HIDDEN; ++i) {
63- size_t chance = random_chance (rand_engine);
63+ float chance = random_chance (rand_engine);
6464 if (chance <= MUTATION_CHANCE_THRESHOLD) {
65- w1 (i, j) = new_random_weight (rand_engine);
65+ w1 (i, j) = random_weight (rand_engine);
6666 }
6767 }
6868 }
6969
7070 for (size_t j = 0 ; j < HIDDEN; ++j) {
7171 for (size_t i = 0 ; i < OUTPUT; ++i) {
72- size_t chance = random_chance (rand_engine);
72+ float chance = random_chance (rand_engine);
7373 if (chance <= MUTATION_CHANCE_THRESHOLD) {
74- w2 (i, j) = new_random_weight (rand_engine);
74+ w2 (i, j) = random_weight (rand_engine);
7575 }
7676 }
7777 }
@@ -82,7 +82,7 @@ void FFNN::combine(FFNN const &nn1, FFNN const &nn2)
8282 // mutate weight 1
8383 for (size_t j = 0 ; j < INPUTS; ++j) {
8484 for (size_t i = 0 ; i < HIDDEN; ++i) {
85- size_t chance = random_chance (rand_engine);
85+ float chance = random_chance (rand_engine);
8686 if (chance <= WEIGHT_SELECTION_CHANCE_THRESHOLD) {
8787 w1 (i, j) = nn1.w1 (i, j);
8888 } else {
@@ -93,7 +93,7 @@ void FFNN::combine(FFNN const &nn1, FFNN const &nn2)
9393
9494 for (size_t j = 0 ; j < HIDDEN; ++j) {
9595 for (size_t i = 0 ; i < OUTPUT; ++i) {
96- size_t chance = random_chance (rand_engine);
96+ float chance = random_chance (rand_engine);
9797 if (chance <= WEIGHT_SELECTION_CHANCE_THRESHOLD) {
9898 w2 (i, j) = nn1.w2 (i, j);
9999 } else {
@@ -111,7 +111,7 @@ bool FFNN::save_network(std::string const &output_filename)
111111 nn_file.write (reinterpret_cast <char *>(w2.data ()), w2.size () * sizeof (float ));
112112 nn_file.close ();
113113
114- std::cout << " ------------ saved ------------\n " ;
114+ std::cout << " ------------ saved ------------\n " ;
115115 std::cout << " w1 = \n\n " << w1 << " \n\n w2 = \n\n " << w2 << " \n\n " ;
116116
117117 return nn_file.good ();
@@ -125,12 +125,12 @@ bool FFNN::load_network(std::string const &filename)
125125 return false ;
126126 }
127127
128+ std::cout << " ------------ loaded ------------\n " ;
129+ std::cout << " w1 = \n\n " << w1 << " \n\n w2 = \n\n " << w2 << " \n\n " ;
130+
128131 nn_file.read (reinterpret_cast <char *>(w1.data ()), w1.size () * sizeof (float ));
129132 nn_file.read (reinterpret_cast <char *>(w2.data ()), w2.size () * sizeof (float ));
130133 nn_file.close ();
131134
132- std::cout << " ------------ loaded ------------\n " ;
133- std::cout << " w1 = \n\n " << w1 << " \n\n w2 = \n\n " << w2 << " \n\n " ;
134-
135135 return nn_file.good ();
136136}
0 commit comments