-
-
Notifications
You must be signed in to change notification settings - Fork 641
Closed
Milestone
Description
sage.numerical.backends.generic_backend.get_solver
and MixedIntegerLinearProgram(solver=...)
already accept a callable (such as a class inheriting from GenericBackend
) instead of strings such as 'glpk'
:
sage: from sage.numerical.backends.glpk_backend import GLPKBackend
sage: MixedIntegerLinearProgram(solver=GLPKBackend)
But default_mip_solver
only accepts strings.
sage: from sage.numerical.backends.glpk_backend import GLPKBackend
sage: default_mip_solver(GLPKBackend)
AttributeError: type object 'sage.numerical.backends.glpk_backend.GLPKBackend' has no attribute 'capitalize'
Directly changing the module variable containing the setting also does not work; get_solver
breaks in that case:
sage: from sage.numerical.backends.glpk_backend import GLPKBackend
sage: import sage.numerical.backends.generic_backend as gb
sage: gb.default_solver = GLPKBackend
sage: MixedIntegerLinearProgram()
... generic_backend.pyx in sage.numerical.backends.generic_backend.get_solver
1798
1799 else:
-> 1800 raise ValueError("'solver' should be set to 'GLPK', 'GLPK/exact', 'Coin', 'CPLEX', 'CVXOPT', 'Gurobi', 'PPL', 'InteractiveLP', None (in which case the default one is used), or a callable.")
ValueError: 'solver' should be set to 'GLPK', 'GLPK/exact', 'Coin', 'CPLEX', 'CVXOPT', 'Gurobi', 'PPL', 'InteractiveLP', None (in which case the default one is used), or a callable.
CC: @dimpase @dcoudert @sagetrac-tmonteil @vbraun
Component: numerical
Author: Matthias Koeppe
Branch/Commit: 0a70975
Reviewer: Travis Scrimshaw
Issue created by migration from https://trac.sagemath.org/ticket/28914