2017-08-25 16 views
-2

私はZ3のminimize関数をたくさん使っていますが、私はいくつかのスケーラビリティの問題(最小化する変数の数が増えると)について心配しています。 "最小化"の根底にあるアルゴリズムは何ですか?そして、物事をスピードアップする一般的な方法はありますか?Z3での「最小化」の仕組み

答えて

1

Z3で使用される最適化アルゴリズムの詳細については、paperを参照してください。物事をスピードアップする一般的な方法についてのあなたの質問について、あなたがしようとしていることを正確に見ていなくて、それをどのようにエンコードしているのかを見ることはできません。物事が「拡大縮小」しない具体的な例を投稿すると役立つかもしれません。

+1

私の問題設定は簡単です:私は多値論理句C_1、...、C_mの最大数を満たすことに取り組んでいます。私はビットベクトルを使用します。 C_1またはB_1 C_2またはB_2 ... C_mまたはb_m とI最小限b_i年代:各句C_Iに対して が、私は新鮮な変数(ビット・ベクトル)b_iとそれを論理和 (最小限B_1)(最小化b_2)...(最小b_m) 私の質問は、ビットベクトルを最小限に抑える方法とそれをスピードアップするためのトリックがあるかどうかについてです。 – Halaby

+1

あなたはmax-satを解決しているようですね?そうであれば、柔らかい制約が行く方法です:http://rise4fun.com/Z3/tutorialcontent/optimization#h23考えてみると、Z3はできるだけ多くのソフト制約を満足させようとしています。それが満たすことができないペナルティを最小限に抑えること。 –

+1

私はMaxSATを解決しています。はい、しかし、多くの価値のあるロジックです。 問題は(私の理解では)assert-softはブール値の制約を受け入れ、多値の制約を扱っています。 – Halaby