应广大AI开发者们提出的需求,环境新增“任意态势载入”和“环境复制”功能。
“任意态势载入”功能给开发者提供了复现某个盘面的能力。该功能可使AI开发者以自己关注的盘面开始推演,在代码中打断点进行代码debug,更准确的掌握自己的AI在做某一时刻决策时的逻辑流。
“环境复制”功能使开发者可以在推演过程中的任意时刻复制一份完全相同的当前环境,包括随机数生成器的内部状态。通过复制环境,开发者可以使用MCST(蒙特卡洛搜索树)的相关技术去探索在某一时刻下,不同的动作选择可能带来的不同结果。为开发者调试时提供平行的决策过程,从而可以达到决策最优化。
环境复制
“环境复制”功能以环境接口TrainEnv::duplicate的形式出现,开发者通过“TrainEnv”实例调用接口。环境复制功能主要用于训练AI,使用MCST(蒙特卡洛树搜索)算法时需要对环境进行复制的需求。复制出来的环境实例将和主环境一模一样。如果两个环境输入同样的动作到推演结束,应当得到相同的推演结果(分数,盘面)。此功能可以在任何步数使用。
接口说明
TrainEnv::duplicate
功能:复制一个一摸一样的环境
参数说明:无
返回值:TrainEnv环境实例
使用示例(局部)
任意态势载入环境
此功能的作用是让环境可以载入任意态势并从此态势开始推演。
开发AI时,可以复现复盘中的某一时刻,用来训练AI在特定条件下的决策。
合法的载入态势格式为某个复盘文件中的某一帧的绿方态势。
此功能有两个相关接口:TrainEnv::save_snapshot和TrainEnv::load_snapshot。两个接口可搭配使用。
接口说明
TrainEnv::save_snapshot
功能:保存一个在当前步数的环境快照,快照可用于复现环境,从此快照开始推演。保存的快照是json文件格式
参数说明:
参数名 | 数据类型 | 说明 |
filename | string | 保存快照的地址和文件名 |
返回值:无
TrainEnv::load_snapshot
功能:根据提供的快照,将一个环境实例还原成和快照一致的状态。
参数说明:
参数名 | 数据类型 | 说明 |
source | dict | source是某一时刻的完整态势里的绿方态势,或通过Train:save_snapshot保存下来的快照json文件中读取出来的字典 |
返回值:无
使用示例(局部)
# save_snapshot
while not done:
actions = red1.step(state[RED])
actions += blue1.step(state[BLUE])
state, done = env1.step(actions)
if state[-1]['time']['cur_step'] == 200:
env1.save_snapshot('output/snapshot.json')