gym-examples 3.0.48__py3-none-any.whl → 3.0.50__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.48"
9
+ __version__ = "3.0.50"
@@ -10,7 +10,7 @@ import torch.nn as nn
10
10
  import torch.nn.functional as F
11
11
 
12
12
  # Define the network parameters for the final reward function
13
- # input_dim = 7 # length of the individual rewards vector
13
+ input_dim = 4 # length of the individual rewards vector
14
14
  output_dim = 1 # final reward
15
15
 
16
16
  Eelec = 50e-9 # energy consumption per bit in joules
@@ -121,7 +121,8 @@ class WSNRoutingEnv(gym.Env):
121
121
  self.total_latency += self.packet_latency[i] + latency_per_hop
122
122
  self.packet_latency[i] = 0
123
123
 
124
- rewards[i] = self.compute_individual_rewards(i, action)
124
+ # rewards[i] = self.compute_individual_rewards(i, action)
125
+ rewards[i] = np.ones(input_dim) # Reward for transmitting data to the base station
125
126
  dones[i] = True
126
127
  else:
127
128
  distance = np.linalg.norm(self.sensor_positions[i] - self.sensor_positions[action])
@@ -253,7 +254,7 @@ class WSNRoutingEnv(gym.Env):
253
254
  max_transmission_energy = self.transmission_energy(self.n_sensors * initial_number_of_packets, self.coverage_radius)
254
255
  max_reception_energy = self.reception_energy(self.n_sensors * initial_number_of_packets)
255
256
  max_total_energy = max_transmission_energy + max_reception_energy
256
- normalized_total_energy = total_energy / max_total_energy
257
+ normalized_total_energy = total_energy / (max_total_energy + self.epsilon)
257
258
 
258
259
  return np.clip(1 - normalized_total_energy, 0, 1)
259
260
 
@@ -264,7 +265,7 @@ class WSNRoutingEnv(gym.Env):
264
265
  dispersion_remaining_energy = np.std(self.remaining_energy)
265
266
  # Normalize the standard deviation of the remaining energy
266
267
  max_dispersion_remaining_energy = initial_energy / 2 # maximum standard deviation of the remaining energy if n_sensors is even
267
- normalized_dispersion_remaining_energy = dispersion_remaining_energy / max_dispersion_remaining_energy
268
+ normalized_dispersion_remaining_energy = dispersion_remaining_energy / (max_dispersion_remaining_energy + self.epsilon)
268
269
 
269
270
  return np.clip(1 - normalized_dispersion_remaining_energy, 0, 1)
270
271
 
@@ -276,7 +277,7 @@ class WSNRoutingEnv(gym.Env):
276
277
  if action == self.n_sensors:
277
278
  normalized_number_of_packets = 0
278
279
  else:
279
- normalized_number_of_packets = self.number_of_packets[action] / max_number_of_packets
280
+ normalized_number_of_packets = self.number_of_packets[action] / (max_number_of_packets + self.epsilon)
280
281
 
281
282
  return np.clip(1 - normalized_number_of_packets, 0, 1)
282
283
 
@@ -310,7 +311,7 @@ class WSNRoutingEnv(gym.Env):
310
311
  dispersion_remaining_energy = np.std(self.remaining_energy)
311
312
  # Normalize the standard deviation of the remaining energy
312
313
  max_dispersion_remaining_energy = initial_energy / 2 # maximum standard deviation of the remaining energy if n_sensors is even
313
- normalized_dispersion_remaining_energy = dispersion_remaining_energy / max_dispersion_remaining_energy
314
+ normalized_dispersion_remaining_energy = dispersion_remaining_energy / (max_dispersion_remaining_energy + self.epsilon)
314
315
 
315
316
  return np.clip(1 - normalized_dispersion_remaining_energy, 0, 1)
316
317
 
@@ -321,7 +322,7 @@ class WSNRoutingEnv(gym.Env):
321
322
  total_energy = self.n_sensors * initial_energy - np.sum(self.remaining_energy)
322
323
  # Normalize the total energy consumption
323
324
  max_total_energy = self.n_sensors * initial_energy
324
- normalized_total_energy = total_energy / max_total_energy
325
+ normalized_total_energy = total_energy / (max_total_energy + self.epsilon)
325
326
 
326
327
  return np.clip(1 - normalized_total_energy, 0, 1)
327
328
 
@@ -329,7 +330,7 @@ class WSNRoutingEnv(gym.Env):
329
330
  '''
330
331
  Compute the reward based on the packet delivery ratio
331
332
  '''
332
- packet_delivery_ratio = self.packets_delivered / self.total_packets_sent_by_sensors if self.total_packets_sent_by_sensors > 0 else 0
333
+ packet_delivery_ratio = self.packets_delivered / (self.total_packets_sent_by_sensors + self.epsilon) if self.total_packets_sent_by_sensors > 0 else 0
333
334
  return np.clip(packet_delivery_ratio, 0, 1)
