我是一名从中国学习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和 将tdepot分别放入SHOP2文件夹。将代码更改为:
{
compile(domaintdepots);
// compile(args);
//-- run the planning algorithm
run(args);
}
它警告“ domainpdfile无法解析为变量”。
或
//--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) {
}
}
最后,根据朋友的建议,我将两个pddls放入src文件夹,并在CMD中使用“ java Jshop2.InternalDomain domaintdepots”,但出现了错误:“找不到或加载主类Interdomain “。但是我已经正确设置了上课路径,Zenotravel规划可以运行。 在哪里可以使用该命令? Eclipse中括号“ compile()”中写的是什么?
我也不熟悉JAVA,所以最好有具体的指导。非常感谢。
答案 0 :(得分:0)
请描述您要构建的内容,应做的工作以及预期的最终结果。
如果您确实拥有有效的PDDL域和问题文件,则可以尝试使用 File> Load 菜单将它们加载到在线http://editor.planning.domains/编辑器中。然后按 Solve 按钮,并确认哪个文件是域,哪个是问题。如果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
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
对您有用吗?