gym-examples 3.0.176__py3-none-any.whl → 3.0.177__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
gym_examples/__init__.py CHANGED
@@ -6,4 +6,4 @@ register(
6
6
  max_episode_steps=50,
7
7
  )
8
8
 
9
- __version__ = "3.0.176"
9
+ __version__ = "3.0.177"
@@ -27,6 +27,8 @@ latency_per_hop = 1 # latency per hop in seconds
27
27
  coef_network_throughput = 2.6 # coefficient for the network throughput reward
28
28
  coef_packet_delivery_ratio = 1.6 # coefficient for the packet delivery ratio reward
29
29
 
30
+ base_back_up_dir = "results/data/"
31
+
30
32
  # Define the final reward function using an attention mechanism
31
33
  class Attention(nn.Module):
32
34
  def __init__(self, input_dim, output_dim):
@@ -56,6 +58,18 @@ class WSNRoutingEnv(gym.Env):
56
58
  self.log_done = None # Log the done status of the environment
57
59
  self.log_action = None # Log the action taken by the agent
58
60
  self.log_steps = None # Log the number of steps taken by the agent
61
+
62
+ # Initialize list of episode metrics
63
+ self.number_of_steps = 0 # Total number of steps taken by the agent since the beginning of the training
64
+ self.episode_returns = []
65
+ self.episode_std_remaining_energy = []
66
+ self.episode_mean_remaining_energy = []
67
+ self.episode_total_consumption_energy = []
68
+ self.episode_network_throughput = []
69
+ self.episode_packet_delivery_ratio = []
70
+ self.episode_network_lifetime = []
71
+ self.episode_average_latency = []
72
+
59
73
  self.n_sensors = n_sensors
60
74
  self.n_agents = n_sensors
61
75
  self.coverage_radius = coverage_radius
@@ -75,7 +89,18 @@ class WSNRoutingEnv(gym.Env):
75
89
  self.reset()
76
90
 
77
91
  def reset(self):
92
+
93
+ episode_return = 0
94
+
78
95
  if self.episode_count > 1 and os.getenv('PRINT_STATS') == 'True':
96
+ self.episode_returns.append(episode_return)
97
+ self.episode_std_remaining_energy.append(np.std(self.remaining_energy))
98
+ self.episode_mean_remaining_energy.append(np.mean(self.remaining_energy))
99
+ self.episode_total_consumption_energy.append(np.sum(initial_energy - self.remaining_energy))
100
+ self.episode_network_throughput.append(self.network_throughput)
101
+ self.episode_packet_delivery_ratio.append(self.packet_delivery_ratio)
102
+ self.episode_network_lifetime.append(self.network_lifetime)
103
+ self.episode_average_latency.append(self.average_latency)
79
104
  print(f"Episode: {self.episode_count}")
80
105
  print(f"This episode ends with # Steps: {self.log_steps}")
81
106
  print(f"This episode ends with Done: {self.log_done}")
@@ -106,6 +131,8 @@ class WSNRoutingEnv(gym.Env):
106
131
  def step(self, actions):
107
132
  actions = [actions[i] for i in range(self.n_agents)] # We want to go back from the MultiDiscrete action space to a tuple of tuple of Discrete action spaces
108
133
  self.steps += 1
134
+ if os.getenv('PRINT_STATS') == 'True':
135
+ self.number_of_steps += 1
109
136
  rewards = [0] * self.n_sensors
110
137
  dones = [False] * self.n_sensors
111
138
  for i, action in enumerate(actions):
@@ -192,6 +219,28 @@ class WSNRoutingEnv(gym.Env):
192
219
  self.log_done = dones
193
220
  self.log_action = actions
194
221
  self.log_steps = self.steps
