gym-examples 2.0.30__py3-none-any.whl → 2.0.32__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__ = "2.0.30"
9
+ __version__ = "2.0.32"
@@ -115,9 +115,10 @@ class WSNRoutingEnv(gym.Env):
115
115
  # Calculate final reward
116
116
  # rewards_individual = torch.tensor(rewards[i], dtype=torch.double)
117
117
  # final_reward = net(rewards_individual)
118
- final_reward = np.sum(rewards[i])
118
+ final_reward = np.sum(rewards[i])
119
119
  rewards[i] = final_reward
120
-
120
+ rewards *= self.network_reward_consumption_energy() * self.network_reward_dispersion_remaining_energy()
121
+
121
122
  for i in range(self.n_sensors):
122
123
  if (self.remaining_energy[i] <= 0) or (self.number_of_packets[i] <= 0):
123
124
  dones[i] = True
@@ -234,8 +235,11 @@ class WSNRoutingEnv(gym.Env):
234
235
  '''
235
236
  Compute the reward based on the number of packets of the receiver
236
237
  '''
237
- max_number_of_packets = self.n_sensors * initial_number_of_packets
238
- normalized_number_of_packets = self.number_of_packets[action] / max_number_of_packets
238
+ max_number_of_packets = self.n_sensors * initial_number_of_packets
239
+ if action == self.n_sensors:
240
+ normalized_number_of_packets = 0
241
+ else:
242
+ normalized_number_of_packets = self.number_of_packets[action] / max_number_of_packets
239
243
 
240
244
  return 1 - normalized_number_of_packets
241
245
 
@@ -251,6 +255,29 @@ class WSNRoutingEnv(gym.Env):
251
255
 
252
256
  return [reward_angle, reward_distance, reward_consumption_energy, reward_dispersion_remaining_energy, reward_number_of_packets]
253
257
 
258
+ def network_reward_dispersion_remaining_energy(self):
259
+ '''
260
+ Compute the reward based on the standard deviation of the remaining energy at the network level
261
+ '''
262
+ dispersion_remaining_energy = np.std(self.remaining_energy)
263
+ # Normalize the standard deviation of the remaining energy
264
+ max_dispersion_remaining_energy = initial_energy / 2 # maximum standard deviation of the remaining energy if n_sensors is even
265
+ normalized_dispersion_remaining_energy = dispersion_remaining_energy / max_dispersion_remaining_energy
266
+
267
+ return np.clip(1 - normalized_dispersion_remaining_energy, 0, 1)
268
+
269
+ def network_reward_consumption_energy(self):
270
+ '''
271
+ Compute the reward based on the total energy consumption (transmission, reception) at the network level
272
+ '''
273
+ total_energy = np.sum(self.consumption_energy)
274
+ # Normalize the total energy consumption
275
+ max_transmission_energy = self.transmission_energy(self.n_sensors * initial_number_of_packets, self.coverage_radius)
276
+ max_reception_energy = self.reception_energy(self.n_sensors * initial_number_of_packets)
277
+ normalized_total_energy = total_energy / (max_transmission_energy + max_reception_energy)
278
+
279
+ return 1 - normalized_total_energy
280
+
254
281
  def integrate_mobility(self):
255
282
  '''
256
283
  Integrate the mobility of the sensors after each step
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gym-examples
3
- Version: 2.0.30
3
+ Version: 2.0.32
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=EYrWJ3V1oe3cV6qzc6PCLGBpaidU210LmmACYpG1bt4,193
2
+ gym_examples/envs/__init__.py,sha256=lgMe4pyOuUTgTBUddM0iwMlETsYTwFShny6ifm8PGM8,53
3
+ gym_examples/envs/wsn_env.py,sha256=gZkGOQuMxtNO40vk-D1k90ed_iIdJdUQ3LFbpWkjxmU,14710
4
+ gym_examples-2.0.32.dist-info/METADATA,sha256=IokXfCpcv9CpKNwR5aId5HN4I1UVNd5Of6E2nRy1adc,411
5
+ gym_examples-2.0.32.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
6
+ gym_examples-2.0.32.dist-info/top_level.txt,sha256=rJRksoAF32M6lTLBEwYzRdo4PgtejceaNnnZ3HeY_Rk,13
7
+ gym_examples-2.0.32.dist-info/RECORD,,
@@ -1,7 +0,0 @@
1
- gym_examples/__init__.py,sha256=uur4fOKfdZbOprSE_MqhnHFOEEgMbR2OFIQuRIJajoY,193
2
- gym_examples/envs/__init__.py,sha256=lgMe4pyOuUTgTBUddM0iwMlETsYTwFShny6ifm8PGM8,53
3
- gym_examples/envs/wsn_env.py,sha256=aKPaIgkMkNNynFuIvYD2ygW9R-0n_fRZKJPnj0KNT3M,13162
4
- gym_examples-2.0.30.dist-info/METADATA,sha256=X760BTR7bGZ1W19jrXFMsO4l1FueItkw7pEy7FNHqww,411
5
- gym_examples-2.0.30.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
6
- gym_examples-2.0.30.dist-info/top_level.txt,sha256=rJRksoAF32M6lTLBEwYzRdo4PgtejceaNnnZ3HeY_Rk,13
7
- gym_examples-2.0.30.dist-info/RECORD,,