Improve comparison methods in LinExpr
authorVivien Maisonneuve <v.maisonneuve@gmail.com>
Tue, 19 Aug 2014 15:58:12 +0000 (17:58 +0200)
committerVivien Maisonneuve <v.maisonneuve@gmail.com>
Tue, 19 Aug 2014 15:58:12 +0000 (17:58 +0200)
linpy/linexprs.py

index 961502d..a0be583 100644 (file)
@@ -247,26 +247,28 @@ class LinExpr:
         """
         Test whether two linear expressions are equal.
         """
-        if isinstance(other, LinExpr):
-            return self._coefficients == other._coefficients and \
-                self._constant == other._constant
-        return NotImplemented
-
-    def __le__(self, other):
-        from .polyhedra import Le
-        return Le(self, other)
+        return self._coefficients == other._coefficients and \
+            self._constant == other._constant
 
+    @_polymorphic
     def __lt__(self, other):
-        from .polyhedra import Lt
-        return Lt(self, other)
+        from .polyhedra import Polyhedron
+        return Polyhedron([], [other - self - 1])
 
+    @_polymorphic
+    def __le__(self, other):
+        from .polyhedra import Polyhedron
+        return Polyhedron([], [other - self])
+
+    @_polymorphic
     def __ge__(self, other):
-        from .polyhedra import Ge
-        return Ge(self, other)
+        from .polyhedra import Polyhedron
+        return Polyhedron([], [self - other])
 
+    @_polymorphic
     def __gt__(self, other):
-        from .polyhedra import Gt
-        return Gt(self, other)
+        from .polyhedra import Polyhedron
+        return Polyhedron([], [self - other - 1])
 
     def scaleint(self):
         """