掌握游戏中聚集与激光雷达避障算法的人工智能算法,理解宽视野和有限视野的区别

当前位置: >>
>> 人工智能PPT
第四章 专家系统内容提要:专家系统的评价 概念及其特点 ?专家系统的开发 工具 ?专家系统的结构 ?专家系统的设计 ? Visual Prolog语言 方法?专家系统的基本?1人工智能及其应用 4.1专家系统的基本概念及其特点4.1.1 专家系统的基本概念:<b
r />专家系统(Expert System,ES)就是能像人类专家一样 解决困难、复杂的实际问题的计算机(软件)系统。 ◆ (1) 应用于某专门领域。(2) 拥有专家级知识。(3) 能模拟专家的思维。 (4) 能达到专家级水平。2人工智能及其应用 4.1.2专家系统的特点?——从处理的问题性质看, 专家系统善于解决那些不确 定性的、 非结构化的、没有算法解或虽有算法解但在 现有的机器上无法实施的困难问题。例如,医疗诊断、 地质勘探、天气预报、市场预测、管理决策、军事指挥 等领域的问题。 ——从处理问题的方法看,专家系统则是靠知识和推理来 解决问题(不像传统软件系统使用固定的算法来解决问 题), 所以, 专家系统是基于知识的智能问题求解系统。——从系统的结构来看, 专家系统则强调知识与推理的分 离, 因而系统具有很好的灵活性和可扩充性。3人工智能及其应用 4.1.2专家系统的特点——专家系统一般还具有解释功能, 即在运行过程中一方面 能回答用户提出的问题,另一方面还能对最后的输出(结论) 或处理问题的过程作出解释。 ——有些专家系统还具有“自学习”能力, 即不断对自己的 知识进行扩充、完善和提炼。这一点是传统系统所无法比 拟的。 ——专家系统不像人那样容易疲劳、遗忘,易受环境、情绪 等的影响, 它可始终如一地以专家级的高水平求解问题。 因此, 从这种意义上讲,专家系统可以超过专家本人。4人工智能及其应用 4.1.3专家系统与传统程序的区别(1) 传统程序是依据某一确定的算法和数据结构来求 解某一确定的问题,而专家系统是依据知识和推理来求解 问题,这是专家系统与传统程序的最大区别传统程序 = 数据结构 + 算法专家系统 = 知识 + 推理(2) 传统程序把关于问题求解的知识隐含于程序中, 而专家系统则将知识与运用知识的过程即推理机分离(使专家系统具有更大的灵活性,使系统易于修改)5 4.1.3专家系统与传统程序的区别(3) 从处理对象来看,传统程序主要是面向数值计算和数据处理,而专家系统则面向符号处理传统程序处理的数据多是精确的,对数据的检索是基 于模式的布尔匹配,而专家系统处理的数据和知识大多是 不精确的、模糊的,知识的模式匹配也多是不精确的 (4) 传统程序一般不具有解释功能,而专家系统一般 具有解释机构,可对自己的行为作出解释6 4.1.3专家系统与传统程序的区别(5) 传统程序因为是根据算法来求解问题,所以每次 都能产生正确的答案,而专家系统则像人类专家那样工作, 通常产生正确的答案,但有时也会产生错误的答案 (这也是专家系统存在的问题之一)专家系统有能力从错误中吸取教训,改进对某一工作 的问题求解能力 (6) 从系统的体系结构来看,传统程序与专家系统具 有不同的结构 (专家系统的结构后续介绍)7 4.2 专家系统的结构? ? ?基本结构 流行结构理想结构8人工智能及其应用 1》专家系统的基本结构知识工程师 知识 知 识 库 推 理 机 数据 用 户 结果 领域专家9人工智能及其应用 2》专家系统的流行结构用户 人 机 接 专家 口 知识获 取程序推理机解 释 程 序综合 数据库知识库10人工智能及其应用 3》专家系统的理想结构用 户 接 口事 实 规 则知识库解释器 计议划程执行器调度器 协调器推理机中间解 黑板11人工智能及其应用 4.3 专家系统的设计方法? 开发步骤? 设计原则12人工智能及其应用 1》 开 发 步 骤13人工智能及其应用 2》六条设计原则(1)专门任务:领域大小 (2)专家合作: 反复磋商,团结协作 (3)原型设计: 从“最小系统”到“扩充式”开发 (4)用户参与: 充实、完善知识库 (5)辅助工具: 提高设计效率 (6)知识库与推理机分离: 体现特征,灵活14人工智能及其应用 3》三个关键开发步骤(1)设计初始知识库。知识库的设计是建立专家系统最重要 和最艰巨的任务。再设计 改进 问 题 知识化 概念化 结构化 重新阐述 形式化 规则化15人工智能及其应用 3》三个关键开发步骤初始知识库的设计包括: a)问题知识化,即辨别所研究问题的实质,如要解决的任务 是什么,它是如何定义的,可否把它分解为子问题或子任务, 它包含哪些典型数据等。 b)知识概念化,即概括知识表示所需要的关键概念及其关系, 如数据类型、已知条件(状态)和目标(状态)、提出的假设以 及控制策略等。?c)概念形式化,即确定用来组织知识的数据结构形式,应用人 工智能中各种知识表示方法把与概念化过程有关的关键概 念、子问题及信息流特性等变换为比较正式的表达,它包括 假设空间、过程模型和数据特性等。16人工智能及其应用 3》三个关键开发步骤?d)形式规则化,即编制规则、把形式化了的知识变换为由 编程语言表示的可供计算机执行的语句和程序。 e)规则合法化,即确认规则化了的知识的合理性,检验规则 的有效性。 (2)原型机(prototype)的开发与试验。在选定知识表达方 法之后,即可着手建立整个系统所需要的实验子集,它包括 整个模型的典型知识,而且只涉及与试验有关的足够简单 的任务和推理过程。 (3)知识库的改进与归纳。反复地对知识库及推理规则进 行改进试验,归纳出更完善的结果。经过相当长时间(例如 数月至两三年)的努力,使系统在一定范围内达到人类专家 的水平。人工智能及其应用???17 4.4 专家系统的评价? ?为什么要评价专家系统 评价方法?专家系统的评价内容18人工智能及其应用 1》为什么要评价专家系统一个专家系统在建立之后,必须经过相当长时间的 运行检验,不断对知识库等部件进行改进,使系统日臻 完善。通过考虑下述问题,对系统不断进行评价: (1) 知识表达方法是否合适,或它是否需要扩展或修改。(2) 系统能否进行正确的推理并提供正确的答案。 (3) 存入系统的知识是否与专家的知识一致。 (4) 用户和系统的相互交流是否方便。 (5) 用户需要系统提供什么方便以及要求系统具有何种能 力。19人工智能及其应用 2》两种评价方法?秩事法:启发式地利用一组例子说明系统性能,并描述系统 在哪些情况下工作良好。?实验法:强调用实验来评价系统处理储存在数据库中问题事 例时的性能。20人工智能及其应用 3》评价专家系统的五项内容?系统决定和建议的质量??所用推理方法的正确性人机之间的对话质量??系统的效率成本效果21人工智能及其应用 4.5 专家系统的开发工具?? ??程序设计语言 骨架型系统 通用型系统 支撑环境22人工智能及其应用 1》程序设计语言?Prolog语言是人工智能与专家系统领域最著名的逻辑 程序设计语言。?LISP即List Processor,即链表处理器,是一种基于λ演算的函数式编程语言。23人工智能及其应用 2》骨架型系统?骨架型系统是在一些获得成功应用的专家系统的基础上, 抽去具体的知识内容,保留知识表达的外壳和推理机构,增强知识获取子系统的功能而形成的一种专用工具。? ?如EMYCIN、KAS以及EXPERT等。 骨架型工具的应用范围很窄,只能用来解决与原系统相 类似的问题。24人工智能及其应用 3》通用型系统? 提供一种较为通用的知识表达语言。 ? 通用专家系统开发工具(GEST)的核心是专家系统设计语言(ESL)。? ESL集过程性和描述性于一体的模块化程序设计语言。 ? “通用”是工具系统追求的目标,但通用与专用又是一对矛盾,发展方向是:组合式、开放式。25人工智能及其应用 4》支撑环境指帮助进行程序设计的工具,是一个附带的软件包, 它包括四个典型组件:? 调试辅助工具 ? 输入输出设施 ? 解释设施? 知识库编辑器26人工智能及其应用 作业2-6 答: (1)OLDER(Zhang, Li)-&YOUNGER(Li, Zhang)(2)MARRY(a , b)-&(MALE(a)^FEMALE(b))v(3) ?x( HONESTMAN( x) ? ?LIE( x)) ? LIE(Zha27人工智能及其应用 作业2-7 答:将棋局 X1 X2 X8 X0 X7 X6 X3X4X5用向量 S=(X0, X1, X2, X3, X4, X5, X6, X7, X8)表示,Si 为变量,Si 的值就是所在方格内的数字。 于是,向量 S 就是该问题的状态表达式。28人工智能及其应用 作业初始状态和目标状态分别为: S0=(0,2,8,3,4,5,0,7,1) , Sg=(0,1,2,3,4,5,6,7,8)。 将 S0 转化为 Sg 的产生式规则依次如下: R1: (X0=6)^(X6=0)-&(X0=0)^(X6=6) R2: (X0=0)^(X2=8)-&(X0=8)^(X2=0) R3: (X1=2)^(X2=0)-&(X1=0)^(X2=2) R4: (X1=0)^(X8=1)-&(X1=1)^(X8=0) R5: (X0=8)^(X8=0)-&(X0=0)^(X8=8)29人工智能及其应用 2-12 学生框架? 框架名&学生& ? 框架名&学生-1& ? 姓名:单位(姓、名) ? 姓名:王小二 ? 性别:范围(男、女) ? 性别:男 缺省(男) ? 年龄:20岁 ? 年龄:单位(岁) ? 班级:信控学院计算机 ? 班级:单位(学院、专业、 专业2010级1班 ? 电话: 年级、班) 家庭电话() ? 电话:家庭电话(8位数字) 手机() 手机(11位数字)30 2 -15 植物AKOHAVE AKO树AKO草AKO叶和根 果树AKO CAN结果CAN水草CAN结梨梨树长在水中31人工智能及其应用
相关文档:
更多相关文章:
搜 试试 帮助 全部 DOC PPT TXT PDF XLS ...计算语言学) 计算机科学(计算语言学、人工智能) ...Chapter Nine: 言语生成与言语理解 1. 2. 3. 4...搜 试试 7 帮助 全部 DOC PPT TXT PDF XLS ...人工智能经典习题集及各... 57页 免费 人工智能【...4 Chapter8 8.6Representthefollowingsentencesinfirst-...搜 试试 7 帮助 全部 DOC PPT TXT PDF XLS ...第一章 语言学导论 Chapter1 Invitations to ...—人工智能,人机对话,机器翻译 The research of ...搜试试 3 帮助 全部 DOC PPT TXT PDF XLS ...实验目的掌握游戏中聚集与避障的人工智能算法,理解宽...Bourg & Glenn Seemann Flocking, Chapter 4 #...搜试试 3 帮助 全部 DOC PPT TXT PDF XLS ...人工智能法律系统的法理学思考 4 行政论文范文大全 ...taxation publishers.deventer boston 1992.chapter 7....搜 试试 帮助 全部 DOC PPT TXT PDF XLS ...chapter on the “Professional Aspects of ...该学科包括研究自然和人工智能系统的信息表达, 信息...搜 试试 帮助 全部 DOC PPT TXT PDF XLS ...Chapter 1 神经网络概述 1940’s 初:开始,人工智能...?互连: , 90% (每个神经元: 4 连接) 10 ? (...搜 试试 7 帮助 全部 DOC PPT TXT PDF XLS ...的赞许 45. artificial intelligence 人工智能 46. ...chapter 上一章 a reliable source of information ...搜试试 3 帮助 全部 DOC PPT TXT PDF XLS ...音量 sales turnovers chapter charter evolution ...人工的 ~ Intelligence 《人工智能》 gizmo robot automatic...搜 试试 帮助 全部 DOC PPT TXT PDF XLS ...the first chapter in this article written a lot...4. 控制智能化 随着人工智能技术的发展,为了满足... 更多相关标签:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
copyright &copyright 。非常超级学习网内容来自网络,如有侵犯请联系客服。|游戏开发应用中的“人工智能”课程教学方法探讨-计算机人工智能论文-论文联盟
您好,游客
背景颜色:
游戏开发应用中的“人工智能”课程教学方法探讨
来源:论文联盟&
作者:杨艳
游戏开发中的&人工智能&课程教学方法探讨
  1.背景  随着互联网时代的到来,人们的生活方式发生了许多重大的变革,其中之一便是游戏的盛行。如同雨后春笋般冒出来的网吧,以及快速增长的PC,使得人们接触到互联网的机会越来越多,这就为网络游戏的传播与创造了可能。一方面,数量庞大的网民群体中,年轻人占了绝大部分,网络游戏丰富了公众的娱乐生活,深受广大年轻人喜爱,这更促进了游戏产业的蓬勃发展。另一方面,现代社会生活节奏加快,人们压力日益增大,许多人倾向于在网游中寻求安慰,释放压力,因而全球市场对于网游的需求有增无减。同时,随着科技的发展和人们对游戏越来越高的要求,游戏逐渐向真实体验、感觉、触觉等人性化发展,让玩家有身临其境的感觉,在整个游戏过程中得到享受游戏的一种特别的快乐和放松。[1]  近年来3D影像和仿真科技的不断发展,让游戏开发人员得以创建出更吸引人、更令人沉迷其中的游戏。然而要做出更能令人流连忘返的游戏就得应用人工智能(AI)。AI的应用使游戏角色能够任意走动、角色可以走进障碍物、能够控制非玩家角色是否按照团队运动等,同时,AI还能延长游戏的生命周期,让游戏更加有趣和更具有挑战性。  AI能够处理游戏角色的追赶、躲避、聚集、避障和寻径问题;AI给游戏角色赋予模糊逻辑和有限状态机等基于基本规则的推理能力;A联盟I脚本可以扩充AI引擎,让设计者和玩家更好地设计和玩游戏,等等。因此,将AI应用在游戏开发中以设计实现游戏角色的各种行为势在必行,有着重要的现实意义。  2.教学内容及其特点  本系人工智能课程的教学内容主要是处理追赶、躲避、聚集、拦截和避障等问题,使用经典A*算法及其改进算法解决寻路问题,以及有限状态机,等等。本文主要针对游戏中游戏角色的寻路问题进行探讨。游戏设计中游戏角色的寻路问题是设计的关键,传统的方法是应用A*算法及其改进算法等来实现游戏角色的寻路问题,目前逐渐有学者应用神经网络、遗传算法、粒子群算法等智能算法来实现游戏角色的寻路问题。如:迷宫寻路游戏中《帮助Bob找到回家的路》应用遗传算法,《智能采矿》游戏中应用神经网络,用粒子群实现坦克大战游戏,等等。尝试应用鱼群算法、萤火虫算法等智能算法求解游戏角色的寻路问题中,以实现游戏的更加智能化、人性化,同时,新的仿生算法的学习和应用能吸引学生的学习注意力、增强学生的学习兴趣。  智能算法是解决智能计算问题的方法,已成为人工智能界一个研究的领域,研究的最终目标就是为了让和集成有计算功能的各种工具及设备更加独立、更加聪明,能够自主思考和行动,最终成为我们和生活中必不可少的一部分。智能算法主要包括:人工神经网络、进化算法、人工免疫算法、模拟退火算法、蚁群算法、粒子群算法、蜂群算法、人工鱼群算法、人口迁移算法、人工萤火虫算法等。[2]智能算法是一类仿生算法,就是向自然界学习,采用类比的方法,通过模仿自然界中动物飞行、觅食、求偶等行为以得到解决问题的一般方法,如蚁群、粒子群、蜂群、鱼群、萤火虫算法等。此外,还有很多智能算法通过模仿一些自然或物理现象和规律,如模拟退火算法通过模拟液体的结晶过程设计,免疫算法是模拟生物、植物或动物免疫系统自适应调节功能设计的,人工神经网络是模拟人的大脑结构及信号处理过程而设计的,进化算法是基于达尔文的&优胜劣汰、适者生存&原理设计的。[3]  针对本系人工智能课程的教学内容,建议补充人工智能中几种简单的智能算法的知识点,选取相关人工智能教材的一些内容结合智能算法进行教学。  3.教学方法  针对人工智能课程内容,根据高校规律、高校学生学习的特点,采用教学、相结合的教学方法,大小课结合,大课讲授理论知识,小课进行课堂实验,小课的课堂实验中严格要求学生亲手编写代码,应用大课所学理论知识完成简单小游戏以实现理论和实践知识的掌握。同时,借助游戏系的优势,制作动漫,采用动漫技术来实现人工智能中各种算法的仿生机制,让学生深刻每一种算法的原理和仿生机制,这样能增强学生学习人工智能课程的兴趣,可以取得更好的教学效果。  4.教学效果评价方法  人工智能这门课,最重要的是注重学生对人工智能理论及在游戏中应用的知识和能力的培养。因此,本课程学习结束后主要采用以下方式进行考查:(1)闭卷。主要考查对人工智能理论的理解、掌握和综合运用能力。(2)课堂练习。要求对课堂上介绍过的算法理解、分析、应用,编程实现游戏中的某个功能,最终课程结束时能完成一个功能完整的小游戏。(3)大作业。检查学生的动手编程能力,要求从介绍过的算法中找一种算法实现一个小游戏中游戏角色的移动、寻路等行为,形成一个演示游戏。该门课成绩分配如下:成绩=闭卷考试(70%)+课堂练习(10%)+大作业(20%)。  5.结语  人工智能是随着计算机技术的飞速发展和人们对自然界的深入理解而发展起来的,人工智能的应用逐渐广泛。游戏开发中人工智能的应用实现了游戏逐渐向真实体验、感觉、触觉等人性化发展,让玩家有身临其境的感觉。因此,在网络游戏相关专业开设人工智能课程势在必行,有着重要的现实意义。
