Below is the driver code.
#include <any>
#include <iostream>
#include <string>
#include <unordered_map>
{
const std::string
SERVER_URL =
"http://0.0.0.0:8001/api";
{
<< std::endl;
FrozenLake<4> env(server);
std::cout << "Is environment registered: " << server.is_env_registered(env.env_name())
<< std::endl;
std::cout << "Environment URL: " << env.get_url() << std::endl;
std::unordered_map<std::string, std::any> make_ops;
make_ops.insert({"is_slippery", false});
std::unordered_map<std::string, std::any> reset_ops;
reset_ops.insert({
"seed",
static_cast<uint_t>(42)});
env.make(
"v1", make_ops, reset_ops);
std::cout <<
"Environment version: " <<
env.version() << std::endl;
std::cout <<
"Environment idx is: " <<
env.idx() << std::endl;
std::cout <<
"Is environment created? " <<
env.is_created() << std::endl;
std::cout <<
"Is environment alive? " <<
env.is_alive() << std::endl;
std::cout <<
"Number of valid actions? " <<
env.n_actions() << std::endl;
std::cout <<
"Number of states? " <<
env.n_states() << std::endl;
auto n_copies =
env.n_copies();
std::cout << "n_copies: " << n_copies << std::endl;
auto time_step =
env.reset();
std::cout << "Reward on reset: " << time_step.reward() << std::endl;
std::cout << "Observation on reset: " << time_step.observation() << std::endl;
std::cout << "Is terminal state: " << time_step.done() << std::endl;
std::cout << time_step << std::endl;
auto new_time_step =
env.step(2);
std::cout << new_time_step << std::endl;
auto dynamics =
env.p(state, action);
std::cout <<
"Dynamics for state=" <<
state <<
" and action=" <<
action << std::endl;
for (auto item : dynamics)
{
std::cout << std::get<0>(item) << std::endl;
std::cout << std::get<1>(item) << std::endl;
std::cout << std::get<2>(item) << std::endl;
std::cout << std::get<3>(item) << std::endl;
}
std::cout <<
"Action sampled: " <<
action << std::endl;
new_time_step =
env.step(action);
std::cout << new_time_step << std::endl;
}
}
{
std::cout << "Testing FrozenLake..." << std::endl;
std::cout << "====================" << std::endl;
return 0;
}
Definition frozen_lake_env.h:104
static const std::string name
name
Definition frozen_lake_env.h:109
Utility class to facilitate HTTP requests between the environments REST API and C++ drivers.
Definition rest_rl_env_client.h:29
bool is_env_registered(const std::string &env_name) const noexcept
Definition rest_rl_env_client.cpp:39
int main()
Definition intro_example_1.cpp:31
Definition bitrl_consts.h:14
std::size_t uint_t
uint_t
Definition bitrl_types.h:43
Definition rl_example_1.cpp:13
const std::string SERVER_URL
Definition example_1.cpp:17
void test_frozen_lake(RESTRLEnvClient &server)
Definition example_1.cpp:25
dict action
Definition play.py:41
state
Definition play.py:34