222
+ episode_return += rewards
223
+
224
+ if os.getenv('PRINT_STATS') == 'True': # We are trying to extract only the statistics for the PPO algorithm
225
+ if self.number_of_steps >= num_timesteps:
226
+ self.episode_returns.append(episode_return)
227
+ self.episode_std_remaining_energy.append(np.std(self.remaining_energy))
228
+ self.episode_mean_remaining_energy.append(np.mean(self.remaining_energy))
229
+ self.episode_total_consumption_energy.append(np.sum(initial_energy - self.remaining_energy))
230
+ self.episode_network_throughput.append(self.network_throughput)
231
+ self.episode_packet_delivery_ratio.append(self.packet_delivery_ratio)
232
+ self.episode_network_lifetime.append(self.network_lifetime)
233
+ self.episode_average_latency.append(self.average_latency)
234
+
235
+ np.save(f"{base_back_up_dir}returns_QMIX_{version}.npy", np.array(self.episode_returns))
236
+ np.save(f"{base_back_up_dir}std_remaining_energy_QMIX_{version}.npy", np.array(self.episode_std_remaining_energy))
237
+ np.save(f"{base_back_up_dir}total_consumption_energy_QMIX_{version}.npy", np.array(self.episode_total_consumption_energy))
238
+ np.save(f"{base_back_up_dir}mean_remaining_energy_QMIX_{version}.npy", np.array(self.episode_mean_remaining_energy))
239
+ np.save(f"{base_back_up_dir}network_throughput_QMIX_{version}.npy", np.array(self.episode_network_throughput))
240
+ np.save(f"{base_back_up_dir}packet_delivery_ratio_QMIX_{version}.npy", np.array(self.episode_packet_delivery_ratio))
241
+ np.save(f"{base_back_up_dir}network_lifetime_QMIX_{version}.npy", np.array(self.episode_network_lifetime))
242
+ np.save(f"{base_back_up_dir}average_latency_QMIX_{version}.npy", np.array(self.episode_average_latency))
243
+
195
244
  return self._get_obs(), rewards, dones, {}
196
245
 
197
246
  def _get_obs(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gym-examples
3
- Version: 3.0.176
3
+ Version: 3.0.177
4
4
  Summary: A custom environment for multi-agent reinforcement learning focused on WSN routing.
5
5
  Home-page: https://github.com/gedji/CODES.git
6
6
  Author: Georges Djimefo
@@ -0,0 +1,7 @@
1
+ gym_examples/__init__.py,sha256=j60kGbCc8FuDrR2oC1Aj0dXR1XU7IFCPNOHTRS7pqSw,194
2
+ gym_examples/envs/__init__.py,sha256=lgMe4pyOuUTgTBUddM0iwMlETsYTwFShny6ifm8PGM8,53
3
+ gym_examples/envs/wsn_env.py,sha256=iTa-ZOhp1dcQD01KfqB70UbJQI79B9wQeY6fkRpz_rE,26207
4
+ gym_examples-3.0.177.dist-info/METADATA,sha256=m1AYDNC878oKPiGZ4dJcOEaxak6JFdLUvEuvSU31yoc,412
5
+ gym_examples-3.0.177.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
6
+ gym_examples-3.0.177.dist-info/top_level.txt,sha256=rJRksoAF32M6lTLBEwYzRdo4PgtejceaNnnZ3HeY_Rk,13
7
+ gym_examples-3.0.177.dist-info/RECORD,,
@@ -1,7 +0,0 @@
1
- gym_examples/__init__.py,sha256=i7wmRRD6heJrXozHrhxzTPi1vwiSSWbwl0KImDTLlHI,194
2
- gym_examples/envs/__init__.py,sha256=lgMe4pyOuUTgTBUddM0iwMlETsYTwFShny6ifm8PGM8,53
3
- gym_examples/envs/wsn_env.py,sha256=YqXpYZXdd5lW3m2Hohog4iirLHORObEECs3QVr341Rg,22968
4
- gym_examples-3.0.176.dist-info/METADATA,sha256=TTwYP8pX18ClNKCpUqR0oHggJLZgcrzxl5pV7VSn3t0,412
5
- gym_examples-3.0.176.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
6
- gym_examples-3.0.176.dist-info/top_level.txt,sha256=rJRksoAF32M6lTLBEwYzRdo4PgtejceaNnnZ3HeY_Rk,13
7
- gym_examples-3.0.176.dist-info/RECORD,,