4 Copyright (c) by Joao Pedro PEDROSO, Masahiro MURAMATSU and Mikio KUBO, 2012 6 from pyscipopt
import Model, quicksum, multidict
8 def prodmix(I,K,a,p,epsilon,LB):
9 """prodmix: robust production planning using soco 13 a[i][k] - coef. matrix 14 p[i] - price of material i 15 LB[k] - amount needed for k 16 Returns a model, ready to be solved. 19 model = Model(
"robust product mix")
23 x[i] = model.addVar(vtype=
"C", name=
"x(%s)"%i)
25 rhs[k] = model.addVar(vtype=
"C", name=
"rhs(%s)"%k)
27 model.addCons(quicksum(x[i]
for i
in I) == 1)
29 model.addCons(rhs[k] == -LB[k]+ quicksum(a[i,k]*x[i]
for i
in I) )
30 model.addCons(quicksum(epsilon*epsilon*x[i]*x[i]
for i
in I) <= rhs[k]*rhs[k])
32 model.setObjective(quicksum(p[i]*x[i]
for i
in I),
"minimize")
39 """creates example data set""" 40 a = { (1,1):.25, (1,2):.15, (1,3):.2,
41 (2,1):.3, (2,2):.3, (2,3):.1,
42 (3,1):.15, (3,2):.65, (3,3):.05,
43 (4,1):.1, (4,2):.05, (4,3):.8
46 I,p = multidict({1:5, 2:6, 3:8, 4:20})
47 K,LB = multidict({1:.2, 2:.3, 3:.2})
48 return I,K,a,p,epsilon,LB
51 if __name__ ==
"__main__":
52 I,K,a,p,epsilon,LB = make_data()
53 model = prodmix(I,K,a,p,epsilon,LB)
55 print(
"Objective value:",model.getObjVal())
58 print(i,
": ",model.getVal(x[i]))