From 3642e87eda51f2317a15dad7908d78f2b5246a10 Mon Sep 17 00:00:00 2001 From: Marek Wolan Date: Fri, 1 Dec 2023 11:07:57 +0000 Subject: [PATCH 1/5] Remove distracting debug print statements --- src/primaite/session/policy/sb3.py | 3 +-- .../simulator/system/services/database/database_service.py | 2 +- .../simulator/system/services/web_server/web_server.py | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/primaite/session/policy/sb3.py b/src/primaite/session/policy/sb3.py index 051e2770..254baf4d 100644 --- a/src/primaite/session/policy/sb3.py +++ b/src/primaite/session/policy/sb3.py @@ -51,14 +51,13 @@ class SB3Policy(PolicyABC, identifier="SB3"): def eval(self, n_episodes: int, deterministic: bool) -> None: """Evaluate the agent.""" - reward_data = evaluate_policy( + _ = evaluate_policy( self._agent, self.session.env, n_eval_episodes=n_episodes, deterministic=deterministic, return_episode_rewards=True, ) - print(reward_data) def save(self, save_path: Path) -> None: """ diff --git a/src/primaite/simulator/system/services/database/database_service.py b/src/primaite/simulator/system/services/database/database_service.py index f9621ba5..bba4e777 100644 --- a/src/primaite/simulator/system/services/database/database_service.py +++ b/src/primaite/simulator/system/services/database/database_service.py @@ -56,7 +56,7 @@ class DatabaseService(Service): def reset_component_for_episode(self, episode: int): """Reset the original state of the SimComponent.""" - print("Resetting DatabaseService original state on node {self.software_manager.node.hostname}") + _LOGGER.debug("Resetting DatabaseService original state on node {self.software_manager.node.hostname}") self.connections.clear() super().reset_component_for_episode(episode) diff --git a/src/primaite/simulator/system/services/web_server/web_server.py b/src/primaite/simulator/system/services/web_server/web_server.py index bff29a47..e5f3dccc 100644 --- a/src/primaite/simulator/system/services/web_server/web_server.py +++ b/src/primaite/simulator/system/services/web_server/web_server.py @@ -47,7 +47,6 @@ class WebServer(Service): state["last_response_status_code"] = ( self.last_response_status_code.value if isinstance(self.last_response_status_code, HttpStatusCode) else None ) - print(state) return state def __init__(self, **kwargs): From 321d1f7219d134e18e98db584e8273f7c06385d6 Mon Sep 17 00:00:00 2001 From: Marek Wolan Date: Fri, 1 Dec 2023 14:58:34 +0000 Subject: [PATCH 2/5] Fix rllib marl problems --- .gitignore | 1 + .../example_config_2_rl_agents.yaml | 108 +- .../training_example_ray_multi_agent.ipynb | 44 +- .../training_example_ray_single_agent.ipynb | 969 ++++++++++++++++-- src/primaite/session/environment.py | 21 +- src/primaite/session/policy/rllib.py | 15 +- 6 files changed, 989 insertions(+), 169 deletions(-) diff --git a/.gitignore b/.gitignore index f6231bac..a6404ac6 100644 --- a/.gitignore +++ b/.gitignore @@ -154,3 +154,4 @@ simulation_output/ benchmark/output # src/primaite/notebooks/scratch.ipynb src/primaite/notebooks/scratch.py +sandbox.py diff --git a/src/primaite/config/_package_data/example_config_2_rl_agents.yaml b/src/primaite/config/_package_data/example_config_2_rl_agents.yaml index 9450c419..b811bfa5 100644 --- a/src/primaite/config/_package_data/example_config_2_rl_agents.yaml +++ b/src/primaite/config/_package_data/example_config_2_rl_agents.yaml @@ -1,14 +1,10 @@ training_config: - rl_framework: RLLIB_single_agent - rl_algorithm: PPO - seed: 333 - n_learn_episodes: 1 - n_eval_episodes: 5 - max_steps_per_episode: 256 - deterministic_eval: false - n_agents: 1 + rl_framework: RLLIB_multi_agent + # rl_framework: SB3 + n_agents: 2 agent_references: - - defender + - defender_1 + - defender_2 io_settings: save_checkpoints: true @@ -36,31 +32,26 @@ agents: action_space: action_list: - type: DONOTHING - # - # - type: NODE_LOGON - # - type: NODE_LOGOFF - # - type: NODE_APPLICATION_EXECUTE - # options: - # execution_definition: - # target_address: arcd.com - + - type: NODE_APPLICATION_EXECUTE options: nodes: - node_ref: client_2 + applications: + - application_ref: client_2_web_browser max_folders_per_node: 1 max_files_per_folder: 1 max_services_per_node: 1 - max_nics_per_node: 2 - max_acl_rules: 10 + max_applications_per_node: 1 reward_function: reward_components: - type: DUMMY agent_settings: - start_step: 5 - frequency: 4 - variance: 3 + start_settings: + start_step: 5 + frequency: 4 + variance: 3 - ref: client_1_data_manipulation_red_bot team: RED @@ -69,38 +60,20 @@ agents: observation_space: type: UC2RedObservation options: - nodes: - - node_ref: client_1 - observations: - - logon_status - - operating_status - services: - - service_ref: data_manipulation_bot - observations: - operating_status - health_status - folders: {} + nodes: {} action_space: action_list: - type: DONOTHING - #\n", + "
\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Python version:3.10.12
Ray version:2.8.0
\n", + "\n", + "
\n", + "\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)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "env_config = {\"cfg\":cfg}\n", "\n", - "game = PrimaiteGame.from_config(cfg)" + "config = (\n", + " PPOConfig()\n", + " .environment(env=PrimaiteRayEnv, env_config=env_config, disable_env_checking=True)\n", + " .rollouts(num_rollout_workers=0,)\n", + " .training(train_batch_size=128)\n", + ")\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "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": [ - "gym = PrimaiteRayEnv({\"game\":game})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import ray\n", - "from ray.rllib.algorithms import ppo" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ray.shutdown()\n", - "ray.init()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "env_config = {\"game\":game}\n", - "config = {\n", - " \"env\" : PrimaiteRayEnv,\n", - " \"env_config\" : env_config,\n", - " \"disable_env_checking\": True,\n", - " \"num_rollout_workers\": 0,\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "algo = ppo.PPO(config=config)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for i in range(5):\n", - " result = algo.train()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "algo.save(\"temp/deleteme\")" + "tune.Tuner(\n", + " \"PPO\",\n", + " run_config=air.RunConfig(\n", + " stop={\"timesteps_total\": 512}\n", + " ),\n", + " param_space=config\n", + ").fit()\n" ] } ], diff --git a/src/primaite/session/environment.py b/src/primaite/session/environment.py index a5fdade9..87cf4f2d 100644 --- a/src/primaite/session/environment.py +++ b/src/primaite/session/environment.py @@ -69,14 +69,15 @@ class PrimaiteGymEnv(gymnasium.Env): class PrimaiteRayEnv(gymnasium.Env): """Ray wrapper that accepts a single `env_config` parameter in init function for compatibility with Ray.""" - def __init__(self, env_config: Dict[str, PrimaiteGame]) -> None: + def __init__(self, env_config: Dict) -> None: """Initialise the environment. :param env_config: A dictionary containing the environment configuration. It must contain a single key, `game` which is the PrimaiteGame instance. :type env_config: Dict[str, PrimaiteGame] """ - self.env = PrimaiteGymEnv(game=env_config["game"]) + self.env = PrimaiteGymEnv(game=PrimaiteGame.from_config(env_config["cfg"])) + self.env.game.episode_counter -= 1 self.action_space = self.env.action_space self.observation_space = self.env.observation_space @@ -92,14 +93,14 @@ class PrimaiteRayEnv(gymnasium.Env): class PrimaiteRayMARLEnv(MultiAgentEnv): """Ray Environment that inherits from MultiAgentEnv to allow training MARL systems.""" - def __init__(self, env_config: Optional[Dict] = None) -> None: + def __init__(self, env_config: Dict) -> None: """Initialise the environment. :param env_config: A dictionary containing the environment configuration. It must contain a single key, `game` which is the PrimaiteGame instance. :type env_config: Dict[str, PrimaiteGame] """ - self.game: PrimaiteGame = env_config["game"] + self.game: PrimaiteGame = PrimaiteGame.from_config(env_config["cfg"]) """Reference to the primaite game""" self.agents: Final[Dict[str, ProxyAgent]] = {agent.agent_name: agent for agent in self.game.rl_agents} """List of all possible agents in the environment. This list should not change!""" @@ -108,7 +109,10 @@ class PrimaiteRayMARLEnv(MultiAgentEnv): self.terminateds = set() self.truncateds = set() self.observation_space = gymnasium.spaces.Dict( - {name: agent.observation_manager.space for name, agent in self.agents.items()} + { + name: gymnasium.spaces.flatten_space(agent.observation_manager.space) + for name, agent in self.agents.items() + } ) self.action_space = gymnasium.spaces.Dict( {name: agent.action_manager.space for name, agent in self.agents.items()} @@ -159,4 +163,9 @@ class PrimaiteRayMARLEnv(MultiAgentEnv): def _get_obs(self) -> Dict[str, ObsType]: """Return the current observation.""" - return {name: agent.observation_manager.current_observation for name, agent in self.agents.items()} + obs = {} + for name, agent in self.agents.items(): + unflat_space = agent.observation_manager.space + unflat_obs = agent.observation_manager.current_observation + obs[name] = gymnasium.spaces.flatten(unflat_space, unflat_obs) + return obs diff --git a/src/primaite/session/policy/rllib.py b/src/primaite/session/policy/rllib.py index be181797..ca69a2a8 100644 --- a/src/primaite/session/policy/rllib.py +++ b/src/primaite/session/policy/rllib.py @@ -12,6 +12,10 @@ from ray import air, tune from ray.rllib.algorithms import ppo from ray.rllib.algorithms.ppo import PPOConfig +from primaite import getLogger + +_LOGGER = getLogger(__name__) + class RaySingleAgentPolicy(PolicyABC, identifier="RLLIB_single_agent"): """Single agent RL policy using Ray RLLib.""" @@ -19,7 +23,7 @@ class RaySingleAgentPolicy(PolicyABC, identifier="RLLIB_single_agent"): def __init__(self, session: "PrimaiteSession", algorithm: Literal["PPO", "A2C"], seed: Optional[int] = None): super().__init__(session=session) - config = { + self.config = { "env": PrimaiteRayEnv, "env_config": {"game": session.game}, "disable_env_checking": True, @@ -29,12 +33,13 @@ class RaySingleAgentPolicy(PolicyABC, identifier="RLLIB_single_agent"): ray.shutdown() ray.init() - self._algo = ppo.PPO(config=config) - def learn(self, n_episodes: int, timesteps_per_episode: int) -> None: """Train the agent.""" - for ep in range(n_episodes): - self._algo.train() + self.config["training_iterations"] = n_episodes * timesteps_per_episode + self.config["train_batch_size"] = 128 + self._algo = ppo.PPO(config=self.config) + _LOGGER.info("Starting RLLIB training session") + self._algo.train() def eval(self, n_episodes: int, deterministic: bool) -> None: """Evaluate the agent.""" From eeedea2eff30eb458763c503a45b9827bcc2c928 Mon Sep 17 00:00:00 2001 From: Marek Wolan Date: Fri, 1 Dec 2023 15:36:07 +0000 Subject: [PATCH 3/5] Make more friendly user outputs when training SB3 --- .../config/_package_data/example_config.yaml | 4 +- src/primaite/game/agent/rewards.py | 1 + src/primaite/game/game.py | 13 +- .../training_example_ray_multi_agent.ipynb | 83 +- .../training_example_ray_single_agent.ipynb | 909 +----------------- src/primaite/session/environment.py | 5 +- src/primaite/session/session.py | 1 + src/primaite/simulator/core.py | 2 +- src/primaite/simulator/network/container.py | 2 +- .../simulator/network/hardware/base.py | 4 +- 10 files changed, 96 insertions(+), 928 deletions(-) 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", - "
\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Python version:3.10.12
Ray version:2.8.0
\n", - "\n", - "
\n", - "
\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 From 3e3fd89618bd12a9d7ce2e0216d2e930bb4205c9 Mon Sep 17 00:00:00 2001 From: Marek Wolan Date: Fri, 1 Dec 2023 15:41:10 +0000 Subject: [PATCH 4/5] Minor string fix --- src/primaite/session/environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/primaite/session/environment.py b/src/primaite/session/environment.py index 4f4bb829..c2f19f36 100644 --- a/src/primaite/session/environment.py +++ b/src/primaite/session/environment.py @@ -43,7 +43,7 @@ class PrimaiteGymEnv(gymnasium.Env): """Reset the environment.""" print( f"Resetting environment, episode {self.game.episode_counter}, " - "avg. reward: {self.game.rl_agents[0].reward_function.total_reward}" + f"avg. reward: {self.game.rl_agents[0].reward_function.total_reward}" ) self.game.reset() state = self.game.get_sim_state() From ba3d37316b93e7c5815054db9bdd291f593511b3 Mon Sep 17 00:00:00 2001 From: Marek Wolan Date: Mon, 4 Dec 2023 09:21:47 +0000 Subject: [PATCH 5/5] Apply suggestions from review --- src/primaite/game/agent/rewards.py | 2 +- src/primaite/notebooks/training_example_ray_multi_agent.ipynb | 2 +- src/primaite/session/session.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/primaite/game/agent/rewards.py b/src/primaite/game/agent/rewards.py index b7a5e9be..9b3dfb80 100644 --- a/src/primaite/game/agent/rewards.py +++ b/src/primaite/game/agent/rewards.py @@ -238,7 +238,7 @@ class RewardFunction: """Initialise the reward function object.""" 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.current_reward: float = 0.0 self.total_reward: float = 0.0 def regsiter_component(self, component: AbstractReward, weight: float = 1.0) -> None: diff --git a/src/primaite/notebooks/training_example_ray_multi_agent.ipynb b/src/primaite/notebooks/training_example_ray_multi_agent.ipynb index cd9ecfe7..0d4b6d0e 100644 --- a/src/primaite/notebooks/training_example_ray_multi_agent.ipynb +++ b/src/primaite/notebooks/training_example_ray_multi_agent.ipynb @@ -83,7 +83,7 @@ "tune.Tuner(\n", " \"PPO\",\n", " run_config=air.RunConfig(\n", - " stop={\"timesteps_total\": 511},\n", + " stop={\"timesteps_total\": 512},\n", " ),\n", " param_space=config\n", ").fit()" diff --git a/src/primaite/session/session.py b/src/primaite/session/session.py index 3c8b40bd..ef462d83 100644 --- a/src/primaite/session/session.py +++ b/src/primaite/session/session.py @@ -62,7 +62,7 @@ class PrimaiteSession: def start_session(self) -> None: """Commence the training/eval session.""" - print("Staring Primaite Session") + print("Starting Primaite Session") self.mode = SessionMode.TRAIN n_learn_episodes = self.training_options.n_learn_episodes n_eval_episodes = self.training_options.n_eval_episodes