#16755: PPL LP solver does not accept rationals
--------------------------------------+------------------------
       Reporter:  jdemeyer            |        Owner:
           Type:  defect              |       Status:  new
       Priority:  major               |    Milestone:  sage-6.3
      Component:  linear programming  |   Resolution:
       Keywords:                      |    Merged in:
        Authors:                      |    Reviewers:
Report Upstream:  N/A                 |  Work issues:
         Branch:                      |       Commit:
   Dependencies:                      |     Stopgaps:
--------------------------------------+------------------------
Description changed by jdemeyer:

Old description:

> This should work (even though PPL doesn't seem to provide an interface
> for inputting rationals, we need some manual rescaling):
> {{{
> sage: p = MixedIntegerLinearProgram(solver="PPL")
> sage: x = p.new_variable(nonnegative=True)
> sage: p.add_constraint(x[0] + x[1] <= 1/2)
> sage: p.set_objective(x[0])
> sage: p.solve()
> ---------------------------------------------------------------------------
> TypeError                                 Traceback (most recent call
> last)
> <ipython-input-10-082b726ace8d> in <module>()
> ----> 1 p.solve()
>
> /usr/local/src/sage-config/local/lib/python2.7/site-
> packages/sage/numerical/mip.so in
> sage.numerical.mip.MixedIntegerLinearProgram.solve
> (build/cythonized/sage/numerical/mip.c:10574)()
>
> /usr/local/src/sage-config/local/lib/python2.7/site-
> packages/sage/numerical/backends/ppl_backend.so in
> sage.numerical.backends.ppl_backend.PPLBackend.solve
> (build/cythonized/sage/numerical/backends/ppl_backend.c:5346)()
>
> /usr/local/src/sage-config/local/lib/python2.7/site-
> packages/sage/numerical/backends/ppl_backend.so in
> sage.numerical.backends.ppl_backend.PPLBackend.init_mip
> (build/cythonized/sage/numerical/backends/ppl_backend.c:2284)()
>
> /usr/local/src/sage-config/local/lib/python2.7/site-
> packages/sage/libs/ppl.so in sage.libs.ppl.Linear_Expression.__richcmp__
> (build/cythonized/sage/libs/ppl.cpp:17640)()
>
> /usr/local/src/sage-config/local/lib/python2.7/site-
> packages/sage/libs/ppl.so in sage.libs.ppl._make_Constraint_from_richcmp
> (build/cythonized/sage/libs/ppl.cpp:23124)()
>
> /usr/local/src/sage-config/local/lib/python2.7/site-
> packages/sage/libs/ppl.so in sage.libs.ppl.Linear_Expression.__cinit__
> (build/cythonized/sage/libs/ppl.cpp:15675)()
>
> /usr/local/src/sage-config/local/lib/python2.7/site-
> packages/sage/rings/integer.so in sage.rings.integer.Integer.__init__
> (build/cythonized/sage/rings/integer.c:7650)()
>
> /usr/local/src/sage-config/local/lib/python2.7/site-
> packages/sage/rings/rational.so in sage.rings.rational.Rational._integer_
> (build/cythonized/sage/rings/rational.c:20851)()
>
> TypeError: no conversion of this rational to integer
> }}}

New description:

 Inputting rationals in MILP constraints or objective functions should work
 for the PPL interface (even though PPL doesn't seem to provide an
 interface for inputting rationals, we need some manual rescaling):
 {{{
 sage: p = MixedIntegerLinearProgram(solver="PPL")
 sage: x = p.new_variable(nonnegative=True)
 sage: p.add_constraint(x[0] + x[1] <= 1/2)
 sage: p.set_objective(x[0])
 sage: p.solve()
 ---------------------------------------------------------------------------
 TypeError                                 Traceback (most recent call
 last)
 <ipython-input-10-082b726ace8d> in <module>()
 ----> 1 p.solve()

 /usr/local/src/sage-config/local/lib/python2.7/site-
 packages/sage/numerical/mip.so in
 sage.numerical.mip.MixedIntegerLinearProgram.solve
 (build/cythonized/sage/numerical/mip.c:10574)()

 /usr/local/src/sage-config/local/lib/python2.7/site-
 packages/sage/numerical/backends/ppl_backend.so in
 sage.numerical.backends.ppl_backend.PPLBackend.solve
 (build/cythonized/sage/numerical/backends/ppl_backend.c:5346)()

 /usr/local/src/sage-config/local/lib/python2.7/site-
 packages/sage/numerical/backends/ppl_backend.so in
 sage.numerical.backends.ppl_backend.PPLBackend.init_mip
 (build/cythonized/sage/numerical/backends/ppl_backend.c:2284)()

 /usr/local/src/sage-config/local/lib/python2.7/site-
 packages/sage/libs/ppl.so in sage.libs.ppl.Linear_Expression.__richcmp__
 (build/cythonized/sage/libs/ppl.cpp:17640)()

 /usr/local/src/sage-config/local/lib/python2.7/site-
 packages/sage/libs/ppl.so in sage.libs.ppl._make_Constraint_from_richcmp
 (build/cythonized/sage/libs/ppl.cpp:23124)()

 /usr/local/src/sage-config/local/lib/python2.7/site-
 packages/sage/libs/ppl.so in sage.libs.ppl.Linear_Expression.__cinit__
 (build/cythonized/sage/libs/ppl.cpp:15675)()

 /usr/local/src/sage-config/local/lib/python2.7/site-
 packages/sage/rings/integer.so in sage.rings.integer.Integer.__init__
 (build/cythonized/sage/rings/integer.c:7650)()

 /usr/local/src/sage-config/local/lib/python2.7/site-
 packages/sage/rings/rational.so in sage.rings.rational.Rational._integer_
 (build/cythonized/sage/rings/rational.c:20851)()

 TypeError: no conversion of this rational to integer
 }}}

--

--
Ticket URL: <http://trac.sagemath.org/ticket/16755#comment:7>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to