#10879: add optional SCIP integer constraint solver
-------------------------------+--------------------------------------------
   Reporter:  malb             |       Owner:  tbd                           
       Type:  enhancement      |      Status:  needs_work                    
   Priority:  major            |   Milestone:  sage-5.0                      
  Component:  packages         |    Keywords:  mip, mixed integer programming
     Author:  Martin Albrecht  |    Upstream:  N/A                           
   Reviewer:                   |      Merged:                                
Work_issues:                   |  
-------------------------------+--------------------------------------------

Old description:

> "SCIP is currently one of the fastest non-commercial mixed integer
> programming (MIP) solvers. It is also a framework for Constraint Integer
> Programming and branch-cut-and-price. It allows total control of the
> solution process and the access of detailed information down to the guts
> of the solver." -- http://scip.zib.de/
>
> Features interesting to Sage:
>
>  * SCIP is pretty fast for Mixed Integer Programming
>  * SCIP is a Constraint Integer Programming solver and allows non-linear
> constraints
>  * SCIP's source code is available
>
> However, we don't have the right to redistribute the SCIP source code.
> Thus, the attached SPKG is empty except for the spkg-install script etc.
>
> To build a SCIP for Sage do:
>  * download the ZIB Optmisation Suite from
> http://zibopt.zib.de/download.php?fname=ziboptsuite-2.0.1.tgz
>  * place the files `scip-2.0.1.tgz` and `soplex-1.5.0.tgz` in the `src/`
> subdirectory of the attached SPKG
>  * install the SPKG
>  * apply the attached patch and `sage -b`
>
> '''KNOWN ISSUES'''
>  * Sage crashes when SCIP variables are printed with SIGSEGV on OSX. It
> works fine under Linux.
>  * the following doctests fail
> {{{
>  sage -t  -long -force_lib
> devel/sage/doc/en/thematic_tutorials/linear_programming.rst # 9 doctests
> failed
>  sage -t  -long -force_lib devel/sage/sage/graphs/digraph.py # 1 doctests
> failed
>  sage -t  -long -force_lib devel/sage/sage/graphs/graph_coloring.py # 3
> doctests failed
>  sage -t  -long -force_lib devel/sage/sage/graphs/graph_generators.py # 2
> doctests failed
>  sage -t  -long -force_lib devel/sage/sage/numerical/knapsack.py # 4
> doctests failed
>  sage -t  -long -force_lib devel/sage/sage/numerical/mip.pyx # 11
> doctests failed
>  sage -t  -long -force_lib devel/sage/sage/graphs/generic_graph.py # 18
> doctests failed
> }}}

New description:

 "SCIP is currently one of the fastest non-commercial mixed integer
 programming (MIP) solvers. It is also a framework for Constraint Integer
 Programming and branch-cut-and-price. It allows total control of the
 solution process and the access of detailed information down to the guts
 of the solver." -- http://scip.zib.de/

 Features interesting to Sage:

  * SCIP is pretty fast for Mixed Integer Programming
  * SCIP is a Constraint Integer Programming solver and allows non-linear
 constraints
  * SCIP's source code is available

 However, we don't have the right to redistribute the SCIP source code.
 Thus, the attached SPKG is empty except for the spkg-install script etc.

 To build a SCIP for Sage do:
  * download the ZIB Optmisation Suite from
 http://zibopt.zib.de/download.php?fname=ziboptsuite-2.0.1.tgz
  * place the files `scip-2.0.1.tgz` and `soplex-1.5.0.tgz` in the `src/`
 subdirectory of the attached SPKG
  * install the SPKG
  * apply the attached patch and `sage -b`

 '''KNOWN ISSUES'''
  * Sage crashes when SCIP variables are printed with SIGSEGV on OSX. It
 works fine under Linux.
  * the following doctests fail
 {{{
  sage -t  -long -force_lib
 devel/sage/doc/en/thematic_tutorials/linear_programming.rst # 1 doctests
 failed
  sage -t  -long -force_lib devel/sage/sage/graphs/digraph.py # 1 doctests
 failed
  sage -t  -long -force_lib devel/sage/sage/numerical/mip.pyx # 3 doctests
 failed
 }}}
  * printing of quadratic constraints does not work yet.

--

Comment(by malb):

 Thanks to the input of Nathann the number of failed doctests was greatly
 reduced.

 '''linear_programming.rst'''

 This seems to be just another just-as-good solution. Probably, the doctest
 should be changed to allow alternative solutions?

 {{{
 sage -t -long -force_lib
 "devel/sage/doc/en/thematic_tutorials/linear_programming.rst"
 **********************************************************************
 File
 
"/home/malb/Sage/current/devel/sage/doc/en/thematic_tutorials/linear_programming.rst",
 line 366:
     sage: [e for e,b in matching.iteritems() if b == 1]
 Expected:
     [(0, 1), (6, 9), (2, 7), (3, 4), (5, 8)]
 Got:
     [(1, 6), (0, 4), (2, 3), (5, 8), (7, 9)]
 **********************************************************************
 }}}


 '''digraph.py'''

 Is this worrisome?

 {{{
 sage -t -long -force_lib "devel/sage/sage/graphs/digraph.py"
 **********************************************************************
 File "/home/malb/Sage/current/devel/sage/sage/graphs/digraph.py", line
 1539:
     sage: x == y
 Expected:
     True
 Got:
     False
 **********************************************************************
 }}}

 '''mip.pyx'''

 These are purely cosmetic.

 {{{
 sage -t -long -force_lib "devel/sage/sage/numerical/mip.pyx"
 **********************************************************************
 File "/home/malb/Sage/current/devel/sage/sage/numerical/mip.pyx", line
 648:
     sage: p.solve()
 Expected:
     0.0
 Got:
     -0.0
 **********************************************************************
 File "/home/malb/Sage/current/devel/sage/sage/numerical/mip.pyx", line
 1216:
     sage: p.get_backend()
 Expected:
     <sage.numerical.backends.glpk_backend.GLPKBackend object ...>
 Got:
     SCIP Constraint Integer Program "" ( maximization, 0 variables, 0
 constraints )
 **********************************************************************
 File "/home/malb/Sage/current/devel/sage/sage/numerical/mip.pyx", line
 365:
     sage: p.show()
 Expected:
     Maximization:
       Hey[1] +Hey[2]
     Constraints:
       Constraint_1: -3.0 Hey[1] +2.0 Hey[2] <= 2.0
     Variables:
       Hey[1] is a continuous variable (min=0.0, max=+oo)
       Hey[2] is a continuous variable (min=0.0, max=+oo)
 Got:
     Maximization:
       x_0 +x_1
     Constraints:
       Constraint_1: -3.0 x_0 +2.0 x_1 <= 2.0
     Variables:
       x_0 is a continuous variable (min=0.0, max=+oo)
       x_1 is a continuous variable (min=0.0, max=+oo)
 **********************************************************************
 }}}

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/10879#comment:5>
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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to