mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 11:42:28 +00:00 
			
		
		
		
	bugfix for bvsls_opt_engine
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
This commit is contained in:
		
							parent
							
								
									1db7e0a149
								
							
						
					
					
						commit
						71af72eed4
					
				
					 2 changed files with 9 additions and 1 deletions
				
			
		|  | @ -347,6 +347,11 @@ namespace opt { | |||
|                     unsigned bv_size = 0; | ||||
|                     m_bvsls.get_model(m_model); | ||||
|                     VERIFY(bv.is_numeral(res.optimum, m_lower, bv_size)); | ||||
|                     for (unsigned i = 0; i < m_soft.size(); ++i) { | ||||
|                         expr_ref tmp(m); | ||||
|                         m_model->eval(m_soft[i].get(), tmp, true); | ||||
|                         m_assignment[i] = m.is_true(tmp); | ||||
|                     } | ||||
|                     break; | ||||
|                 } | ||||
|                 case l_false: | ||||
|  |  | |||
|  | @ -100,6 +100,8 @@ expr_ref bvsls_opt_engine::maximize(expr_ref const & objective) | |||
|     m_mpz_manager.set(score, top_score()); | ||||
|     m_mpz_manager.set(max_score, m_powers(obj_bv_sz)); m_mpz_manager.dec(max_score); | ||||
| 
 | ||||
|     IF_IVERBOSE(10, verbose_stream() << "Initial score: " << m_mpz_manager.to_string(score) << std::endl;); | ||||
| 
 | ||||
|     save_model(score); | ||||
| 
 | ||||
|     while (check_restart((unsigned)m_stats.m_stopwatch.get_current_seconds()) && | ||||
|  | @ -126,7 +128,8 @@ expr_ref bvsls_opt_engine::maximize(expr_ref const & objective) | |||
|             m_mpz_manager.set(score, top_score());             | ||||
|         } | ||||
|         else { | ||||
|             TRACE("sls_opt", tout << "New best: " << m_mpz_manager.to_string(score) << std::endl;); | ||||
|             TRACE("sls_opt", tout << "New optimum: " << m_mpz_manager.to_string(score) << std::endl;); | ||||
|             IF_IVERBOSE(10, verbose_stream() << "New optimum: " << m_mpz_manager.to_string(score) << std::endl;); | ||||
|             func_decl * fd = consts[new_const]; | ||||
|             incremental_score(fd, new_value); | ||||
|             m_obj_evaluator.update(fd, new_value); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue