From b77f3f44c4b15fbe2965b206bf74021377a8876a Mon Sep 17 00:00:00 2001 From: Vivien Maisonneuve Date: Tue, 9 Sep 2014 10:59:10 +0200 Subject: [PATCH 1/1] LinExpr() accepts rational numbers --- linpy/polyhedra.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/linpy/polyhedra.py b/linpy/polyhedra.py index 1ccbe9c..ead9b83 100644 --- a/linpy/polyhedra.py +++ b/linpy/polyhedra.py @@ -94,15 +94,23 @@ class Polyhedron(Domain): sc_equalities = [] if equalities is not None: for equality in equalities: - if not isinstance(equality, LinExpr): - raise TypeError('equalities must be linear expressions') - sc_equalities.append(equality.scaleint()) + if isinstance(equality, LinExpr): + sc_equalities.append(equality.scaleint()) + elif isinstance(equality, numbers.Rational): + sc_equalities.append(Rational(equality).scaleint()) + else: + raise TypeError('equalities must be linear expressions ' + 'or rational numbers') sc_inequalities = [] if inequalities is not None: for inequality in inequalities: - if not isinstance(inequality, LinExpr): - raise TypeError('inequalities must be linear expressions') - sc_inequalities.append(inequality.scaleint()) + if isinstance(inequality, LinExpr): + sc_inequalities.append(inequality.scaleint()) + elif isinstance(inequality, numbers.Rational): + sc_inequalities.append(Rational(inequality).scaleint()) + else: + raise TypeError('inequalities must be linear expressions ' + 'or rational numbers') symbols = cls._xsymbols(sc_equalities + sc_inequalities) islbset = cls._toislbasicset(sc_equalities, sc_inequalities, symbols) return cls._fromislbasicset(islbset, symbols) -- 2.20.1