庙算兵棋推演AI开发初探(4-调用AI模型)

前面讲了如何开展编写规则脚本型Agent(智能体)的方法,现在探究一下如何调用知识型(一般而言的训练出的模型)智能体的方法。
 

这次调用的是庙算平台的demo(网址见图)

下载了“知识+强化学习型”的压缩包,打开里面,进到【ai_demo】文件夹中是这样的:

这里面的agent.py文件也没什么大变化

import json
import os
import randomfrom .base_agent import BaseAgent
from .map import Mapfrom .feature_v1 import features as RL_FEATURE
from ai_demo import config, utils
from .model import PPOfrom .select_points_fix_r_v7_2 import SelectPoint as SelectPoint

说明中写道

1. 运行所需环境为sdk要求环境,本代码额外需要安装 pytorch,本代码pytorch的版本是2.0.1

2. 本代码包括1个文件夹,2个文件,需要与 train_env 的目录同级
    ai_demo 文件夹,提供示例ai智能体
    train_red_demo.py 文件,提供与示例ai智能体相匹配的训练示例代码
    test_red_demo.py 文件,提供与示例ai智能体相匹配的测试示例代码

3. 赛道一的 ai_demo/agent.py 文件106行与136行,有2个todo需要注意;赛道二的 ai_demo/agent.py 文件102,有1个todo需要注意。

调用这个需要pytorch环境2.0.1。

PS,在自己环境上指定版本安装pytorch的命令:

123

然后我就奇怪,到底是哪里调用所谓的”训练模型“呢?

于是我发现了model.py这个文件

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optimclass Critic(nn.Module):def __init__(self, state_dim_1, state_dim_2, hidden_dim):super(Critic, self).__init__()self.Linear11 = nn.Linear(state_dim_1, hidden_dim)self.Linear21 = nn.Linear(hidden_dim, hidden_dim)self.Linear31 = nn.Linear(hidden_dim, hidden_dim)………………

看开头,看起来是这个东西。

里面实现了”演员-评论家“这两个类,并且实现了一个PPO类

然后我找在agnet.py文件里找PPO,发现在102行有如下内容

#### TODO 训练与测试的时候要注释掉, 提交的时候需要
#我方算子max 7
self.model = PPO(state_dim_1=1116, state_dim_2=252, hidden_dim=1024, action_dim=output_space,
gamma=config.float_gamma, lamda=config.float_lam, epochs=1000, eps=0.2, lr=config.float_lr)
self.model.load(itr=213)
###

然后发现目录”models“,里面有两个.pth 文件,原来这就是pytorch训练出的模型。

【Pytorch】一文详细介绍 pth格式 文件_pth文件-CSDN博客

转回来,看agent.py文件,这个文件是调用智能体的文件,讲规则智能体的时候我也讲到过

np_bopFeature,  np_globalFeature = self.feature.get_feature(observation)
list_ops_what_logprob_value = self.model.total_forward(np_bopFeature,  np_globalFeature, list_RedComplexActionMask)list_ops_what_id = []
for tuple_what_prob_value in list_ops_what_logprob_value:list_ops_what_id.append(tuple_what_prob_value[0])
assert len(list_ops_what_id) == len(self.list_red_ops_id)model_actions = utils.cvtModelOutputToEnvActionComplex(list_ops_what_id=list_ops_what_id,list_red_ops_id=self.list_my_ops_id,list_my_ops_sub_type=self.list_my_ops_sub_type,observation=self.observation,int_seat=self.seat,list_MovePos=list_MovePos,Map=self.map,int_point_num=self.int_point_num)

这里看到函数,发现是用来接收观测状态的

self.model.total_forward()

而这个函数,就是将模型输出过滤为可执行动作用的

