当前位置: 首页 > article >正文

效用系统简介

AI的基本框架的是感知->决策->行为

效用(Utility)同有限状态机、行为树一样都属于决策的方式,其核心是给感知到的不同信息以及不同行为赋予不同的效用值(Utility Value),并选择效用值最高的行为。

例如:

对于感知信息:距离可以对应一个效用值,可以不同阶段的距离对应不同的效用值,可以有个函数更具距离计算效用值,这个函数叫效用函数(Utility Function)

对于行为:距离、血量、敌人数量、技能等都会对选择什么样的战斗行为有影响,战斗行为分为攻击、防御、闪避、挣脱、辅助等五大类,这些信息是行为的影响因素,每种因素有不同的权重值,通过不同的效用函数累加计算得到最终不同行为的效用值,选择效用值最高的行为

效用函数时效用系统的核心,有以下常用的效用函数:

  • 分段常数:例如当距离<10,效用值 = 1;当10<=距离<50,效用值=0.5;当距离>=50,效用值= 0.1 
  • 线性函数:y = ax + b
  • 指数函数:y = 1-e^-x
  • sigmoid函数

(效用值通常为0~1,因为要用到函数,为计算统一这样取,通常需要对各种信息做归一化计算)

在复杂的决策中,信息和行为是多样的,可以自然做分层,实现分层效用。

更进一步的,可以用代价作为效用的另一面,选择代价最小的,或着综合代价和效用做决策。

此外,因为各类效用值繁多,计算量大,需要平衡好性能和表现问题。

因为效用需要用到函数,最终角色表现出来的行为是根据当前环境和目标状态动态调整的,有更大的灵活性,会有更为丰富和更为自然的行为表现。

但是效用函数设置的不合适,会导致角色出现难以预测的行为,也即不可控。

其难度在于设计出合适的效用函数,这需要通过大量测试做调参。

而FSM和BT是在确定性的控制下做的,即角色的所有行为的表现都遵循预先设置好的条件,这些条件都是离散化的数值,更便于做调整。需要更多的行为表现,就需要设置更多更细的数值。

通常来说,为了增加一定的自由度,我们会将效用系统嵌入行为树中,即通过效用函数代替某些离散的条件节点或执行某些具体的动作。

例如:当行为树确定执行闪避行为时,可以通过效用系统确定走到到什么位置;或者找什么掩体


http://www.kler.cn/a/593913.html

相关文章:

  • bootstrap介绍(前端框架)(提供超过40种可复用组件,从导航栏到轮播图,从卡片到弹窗)bootstrap框架
  • (七)List里面常用的属性和方法
  • ASP.NET Core 使用 MongoDB
  • JavaScript 中的事件委托机制,它有什么优点和适用场景?
  • Quartz知识点总结
  • 使用 Python 爬取 TikTok 评论的实现与解析
  • 区跨链密码学
  • 基于 Swoole 的 PHP 异步框架评分与对比(按综合流行度排名)
  • 【MySQL】基本查询(第一弹)
  • 淘宝商品详情页API字段深度解析:如何精准提取SKU、销量、促销信息?
  • OAK相机入门(一):深度测距原理
  • 观察RenderDoc截帧UE时“Event”代表什么
  • Linux系统——crontab定时任务
  • 网络工程师的要求
  • 深蕾半导体IP-KVM产品方案解析
  • 云盘搭建笔记
  • 论文笔记——BiLLP框架
  • 【CAD二次开发】调试无法进入断点提示无可用源问题(非空心断点)
  • 【机器学习】什么是逻辑回归
  • 单调队列【C/C++】