#include #include #include #include #include #include #include #include #include "argh.h" #include "matrix.h" #include "network.h" #include "decider.h" #include "trainer.h" int main(int argc, char* argv[]) { argh::parser args; args.add_params({"-m", "--money"}); args.add_params({"-s", "--stock"}); args.add_params({"-p", "--population"}); args.parse(argc, argv); double money; unsigned stock, population; args({ "m", "money" }, 1000.) >> money; args({ "s", "stock" }, 1000) >> stock; args({ "p", "population" }, 25) >> population; std::uniform_real_distribution distribution(-1.0, 1.0); std::default_random_engine random_engine; random_engine.seed(std::time(0)); std::function randomizer = [&](const int& i, const int& j) -> double { return distribution(random_engine); }; std::function normalizer = [](const double& result) -> double { return erf(result); }; using current_decider = neural_decider<24, 12, 12, 32, 16>; std::function factory = [&]() -> current_decider { current_decider decider(normalizer); decider.network.fill(randomizer); return decider; }; trainer train(money, stock, population, factory); train.test(std::cin); }