Ticket #10043: trac_10043_referee.patch

File trac_10043_referee.patch, 17.2 KB (added by malb, 9 years ago)
  • doc/en/reference/numerical.rst

    # HG changeset patch
    # User Martin Albrecht <martinralbrecht@googlemail.com>
    # Date 1287507539 -3600
    # Node ID 90c191fd63bbf37223fedc5089eee40229d8b4e6
    # Parent  f98b2706d0b0b901c1aa1b89a2c212ec1645b2ec
    #10043 referee patch
    
    diff -r f98b2706d0b0 -r 90c191fd63bb doc/en/reference/numerical.rst
    a b  
    1616
    1717   sage/numerical/backends/generic_backend
    1818   sage/numerical/backends/glpk_backend
    19    sage/numerical/backends/coin_backend
    20    sage/numerical/backends/cplex_backend
    2119
  • sage/numerical/backends/coin_backend.pxd

    diff -r f98b2706d0b0 -r 90c191fd63bb sage/numerical/backends/coin_backend.pxd
    a b  
     1##############################################################################
     2#       Copyright (C) 2010 Nathann Cohen <nathann.cohen@gmail.com>
     3#  Distributed under the terms of the GNU General Public License (GPL)
     4#  The full text of the GPL is available at:
     5#                  http://www.gnu.org/licenses/
     6##############################################################################
     7
    18from sage.numerical.backends.generic_backend cimport GenericBackend
    29
    310include '../../../../../devel/sage/sage/ext/stdsage.pxi'
  • sage/numerical/backends/coin_backend.pyx

    diff -r f98b2706d0b0 -r 90c191fd63bb sage/numerical/backends/coin_backend.pyx
    a b  
    1 r"""
     1"""
    22COIN Backend
     3
     4AUTHORS:
     5
     6- Nathann Cohen (2010-10): initial implementation
    37"""
    48
     9##############################################################################
     10#       Copyright (C) 2010 Nathann Cohen <nathann.cohen@gmail.com>
     11#  Distributed under the terms of the GNU General Public License (GPL)
     12#  The full text of the GPL is available at:
     13#                  http://www.gnu.org/licenses/
     14##############################################################################
     15
     16
    517from sage.numerical.mip import MIPSolverException
    618
    719cdef class CoinBackend(GenericBackend):
     
    144156            sage: p = get_solver(solver = "Coin")  # optional - Coin
    145157            sage: p.add_variable()                                 # optional - Coin
    146158            1
    147             sage: p.get_objective_coeff(0)                         # optional - Coin
     159            sage: p.get_objective_coefficient(0)                         # optional - Coin
    148160            0.0
    149161            sage: p.set_objective_coefficient(0,2)                       # optional - Coin
    150             sage: p.get_objective_coeff(0)                         # optional - Coin
     162            sage: p.get_objective_coefficient(0)                         # optional - Coin
    151163            2.0
    152164        """
    153165
     
    169181            sage: p.add_variables(5)                                 # optional - Coin
    170182            5
    171183            sage: p.set_objective([1, 1, 2, 1, 3])                   # optional - Coin
    172             sage: map(lambda x :p.get_objective_coeff(x), range(5))  # optional - Coin
     184            sage: map(lambda x :p.get_objective_coefficient(x), range(5))  # optional - Coin
    173185            [1.0, 1.0, 2.0, 1.0, 3.0]
    174186        """
    175187
     
    236248
    237249    cpdef add_constraint(self, list indices, list coeffs, int direction, double bound):
    238250        r"""
    239         Adds a constraint.
     251        Adds a linear constraint.
    240252
    241253        INPUT:
    242254
     
    408420        return (lb[i] if lb[i] != - self.si.getInfinity() else None,
    409421                ub[i] if ub[i] != + self.si.getInfinity() else None)
    410422
    411     cpdef double get_objective_coeff(self, int index):
     423    cpdef double get_objective_coefficient(self, int index):
     424        """
     425        Returns the value of the objective function.
     426
     427        .. NOTE::
     428
     429           Has no meaning unless ``solve`` has been called before.
     430
     431        EXAMPLE::
     432
     433            sage: from sage.numerical.backends.generic_backend import get_solver
     434            sage: p = get_solver(solver = "Coin")  # optional - Coin
     435            sage: p.add_variables(2)                               # optional - Coin
     436            2
     437            sage: p.add_constraint([0, 1], [1, 2], +1, 3)          # optional - Coin
     438            sage: p.set_objective([2, 5])                          # optional - Coin
     439            sage: p.solve()                                        # optional - Coin
     440            0
     441            sage: p.get_objective_value()                          # optional - Coin
     442            7.5
     443            sage: p.get_variable_value(0)                          # optional - Coin
     444            0.0
     445            sage: p.get_variable_value(1)                          # optional - Coin
     446            1.5
     447        """
    412448        return self.si.getObjCoefficients()[index]
    413449
    414450    cpdef add_col(self, list indices, list coeffs):
  • sage/numerical/backends/cplex_backend.pxd

    diff -r f98b2706d0b0 -r 90c191fd63bb sage/numerical/backends/cplex_backend.pxd
    a b  
     1##############################################################################
     2#       Copyright (C) 2010 Nathann Cohen <nathann.cohen@gmail.com>
     3#  Distributed under the terms of the GNU General Public License (GPL)
     4#  The full text of the GPL is available at:
     5#                  http://www.gnu.org/licenses/
     6##############################################################################
     7
    18from sage.numerical.backends.generic_backend cimport GenericBackend
    29
    310include '../../../../../devel/sage/sage/ext/stdsage.pxi'
  • sage/numerical/backends/cplex_backend.pyx

    diff -r f98b2706d0b0 -r 90c191fd63bb sage/numerical/backends/cplex_backend.pyx
    a b  
    1 r"""
     1"""
    22CPLEX Backend
     3
     4AUTHORS:
     5
     6- Nathann Cohen (2010-10): initial implementation
     7
    38"""
    49
     10##############################################################################
     11#       Copyright (C) 2010 Nathann Cohen <nathann.cohen@gmail.com>
     12#  Distributed under the terms of the GNU General Public License (GPL)
     13#  The full text of the GPL is available at:
     14#                  http://www.gnu.org/licenses/
     15##############################################################################
     16
     17
    518from sage.numerical.mip import MIPSolverException
    619
    720cdef class CPLEXBackend(GenericBackend):
     
    149162            sage: p = get_solver(solver = "CPLEX")  # optional - CPLEX
    150163            sage: p.add_variable()                                 # optional - CPLEX
    151164            1
    152             sage: p.get_objective_coeff(0)                         # optional - CPLEX
     165            sage: p.get_objective_coefficient(0)                         # optional - CPLEX
    153166            0.0
    154167            sage: p.set_objective_coefficient(0,2)                       # optional - CPLEX
    155             sage: p.get_objective_coeff(0)                         # optional - CPLEX
     168            sage: p.get_objective_coefficient(0)                         # optional - CPLEX
    156169            2.0
    157170        """
    158171
     
    212225            sage: p.add_variables(5)                                 # optional - CPLEX
    213226            5
    214227            sage: p.set_objective([1, 1, 2, 1, 3])                   # optional - CPLEX
    215             sage: map(lambda x :p.get_objective_coeff(x), range(5))  # optional - CPLEX
     228            sage: map(lambda x :p.get_objective_coefficient(x), range(5))  # optional - CPLEX
    216229            [1.0, 1.0, 2.0, 1.0, 3.0]
    217230        """
    218231
     
    308321
    309322    cpdef add_constraint(self, list indices, list coeffs, int direction, double bound):
    310323        r"""
    311         Adds a constraint.
     324        Adds a linear constraint.
    312325
    313326        INPUT:
    314327
     
    511524        return (lb if lb != -CPX_INFBOUND else None,
    512525                ub if ub != +CPX_INFBOUND else None)
    513526
    514     cpdef double get_objective_coeff(self, int index):
     527    cpdef double get_objective_coefficient(self, int index):
    515528        r"""
    516529        Sets the coefficient of a variable in the objective function
    517530
     
    527540            sage: p = get_solver(solver = "CPLEX")  # optional - CPLEX
    528541            sage: p.add_variable()                                 # optional - CPLEX
    529542            1
    530             sage: p.get_objective_coeff(0)                         # optional - CPLEX
     543            sage: p.get_objective_coefficient(0)                         # optional - CPLEX
    531544            0.0
    532545            sage: p.set_objective_coefficient(0,2)                       # optional - CPLEX
    533             sage: p.get_objective_coeff(0)                         # optional - CPLEX
     546            sage: p.get_objective_coefficient(0)                         # optional - CPLEX
    534547            2.0
    535548        """
    536549
  • sage/numerical/backends/generic_backend.pxd

    diff -r f98b2706d0b0 -r 90c191fd63bb sage/numerical/backends/generic_backend.pxd
    a b  
     1##############################################################################
     2#       Copyright (C) 2010 Nathann Cohen <nathann.cohen@gmail.com>
     3#  Distributed under the terms of the GNU General Public License (GPL)
     4#  The full text of the GPL is available at:
     5#                  http://www.gnu.org/licenses/
     6##############################################################################
     7
    18cdef class GenericBackend:
    29    cpdef int add_variable(self)
    310    cpdef int add_variables(self, int)
     
    1724    cpdef write_lp(self, char * name)
    1825    cpdef write_mps(self, char * name, int modern)
    1926    cpdef row(self, int i)
    20     cpdef double get_objective_coeff(self, int i)
     27    cpdef double get_objective_coefficient(self, int i)
    2128    cpdef int ncols(self)
    2229    cpdef int nrows(self)
    2330    cpdef bint is_variable_binary(self, int)
  • sage/numerical/backends/generic_backend.pyx

    diff -r f98b2706d0b0 -r 90c191fd63bb sage/numerical/backends/generic_backend.pyx
    a b  
    1010solver's name, and replace ``GenericBackend`` by
    1111``SolverName(GenericBackend)`` so that the new solver extends this
    1212class.
     13
     14AUTHORS:
     15
     16- Nathann Cohen (2010-10): initial implementation
     17
    1318"""
    1419
     20##############################################################################
     21#       Copyright (C) 2010 Nathann Cohen <nathann.cohen@gmail.com>
     22#  Distributed under the terms of the GNU General Public License (GPL)
     23#  The full text of the GPL is available at:
     24#                  http://www.gnu.org/licenses/
     25##############################################################################
     26
     27
    1528cdef class GenericBackend:
    1629
    1730    cpdef int add_variable(self):
     
    124137            sage: p = get_solver(solver = "Nonexistent_LP_solver")  # optional - Nonexistent_LP_solver
    125138            sage: p.add_variable()                                 # optional - Nonexistent_LP_solver
    126139            1
    127             sage: p.get_objective_coeff(0)                         # optional - Nonexistent_LP_solver
     140            sage: p.get_objective_coefficient(0)                         # optional - Nonexistent_LP_solver
    128141            0.0
    129142            sage: p.set_objective_coefficient(0,2)                       # optional - Nonexistent_LP_solver
    130             sage: p.get_objective_coeff(0)                         # optional - Nonexistent_LP_solver
     143            sage: p.get_objective_coefficient(0)                         # optional - Nonexistent_LP_solver
    131144            2.0
    132145        """
    133146
     
    149162            sage: p.add_variables(5)                                 # optional - Nonexistent_LP_solver
    150163            5
    151164            sage: p.set_objective([1, 1, 2, 1, 3])                   # optional - Nonexistent_LP_solver
    152             sage: map(lambda x :p.get_objective_coeff(x), range(5))  # optional - Nonexistent_LP_solver
     165            sage: map(lambda x :p.get_objective_coeffient(x), range(5))  # optional - Nonexistent_LP_solver
    153166            [1.0, 1.0, 2.0, 1.0, 3.0]
    154167        """
    155168
     
    175188
    176189    cpdef add_constraint(self, list indices, list coeffs, int direction, double bound):
    177190        r"""
    178         Adds a constraint.
     191        Adds a linear constraint.
    179192
    180193        INPUT:
    181194
     
    513526
    514527        raise NotImplementedError()
    515528
    516     cpdef double get_objective_coeff(self, int i):
     529    cpdef double get_objective_coefficient(self, int i):
    517530        r"""
    518531        Sets the coefficient of a variable in the objective function
    519532
     
    529542            sage: p = get_solver(solver = "Nonexistent_LP_solver")  # optional - Nonexistent_LP_solver
    530543            sage: p.add_variable()                                 # optional - Nonexistent_LP_solver
    531544            1
    532             sage: p.get_objective_coeff(0)                         # optional - Nonexistent_LP_solver
     545            sage: p.get_objective_coeffient(0)                         # optional - Nonexistent_LP_solver
    533546            0.0
    534547            sage: p.set_objective_coefficient(0,2)                       # optional - Nonexistent_LP_solver
    535             sage: p.get_objective_coeff(0)                         # optional - Nonexistent_LP_solver
     548            sage: p.get_objective_coeffient(0)                         # optional - Nonexistent_LP_solver
    536549            2.0
    537550        """
    538551
  • sage/numerical/backends/glpk_backend.pxd

    diff -r f98b2706d0b0 -r 90c191fd63bb sage/numerical/backends/glpk_backend.pxd
    a b  
     1##############################################################################
     2#       Copyright (C) 2010 Nathann Cohen <nathann.cohen@gmail.com>
     3#  Distributed under the terms of the GNU General Public License (GPL)
     4#  The full text of the GPL is available at:
     5#                  http://www.gnu.org/licenses/
     6##############################################################################
     7
    18from generic_backend cimport GenericBackend
    29include '../../../../../devel/sage/sage/ext/stdsage.pxi'
    310
  • sage/numerical/backends/glpk_backend.pyx

    diff -r f98b2706d0b0 -r 90c191fd63bb sage/numerical/backends/glpk_backend.pyx
    a b  
    1 r"""
     1"""
    22GLPK Backend
     3
     4AUTHORS:
     5
     6- Nathann Cohen (2010-10): initial implementation
    37"""
    48
     9##############################################################################
     10#       Copyright (C) 2010 Nathann Cohen <nathann.cohen@gmail.com>
     11#  Distributed under the terms of the GNU General Public License (GPL)
     12#  The full text of the GPL is available at:
     13#                  http://www.gnu.org/licenses/
     14##############################################################################
     15
    516from sage.numerical.mip import MIPSolverException
    617
    718cdef class GLPKBackend(GenericBackend):
     
    167178            sage: p = get_solver(solver = "GLPK")
    168179            sage: p.add_variable()
    169180            1
    170             sage: p.get_objective_coeff(0)
     181            sage: p.get_objective_coefficient(0)
    171182            0.0
    172183            sage: p.set_objective_coefficient(0,2)
    173             sage: p.get_objective_coeff(0)
     184            sage: p.get_objective_coefficient(0)
    174185            2.0
    175186        """
    176187
     
    222233            sage: p.add_variables(5)
    223234            5
    224235            sage: p.set_objective([1, 1, 2, 1, 3])
    225             sage: map(lambda x :p.get_objective_coeff(x), range(5))
     236            sage: map(lambda x :p.get_objective_coefficient(x), range(5))
    226237            [1.0, 1.0, 2.0, 1.0, 3.0]
    227238        """
    228239
     
    302313
    303314    cpdef add_constraint(self, list indices, list coeffs, int direction, double bound):
    304315        r"""
    305         Adds a constraint.
     316        Adds a linear constraint.
    306317
    307318        INPUT:
    308319
     
    486497            (ub if ub != +DBL_MAX else None)
    487498            )
    488499
    489     cpdef double get_objective_coeff(self, int index):
     500    cpdef double get_objective_coefficient(self, int index):
    490501        r"""
    491502        Returns the coefficient of a variable in the objective
    492503        function.
     
    501512            sage: p = get_solver(solver = "GLPK")
    502513            sage: p.add_variable()
    503514            1
    504             sage: p.get_objective_coeff(0)
     515            sage: p.get_objective_coefficient(0)
    505516            0.0
    506517            sage: p.set_objective_coefficient(0,2)
    507             sage: p.get_objective_coeff(0)
     518            sage: p.get_objective_coefficient(0)
    508519            2.0
    509520        """
    510521        return glp_get_obj_coef(self.lp, index + 1)
  • sage/numerical/mip.pyx

    diff -r f98b2706d0b0 -r 90c191fd63bb sage/numerical/mip.pyx
    a b  
    382382       
    383383        first = True
    384384        for 0<= i< b.ncols():
    385             c = b.get_objective_coeff(i)
     385            c = b.get_objective_coefficient(i)
    386386            if c != 0:
    387387
    388388                value+= ((" +" if (not first and c>0) else " ") +
    389                          str(inv_variables[i]*b.get_objective_coeff(i))
     389                         str(inv_variables[i]*b.get_objective_coefficient(i))
    390390                         )
    391391                first = False
    392392