| 12 | static const double PERCENT_CORRECT = 0.70; |
| 13 | |
| 14 | void train(rl::Learner *learner) { |
| 15 | int correct = 0; |
| 16 | int selector; |
| 17 | for(unsigned int a = 0; a < NUM_TRIALS; a++) { |
| 18 | selector = rand() % 2; |
| 19 | int action = (int)learner->chooseBoltzmanAction({(double)selector}, 100)[0]; |
| 20 | learner->applyReinforcementToLastAction((1 - 2*fabs(action-selector)) / 3.0, {(double)selector}); |
| 21 | |
| 22 | if((int)learner->chooseBoltzmanAction({0}, 0)[0] == 0) correct++; if((int)learner->chooseBoltzmanAction({1}, 0)[0] == 1) correct++; |
| 23 | } |
| 24 | |
| 25 | std::cout << "Last selector: " << selector << "\n"; |
| 26 | REQUIRE(correct / double(NUM_TRIALS*2) > PERCENT_CORRECT); |
| 27 | } |
| 28 | |
| 29 | TEST_CASE("QLearn ", "[reinforcement]") { |
| 30 | srand(time(NULL)); |
no test coverage detected