{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/rotate-regret-driven-open-ended-training-for","title":"ROTATE: Regret-driven Open-ended Training for Ad Hoc Teamwork","arxiv_id":"2505.23686","date":"2025-05-29","proceeding":null,"authors":["Caroline Wang","Arrasy Rahman","Jiaxun Cui","Yoonchang Sung","Peter Stone"],"abstract":"Developing AI agents capable of collaborating with previously unseen partners is a fundamental generalization challenge in multi-agent learning, known as Ad Hoc Teamwork (AHT). Existing AHT approaches typically adopt a two-stage pipeline, where first, a fixed population of teammates is generated with the idea that they should be representative of the teammates that will be seen at deployment time, and second, an AHT agent is trained to collaborate well with agents in the population. To date, the research community has focused on designing separate algorithms for each stage. This separation has led to algorithms that generate teammate pools with limited coverage of possible behaviors, and that ignore whether the generated teammates are easy to learn from for the AHT agent. Furthermore, algorithms for training AHT agents typically treat the set of training teammates as static, thus attempting to generalize to previously unseen partner agents without assuming any control over the distribution of training teammates. In this paper, we present a unified framework for AHT by reformulating the problem as an open-ended learning process between an ad hoc agent and an adversarial teammate generator. We introduce ROTATE, a regret-driven, open-ended training algorithm that alternates between improving the AHT agent and generating teammates that probe its deficiencies. Extensive experiments across diverse AHT environments demonstrate that ROTATE significantly outperforms baselines at generalizing to an unseen set of evaluation teammates, thus establishing a new standard for robust and generalizable teamwork.","url_abs":"https://arxiv.org/abs/2505.23686v1","url_pdf":"https://arxiv.org/pdf/2505.23686v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"rotate-regret-driven-open-ended-training-for","repo_url":"https://github.com/carolinewang01/rotate","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[],"methods":[{"method_slug":"adopt","method_name":"ADOPT"},{"method_slug":"hoc","method_name":"HOC"},{"method_slug":"set","method_name":"SET"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2505.23686","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2505.23686"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/carolinewang01/rotate","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":9},"by_repo_kind":{"official":{"samples":9,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"e526609d39fa7bc4","entry":"add_partners_to_buffer","repo":"carolinewang01/rotate","repo_kind":"official","path":"agents/population_buffer.py","file_url":"https://github.com/carolinewang01/rotate/blob/HEAD/agents/population_buffer.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e526609d39fa7bc4"}},{"code_sha256_prefix":"e5722611d196b926","entry":"compute_partner_num_updates","repo":"carolinewang01/rotate","repo_kind":"official","path":"open_ended_training/rotate_without_pop.py","file_url":"https://github.com/carolinewang01/rotate/blob/HEAD/open_ended_training/rotate_without_pop.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e5722611d196b926"}},{"code_sha256_prefix":"2223ab0b0abedc76","entry":"create_idx_labels","repo":"carolinewang01/rotate","repo_kind":"official","path":"common/agent_loader_from_config.py","file_url":"https://github.com/carolinewang01/rotate/blob/HEAD/common/agent_loader_from_config.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2223ab0b0abedc76"}},{"code_sha256_prefix":"f11150645020836f","entry":"get_final_buffer","repo":"carolinewang01/rotate","repo_kind":"official","path":"agents/population_buffer.py","file_url":"https://github.com/carolinewang01/rotate/blob/HEAD/agents/population_buffer.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f11150645020836f"}},{"code_sha256_prefix":"05f3fb444244a522","entry":"init_VinvB","repo":"carolinewang01/rotate","repo_kind":"official","path":"agents/s5_actor_critic.py","file_url":"https://github.com/carolinewang01/rotate/blob/HEAD/agents/s5_actor_critic.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"05f3fb444244a522"}},{"code_sha256_prefix":"f8ff84b2199c4f7b","entry":"init_log_steps","repo":"carolinewang01/rotate","repo_kind":"official","path":"agents/s5_actor_critic.py","file_url":"https://github.com/carolinewang01/rotate/blob/HEAD/agents/s5_actor_critic.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f8ff84b2199c4f7b"}},{"code_sha256_prefix":"15e4bcf8543805f7","entry":"load","repo":"carolinewang01/rotate","repo_kind":"official","path":"vis/appendix_figures/rotate_xp_heatmaps.py","file_url":"https://github.com/carolinewang01/rotate/blob/HEAD/vis/appendix_figures/rotate_xp_heatmaps.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"15e4bcf8543805f7"}},{"code_sha256_prefix":"5a9910740c37faa5","entry":"log_step_initializer","repo":"carolinewang01/rotate","repo_kind":"official","path":"agents/s5_actor_critic.py","file_url":"https://github.com/carolinewang01/rotate/blob/HEAD/agents/s5_actor_critic.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5a9910740c37faa5"}},{"code_sha256_prefix":"5585791143a5dee8","entry":"process_idx_list","repo":"carolinewang01/rotate","repo_kind":"official","path":"common/agent_loader_from_config.py","file_url":"https://github.com/carolinewang01/rotate/blob/HEAD/common/agent_loader_from_config.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5585791143a5dee8"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}