第三问的垃圾算法
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
"""Run SevenBatch on an already authorized official Q3 practice session.
|
||||
|
||||
Does not start a practice/formal test. All actions use the documented HTTP API.
|
||||
"""
|
||||
import argparse
|
||||
from dataclasses import asdict, replace
|
||||
from datetime import datetime
|
||||
import hashlib
|
||||
import json
|
||||
from pathlib import Path
|
||||
import time
|
||||
|
||||
from benchmark_q3_search import SevenBatch, seven_points
|
||||
from mcm26b.config import ProblemConfig
|
||||
from mcm26b.protocol.client import SimulatorClient
|
||||
from mcm26b.protocol.log import SessionLog
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("--robot-id", required=True)
|
||||
parser.add_argument("--practice-confirmed", action="store_true", required=True)
|
||||
parser.add_argument("--base-url", default="http://127.0.0.1:2026")
|
||||
parser.add_argument("--output", type=Path, required=True)
|
||||
args = parser.parse_args()
|
||||
args.output.mkdir(parents=True, exist_ok=False)
|
||||
config = ProblemConfig()
|
||||
config = replace(config, session=replace(config.session, base_url=args.base_url))
|
||||
root = Path(__file__).resolve().parents[1]
|
||||
paths = [Path(__file__).resolve(), root / "scripts/benchmark_q3_search.py",
|
||||
*sorted((root / "src/mcm26b").rglob("*.py"))]
|
||||
metadata = {"source": "official_practice", "problem": 3,
|
||||
"strategy": "seven_batch", "started_local": datetime.now().astimezone().isoformat(),
|
||||
"config": asdict(config), "coverage_points": seven_points(),
|
||||
"source_sha256": {str(p.relative_to(root)): hashlib.sha256(p.read_bytes()).hexdigest()
|
||||
for p in paths}}
|
||||
def save(name, value):
|
||||
(args.output / name).write_text(json.dumps(value, ensure_ascii=False, indent=2,
|
||||
allow_nan=False) + "\n", encoding="utf-8")
|
||||
save("run_metadata.json", metadata)
|
||||
log = SessionLog(path=args.output / "session.jsonl")
|
||||
client = SimulatorClient(args.robot_id, config=config, log=log)
|
||||
started = time.perf_counter()
|
||||
summary = SevenBatch(client, config).run()
|
||||
summary.update(robot_id=args.robot_id, strategy="seven_batch",
|
||||
real_wall_s=time.perf_counter()-started)
|
||||
save("summary.json", summary)
|
||||
print(json.dumps(summary, ensure_ascii=False, indent=2))
|
||||
return 0 if summary["completed"] and summary["exit_reason"] == "user_exit" else 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user