いくつかの研究問題を解決するために、Z3 と Yices と一緒に 1 年足らず働いています。これらのソルバーを使用して、常にパフォーマンスを評価する必要があります。特に、モデリング/チェックに必要な時間とスペース (メモリ) (充足可能性) の 2 つです。Z3の場合、それらを直接見つける手がかりは見つかりませんでした。「統計」(Z3 NET API が提供する関数「DisplayStatistics」を使用) を試してみたところ、(例) 以下に示すような出力が見つかりました。
番号。競合: 122
番号。決定: 2245
番号。伝播: 27884 (バイナリ: 21129)
番号。再起動: 1
番号。最終チェック: 1
番号。分。点灯: 52
番号。追加された式: 3766
番号。mk ブール変数: 2782
番号。デル ブール変数: 658
番号。mk エノード: 1723
番号。削除ノード: 78
番号。mk 句: 3622
番号。デル節: 1517
番号。mk bin 節: 3067
番号。mk 点灯: 18935
番号。ta 競合: 28
番号。行を追加: 5091
番号。ピボット: 328
番号。下をアサート: 2597
番号。アサートアッパー:3416
番号。Diseq をアサート: 1353
番号。バインドされた小道具: 787
番号。固定式: 697
番号。オフセット式: 866
番号。疑似nl.: 34
番号。式 アダプター: 820
これらの値を解釈して、使用されたメモリ/時間を理解する方法がわかりません。実行時間を見つける方法がいくつかあります (Stopwatch などのタイマー クラスを使用)。しかし、スペースが必要な場合は、方法が見つかりませんでした。モデリングに必要なブール変数 (低レベル、SAT ソルバー) の数を取得できれば、非常にうまく機能します。
誰かが私に解決策を示すことができれば、それは素晴らしいことです。