1 Star 0 Fork 0

杨韩 / GoBigger-Challenge-2021

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

GoBigger Challenge 2021

en / 中文

  • 2021.11.13 我们正在举办一场竞赛 —— 2021“AI球球大作战:Go-Bigger多智能体决策智能挑战赛”. 快来参与吧!

赛制说明

多智能体对抗是决策AI中重要的一部分,也是一个非常具有挑战性的难题。为了丰富多智能体对抗环境,OpenDILab研发了一款多智能体对抗竞技游戏,即GoBigger。本次大赛旨在探索多智能体博弈的研究,推动决策智能相关领域的技术人才培养,从而打造“全球领先”、“原创”、“开放”的决策AI开源技术生态。

本次大赛需要参赛选手提交他们的智能体以参加评测。我们会返回智能体的评测分数,以帮助参赛选手对提交的智能体的性能能有更正确的认识。在比赛的最后阶段,我们会对提交的智能体进行公平且完全的测试,并对各参赛队伍进行最终排名。

具体任务

本次竞赛采用 Go-Bigger 作为游戏环境。Go-Bigger 是一款多人组队竞技游戏。更多细节请参考 Go-Bigger 文档。在游戏中,每支竞赛参赛队伍控制游戏中一支队伍(每支队伍由多个玩家组成)。竞赛参赛队伍需要通过提交智能体的方式,来对游戏中的某个队伍及其所包含的玩家进行控制,通过团队配合来获取更高的分数,从而在游戏中取得更高的排名。

提交方式

竞赛为所有参赛者提供了示例代码,具体可以查看 submit。同样,竞赛也提供了一些基础代码,参赛者可以在此基础上实现对应的方法,从而得到对应的提交。

竞赛提供的 BaseSubmission 内容如下:

class BaseSubmission:

    def __init__(self, team_name, player_names):
        self.team_name = team_name
        self.player_names = player_names

    def get_actions(self, obs):
        '''
        Overview:
            You must implement this function.
        '''
        raise NotImplementedError

注意,所有的提交都应当继承 BaseSubmission 类,提交的类名称应当为 MySubmission。竞赛将会为每个提交提供 team_nameplayer_names 作为类的输入参数。team_name 代表的是该提交所控制的队伍的名称,在每一场比赛都会不一样。player_names 代表当前队伍中的所有控制的玩家的名称。竞赛在评测用户提交的时候会调用 get_actions() 以获取该提交在当前帧的 actionget_actions() 方法以 obs 作为输入(与 tutorial 相似)。例如,一个简单的 obs 例子如下:

global_state, player_state = obs

gloabl_state 包含地图尺寸,总时间,已持续时间,以及排行榜等信息。具体如下:

{
    'border': [map_width, map_height], # the map size
    'total_time': match_time, # the duration of a game
    'last_time': last_time,   # the length of time a game has been played
    'leaderboard': {
        team_name: team_size
    } # the team with its size in this game
}

player_state 包含玩家channel信息,玩家视角所在位置,玩家视角内所有出现的单位信息,当前玩家所属队伍名称。具体如下:

{
    player_name: {
        'feature_layers': list(numpy.ndarray), # features of player
        'rectangle': [left_top_x, left_top_y, right_bottom_x, right_bottom_y], # the vision's position in the map
        'overlap': {
            'food': [[position.x, position.y, radius], ...], 
            'thorns': [[position.x, position.y, radius], ...],
            'spore': [[position.x, position.y, radius], ...],
            'clone': [[[position.x, position.y, radius, player_name, team_name], ...],     
        }, # all balls' info in vision
        'team_name': team_name, # the team which this player belongs to 
    }
}

需要注意的是,竞赛只会为当前提交提供属于他的玩家的信息。例如,当前提交所控制的队伍名下有两个玩家,分别为玩家A和玩家B,同时还有玩家C属于另一队伍,那么该提交能获取到的信息只包含玩家A和玩家B的信息,不会包含玩家C的信息。

在获取到 obs 之后,提交应当返回 actions。一个简单的 actions 样例如下:

{
    player_a: actions_a,
    player_b: actions_b
}

player_aplayer_b 分别是该提交所控制的玩家名称,即 player_names 中的名称。actions_aactions_b 应当是列表类型,其内容应当与 action-space 中保持一致。

提交样例与测试

竞赛提供了 RandomSubmissionBotSubmission 以供参考。RandomSubmission 返回随机动作,而 BotSubmission 会按照一定的规则返回动作。

此外,竞赛还提供了一个简单的提交流程样例。具体细节请查看 submission_example。用户可以在这个目录下开发自己的提交。开发完成之后,可以通过目录下的测试文件进行测试(python -u test.py),以检测提交是否满足要求,并生成对应的 .tar.gz 文件用于提交。

附加材料

如果用户想要在提交中使用一些其他材料,例如模型检查点或任何其他文件,请将他们统一放置在 ./supplements 下。

最终提交

最终提交的 .tar.gz 文件解压后的目录格式如下:

- my_submission
    | - __init__.py
    | - requirements.txt
    | - my_submission.py
    | - supplements/
        | - checkpoints or other materials

注意,__init__.py 应当是一个空文件。

尝试你的第一个提交

也许你对我们的比赛还不是很熟悉,但是不用担心,我们提供了一个最简单的提交案例!尝试下面的代码快速生成一个用于提交的 my_submission.tar.gz 吧!

$ cd submit/submission_example
$ python -u test.py

上述的 test.py 会检查你的提交是否正确。如果正确,则会得到以下输出:

Success!
###################################################################
#                                                                 #
#   Now you can upload my_submission.tar.gz as your submission.   #
#                                                                 #
###################################################################

现在你只需要把 my_submission.tar.gz 提交即可!

  • 注意:此提交是由随机策略构成的。你可以检查代码并更改策略以获得更好的性能。

基于DI-engine实现提交

我们也基于 DI-engine 实现了一个提交,具体请查看 submission_example_di。用户可以将训练好的ckpt放入supplements下,即可组成一个完整的提交。

其他

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

Basic code and description for GoBigger challenge 2021. 展开 收起
Python
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/yanqwoschina/GoBigger-Challenge-2021.git
git@gitee.com:yanqwoschina/GoBigger-Challenge-2021.git
yanqwoschina
GoBigger-Challenge-2021
GoBigger-Challenge-2021
main

搜索帮助