人工智能入门 您所在的位置:网站首页 strips语言 人工智能入门

人工智能入门

2023-12-27 08:37| 来源: 网络整理| 查看: 265

作为一个刚刚学习人工智能的小白,对许多的知识都表示一脸懵逼。随着课程进展到规划问题,不可避免地与pddl相遇,经历了一段时间的学习,下面以小白的角度简要介绍一下pddl,并且附带简例说明。

Planning Domain Definition Language(简称pddl,规划区域定义语言)

是一种标准化的人工智能规划语言,主要涉及到逻辑学以及规划任务问题,这里不细说。大家可以自行谷歌,这有一个关于pddl的PDF文件,里面包含了简介以及最基本的语法,在开启学习之前,首先得自己先了解基本的语法内容。下面是一个最简单的例子。该例子模拟了一个机器人清洁两个房间的简单过程。

domain文件:

(define (domain state)          //domain命名,怎么喜欢怎么来 (:predicates (room ?r)        //谓词,这里应该包括该文件中出现的所有的谓词逻辑,不然会error:Undefined,这里判断是不是room (robot ?rob)       //这里则是判断一个抽象对象rob是不是robot (at-robot ?r) //判断robot是不是在room r中 (dirty ?r)        //判断room r是不是脏的 (clean ?r)        //判断room r是不是干净的 (fullPower ?rob))    //判断机器人robot是不是有电 (:action sweep             //扫地动作 :parameters(?robot ?r)      //设置参数 :precondition           //前提条件(前件) (and              //and的意思是以下括号内的都必须为真 (robot ?robot)      //这个对象robot是robot为真 (room ?r)         //这个对象r是room为真 (dirty ?r)        //这个r是dirty的 (at-robot ?r)      //而且robot在r中刚好为真 (fullPower ?robot)   //机器人有电 ) :effect               //满足以上条件,执行扫地动作,效果为如下 (and                     (clean ?r)        //r已经干净了 (not   (dirty ?r)      //r不脏 ) (not (fullPower ?robot) //机器人没电,默认为扫一个房间即耗尽电量 ) ) ) (:action charging            //充电动作 :parameters(?robot ?r) //两个参数为robot跟r,就近充电 :precondition (and    (robot ?robot)         (room ?r) (at-robot ?r) (clean ?r) (not (fullPower ?robot) ) ) :effect (and (fullPower ?robot)    //充满电,可进行下一动作 ) ) (:action move               //移动动作 :parameters (?from ?to)      //从from移动到to :precondition (and (dirty ?to)       //移动的前提:to还是脏的,from已经扫干净了,而且robot在扫干净的房间里,想移动到脏的房间 (clean ?from) (room ?from) (room ?to) (at-robot ?from) ) :effect (and (at-robot ?to)       //效果:到达脏的房间,离开干净的房间 (not (at-robot ?from) ) ) ) )

problem(测试)文件:

(define (problem solve) (:domain state) (:objects rooma roomb robot     //设置对象,这个例子比较简单,只有三个对象,房间a房间b还有机器人 ) (:init               //初始化起始状态,有两个房间,都是脏的,机器人在房间a并且满电,注意此处不用(room ?rooma) (room rooma) (room roomb) (robot robot) (dirty rooma) (dirty roomb) (at-robot rooma) (fullPower robot) ) (:goal //设定这个规划问题最终要达到的目标状态,两个房间是干净的,并且机器人仍旧是满电待命的 (and (clean rooma) (clean roomb) (fullPower robot) ) ) )

运行结果:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有