2016-03-28 1 views
0

Помимо генерации выходного файла, используя wc -l output.txt и -1 разделите на 2 и head -50 output.txt, есть ли какой-либо простой способ для автоматического подсчета количества решений внутри minizinc и печати первых 50 решений? Моя программа запускается 12 часов в одном сценарии, а другая - 2 дня!Minizinc - подсчет количества решений и печать первых 50 только для проверки

Кроме того, любой способ, в пакетном режиме (не IDE) для создания использования ресурсов, кроме использования времени minizinc ...

Спасибо за советы

+0

Для этого вам понадобится программа для третьей части. Предпочтительно что-то, что может читать поток (stdout) и считать некоторый символ, и один раз 50 достигнут, прервать программу. Я не уверен, что программа командной строки может это сделать, и вам может понадобиться сценарий на каком-то реальном языке программирования. – Kobbe

+0

Невозможно отменить, так как еще нужно подсчитать количество решений. Просто, чтобы не генерировать 2 ГБ + файл журнала (это +, поскольку простая модель требует 12 часов +, чтобы закончить, и я думаю, что никогда не будет ждать достаточно долго. Я только знал, что решение проблемы занимает всего 1,5 минуты, чтобы использовать Node.js) , Старайтесь не сдаваться, но ... –

+0

Но MiniZinc печатает решения для stdout, когда он их находит. Запустите MiniZinc в режиме командной строки с http://stackoverflow.com/questions/2804543/read-subprocess-stdout-line-by-line и прочитайте вывод в режиме реального времени. Как только вы найдете свои 50 решений, убейте подпроцесс. – Kobbe

ответ

1

Программа командной строки «minizinc», а также наиболее FlatZinc решатели поддерживают параметр «-n», который представляет собой число решений для отображения. В среде MiniZinc IDE есть опция «Остановить после этого множество решений:».

Обратите внимание, что это относится к проблемам удовлетворенности. Однако для задач оптимизации нет единого мнения о том, как разные решатели обрабатывают «-n».

 Смежные вопросы

  • Нет связанных вопросов^_^