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. opensuse 安装APACHE2+MYSQL+PHP5

    sudo zypper in apache2-mod_php5 apache2 mariadb 装好后, 记得启动APACHE2对PHP的支持: a2enmod php5 默认mysql密码为空, 可 ...

  2. offsetleft 和 style.left 的区别

    offsetLeft 获取的是相对于父对象的左边距: left 获取或设置相对于 具有定位属性(position定义为relative)的父对象 的左边距: 如果父div的position定义为rel ...

  3. nlp学习笔记

    https://mp.weixin.qq.com/s/-w4gENfBt2gKOPvghenw9w

  4. 测开之路三十八:css布局之定位

    常用的布局方式: static:静态定位(默认),什么都不用管,元素会按照默认顺序排列,排不下是会默认换行relative:相对定位(同一层),相对于某一个元素进行定位fixed:绝对定位,指定位置a ...

  5. 动态创建类/ swizzle class

    动态创建类 Class subclass = objc_allocateClassPair(baseClass, subclassName, );//生成,指定父类 //添加方法,变量...一些操作 ...

  6. maven(二),Linux安装maven3.5.3及配置

    Linux系统,ubuntu-16.04.4,安装maven3.5.3 一.创建文件夹 注意Linux用户,这个如果不是root用户,命令前面需要加:sudo //创建一个目录 mkdir /usr/ ...

  7. 第6章 RPC之道

    6.1 认识RPC 分布式.微服务的架构思维中都不能缺少 RPC 的影子 RPC(Remote Procedure Call)远程过程调用.通过网络在跨进程的两台服务器之间传输信息,我们使用的时候不用 ...

  8. Python里面search()和match()的区别?

    match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话, ...

  9. linux基本命令的简单介绍

    基本命令 man:查看帮助信息 :一般系统命令太多,要记住这些命令是不可能的,man是一个联机帮助信息 man提供大量的帮助信息,一般分为以下4各部分 NAME:对命令的简单介绍 SYNOPSIS对命 ...

  10. 初识PHP变量函数语法

    PHP连接字符串 . <?php '你好,'.'我的亲爱的老师'?> PHP语句结束符 <?php echo "欢迎同学们!"; echo "Welco ...