multi-agent-rlenv 3.3.7__py3-none-any.whl → 3.5.0__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.
- marlenv/__init__.py +11 -13
- marlenv/adapters/gym_adapter.py +6 -16
- marlenv/adapters/overcooked_adapter.py +43 -23
- marlenv/adapters/pettingzoo_adapter.py +5 -5
- marlenv/adapters/pymarl_adapter.py +3 -4
- marlenv/adapters/smac_adapter.py +6 -6
- marlenv/env_builder.py +8 -9
- marlenv/env_pool.py +5 -7
- marlenv/mock_env.py +7 -7
- marlenv/models/__init__.py +2 -4
- marlenv/models/env.py +23 -12
- marlenv/models/episode.py +17 -20
- marlenv/models/spaces.py +90 -83
- marlenv/models/transition.py +6 -10
- marlenv/utils/__init__.py +10 -0
- marlenv/utils/schedule.py +281 -0
- marlenv/wrappers/agent_id_wrapper.py +4 -5
- marlenv/wrappers/available_actions_mask.py +6 -7
- marlenv/wrappers/available_actions_wrapper.py +7 -9
- marlenv/wrappers/blind_wrapper.py +5 -7
- marlenv/wrappers/centralised.py +12 -14
- marlenv/wrappers/delayed_rewards.py +13 -11
- marlenv/wrappers/last_action_wrapper.py +10 -14
- marlenv/wrappers/paddings.py +6 -8
- marlenv/wrappers/penalty_wrapper.py +5 -8
- marlenv/wrappers/rlenv_wrapper.py +12 -9
- marlenv/wrappers/time_limit.py +3 -3
- marlenv/wrappers/video_recorder.py +4 -6
- {multi_agent_rlenv-3.3.7.dist-info → multi_agent_rlenv-3.5.0.dist-info}/METADATA +1 -1
- multi_agent_rlenv-3.5.0.dist-info/RECORD +39 -0
- multi_agent_rlenv-3.3.7.dist-info/RECORD +0 -37
- {multi_agent_rlenv-3.3.7.dist-info → multi_agent_rlenv-3.5.0.dist-info}/WHEEL +0 -0
- {multi_agent_rlenv-3.3.7.dist-info → multi_agent_rlenv-3.5.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,26 +1,28 @@
|
|
|
1
|
-
from typing import Optional
|
|
1
|
+
from typing import Optional, Sequence
|
|
2
2
|
from typing_extensions import TypeVar
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from abc import ABC
|
|
5
|
-
import numpy
|
|
6
|
-
from marlenv.models import MARLEnv, ActionSpace, DiscreteSpace, State
|
|
5
|
+
import numpy as np
|
|
7
6
|
|
|
7
|
+
from marlenv.models import MARLEnv, Space, DiscreteSpace, State
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
AS = TypeVar("AS", bound=
|
|
9
|
+
|
|
10
|
+
AS = TypeVar("AS", bound=Space, default=Space)
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
@dataclass
|
|
14
|
-
class RLEnvWrapper(MARLEnv[
|
|
14
|
+
class RLEnvWrapper(MARLEnv[AS], ABC):
|
|
15
15
|
"""Parent class for all RLEnv wrappers"""
|
|
16
16
|
|
|
17
|
-
wrapped: MARLEnv[
|
|
17
|
+
wrapped: MARLEnv[AS]
|
|
18
18
|
full_name: str
|
|
19
19
|
"""The full name of the wrapped environment, excluding the name of the nested wrappers."""
|
|
20
20
|
|
|
21
21
|
def __init__(
|
|
22
22
|
self,
|
|
23
|
-
env: MARLEnv[
|
|
23
|
+
env: MARLEnv[AS],
|
|
24
|
+
*,
|
|
25
|
+
n_agents: Optional[int] = None,
|
|
24
26
|
observation_shape: Optional[tuple[int, ...]] = None,
|
|
25
27
|
state_shape: Optional[tuple[int, ...]] = None,
|
|
26
28
|
extra_shape: Optional[tuple[int, ...]] = None,
|
|
@@ -35,6 +37,7 @@ class RLEnvWrapper(MARLEnv[A, AS], ABC):
|
|
|
35
37
|
if len(extra_meanings) != extra_shape[0]:
|
|
36
38
|
raise ValueError(f"There are {len(extra_meanings)} extra_meanings but the announced extra_shape is {extra_shape} !")
|
|
37
39
|
super().__init__(
|
|
40
|
+
n_agents=n_agents or env.n_agents,
|
|
38
41
|
action_space=action_space or env.action_space,
|
|
39
42
|
observation_shape=observation_shape or env.observation_shape,
|
|
40
43
|
state_shape=state_shape or env.state_shape,
|
|
@@ -60,7 +63,7 @@ class RLEnvWrapper(MARLEnv[A, AS], ABC):
|
|
|
60
63
|
def agent_state_size(self):
|
|
61
64
|
return self.wrapped.agent_state_size
|
|
62
65
|
|
|
63
|
-
def step(self, actions:
|
|
66
|
+
def step(self, actions: np.ndarray | Sequence):
|
|
64
67
|
return self.wrapped.step(actions)
|
|
65
68
|
|
|
66
69
|
def reset(self):
|
marlenv/wrappers/time_limit.py
CHANGED
|
@@ -5,11 +5,11 @@ import numpy as np
|
|
|
5
5
|
|
|
6
6
|
from marlenv.models import Observation, State
|
|
7
7
|
|
|
8
|
-
from .rlenv_wrapper import MARLEnv, RLEnvWrapper,
|
|
8
|
+
from .rlenv_wrapper import MARLEnv, RLEnvWrapper, AS
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
@dataclass
|
|
12
|
-
class TimeLimit(RLEnvWrapper[
|
|
12
|
+
class TimeLimit(RLEnvWrapper[AS]):
|
|
13
13
|
"""
|
|
14
14
|
Limits the number of time steps for an episode. When the number of steps is reached, then the episode is truncated.
|
|
15
15
|
|
|
@@ -27,7 +27,7 @@ class TimeLimit(RLEnvWrapper[A, AS]):
|
|
|
27
27
|
|
|
28
28
|
def __init__(
|
|
29
29
|
self,
|
|
30
|
-
env: MARLEnv[
|
|
30
|
+
env: MARLEnv[AS],
|
|
31
31
|
step_limit: int,
|
|
32
32
|
add_extra: bool = True,
|
|
33
33
|
truncation_penalty: Optional[float] = None,
|
|
@@ -4,24 +4,22 @@ from datetime import datetime
|
|
|
4
4
|
from typing import Literal, Optional
|
|
5
5
|
|
|
6
6
|
import cv2
|
|
7
|
-
import numpy.typing as npt
|
|
8
7
|
from typing_extensions import TypeVar
|
|
9
8
|
|
|
10
|
-
from marlenv.models import
|
|
9
|
+
from marlenv.models import Space
|
|
11
10
|
|
|
12
11
|
from .rlenv_wrapper import MARLEnv, RLEnvWrapper
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
AS = TypeVar("AS", bound=ActionSpace, default=ActionSpace)
|
|
13
|
+
AS = TypeVar("AS", bound=Space, default=Space)
|
|
16
14
|
|
|
17
15
|
|
|
18
16
|
@dataclass
|
|
19
|
-
class VideoRecorder(RLEnvWrapper[
|
|
17
|
+
class VideoRecorder(RLEnvWrapper[AS]):
|
|
20
18
|
"""Records a video of the run"""
|
|
21
19
|
|
|
22
20
|
def __init__(
|
|
23
21
|
self,
|
|
24
|
-
env: MARLEnv[
|
|
22
|
+
env: MARLEnv[AS],
|
|
25
23
|
video_folder: Optional[str] = None,
|
|
26
24
|
video_encoding: Literal["mp4", "avi"] = "mp4",
|
|
27
25
|
initial_pause_frames: int = 1,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multi-agent-rlenv
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.5.0
|
|
4
4
|
Summary: A strongly typed Multi-Agent Reinforcement Learning framework
|
|
5
5
|
Project-URL: repository, https://github.com/yamoling/multi-agent-rlenv
|
|
6
6
|
Author-email: Yannick Molinghen <yannick.molinghen@ulb.be>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
marlenv/__init__.py,sha256=PDJGtS3Psbiif5tc-PyUCfIju4pSlc6ukb-if6rbOv0,3656
|
|
2
|
+
marlenv/env_builder.py,sha256=RJoHJLYAUE1ausAoJiRC3fUxyxpH1WRJf7Sdm2ml-uk,5517
|
|
3
|
+
marlenv/env_pool.py,sha256=nCEBkGQU62fcvCAANyAqY8gCFjYlVnSCg-V3Fhx00yc,933
|
|
4
|
+
marlenv/exceptions.py,sha256=gJUC_2rVAvOfK_ypVFc7Myh-pIfSU3To38VBVS_0rZA,1179
|
|
5
|
+
marlenv/mock_env.py,sha256=kKvTdZl4_xSTTI9V6otZ1P709sfPYrqZSbbZaTip9iI,4684
|
|
6
|
+
marlenv/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
marlenv/adapters/__init__.py,sha256=rWiqQOqTx3kVL5ZkPo3rkczrlQBBhQbU55zGI26SEeY,929
|
|
8
|
+
marlenv/adapters/gym_adapter.py,sha256=Rx8ZnHW0XEwZzRT53BdDP1f4CtNp2tATAYZ0BbtBbd0,2863
|
|
9
|
+
marlenv/adapters/overcooked_adapter.py,sha256=0-5sfKHGjmM4eYtbydsENMXV2Qx4WVGlvJl7MFZSaj8,9123
|
|
10
|
+
marlenv/adapters/pettingzoo_adapter.py,sha256=w9Ta-X4L_6ZXdDGmREOdcU0vpLR8lGP__s49DyK3dk8,2852
|
|
11
|
+
marlenv/adapters/pymarl_adapter.py,sha256=2s7EY31s1hrml3q-BBaXo_eDMXTjkebozZPvzsgrb9c,3353
|
|
12
|
+
marlenv/adapters/smac_adapter.py,sha256=8uWC7YKsaSXeTS8AUhpGOKvrWMbVEQT2-pml5BaFUB0,8343
|
|
13
|
+
marlenv/models/__init__.py,sha256=uihmRs71Gg5z7Bvau_xtaQVg7xEtX8sTzi74bIHL5P0,443
|
|
14
|
+
marlenv/models/env.py,sha256=KB3-LcvIbGG-78L8ZavfjKykoO85FvhZjs5lJQKvxE0,7813
|
|
15
|
+
marlenv/models/episode.py,sha256=IF3-8YV0tHsIjTYZUOlHmX_IyjnrrzTWk-HPk_mwcR4,15100
|
|
16
|
+
marlenv/models/observation.py,sha256=kAmh1hIoC2TGrZlGVzV0y4TXXCSrI7gcmG0raeoncYk,3153
|
|
17
|
+
marlenv/models/spaces.py,sha256=v7jnhPfj7vq7DFFJpSbQEYe4NGLLlj_bj2pzvvSBX7Y,7777
|
|
18
|
+
marlenv/models/state.py,sha256=958PXTHadi3gtRnhGgcGtqBnF44R11kdcx62NN2gwxA,1717
|
|
19
|
+
marlenv/models/step.py,sha256=LKGAV2Cu-k9Gz1hwrfvGx51l8axtQRqDE9WVL5r2A1Q,3037
|
|
20
|
+
marlenv/models/transition.py,sha256=UkJVRNxZoyRkjE7YmKtUf_4xA7cOEh20O60dTldbvys,5070
|
|
21
|
+
marlenv/utils/__init__.py,sha256=C3qhvkVwctBP8mG3G5nkAZ5DKfErVRkdbHo7oeWVsM0,209
|
|
22
|
+
marlenv/utils/schedule.py,sha256=slhtpQiBHSUNyPmSkKb2yBgiHJqPhoPxa33GxvyV8Jc,8565
|
|
23
|
+
marlenv/wrappers/__init__.py,sha256=wl23NUYcl0vPJb2QLpe4Xj8ZocUIOarAZX8CgWqdSQE,808
|
|
24
|
+
marlenv/wrappers/agent_id_wrapper.py,sha256=9qHV3LMQ4AjcDCSuvQhz5h9hUf7Xtrdi2sIxmNZk5NA,1126
|
|
25
|
+
marlenv/wrappers/available_actions_mask.py,sha256=OMyt2KntsR8JA2RuRgvwdzqzPe-_H-KKkbUUJfe_mks,1404
|
|
26
|
+
marlenv/wrappers/available_actions_wrapper.py,sha256=_HRl9zsjJgSrLgVuT-BjpnnfrfM8ic6wBUWlg67uCx4,926
|
|
27
|
+
marlenv/wrappers/blind_wrapper.py,sha256=In4zhygJqWf5ibwq80kf5NtE1fRtHGw-IpAPvBUs1HU,765
|
|
28
|
+
marlenv/wrappers/centralised.py,sha256=1QWxjzLecC3vlf0G3EVC58_v1uR2shluzUa_9HrcN9o,3131
|
|
29
|
+
marlenv/wrappers/delayed_rewards.py,sha256=P8az9rYmu67OzL1ZEFqfTQcCxRI_AXKXrKUBQ3pURl8,1108
|
|
30
|
+
marlenv/wrappers/last_action_wrapper.py,sha256=QVepSLcWExqACwKvAM0G2LALapSoWdd7YHmah2LZ3vE,2603
|
|
31
|
+
marlenv/wrappers/paddings.py,sha256=0aAi7RP1yL8I5mR4Oxzl9-itKys88mgsPjqe7q-frbk,2024
|
|
32
|
+
marlenv/wrappers/penalty_wrapper.py,sha256=3YBoUV6ETksZ8tFEOq1WYXvPs3ejMAehE6-QA8e4JOE,864
|
|
33
|
+
marlenv/wrappers/rlenv_wrapper.py,sha256=9k0bH5oHfnxnQYXL5PIRVbJfiTP_jnh2c9stMC8bA1o,3018
|
|
34
|
+
marlenv/wrappers/time_limit.py,sha256=GxbxcbfFyuVg14ylQU2C_cjmV9q4uDAt5wepfgX_PyM,3976
|
|
35
|
+
marlenv/wrappers/video_recorder.py,sha256=ucBQSNRPqDr-2mYxrTCqlrWcxSWtSJ7XlRC9-LdukBM,2535
|
|
36
|
+
multi_agent_rlenv-3.5.0.dist-info/METADATA,sha256=XiqIH0A9YzbwckC_1hf8KbOI99LRDyYY--rRqAoMxZE,4897
|
|
37
|
+
multi_agent_rlenv-3.5.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
38
|
+
multi_agent_rlenv-3.5.0.dist-info/licenses/LICENSE,sha256=_eeiGVoIJ7kYt6l1zbIvSBQppTnw0mjnYk1lQ4FxEjE,1074
|
|
39
|
+
multi_agent_rlenv-3.5.0.dist-info/RECORD,,
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
marlenv/__init__.py,sha256=u27-QdgKv_1k3uR0oCBN7wcX2jRPmpICbJz1SaZ-f-A,3741
|
|
2
|
-
marlenv/env_builder.py,sha256=s_lQANqP3iNc8nmcr3CanRVsExnn9qh0ihh4lFr0c4c,5560
|
|
3
|
-
marlenv/env_pool.py,sha256=R3WIrnQ5Zvff4HR1ecfkDmuO2zl7v1ywQ0K2_nvWFzs,1070
|
|
4
|
-
marlenv/exceptions.py,sha256=gJUC_2rVAvOfK_ypVFc7Myh-pIfSU3To38VBVS_0rZA,1179
|
|
5
|
-
marlenv/mock_env.py,sha256=qB0fYFIfbopJf7Va8kCeVI5vsOy1-2JdEYe9gdV1Ruw,4761
|
|
6
|
-
marlenv/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
marlenv/adapters/__init__.py,sha256=rWiqQOqTx3kVL5ZkPo3rkczrlQBBhQbU55zGI26SEeY,929
|
|
8
|
-
marlenv/adapters/gym_adapter.py,sha256=6CBEjANViTJBTUBmtVyrhJrzjBJxNs_4hmMnXXG2mkU,2906
|
|
9
|
-
marlenv/adapters/overcooked_adapter.py,sha256=Ehwwha_gh9wsQWBVLvwKYR_P6WUco-W2LoxumVjXSPQ,8289
|
|
10
|
-
marlenv/adapters/pettingzoo_adapter.py,sha256=4F1au6uctsqRhGfcZOeDRH-8hmrFXnA5xH1Z1Pnek3s,2870
|
|
11
|
-
marlenv/adapters/pymarl_adapter.py,sha256=x__E90XpFbfSWhnBHtkcD6WYkmKki1LByNbUFoDBUcg,3416
|
|
12
|
-
marlenv/adapters/smac_adapter.py,sha256=fOfKo1hL4ioKtM5qQGcwtfdkdwUEACjAZqaGmkoQUcU,8373
|
|
13
|
-
marlenv/models/__init__.py,sha256=9M-rnj94nsdyO4zm_VEtyYBmde3iD2_eIY4bMB-IqCo,555
|
|
14
|
-
marlenv/models/env.py,sha256=S0Yd75X4O7desCHrsdEdz045Aw1Zrtu-pkfz5obYQJI,7433
|
|
15
|
-
marlenv/models/episode.py,sha256=ZGBx6lb2snrUhDgFEwHPV1dp-XvMA7k4quQVUNQxsP0,15140
|
|
16
|
-
marlenv/models/observation.py,sha256=kAmh1hIoC2TGrZlGVzV0y4TXXCSrI7gcmG0raeoncYk,3153
|
|
17
|
-
marlenv/models/spaces.py,sha256=pw8Sum_fHBkR-lyfTqUij4azMCNm8oBZrYZe4WVR7rA,7652
|
|
18
|
-
marlenv/models/state.py,sha256=958PXTHadi3gtRnhGgcGtqBnF44R11kdcx62NN2gwxA,1717
|
|
19
|
-
marlenv/models/step.py,sha256=LKGAV2Cu-k9Gz1hwrfvGx51l8axtQRqDE9WVL5r2A1Q,3037
|
|
20
|
-
marlenv/models/transition.py,sha256=2vvuhSSq911weCXio9nuyfsLVh_7ORSU_znOqpLLdLg,5107
|
|
21
|
-
marlenv/wrappers/__init__.py,sha256=wl23NUYcl0vPJb2QLpe4Xj8ZocUIOarAZX8CgWqdSQE,808
|
|
22
|
-
marlenv/wrappers/agent_id_wrapper.py,sha256=oTIAYxKD1JtHfrZN43mf-3e8pxjd0nxm07vxs3BfrGY,1187
|
|
23
|
-
marlenv/wrappers/available_actions_mask.py,sha256=JoCJ9eqHlkY8wfY-oaceEi8yp1Efs1iK6IO2Ibf9oZA,1468
|
|
24
|
-
marlenv/wrappers/available_actions_wrapper.py,sha256=9UTwP3LXvncBITJeQnEqwiP_lj-ipULACkGs-2QbMrI,1026
|
|
25
|
-
marlenv/wrappers/blind_wrapper.py,sha256=YEayRf_dclhzx6LXsasZ-IM7C71kyPb1gV0pHYYfjig,857
|
|
26
|
-
marlenv/wrappers/centralised.py,sha256=E2Saezwfw9uWX4R9jDgH3iQLW8c_h2Y1TdtmUi9nIvs,3226
|
|
27
|
-
marlenv/wrappers/delayed_rewards.py,sha256=6oGJe-L_gGI-pQMResbkjsMDvXpni2SQvnTQ6wsZqGo,1170
|
|
28
|
-
marlenv/wrappers/last_action_wrapper.py,sha256=u7a3Da5sg_gMrwZ3SE7PAwt2m9xSYYDKjngQyOmcJ74,2886
|
|
29
|
-
marlenv/wrappers/paddings.py,sha256=VQOF4zaP61R74tQ4XTTT-FkK2QSy31AukICnqCy6zB0,2119
|
|
30
|
-
marlenv/wrappers/penalty_wrapper.py,sha256=v4_H8OEN2-yujLzRb6P7W7KwmXHtjAFsxcdp3SbnKpo,996
|
|
31
|
-
marlenv/wrappers/rlenv_wrapper.py,sha256=C2XekgBIM4x3Wa2Mtsn7rihRD4ymC2hORI473Af0sfw,2962
|
|
32
|
-
marlenv/wrappers/time_limit.py,sha256=CDIMMJPMyIDHSFxUJaC7nb7Kd86-07NgZeFhrpZm82o,3985
|
|
33
|
-
marlenv/wrappers/video_recorder.py,sha256=d5AFu6qHqby9mOcBsYWYPxAPiK1vtnfMYdZ81AnCekI,2624
|
|
34
|
-
multi_agent_rlenv-3.3.7.dist-info/METADATA,sha256=zAUWp4QbbEnxN7EVkJfJAXKYEjAcfUIKaogM43fAjR8,4897
|
|
35
|
-
multi_agent_rlenv-3.3.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
36
|
-
multi_agent_rlenv-3.3.7.dist-info/licenses/LICENSE,sha256=_eeiGVoIJ7kYt6l1zbIvSBQppTnw0mjnYk1lQ4FxEjE,1074
|
|
37
|
-
multi_agent_rlenv-3.3.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|