cogames 0.3.65__py3-none-any.whl → 0.3.69__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.
- cogames/cli/client.py +0 -3
- cogames/cli/docsync/docsync.py +7 -1
- cogames/cli/mission.py +44 -19
- cogames/cli/policy.py +26 -10
- cogames/cli/submit.py +201 -495
- cogames/cli/utils.py +5 -0
- cogames/cogs_vs_clips/clip_difficulty.py +57 -0
- cogames/cogs_vs_clips/clips.py +23 -6
- cogames/cogs_vs_clips/cog.py +16 -5
- cogames/cogs_vs_clips/cogsguard_curriculum.py +122 -0
- cogames/cogs_vs_clips/cogsguard_tutorial.py +5 -5
- cogames/cogs_vs_clips/config.py +1 -1
- cogames/cogs_vs_clips/docs/cogs_vs_clips_mapgen.md +2 -3
- cogames/cogs_vs_clips/evals/README.md +8 -32
- cogames/cogs_vs_clips/evals/diagnostic_evals.py +0 -1
- cogames/cogs_vs_clips/evals/difficulty_variants.py +7 -10
- cogames/cogs_vs_clips/mission.py +38 -10
- cogames/cogs_vs_clips/missions.py +1 -1
- cogames/cogs_vs_clips/reward_variants.py +173 -0
- cogames/cogs_vs_clips/sites.py +6 -5
- cogames/cogs_vs_clips/stations.py +13 -9
- cogames/cogs_vs_clips/team.py +3 -1
- cogames/cogs_vs_clips/terrain.py +2 -2
- cogames/cogs_vs_clips/variants.py +175 -4
- cogames/cogs_vs_clips/weather.py +52 -0
- cogames/docs/SCRIPTED_AGENT.md +3 -3
- cogames/evaluate.py +4 -2
- cogames/main.py +420 -84
- cogames/maps/canidate1_1000.map +1 -1
- cogames/maps/canidate1_1000_stations.map +2 -2
- cogames/maps/canidate1_500.map +1 -1
- cogames/maps/canidate1_500_stations.map +2 -2
- cogames/maps/canidate2_1000.map +1 -1
- cogames/maps/canidate2_1000_stations.map +2 -2
- cogames/maps/canidate2_500.map +1 -1
- cogames/maps/canidate2_500_stations.map +1 -1
- cogames/maps/canidate3_1000.map +1 -1
- cogames/maps/canidate3_1000_stations.map +2 -2
- cogames/maps/canidate3_500.map +1 -1
- cogames/maps/canidate3_500_stations.map +2 -2
- cogames/maps/canidate4_500.map +1 -1
- cogames/maps/canidate4_500_stations.map +2 -2
- cogames/maps/cave_base_50.map +2 -2
- cogames/maps/diagnostic_evals/diagnostic_agile.map +2 -2
- cogames/maps/diagnostic_evals/diagnostic_agile_hard.map +2 -2
- cogames/maps/diagnostic_evals/diagnostic_charge_up.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_charge_up_hard.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_chest_navigation1.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_chest_navigation1_hard.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_chest_navigation2.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_chest_navigation2_hard.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_chest_navigation3.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_chest_navigation3_hard.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_chest_near.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_chest_search.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_chest_search_hard.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_extract_lab.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_extract_lab_hard.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_memory.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_memory_hard.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_radial.map +2 -2
- cogames/maps/diagnostic_evals/diagnostic_radial_hard.map +2 -2
- cogames/maps/diagnostic_evals/diagnostic_resource_lab.map +6 -6
- cogames/maps/diagnostic_evals/diagnostic_unclip.map +6 -6
- cogames/maps/evals/eval_balanced_spread.map +6 -6
- cogames/maps/evals/eval_clip_oxygen.map +6 -6
- cogames/maps/evals/eval_collect_resources.map +6 -6
- cogames/maps/evals/eval_collect_resources_hard.map +6 -6
- cogames/maps/evals/eval_collect_resources_medium.map +6 -6
- cogames/maps/evals/eval_divide_and_conquer.map +6 -6
- cogames/maps/evals/eval_energy_starved.map +6 -6
- cogames/maps/evals/eval_multi_coordinated_collect_hard.map +6 -6
- cogames/maps/evals/eval_oxygen_bottleneck.map +6 -6
- cogames/maps/evals/eval_single_use_world.map +6 -6
- cogames/maps/evals/extractor_hub_100x100.map +6 -6
- cogames/maps/evals/extractor_hub_30x30.map +6 -6
- cogames/maps/evals/extractor_hub_50x50.map +6 -6
- cogames/maps/evals/extractor_hub_70x70.map +6 -6
- cogames/maps/evals/extractor_hub_80x80.map +6 -6
- cogames/maps/machina_100_stations.map +2 -2
- cogames/maps/machina_200_stations.map +2 -2
- cogames/maps/machina_200_stations_small.map +2 -2
- cogames/maps/machina_eval_exp01.map +2 -2
- cogames/maps/machina_eval_template_large.map +2 -2
- cogames/maps/machinatrainer4agents.map +2 -2
- cogames/maps/machinatrainer4agentsbase.map +2 -2
- cogames/maps/machinatrainerbig.map +2 -2
- cogames/maps/machinatrainersmall.map +2 -2
- cogames/maps/planky_evals/aligner_avoid_aoe.map +6 -6
- cogames/maps/planky_evals/aligner_full_cycle.map +6 -6
- cogames/maps/planky_evals/aligner_gear.map +6 -6
- cogames/maps/planky_evals/aligner_hearts.map +6 -6
- cogames/maps/planky_evals/aligner_junction.map +6 -6
- cogames/maps/planky_evals/exploration_distant.map +6 -6
- cogames/maps/planky_evals/maze.map +6 -6
- cogames/maps/planky_evals/miner_best_resource.map +6 -6
- cogames/maps/planky_evals/miner_deposit.map +6 -6
- cogames/maps/planky_evals/miner_extract.map +6 -6
- cogames/maps/planky_evals/miner_full_cycle.map +6 -6
- cogames/maps/planky_evals/miner_gear.map +6 -6
- cogames/maps/planky_evals/multi_role.map +6 -6
- cogames/maps/planky_evals/resource_chain.map +6 -6
- cogames/maps/planky_evals/scout_explore.map +6 -6
- cogames/maps/planky_evals/scout_gear.map +6 -6
- cogames/maps/planky_evals/scrambler_full_cycle.map +6 -6
- cogames/maps/planky_evals/scrambler_gear.map +6 -6
- cogames/maps/planky_evals/scrambler_target.map +6 -6
- cogames/maps/planky_evals/stuck_corridor.map +6 -6
- cogames/maps/planky_evals/survive_retreat.map +6 -6
- cogames/maps/training_facility_clipped.map +2 -2
- cogames/maps/training_facility_open_1.map +2 -2
- cogames/maps/training_facility_open_2.map +2 -2
- cogames/maps/training_facility_open_3.map +2 -2
- cogames/maps/training_facility_tight_4.map +2 -2
- cogames/maps/training_facility_tight_5.map +2 -2
- cogames/maps/vanilla_large.map +2 -2
- cogames/maps/vanilla_small.map +2 -2
- cogames/pickup.py +6 -5
- cogames/play.py +14 -16
- cogames/policy/nim_agents/__init__.py +0 -2
- cogames/policy/nim_agents/agents.py +0 -11
- cogames/policy/starter_agent.py +4 -1
- {cogames-0.3.65.dist-info → cogames-0.3.69.dist-info}/METADATA +45 -29
- cogames-0.3.69.dist-info/RECORD +160 -0
- metta_alo/scoring.py +7 -7
- cogames-0.3.65.dist-info/RECORD +0 -160
- metta_alo/job_specs.py +0 -17
- metta_alo/policy.py +0 -16
- metta_alo/pure_single_episode_runner.py +0 -75
- metta_alo/rollout.py +0 -322
- {cogames-0.3.65.dist-info → cogames-0.3.69.dist-info}/WHEEL +0 -0
- {cogames-0.3.65.dist-info → cogames-0.3.69.dist-info}/entry_points.txt +0 -0
- {cogames-0.3.65.dist-info → cogames-0.3.69.dist-info}/licenses/LICENSE +0 -0
- {cogames-0.3.65.dist-info → cogames-0.3.69.dist-info}/top_level.txt +0 -0
|
@@ -13,14 +13,14 @@ char_to_map_name:
|
|
|
13
13
|
"#": wall
|
|
14
14
|
".": empty
|
|
15
15
|
"@": agent.agent
|
|
16
|
-
"M":
|
|
17
|
-
"S":
|
|
18
|
-
"A":
|
|
19
|
-
"X":
|
|
16
|
+
"M": c:miner
|
|
17
|
+
"S": c:scout
|
|
18
|
+
"A": c:aligner
|
|
19
|
+
"X": c:scrambler
|
|
20
20
|
"C": carbon_extractor
|
|
21
21
|
"O": oxygen_extractor
|
|
22
22
|
"G": germanium_extractor
|
|
23
23
|
"I": silicon_extractor
|
|
24
24
|
"J": junction
|
|
25
|
-
"&": hub
|
|
26
|
-
"=": chest
|
|
25
|
+
"&": c:hub
|
|
26
|
+
"=": c:chest
|
|
@@ -19,14 +19,14 @@ char_to_map_name:
|
|
|
19
19
|
"#": wall
|
|
20
20
|
".": empty
|
|
21
21
|
"@": agent.agent
|
|
22
|
-
"M":
|
|
23
|
-
"S":
|
|
24
|
-
"A":
|
|
25
|
-
"X":
|
|
22
|
+
"M": c:miner
|
|
23
|
+
"S": c:scout
|
|
24
|
+
"A": c:aligner
|
|
25
|
+
"X": c:scrambler
|
|
26
26
|
"C": carbon_extractor
|
|
27
27
|
"O": oxygen_extractor
|
|
28
28
|
"G": germanium_extractor
|
|
29
29
|
"I": silicon_extractor
|
|
30
30
|
"J": junction
|
|
31
|
-
"&": hub
|
|
32
|
-
"=": chest
|
|
31
|
+
"&": c:hub
|
|
32
|
+
"=": c:chest
|
|
@@ -13,14 +13,14 @@ char_to_map_name:
|
|
|
13
13
|
"#": wall
|
|
14
14
|
".": empty
|
|
15
15
|
"@": agent.agent
|
|
16
|
-
"M":
|
|
17
|
-
"S":
|
|
18
|
-
"A":
|
|
19
|
-
"X":
|
|
16
|
+
"M": c:miner
|
|
17
|
+
"S": c:scout
|
|
18
|
+
"A": c:aligner
|
|
19
|
+
"X": c:scrambler
|
|
20
20
|
"C": carbon_extractor
|
|
21
21
|
"O": oxygen_extractor
|
|
22
22
|
"G": germanium_extractor
|
|
23
23
|
"I": silicon_extractor
|
|
24
24
|
"J": junction
|
|
25
|
-
"&": hub
|
|
26
|
-
"=": chest
|
|
25
|
+
"&": c:hub
|
|
26
|
+
"=": c:chest
|
cogames/maps/vanilla_large.map
CHANGED
cogames/maps/vanilla_small.map
CHANGED
cogames/pickup.py
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import random
|
|
3
4
|
from dataclasses import dataclass
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
from typing import Optional
|
|
6
7
|
|
|
7
|
-
import numpy as np
|
|
8
8
|
import typer
|
|
9
9
|
from rich.console import Console
|
|
10
10
|
from rich.table import Table
|
|
11
11
|
|
|
12
|
-
from metta_alo.rollout import run_multi_episode_rollout
|
|
13
12
|
from metta_alo.scoring import (
|
|
14
13
|
VorTotals,
|
|
15
14
|
allocate_counts,
|
|
@@ -20,6 +19,7 @@ from metta_alo.scoring import (
|
|
|
20
19
|
from mettagrid import MettaGridConfig
|
|
21
20
|
from mettagrid.mapgen.mapgen import MapGen
|
|
22
21
|
from mettagrid.policy.policy import PolicySpec
|
|
22
|
+
from mettagrid.runner.rollout import run_multi_episode_rollout
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
@dataclass(frozen=True)
|
|
@@ -48,6 +48,7 @@ def pickup(
|
|
|
48
48
|
map_seed: Optional[int],
|
|
49
49
|
action_timeout_ms: int,
|
|
50
50
|
save_replay_dir: Optional[Path],
|
|
51
|
+
device: Optional[str] = None,
|
|
51
52
|
candidate_label: Optional[str] = None,
|
|
52
53
|
pool_labels: Optional[list[str]] = None,
|
|
53
54
|
) -> None:
|
|
@@ -77,11 +78,11 @@ def pickup(
|
|
|
77
78
|
|
|
78
79
|
results: list[PickupScenarioResult] = []
|
|
79
80
|
totals = VorTotals()
|
|
80
|
-
rng =
|
|
81
|
+
rng = random.Random(seed)
|
|
81
82
|
|
|
82
83
|
with typer.progressbar(scenarios, label="Simulating") as progress:
|
|
83
84
|
for scenario in progress:
|
|
84
|
-
assignments =
|
|
85
|
+
assignments = [i for i, c in enumerate([scenario.candidate_count, *scenario.pool_counts]) for _ in range(c)]
|
|
85
86
|
|
|
86
87
|
rollout, replay_paths = run_multi_episode_rollout(
|
|
87
88
|
policy_specs=policy_specs,
|
|
@@ -92,7 +93,7 @@ def pickup(
|
|
|
92
93
|
max_action_time_ms=action_timeout_ms,
|
|
93
94
|
replay_dir=save_replay_dir,
|
|
94
95
|
rng=rng,
|
|
95
|
-
device=
|
|
96
|
+
device=device,
|
|
96
97
|
)
|
|
97
98
|
summary = summarize_vor_scenario(
|
|
98
99
|
rollout,
|
cogames/play.py
CHANGED
|
@@ -9,11 +9,11 @@ from rich import box
|
|
|
9
9
|
from rich.console import Console
|
|
10
10
|
from rich.table import Table
|
|
11
11
|
|
|
12
|
-
from metta_alo.pure_single_episode_runner import PureSingleEpisodeResult
|
|
13
|
-
from metta_alo.rollout import run_single_episode
|
|
14
12
|
from mettagrid import MettaGridConfig
|
|
15
13
|
from mettagrid.policy.policy import PolicySpec
|
|
16
14
|
from mettagrid.renderer.renderer import RenderMode
|
|
15
|
+
from mettagrid.runner.rollout import run_episode_local
|
|
16
|
+
from mettagrid.runner.types import PureSingleEpisodeResult
|
|
17
17
|
|
|
18
18
|
logger = logging.getLogger("cogames.play")
|
|
19
19
|
|
|
@@ -162,8 +162,10 @@ def play(
|
|
|
162
162
|
policy_spec: PolicySpec,
|
|
163
163
|
game_name: str,
|
|
164
164
|
seed: int = 42,
|
|
165
|
+
device: str = "cpu",
|
|
165
166
|
render_mode: RenderMode = "gui",
|
|
166
167
|
save_replay: Optional[Path] = None,
|
|
168
|
+
autostart: bool = False,
|
|
167
169
|
) -> None:
|
|
168
170
|
"""Play a single game episode with a policy.
|
|
169
171
|
|
|
@@ -185,20 +187,16 @@ def play(
|
|
|
185
187
|
save_replay.mkdir(parents=True, exist_ok=True)
|
|
186
188
|
replay_path = save_replay / f"{uuid.uuid4()}.json.z"
|
|
187
189
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
)
|
|
199
|
-
except KeyboardInterrupt:
|
|
200
|
-
logger.info("Interrupted; ending episode early.")
|
|
201
|
-
return
|
|
190
|
+
results, _replay = run_episode_local(
|
|
191
|
+
policy_specs=[policy_spec],
|
|
192
|
+
assignments=[0] * env_cfg.game.num_agents,
|
|
193
|
+
env=env_cfg,
|
|
194
|
+
replay_path=replay_path,
|
|
195
|
+
seed=seed,
|
|
196
|
+
device=device,
|
|
197
|
+
render_mode=render_mode,
|
|
198
|
+
autostart=autostart,
|
|
199
|
+
)
|
|
202
200
|
|
|
203
201
|
# Print summary
|
|
204
202
|
console.print("\n[bold green]Episode Complete![/bold green]")
|
|
@@ -13,7 +13,6 @@ try:
|
|
|
13
13
|
import cogames.policy.nim_agents.agents as agents # noqa: F401
|
|
14
14
|
from cogames.policy.nim_agents.agents import ( # noqa: F401
|
|
15
15
|
CogsguardAlignAllAgentsMultiPolicy,
|
|
16
|
-
LadyBugAgentsMultiPolicy,
|
|
17
16
|
RaceCarAgentsMultiPolicy,
|
|
18
17
|
RandomAgentsMultiPolicy,
|
|
19
18
|
ThinkyAgentsMultiPolicy,
|
|
@@ -30,6 +29,5 @@ __all__ = [
|
|
|
30
29
|
"RandomAgentsMultiPolicy",
|
|
31
30
|
"ThinkyAgentsMultiPolicy",
|
|
32
31
|
"RaceCarAgentsMultiPolicy",
|
|
33
|
-
"LadyBugAgentsMultiPolicy",
|
|
34
32
|
"CogsguardAlignAllAgentsMultiPolicy",
|
|
35
33
|
]
|
|
@@ -26,7 +26,6 @@ end_measure: Callable[[], None]
|
|
|
26
26
|
ThinkyAgentsMultiPolicy: type[MultiAgentPolicy]
|
|
27
27
|
RandomAgentsMultiPolicy: type[MultiAgentPolicy]
|
|
28
28
|
RaceCarAgentsMultiPolicy: type[MultiAgentPolicy]
|
|
29
|
-
LadyBugAgentsMultiPolicy: type[MultiAgentPolicy]
|
|
30
29
|
CogsguardAgentsMultiPolicy: type[MultiAgentPolicy]
|
|
31
30
|
CogsguardAlignAllAgentsMultiPolicy: type[MultiAgentPolicy]
|
|
32
31
|
|
|
@@ -37,9 +36,6 @@ try:
|
|
|
37
36
|
from cogames_agents.policy.nim_agents.agents import (
|
|
38
37
|
CogsguardAlignAllAgentsMultiPolicy as _CogsguardAlignAllAgentsMultiPolicy,
|
|
39
38
|
)
|
|
40
|
-
from cogames_agents.policy.nim_agents.agents import (
|
|
41
|
-
LadyBugAgentsMultiPolicy as _LadyBugAgentsMultiPolicy,
|
|
42
|
-
)
|
|
43
39
|
from cogames_agents.policy.nim_agents.agents import (
|
|
44
40
|
RaceCarAgentsMultiPolicy as _RaceCarAgentsMultiPolicy,
|
|
45
41
|
)
|
|
@@ -85,10 +81,6 @@ except (ModuleNotFoundError, OSError) as exc:
|
|
|
85
81
|
def __init__(self, policy_env_info: PolicyEnvInterface, **_: object):
|
|
86
82
|
_raise_missing_nim_agents()
|
|
87
83
|
|
|
88
|
-
class _MissingLadyBugAgentsMultiPolicy(MultiAgentPolicy):
|
|
89
|
-
def __init__(self, policy_env_info: PolicyEnvInterface, **_: object):
|
|
90
|
-
_raise_missing_nim_agents()
|
|
91
|
-
|
|
92
84
|
class _MissingCogsguardAgentsMultiPolicy(MultiAgentPolicy):
|
|
93
85
|
def __init__(self, policy_env_info: PolicyEnvInterface, **_: object):
|
|
94
86
|
_raise_missing_nim_agents()
|
|
@@ -102,7 +94,6 @@ except (ModuleNotFoundError, OSError) as exc:
|
|
|
102
94
|
ThinkyAgentsMultiPolicy = _MissingThinkyAgentsMultiPolicy
|
|
103
95
|
RandomAgentsMultiPolicy = _MissingRandomAgentsMultiPolicy
|
|
104
96
|
RaceCarAgentsMultiPolicy = _MissingRaceCarAgentsMultiPolicy
|
|
105
|
-
LadyBugAgentsMultiPolicy = _MissingLadyBugAgentsMultiPolicy
|
|
106
97
|
CogsguardAgentsMultiPolicy = _MissingCogsguardAgentsMultiPolicy
|
|
107
98
|
CogsguardAlignAllAgentsMultiPolicy = _MissingCogsguardAlignAllAgentsMultiPolicy
|
|
108
99
|
else:
|
|
@@ -111,7 +102,6 @@ else:
|
|
|
111
102
|
ThinkyAgentsMultiPolicy = _ThinkyAgentsMultiPolicy
|
|
112
103
|
RandomAgentsMultiPolicy = _RandomAgentsMultiPolicy
|
|
113
104
|
RaceCarAgentsMultiPolicy = _RaceCarAgentsMultiPolicy
|
|
114
|
-
LadyBugAgentsMultiPolicy = _LadyBugAgentsMultiPolicy
|
|
115
105
|
CogsguardAgentsMultiPolicy = _CogsguardAgentsMultiPolicy
|
|
116
106
|
CogsguardAlignAllAgentsMultiPolicy = _CogsguardAlignAllAgentsMultiPolicy
|
|
117
107
|
|
|
@@ -121,7 +111,6 @@ __all__ = [
|
|
|
121
111
|
"ThinkyAgentsMultiPolicy",
|
|
122
112
|
"RandomAgentsMultiPolicy",
|
|
123
113
|
"RaceCarAgentsMultiPolicy",
|
|
124
|
-
"LadyBugAgentsMultiPolicy",
|
|
125
114
|
"CogsguardAgentsMultiPolicy",
|
|
126
115
|
"CogsguardAlignAllAgentsMultiPolicy",
|
|
127
116
|
]
|
cogames/policy/starter_agent.py
CHANGED
|
@@ -93,7 +93,10 @@ class StarterCogPolicyImpl(StatefulPolicyImpl[StarterCogState]):
|
|
|
93
93
|
continue
|
|
94
94
|
if token.value not in tag_ids:
|
|
95
95
|
continue
|
|
96
|
-
|
|
96
|
+
loc = token.location
|
|
97
|
+
if loc is None:
|
|
98
|
+
continue
|
|
99
|
+
distance = abs(loc[0] - self._center[0]) + abs(loc[1] - self._center[1])
|
|
97
100
|
if distance < best_distance:
|
|
98
101
|
best_distance = distance
|
|
99
102
|
best_location = token.location
|