python 参数的不等式
Inequalities as python parameters
首先,请原谅这个问题的糟糕标题,我根本不知道更好的标题。
如果你有更好的 => 告诉我!
所以我的问题是我想自己在Python中写一个单纯形求解器来深入理解它们是如何工作的。
因此,我想在我的程序中有这样的东西:
m.addConstr(x[0] <= 7)
这基本上应该为我的模型添加一个约束 m
。
这在 Gurobi 中有效,这太棒了,因为它很容易阅读。
问题是 x[0]
必须是一个 object,我自己可以定义当存在不平等或平等或其他情况时应该发生什么,对吗?
我很高兴自己弄清楚大部分内容,只是想了解一下它是如何工作的。
您似乎想要重载正在处理的任何对象的比较运算符。所以如果 Foo
在你的例子中是 x[0]
的 class,那么你可以这样写:
class Foo:
def __gt__(self, other):
# construct and return some kind of constraint object
def __lt__(self, other):
# likewise
这些特殊方法(__gt__
、__ge__
、__lt__
、__le__
、__ne__
和 __eq__
)在左侧调用- 比较关系中的手对象。因此,如果您有 x > y
,那么将使用 y
作为参数调用 x
上的 __gt__
方法。
我认为提出优雅的输入语法不应该是您首先关心的问题。您应该先实现单纯形算法。
我建议您通过为线性规划问题的两种标准格式编写解析器来处理输入:.lp
and .mps
如果您仍然想知道如何在 Python 中实现正确的表达式处理,我建议您查看 PySCIPOpt,因为这正是您想要的,您可以检查整个源代码代码。
首先,请原谅这个问题的糟糕标题,我根本不知道更好的标题。 如果你有更好的 => 告诉我!
所以我的问题是我想自己在Python中写一个单纯形求解器来深入理解它们是如何工作的。
因此,我想在我的程序中有这样的东西:
m.addConstr(x[0] <= 7)
这基本上应该为我的模型添加一个约束 m
。
这在 Gurobi 中有效,这太棒了,因为它很容易阅读。
问题是 x[0]
必须是一个 object,我自己可以定义当存在不平等或平等或其他情况时应该发生什么,对吗?
我很高兴自己弄清楚大部分内容,只是想了解一下它是如何工作的。
您似乎想要重载正在处理的任何对象的比较运算符。所以如果 Foo
在你的例子中是 x[0]
的 class,那么你可以这样写:
class Foo:
def __gt__(self, other):
# construct and return some kind of constraint object
def __lt__(self, other):
# likewise
这些特殊方法(__gt__
、__ge__
、__lt__
、__le__
、__ne__
和 __eq__
)在左侧调用- 比较关系中的手对象。因此,如果您有 x > y
,那么将使用 y
作为参数调用 x
上的 __gt__
方法。
我认为提出优雅的输入语法不应该是您首先关心的问题。您应该先实现单纯形算法。
我建议您通过为线性规划问题的两种标准格式编写解析器来处理输入:.lp
and .mps
如果您仍然想知道如何在 Python 中实现正确的表达式处理,我建议您查看 PySCIPOpt,因为这正是您想要的,您可以检查整个源代码代码。