cplex python sum约束

时间:2016-04-21 23:18:51

标签: python constraints linear cplex

我刚开始使用cplex python API,我遇到了为我的模型创建linear_constraints的问题

我想做那样的事情:

dvar float+ x[]

Minimize:  Sum(i in I) C[i] * x[i]

subject to:
sum(i in I) x[i] <= constantValue

我的问题是我不知道如何在python API中进行约束

  cpx.linear_constraints.add(
            lin_expr=  1,
            senses=["L"],
            rhs=constantValue,
            range_values= 2,

我想问你的是我需要输入1)和2)来获得x [i]表的SUM,它也需要是一个决策变量。

1 个答案:

答案 0 :(得分:2)

以下是一个例子:

actions['name']

其中range_values是浮点数列表,指定每个线性约束的左侧和右侧之间的差异。如果range_values [i]&gt; 0(零)然后约束i被定义为rhs [i]&lt; = rhs [i] + range_values [i]。如果range_values [i]&lt; 0(零)然后约束i被定义为rhs [i] + range_value [i]&lt; = a * x&lt; = rhs [i]。我建议将其保留为默认值(空白)。

要定义一个和,只需指出所有变量和一个向量,例如

>>> import cplex
>>> c = cplex.Cplex()
>>> c.variables.add(names = ["x1", "x2", "x3"])
>>> c.linear_constraints.add(lin_expr = [cplex.SparsePair(ind = ["x1", "x3"], val = [1.0, -1.0]),
                                 cplex.SparsePair(ind = ["x1", "x2"], val = [1.0, 1.0]),
                                 cplex.SparsePair(ind = ["x1", "x2", "x3"], val = [-1.0] * 3),
                                 cplex.SparsePair(ind = ["x2", "x3"], val = [10.0, -2.0])],
                         senses = ["E", "L", "G", "R"],
                         rhs = [0.0, 1.0, -1.0, 2.0],
                         range_values = [0.0, 0.0, 0.0, -10.0],
                         names = ["c0", "c1", "c2", "c3"],)
>>> c.linear_constraints.get_rhs()
[0.0, 1.0, -1.0, 2.0]