JSHOP2是一个HTN(hierarchy task network)规划器,是SHOP2(simple hierarchy ordered planner )的java实现版本。

SHOP2的官网链接:http://www.cs.umd.edu/projects/shop/description.html

但是这个链接上是没有JSHOP2的源代码的:)

JSHOP2源代码链接:https://github.com/mas-group/jshop2

SHOP(简单的分层有序计划器),JSHOP和SHOP2是与域无关的自动计划系统。它们基于有序任务分解,它是一种 分层任务网络(HTN)计划。

HTN规划中规划系统从初始的世界状况开始,其目标是创建执行一组任务的计划(需要完成的事情的抽象表示)。HTN计划是通过减少问题来完成的:计划者将任务递归地分解为子任务,并在到达可以由计划操作员直接执行的原始任务时停止。为了告诉计划者如何将非原始任务分解为子任务,它需要一组方法,其中每种方法都是一种架构,用于将特定类型的任务分解为一组子任务(前提是满足某些前提条件)。对于每个任务,可能有不止一种适用的方法,因此有不止一种将任务分解为子任务的方式。规划人员可能必须先尝试其中几种分解方法,然后才能找到可以在较低水平解决的分解方法。与经典规划不同,HTN规划是图灵完备的。

一个有序的任务分解规划师是一个HTN规划师表示,计划在相同的顺序,他们将执行的任务。通过消除有关世界的大量不确定性,这降低了推理的复杂性,从而可以轻松地将大量表达力纳入计划算法中。除了常用的HTN方法和运算符之外,我们的计划人员还可以使用公理,可以混合符号/数字条件,并且可以进行外部函数调用。

我们第一个使用有序任务分解的计划系统是特定域的,即,它们是针对特定应用程序域量身定制的。其中包括EDAPS(一个用于集成产品设计和制造计划的系统)和Bridge Baron(一个玩桥的计算机程序),该程序赢得了1997年的计算机桥世界冠军,并且是成功的商业产品。

我们的第一个与域无关的有序任务分解实现是SHOP(简单分层有序计划程序)。可以将SHOP及其后续产品(最新的是SHOP2和JSHOP2)配置为在许多不同的计划域中工作。

2002年国际规划竞赛中,SHOP2解决了竞赛中每个规划领域的问题,总共解决了近1000个规划问题。SHOP2获得了比赛前四名的奖项之一。

我们最近的计划者是JSHOP2,它是SHOP2的Java实现(用Lisp编写)。除了使用Java外,JSHOP2还使用一种新的计划程序编译技术从SHOP2域描述中综合了与域相关的计划程序。这样,JSHOP2可以进行各种优化来加快执行速度。

jshop2是java开发的,自己动手把它转换为C#版本,并做了好界面用到定义任务描述文件。

代码:

界面如下:

这个是代码生成的一些示例。

这界面用来定义问题文件

示例

JSHOP2的更多相关文章

  1. HTN规划 jshop2

    http://www.cs.umd.edu/projects/shop/description.html 在HTN规划,规划体系从世界的初始状态和创建一个计划来执行一系列任务的目的(需要做的事情,抽象 ...

随机推荐

  1. java并发编程笔记(七)——线程池

    java并发编程笔记(七)--线程池 new Thread弊端 每次new Thread新建对象,性能差 线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或者OOM 缺 ...

  2. SSH服务搭建、账号密码登录远程Linux虚拟机、基于密钥的安全验证(Windows_Xshell,Linux)

    问题1:如果是两台虚拟机ping不同且其中一个虚拟机是克隆的另一个,需要更改一下MAC地址,关机状态下 一> "编辑虚拟机设置" 一>" 网络适配器" ...

  3. Java并发AtomicLongArray类

    java.util.concurrent.atomic.AtomicLongArray类提供了可以原子读取和写入的底层long类型数组的操作,并且还包含高级原子操作. AtomicLongArray支 ...

  4. Android(一)Android Eclipse环境搭建

    SDK Manager下载实在是太慢了,不知道什么时候能下完,所以我是通过手工下载的. Android SDK 手工下载各个包然后解压到Android对应的目录 API对应的是platforms目录 ...

  5. php分割url,获取参数query

    #测试网址: http://localhost/blog/testurl.php?id=5 //获取域名或主机地址echo $_SERVER['HTTP_HOST']."<br> ...

  6. ARM指令adr adrl ldr mov

    ADR是一条小范围的地址读取伪指令,它将基于PC的相对偏移的地址值读到目标寄存器中.格式:ADR register,exper. 编译源程序时,汇编器首先计算当前PC值(当前指令位置)到exper的距 ...

  7. Linux Shell脚本在service模式下的环境变量

    普通Shell脚本在终端下运行时,环境变量来自于init/profile/.bash_profile等,就是在当前终端下可以得到的环境,比如PATH.在service模式下,脚本运行在受限的环境中:比 ...

  8. 关于Django中ORM数据库迁移的配置

    Django中ORM数据库迁移配置 1,若想将模型转为mysql数据库中的表,需要在settings中配置: DATABASES = { 'default': { 'ENGINE': 'django. ...

  9. Linux 核心编译与管理

    一般情况下,不需要重新编译核心,除非以下特有的用途 [root@localhost ~]# wget ftp://ftp.twaren.net/pub/Unix/Kernel/linux/kernel ...

  10. 转载:java集合类数据结构分析

    数组是 最常用的数据结构.数组的特点是长度固定,可以用下标索引,并且所有的元素的类型都是一致的.数组常用的场景有把:从数据库里读取雇员的信息存储为 EmployeeDetail[],把一个字符串转换并 ...