334
335
 
335
336
  def compute_reward_latency(self):
@@ -338,7 +339,7 @@ class WSNRoutingEnv(gym.Env):
338
339
  '''
339
340
  # Normalize the average latency
340
341
  max_latency = self.n_sensors * self.steps
341
- normalized_latency = self.total_latency / max_latency
342
+ normalized_latency = self.total_latency / (max_latency + self.epsilon)
342
343
 
343
344
  return np.clip(1 - normalized_latency, 0, 1)
344
345
 
@@ -346,9 +347,9 @@ class WSNRoutingEnv(gym.Env):
346
347
  '''
347
348
  Compute the reward based on the network throughput
348
349
  '''
349
- network_throughput = self.packets_delivered / self.steps if self.steps > 0 else 0
350
+ network_throughput = self.packets_delivered / (self.steps + self.epsilon) if self.steps > 0 else 0
350
351
  maximum_throughput = self.n_sensors * initial_number_of_packets
351
- normalized_throughput = network_throughput / maximum_throughput
352
+ normalized_throughput = network_throughput / (maximum_throughput + self.epsilon)
352
353
  return np.clip(normalized_throughput, 0, 1)
353
354
 
354
355
 
@@ -382,15 +383,15 @@ class WSNRoutingEnv(gym.Env):
382
383
 
383
384
  def get_metrics(self):
384
385
  # Calculate network throughput
385
- self.network_throughput = self.packets_delivered / self.steps if self.steps > 0 else 0
386
+ self.network_throughput = self.packets_delivered / (self.steps + self.epsilon) if self.steps > 0 else 0
386
387
  # Calculate energy efficiency
387
- self.energy_efficiency = self.packets_delivered / self.total_energy_consumed if self.total_energy_consumed > 0 else 0
388
+ self.energy_efficiency = self.packets_delivered / (self.total_energy_consumed + self.epsilon) if self.total_energy_consumed > 0 else 0
388
389
  # Calculate packet delivery ratio
389
- self.packet_delivery_ratio = self.packets_delivered / self.total_packets_sent_by_sensors if self.total_packets_sent_by_sensors > 0 else 0
390
+ self.packet_delivery_ratio = self.packets_delivered / (self.total_packets_sent_by_sensors + self.epsilon) if self.total_packets_sent_by_sensors > 0 else 0
390
391
  # Calculate network lifetime
391
392
  self.network_lifetime = self.first_node_dead_time if self.first_node_dead_time is not None else self.steps
392
393
  # Calculate average latency
393
- self.average_latency = self.total_latency / self.packets_delivered if self.packets_delivered > 0 else 0
394
+ self.average_latency = self.total_latency / (self.packets_delivered + self.epsilon) if self.packets_delivered > 0 else 0
394
395
 
395
396
  return {
396
397
  "network_throughput": self.network_throughput,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gym-examples
3
- Version: 3.0.48
3
+ Version: 3.0.50
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=5bGZE79MM87Lsi9G4pt9pzYriZjrdSe-u9MppmESRFY,193
2
+ gym_examples/envs/__init__.py,sha256=lgMe4pyOuUTgTBUddM0iwMlETsYTwFShny6ifm8PGM8,53
3
+ gym_examples/envs/wsn_env.py,sha256=S4HYOGOsORx63BvKGPwYhDlRnVITWU6cY1ZN2lZLzDQ,19947
4
+ gym_examples-3.0.50.dist-info/METADATA,sha256=nUkf1NtLaCSfGMpgdwb7IzO_HIVUrbS5EfFsDFCzUtE,411
5
+ gym_examples-3.0.50.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
6
+ gym_examples-3.0.50.dist-info/top_level.txt,sha256=rJRksoAF32M6lTLBEwYzRdo4PgtejceaNnnZ3HeY_Rk,13
7
+ gym_examples-3.0.50.dist-info/RECORD,,
@@ -1,7 +0,0 @@
1
- gym_examples/__init__.py,sha256=ZehSlz7OTIZqRjGB9S80rgzaj53-KcgOU7ejr9ugqts,193
2
- gym_examples/envs/__init__.py,sha256=lgMe4pyOuUTgTBUddM0iwMlETsYTwFShny6ifm8PGM8,53
3
- gym_examples/envs/wsn_env.py,sha256=E8T8JqXFAQDfCrgBwVk4bibgg7v3d5pqNhxCM-aZXDo,19625
4
- gym_examples-3.0.48.dist-info/METADATA,sha256=_bmDbz-c9noRL-J7USttwAi02WKWq13A-fiq6JpPA2s,411
5
- gym_examples-3.0.48.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
6
- gym_examples-3.0.48.dist-info/top_level.txt,sha256=rJRksoAF32M6lTLBEwYzRdo4PgtejceaNnnZ3HeY_Rk,13
7
- gym_examples-3.0.48.dist-info/RECORD,,