|
- import gurobipy as gp
- from gurobipy import GRB
-
- try:
-
- # Create a new model
- m = gp.Model("1_2")
-
- # Create variables
- x1 = m.addVar(vtype=GRB.INTEGER, name="x1")
- x2 = m.addVar(vtype=GRB.INTEGER, name="x2")
- x3 = m.addVar(vtype=GRB.INTEGER, name="x3")
- x4 = m.addVar(vtype=GRB.INTEGER, name="x4")
- x5 = m.addVar(vtype=GRB.INTEGER, name="x5")
- x6 = m.addVar(vtype=GRB.INTEGER, name="x6")
- x7 = m.addVar(vtype=GRB.INTEGER, name="x7")
- x8 = m.addVar(vtype=GRB.INTEGER, name="x8")
-
- # Set parameters
- a1 = [5, 10, 0, 6000, 300]
- a2 = [7, 9, 12, 10000, 321]
- b1 = [6, 8, 0, 4000, 250]
- b2 = [4, 0, 11, 7000, 783]
- b3 = [7, 0, 0, 4000, 200]
- c11 = 0.25
- c12 = 1.25
- c21 = 0.35
- c22 = 2.00
- c31 = 0.50
- c32 = 2.80
-
- # Set objective
- m.setObjective((c12 - c11) * (x1 + x2) + (c22 - c21) * (x6 + x7) + (c32 - c31) * x8 -
- (a1[0] * x1 + a1[1] * x6) * a1[4] / a1[3] - (a2[0] * x2 + a2[1] * x7 + a2[2] * x8) * a2[4] / a2[3] -
- (b1[0] * x3 + b1[1] * (x6 + x7)) * b1[4] / b1[3] - (b2[0] * x4 + b2[2] * x8) * b2[4] / b2[3] - b3[0] * x5 * b3[4] / b3[3], GRB.MAXIMIZE)
-
- # Add constraint
- m.addConstr(a1[0] * x1 + a1[1] * x6 <= a1[3], "c0")
- m.addConstr(a2[0] * x2 + a2[1] * x7 + a2[2] * x8 <= a2[3], "c1")
- m.addConstr(b1[0] * x3 + b1[1] * (x6 + x7) <= b1[3], "c2")
- m.addConstr(b2[0] * x4 + b2[2] * x8 <= b2[3], "c3")
- m.addConstr(b3[0] * x5 <= b3[3], "c4")
- m.addConstr(x1 + x2 == x3 + x4 + x5, "c5")
-
- # Optimize model
- m.optimize()
-
- for v in m.getVars():
- print('%s %g' % (v.VarName, v.X))
-
- print('Obj: %g' % m.ObjVal)
-
- except gp.GurobiError as e:
- print('Error code ' + str(e.errno) + ': ' + str(e))
-
- except AttributeError:
- print('Encountered an attribute error')
|