-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrl_example_6.cpp
executable file
·66 lines (45 loc) · 1.89 KB
/
rl_example_6.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "cubeai/base/cubeai_types.h"
#include "cubeai/rl/algorithms/dp/iterative_policy_evaluation.h"
#include "cubeai/rl/trainers/rl_serial_agent_trainer.h"
#include "cubeai/rl/policies/uniform_discrete_policy.h"
#include "rlenvs/envs/gymnasium/toy_text/frozen_lake_env.h"
#include "rlenvs/envs/api_server/apiserver.h"
#include <iostream>
namespace rl_example_6
{
const std::string SERVER_URL = "http://0.0.0.0:8001/api";
using cuberl::real_t;
using cuberl::uint_t;
using cuberl::rl::policies::UniformDiscretePolicy;
using cuberl::rl::algos::dp::IterativePolicyEvalutationSolver;
using cuberl::rl::algos::dp::IterativePolicyEvalConfig;
using cuberl::rl::RLSerialAgentTrainer;
using cuberl::rl::RLSerialTrainerConfig;
using rlenvscpp::envs::gymnasium::FrozenLake;
using rlenvscpp::envs::RESTApiServerWrapper;
typedef FrozenLake<4> env_type;
}
int main() {
using namespace rl_example_6;
RESTApiServerWrapper server(SERVER_URL, true);
// create the environment
FrozenLake<4> env(server);
std::cout<<"Environment URL: "<<env.get_url()<<std::endl;
std::unordered_map<std::string, std::any> options;
std::cout<<"Creating the environment..."<<std::endl;
env.make("v1", options);
env.reset();
std::cout<<"Done..."<<std::endl;
UniformDiscretePolicy policy(env.n_states(), env.n_actions());
IterativePolicyEvalConfig config;
config.tolerance = 1.0e-8;
IterativePolicyEvalutationSolver<env_type, UniformDiscretePolicy> algorithm(config, policy);
RLSerialTrainerConfig trainer_config = {10, 10000, 1.0e-8};
RLSerialAgentTrainer<env_type,
IterativePolicyEvalutationSolver<env_type, UniformDiscretePolicy>> trainer(trainer_config, algorithm);
auto info = trainer.train(env);
std::cout<<info<<std::endl;
// save the value function for plotting
//algorithm.save("iterative_policy_evaluation_frozen_lake.csv");
return 0;
}