不飞则已,一飞冲天,这是我对学习Soar时的最初宣言。事实证明我还没到冲天的地步,只是向上稍微跳了一下。下面把我起跳的心得体会记录下来,顺便总结一下Soar的基本思路。

Soar是一种通用的认知架构,用来为具有智能的系统建模的。Soar有很多成功的应用案例,如美国空军的Tac-Air系统(用来训练战斗机飞行员),如MOUTbots(用来训练群体战斗),如Quake

II中电脑agent部分都是用Soar的理论搭建的。Soar是State,Operator And

Result的缩写(并无单词soar的意思,所以我刚开始的宣言还是有点望文生义的意思),因为在Soar中所有问题的解决都是通过应用提炼好的操作(operator)去改变状态空间里的状态使其达到想要的状态(goal)。从我的体会看来有两点非常重要:1,提取好目标并设计好Working

Memory Structure(工作空间的结构)和Problem

Space(问题空间)2,设计好规则。缘于Soar的学习功能还没时间去了解,所以不敢做任何评论。

Soar在我的眼中一个重要的特点是它执行的并行性,因为它的内部执行机制允许我设计一些规则,而这些规则之间是相互独立的(可能会在执行的过程中相互触发,但是都是独立的),举个例子,让飞机在等待点等待。一般飞机等待的时候还会伴随着高度层的改变,如果用C语言写一段判断是否需要考虑在等待的时候去让飞机改变高度层,那么这段代码应该是搜索完所有的可能情况,然后做出判决(从我的角度)。但是在Soar中,你可以设置一个用来监视高度层的规则(rule),判断有哪些高度层可用,设置一个用来改变高度层的规则,再设置一个让飞机等待的规则。以上三个规则是独立的,并且可能会在其他情况触发,可以自由组合以完成不同的高级动作,省去了很多在传统编程语言中的针对每一种情况都要做出复杂的组合判断的麻烦。

Soar的基本架构的介绍:

上面是Soar的框架,右边的表示底层处理架构,包括选择operators(操作),创建状态,学习等。中上部分是规则存储器(Rule

Memory),里面存的rule的格式待会介绍。中下部分是工作空间存储器(Working

Memory),里面的元素主要是WME(Working Memory

Element,表示一条信息最基本的元素),还有一些被选中的operators。

下面介绍一下WME的结构:

可以看出是一个图结构,两个公用一条边的节点和公共边组成一个WME,一个节点充当identifier,一个节点充当value,公共边充当attribute。一般一个WME描述了一个事物的一个属性。有共同identifier的所有WMEs组成了一个对象(object),这个对象可以是抽象的(如一件事情)也可以是实际的(如桌子)。

Rule的结构:

Soar

Rule由两部分组成,一个是条件部分,用来测试所需的WME是否存在,一个是动作部分,用来改变Working

Memory里的元素,已达到像目标迈进的目的。上图显示的是两条规则,一条规则以sp{……}来约束。

下面是Soar的推理过程:

Input是Soar系统的输入,可以是传感器信息,也可以是一些临时的WME(Working Memory Element,Soar

中信息的最基本形式,全局的)。

Propose Operators 是提议备选操作阶段,所以符合要求的规则都会在这阶段出现。Select Operator

是选择操作阶段,这个阶段的工作依赖于上阶段的被提议的操作中preference部分(best,better,accept,worse,etc.)。Apply

Operators 执行上一阶段被选择的操作,执行的结果就是改变了下一个阶段的输入值(器件需要通过

output和环境交互,此处简略)。Output

输出值,可以直接送到下一阶段的输入。也可以送到环境(通常是送一些命令),让环境去执行,环境再送给Soar。下面介绍一下Soar是怎么和外界交互的。

首先环境对Soar中Agent的input-link

WMEs 进行初始化,通过commit 送至Kernel,Kernel管理着所有Agents,Agent得到那些WMEs

,进行匹配,如果满足某条规则的所有WMEs

都找到的话,那么这条规则就可以匹配上,规则的动作部分就会被启动(fire)。每条规则的启动都会带来Working

Memory的变化,可能会产生输出指令,输出的指令通过事件触发的方式,通知环境读取,环境读取完指令会执行相应的动作(相当于C语言中调用函数),然后产生计算结果(输出,相当于return语句),再commit

至输入端,agents 读到这些WMEs重新匹配,如此往复。

以上便是我对Soar的所有理解。可能只是刚刚知道有Soar这么个东西,后面更有意思,更能体现出Soar的优势的技术我还一点也没进入呢!所以还有很长很长的路要走啊。

另外,从我个人来讲,Soar其实也是一种编程语言,不应该把它看做有多方便,真正方便的是作为学习者,如何用好Soar来辅助研究,正如C语言谁都可以懂,可是C写出的程序,实现的功能就因人而异了。所以,真正分析问题,解决问题的能力才是重要的。