欢迎浏览更多 →
相关文章 & & &
本栏目最新更新文章
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
内容分类导航&>&&>&&>&&>&游戏开发中的人工智能 中文 pdf
游戏开发中的人工智能 中文 pdf
上传大小:14.44MB
你的游戏是否有角色不能任意走动?是否有角色走进障碍物?是否有非玩家角色不能按照团队运动?现在你就可以掌握高级人工智能(AI)技术以解决这些问题。不管你是编程新手或者是个仅仅想快速学习AI的熟练游戏编程人员,你都会发现《游戏开发中的人工智能》对于理解并应用AI到你的游戏中是非常合适的入门书籍。本书正是为你提供游戏开发方面高级、有用的AI技术的。如果你曾试图使用AI延长你的游戏的生命周期,让你的游戏更加具有挑战性,更重要的是让它们更加有趣,这本书就是为你准备的。
David M. Bourg(畅销书《游戏开发中的物理学》的作者)和Glenn Seemann将用非常直观、易懂的语言给你介绍一些诸如有限状态机、模糊逻辑和神经网络之类的技术,全书使用源代码(用C和C++编写)说明这些技术。从基本的诸如追赶、躲避、基于模式的运动和聚集等游戏行为到玩家行为预测,这本书告诉你怎么应用AI给你的游戏角色提供可信的智能。这些技术包括了适合初级AI开发者的确定性(传统的)和非确定性(较新的)AI技术的混合。
其他的主题包括:
·使用基于势函数的单一技术处理追赶、躲避、聚集和避障等问题。
·使用包括路径点和经典A*算法解决寻径问题。
·利用AI脚本扩充AI引擎的功能,让设计者和玩家更好地设计和玩游戏。
·给你的游戏角色赋予基于规则的AI推理能力,包括模糊逻辑和有限状态机。
·使用概率分析和诸如贝叶斯推理的高级技术处理不确定性问题...展开收缩
嵌到我的页面
<input type="text" value="">
综合评分:4.4(170位用户评分)
所需积分:5
下载次数:521
审核通过送C币
创建者:gaobaoqiang1983
创建者:john548
课程推荐相关知识库
上传者其他资源上传者专辑
网络技术热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
游戏开发中的人工智能 中文 pdf
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:1478人阅读
游戏开发(16)
1. 基本群聚
&&& 这一节介绍的算法,来自于Craig Reynolds在1987年发表的论文《Flocks,Herds and Schools:A Distributed Behavioral Model》。在论文中,他提出算法原型仿真整群的鸟、鱼或其他生物。
&&& 这个算法的做出的行为非常类&#20284;水中的鱼群或成群的飞鸟。所有的“类鸟群”(指模拟的群体)可以同时朝同一方向移动,接着下一时刻,群聚形成的形体之尖端会转弯,而群体中其余的部分也会跟着转,形成的类鸟群在群体中传达转弯的行为,而形成波浪状。
&&& 算法的三个规则:
&&& 凝聚:每个单位都往其邻近单位的平均位置行动。
&&& 对齐:每个单位行动时,都要把自己对齐在其邻近单位的平均方向上。
&&& 分割:每个单位行动时,要避免撞上其邻近单位。
&& &单位视野
&&&&两个参数决定每个单位的视野,半径R和角度θ。大的半径能让单位看到群体中的更多同伴,从而产生凝聚性更强的群体。也就是说,群体没有分裂成小群体的倾向。
&&& 对于较小的视野,可能会产生类&#20284;一队蚂蚁行进的效果。比如:仿真一群战斗机,可能会使用大角度。仿真一直军队&#39740;&#39740;祟祟跟踪某人,可能会用小角度。&
&&&&&&&&&&& &&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& && 图-单位的视野&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图-宽视野与窄视野
&&&&&&&&&&&
2. 群聚实例
2.1 行进模式
&&& 这个实例考虑的是以物理机制为基础的范例,把每个单位视为刚体,通过在每个单位的前端施加转向力,来保证群聚的行进模式。每条规则都会影响施加的力,最终施加的力和方向是这些规则影响的综合。另外,需要考虑两件事:首先,要控制好每条规则贡献的转向力;其次,要调整行进模式,以确保每个单位都获得平衡。
&&& 对于避开规则:为了让单位不会彼此撞上,且单位根据对齐和凝聚规则而靠在一起。当单位彼此间距离够宽时,避开规则的转向力贡献就要小一点;反之,避开规则的转向力贡献就要大一些。对于避开用的反向力,一般使用反函数就够用了,分隔距离越大,得出的避开用转向力越小;分隔距离越小,得出的避开用转向力越大。
& & 对于对齐规则:考虑当前单位当前方向,与其邻近单位间平均方向间的角度。如果该角度较小,我们只对其方向做小幅度调整,然而,如果角度较大,就需要较大的调整。为了完成这样的任务,可以把对齐用的转向力贡献,设定成和该单位方向及其邻近单位平均方向间的角度成正比。
2.2 邻近单位
&&&&凝聚,对齐,分隔三个规则要起作用的前提是得到每个当前单位的邻近单位。邻近单位就是当前单位视野范围内的单位,需要从角度和距离两方面进行判断。
&&&&首先根据角度检测,对于不同的视野检测方法是不同的(比如,宽视野,窄视野),下面的例子是对于宽广视野的检测
&&&&·计算d=目标单位位置-当前单位位置,w为d以目标单位反方向的坐标系中的向量坐标。
&&& ·如果w.y&0,则目标单位必然在视野范围内。
&&& ·如果w.y&0,则要看x,y坐标构成的线段斜率,是否在设定的视野区域之外,如果fabs(w.x)&fab(w.y)*_BACK_VIEW_ANGLE_FACTOR,则目标单位在视野范围内。其中的_BACK_VIEW_ANGLE_FACTOR就是视野角度系数。该系数等于1时,视野弧线的直线与x轴夹角是45度,该系数越大,两条线越接近x轴,不可见区域越大,反之,系数越小,两条线越接近y轴,不可见区域越小。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图-宽广视野
&&&&此外,书中还给出了有限视野(实际上就是个半圆)和狭窄视野(实际上是一个扇形)的角度检测方法。在经过角度检测后,还要检测距离。如果向量d的数&#20540;小于当前单位的长度与视野半径的乘积,即可以认为目标单位与当前单位足够接近。这样经过角度检测和距离检测的单位,就是当前单位的邻近单位。
&&& 凝聚考虑的是当前单位的速度向量v和相对位置向量u,其中u=邻近单位的平均位置-当前单位的位置。
if(DoFlock && (N&0)) { // DoFlock=true:启用凝聚规则,N&0:邻近单位数量大于零
Pave = Pave / N; // 邻近单位的平均位置向量
v = Units[i].vV // 当前单位的速度向量
v.Normalize();
u = Pave-Units[i].vP // 邻近单位平均位置向量与当前单位向量的差值,相对位置向量
u.Normalize();
w.VRotate2D(-Units[i].fOrientation, u);
if(w.x & 0) m = -1; // 相对位置向量(即u)在当前单位的右边,需要右转当前单位
if(w.x & 0) m = 1;
// 相对位置向量(即u)在当前单位的左边,需要左转当前单位
if(fabs(v*u) & 1) // 确保反余弦函数可以正常运行
Fs.x += m * _STEERINGFORCE * acos(v * u) /
// Fs.x使用的坐标系是应该也是前面刚刚转化过的坐标系
// acos(v*u):计算相对位置向量与当前单位的速度向量之间的夹角,除以pi是为了把弧度数值转化为标量
&&& 对齐考虑的是当前单位的速度向量v和邻近单位的平均速度向量u,其他部分与凝聚部分的代码都一样,很好理解。
if(DoFlock && (N&0)) {
Vave = Vave / N;
u = V // 邻近单位的平均速度向量
u.Normalize();
v = Units[i].vV
v.Normalize();
w.VRotate2D(-Units[i].fOrientation, u);
if(w.x & 0) m = -1;
if(w.x & 0) m = 1;
if(fabs(v*u) & 1)
Fs.x += m * _STEERINGFORCE * acos(v * u) /
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图-邻近单位的平均位置和方向
&&& 前面的凝聚和对齐规则,都会尝试让单位相互靠近一点。使用的分别是(速度向量,位置向量)和(速度向量,速度向量)。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图-分隔
&&& 外层弧线是可见视野,内层弧线是最小分隔距离。
&&& 前面凝聚和对齐只需要计算平均位置,平均速度就可以了,但是对于分隔,需要当前单位与邻近的每个单位分别比较,对于进入最小间隔的单位,算出一个力,加到Fs.x上去。
&&& 部分代码如下:
if(InView) { // 如果在视野内
if(d.Magnitude() &= Units[i].fLength * _SEPARATION_FACTOR) {
if(w.x & 0) m = 1; // 这里是分隔,方向与凝聚和对齐规则正好相反
if(w.x & 0) m = -1;
Fs.x += m * _STEERINGFOCE * (Units[i].fLength*_SEPARATION_FACTOR) / d.Magnitude(); // 分隔越小,力越大
3. 避开障碍物
&&& 要做的就是提供某种机制给单位使用,让他们能看到前方的障碍物,再施加适当的转向力,是其避开路径中的障碍物。
&&& 为了检测障碍物是否在某单位的路劲内,我们要借助机器人学,替我们的单位安装虚拟触角(feeler)。基本上,这些触角会处在单位的前方,如果触角碰到某种东西,就是那些单位要转向的时候了。模型的形式很多,比如可以装上三个触角,分别位于三个不同方向,不但能检测出是否有障碍物,而且检测该障碍物位于单位的那一侧。宽广的单位需要一个以上的触角,才能确保单位不会和障碍物碰撞。在3D游戏中,可以使用虚拟体积,以测定是否即将和某障碍物碰撞。总之,手段很多。
&&& 这一节,给出了一个避开圆形障碍物的实例。具体代码忽略。总之,对当前单位做出的改变都会表现在Fs.x上面。
4. 跟随领头者&
&&& 基本群聚算法的三条规则,&#20284;乎让群体在游戏世界中随处闲逛,如果在其中加入领头者,就能让群体的移动更有目的性,或者看起来比较有智能。比如:战争模拟游戏中,计算机控制一群飞机追击玩家。可以让其中的一架作为领头者,其他飞机采用基本群聚规则跟着领头者跑。在和玩家发生混战时,可以适时关闭群聚规则,让飞机分散进攻。另一个实例,仿真一直军队,指定其中某个单位为领头者,可以让他们成横队或者纵队,采用宽广视野或有限视野模式,使其他单位采取群聚行为。
&&&这一节给出的实例是通过某种规则确定领头者,这样即使领头者被玩家干掉了,或者由于某种原因脱离其群体,整个群体不会因此失去领导。
&& 一旦领头者确定了之后,就可以通过若干规则和技巧,让领头者做一些事情,比如,追逐某物,或者逃命。
&& 这一节给出的实例有点意思:把群体分成两类,一类单位的速度快一些,负责追击玩家,另一类速度慢一些,负责拦截玩家。两类分别找到各自的领头者,其他单位在自己的类别中,使用群聚算法。这样能够表现出,一组群体尾随在玩家之后,另一组群体从侧翼包抄的效果。
&& 具体领头者寻找的方法是通过计算每个单位窄视野范围内邻近单位的个数,如果要成为领头者,必然个数为0,如果有多个单位的窄视野内都没有单位,这一点书中没有交代,个人认为随机选取一个应该都可以吧。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:138850次
积分:2724
积分:2724
排名:第12387名
原创:133篇
转载:30篇
(1)(2)(1)(7)(2)(17)(109)(12)(12)}

我要回帖

更多关于 避障算法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信