gym-examples 3.0.373__py3-none-any.whl → 3.0.374__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
@@ -5,4 +5,4 @@ register(
5
5
  entry_point="gym_examples.envs:WSNRoutingEnv",
6
6
  )
7
7
 
8
- __version__ = "3.0.373"
8
+ __version__ = "3.0.374"
@@ -29,15 +29,33 @@ 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
+ 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
+ self.softplus = nn.Softplus() # SoftPlus activation function to ensure non-negative values: Check the paper for more details
38
+
39
+ def forward(self, x):
40
+ # Enforce non-negativity of weights
41
+ weight = self.Softplus(self.weight)
42
+
43
+ # Normalize cols to ensure that if sum(x1) < sum(x2) ==> sum(Ax1 + 0) < sum(Ax2 + 0): proof in the paper
44
+ col_sums = weight.sum(dim=2, keepdim=True)
45
+ normalized_weight = weight / col_sums
46
+
47
+ # Output
48
+ y = torch.matmul(x, normalized_weight.t())
49
+ return y
50
+
32
51
  class Attention(nn.Module):
33
52
  def __init__(self, input_dim, output_dim):
34
53
  super(Attention, self).__init__() # Call the initializer of the parent class (nn.Module)
35
54
  self.input_dim = input_dim # Set the input dimension of the network
36
55
  self.output_dim = output_dim # Set the output dimension of the network
37
- self.linear1 = nn.Linear(input_dim, 64) # Define the first linear layer. It takes input of size 'input_dim' and outputs size '64'
38
- self.linear2 = nn.Linear(64, output_dim) # Define the second linear layer. It takes input of size '64' and outputs size 'output_dim'
39
- self.softplus = nn.Softplus() # SoftPlus activation function to ensure non-negative outputs
40
-
56
+ self.linear1 = CustomizedLinear(input_dim, 64) # Define the first linear layer. It takes input of size 'input_dim' and outputs size '64'
57
+ self.linear2 = CustomizedLinear(64, output_dim) # Define the second linear layer. It takes input of size '64' and outputs size 'output_dim'
58
+
41
59
  def forward(self, x):
42
60
  # Step 1: Ensure input is 2D by adding a batch dimension if necessary
43
61
  if x.dim() == 1:
@@ -46,7 +64,6 @@ class Attention(nn.Module):
46
64
  attention_weights = F.softmax(x, dim=1) # Apply the softmax function to get the attention weights. Initially F.softmax(x, dim=0)
47
65
  x = attention_weights * x # Multiply the input by the attention weights
48
66
  x = self.linear2(x) # Pass the result through another linear layer
49
- x = self.softplus(x) # Apply SoftPlus activation to ensure non-negative outputs
50
67
  return x
51
68
 
52
69
  net = Attention(input_dim, output_dim)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gym-examples
3
- Version: 3.0.373
3
+ Version: 3.0.374
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=XCqOmwPmXff0UXM4D2EiPajZs2ADP_dpeYOinY24xiU,166
2
+ gym_examples/envs/__init__.py,sha256=lgMe4pyOuUTgTBUddM0iwMlETsYTwFShny6ifm8PGM8,53
3
+ gym_examples/envs/wsn_env.py,sha256=nkq2w0a8YlbOgG8VIDZxQUFSfS8_CSdUbEPWMwA6pzM,26756
4
+ gym_examples-3.0.374.dist-info/METADATA,sha256=irsGd-VOBpaGNO4ObyUE5srr892nW5JAP8zgnGr3qgQ,412
5
+ gym_examples-3.0.374.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
6
+ gym_examples-3.0.374.dist-info/top_level.txt,sha256=rJRksoAF32M6lTLBEwYzRdo4PgtejceaNnnZ3HeY_Rk,13
7
+ gym_examples-3.0.374.dist-info/RECORD,,
@@ -1,7 +0,0 @@
1
- gym_examples/__init__.py,sha256=31xV_jnS1HiU-dRx91orWPtAmCqejSFkb9iQuf1xJZc,166
2
- gym_examples/envs/__init__.py,sha256=lgMe4pyOuUTgTBUddM0iwMlETsYTwFShny6ifm8PGM8,53
3
- gym_examples/envs/wsn_env.py,sha256=2NUSYwbm1Ygaff5T7qzehDZp7S-DYMYPcvXF6sQahFA,26116
4
- gym_examples-3.0.373.dist-info/METADATA,sha256=9dVN56I6njmfur03MNTfpMrNQ1nrSjMCXgYv_xJrp-c,412
5
- gym_examples-3.0.373.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
6
- gym_examples-3.0.373.dist-info/top_level.txt,sha256=rJRksoAF32M6lTLBEwYzRdo4PgtejceaNnnZ3HeY_Rk,13
7
- gym_examples-3.0.373.dist-info/RECORD,,