最后,由于最近关注人工智能的东西比较多,所以有了一些新的发现:跨学科在人工智能方面是非常有应用前景的。详见IEEE评出的两年一度的人工智能十杰之陈怡林(YiLin

Chen,Harvard University)介绍。

写于:2011年4月

soar系统搭建_【旧文重发】Soar简介相关推荐

  1. soar系统搭建_sql自动化检查和分析工具 :soar和soar-web 安装和使用体验

    为了研究一下sql自动化检查和分析工具,是否有网上介绍的好用,我在本地进行soar 和 soar-web的安装和使用. 初步的实验结果,总结如下: 1. 安装相对来说较为麻烦,特别是soar-web的 ...

  2. 大数据平台搭建_一文读懂数据平台、大数据平台、数据中台

    作者 | June 来源 | 智领云科技(ID:LinkTimeCloud) 造概念,在 IT 行业可不是一件陌生的事儿,中文博大精深,新名词.新概念往往简单准确,既可以被大众接受,又可以被专家把玩, ...

  3. 旧文重发:IP 库的那些事儿之 2013 - 2014 流水帐版~

    重发前言:这篇文章是我在开始做 IP 库后的第一篇相关的文章,是我到现在为止,阅读量最大的文章,也是让这个事情直接上了一个台阶的文章,在这个文章发布之后的一个月内,我们增加了 60 多个客户.其实拿现 ...

  4. 旧文重发:剑走偏锋:非主流的程序员

    这篇文章发表于<程序员>2007.06期. 剑走偏锋:非主流的程序员 引子 在冷兵器时代,大概刀剑算是主流的武器,在军营中,则以长枪.弓箭为主.然而我前两天看了一篇文章,说短棍成为现代实战 ...

  5. redis 集群搭建_一文轻松搞懂redis集群原理及搭建与使用

    转载:https://juejin.im/post/5ad54d76f265da23970759d3 作者:SnailClimb 这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助. ...

  6. 旧文重发:做人、做事,做架构师——架构师能力模型解析

    这篇文章发表于<程序员>2008.04期.其中有关模型图参见: http://blog.csdn.net/aimingoo/archive/2007/06/26/1667508.aspx ...

  7. python主要用于系统编程_一文带你了解python是什么?能做什么?为什么(附赠40G项目实战+绝版电子书)...

    什么是 Python? Python 是一门流行的编程语言.它由 Guido van Rossum 创建,于 1991 年发布. 它用于:当然小编这里也准备一份适合你的学习资料爬虫 ,python学习 ...

  8. 获取系统分辨率_一文弄懂高分辨率高速快门CMOS成像传感器技术应用现状

    CMOS图像传感器是如何一步步占领市场的?ams面扫描成像传感器高级应用工程师Pieterjan Daeleman认为机器视觉行业对图像传感器的高分辨率.高速率性能的要求,带给CMOS图像传感器无限机 ...

  9. 旧文重发:程序员的七种武器

    这篇文章发表在<程序员>杂志2007.03期的专辑"程序员的武器大家谈"中. <程序员>:请谈谈您所定位的优秀程序员应该有哪些技能?您是怎样理解程序员七种武 ...

最新文章

  1. 快速排序 ——双游标、单游标实现
  2. JavaScript 技术篇-使用js代码获取浏览器窗口标题名,js获取页面URL地址
  3. 【java设计模式】-00目录
  4. c++构造函数详解(转)
  5. 百度开源业内首个口罩人脸检测及分类模型,携手开发者共同“抗疫”
  6. MICCAI 2019 :纪录、风向与学术思考
  7. 安装Cocoapods,以及其中出现的问题
  8. 轨迹规划当中用到的多项式插值和样条曲线
  9. Kubernetes 1.5安装
  10. 2017上海ACM ECL-final 总结
  11. 论文赏析[AI18]更快的基于非二叉化自底向上策略的转移系统成分句法分析
  12. 为什么微软邮箱(outlook.live.com)一个邮件也收不到
  13. 微型计算机设计总结报告,微机课程设计心得体会范文
  14. 如何逃出【 AI 换脸的世界】
  15. Qt for linux 安装
  16. Python爬取人民网夜读文案
  17. linux右键没有创建新文件夹,将新建文档添加回Ubuntu 18.04中的右键菜单
  18. linux三剑客有什么区别,学习Linux三剑客
  19. 从GitHub火到了博客,共计1658页的《Java岗面试核心MCA版》,拿走不谢
  20. OCH1661全极超低功耗1.9ua霍尔开关

热门文章

  1. 美猴云2016新品发布会——天互市场总监徐飞精彩演讲回顾
  2. 这5个图片素材库,你一定要知道~
  3. BLheli-F330电调相关实验方案
  4. SEM 最全网络营销基础
  5. 使用 NVMe 加速云原生应用程序
  6. Snort入门(二)
  7. 六月集训(第13天) —— 双向链表
  8. 极坐标计算重积分交换积分次序
  9. 目标立体检测 红外图像_一种红外运动目标检测及其三维信息叠加的装置和方法与流程...
  10. css渐变 百分比的理解