gym-examples 3.0.377__py3-none-any.whl → 3.0.378__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 +1 -1
- gym_examples/envs/wsn_env.py +23 -15
- {gym_examples-3.0.377.dist-info → gym_examples-3.0.378.dist-info}/METADATA +1 -1
- gym_examples-3.0.378.dist-info/RECORD +7 -0
- gym_examples-3.0.377.dist-info/RECORD +0 -7
- {gym_examples-3.0.377.dist-info → gym_examples-3.0.378.dist-info}/WHEEL +0 -0
- {gym_examples-3.0.377.dist-info → gym_examples-3.0.378.dist-info}/top_level.txt +0 -0
gym_examples/__init__.py
CHANGED
gym_examples/envs/wsn_env.py
CHANGED
@@ -29,28 +29,31 @@ base_back_up_dir = "results/data/"
|
|
29
29
|
max_reward = 1 # maximum reward value when the sensors sent data to the base station. The opposite value is when the sensors perform an unauthorized action
|
30
30
|
|
31
31
|
# Define the final reward function using an attention mechanism
|
32
|
-
class CustomizedLinear(nn.Module):
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
32
|
+
# class CustomizedLinear(nn.Module):
|
33
|
+
# def __init__(self, input_dim, output_dim):
|
34
|
+
# super(CustomizedLinear, self).__init__()
|
35
|
+
# self.weight = nn.Parameter(torch.rand(output_dim, input_dim))
|
36
|
+
# self.bias = None # No bias term
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
38
|
+
# def forward(self, x):
|
39
|
+
# # Normalize cols to ensure that if sum(x1) < sum(x2) ==> sum(Ax1 + 0) < sum(Ax2 + 0): proof in the paper
|
40
|
+
# col_sums = self.weight.sum(dim=0, keepdim=True)
|
41
|
+
# normalized_weight = self.weight / col_sums
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
# # Output
|
44
|
+
# y = torch.matmul(x, normalized_weight.t())
|
45
|
+
# return y
|
46
46
|
|
47
47
|
class Attention(nn.Module):
|
48
48
|
def __init__(self, input_dim, output_dim):
|
49
49
|
super(Attention, self).__init__() # Call the initializer of the parent class (nn.Module)
|
50
50
|
self.input_dim = input_dim # Set the input dimension of the network
|
51
51
|
self.output_dim = output_dim # Set the output dimension of the network
|
52
|
-
self.linear1 = CustomizedLinear(input_dim, 64) # Define the first linear layer. It takes input of size 'input_dim' and outputs size '64'
|
53
|
-
self.linear2 = CustomizedLinear(64, output_dim) # Define the second linear layer. It takes input of size '64' and outputs size 'output_dim'
|
52
|
+
# self.linear1 = CustomizedLinear(input_dim, 64) # Define the first linear layer. It takes input of size 'input_dim' and outputs size '64'
|
53
|
+
# self.linear2 = CustomizedLinear(64, output_dim) # Define the second linear layer. It takes input of size '64' and outputs size 'output_dim'
|
54
|
+
self.linear1 = nn.Linear(input_dim, 64) # Define the first linear layer. It takes input of size 'input_dim' and outputs size '64'
|
55
|
+
self.linear2 = nn.Linear(64, output_dim) # Define the second linear layer. It takes input of size '64' and outputs size 'output_dim'
|
56
|
+
|
54
57
|
|
55
58
|
def forward(self, x):
|
56
59
|
# Step 1: Ensure input is 2D by adding a batch dimension if necessary
|
@@ -193,6 +196,7 @@ class WSNRoutingEnv(gym.Env):
|
|
193
196
|
self.packet_latency[i] = 0
|
194
197
|
|
195
198
|
rewards[i] = [max_reward] * input_dim # Reward for transmitting data to the base station
|
199
|
+
print(f"Sensor {i} transmitted data to the base station with modified reward: {self.compute_attention_rewards(rewards[i])}")
|
196
200
|
dones[i] = True
|
197
201
|
else:
|
198
202
|
distance = np.linalg.norm(self.sensor_positions[i] - self.sensor_positions[action])
|
@@ -218,7 +222,11 @@ class WSNRoutingEnv(gym.Env):
|
|
218
222
|
self.packet_latency[action] += self.packet_latency[i] + latency_per_hop
|
219
223
|
self.packet_latency[i] = 0
|
220
224
|
|
221
|
-
rewards[i] = self.compute_individual_rewards(i, action)
|
225
|
+
rewards[i] = self.compute_individual_rewards(i, action)
|
226
|
+
if self.number_steps > 27:
|
227
|
+
raise Error("Stop here")
|
228
|
+
else:
|
229
|
+
print(f"Sensor {i} transmitted data to sensor {action} with modified reward: {self.compute_attention_rewards(rewards[i])}")
|
222
230
|
|
223
231
|
# Update the number of packets
|
224
232
|
self.number_of_packets[action] += self.number_of_packets[i]
|
@@ -0,0 +1,7 @@
|
|
1
|
+
gym_examples/__init__.py,sha256=rkNQCsuNv0lbzwDFbbINy72Zb5H42sq2w5lvX-kVL5k,166
|
2
|
+
gym_examples/envs/__init__.py,sha256=lgMe4pyOuUTgTBUddM0iwMlETsYTwFShny6ifm8PGM8,53
|
3
|
+
gym_examples/envs/wsn_env.py,sha256=UITF_EWvfj15xD39FPBqig-tCSh2XSLHLUDcnKGATtU,27260
|
4
|
+
gym_examples-3.0.378.dist-info/METADATA,sha256=23rCX5hkl1xinlpHNHZIdFH1-F99ZtUk03yRGEek-U0,412
|
5
|
+
gym_examples-3.0.378.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
6
|
+
gym_examples-3.0.378.dist-info/top_level.txt,sha256=rJRksoAF32M6lTLBEwYzRdo4PgtejceaNnnZ3HeY_Rk,13
|
7
|
+
gym_examples-3.0.378.dist-info/RECORD,,
|
@@ -1,7 +0,0 @@
|
|
1
|
-
gym_examples/__init__.py,sha256=I8QRTW1CK2Ne64ibgqBZ5U_05NatHj-Br8AsQWU4lVE,166
|
2
|
-
gym_examples/envs/__init__.py,sha256=lgMe4pyOuUTgTBUddM0iwMlETsYTwFShny6ifm8PGM8,53
|
3
|
-
gym_examples/envs/wsn_env.py,sha256=Sxkjh-bBlXMxMCeXaFwOHK4qpmZA0OIjynn0UUcQjTE,26547
|
4
|
-
gym_examples-3.0.377.dist-info/METADATA,sha256=2BPM_2pSr_uDAkkX2QyVrqT-oF-AcWFfXCGOjv7SqnY,412
|
5
|
-
gym_examples-3.0.377.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
6
|
-
gym_examples-3.0.377.dist-info/top_level.txt,sha256=rJRksoAF32M6lTLBEwYzRdo4PgtejceaNnnZ3HeY_Rk,13
|
7
|
-
gym_examples-3.0.377.dist-info/RECORD,,
|
File without changes
|
File without changes
|