[PPL-devel] Out of memory when solving integer problem with only two large vars

Sven Verdoolaege skimo-ppl at kotnet.org
Mon Dec 23 09:16:40 CET 2013


On Sun, Dec 22, 2013 at 02:06:06PM +0200, Georgi Guninski wrote:
> Many thanks for the prolog solution!
> 
> If I remove the last constraint (comment it in the code):
> 
> //cs.insert(Coefficient(A0)*A - Coefficient(B0)*B <= Coefficient(L) );//XXX
> 
> Then try with:
> A0=654013667618
> B0=654013667619
> L= 654013667617
> 
> I again run out of memory, why so?
> (swipl finds solutions even to the original problem for these values).
> 
> Last time I checked glpk and lp-solve they don't support
> large integers - work modulo 2^32 or 2^64 and don't
> give correct solutions over the integers
> 
> PPL is the only free solver I know of supporting
> large integers.

Didn't you just say that SWI-Prolog works for you?

In any case, there is also isl:

    $ ./isl_polyhedron_sample 
    { [A,B] : 1 <= A and A <= 808711 and 1 <= B and 1 <= 654013667618 * A - 654013667619 * B <= 808711 }
    []
    $ ./isl_polyhedron_sample 
    { [A,B] : 1 <= A and A <= 808711 and 1 <= B and 1 <= 654013667618 * A - 654013667619 * B <= 654013667617 }
    [1,404356,404355]
    $ ./isl_polyhedron_sample 
    { [A,B] : 1 <= A and A <= 808711 and 1 <= B and 1 <= 654013667618 * A - 654013667619 * B }
    [1,808711,1]

(The first "1" in the output is the denominator and is always "1",
if there is a solution.)

skimo



More information about the PPL-devel mailing list