如何获得包含线性表达式的矩阵的最大值?
How to get maximum value of matrix containing linear expressions?
我希望有人能帮助我。
对于优化问题的解决方案,我必须获得包含线性表达式的矩阵的最大值,以便在第二步中最小化该值。
例如我有无限决策变量 x 和 y
x.append(m.addVar(vtype=GRB.CONTINUOUS, lb=-GRB.INFINITY, ub=+GRB.INFINITY, name="x")))
y.append(m.addVar(vtype=GRB.CONTINUOUS, lb=-GRB.INFINITY, ub=+GRB.INFINITY, name="y")))
和矩阵 M = [0.25*x,0.25*x+y]
。
矩阵的最大值应保存为M_max
。后来 objective 是为了最小化 M_max --> m.setObjective( M_max , GRB.MINIMIZE)
当我尝试输入 M_max = amax(M)
时,我总是会返回第一个元素,这里是 0.25x
。什么操作returns "real" 最大值? (当然我的模型比较复杂,但希望你能理解我的问题)
非常感谢您的帮助!
手动方法是:
introduce aux-var z (-inf, inf, cont)
add constraints
0.25*x <= z
0.25*x+y <= z
minimize (z)
不确定现在的gurobi是否提供一些自动方式。
编辑 似乎较新 gurobi-versions 提供了这个功能(自动重新制定),就像 here 解释的那样(python-docs;你需要检查如果这些也适用于您的界面;可能是 python)
max_ ( variables )
Used to set a decision variable equal to the maximum of a list of decision variables (or constants). You can pass the arguments as a Python list or as a comma-separated list.
# example probably based on the assumption:
# import: from gurobipy import *
m.addConstr(z == max_(x, y, 3))
m.addConstr(z == max_([x, y, 3]))
你没有说明你用的是什么amax
。如果是numpy的amax
或者gurobi以外的东西,就不能用! Gurobi-vars 不表现得像经典 fp-variables 并且对那些 variable-objects 的每个操作都需要由 gurobi 支持(通常通过 operator-overloading 隐藏)否则 gurobi 无法确定它正在正式化一个有效的 mathematical-model.
我希望有人能帮助我。 对于优化问题的解决方案,我必须获得包含线性表达式的矩阵的最大值,以便在第二步中最小化该值。
例如我有无限决策变量 x 和 y
x.append(m.addVar(vtype=GRB.CONTINUOUS, lb=-GRB.INFINITY, ub=+GRB.INFINITY, name="x")))
y.append(m.addVar(vtype=GRB.CONTINUOUS, lb=-GRB.INFINITY, ub=+GRB.INFINITY, name="y")))
和矩阵 M = [0.25*x,0.25*x+y]
。
矩阵的最大值应保存为M_max
。后来 objective 是为了最小化 M_max --> m.setObjective( M_max , GRB.MINIMIZE)
当我尝试输入 M_max = amax(M)
时,我总是会返回第一个元素,这里是 0.25x
。什么操作returns "real" 最大值? (当然我的模型比较复杂,但希望你能理解我的问题)
非常感谢您的帮助!
手动方法是:
introduce aux-var z (-inf, inf, cont)
add constraints
0.25*x <= z
0.25*x+y <= z
minimize (z)
不确定现在的gurobi是否提供一些自动方式。
编辑 似乎较新 gurobi-versions 提供了这个功能(自动重新制定),就像 here 解释的那样(python-docs;你需要检查如果这些也适用于您的界面;可能是 python)
max_ ( variables )
Used to set a decision variable equal to the maximum of a list of decision variables (or constants). You can pass the arguments as a Python list or as a comma-separated list.
# example probably based on the assumption:
# import: from gurobipy import *
m.addConstr(z == max_(x, y, 3))
m.addConstr(z == max_([x, y, 3]))
你没有说明你用的是什么amax
。如果是numpy的amax
或者gurobi以外的东西,就不能用! Gurobi-vars 不表现得像经典 fp-variables 并且对那些 variable-objects 的每个操作都需要由 gurobi 支持(通常通过 operator-overloading 隐藏)否则 gurobi 无法确定它正在正式化一个有效的 mathematical-model.