2016-09-06 83 views
2

目的係數爲了創造新的GRBVar,我需要爲new variable提供客觀係數:什麼是新的變量

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

據​​,該值可以設置爲0,所以我不知道什麼目標係數是。

回答

3

客觀係數是您的目標函數中變量的係數。在這個例子中,你已經給:

maximize x + y + 2 z 
subject to x + 2 y + 3 z <= 4 
      x + y  >= 1 
x, y, z binary 

你的目標函數是最大化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"); 

但是之後您應該設置實際的目標係數:

// 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);