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. 九. jenkins用户权限管理

    由于jenkins默认的权限管理体系不支持用户组和角色的配置,所以需要使用第三方插件来支持角色的配置: Role-based Authorization Strategy 1.先安装插件,如下: 2. ...

  2. VS中C语言scanf函数报错

    在VS中创建C项目使用scanf方法时会如下报错 解决方案 方法1:文件中设置 在第一行设置代码    #define _CRT_SECURE_NO_WARNINGS 或者添加警告忽略     #pr ...

  3. 不同字符串,HashCode可能相同

    不同的字符串,hashcode可能相同. 先看例子: @Test public void test6(){ System.out.println("ABCDEa123abc".ha ...

  4. 使用Excel表格的记录单功能轻松处理工作表中数据的方法

    使用Excel表格的记录单功能轻松处理工作表中数据的方法 记录单是将一条记录分别存储在同一行的几个单元格中,在同一列中分别存储所有记录的相似信息段.使用记录单功能可以轻松地对工作表中的数据进行查看.查 ...

  5. upc组队赛14 As rich as Crassus【扩展中国剩余定理】

    As rich as Crassus 题目链接 题目描述 Crassus, the richest man in the world, invested some of his money with ...

  6. php的注释方法

    注释是每个程序员学习时的基础,我们通过可以注释来备注一信息.增加代码的可读性.下面我们就为大家介绍一下PHP的注释方法. 1, // 这是单行注释 2,# 这也是单行注释 3,/* */多行注释块   ...

  7. 准确获取URL地址参数

    http://localhost:8080/?state=app&code=021axrkH0Il7Df2bEQkH0DMjkH0axrkP 准确获取code的值 getQueryString ...

  8. HTTP面试题目

    转自:http://m.blog.csdn.net/zhangliangzi/article/details/51336564 1.说一下什么是Http协议? 对器客户端和 服务器端之间数据传输的格式 ...

  9. C++中类的静态成员变量

    1,成员变量的回顾: 1,通过对象名能够访问 public 成员变量: 2,每个对象的成员变量都是专属的: 3,成员变量不能在对象之间共享: 1,在做程序设计中,成员变量一般是私有的.至少不是公有的: ...

  10. 面试题。线程pingpong的输出问题

    第一种情况:public class Main { public static void main(String args[]) { Thread t = new Thread() { public ...