diff --git a/src/primaite/config/_package_data/example_config.yaml b/src/primaite/config/_package_data/example_config.yaml
index b68861e1..7d5b50d6 100644
--- a/src/primaite/config/_package_data/example_config.yaml
+++ b/src/primaite/config/_package_data/example_config.yaml
@@ -655,8 +655,8 @@ simulation:
- ref: data_manipulation_bot
type: DataManipulationBot
options:
- port_scan_p_of_success: 0.1
- data_manipulation_p_of_success: 0.1
+ port_scan_p_of_success: 0.8
+ data_manipulation_p_of_success: 0.8
payload: "DELETE"
server_ip: 192.168.1.14
services:
diff --git a/src/primaite/game/agent/rewards.py b/src/primaite/game/agent/rewards.py
index 3466114c..71945a24 100644
--- a/src/primaite/game/agent/rewards.py
+++ b/src/primaite/game/agent/rewards.py
@@ -239,6 +239,7 @@ class RewardFunction:
self.reward_components: List[Tuple[AbstractReward, float]] = []
"attribute reward_components keeps track of reward components and the weights assigned to each."
self.current_reward: float
+ self.total_reward: float = 0.0
def regsiter_component(self, component: AbstractReward, weight: float = 1.0) -> None:
"""Add a reward component to the reward function.
diff --git a/src/primaite/game/game.py b/src/primaite/game/game.py
index 38e9d5fc..a36cbea9 100644
--- a/src/primaite/game/game.py
+++ b/src/primaite/game/game.py
@@ -125,6 +125,7 @@ class PrimaiteGame:
for agent in self.agents:
agent.update_observation(state)
agent.update_reward(state)
+ agent.reward_function.total_reward += agent.reward_function.current_reward
def apply_agent_actions(self) -> None:
"""Apply all actions to simulation as requests."""
@@ -155,6 +156,8 @@ class PrimaiteGame:
self.step_counter = 0
_LOGGER.debug(f"Resetting primaite game, episode = {self.episode_counter}")
self.simulation.reset_component_for_episode(episode=self.episode_counter)
+ for agent in self.agents:
+ agent.reward_function.total_reward = 0.0
def close(self) -> None:
"""Close the game, this will close the simulation."""
@@ -240,7 +243,7 @@ class PrimaiteGame:
position=r_num,
)
else:
- print("invalid node type")
+ _LOGGER.warning(f"invalid node type {n_type} in config")
if "services" in node_cfg:
for service_cfg in node_cfg["services"]:
new_service = None
@@ -256,12 +259,12 @@ class PrimaiteGame:
"FTPServer": FTPServer,
}
if service_type in service_types_mapping:
- print(f"installing {service_type} on node {new_node.hostname}")
+ _LOGGER.debug(f"installing {service_type} on node {new_node.hostname}")
new_node.software_manager.install(service_types_mapping[service_type])
new_service = new_node.software_manager.software[service_type]
game.ref_map_services[service_ref] = new_service.uuid
else:
- print(f"service type not found {service_type}")
+ _LOGGER.warning(f"service type not found {service_type}")
# service-dependent options
if service_type == "DatabaseClient":
if "options" in service_cfg:
@@ -295,7 +298,7 @@ class PrimaiteGame:
new_application = new_node.software_manager.software[application_type]
game.ref_map_applications[application_ref] = new_application.uuid
else:
- print(f"application type not found {application_type}")
+ _LOGGER.warning(f"application type not found {application_type}")
if application_type == "DataManipulationBot":
if "options" in application_cfg:
@@ -416,7 +419,7 @@ class PrimaiteGame:
)
game.agents.append(new_agent)
else:
- print("agent type not found")
+ _LOGGER.warning(f"agent type {agent_type} not found")
game.simulation.set_original_state()
diff --git a/src/primaite/notebooks/training_example_ray_multi_agent.ipynb b/src/primaite/notebooks/training_example_ray_multi_agent.ipynb
index 3d5d7ba6..cd9ecfe7 100644
--- a/src/primaite/notebooks/training_example_ray_multi_agent.ipynb
+++ b/src/primaite/notebooks/training_example_ray_multi_agent.ipynb
@@ -1,5 +1,21 @@
{
"cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Train a Multi agent system using RLLIB\n",
+ "\n",
+ "This notebook will demonstrate how to use the `PrimaiteRayMARLEnv` to train a very basic system with two PPO agents."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### First, Import packages and read our config file."
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
@@ -8,30 +24,28 @@
"source": [
"from primaite.game.game import PrimaiteGame\n",
"import yaml\n",
- "from primaite.config.load import example_config_path\n",
"\n",
- "from primaite.session.environment import PrimaiteRayEnv"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "with open('/home/cade/repos/PrimAITE/src/primaite/config/_package_data/example_config_2_rl_agents.yaml', 'r') as f:\n",
- " cfg = yaml.safe_load(f)\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
+ "from primaite.session.environment import PrimaiteRayEnv\n",
+ "from primaite import PRIMAITE_PATHS\n",
+ "\n",
"import ray\n",
"from ray import air, tune\n",
- "from ray.rllib.algorithms.ppo import PPOConfig"
+ "from ray.rllib.algorithms.ppo import PPOConfig\n",
+ "from primaite.session.environment import PrimaiteRayMARLEnv\n",
+ "\n",
+ "# If you get an error saying this config file doesn't exist, you may need to run `primaite setup` in your command line\n",
+ "# to copy the files to your user data path.\n",
+ "with open(PRIMAITE_PATHS.user_config_path / 'example_config/example_config_2_rl_agents.yaml', 'r') as f:\n",
+ " cfg = yaml.safe_load(f)\n",
+ "\n",
+ "ray.init(local_mode=True)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Create a Ray algorithm config which accepts our two agents"
]
},
{
@@ -40,13 +54,10 @@
"metadata": {},
"outputs": [],
"source": [
- "from primaite.session.environment import PrimaiteRayMARLEnv\n",
- "\n",
- "\n",
"config = (\n",
" PPOConfig()\n",
" .multi_agent(\n",
- " policies={'defender_1','defender_2'},\n",
+ " policies={'defender_1','defender_2'}, # These names are the same as the agents defined in the example config.\n",
" policy_mapping_fn=lambda agent_id, episode, worker, **kw: agent_id,\n",
" )\n",
" .environment(env=PrimaiteRayMARLEnv, env_config={\"cfg\":cfg})#, disable_env_checking=True)\n",
@@ -55,6 +66,14 @@
" )\n"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Set training parameters and start the training\n",
+ "This example will save outputs to a default Ray directory and use mostly default settings."
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
@@ -69,20 +88,6 @@
" param_space=config\n",
").fit()"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
}
],
"metadata": {
diff --git a/src/primaite/notebooks/training_example_ray_single_agent.ipynb b/src/primaite/notebooks/training_example_ray_single_agent.ipynb
index ebd35d61..a89b29e4 100644
--- a/src/primaite/notebooks/training_example_ray_single_agent.ipynb
+++ b/src/primaite/notebooks/training_example_ray_single_agent.ipynb
@@ -1,18 +1,18 @@
{
"cells": [
{
- "cell_type": "code",
- "execution_count": 1,
+ "cell_type": "markdown",
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2023-12-01 14:53:13,421\tWARNING __init__.py:10 -- PG has/have been moved to `rllib_contrib` and will no longer be maintained by the RLlib team. You can still use it/them normally inside RLlib util Ray 2.8, but from Ray 2.9 on, all `rllib_contrib` algorithms will no longer be part of the core repo, and will therefore have to be installed separately with pinned dependencies for e.g. ray[rllib] and other packages! See https://github.com/ray-project/ray/tree/master/rllib_contrib#rllib-contrib for more information on the RLlib contrib effort.\n"
- ]
- }
- ],
+ "source": [
+ "## Train a Single agent system using RLLib\n",
+ "This notebook will demonstrate how to use PrimaiteRayEnv to train a basic PPO agent."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
"source": [
"from primaite.game.game import PrimaiteGame\n",
"import yaml\n",
@@ -22,86 +22,26 @@
"from ray.rllib.algorithms import ppo\n",
"from ray import air, tune\n",
"import ray\n",
- "from ray.rllib.algorithms.ppo import PPOConfig"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
+ "from ray.rllib.algorithms.ppo import PPOConfig\n",
+ "\n",
+ "# If you get an error saying this config file doesn't exist, you may need to run `primaite setup` in your command line\n",
+ "# to copy the files to your user data path.\n",
"with open(example_config_path(), 'r') as f:\n",
- " cfg = yaml.safe_load(f)\n"
+ " cfg = yaml.safe_load(f)\n",
+ "\n",
+ "ray.init(local_mode=True)\n"
]
},
{
- "cell_type": "code",
- "execution_count": 3,
+ "cell_type": "markdown",
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2023-12-01 14:53:16,276\tINFO worker.py:1673 -- Started a local Ray instance.\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "9a775bf48837443dbdc6a3da9e9831f5",
- "version_major": 2,
- "version_minor": 0
- },
- "text/html": [
- "
\n"
- ],
- "text/plain": [
- "RayContext(dashboard_url='', python_version='3.10.12', ray_version='2.8.0', ray_commit='105355bd253d6538ed34d331f6a4bdf0e38ace3a', protocol_version=None)"
- ]
- },
- "execution_count": 3,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
"source": [
- "ray.init(local_mode=True)"
+ "#### Create a Ray algorithm and pass it our config."
]
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -110,808 +50,23 @@
"config = (\n",
" PPOConfig()\n",
" .environment(env=PrimaiteRayEnv, env_config=env_config, disable_env_checking=True)\n",
- " .rollouts(num_rollout_workers=0,)\n",
+ " .rollouts(num_rollout_workers=0)\n",
" .training(train_batch_size=128)\n",
")\n"
]
},
{
- "cell_type": "code",
- "execution_count": 5,
+ "cell_type": "markdown",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [],
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- ":job_id:01000000\n",
- ":task_name:bundle_reservation_check_func\n",
- ":actor_name:PPO\n",
- "2023-12-01 14:53:17,868::ERROR::primaite.simulator.network.hardware.base::190::NIC 3e:e9:64:e8:cf:89/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:17,869::ERROR::primaite.simulator.network.hardware.base::190::NIC 74:17:08:49:f5:30/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:17,870::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:17,871::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:17,872::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:17,875: Added node 1c94cb0c-b62c-43eb-b5d3-4a5d1937f845 to Network 07a10762-942f-409d-b36f-ea2ab7ddb136\n",
- "2023-12-01 14:53:17,878: Added node 3197ef0c-0ce8-4b63-bde8-91e7f95d59ef to Network 07a10762-942f-409d-b36f-ea2ab7ddb136\n",
- "2023-12-01 14:53:17,884: Added node 835b8e76-0b1e-4112-9897-0808a87fd9de to Network 07a10762-942f-409d-b36f-ea2ab7ddb136\n",
- "2023-12-01 14:53:17,888::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,889: Added service 6a19bda9-7f0e-4f77-a5bc-b473d3418df0 to node 7a31b3ca-b51d-4332-b9fb-ba5194ac5bae\n",
- "2023-12-01 14:53:17,890::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,891: Added service 6fc138ff-e698-4c4d-82ca-0aa990df6669 to node 7a31b3ca-b51d-4332-b9fb-ba5194ac5bae\n",
- "2023-12-01 14:53:17,893: Added application 601f573a-5480-492d-8508-4b1ccc45100f to node 7a31b3ca-b51d-4332-b9fb-ba5194ac5bae\n",
- "2023-12-01 14:53:17,895::ERROR::primaite.simulator.network.hardware.base::190::NIC fd:19:e4:d5:6e:c8/192.168.1.10 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:17,896::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,898: Added service 901a736f-8fd0-49e9-9369-ef1da8a6a5a4 to node 7a31b3ca-b51d-4332-b9fb-ba5194ac5bae\n",
- "2023-12-01 14:53:17,900::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,903: Added service e240939c-b017-4e67-b161-8e5d96cbe061 to node 7a31b3ca-b51d-4332-b9fb-ba5194ac5bae\n",
- "2023-12-01 14:53:17,905: Added application dada880f-ec1f-4ed3-a4b6-3f8c68a6c750 to node 7a31b3ca-b51d-4332-b9fb-ba5194ac5bae\n",
- "2023-12-01 14:53:17,906::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,908: Added service d2201c7b-418c-49f7-bed0-c93f520f0352 to node 7a31b3ca-b51d-4332-b9fb-ba5194ac5bae\n",
- "2023-12-01 14:53:17,909: Added node 7a31b3ca-b51d-4332-b9fb-ba5194ac5bae to Network 07a10762-942f-409d-b36f-ea2ab7ddb136\n",
- "2023-12-01 14:53:17,912::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,914: Added service 2c843f1e-643a-40d3-9477-8870926f49e8 to node 9b8bcb44-ec5a-42bc-a4a5-90d240f77036\n",
- "2023-12-01 14:53:17,916::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,918: Added service b52910ee-66d7-4006-8044-fb27a95cc00f to node 9b8bcb44-ec5a-42bc-a4a5-90d240f77036\n",
- "2023-12-01 14:53:17,920: Added application dd11b7fb-a31a-418d-bfdb-fb862c0c38b2 to node 9b8bcb44-ec5a-42bc-a4a5-90d240f77036\n",
- "2023-12-01 14:53:17,922::ERROR::primaite.simulator.network.hardware.base::190::NIC b9:01:34:d2:50:53/192.168.1.12 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:17,923::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,926: Added service a1d7a58a-df23-4ea0-934f-b4f397f252e5 to node 9b8bcb44-ec5a-42bc-a4a5-90d240f77036\n",
- "2023-12-01 14:53:17,927::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,928: Added service 742f59a4-369e-4a31-a95e-19adb9115cb7 to node 9b8bcb44-ec5a-42bc-a4a5-90d240f77036\n",
- "2023-12-01 14:53:17,930: Added application 5a93e02b-5485-46ad-9c61-4f32d4673ec3 to node 9b8bcb44-ec5a-42bc-a4a5-90d240f77036\n",
- "2023-12-01 14:53:17,934: Added application 040a27ae-8c65-47fd-a60b-7c72a46e7806 to node 9b8bcb44-ec5a-42bc-a4a5-90d240f77036\n",
- "2023-12-01 14:53:17,936::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,938: Added service f6241fbe-524e-4e94-8e94-232bcd8d0914 to node 9b8bcb44-ec5a-42bc-a4a5-90d240f77036\n",
- "2023-12-01 14:53:17,939: Added node 9b8bcb44-ec5a-42bc-a4a5-90d240f77036 to Network 07a10762-942f-409d-b36f-ea2ab7ddb136\n",
- "2023-12-01 14:53:17,941::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,942: Added service f69c460a-5385-4244-8582-508f806e52e4 to node 2f002450-027d-4791-832b-01327350d7e7\n",
- "2023-12-01 14:53:17,943::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,944: Added service f36088c4-0817-47a2-bd4d-1162fee46b63 to node 2f002450-027d-4791-832b-01327350d7e7\n",
- "2023-12-01 14:53:17,946: Added application 4de6ebfd-46ae-419f-b36e-3b2b079eff9d to node 2f002450-027d-4791-832b-01327350d7e7\n",
- "2023-12-01 14:53:17,949::ERROR::primaite.simulator.network.hardware.base::190::NIC 70:fb:95:ae:8b:e9/192.168.1.14 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:17,951::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,953: Added service 5a01c753-1c0b-4f9e-8cf9-bdab8e1151e7 to node 2f002450-027d-4791-832b-01327350d7e7\n",
- "2023-12-01 14:53:17,954::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,956: Added service 8f28720e-4374-4fe5-9b30-f2b3943691ff to node 2f002450-027d-4791-832b-01327350d7e7\n",
- "2023-12-01 14:53:17,957: Added application 500d5dc5-1bca-4904-8b2a-8d5f3c4db978 to node 2f002450-027d-4791-832b-01327350d7e7\n",
- "2023-12-01 14:53:17,958::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,960: Added service a5e5963e-c071-4715-9042-5e5887e26f3a to node 2f002450-027d-4791-832b-01327350d7e7\n",
- "2023-12-01 14:53:17,962::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,967: Added service 82dd1118-3e3c-4f72-8e62-3217e72b0360 to node 2f002450-027d-4791-832b-01327350d7e7\n",
- "2023-12-01 14:53:17,969: Added node 2f002450-027d-4791-832b-01327350d7e7 to Network 07a10762-942f-409d-b36f-ea2ab7ddb136\n",
- "2023-12-01 14:53:17,972::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,973: Added service d8d2c796-cae8-4d6b-acd1-76a30fb3dd87 to node 858361fa-1b42-4456-b184-59fa44b0c89b\n",
- "2023-12-01 14:53:17,974::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,975: Added service bd319940-2ad7-456b-88e9-a49b1c994edd to node 858361fa-1b42-4456-b184-59fa44b0c89b\n",
- "2023-12-01 14:53:17,977: Added application d30f9307-d8d5-41f0-b74d-94b878b3023a to node 858361fa-1b42-4456-b184-59fa44b0c89b\n",
- "2023-12-01 14:53:17,978::ERROR::primaite.simulator.network.hardware.base::190::NIC e8:c5:48:91:62:fe/192.168.1.16 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:17,980::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,983: Added service e926ebb1-6d91-4400-94f3-7dfab8e82eab to node 858361fa-1b42-4456-b184-59fa44b0c89b\n",
- "2023-12-01 14:53:17,985::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,987: Added service af73e5f5-c754-4936-9018-37ef69140ced to node 858361fa-1b42-4456-b184-59fa44b0c89b\n",
- "2023-12-01 14:53:17,988: Added application 13fd868b-e730-486f-ab83-e1bf2446e504 to node 858361fa-1b42-4456-b184-59fa44b0c89b\n",
- "2023-12-01 14:53:17,989::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:17,991: Added service ab453a9d-62dc-4437-b0dc-c9d587962a0b to node 858361fa-1b42-4456-b184-59fa44b0c89b\n",
- "2023-12-01 14:53:17,992: Added node 858361fa-1b42-4456-b184-59fa44b0c89b to Network 07a10762-942f-409d-b36f-ea2ab7ddb136\n",
- "2023-12-01 14:53:17,995::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:18,003: Added service d9b44dbd-f153-4f3c-b03d-b6441a917834 to node 7c47bb4e-deea-4c23-910d-6ba524f73bbc\n",
- "2023-12-01 14:53:18,005::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:18,006: Added service c3da251b-500a-40dd-8c25-e26a35b5b767 to node 7c47bb4e-deea-4c23-910d-6ba524f73bbc\n",
- "2023-12-01 14:53:18,008: Added application 8f692912-fb57-40bb-ad56-d38970d34430 to node 7c47bb4e-deea-4c23-910d-6ba524f73bbc\n",
- "2023-12-01 14:53:18,010::ERROR::primaite.simulator.network.hardware.base::190::NIC a3:59:d7:fe:28:08/192.168.1.110 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,011::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- ":job_id:01000000\n",
- ":task_name:bundle_reservation_check_func\n",
- ":actor_name:PPO\n",
- "installing DNSServer on node domain_controller\n",
- "installing DatabaseClient on node web_server\n",
- "installing WebServer on node web_server\n",
- "installing DatabaseService on node database_server\n",
- "installing FTPClient on node database_server\n",
- "installing FTPServer on node backup_server\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2023-12-01 14:53:18,013: Added service be9a1ad7-252b-47c7-ae20-e8202cb890ab to node 7c47bb4e-deea-4c23-910d-6ba524f73bbc\n",
- "2023-12-01 14:53:18,020::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:18,022: Added service c5d5b514-cd30-4c7d-a4b7-b16fce71ccac to node 7c47bb4e-deea-4c23-910d-6ba524f73bbc\n",
- "2023-12-01 14:53:18,024: Added application 918b8a5e-e339-4cb1-bb8b-ca2f3ec34372 to node 7c47bb4e-deea-4c23-910d-6ba524f73bbc\n",
- "2023-12-01 14:53:18,026::ERROR::primaite.simulator.network.hardware.base::190::NIC c9:b5:db:9d:71:4d/192.168.10.110 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,027: Added node 7c47bb4e-deea-4c23-910d-6ba524f73bbc to Network 07a10762-942f-409d-b36f-ea2ab7ddb136\n",
- "2023-12-01 14:53:18,040::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:18,042: Added service 66ca1dd3-0997-427b-8663-402141122e75 to node fee76ed0-ed6a-4ee2-bf2a-27de9bbfa17f\n",
- "2023-12-01 14:53:18,044::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:18,045: Added service f87b344d-8a8e-4d9d-a341-df5d3bb538ba to node fee76ed0-ed6a-4ee2-bf2a-27de9bbfa17f\n",
- "2023-12-01 14:53:18,047: Added application ab20f1e3-e567-4d02-9e16-febcd57c2630 to node fee76ed0-ed6a-4ee2-bf2a-27de9bbfa17f\n",
- "2023-12-01 14:53:18,057::ERROR::primaite.simulator.network.hardware.base::190::NIC f5:2e:2d:55:76:d3/192.168.10.21 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,058::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:18,060: Added service 640815d4-878f-4dff-a607-08887b9045a7 to node fee76ed0-ed6a-4ee2-bf2a-27de9bbfa17f\n",
- "2023-12-01 14:53:18,061::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:18,063: Added service 655735a9-6db2-41df-b462-f8c14ea53e35 to node fee76ed0-ed6a-4ee2-bf2a-27de9bbfa17f\n",
- "2023-12-01 14:53:18,072: Added application 84fc60ba-b67e-4b72-86d1-d247fa7e31f7 to node fee76ed0-ed6a-4ee2-bf2a-27de9bbfa17f\n",
- "2023-12-01 14:53:18,074::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:18,075: Added service 8f83391f-a59b-4bdb-8fe7-7fe7e19bf1e9 to node fee76ed0-ed6a-4ee2-bf2a-27de9bbfa17f\n",
- "2023-12-01 14:53:18,077: Added application 75147ae5-cdce-4ac0-a884-fb9bd8f96387 to node fee76ed0-ed6a-4ee2-bf2a-27de9bbfa17f\n",
- "2023-12-01 14:53:18,078: Added node fee76ed0-ed6a-4ee2-bf2a-27de9bbfa17f to Network 07a10762-942f-409d-b36f-ea2ab7ddb136\n",
- "2023-12-01 14:53:18,084::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:18,086: Added service 02915c59-69e2-4248-9e46-16d627460448 to node d8a6abb1-8929-490f-a997-5e3dcb452027\n",
- "2023-12-01 14:53:18,087::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:18,088: Added service 3ec73168-2bad-41cd-b872-7747487410c5 to node d8a6abb1-8929-490f-a997-5e3dcb452027\n",
- "2023-12-01 14:53:18,089: Added application 2acc2c11-7eed-4382-b596-389a52b42915 to node d8a6abb1-8929-490f-a997-5e3dcb452027\n",
- "2023-12-01 14:53:18,090::ERROR::primaite.simulator.network.hardware.base::190::NIC 18:f5:a0:7f:c8:60/192.168.10.22 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,091::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:18,093: Added service 99ae3de9-6a18-45b7-b52e-929b2be8b69b to node d8a6abb1-8929-490f-a997-5e3dcb452027\n",
- "2023-12-01 14:53:18,093::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:18,095: Added service 80932931-e76e-4b98-8d05-3998f3a23a75 to node d8a6abb1-8929-490f-a997-5e3dcb452027\n",
- "2023-12-01 14:53:18,096: Added application 267775b8-36ad-4627-a5d3-dfd42ba5ecbf to node d8a6abb1-8929-490f-a997-5e3dcb452027\n",
- "2023-12-01 14:53:18,098::WARNING::primaite.simulator.core::116::Overwriting request type scan.\n",
- "2023-12-01 14:53:18,100: Added service b5c7f3cb-d928-433d-8b07-a6a778337c27 to node d8a6abb1-8929-490f-a997-5e3dcb452027\n",
- "2023-12-01 14:53:18,102: Added application a3f18b82-33be-4659-96cb-2f069c3a2aa4 to node d8a6abb1-8929-490f-a997-5e3dcb452027\n",
- "2023-12-01 14:53:18,103: Added node d8a6abb1-8929-490f-a997-5e3dcb452027 to Network 07a10762-942f-409d-b36f-ea2ab7ddb136\n",
- "2023-12-01 14:53:18,148::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,151::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,153::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,154::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,155::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,155::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,156::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,157::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,159::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,163::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,165::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,167::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "installing DNSClient on node client_1\n",
- "installing DNSClient on node client_2\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- ":actor_name:PPO\n",
- "2023-12-01 14:53:18,581::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,582::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,583::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,585::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,586::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,588::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,590::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,591::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,593::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,602::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,604::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:18,604::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- ":actor_name:PPO\n",
- "Episode: 1, Step: 1, Reward: 0.5\n",
- "Episode: 1, Step: 2, Reward: 0.5\n",
- "Episode: 1, Step: 3, Reward: 0.5\n",
- "Episode: 1, Step: 4, Reward: 0.5\n",
- "Episode: 1, Step: 5, Reward: 0.5\n",
- "Episode: 1, Step: 6, Reward: 0.5\n",
- "Episode: 1, Step: 7, Reward: 0.5\n",
- "Episode: 1, Step: 8, Reward: 0.5\n",
- "Episode: 1, Step: 9, Reward: 0.5\n",
- "Episode: 1, Step: 10, Reward: 0.5\n",
- "Episode: 1, Step: 11, Reward: 0.5\n",
- "Episode: 1, Step: 12, Reward: 0.5\n",
- "Episode: 1, Step: 13, Reward: 0.5\n",
- "Episode: 1, Step: 14, Reward: 0.5\n",
- "Episode: 1, Step: 15, Reward: 0.5\n",
- "Episode: 1, Step: 16, Reward: 0.5\n",
- "Episode: 1, Step: 17, Reward: 0.5\n",
- "Episode: 1, Step: 18, Reward: 0.5\n",
- "Episode: 1, Step: 19, Reward: 0.5\n",
- "Episode: 1, Step: 20, Reward: 0.5\n",
- "Episode: 1, Step: 21, Reward: 0.5\n",
- "Episode: 1, Step: 22, Reward: 0.5\n",
- "Episode: 1, Step: 23, Reward: 0.5\n",
- "Episode: 1, Step: 24, Reward: 0.5\n",
- "Episode: 1, Step: 25, Reward: 0.5\n",
- "Episode: 1, Step: 26, Reward: 0.5\n",
- "Episode: 1, Step: 27, Reward: 0.5\n",
- "Episode: 1, Step: 28, Reward: 0.5\n",
- "Episode: 1, Step: 29, Reward: 0.5\n",
- "Episode: 1, Step: 30, Reward: 0.5\n",
- "Episode: 1, Step: 31, Reward: 0.5\n",
- "Episode: 1, Step: 32, Reward: 0.5\n",
- "Episode: 1, Step: 33, Reward: 0.5\n",
- "Episode: 1, Step: 34, Reward: 0.5\n",
- "Episode: 1, Step: 35, Reward: 0.5\n",
- "Episode: 1, Step: 36, Reward: 0.5\n",
- "Episode: 1, Step: 37, Reward: 0.5\n",
- "Episode: 1, Step: 38, Reward: 0.5\n",
- "Episode: 1, Step: 39, Reward: 0.5\n",
- "Episode: 1, Step: 40, Reward: 0.5\n",
- "Episode: 1, Step: 41, Reward: 0.5\n",
- "Episode: 1, Step: 42, Reward: 0.5\n",
- "Episode: 1, Step: 43, Reward: 0.5\n",
- "Episode: 1, Step: 44, Reward: 0.5\n",
- "Episode: 1, Step: 45, Reward: 0.5\n",
- "Episode: 1, Step: 46, Reward: 0.5\n",
- "Episode: 1, Step: 47, Reward: 0.5\n",
- "Episode: 1, Step: 48, Reward: 0.5\n",
- "Episode: 1, Step: 49, Reward: 0.5\n",
- "Episode: 1, Step: 50, Reward: 0.5\n",
- "Episode: 1, Step: 51, Reward: 0.5\n",
- "Episode: 1, Step: 52, Reward: 0.5\n",
- "Episode: 1, Step: 53, Reward: 0.5\n",
- "Episode: 1, Step: 54, Reward: 0.5\n",
- "Episode: 1, Step: 55, Reward: 0.5\n",
- "Episode: 1, Step: 56, Reward: 0.5\n",
- "Episode: 1, Step: 57, Reward: 0.5\n",
- "Episode: 1, Step: 58, Reward: 0.5\n",
- "Episode: 1, Step: 59, Reward: 0.5\n",
- "Episode: 1, Step: 60, Reward: 0.5\n",
- "Episode: 1, Step: 61, Reward: 0.5\n",
- "Episode: 1, Step: 62, Reward: 0.5\n",
- "Episode: 1, Step: 63, Reward: 0.5\n",
- "Episode: 1, Step: 64, Reward: 0.5\n",
- "Episode: 1, Step: 65, Reward: 0.5\n",
- "Episode: 1, Step: 66, Reward: 0.5\n",
- "Episode: 1, Step: 67, Reward: 0.5\n",
- "Episode: 1, Step: 68, Reward: 0.5\n",
- "Episode: 1, Step: 69, Reward: 0.5\n",
- "Episode: 1, Step: 70, Reward: 0.5\n",
- "Episode: 1, Step: 71, Reward: 0.5\n",
- "Episode: 1, Step: 72, Reward: 0.5\n",
- "Episode: 1, Step: 73, Reward: 0.5\n",
- "Episode: 1, Step: 74, Reward: 0.5\n",
- "Episode: 1, Step: 75, Reward: 0.5\n",
- "Episode: 1, Step: 76, Reward: 0.5\n",
- "Episode: 1, Step: 77, Reward: 0.5\n",
- "Episode: 1, Step: 78, Reward: 0.5\n",
- "Episode: 1, Step: 79, Reward: 0.5\n",
- "Episode: 1, Step: 80, Reward: 0.5\n",
- "Episode: 1, Step: 81, Reward: 0.5\n",
- "Episode: 1, Step: 82, Reward: 0.5\n",
- "Episode: 1, Step: 83, Reward: 0.5\n",
- "Episode: 1, Step: 84, Reward: 0.5\n",
- "Episode: 1, Step: 85, Reward: 0.5\n",
- "Episode: 1, Step: 86, Reward: 0.5\n",
- "Episode: 1, Step: 87, Reward: 0.5\n",
- "Episode: 1, Step: 88, Reward: 0.5\n",
- "Episode: 1, Step: 89, Reward: 0.5\n",
- "Episode: 1, Step: 90, Reward: 0.5\n",
- "Episode: 1, Step: 91, Reward: 0.5\n",
- "Episode: 1, Step: 92, Reward: 0.5\n",
- "Episode: 1, Step: 93, Reward: 0.5\n",
- "Episode: 1, Step: 94, Reward: 0.5\n",
- "Episode: 1, Step: 95, Reward: 0.5\n",
- "Episode: 1, Step: 96, Reward: 0.5\n",
- "Episode: 1, Step: 97, Reward: 0.5\n",
- "Episode: 1, Step: 98, Reward: 0.5\n",
- "Episode: 1, Step: 99, Reward: 0.5\n",
- "Episode: 1, Step: 100, Reward: 0.5\n",
- "Episode: 1, Step: 101, Reward: 0.5\n",
- "Episode: 1, Step: 102, Reward: 0.5\n",
- "Episode: 1, Step: 103, Reward: 0.5\n",
- "Episode: 1, Step: 104, Reward: 0.5\n",
- "Episode: 1, Step: 105, Reward: 0.5\n",
- "Episode: 1, Step: 106, Reward: 0.5\n",
- "Episode: 1, Step: 107, Reward: 0.5\n",
- "Episode: 1, Step: 108, Reward: 0.5\n",
- "Episode: 1, Step: 109, Reward: 0.5\n",
- "Episode: 1, Step: 110, Reward: 0.5\n",
- "Episode: 1, Step: 111, Reward: 0.5\n",
- "Episode: 1, Step: 112, Reward: 0.5\n",
- "Episode: 1, Step: 113, Reward: 0.5\n",
- "Episode: 1, Step: 114, Reward: 0.5\n",
- "Episode: 1, Step: 115, Reward: 0.5\n",
- "Episode: 1, Step: 116, Reward: 0.5\n",
- "Episode: 1, Step: 117, Reward: 0.5\n",
- "Episode: 1, Step: 118, Reward: 0.5\n",
- "Episode: 1, Step: 119, Reward: 0.5\n",
- "Episode: 1, Step: 120, Reward: 0.5\n",
- "Episode: 1, Step: 121, Reward: 0.5\n",
- "Episode: 1, Step: 122, Reward: 0.5\n",
- "Episode: 1, Step: 123, Reward: 0.5\n",
- "Episode: 1, Step: 124, Reward: 0.5\n",
- "Episode: 1, Step: 125, Reward: 0.5\n",
- "Episode: 1, Step: 126, Reward: 0.5\n",
- "Episode: 1, Step: 127, Reward: 0.5\n",
- "Episode: 1, Step: 128, Reward: 0.5\n",
- "Episode: 1, Step: 129, Reward: 0.5\n",
- "\n",
- "Episode: 1, Step: 130, Reward: 0.5\n",
- "Episode: 1, Step: 131, Reward: 0.5\n",
- "Episode: 1, Step: 132, Reward: 0.5\n",
- "Episode: 1, Step: 133, Reward: 0.5\n",
- "Episode: 1, Step: 134, Reward: 0.5\n",
- "Episode: 1, Step: 135, Reward: 0.5\n",
- "Episode: 1, Step: 136, Reward: 0.5\n",
- "Episode: 1, Step: 137, Reward: 0.5\n",
- "Episode: 1, Step: 138, Reward: 0.5\n",
- "Episode: 1, Step: 139, Reward: 0.5\n",
- "Episode: 1, Step: 140, Reward: 0.5\n",
- "Episode: 1, Step: 141, Reward: 0.5\n",
- "Episode: 1, Step: 142, Reward: 0.5\n",
- "Episode: 1, Step: 143, Reward: 0.5\n",
- "Episode: 1, Step: 144, Reward: 0.5\n",
- "Episode: 1, Step: 145, Reward: 0.5\n",
- "Episode: 1, Step: 146, Reward: 0.5\n",
- "Episode: 1, Step: 147, Reward: 0.5\n",
- "Episode: 1, Step: 148, Reward: 0.5\n",
- "Episode: 1, Step: 149, Reward: 0.5\n",
- "Episode: 1, Step: 150, Reward: 0.5\n",
- "Episode: 1, Step: 151, Reward: 0.5\n",
- "Episode: 1, Step: 152, Reward: 0.5\n",
- "Episode: 1, Step: 153, Reward: 0.5\n",
- "Episode: 1, Step: 154, Reward: 0.5\n",
- "Episode: 1, Step: 155, Reward: 0.5\n",
- "Episode: 1, Step: 156, Reward: 0.5\n",
- "Episode: 1, Step: 157, Reward: 0.5\n",
- "Episode: 1, Step: 158, Reward: 0.5\n",
- "Episode: 1, Step: 159, Reward: 0.5\n",
- "Episode: 1, Step: 160, Reward: 0.5\n",
- "Episode: 1, Step: 161, Reward: 0.5\n",
- "Episode: 1, Step: 162, Reward: 0.5\n",
- "Episode: 1, Step: 163, Reward: 0.5\n",
- "Episode: 1, Step: 164, Reward: 0.5\n",
- "Episode: 1, Step: 165, Reward: 0.5\n",
- "Episode: 1, Step: 166, Reward: 0.5\n",
- "Episode: 1, Step: 167, Reward: 0.5\n",
- "Episode: 1, Step: 168, Reward: 0.5\n",
- "Episode: 1, Step: 169, Reward: 0.5\n",
- "Episode: 1, Step: 170, Reward: 0.5\n",
- "Episode: 1, Step: 171, Reward: 0.5\n",
- "Episode: 1, Step: 172, Reward: 0.5\n",
- "Episode: 1, Step: 173, Reward: 0.5\n",
- "Episode: 1, Step: 174, Reward: 0.5\n",
- "Episode: 1, Step: 175, Reward: 0.5\n",
- "Episode: 1, Step: 176, Reward: 0.5\n",
- "Episode: 1, Step: 177, Reward: 0.5\n",
- "Episode: 1, Step: 178, Reward: 0.5\n",
- "Episode: 1, Step: 179, Reward: 0.5\n",
- "Episode: 1, Step: 180, Reward: 0.5\n",
- "Episode: 1, Step: 181, Reward: 0.5\n",
- "Episode: 1, Step: 182, Reward: 0.5\n",
- "Episode: 1, Step: 183, Reward: 0.5\n",
- "Episode: 1, Step: 184, Reward: 0.5\n",
- "Episode: 1, Step: 185, Reward: 0.5\n",
- "Episode: 1, Step: 186, Reward: 0.5\n",
- "Episode: 1, Step: 187, Reward: 0.5\n",
- "Episode: 1, Step: 188, Reward: 0.5\n",
- "Episode: 1, Step: 189, Reward: 0.5\n",
- "Episode: 1, Step: 190, Reward: 0.5\n",
- "Episode: 1, Step: 191, Reward: 0.5\n",
- "Episode: 1, Step: 192, Reward: 0.5\n",
- "Episode: 1, Step: 193, Reward: 0.5\n",
- "Episode: 1, Step: 194, Reward: 0.5\n",
- "Episode: 1, Step: 195, Reward: 0.5\n",
- "Episode: 1, Step: 196, Reward: 0.5\n",
- "Episode: 1, Step: 197, Reward: 0.5\n",
- "Episode: 1, Step: 198, Reward: 0.5\n",
- "Episode: 1, Step: 199, Reward: 0.5\n",
- "Episode: 1, Step: 200, Reward: 0.5\n",
- "Episode: 1, Step: 201, Reward: 0.5\n",
- "Episode: 1, Step: 202, Reward: 0.5\n",
- "Episode: 1, Step: 203, Reward: 0.5\n",
- "Episode: 1, Step: 204, Reward: 0.5\n",
- "Episode: 1, Step: 205, Reward: 0.5\n",
- "Episode: 1, Step: 206, Reward: 0.5\n",
- "Episode: 1, Step: 207, Reward: 0.5\n",
- "Episode: 1, Step: 208, Reward: 0.5\n",
- "Episode: 1, Step: 209, Reward: 0.5\n",
- "Episode: 1, Step: 210, Reward: 0.5\n",
- "Episode: 1, Step: 211, Reward: 0.5\n",
- "Episode: 1, Step: 212, Reward: 0.5\n",
- "Episode: 1, Step: 213, Reward: 0.5\n",
- "Episode: 1, Step: 214, Reward: 0.5\n",
- "Episode: 1, Step: 215, Reward: 0.5\n",
- "Episode: 1, Step: 216, Reward: 0.5\n",
- "Episode: 1, Step: 217, Reward: 0.5\n",
- "Episode: 1, Step: 218, Reward: 0.5\n",
- "Episode: 1, Step: 219, Reward: 0.5\n",
- "Episode: 1, Step: 220, Reward: 0.5\n",
- "Episode: 1, Step: 221, Reward: 0.5\n",
- "Episode: 1, Step: 222, Reward: 0.5\n",
- "Episode: 1, Step: 223, Reward: 0.5\n",
- "Episode: 1, Step: 224, Reward: 0.5\n",
- "Episode: 1, Step: 225, Reward: 0.5\n",
- "Episode: 1, Step: 226, Reward: 0.5\n",
- "Episode: 1, Step: 227, Reward: 0.5\n",
- "Episode: 1, Step: 228, Reward: 0.5\n",
- "Episode: 1, Step: 229, Reward: 0.5\n",
- "Episode: 1, Step: 230, Reward: 0.5\n",
- "Episode: 1, Step: 231, Reward: 0.5\n",
- "Episode: 1, Step: 232, Reward: 0.5\n",
- "Episode: 1, Step: 233, Reward: 0.5\n",
- "Episode: 1, Step: 234, Reward: 0.5\n",
- "Episode: 1, Step: 235, Reward: 0.5\n",
- "Episode: 1, Step: 236, Reward: 0.5\n",
- "Episode: 1, Step: 237, Reward: 0.5\n",
- "Episode: 1, Step: 238, Reward: 0.5\n",
- "Episode: 1, Step: 239, Reward: 0.5\n",
- "Episode: 1, Step: 240, Reward: 0.5\n",
- "Episode: 1, Step: 241, Reward: 0.5\n",
- "Episode: 1, Step: 242, Reward: 0.5\n",
- "Episode: 1, Step: 243, Reward: 0.5\n",
- "Episode: 1, Step: 244, Reward: 0.5\n",
- "Episode: 1, Step: 245, Reward: 0.5\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2023-12-01 14:53:21,247::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:21,248::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:21,249::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:21,251::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:21,252::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:21,254::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:21,256::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:21,259::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:21,262::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:21,292::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:21,293::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:21,294::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Episode: 1, Step: 246, Reward: 0.5\n",
- "Episode: 1, Step: 247, Reward: 0.5\n",
- "Episode: 1, Step: 248, Reward: 0.5\n",
- "Episode: 1, Step: 249, Reward: 0.5\n",
- "Episode: 1, Step: 250, Reward: 0.5\n",
- "Episode: 1, Step: 251, Reward: 0.5\n",
- "Episode: 1, Step: 252, Reward: 0.5\n",
- "Episode: 1, Step: 253, Reward: 0.5\n",
- "Episode: 1, Step: 254, Reward: 0.5\n",
- "Episode: 1, Step: 255, Reward: 0.5\n",
- "Episode: 1, Step: 256, Reward: 0.5\n",
- "Episode: 2, Step: 1, Reward: 0.5\n",
- "Episode: 2, Step: 2, Reward: 0.5\n",
- "Episode: 2, Step: 3, Reward: 0.5\n",
- "Episode: 2, Step: 4, Reward: 0.5\n",
- "Episode: 2, Step: 5, Reward: 0.5\n",
- "Episode: 2, Step: 6, Reward: 0.5\n",
- "Episode: 2, Step: 7, Reward: 0.5\n",
- "Episode: 2, Step: 8, Reward: 0.5\n",
- "Episode: 2, Step: 9, Reward: 0.5\n",
- "Episode: 2, Step: 10, Reward: 0.5\n",
- "Episode: 2, Step: 11, Reward: 0.5\n",
- "Episode: 2, Step: 12, Reward: 0.5\n",
- "Episode: 2, Step: 13, Reward: 0.5\n",
- "Episode: 2, Step: 14, Reward: 0.5\n",
- "Episode: 2, Step: 15, Reward: 0.5\n",
- "Episode: 2, Step: 16, Reward: 0.5\n",
- "Episode: 2, Step: 17, Reward: 0.5\n",
- "Episode: 2, Step: 18, Reward: 0.5\n",
- "Episode: 2, Step: 19, Reward: 0.5\n",
- "Episode: 2, Step: 20, Reward: 0.5\n",
- "Episode: 2, Step: 21, Reward: 0.5\n",
- "Episode: 2, Step: 22, Reward: 0.5\n",
- "Episode: 2, Step: 23, Reward: 0.5\n",
- "Episode: 2, Step: 24, Reward: 0.5\n",
- "Episode: 2, Step: 25, Reward: 0.5\n",
- "Episode: 2, Step: 26, Reward: 0.5\n",
- "Episode: 2, Step: 27, Reward: 0.5\n",
- "Episode: 2, Step: 28, Reward: 0.5\n",
- "Episode: 2, Step: 29, Reward: 0.5\n",
- "Episode: 2, Step: 30, Reward: 0.5\n",
- "Episode: 2, Step: 31, Reward: 0.5\n",
- "Episode: 2, Step: 32, Reward: 0.5\n",
- "Episode: 2, Step: 33, Reward: 0.5\n",
- "Episode: 2, Step: 34, Reward: 0.5\n",
- "Episode: 2, Step: 35, Reward: 0.5\n",
- "Episode: 2, Step: 36, Reward: 0.5\n",
- "Episode: 2, Step: 37, Reward: 0.5\n",
- "Episode: 2, Step: 38, Reward: 0.5\n",
- "Episode: 2, Step: 39, Reward: 0.5\n",
- "Episode: 2, Step: 40, Reward: 0.5\n",
- "Episode: 2, Step: 41, Reward: 0.5\n",
- "Episode: 2, Step: 42, Reward: 0.5\n",
- "Episode: 2, Step: 43, Reward: 0.5\n",
- "Episode: 2, Step: 44, Reward: 0.5\n",
- "Episode: 2, Step: 45, Reward: 0.5\n",
- "Episode: 2, Step: 46, Reward: 0.5\n",
- "Episode: 2, Step: 47, Reward: 0.5\n",
- "Episode: 2, Step: 48, Reward: 0.5\n",
- "Episode: 2, Step: 49, Reward: 0.5\n",
- "Episode: 2, Step: 50, Reward: 0.5\n",
- "Episode: 2, Step: 51, Reward: 0.5\n",
- "Episode: 2, Step: 52, Reward: 0.5\n",
- "Episode: 2, Step: 53, Reward: 0.5\n",
- "Episode: 2, Step: 54, Reward: 0.5\n",
- "Episode: 2, Step: 55, Reward: 0.5\n",
- "Episode: 2, Step: 56, Reward: 0.5\n",
- "Episode: 2, Step: 57, Reward: 0.5\n",
- "Episode: 2, Step: 58, Reward: 0.5\n",
- "Episode: 2, Step: 59, Reward: 0.5\n",
- "Episode: 2, Step: 60, Reward: 0.5\n",
- "Episode: 2, Step: 61, Reward: 0.5\n",
- "Episode: 2, Step: 62, Reward: 0.5\n",
- "Episode: 2, Step: 63, Reward: 0.5\n",
- "Episode: 2, Step: 64, Reward: 0.5\n",
- "Episode: 2, Step: 65, Reward: 0.5\n",
- "Episode: 2, Step: 66, Reward: 0.5\n",
- "Episode: 2, Step: 67, Reward: 0.5\n",
- "Episode: 2, Step: 68, Reward: 0.5\n",
- "Episode: 2, Step: 69, Reward: 0.5\n",
- "Episode: 2, Step: 70, Reward: 0.5\n",
- "Episode: 2, Step: 71, Reward: 0.5\n",
- "Episode: 2, Step: 72, Reward: 0.5\n",
- "Episode: 2, Step: 73, Reward: 0.5\n",
- "Episode: 2, Step: 74, Reward: 0.5\n",
- "Episode: 2, Step: 75, Reward: 0.5\n",
- "Episode: 2, Step: 76, Reward: 0.5\n",
- "Episode: 2, Step: 77, Reward: 0.5\n",
- "Episode: 2, Step: 78, Reward: 0.5\n",
- "Episode: 2, Step: 79, Reward: 0.5\n",
- "Episode: 2, Step: 80, Reward: 0.5\n",
- "Episode: 2, Step: 81, Reward: 0.5\n",
- "Episode: 2, Step: 82, Reward: 0.5\n",
- "Episode: 2, Step: 83, Reward: 0.5\n",
- "Episode: 2, Step: 84, Reward: 0.5\n",
- "Episode: 2, Step: 85, Reward: 0.5\n",
- "Episode: 2, Step: 86, Reward: 0.5\n",
- "Episode: 2, Step: 87, Reward: 0.5\n",
- "Episode: 2, Step: 88, Reward: 0.5\n",
- "Episode: 2, Step: 89, Reward: 0.5\n",
- "Episode: 2, Step: 90, Reward: 0.5\n",
- "Episode: 2, Step: 91, Reward: 0.5\n",
- "Episode: 2, Step: 92, Reward: 0.5\n",
- "Episode: 2, Step: 93, Reward: 0.5\n",
- "Episode: 2, Step: 94, Reward: 0.5\n",
- "Episode: 2, Step: 95, Reward: 0.5\n",
- "Episode: 2, Step: 96, Reward: 0.5\n",
- "Episode: 2, Step: 97, Reward: 0.5\n",
- "Episode: 2, Step: 98, Reward: 0.5\n",
- "Episode: 2, Step: 99, Reward: 0.5\n",
- "Episode: 2, Step: 100, Reward: 0.5\n",
- "Episode: 2, Step: 101, Reward: 0.5\n",
- "Episode: 2, Step: 102, Reward: 0.5\n",
- "Episode: 2, Step: 103, Reward: 0.5\n",
- "Episode: 2, Step: 104, Reward: 0.5\n",
- "Episode: 2, Step: 105, Reward: 0.5\n",
- "Episode: 2, Step: 106, Reward: 0.5\n",
- "Episode: 2, Step: 107, Reward: 0.5\n",
- "Episode: 2, Step: 108, Reward: 0.5\n",
- "Episode: 2, Step: 109, Reward: 0.5\n",
- "Episode: 2, Step: 110, Reward: 0.5\n",
- "Episode: 2, Step: 111, Reward: 0.5\n",
- "Episode: 2, Step: 112, Reward: 0.5\n",
- "Episode: 2, Step: 113, Reward: 0.5\n",
- "Episode: 2, Step: 114, Reward: 0.5\n",
- "Episode: 2, Step: 115, Reward: 0.5\n",
- "Episode: 2, Step: 116, Reward: 0.5\n",
- "Episode: 2, Step: 117, Reward: 0.5\n",
- "Episode: 2, Step: 118, Reward: 0.5\n",
- "Episode: 2, Step: 119, Reward: 0.5\n",
- "Episode: 2, Step: 120, Reward: 0.5\n",
- "Episode: 2, Step: 121, Reward: 0.5\n",
- "Episode: 2, Step: 122, Reward: 0.5\n",
- "Episode: 2, Step: 123, Reward: 0.5\n",
- "Episode: 2, Step: 124, Reward: 0.5\n",
- "Episode: 2, Step: 125, Reward: 0.5\n",
- "Episode: 2, Step: 126, Reward: 0.5\n",
- "Episode: 2, Step: 127, Reward: 0.5\n",
- "Episode: 2, Step: 128, Reward: 0.5\n",
- "Episode: 2, Step: 129, Reward: 0.5\n",
- "Episode: 2, Step: 130, Reward: 0.5\n",
- "Episode: 2, Step: 131, Reward: 0.5\n",
- "Episode: 2, Step: 132, Reward: 0.5\n",
- "Episode: 2, Step: 133, Reward: 0.5\n",
- "Episode: 2, Step: 134, Reward: 0.5\n",
- "Episode: 2, Step: 135, Reward: 0.5\n",
- "Episode: 2, Step: 136, Reward: 0.5\n",
- "Episode: 2, Step: 137, Reward: 0.5\n",
- "Episode: 2, Step: 138, Reward: 0.5\n",
- "Episode: 2, Step: 139, Reward: 0.5\n",
- "Episode: 2, Step: 140, Reward: 0.5\n",
- "Episode: 2, Step: 141, Reward: 0.5\n",
- "Episode: 2, Step: 142, Reward: 0.5\n",
- "Episode: 2, Step: 143, Reward: 0.5\n",
- "Episode: 2, Step: 144, Reward: 0.5\n",
- "Episode: 2, Step: 145, Reward: 0.5\n",
- "Episode: 2, Step: 146, Reward: 0.5\n",
- "Episode: 2, Step: 147, Reward: 0.5\n",
- "Episode: 2, Step: 148, Reward: 0.5\n",
- "Episode: 2, Step: 149, Reward: 0.5\n",
- "Episode: 2, Step: 150, Reward: 0.5\n",
- "Episode: 2, Step: 151, Reward: 0.5\n",
- "Episode: 2, Step: 152, Reward: 0.5\n",
- "Episode: 2, Step: 153, Reward: 0.5\n",
- "Episode: 2, Step: 154, Reward: 0.5\n",
- "Episode: 2, Step: 155, Reward: 0.5\n",
- "Episode: 2, Step: 156, Reward: 0.5\n",
- "Episode: 2, Step: 157, Reward: 0.5\n",
- "Episode: 2, Step: 158, Reward: 0.5\n",
- "Episode: 2, Step: 159, Reward: 0.5\n",
- "Episode: 2, Step: 160, Reward: 0.5\n",
- "Episode: 2, Step: 161, Reward: 0.5\n",
- "Episode: 2, Step: 162, Reward: 0.5\n",
- "Episode: 2, Step: 163, Reward: 0.5\n",
- "Episode: 2, Step: 164, Reward: 0.5\n",
- "Episode: 2, Step: 165, Reward: 0.5\n",
- "Episode: 2, Step: 166, Reward: 0.5\n",
- "Episode: 2, Step: 167, Reward: 0.5\n",
- "Episode: 2, Step: 168, Reward: 0.5\n",
- "Episode: 2, Step: 169, Reward: 0.5\n",
- "Episode: 2, Step: 170, Reward: 0.5\n",
- "Episode: 2, Step: 171, Reward: 0.5\n",
- "Episode: 2, Step: 172, Reward: 0.5\n",
- "Episode: 2, Step: 173, Reward: 0.5\n",
- "Episode: 2, Step: 174, Reward: 0.5\n",
- "Episode: 2, Step: 175, Reward: 0.5\n",
- "Episode: 2, Step: 176, Reward: 0.5\n",
- "Episode: 2, Step: 177, Reward: 0.5\n",
- "Episode: 2, Step: 178, Reward: 0.5\n",
- "Episode: 2, Step: 179, Reward: 0.5\n",
- "Episode: 2, Step: 180, Reward: 0.5\n",
- "Episode: 2, Step: 181, Reward: 0.5\n",
- "Episode: 2, Step: 182, Reward: 0.5\n",
- "Episode: 2, Step: 183, Reward: 0.5\n",
- "Episode: 2, Step: 184, Reward: 0.5\n",
- "Episode: 2, Step: 185, Reward: 0.5\n",
- "Episode: 2, Step: 186, Reward: 0.5\n",
- "Episode: 2, Step: 187, Reward: 0.5\n",
- "Episode: 2, Step: 188, Reward: 0.5\n",
- "Episode: 2, Step: 189, Reward: 0.5\n",
- "Episode: 2, Step: 190, Reward: 0.5\n",
- "Episode: 2, Step: 191, Reward: 0.5\n",
- "Episode: 2, Step: 192, Reward: 0.5\n",
- "Episode: 2, Step: 193, Reward: 0.5\n",
- "Episode: 2, Step: 194, Reward: 0.5\n",
- "Episode: 2, Step: 195, Reward: 0.5\n",
- "Episode: 2, Step: 196, Reward: 0.5\n",
- "Episode: 2, Step: 197, Reward: 0.5\n",
- "Episode: 2, Step: 198, Reward: 0.5\n",
- "Episode: 2, Step: 199, Reward: 0.5\n",
- "Episode: 2, Step: 200, Reward: 0.5\n",
- "Episode: 2, Step: 201, Reward: 0.5\n",
- "Episode: 2, Step: 202, Reward: 0.5\n",
- "Episode: 2, Step: 203, Reward: 0.5\n",
- "Episode: 2, Step: 204, Reward: 0.5\n",
- "Episode: 2, Step: 205, Reward: 0.5\n",
- "Episode: 2, Step: 206, Reward: 0.5\n",
- "Episode: 2, Step: 207, Reward: 0.5\n",
- "Episode: 2, Step: 208, Reward: 0.5\n",
- "Episode: 2, Step: 209, Reward: 0.5\n",
- "Episode: 2, Step: 210, Reward: 0.5\n",
- "Episode: 2, Step: 211, Reward: 0.5\n",
- "Episode: 2, Step: 212, Reward: 0.5\n",
- "Episode: 2, Step: 213, Reward: 0.5\n",
- "Episode: 2, Step: 214, Reward: 0.5\n",
- "Episode: 2, Step: 215, Reward: 0.5\n",
- "Episode: 2, Step: 216, Reward: 0.5\n",
- "Episode: 2, Step: 217, Reward: 0.5\n",
- "Episode: 2, Step: 218, Reward: 0.5\n",
- "Episode: 2, Step: 219, Reward: 0.5\n",
- "Episode: 2, Step: 220, Reward: 0.5\n",
- "Episode: 2, Step: 221, Reward: 0.5\n",
- "Episode: 2, Step: 222, Reward: 0.5\n",
- "Episode: 2, Step: 223, Reward: 0.5\n",
- "Episode: 2, Step: 224, Reward: 0.5\n",
- "Episode: 2, Step: 225, Reward: 0.5\n",
- "Episode: 2, Step: 226, Reward: 0.5\n",
- "Episode: 2, Step: 227, Reward: 0.5\n",
- "Episode: 2, Step: 228, Reward: 0.5\n",
- "Episode: 2, Step: 229, Reward: 0.5\n",
- "Episode: 2, Step: 230, Reward: 0.5\n",
- "Episode: 2, Step: 231, Reward: 0.5\n",
- "Episode: 2, Step: 232, Reward: 0.5\n",
- "Episode: 2, Step: 233, Reward: 0.5\n",
- "Episode: 2, Step: 234, Reward: 0.5\n",
- "Episode: 2, Step: 235, Reward: 0.5\n",
- "Episode: 2, Step: 236, Reward: 0.5\n",
- "Episode: 2, Step: 237, Reward: 0.5\n",
- "Episode: 2, Step: 238, Reward: 0.5\n",
- "Episode: 2, Step: 239, Reward: 0.5\n",
- "Episode: 2, Step: 240, Reward: 0.5\n",
- "Episode: 2, Step: 241, Reward: 0.5\n",
- "Episode: 2, Step: 242, Reward: 0.5\n",
- "Episode: 2, Step: 243, Reward: 0.5\n",
- "Episode: 2, Step: 244, Reward: 0.5\n",
- "Episode: 2, Step: 245, Reward: 0.5\n",
- "Episode: 2, Step: 246, Reward: 0.5\n",
- "Episode: 2, Step: 247, Reward: 0.5\n",
- "Episode: 2, Step: 248, Reward: 0.5\n",
- "Episode: 2, Step: 249, Reward: 0.5\n",
- "Episode: 2, Step: 250, Reward: 0.5\n",
- "Episode: 2, Step: 251, Reward: 0.5\n",
- "Episode: 2, Step: 252, Reward: 0.5\n",
- "Episode: 2, Step: 253, Reward: 0.5\n",
- "Episode: 2, Step: 254, Reward: 0.5\n",
- "Episode: 2, Step: 255, Reward: 0.5\n",
- "Episode: 2, Step: 256, Reward: 0.5\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2023-12-01 14:53:24,371::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:24,373::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:24,375::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:24,375::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:24,376::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:24,377::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:24,379::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:24,380::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:24,381::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:24,402::ERROR::primaite.simulator.network.hardware.base::190::NIC 36:ad:98:49:2d:a7/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:24,404::ERROR::primaite.simulator.network.hardware.base::190::NIC c4:0e:cf:36:55:de/127.0.0.1 cannot be enabled as it is not connected to a Link\n",
- "2023-12-01 14:53:24,406::ERROR::primaite.simulator.network.hardware.base::190::NIC ec:6e:b6:5c:8a:e7/127.0.0.1 cannot be enabled as it is not connected to a Link\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Episode: 3, Step: 1, Reward: 0.5\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2023-12-01 14:53:24,878\tINFO storage.py:563 -- Checkpoint successfully created at: Checkpoint(filesystem=local, path=/home/cade/ray_results/PPO_2023-12-01_14-53-17/PPO_PrimaiteRayEnv_5cbc4_00000_0_2023-12-01_14-53-17/checkpoint_000000)\n",
- "2023-12-01 14:53:25,098\tINFO tune.py:1047 -- Total run time: 7.37 seconds (7.31 seconds for the tuning loop).\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "ResultGrid<[\n",
- " Result(\n",
- " metrics={'custom_metrics': {}, 'episode_media': {}, 'info': {'learner': {'__all__': {'num_agent_steps_trained': 128.0, 'num_env_steps_trained': 128.0, 'total_loss': 9.403312460581462}, 'default_policy': {'total_loss': 9.403312460581462, 'policy_loss': -0.06894568807135025, 'vf_loss': 9.469796816507975, 'vf_loss_unclipped': 416.65203653971355, 'vf_explained_var': 0.0007335106531778971, 'entropy': 3.864323592185974, 'mean_kl_loss': 0.012305201259247648, 'default_optimizer_lr': 4.999999999999999e-05, 'curr_lr': 5e-05, 'curr_entropy_coeff': 0.0, 'curr_kl_coeff': 0.20000000298023224}}, 'num_env_steps_sampled': 512, 'num_env_steps_trained': 0, 'num_agent_steps_sampled': 512, 'num_agent_steps_trained': 0}, 'sampler_results': {'episode_reward_max': 128.0, 'episode_reward_min': 128.0, 'episode_reward_mean': 128.0, 'episode_len_mean': 256.0, 'episode_media': {}, 'episodes_this_iter': 1, 'policy_reward_min': {}, 'policy_reward_max': {}, 'policy_reward_mean': {}, 'custom_metrics': {}, 'hist_stats': {'episode_reward': [128.0, 128.0], 'episode_lengths': [256, 256]}, 'sampler_perf': {'mean_raw_obs_processing_ms': 0.8607522543689299, 'mean_inference_ms': 2.1271821797748984, 'mean_action_processing_ms': 0.15329866429338604, 'mean_env_wait_ms': 6.184263571370873, 'mean_env_render_ms': 0.0}, 'num_faulty_episodes': 0, 'connector_metrics': {'ObsPreprocessorConnector_ms': 0.010561943054199219, 'StateBufferConnector_ms': 0.004971027374267578, 'ViewRequirementAgentConnector_ms': 0.29495954513549805}}, 'episode_reward_max': 128.0, 'episode_reward_min': 128.0, 'episode_reward_mean': 128.0, 'episode_len_mean': 256.0, 'episodes_this_iter': 1, 'policy_reward_min': {}, 'policy_reward_max': {}, 'policy_reward_mean': {}, 'hist_stats': {'episode_reward': [128.0, 128.0], 'episode_lengths': [256, 256]}, 'sampler_perf': {'mean_raw_obs_processing_ms': 0.8607522543689299, 'mean_inference_ms': 2.1271821797748984, 'mean_action_processing_ms': 0.15329866429338604, 'mean_env_wait_ms': 6.184263571370873, 'mean_env_render_ms': 0.0}, 'num_faulty_episodes': 0, 'connector_metrics': {'ObsPreprocessorConnector_ms': 0.010561943054199219, 'StateBufferConnector_ms': 0.004971027374267578, 'ViewRequirementAgentConnector_ms': 0.29495954513549805}, 'num_healthy_workers': 0, 'num_in_flight_async_reqs': 0, 'num_remote_worker_restarts': 0, 'num_agent_steps_sampled': 512, 'num_agent_steps_trained': 0, 'num_env_steps_sampled': 512, 'num_env_steps_trained': 0, 'num_env_steps_sampled_this_iter': 128, 'num_env_steps_trained_this_iter': 0, 'num_env_steps_sampled_throughput_per_sec': 85.63165451744611, 'num_env_steps_trained_throughput_per_sec': 0.0, 'num_steps_trained_this_iter': 0, 'agent_timesteps_total': 512, 'timers': {'training_iteration_time_ms': 1530.574, 'sample_time_ms': 1196.582, 'synch_weights_time_ms': 1.912}, 'counters': {'num_env_steps_sampled': 512, 'num_env_steps_trained': 0, 'num_agent_steps_sampled': 512, 'num_agent_steps_trained': 0}, 'perf': {'cpu_util_percent': 55.25, 'ram_util_percent': 58.8}},\n",
- " path='/home/cade/ray_results/PPO_2023-12-01_14-53-17/PPO_PrimaiteRayEnv_5cbc4_00000_0_2023-12-01_14-53-17',\n",
- " filesystem='local',\n",
- " checkpoint=Checkpoint(filesystem=local, path=/home/cade/ray_results/PPO_2023-12-01_14-53-17/PPO_PrimaiteRayEnv_5cbc4_00000_0_2023-12-01_14-53-17/checkpoint_000000)\n",
- " )\n",
- "]>"
- ]
- },
- "execution_count": 5,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "source": [
+ "#### Set training parameters and start the training"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
"source": [
"tune.Tuner(\n",
" \"PPO\",\n",
diff --git a/src/primaite/session/environment.py b/src/primaite/session/environment.py
index 87cf4f2d..4f4bb829 100644
--- a/src/primaite/session/environment.py
+++ b/src/primaite/session/environment.py
@@ -37,11 +37,14 @@ class PrimaiteGymEnv(gymnasium.Env):
terminated = False
truncated = self.game.calculate_truncated()
info = {}
- print(f"Episode: {self.game.episode_counter}, Step: {self.game.step_counter}, Reward: {reward}")
return next_obs, reward, terminated, truncated, info
def reset(self, seed: Optional[int] = None) -> Tuple[ObsType, Dict[str, Any]]:
"""Reset the environment."""
+ print(
+ f"Resetting environment, episode {self.game.episode_counter}, "
+ "avg. reward: {self.game.rl_agents[0].reward_function.total_reward}"
+ )
self.game.reset()
state = self.game.get_sim_state()
self.game.update_agents(state)
diff --git a/src/primaite/session/session.py b/src/primaite/session/session.py
index 3919902a..3c8b40bd 100644
--- a/src/primaite/session/session.py
+++ b/src/primaite/session/session.py
@@ -62,6 +62,7 @@ class PrimaiteSession:
def start_session(self) -> None:
"""Commence the training/eval session."""
+ print("Staring Primaite Session")
self.mode = SessionMode.TRAIN
n_learn_episodes = self.training_options.n_learn_episodes
n_eval_episodes = self.training_options.n_eval_episodes
diff --git a/src/primaite/simulator/core.py b/src/primaite/simulator/core.py
index 18a470cd..08779d96 100644
--- a/src/primaite/simulator/core.py
+++ b/src/primaite/simulator/core.py
@@ -113,7 +113,7 @@ class RequestManager(BaseModel):
"""
if name in self.request_types:
msg = f"Overwriting request type {name}."
- _LOGGER.warn(msg)
+ _LOGGER.debug(msg)
self.request_types[name] = request_type
diff --git a/src/primaite/simulator/network/container.py b/src/primaite/simulator/network/container.py
index 97b62f95..e1780448 100644
--- a/src/primaite/simulator/network/container.py
+++ b/src/primaite/simulator/network/container.py
@@ -220,7 +220,7 @@ class Network(SimComponent):
self._node_id_map[len(self.nodes)] = node
node.parent = self
self._nx_graph.add_node(node.hostname)
- _LOGGER.info(f"Added node {node.uuid} to Network {self.uuid}")
+ _LOGGER.debug(f"Added node {node.uuid} to Network {self.uuid}")
self._node_request_manager.add_request(name=node.uuid, request_type=RequestType(func=node._request_manager))
def get_node_by_hostname(self, hostname: str) -> Optional[Node]:
diff --git a/src/primaite/simulator/network/hardware/base.py b/src/primaite/simulator/network/hardware/base.py
index 04c76c6b..a310a3f5 100644
--- a/src/primaite/simulator/network/hardware/base.py
+++ b/src/primaite/simulator/network/hardware/base.py
@@ -181,13 +181,13 @@ class NIC(SimComponent):
if self.enabled:
return
if not self._connected_node:
- _LOGGER.error(f"NIC {self} cannot be enabled as it is not connected to a Node")
+ _LOGGER.debug(f"NIC {self} cannot be enabled as it is not connected to a Node")
return
if self._connected_node.operating_state != NodeOperatingState.ON:
self._connected_node.sys_log.error(f"NIC {self} cannot be enabled as the endpoint is not turned on")
return
if not self._connected_link:
- _LOGGER.error(f"NIC {self} cannot be enabled as it is not connected to a Link")
+ _LOGGER.debug(f"NIC {self} cannot be enabled as it is not connected to a Link")
return
self.enabled = True