1

我是一名从中国开始学习SHOP2的学生。我的老师告诉我在Eclipse中运行JSHOP2。现在我可以运行原始的zenotravel问题并生成GUI和计划。同样,我想将其他领域和问题放到SHOP2并生成计划。但问题是我不知道如何编译它们,我的老师只要求我在 Internaldomain 中运行 main 函数但它不能成功。以下是原始代码:

 public static void main(String[] args) throws Exception
 {
    //compile();    
    // compile(args);

    //-- run the planning algorithm
    run(args);   
 }

此代码可以运行zenotravel。然后我将域和问题分别命名为pfile1和tdepots到SHOP2文件夹中。将代码更改为:

{
compile(domaintdepots);    
// compile(args);

//-- run the planning algorithm
run(args);

}

它警告“域pdf文件无法解析为变量”。

或者

        //--compile();    
         compile(args);

        //-- run the planning algorithm
        //run(args);    

事实证明:

"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at JSHOP2.InternalDomain.compile(InternalDomain.java:748)
    at JSHOP2.InternalDomain.main(InternalDomain.java:720)"

720是上面的主要功能。而748是编译功能:

public static void compile(String[] args) throws Exception
 {
        //-- The number of solution plans to be returned.
        int planNo = -1;

        //-- Handle the number of solution plans the user wants to be returned.
        if (args.length == 2 || args[0].substring(0, 2).equals("-r")) {
          if (args[0].equals("-r"))
            planNo = 1;
          else if (args[0].equals("-ra"))
            planNo = Integer.MAX_VALUE;
          else try {
            planNo = Integer.parseInt(args[0].substring(2));
          } catch (NumberFormatException e) {
          }
        }

最后,根据朋友的建议,我把这两个pddl放到src文件夹下,在CMD命令中使用“java Jshop2.InternalDomain domaintdepots”却出现错误:“main class Interdomain can't be found or loaded”。但是我已经准确地设置了类路径,Zenotravel 规划可以运行了。那么该命令在哪里以及如何使用?Eclipse 中括号“compile()”中写的是什么?</p>

我也不熟悉JAVA,所以如果有具体的说明会更好。非常感谢。

4

1 回答 1

0

请描述您要构建什么,它应该做什么,预期的最终结果是什么。

如果您确实有一个有效的 PDDL 域和问题文件,您可以尝试使用“文件”>“加载”菜单将它们加载到在线http://editor.planning.domains/编辑器中。然后按解决按钮并确认哪个文件是域,哪个是问题。如果 PDDL 模型有效(并且底层求解器可以处理要求),您将获得一个计划。

如果您正在尝试构建一个需要基于 PDDL 的规划引擎作为其组件之一的软件解决方案,也许您可​​以使用其中一种可用的实现:https ://nergmada.github.io/pddl-reference/guide/whatisplanner .html#list-of-planners

如果您尝试使用 Eclipse IDE 在 Java 中构建自己的规划引擎,那么您可能需要一个基于 Java 的 PDDL 解析器。这是一个教程,如何为此目的使用 pddl4j:

https://github.com/pellierd/pddl4j/wiki/A-tutorial-to-develop-your-own-planner

如果您特别需要使用 Jshop2,从他们的文档 ( http://www.cs.umd.edu/projects/shop/description.html ) 中可以看出,您确实需要使用将域和问题 PDDL 编译成 Java 代码以下命令:

java JSHOP2.InternalDomain domainFileName

java JSHOP2.InternalDomain -r problemFileName

6月19日编辑

Java 包名(例如JSHOP2)和类名(InternalDomain)区分大小写,因此请确保根据文档键入它们。这可能就是您收到“找不到主类错误”的原因。

很难说第 748 行和第 720 行的确切对应是什么,因为在 GitHub 存储库https://github.com/mas-group/jshop2/blob/master/src/JSHOP2/InternalDomain.java中的代码是不同的从你的。你能在你的问题中指出那些确切的行吗?

make 文件显示了如何在发行版中执行一个开箱即用的示例:

cd examples\blocks
java JSHOP2.InternalDomain blocks
java JSHOP2.InternalDomain -r problem300

那对你有用吗?

于 2019-06-18T22:00:21.437 回答