什么是新变量的目标系数

Lon*_*hai 3 gurobi

为了创建新的GRBVar,我需要为新变量提供目标系数:

GRBVar var = model.addVar (double lowerBound,
        double upperBound,
        double obj, // objective coefficient
        char type,
        String name);
Run Code Online (Sandbox Code Playgroud)

根据这个例子,值可以设置为0.所以我想知道客观系数是什么.

小智 7

客观系数是目标函数中变量的系数.在您给出的示例中:

 maximize    x +   y + 2 z
 subject to  x + 2 y + 3 z <= 4
             x +   y       >= 1
 x, y, z binary
Run Code Online (Sandbox Code Playgroud)

你的目标函数是最大化x + y + 2 z

所以客观系数适用于x:1表示y:1表示z:2表示

在创建变量时,您可以任意赋予系数(这里它们就像您所说的0.0)

 // Create variables

  GRBVar x = model.addVar(0.0, 1.0, 0.0, GRB.BINARY, "x");
  GRBVar y = model.addVar(0.0, 1.0, 0.0, GRB.BINARY, "y");
  GRBVar z = model.addVar(0.0, 1.0, 0.0, GRB.BINARY, "z");
Run Code Online (Sandbox Code Playgroud)

但是后来你应该设置实际的客观系数:

  // Set objective: maximize x + y + 2 z

  GRBLinExpr expr = new GRBLinExpr();
  expr.addTerm(1.0, x); 
  expr.addTerm(1.0, y); 
  expr.addTerm(2.0, z);
  model.setObjective(expr, GRB.MAXIMIZE);
Run Code Online (Sandbox Code Playgroud)

  • 那么在创建变量时使用“目标系数”有什么用呢?您能详细说明一下您的答案吗? (2认同)