java - 变量的 Gurobi 函数

标签 java gurobi

我有一个这样的函数:y = f(x) = a*(x/b) + c

我想使用 Gurobi 最大化 yxy 都必须是 Gurobi 变量。

如何对这个问题进行建模?

P.S:abc是数值。

最佳答案

首先,您必须添加 xy 作为变量,例如

GRBVar x = model.addVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x");
GRBVar y = model.addVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y");

然后设置目标函数以最大化y

GRBLinExpr expr = new GRBLinExpr();
expr.addTerm(1.0, y);
model.setObjective(expr, GRB.MAXIMIZE);

并添加一个约束条件,声明y = a*(x/b) + c,或等效的y - a/b * x = c:

expr = new GRBLinExpr();
expr.addTerm(1.0, y); expr.addTerm(- a/b, x); 
model.addConstr(expr, GRB.EQUAL, c, "c0");

或者,您也可以通过在变量定义中指定目标系数来设置目标。即,将 y 的定义替换为

GRBVar y = model.addVar(0.0, GRB.INFINITY, 1.0, GRB.CONTINUOUS, "y");

目标的定义就变成了

model.set(GRB.IntAttr.ModelSense, GRB.MAXIMIZE);

关于java - 变量的 Gurobi 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55501435/

相关文章:

java - Jaxb 未解码 unicode 1F609

java - 哪个性能更好: for each or iterator in LinkedList?

python - 如何在 Gurobi 中编写多目标函数?

julia - 如何确定 JuMP 中的 Gurobi 或求解器版本

python - 属性错误 : 'gurobipy.LinExpr' object has no attribute '__colno__'

java - java中的第三个 boolean 状态是什么?

java - int[][] 数组的所有可能组合

java - 将十六进制字符串转换为字节数组以进行 RSA 解密

c++ - CMAKE 找不到 GUROBI 外部库

julia - 使用 JumP 获取不可简化的不一致子系统 (IIS) - Julia