MCPcopy Create free account
hub / github.com/CodeClash-ai/CodeClash / main

Function main

codeclash/utils/generate_confs.py:115–178  ·  view source on GitHub ↗
(models, arenas, rounds: int, simulations: int, record_ratio: float, output: Path)

Source from the content-addressed store, hash-verified

113
114
115def main(models, arenas, rounds: int, simulations: int, record_ratio: float, output: Path):
116 # Get all unique pairs of models
117 models = yaml.safe_load(open(models))
118 output.mkdir(parents=True, exist_ok=True)
119 pairs = []
120 for i in range(len(models)):
121 for j in range(i + 1, len(models)):
122 pairs.append((models[i], models[j]))
123
124 tracking_dict = {}
125 arenas_list = ARENAS if arenas == "all" else [a for a in ARENAS if a.name in arenas.split(",")]
126 if not arenas_list:
127 print(f"No valid arenas found from {arenas}. Choose from {[a.name for a in ARENAS]}.")
128 return # Stop execution if no valid arenas are found
129 for arena in arenas_list:
130 print(f"Generating {len(pairs)} configs for arena: {arena.name}")
131 tracking_dict[arena.name] = {}
132 for pair in pairs:
133 config = get_config(rounds, simulations, arena, pair)
134
135 if arena == RoboCodeArena:
136 robocode_adjustments(config, record_ratio)
137
138 pair_names = "__".join(sorted([get_name(pair[0]), get_name(pair[1])]))
139 config_name = f"{arena.name}__{pair_names}__r{rounds}__s{simulations}.yaml"
140 with open(output / config_name, "w") as f:
141 yaml.dump(
142 config,
143 f,
144 default_style=None,
145 sort_keys=False,
146 allow_unicode=True,
147 default_flow_style=False,
148 Dumper=yaml.SafeDumper,
149 )
150
151 clean_config(output / config_name)
152
153 pvp = ".".join(sorted([get_name(pair[0]), get_name(pair[1])]))
154 tracking_key = f"r{rounds}.s{simulations}.p2"
155 if tracking_key not in tracking_dict[arena.name]:
156 tracking_dict[arena.name][tracking_key] = {}
157 tracking_dict[arena.name][tracking_key][pvp] = 0
158
159 if Path(TRACKING_PATH).exists():
160 with open(TRACKING_PATH) as f:
161 tracking_dict_current = json.load(f)
162 tracking_dict.update(tracking_dict_current)
163
164 with open(TRACKING_PATH, "w") as f:
165 json.dump(tracking_dict, f, indent=2)
166 print(f"Wrote tracking file to '{TRACKING_PATH}'.")
167
168 print(f"Generated {len(pairs) * len(arenas_list)} configuration files in '{output}'.")
169 print(f"- # Models: {len(models)}")
170 print(f"- # Arenas: {len(ARENAS)}")
171 print(f"- r (rounds) {rounds}")
172 print(f"- s (sims_per_round) {simulations}")

Callers 1

generate_confs.pyFile · 0.70

Calls 4

get_configFunction · 0.85
robocode_adjustmentsFunction · 0.85
get_nameFunction · 0.85
clean_configFunction · 0.85

Tested by

no test coverage detected