[PDDL人工智能] 02PDDL规划领域定义语言之语法理解和示例详解
智能规划来源于人工智能对理性行为研究,针对一个具体行为的实施目的,开展动作规划以模拟或指导行为的实施,是AI开展研究的关键问题。本文主要介绍PDDL规划领域定义语言的基础语法知识和示例详解,希望文章对您有所帮助。
该系列文章主要介绍PDDL人工智能知识,由于自己也是初学者,所以欢迎大家批评指正,一起加油喔~
文章目录一.PDDL简介二.PDDL基础语法知识三.入门示例详解1.domain.pddl2.question.pddl3.运行结果4.逻辑解释四.总结前文赏析:
[PDDL人工智能]01.PDDL规划器安装及入门详解(规划领域定义语言)一.PDDL简介PDDL:PlanningDomainDefinitionLanguage规划领域定义语言,是一种解决人工智能规划问题的比较前沿的方法。PDDL常用于解决智能规划问题,例如机器人将一个屋子的球搬运到另一间屋子里,通过合理的组织流程建造一间房子等。PDDL的规划任务(planningtask)由五部分组成。
Objects(对象)Thingsintheworldthatinterestus.Predicates(谓词)Propertiesofobjectsthatweareinterestedin;canbetrueorfalse.Initialstate(初始状态)Thestateoftheworldthatwestartin.Goalspecification(目标规范)Thingsthatwewanttobetrue.Actions/Operators(操作/运算符)Waysofchangingthestateoftheworld.定义规划任务的三要素:
状态动作:动作是规划问题的一个关键部分目标PDDL指定的规划任务分为两个文件,domain文件和problem文件。
Adomainfile(域文件)forpredicatesandactions.Aproblemfile(问题文件)forobjects,initialstateandgoalspecification.DomainFiles域文件定义如下:
(define(domain)[...]):domainname,是标识规划域的字符串,例如gripper,后续gripper.pddl会详细介绍。ProblemFiles问题文件定义如下:
(define(problem)(:domain)):problemname,是一个标识计划任务的字符串,例如gripper-four-balls。:domainname,必须与对应域名文件中的域名匹配,详见gripper-four.pddl文件。推荐下列参考资料:
VisualStudioCode官方PDDL详情介绍http://www.cse.ust.hk/~qyang/221/introtopddl2.pdfhttp://www.cs.cmu.edu/~mmv/planning/readings/98aips-PDDL.pdfhttps://github.com/nergmada/planning-wiki/tree/master/docs/reference/PDDLhttps://planning.wiki/二.PDDL基础语法知识四个球移动的任务(Grippertaskwithfourballs):假设有一个机器人可以在两个房间之间移动,并用两条手臂中的任何一条捡起或扔掉球。最初,所有球和机器人都在第一个房间,我们希望移动球到第二个房间中。
对象:两个房间、四个球和两个机械臂。Objects:Thetworooms,fourballsandtworobotarms.谓词:x是一个房间?x是球?球x在房间y内?机械臂x是空的吗?Predicates:Isxaroom?Isxaball?Isballxinsideroomy?Isrobotarmxempty?[…]初始状态:所有球和机器人都在第一个房间,所有机器人手臂都是空的。Initialstate:Allballsandtherobotareinthefirstroom.Allrobotarmsareempty.[…]目标说明:所有球必须在第二个房间。Goalspecification:Allballsmustbeinthesecondroom.动作/操作:机器人可以在房间之间移动、捡球或丢球。Actions/Operators:Therobotcanmovebetweenrooms,pickupaballordropaball.接下来简单给出基本定义,由于其英语直译非常明确,这里仅给出描述,下一篇文章再进行详细的语法介绍。
Grippertask:Objects
Grippertask:Predicates
Grippertask:Initialstate
初始状态四个球都在房间rooma中Grippertask:Goalspecification
目标:将四个球移动到roomb中Grippertask:Movementoperator
移动操作:机器人从x移动到yGrippertask:Pick-upoperator
pick-up操作:机器人使用z从y中捡起xGrippertask:Dropoperator
drop操作:机器人使用z从y中丢掉xANoteonActionEffects
三.入门示例详解1.domain.pddl规划域描述整个规划世界的基础构成信息,包括实体类型、实体实例化、谓词逻辑状态、实体状态等。
定义:谓词和动作示例代码如下:
(define(domaingripper-strips)(:requirements:negative-preconditions)(:predicates(room?r)(ball?b)(at?b?r)(at-robby?r)(gripper?g)(free?g)(carry?b?g))(:actionpick:parameters(?obj?room?gripper):precondition(and(ball?obj)(room?room)(gripper?gripper)(free?gripper)(at?obj?room)(at-robby?room)):effect(and(not(free?gripper))(carry?obj?gripper)(not(at?obj?room))))(:actionmove:parameters(?from?to):precondition(and(room?from)(room?to)(at-robby?from)):effect(and(at-robby?to)(not(at-robby?from))))(:actiondrop:parameters(?room?ball?gripper):precondition(and(room?room)(ball?ball)(at-robby?room)(gripper?gripper)(not(free?gripper))(carry?ball?gripper)(at-robby?room)):effect(and(free?gripper)(at?ball?room)(not(carry?ball?gripper)))))2.question.pddl问题域描述在这样的规划世界中一个具体问题的条件与目标。
目标:将ball1和ball2两个球从a房间移动到b房间定义:对象、初始状态和目标规范示例代码如下:
(define(problemsolve)(:domaingripper-strips)(:objectsroomaroombball1ball2leftright)(:init(roomrooma)(roomroomb)(ballball1)(ballball2)(gripperleft)(gripperright)(freeleft)(freeright)(atball1rooma)(atball2rooma)(at-robbyrooma))(:goal(and(atball1roomb)(atball2roomb))))3.运行结果运行结果如下图所示:
Planningservice:http://solver.planning.domains/solveDomain:gripper-strips,Problem:solve---OK.Matchtreebuiltwith18nodes.PDDLproblemdescriptionloaded:Domain:GRIPPER-STRIPSProblem:SOLVE#Actions:18#Fluents:14Landmarksfound:2StartingsearchwithIW(timebudgetis60secs)...rel_plansize:5#RP_fluents7Caption{#goals,#UNnachieved,#Achieved}->IW(max_w){2/2/0}:IW(1)->[2][3][4]rel_plansize:4#RP_fluents6{2/1/1}:IW(1)->[2][3][4][5][6][7];;NOTI-REACHABLE;;Totaltime:4.47035e-10Nodesgeneratedduringsearch:42Nodesexpandedduringsearch:35IWsearchcompletedStartingsearchwithBFS(novel,land,h_add)...--[4294967295/8]----[1/8]----[1/6]----[1/5]----[1/4]----[1/2]----[1/1]----[1/0]----[0/0]--Totaltime:4.47035e-10Nodesgeneratedduringsearch:22Nodesexpandedduringsearch:7Planfoundwithcost:7BFSsearchcompleted0.00100:(pickball2roomaleft)0.00200:(moveroomaroomb)0.00300:(droproombball2left)0.00400:(moveroombrooma)0.00500:(pickball1roomaleft)0.00600:(moveroomaroomb)0.00700:(droproombball1left)Plannerfound1plan(s)in0.689secs.另一种运行结果如下图所示:
4.逻辑解释下面介绍该实例的智能规划逻辑。
前提:假设存在两个房间(Rooma和Roomb)、两个球(Ball1和Ball2)机器人拥有左手和右手,且机器人和球初始位置是Rooma房间。
actionpickactionmoveactiondrop问题:如何将两个球从房间Rooma移动到Roomb?
第一步:机器人左手提起Ball1。
第二步:机器人移动至Roomb。
第三步:机器人释放Ball1。
第四步:机器人移动至Rooma。
第五步:机器人右手拿起Ball2。
第六步:机器人移动至Roomb。
第七步:机器人右手释放Ball2。
至此,完成移动任务。PDDL显示的逻辑路线如下图所示:
另一种方法如下图所示:机器人捡起两个球移动再释放。
四.总结写到这里,本文就介绍完毕,希望对您有所帮助。
一.PDDL简介二.PDDL基础语法知识三.入门示例详解1.domain.pddl2.question.pddl3.运行结果4.逻辑解释四.总结大学之道在明明德,在亲民,在止于至善。这周又回答了很多博友的问题,有大一学生的困惑,有论文的咨询,也有老乡和考博的疑问,还有无数博友奋斗路上的相互勉励。虽然自己早已忙成狗,但总忍不住去解答别人的问题。最后那一句感谢和祝福,永远是我最大的满足。虽然会花费我一些时间,但也挺好的,无所谓了,跟着心走。不负遇见,感恩同行。莫愁前路无知己,继续加油。晚安娜和珞。
(By:Eastmount2023-01-12夜于贵阳http://blog.csdn.net/eastmount/)
参考文献:
DongboxPDDL-CSDN谢小波老师pddl智能规划语言基础学习笔记-知乎寻风者风寻老师https://github.com/KCL-Planning/VALhttps://www.youtube.com/watch?v=XW0z8Oik6G8https://marketplace.visualstudio.com/items?itemName=jan-dolejsi.pddlPDDLTooling-Episode1:Planning.Domainssessionhttps://www.programmersought.com/article/47365369263/https://arxiv.org/pdf/2008.11069.pdfhttps://blog.csdn.net/HitmeowEcho/article/details/105982457人工智能的应用
众所周知,刷脸认证、自动驾驶、大数据推送、智能音箱、手术机器人……人工智能被广泛应用于各个领域,由此引起的数据伪造、算法瓶颈、隐私安全、伦理困境等问题也日益凸显。“AI基础设施建设亟需从自身底层能力增强出发,以内生驱动力突破算法关、数据关、应用关三大关卡,向算法可靠、数据安全和应用可控的第三代人工智能迈进。
一、什么是人工智能?
人工智能(ArtificialIntelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。
人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的“容器”。人工智能可以对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。
人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种“复杂工作”的理解是不同的。2017年12月,人工智能入选“2017年度中国媒体十大流行语”。
二、人工智能的分类
人工智能的定义可以分为两部分,即“人工”和“智能”。“人工”比较好理解,争议性也不大。有时我们会要考虑什么是人力所能及制造的,或者人自身的智能程度有没有高到可以创造人工智能的地步,等等。但总的来说,“人工系统”就是通常意义下的人工系统。
关于什么是“智能”,就问题多多了。这涉及到其它诸如意识(CONSCIOUSNESS)、自我(SELF)、思维(MIND)(包括无意识的思维(UNCONSCIOUS_MIND))等等问题。人唯一了解的智能是人本身的智能,这是普遍认同的观点。但是我们对我们自身智能的理解都非常有限,对构成人的智能的必要元素也了解有限,所以就很难定义什么是“人工”制造的“智能”了。因此人工智能的研究往往涉及对人的智能本身的研究。其它关于动物或其它人造系统的智能也普遍被认为是人工智能相关的研究课题。
人工智能在计算机领域内,得到了愈加广泛的重视。并在机器人,经济政治决策,控制系统,仿真系统中得到应用。
例如繁重的科学和工程计算本来是要人脑来承担的,如今计算机不但能完成这种计算,而且能够比人脑做得更快、更准确,因此当代人已不再把这种计算看作是“需要人类智能才能完成的复杂任务”,可见复杂工作的定义是随着时代的发展和技术的进步而变化的,人工智能这门科学的具体目标也自然随着时代的变化而发展。它一方面不断获得新的进展,另一方面又转向更有意义、更加困难的目标。
通常,“机器学习”的数学基础是“统计学”、“信息论”和“控制论”。还包括其他非数学学科。这类“机器学习”对“经验”的依赖性很强。计算机需要不断从解决一类问题的经验中获取知识,学习策略,在遇到类似的问题时,运用经验知识解决问题并积累新的经验,就像普通人一样。我们可以将这样的学习方式称之为“连续型学习”。但人类除了会从经验中学习之外,还会创造,即“跳跃型学习”。这在某些情形下被称为“灵感”或“顿悟”。一直以来,计算机最难学会的就是“顿悟”。或者再严格一些来说,计算机在学习和“实践”方面难以学会“不依赖于量变的质变”,很难从一种“质”直接到另一种“质”,或者从一个“概念”直接到另一个“概念”。正因为如此,这里的“实践”并非同人类一样的实践。人类的实践过程同时包括经验和创造。这是智能化研究者梦寐以求的东西。
实际应用:机器视觉,指纹识别,人脸识别,视网膜识别,虹膜识别,掌纹识别,专家系统,自动规划,智能搜索,定理证明,博弈,自动程序设计,智能控制,机器人学,语言和图像理解,遗传编程等。
三、应用范畴
学科范畴:人工智能是一门边缘学科,属于自然科学和社会科学的交叉。
涉及学科:哲学和认知科学,数学,神经生理学,心理学,计算机科学,信息论,控制论,不定性论
研究范畴:自然语言处理,知识表现,智能搜索,推理,规划,机器学习,知识获取,组合调度问题,感知问题,模式识别,逻辑程序设计软计算,不精确和不确定的管理,人工生命,神经网络,复杂系统,遗传算法
意识和人工智能P:人工智能就其本质而言,是对人的思维的信息过程的模拟。
对于人的思维模拟可以从两条道路进行,一是结构模拟,仿照人脑的结构机制,制造出“类人脑”的机器;二是功能模拟,暂时撇开人脑的内部结构,而从其功能过程进行模拟。现代电子计算机的产生便是对人脑思维功能的模拟,是对人脑思维的信息过程的模拟。
弱人工智能如今不断地迅猛发展,尤其是2008年经济危机后,美日欧希望借机器人等实现再工业化,工业机器人以比以往任何时候更快的速度发展,更加带动了弱人工智能和相关领域产业的不断突破,很多必须用人来做的工作如今已经能用机器人实现。
而强人工智能则暂时处于瓶颈,还需要科学家们和人类的努力。
四、实现方法
人工智能在计算机上实现时有2种不同的方式。一种是采用传统的编程技术,使系统呈现智能的效果,而不考虑所用方法是否与人或动物机体所用的方法相同。这种方法叫工程学方法(ENGINEERINGAPPROACH),它已在一些领域内作出了成果,如文字识别、电脑下棋等。另一种是模拟法(MODELINGAPPROACH),它不仅要看效果,还要求实现方法也和人类或生物机体所用的方法相同或相类似。遗传算法(GENERICALGORITHM,简称GA)和人工神经网络(ARTIFICIALNEURALNETWORK,简称ANN)均属后一类型。遗传算法模拟人类或生物的遗传-进化机制,人工神经网络则是模拟人类或动物大脑中神经细胞的活动方式。
为了得到相同智能效果,两种方式通常都可使用。采用前一种方法,需要人工详细规定程序逻辑,如果游戏简单,还是方便的。如果游戏复杂,角色数量和活动空间增加,相应的逻辑就会很复杂(按指数式增长),人工编程就非常繁琐,容易出错。而一旦出错,就必须修改原程序,重新编译、调试,最后为用户提供一个新的版本或提供一个新补丁,非常麻烦。
采用后一种方法时,编程者要为每一角色设计一个智能系统(一个模块)来进行控制,这个智能系统(模块)开始什么也不懂,就像初生婴儿那样,但它能够学习,能渐渐地适应环境,应付各种复杂情况。这种系统开始也常犯错误,但它能吸取教训,下一次运行时就可能改正,至少不会永远错下去,用不到发布新版本或打补丁。利用这种方法来实现人工智能,要求编程者具有生物学的思考方法,入门难度大一点。
但一旦入了门,就可得到广泛应用。由于这种方法编程时无须对角色的活动规律做详细规定,应用于复杂问题,通常会比前一种方法更省力。
过去十年来,人们广泛讨论如何将人工智能(AI)引入计算领域,并允许机器从经验中学习,做出类似人类的决策,从而几乎改变我们经济的每一个环节。人工智能项技术多应用在帮助企业自动化日常任务,通过分析客户的行为更好地了解他们的客户,降低运营成本,以及在不同行业个性化服务产品,无论是金融银行,还是交通运输、安防保卫、医疗健康等领域,都逐渐展现出AI独特的优势。
人工智能技术发展的步伐不会止步,当层出不穷的新算法、新代码出现时,新产品市场的机会大大增加了,而面临的非授权使用和恶意篡改风险无疑也随之增长,数字版权的保护任重道远。
来源:21IC电子网