53 lines
1.4 KiB
C++
53 lines
1.4 KiB
C++
#include <iostream>
|
|
#include <functional>
|
|
#include <math.h>
|
|
#include <typeinfo>
|
|
#include <random>
|
|
#include <ctime>
|
|
#include <algorithm>
|
|
#include <vector>
|
|
|
|
#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<double> distribution(-1.0, 1.0);
|
|
std::default_random_engine random_engine;
|
|
random_engine.seed(std::time(0));
|
|
|
|
std::function<double(const int&, const int&)> randomizer = [&](const int& i, const int& j) -> double {
|
|
return distribution(random_engine);
|
|
};
|
|
|
|
std::function<double(const double&)> normalizer = [](const double& result) -> double { return erf(result); };
|
|
|
|
using current_decider = neural_decider<24, 12, 12, 32, 16>;
|
|
|
|
std::function<current_decider()> factory = [&]() -> current_decider {
|
|
current_decider decider(normalizer);
|
|
decider.network.fill(randomizer);
|
|
|
|
return decider;
|
|
};
|
|
|
|
trainer<current_decider> train(money, stock, population, factory);
|
|
train.test(std::cin);
|
|
}
|