[PPL-devel] MIP or PIP for testing satisfiability of linear arithmetic constraints over the integers

Enea Zaffanella zaffanella at cs.unipr.it
Sat Jul 9 17:47:27 CEST 2011


Il 09/07/2011 16:44, Fred Mesnard ha scritto:
> Hi all,

Hello Fred.

> I plan to use PPL for testing satisfiability of linear arithmetic constraints over the integers.
> I'm using PPL 0.11.2 with the latest SWI-Prolog. I found two unexpected results, see below,
> and I'm stuck! I'd like to have your feedback. Thanks in advance!
> 
> Fred
> 
> 
> With MIP, here's my Prolog code:
> 
> z_MIP_satisfiable(Cs) :-
> 	user:my_term_variables(Cs,Vars),
> 	length(Vars,Dim),
> 	user:ppl_new_MIP_Problem_from_space_dimension(Dim,Handle),
> 	translate_constraints_BT_ppl(Vars,Cs,PPL_Cs,PPL_Vs),
> 	user:ppl_MIP_Problem_add_constraints(Handle,PPL_Cs),
> 	user:ppl_MIP_Problem_add_to_integer_space_dimensions(Handle,PPL_Vs),
> 	(   user:ppl_MIP_Problem_is_satisfiable(Handle)
> 	->  user:ppl_delete_MIP_Problem(Handle)
> 	;   user:ppl_delete_MIP_Problem(Handle),
> 	    fail).
> 
> In general, it  works well but
> trying 
> 	z_MIP_satisfiable([X=2*Z, X=2*Y+1]).
> ie find X both even and odd does not seem to terminate.
> 
> By  the way, which kind of algorithm did you implement for MIP?

The MIP_Problem solver is based on a branch&bound strategy and may loop
when trying to identify a feasible/optimal solution satisfying the
integrality constraints.


> With PIP, here's my Prolog code, quite similar to the previous one:
> 
> z_PIP_satisfiable(Cs) :-
> 	user:my_term_variables(Cs,Vars),
> 	length(Vars,Dim),
> 	user:ppl_new_PIP_Problem_from_space_dimension(Dim,Handle),
> 	translate_constraints_BT_ppl(Vars,Cs,PPL_Cs,_PPL_Vs),
> 	user:ppl_PIP_Problem_add_constraints(Handle,PPL_Cs),
> 	(   user:ppl_PIP_Problem_is_satisfiable(Handle)
> 	->  user:ppl_delete_PIP_Problem(Handle)
> 	;   user:ppl_delete_PIP_Problem(Handle),
> 	    fail).
> 
> Trying
> 	z_PIP_satisfiable([ X =< -1]).
> ie find X less than -1 fails. Idem for -2, -3, ...
> So for PIP, variables are all implicitly >= 0?
> 

Quoting from PIP_Problem documentation:

  Note that all problem variables and problem parameters are assumed
  to take non-negative integer values, so that there is no need
  to specify non-negativity constraints.


Cheers,
Enea.


> 
> Cordialement,
> Fred Mesnard
> http://personnel.univ-reunion.fr/fred/
> 
> 
> 
> 
> _______________________________________________
> PPL-devel mailing list
> PPL-devel at cs.unipr.it
> http://www.cs.unipr.it/mailman/listinfo/ppl-devel
> 




More information about the PPL-devel mailing list