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. 测开之路三十:Flask基础之jinja2模板继承

    实现某些位置的内容固定,某些位置的内容动态展示,如: 中文文档地址:http://docs.jinkan.org/docs/jinja2/templates.html#template-inherit ...

  2. mvc 当中 [ValidateAntiForgeryToken] 的作用 转载https://www.cnblogs.com/hechunming/p/4647646.html

    一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSR ...

  3. git设置忽略文件.gitignore

    在仓库目录下新建一个名为.gitignore的文件(因为是点开头,没有文件名,没办法直接在windows目录下直接创建,必须通过右键Git Bash,按照linux的方式来新建.gitignore文件 ...

  4. js中的attributes和Attribute的用法和区别。

    一:Attribute的几种用法和含义(attributes和Attribute都是用来操作属性的) getAttribute:获取某一个属性的值: setAttribute:建立一个属性,并同时给属 ...

  5. Java并发Lock接口

    java.util.concurrent.locks.Lock接口用作线程同步机制,类似于同步块.新的锁定机制更灵活,提供比同步块更多的选项. 锁和同步块之间的主要区别如下: 序列的保证 - 同步块不 ...

  6. Cocos2d-x之Array

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. Array是一个列表类容器,是一种线性序列结构:列表容器中的元素是有序的,可以通过下标来访问,就和数组一样.其中Vector也是一种列表容 ...

  7. 洛谷 P1197 [JSOI2008]星球大战——并查集

    先上一波题目 https://www.luogu.org/problem/P1197 很明显删除的操作并不好处理 那么我们可以考虑把删边变成加边 只需要一波时间倒流就可以解决拉 储存删边顺序倒过来加边 ...

  8. ThreadLocal相关

    转自:http://blog.csdn.net/lufeng20/article/details/24314381 ThreadLocal是什么 早在JDK 1.2的版本中就提供Java.lang.T ...

  9. <每日一题>题目4:for循环套生成器的面试题

    题目: def add(n,i): return n+i def test(): for i in range(4): yield i g = test() for n in [1,10,5]: g ...

  10. sqlalchemy防sql注入

    银行对安全性要求高,其中包括基本的mysql防注入,因此,记录下相关使用方法: 注意:sqlalchemy自带sql防注入,但是在 execute执行 手写sql时 需要考虑此安全问题 对于 wher ...