庙算兵棋推演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.rhkb.cn/news/326783.html

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

相关文章

鸿蒙开发:【从TypeScript到ArkTS的适配规则】

从TypeScript到ArkTS的适配规则 ArkTS通过规范约束了TypeScript(简称TS)中过于灵活而影响开发正确性或者给运行时带来不必要额外开销的特性。本文罗列了所有在ArkTS中限制的TS特性,并提供了重构代码的建议。ArkTS保留了TS大部分的语法特性&a…

python数据分析——seaborn绘图1

参考资料:活用pandas库 matplotlib库是python的和兴绘图工具,而seaborn基于matplotlib创建,它为绘制统计图提供了更高级的接口,使得只用少量代码就能生成更美观、更复杂的可视化效果。 seaborn库和pandas以及其他pydata库&#xf…

【计算机网络】数据链路层 组帧 习题4

组帧 发送方根据一定的规则将网络层递交的分组封装成帧(也称为组帧)。 组帧时,既要加首部,也要加尾部,原因是,在网络信息中,帧是以最小单位传输的。所以接收方要正确地接收帧,就必须清楚该帧在一串比特串中…

AI网络爬虫:用kimichat自动批量提取网页内容

首先,在网页中按下F12键,查看定位网页元素: 然后在kimi中输入提示词: 你是一个Python编程专家,要完成一个爬取网页内容的Python脚本,具体步骤如下: 在F盘新建一个Excel文件:提示词…

Duplicate File Finder Pro for Mac激活版:重复文件清理软件

在繁杂的文件管理中,你是否曾为重复文件而烦恼?Duplicate File Finder Pro for Mac,正是你不可或缺的得力助手。这款专业级工具,能够迅速扫描并定位Mac系统中的重复文件,让你的存储空间恢复清爽。 通过强大的算法支持&…

互联网轻量级框架整合之SpringIoC概念详解

在之前的几篇文字中说道容器的概念,实际上Spring也是基于容器的理念,之所以如此成功并不是因为很先进的技术,而是因为理念,其中核心便是IoC(控制反转),AOP(面向切面编程),其中IoC是Spring的基础&#xff0c…

【STM32 |示例程序】EXTI中断示例程序(对射式红外传感器旋转编码器计次)

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 丠丠64-CSDN博客🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起…

采用java+B/S开发的全套医院绩效考核系统源码springboot+mybaits 医院绩效考核系统优势

采用java开发的全套医院绩效考核系统源码springbootmybaits 医院绩效考核系统优势 医院绩效管理系统解决方案紧扣新医改形势下医院绩效管理的要求,以“工作量为基础的考核方案”为核心思想,结合患者满意度、服务质量、技术难度、工作效率、医德医风等管…

基于POSIX标准库的读者-写者问题的简单实现

文章目录 实验要求分析保证读写、写写互斥保证多个读者同时进行读操作 读者优先实例代码分析 写者优先代码运行结果 读写公平法示例代码分析 实验要求 创建一个控制台进程,此进程包含n个线程。用这n个线程来表示n个读者或写者。每个线程按相应测试数据文件的要求进行…

Vue的学习 —— <vue响应式基础>

目录 前言 正文 单文件组件 什么是单文件组件 单文件组件使用方法 数据绑定 什么是数据绑定 数据绑定的使用方法 响应式数据绑定 响应式数据绑定的使用方法 ref() 函数 reactive()函数 toRef()函数 toRefs()函数 案例练习 前言 Vue.js 以其高效的数据绑定和视图…

Golang | Leetcode Golang题解之第84题柱状图中最大的矩形

题目&#xff1a; 题解&#xff1a; func largestRectangleArea(heights []int) int {n : len(heights)left, right : make([]int, n), make([]int, n)for i : 0; i < n; i {right[i] n}mono_stack : []int{}for i : 0; i < n; i {for len(mono_stack) > 0 &&am…

ESP32重要库示例详解(三):按键之avdweb_Switch库

在Arduino开发中&#xff0c;我们经常需要处理按钮和开关的输入。avdweb_Switch库就是为了简化这一任务&#xff0c;提供了一个优雅且高效的事件处理方式。本文将通过一个实际示例&#xff0c;介绍该库的主要特性和用法。 导入库 在Arduino IDE导入avdweb_Switch库的步骤如下…

黑盒测试中的边界值分析

黑盒测试是一种基于需求和规格的测试方法&#xff0c;它主要关注软件系统输出的正确性和完整性&#xff0c;而不考虑内部代码的实现方式。在黑盒测试中&#xff0c;边界值分析是一种重要的测试技术&#xff0c;它可以帮助测试人员有效地发现输入和输出的问题。本文将从什么是边…

AI翻唱+视频剪辑全流程实战

目录 一、AI翻唱之模型训练 &#xff08;1&#xff09;模型部署 &#xff08;2&#xff09;数据集制作——搜集素材 &#xff08;3&#xff09;数据集制作——提升音频质量 方法一&#xff1a;使用RVC提供的音频处理功能。 方法二&#xff1a;可以使用音频剪辑工具Ad…

AI时代的网络安全战:以智取胜,守护数字安宁

在数字化浪潮的推动下&#xff0c;我们的生活和工作日益离不开互联网。然而&#xff0c;随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;网络安全问题也日益凸显。美国联邦调查局&#xff08;FBI&#xff09;的一则警报如同一记重锤&#xff0c;敲响了我们对…

大米自动化生产线揭秘:包装设备选择与维护之道

在现代化的大米生产过程中&#xff0c;自动化生产线的应用已经越来越广泛。其中&#xff0c;包装设备作为生产线上的重要一环&#xff0c;其选择与维护直接关系到产品的质量和生产效率。与星派一起探讨大米自动化生产线中包装设备的选择与维护之道。 一、包装设备的选择 在选择…

工厂模式应用实例

引言 设计模式概念 设计模式&#xff08;Design Pattern&#xff09;的官方概念可以表述为&#xff1a;在软件设计中&#xff0c;设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它是针对特定问题或特定场景的解决方案&#xff0c;是一种经过…

单元测试之TestNG知识点总结及代码示例

TestNG 是一个测试框架&#xff0c;用于自动化测试 Java 和 Scala 应用程序&#xff0c;它是 JUnit 和 NUnit 的一个强大替代品。TestNG 支持数据驱动测试、参数化测试、测试套件、依赖管理、多线程测试等特性。TestNG官网&#xff1a;TestNG Documentation 目录 1.TestNG 基…

虹科Pico汽车示波器 | 免拆诊断案例 | 2010款凯迪拉克SRX车发动机无法起动

故障现象 一辆2010款凯迪拉克SRX车&#xff0c;搭载LF1发动机&#xff0c;累计行驶里程约为14.3万km。该车因正时链条断裂导致气门顶弯&#xff0c;大修发动机后试车&#xff0c;起动机运转有力&#xff0c;但发动机没有着机迹象&#xff1b;多起动几次&#xff0c;火花塞会变…

网络编程:服务器模型-并发服务器-多进程

并发服务器概念&#xff1a; 并发服务器同一时刻可以处理多个客户机的请求 设计思路&#xff1a; 并发服务器是在循环服务器基础上优化过来的 &#xff08;1&#xff09;每连接一个客户机&#xff0c;服务器立马创建子进程或者子线程来跟新的客户机通信 &#xff08;accept之后…