Can we use the previous solution of a MaxSMT solver (optimize) in an incremental way in z3? Also, Is there any way to print out the soft assertions on the optimizer?
Incremental Learning using MAXSMT
225 Views Asked by Kshitij Goyal At
1
There are 1 best solutions below
Related Questions in Z3
- Simplifying Z3 expressions
- Getting a counterexample from µZ3 (Horn solver)
- Solver for recursive Horn clauses
- Are existential quantifiers nested under foralls skolemised once? What do quantifier instantiation statistics mean for these quantifiers?
- z3py: Can the switch of the orders of constraints affect the performance of the Z3 SMT solver?
- nuZ: Use of soft-assertions with weights and ids
- nuZ: What does the model say
- ForAll in Z3.py
- Automated tools for applying formal methods to verify security policy in existing software
- Uninterpreted datatype in Z3
- Using Z3 with python in Visual studio 2013
- Solving formulas in parallel with z3
- Unsigned integers using Java API
- NuZ: See the rules that have been given up?
- How can I access the variable mapping used when bit-blasting?
Related Questions in SMT
- Solver for recursive Horn clauses
- z3py: Can the switch of the orders of constraints affect the performance of the Z3 SMT solver?
- Solving formulas in parallel with z3
- Z3 int2bv operation
- z3py: How to improve the time efficiency of the following code
- Z3Py: Parsing expressions using eval or z3.parse_smt2_string
- Implementing bit-blasting for floating-point arithmetic in SMT
- Run z3 from java using ProcessBuilder
- Records with Z3
- is it possible to model associative arrays in z3?
- Using Z3 QFNRA tactic with datatypes: interaction or inlining
- Finding path between two nodes
- CVC4: using quantifiers in C++ interface
- How to define predicates using C++ API for CVC4
- error asserting datatype of datatype in z3
Related Questions in OPTIMATHSAT
- z3 control preference for model return values
- Timeout for Z3 Optimize
- Incremental Learning using MAXSMT
- Gap tolerance control in Z3 optimization
- Minizinc. Count number of shifts in a cycle
- Can I get a solution using "timeout" when using Optimize.minimize()?
- parralelizing a part of a script shell
- Correct order of parallel execution of shell `time` command
- parallel execution with a fixed order
- What conversion operators are available in Z3 and CVC4 for Bit-Vectors?
- Z3 Optimization, strict inqualities
- runtime.getruntime.exec does not recognize executable file
- get execution time only from the command gtime
- Specific inputs of experiment return parser error
- syntax error when taking a code from mac to linux machine
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
The answer is YES if you are asking whether it is technically possible to run either
z3orOptiMathSATincrementally with a MaxSMT problem. (Use the API).All soft-clauses with the same
id--at the moment in which one performs acheck-sat-- are considered part of the same MaxSMT goal. In essence, the OMT solver evaluates the relevant set of soft-clauses of a MaxSMT goal lazily. This holds for bothz3andOptiMathSAT.When dealing with a MaxSMT problem, the ability of an OMT solver to reuse learned clauses across incremental calls may depend on the optimization algorithm that is being used.
I see two possible cases:
One is using a core-based MaxSMT engine. In this case, exploring formulations of the problem with an increasing level of complexity may help identifying a tractable sub-set of the original problem. However, notice that lemmas involving soft-constraints learned at previous iterations may not be useful at later stages (Actually, the OMT solver is going to discard all of these clauses and re-compute them if necessary).
One is using a sat-based MaxSMT engine. In this case, it is not clear to me the benefit of splitting the problem into smaller chunks, other than focusing the search over particular groups of (?possibly related?) soft-clauses. The OMT solver could be given all soft-constraints at once, together with a hard timeout, and it would still be able to yield a partial optimal solution when the alarm fires. (T-Lemmas involving the cost function are not going to be useful across incremental calls because the cost function changes. In the best scenario, the OMT solvers discards them. In the worst scenario, these T-Lemmas remain in the environment and clutter the search without altering the solution).
I admit that it is a bit hard to predict the performance of the OMT solver because of the overhead that is introduced with either approach. On the one hand, we have the overhead of incremental calls and the fact that the optimization process is restarted from scratch multiple times. On the other hand, we have the overhead of performing BCP over a much larger set of soft-clauses. I guess that the balance turns in favor of the incremental approach for sufficiently large sets of soft-clauses. [This would be an interesting subject of investigation, I would love to read a paper about it!]