作为python参数的不等式

时间:2017-03-29 03:12:29

标签: python class linear-programming

首先,对于这个问题的糟糕标题,我根本不知道一个更好的问题。 如果你有一个更好的=>告诉我!

所以我的问题是我想用Python编写一个单纯形求解器来深入理解它们是如何工作的。

因此,我想在我的计划中有这样的事情:

 m.addConstr(x[0] <= 7)

基本上应该为我的模型m添加约束。 这在Gurobi有效,因为它很容易阅读。 问题是x[0]必须是一个对象,我自己可以定义当存在不平等或平等或其他什么时会发生什么,对吧?

我很高兴自己想出大部分内容,只想知道这是如何运作的。

2 个答案:

答案 0 :(得分:1)

看起来你想要重置你正在使用的任何对象的比较运算符。因此,如果您的示例中Foox[0]的类,那么您可以这样写:

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,那么__gt__上的x方法将以y作为参数进行调用。

答案 1 :(得分:1)

我不认为提出优雅的输入语法应该是您首先考虑的问题。您应该首先实现单纯形算法。

我建议您通过为线性编程问题编写两种标准格式的解析器来处理输入:.lp.mps

如果您仍然想知道如何在Python中实现正确的表达式处理,我建议您查看PySCIPOpt,因为这正是您想要的,您可以检查整个源代码。