Hi everyone,
Can somebody tell me why my objective function is giving 0 in the output. In fact, everything is zero in the output. Here is my Python code.
m = Model("mip1")
var = [ "a", "b", "c", "d", "e", "f" ]
order = [ "c", "a", "v", "d", "c", "a", "b", "b", "f", "a", "d", "f" ]
p = {}
q = {}
perms = {}
temp = list(permutations(var))
for i in range(0, len(temp)):
perms[i] = list(temp[i])
# Create variables
for i in range(len(perms)):
for j in range(len(var)):
perms[i][j] = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="v%d%d" % (i,j))
for i in range(len(order)):
order[i] = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="s%d" % i)
for i in range(len(order)):
p[i] = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="p%d" % i)
for i in range(len(order)):
q[i] = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="q%d" % i)
# set model sense
m.ModelSense = GRB.MINIMIZE
# set objective function
for p_i in range(len(perms)):
m.setObjective(quicksum( p[k] + q[k] for k in range(1,len(order)-1)))
#constraints
for k in range(1,len(order)-1):
m.addConstr( (p[k] >= 0) , "c0")
m.addConstr( (q[k] >= 0), "c1")
m.addConstr( (perms[p_i].index(order[k]) - perms[p_i].index(order[k-1]) + p[k] - q[k] == 0), "c2")
# optimize the model
m.optimize()
for v in m.getVars():
print('%s %g' % (v.varName, v.x))
print('Obj: %g' % m.objVal)
Any help/comment on this will ber very much appreciated.
Thanks.
Khan