X-Git-Url: https://scm.cri.mines-paristech.fr/git/linpy.git/blobdiff_plain/4162c0430092e0ba2b8d8d62b5de24cdd71abe3b..1044e58e639333d281d47739ba9ecef607ff14e6:/linpy/polyhedra.py?ds=inline 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)