-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathquestao2.java
74 lines (58 loc) · 2.42 KB
/
questao2.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package tp.poquest2;
import gurobi.*;
/**
*
* @author Ana Vilaca
*/
public class TPPO2 {
//PROBLEMA DOS PRODUTOS P1 E P2
public static void main(String[] args) {
//o algoritmo é definido dentro de um bloco try-catch
try {
// cria o ambiente do gurobi e seta as opcoes e inicia o ambiente
GRBEnv env = new GRBEnv(true);//cria
env.set("logFile", "mip1.log");//seta
env.start();//inicia
// cria um modelo vazio
GRBModel model = new GRBModel(env);
// cria as variáveis do problema
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");
// seta a funcao objetivo: maximizar 100x+150y
//adiciona os termos da funcao
GRBLinExpr expr = new GRBLinExpr();
expr.addTerm(100.0, x);
expr.addTerm(150.0, y);
model.setObjective(expr, GRB.MAXIMIZE);
//adiciona as resticoes uma a uma, nao e necessario adicionar a restricao de nao negatividade
// adiciona as restricoes: x <= 40
expr = new GRBLinExpr();
expr.addTerm(1.0, x);
expr.addTerm(0.0, y);
model.addConstr(expr, GRB.LESS_EQUAL, 40.0, "c0");
// adiciona restricao: y <= 30
expr = new GRBLinExpr();
expr.addTerm(0.0, x);
expr.addTerm(1.0, y);
model.addConstr(expr, GRB.LESS_EQUAL, 30.0, "c1");
// adiciona restricao: 2x +3y <= 120
expr = new GRBLinExpr();
expr.addTerm(2.0, x);
expr.addTerm(3.0, y);
model.addConstr(expr, GRB.LESS_EQUAL, 120.0, "c1");
// modelo de otimizacao
model.optimize();
System.out.println(x.get(GRB.StringAttr.VarName)
+ " " + x.get(GRB.DoubleAttr.X));
System.out.println(y.get(GRB.StringAttr.VarName)
+ " " + y.get(GRB.DoubleAttr.X));
System.out.println("Obj: " + model.get(GRB.DoubleAttr.ObjVal));
// deleta o modelo e o ambiente
model.dispose();
env.dispose();
} catch (GRBException e) {
System.out.println("Error code: " + e.getErrorCode() + ". "
+ e.getMessage());
}
}
}