2016-03-28 17 views
0

kontrol etmek için yazdırmak Bir çıkış dosyası oluşturmaktan başka, wc -l output.txt ve -1 bölme kullanarak 2 ve head -50 output.txt kullanarak, herhangi bir kolay yol var mı minizinc içinde çözelti saymaz ve ilk 50 çözümü yazdırır mı? Programım bir senaryoda 12 saat koşuyor, diğeri ise 2 gün sürmesi bekleniyor! AyrıcaMinizinc - çözüm sayısını saymak ve sadece ilk 50'yi

, zaman minizinc kullanmak yerine diğer kaynaklar kullanımını üretmek için toplu modunda (ide) 'de herhangi bir yolu ... tavsiye

+0

Bunu yapmak için üçüncü bir programa ihtiyacınız olacak. Tercihen bir akışı okuyabilecek (stdout) ve bazı sembolleri sayıp 50'ye ulaşan bir programa geçilir. Bir komut satırı programının bunu yapabileceğinden emin değilim ve bazı gerçek programlama dillerinde bir senaryona ihtiyacınız olabilir. – Kobbe

+0

Hala çözüm sayısını saymak zorunda kalmazsınız. Sadece 2 GB + log dosyası üretmekten kaçınmak için (basit model olarak bitirmek için 12 saat + yeterlidir ve bence yeterince uzun beklemem. Sadece bu sorunun çözümü için sadece 1.5 dakika sürdüm.) . Vazgeçmemeye çalışın ama ... –

+0

MiniZinc, çözümleri bulduğunda çözümlere basıyor. MiniZinc'i http://stackoverflow.com/questions/2804543/read-subprocess-stdout-line-by-line ile komut satırı modunda başlatın ve çıktıyı gerçek zamanlı olarak okuyun. 50 çözümünüzü bulduktan sonra alt işlemi durdurun. – Kobbe

cevap

1

komut satırı programı "minizinc" yanı çoğu gibi FlatZinc için

Teşekkür Çözücüler, gösterilecek çözümlerin sayısı olan "-n" parametresini destekler. MiniZinc IDE, "Bu kadar çok çözümden sonra dur" seçeneğine sahiptir.

Bunun memnuniyet sorunları ile ilgili olduğunu unutmayın. Bununla birlikte, optimizasyon problemleri için, farklı çözücülerin "-n" yi nasıl kullandıkları konusunda fikir birliği yoktur.

İlgili konular