Как скомпилировать документы и запустить Jshop2 в Eclipse? - PullRequest
1 голос
/ 18 июня 2019

Я студент, который начинает изучать SHOP2 из Китая. Мой учитель сказал мне, чтобы я запускал JSHOP2 в Eclipse. Теперь я могу запустить исходную проблему zenotravel и генерировать GUI и планы. Точно так же я хочу поместить другой домен и проблемы в SHOP2 и создать планы. Но проблема в том, что я не знаю, как их скомпилировать, и мой учитель только попросил меня запустить функцию main в Internaldomain, но она не может быть успешной. Ниже приведен оригинальный код:

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

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

Этот код может запускаться zenotravel.Then я поставил домен и проблемы с именем pfile1 и tdepots соответственно в папку SHOP2. Измените коды на:

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

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

}

Предупреждает, что "domainpdfiles не может быть преобразован в переменную".

Или

        //--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 и использую «java Jshop2.InternalDomain domaintdepots» в CMD-запятом, но появилась ошибка: «основной класс Interdomain не может быть найден или загружен ". Но я точно установил путь к классу, и планирование Zenotravel может выполняться. и где я могу использовать команду? А что написано в скобке "compile ()" в Eclipse?

Я также не знаком с JAVA, поэтому лучше, если есть конкретные инструкции. Большое спасибо.

1 Ответ

0 голосов
/ 19 июня 2019

Пожалуйста, опишите, что вы пытаетесь построить, что он должен делать, каков ожидаемый конечный результат.

Если у вас есть действительный домен PDDL и файл проблемы, вы можете попробовать загрузить их в онлайн-редактор http://editor.planning.domains/, используя меню Файл> Загрузить .Затем нажмите кнопку Solve и подтвердите, какой файл является доменом, а какой проблемой.Если модель PDDL действительна (и базовый решатель может удовлетворить требования), вы получите план обратно.

Если вы пытаетесь создать программное решение, для которого в качестве одного из компонентов требуется механизм планирования на основе PDDL, возможно, вы могли бы использовать одну из доступных реализаций: https://nergmada.github.io/pddl-reference/guide/whatisplanner.html#list-of-planners

Если выпытаясь создать свой собственный механизм планирования в Java с помощью Eclipse IDE, вам, вероятно, нужен анализатор PDDL на основе Java.Вот учебник, как использовать 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

Отредактировано 19 июня

Имена пакетов Java (например, JSHOP2) и имена классов (InternalDomain) чувствительны к регистру, поэтому убедитесь, что вы вводите их в соответствии с документацией. Возможно, именно поэтому вы получаете сообщение об ошибке «main class not found».

Трудно сказать, какие строки имеют номера 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

Это работает для вас?

...