Почему Repast Simphony не может найти выходные данные модели в пакетном режиме?

Я пытаюсь выполнить пакетный прогон модели через графический интерфейс Simphony. У меня есть приемник текста с относительным путем "./Test_Data_FileSink", созданный в моем дереве сценариев. Этот файл создается и сохраняется за один проход через графический интерфейс. Однако, когда я выполняю пакетный запуск, в экземпляре localhost не создается файл. Когда я перехожу к экземпляру, я вижу debug.log, FAILURE_null, instance.log и param_input.txt, но не вижу файла Test_Data_FileSink. Пакетный процесс пытается скомпилировать данные по экземплярам и возвращает пустой файл batch_param_map.txt и Test_Data_FileSink.txt в указанном месте вывода.

Предупреждение отображается в окне настройки пакетного запуска ниже:

'WARN [SwingWorker-pool-2-thread-1] 12: 15: 28 906 repast.simphony.batch.ssh.OutputFinder - Не найдено выходных данных модели, соответствующих glob: {** \,} Test_Data_FileSink_ModelOutput * .txt в C: \ Users \ пользователь \ AppData \ Local \ Temp \ simphony_model_1582046063159 \ instance_1 '

В журнале консоли пакетного запуска есть дополнительная ошибка, в которой модель может искать пользовательский интерфейс.

repast.simphony.batch.InstanceRunner - Ошибка при запуске модели java.lang.NoClassDefFoundError: repast / simphony / ui / RSApplication

Пользовательский интерфейс GUI позволяет вводить параметры, но я не вижу, где модель зависит от ее запуска, если параметры уже установлены. Я попытался вставить несколько условных операторов в настройку пользовательского интерфейса.

if (!RunEnvironment.getInstance().isBatch()) {
 // do your GUI specific elements here
}

Это прерывает инициализацию Simphony, если я не разрешаю визуализировать пользовательский интерфейс, и, похоже, не имеет большого эффекта в тех местах, где я обнаружил, что он работает.

Что еще я должен попробовать?


person JD Caddell    schedule 18.02.2020    source источник
comment
Я думаю, что модель не запускается из-за ошибки, о которой вы говорите выше. Вы ссылаетесь на RSApplication или какие-либо внутренние классы Simphony в своей модели. Мы не включаем среду выполнения GUI в jar пакетной полезной нагрузки, потому что это не обязательно, на самом деле, на некоторых ресурсах безголового сервера ссылка на элемент GUI Java может вызвать ошибку.   -  person Nick Collier    schedule 19.02.2020
comment
Я начал работать с вашей демо-версии geoZombies (для контекста). Он ссылается на RSApplication внутри функции setUIEffects (). Когда я пытаюсь отключить вызов RSA с помощью предыдущего условного оператора пакета, он создает ошибку и не может загрузить Simphony. Я получаю подобное поведение, когда делаю то же самое внутри статического вызова setUIEffects () внутри ContextCreator. Я буду продолжать проверять ссылки и устранять неполадки.   -  person JD Caddell    schedule 19.02.2020


Ответы (1)


Класс SpecialEffects в модели GeoZombies ссылается на класс RSApplication, который недоступен в пакетном пути к классам, и в любом случае он не нужен в пакетном режиме, поскольку все, что он делает, это предоставляет некоторые визуальные и звуковые эффекты, его можно удалить из модели.

  1. Удалите класс SpecialEffects
  2. В ContextCreator удалите статический вызов SpecialEffects.setUIEffects ();
  3. В Human agent удалите вызов SpecialEffects.getInstance (). PlayEnragedZombies ();
  4. В зомби-агенте удалите вызовы SpecialEffects.getInstance () ...
person Eric Tatara    schedule 20.02.2020
comment
Прекрасный сэр. Работает без проблем. Спасибо за постоянную поддержку Repast. Здесь происходит много обучения. - person JD Caddell; 22.02.2020