#12823: Allow constants for objective function & deletion of rows in
MixedIntegerLinearProgram
--------------------------------------+-------------------------------------
       Reporter:  john_perry          |         Owner:  ncohen          
           Type:  defect              |        Status:  needs_info      
       Priority:  major               |     Milestone:  sage-5.0        
      Component:  linear programming  |    Resolution:                  
       Keywords:  solver objective    |   Work issues:  failing doctests
Report Upstream:  N/A                 |     Reviewers:                  
        Authors:  john_perry, ncohen  |     Merged in:                  
   Dependencies:  #12220, #12833      |      Stopgaps:                  
--------------------------------------+-------------------------------------
Changes (by john_perry):

  * dependencies:  12833 => #12220, #12833


Old description:

> Currently, MixedIntegerLinearProgram does not allow deleting rows. We
> would like to enable this for all backends that allow it.
>
> Also, this is a bug.
> {{{
> sage: lp = MixedIntegerLinearProgram()
> sage: x, y = lp[0], lp[1]
> sage: lp.add_constraint(2*x + 3*y <= 6)
> sage: lp.add_constraint(3*x + 2*y <= 6)
> sage: lp.set_objective(x + y + 7)
> sage: lp.set_integer(x); lp.set_integer(y)
> sage: lp.solve()
> 2.0
> }}}
> The correct value ought to be '''9''', not '''2'''. The problem is this
> line in the `set_objective()` method of `mip.pyx`:
> {{{
>         f.pop(-1,0)
> }}}
>
> John Perry will create a patch for GLPK and CBC; Nathann Cohen will
> create a patch for Gurobi and CPLEX.
>
> '''Apply''':
>   * [attachment:trac_12823_const_for_obj_funs.patch]
>   * [attachment:trac_12823-cplex_gurobi.patch]
> '''or'''
>   * [attachment:trac_12823_alternate_removal.patch]

New description:

 Currently, MixedIntegerLinearProgram does not allow deleting rows. We
 would like to enable this for all backends that allow it.

 Also, this is a bug.
 {{{
 sage: lp = MixedIntegerLinearProgram()
 sage: x, y = lp[0], lp[1]
 sage: lp.add_constraint(2*x + 3*y <= 6)
 sage: lp.add_constraint(3*x + 2*y <= 6)
 sage: lp.set_objective(x + y + 7)
 sage: lp.set_integer(x); lp.set_integer(y)
 sage: lp.solve()
 2.0
 }}}
 The correct value ought to be '''9''', not '''2'''. The problem is this
 line in the `set_objective()` method of `mip.pyx`:
 {{{
         f.pop(-1,0)
 }}}

 John Perry will create a patch for GLPK and CBC; Nathann Cohen will create
 a patch for Gurobi and CPLEX.

 '''Apply''':
   * [attachment:trac_12823_const_for_obj_funs.patch]
   * [attachment:trac_12823_alternate_removal.patch]
   * [attachment:trac_12823-cplex_gurobi.patch]

--

Comment:

 Looks like I goofed when creating the patch. Please apply
 [attachment:trac_12823_const_for_obj_funs.patch] first, then
 [attachment:trac_12823_alternate_removal.patch], and finally
 [attachment:trac_12823_alternate_removal.patch]. I have modified the
 ticket description to reflect this.

 I'm actually getting doctest errors on this, so I may upload new patches.
 But, if you don't get problems after this, that would suggest things are
 okay. I'm using an older beta, so I'm probably still missing something.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/12823#comment:35>
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