mapfw的API客户端挑战
mapfw的Python项目详细描述
MAPFW客户端
这是https://mapfw.nl/MAPFW问题的客户端库
MAPFW问题
MAPFW是“Multi-agent pathfinding(with)waypoints”的缩写。 对于MAPFW问题,将为您提供:
- 网格/迷宫
- 代理起始位置列表
- 代理目标位置列表
- 代理航路点列表
这个问题的解决方案是一个路径列表,每个代理st对应一个路径
- 每个路径从相应代理的起始位置开始
- 每条路径都以相应代理的目标位置结束
- 每条路径穿过相应代理的所有航路点
- 没有路径穿过网格中的墙
- 没有两个探员在同一时间处于同一位置
- 没有两个探员能同时穿过同一条边(在相反的方向) 当没有其它解st时,该解是最优解,所有agent的路径长度之和小于该解。在
使用客户端库
安装库时使用:
pip install mapfw
然后转到https://mapfw.nl/benchmarks/。在这里你可以找到一个基准列表。如果您单击基准测试,您可以看到预先发布的解决方案。通过单击解决方案,您可以看到问题的样子。找到一个你喜欢的问题,并在https://mapfw.nl/benchmarks/页上找到它的索引(抱歉,您必须从1开始计算自己的数量。稍后会改变)。在
现在转到您的帐户页https://mapfw.nl/auth/account。查找API令牌
这是开始编码所需的全部信息。代码的基本大纲应该如下所示:
^{pr2}$你唯一需要做的就是填上
- 你自己的API令牌
- 要求解的基准的编号
- 算法的名称
- 它的版本。以及调试模式。(当您开发算法时,这应该设置为True。这意味着你的尝试不会出现在全球领导委员会上。但是您仍然可以在https://mapfw.nl/auth/latest-debug上看到自己的解决方案。)
- 你的解算器函数
- 要用于此基准测试的核心数量(默认值=1)。对于所有核心,使用-1)
你应该自己实现“解算器”功能。 此函数应接受问题并返回解决方案。 此功能的基本概述如下:
classAgent:def__init__(self,start,goal,waypoints):self.start=startself.goal=goalself.waypoints=waypointsclassMaze:def__init__(self,grid,width,height):self.grid=gridself.width=widthself.height=heightdefsolve(problem):number_of_agents=len(problem.starts)agents=[]foriinrange(number_of_agents):agents.append(Agent(problem.starts[i],problem.starts[i],problem.goals[i],problem.waypoints[i]))maze=Maze(problem.grid,problem.width,problem.height)paths=[]foragentinagents:paths.append(find_path(agent,maze))""" Now paths looks like: paths = [path agent 1, path agent 2, ..] path agent 1 = [pos agent 1 at time 0, pos agent 1 at time 1, .., pos agent 1 at finishing time] pos = [x coordinate, y coordinate] """returnpaths
同时运行多个基准测试也是可能的。
您也可以将iterable赋给MapfwBenchmarker
构造函数,而不是将一个整数作为基准索引。
有效用途包括:
在debug on 1 core中运行基准测试3,使用解算器solve
,算法测试算法和版本测试版本:
MapfwBenchmarker("<YOUR API TOKEN>",3,"TestAlgotithm","TestVersion",True,solver=solve,cores=1)
在3个核心上调试时,使用解算器solve
,算法测试算法和版本测试版本,运行基准测试1、2和3:
MapfwBenchmarker("<YOUR API TOKEN>",[1,2,3],"TestAlgotithm","TestVersion",True,solver=solve,cores=3)
使用solversolve
、算法TestAlgorithm和version TestVersion运行基准测试1、2和3,作为对所有核心的真正尝试:
MapfwBenchmarker("<YOUR API TOKEN>",range(1,4),"TestAlgotithm","TestVersion",False,solver=solve,cores=-1)
如果需要基准测试的所有索引的列表,可以使用get_all_benchmarks
函数。
作为参数,您可以添加索引,或者您不想运行的基准的索引列表
frommapfwimportget_all_benchmarksall_benchmarks=get_all_benchmarks()without_benchmark_3=get_all_benchmarks(without=3)without_benchmark_2_and_4=get_all_benchmarks(without=[2,4])
准备好后,将调试模式设置为False。下次运行代码时,您的尝试将被公开列出。在
这应该是所有你需要知道的开始! 请注意,这只是一些示例代码,您可以随意更改它。在
祝你好运!如果你有任何问题请告诉我们。在
- 项目
标签: