2016-03-28 8 views
0

出力ファイルを生成する以外にwc -l output.txtを使用し、-1を2で割り、head50をoutput.txtで分割する以外に簡単な方法がありますminizinc内のソリューションを自動的にカウントせず、最初の50のソリューションを印刷しますか? 私のプログラムは1つのシナリオで12時間実行され、もう1つは2日間実行される予定です!またMinizinc - 解決の数をカウントして最初に印刷するだけで50をチェックする

、時間minizincを使用するよりも他のリソース使用率を生成するためのバッチモード(ないIDE)のいずれかの方法...アドバイス

+0

これを行うには、3番目のプログラムが必要です。ストリーム(stdout)を読み込み、何らかのシンボルを数えることができ、50に達すると、プログラムを中止することが好ましい。私はコマンドラインプログラムがそれを行うことができるとは確信していないし、いくつかの実際のプログラミング言語でスクリプトが必要かもしれない。 – Kobbe

+0

解決策の数を数えなければならないため、中断できません。シンプルなモデルは12時間以上が必要ですが、私は思ったほど長く待たないと思います.Node.jsを使用するのに1.5分しかかからない) 。あきらめないようにしてください... –

+0

しかし、MiniZincはソリューションを見つけたらそれを標準出力に出力します。コマンドラインモードでMiniZincをhttp://stackoverflow.com/questions/2804543/read-subprocess-stdout-line-by-lineで起動し、リアルタイムで出力を読み込みます。 50のソリューションが見つかったら、サブプロセスを終了します。 – Kobbe

答えて

1

コマンドラインプログラム「minizinc」だけでなく、ほとんどのFlatZincため

感謝ソルバは、表示する解の数であるパラメータ "-n"をサポートしています。 MiniZinc IDEには、「この多くのソリューションの後で停止する」オプションがあります。

これは満足度の問題に関連することに注意してください。しかし、最適化の問題については、異なるソルバーが "-n"をどのように扱うかについてコンセンサスはありません。

関連する問題