X-Git-Url: https://scm.cri.ensmp.fr/git/linpy.git/blobdiff_plain/24e1cba2b462f9507db3db51952fb5d236792b6b..f03bfa8b26b45b0ba2b47c6eadafa7787200a9c9:/linpy/polyhedra.py diff --git a/linpy/polyhedra.py b/linpy/polyhedra.py index 31b64b1..50af053 100644 --- a/linpy/polyhedra.py +++ b/linpy/polyhedra.py @@ -144,6 +144,15 @@ class Polyhedron(Domain): def aspolyhedron(self): return self + def convex_union(self, *others): + """ + Return the convex union of two or more polyhedra. + """ + for other in others: + if not isinstance(other, Polyhedron): + raise TypeError('arguments must be Polyhedron instances') + return Polyhedron(self.union(*others)) + def __contains__(self, point): if not isinstance(point, Point): raise TypeError('point must be a Point instance') @@ -178,7 +187,7 @@ class Polyhedron(Domain): used on large polyhedra. """ if not isinstance(other, Polyhedron): - raise ValueError('argument must be a Polyhedron instance') + raise TypeError('argument must be a Polyhedron instance') inequalities1 = self._asinequalities() inequalities2 = other._asinequalities() inequalities = [] @@ -399,15 +408,15 @@ def Ne(left, right): return ~Eq(left, right) @_polymorphic -def Gt(left, right): +def Ge(left, right): """ - Create the polyhedron with constraints expr1 > expr2 > expr3 ... + Create the polyhedron with constraints expr1 >= expr2 >= expr3 ... """ - return Polyhedron([], [left - right - 1]) + return Polyhedron([], [left - right]) @_polymorphic -def Ge(left, right): +def Gt(left, right): """ - Create the polyhedron with constraints expr1 >= expr2 >= expr3 ... + Create the polyhedron with constraints expr1 > expr2 > expr3 ... """ - return Polyhedron([], [left - right]) + return Polyhedron([], [left - right - 1])