model_actions = utils.cvtModelOutputToEnvActionComplex(
#在utils.py文件中def cvtModelOutputToEnvActionComplex(list_ops_what_id: tuple,list_red_ops_id, list_my_ops_sub_type,observation,int_seat,list_MovePos,Map,int_point_num) -> list:"""功能:根据各个算子的动作ID等信息,计算环境可执行的动作用法:用于网络输出动作之后:param tuple_RedOperatorsID: RedAction函数的输出,红方各个算子的动作ID:param list_RedOperatorsIDs::param list_RedOperatorsIDs::param observation: 主要用于根据算子ID获取obs当前bop类,进行计算路径:param Map_map: core.utils.map 的 Map 类:return: list_total_actions 默认值为[], 若非空则内有dict类型的bq可执行动作作为list内的元素"""

最后返回的值就从这个model_actions列表出来

total_actions += model_actions

调用完毕。


相关链接:

中国人工智能学会 (caai.cn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【异常处理】(中北大学-程序设计基础(2))

目录 题目 源码 结果示例 题目 求一元二次方程式ax^2bxc0的实根&#xff0c;如果方程没有实根&#xff0c;则输入有关警告信息。要求&#xff1a;建立一元二次方程类&#xff0c;利用异常技术处理。 源码 #include <iostream> #include <cmath>using namespa…

力扣HOT100 - 763. 划分字母区间

解题思路&#xff1a; class Solution {public List<Integer> partitionLabels(String s) {int[] last new int[26];int len s.length();for (int i 0; i < len; i) {last[s.charAt(i) - a] i;//记录字母最远的下标}List<Integer> partition new ArrayList…

java spring boot动态数据库获得配置信息连接多数据源(数据库)

数据库 数据库文件和代码文件 https://download.csdn.net/download/qq_34631220/89304173 链接&#xff1a;https://pan.baidu.com/s/1xoh6xiSRx4nW_gKvR1QPjg 提取码&#xff1a;i7b7 –来自百度网盘超级会员V5的分享 文章位置 添加链接描述 说明&#xff1a;事务只能单库…

学习软考----数据库系统工程师32

NoSQL非关系型数据库 CAP理论和BASE特性 关系型数据库主要使用ACID理论 各种NoSQL数据 库的分类与特点

中国海洋大学整体来说值得报考吗?中国海洋大学考情分析。

中国海洋大学&#xff08;Ocean University of China&#xff09;&#xff0c;简称中国海大。位于中国青岛&#xff0c;是中华人民共和国教育部直属的综合性重点大学&#xff0c;国家“双一流”、“985工程”和“211工程”重点建设高校之一&#xff0c;入选“2011计划”、“111…

RT-Thread事件集

文章目录 前言一、RT-Thread事件集的概念二、事件集函数的使用1.创建事件集函数2.事件集发送函数3.事件集接收函数4.事件集删除函数 三、事件集使用例程总结 前言 本篇文章将给大家讲解RT-Thread中事件集的概念&#xff0c;了解什么是事件集及事件集的函数使用方法。 一、RT-…

Lesson5--二叉树(超详细版)

【本节目标】 1. 树概念及结构 2. 二叉树概念及结构 3. 二叉树顺序结构及实现 4. 二叉树链式结构及实现 1.树概念及结构 1.1树的概念 树是一种 非线性&#xff08;线性结构就是顺序表链表&#xff09; 的数据结构&#xff0c;它是由 n &#xff08; n>0 &#xff09;个…

Linux 第三十章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

ms17-010(永恒之蓝)

1.漏洞介绍: 永恒之蓝&#xff08;ms17-010&#xff09;爆发于2017年4月14日晚&#xff0c;是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限&#xff0c;以此来控制被入侵的计算机。甚至于2017年5月12日&#xff0c; 不法分子通过改造“永恒之蓝”制作了wannacry勒索病…

国际护士节庆祝活动向媒体投稿有方法很轻松

作为一名医院职工,我肩负着医院对外信息宣传的重任。在国际护士节这个特殊的日子里,我们医院举办了一系列庆祝活动,以表彰护士们的辛勤付出和无私奉献。然而,在将这些活动信息投稿至媒体的过程中,我最初却遭遇了诸多挑战。 起初,我采用传统的邮箱投稿方式,将精心撰写的稿件发送…

RabbitMq出现Not management user问题解决

在RabbitMq登录的时候突然弹出如下图&#xff1a; 提示“当前用户不是管理员用户”进入mq控制命令台下&#xff1a; windows版本在mq安装路径下的sbin下进入cmd弹出框&#xff1b; Linux版本没有测试&#xff1b; 输入以下命令&#xff1a; rabbitmqctl list_users 查询当…

栈与队列OJ题【括号适配问题】【用队列实现栈】【用栈实现队列】【设计循环队列】

一.有效的括号 ​​​OJ链接 这一道题我们就可以用栈来解决&#xff1a; 不了解栈的可以看我的上一篇博客。 typedef char STDataType; //用数组来实现栈 typedef struct stack {STDataType* a;int capacity;int top; }ST; void STInit(ST* pst) {assert(pst);pst->a NU…

内网环境安装使用DBeaver使用第一天

之前一直使用navicat&#xff0c;现在出于某种原因不让使用了&#xff0c;于是上手了这个工具&#xff0c;说实话&#xff0c;真的&#xff0c;但是必须要用。 首先安装的时候&#xff0c;必须要选择MySQL驱动&#xff0c;如果外网直接选择以后就可以下载了&#xff0c;内网需…

字符串函数(一):strcpy(拷贝),strcat(追加),strcmp(比较),及strncpy,strncat,strncmp

字符串函数 一.strcpy&#xff08;字符串拷贝&#xff09;1.函数使用2.模拟实现 二.strcat&#xff08;字符串追加&#xff09;1.函数使用2.模拟实现 三.strcmp&#xff08;字符串比较&#xff09;1.函数使用2.模拟实现 四.strncpy1.函数使用2.模拟实现 五.strncat1.函数使用2.…

采油厂职工向媒体投稿的好方法找到了

作为一名采油厂的职工,我深知在媒体上定期投稿的重要性。这不仅是我们展示工作成果、传播企业文化的重要途径,更是上级考核我们工作表现的一项指标。然而,在投稿的过程中,我经历了不少心酸与困扰。 起初,我采用传统的邮箱投稿方式。每天,我都会花费大量时间在网络上搜索合适的媒…

Linux----正则表达式练习题题解

1、 显示/etc/rc.d/rc.sysinit文件中以不区分大小的h开头的行&#xff1b; [rootopenEuler ~]# grep -E "^(H|h)" /etc/passwd halt:x:7:0:halt:/sbin:/sbin/halt 注&#xff1a;当然也可以使用grep -i来实现&#xff0c;这里我换了一个文件&#xff08;/etc/passw…

基于SPWM控制策略的二极管钳位型的五电平逆变器simulink仿真

本人搭建了二极管钳位型五电平逆变器simulink仿真模型&#xff0c;SPWM采用层叠&#xff0c;输出线电压9电平&#xff0c;相电 压5电平&#xff0c;滤波后对称三相电压、电流&#xff0c;THD<5%&#xff0c;效果十分优越&#xff0c;适合新手学习使用。 模型获取链接&…

使用apache和htaccess对目录访问设置密码保护配置教程

对目录设置密码保护配置说明 我们有时候访问某些网站的时候&#xff0c;要求输入用户名和密码才能访问。这是为了保护隐私&#xff0c;只让经过许可的人访问。 在本教程中主要介绍两种方法&#xff0c;一种是通过apache httpd.conf配置文件对管理后台目录设置密码保护&#xff…

252 基于MATLAB的自适应差分阈值法检测心电信号的QRS波

基于MATLAB的自适应差分阈值法检测心电信号的QRS波&#xff0c;QRS波群反映左、右心室除极电位和时间的变化&#xff0c;第一个向下的波为Q波&#xff0c;向上的波为R波&#xff0c;接着向下的波是S波。通过GUI进行数据处理&#xff0c;展示心率和QRS。程序已调通&#xff0c;可…

Mysql数据类型设计思考

一、Mysql数据类型设计规范 1.1 选择更小的数据类型 一般情况下&#xff0c;在满足存储要求的基础上&#xff0c;尽量选择小的存储类型。例如&#xff1a;存储0~200&#xff0c;tinyint和bigint都可以存储&#xff0c;那么选择tinyint。原因&#xff1a;越小的数据类型运算速…