如何将公式转换为Python?
我目前正在研究一个跨坞拖车到门问题优化问题,需要帮助将此公式翻译成pyscipopt语言!!请看下面的描述和图片 •I:接收门的数量(入站卸载门) •J:装运门的数量(出站装载门) •M:来源数量(I)≥ M) 每个入站拖车都被视为一个起点 •N:目的地数量(J)≥ N) 目的地是城市、枢纽或交叉码头 •dij:接收门i和目标门j之间的距离 •xmi:0/1指示器,用于将原点m分配给接收门i •ynj:0/1指示器,用于将目的地n分配给装运门j •wmn:将货物从始发地运至目的地所需的叉车运输次数 目的地。该数字是从m发送到n的货运量的函数 这就是我到目前为止得到的。。。 输出需要为最佳拖车至最佳车门,以便进出:如何将公式转换为Python?,python,scip,Python,Scip,我目前正在研究一个跨坞拖车到门问题优化问题,需要帮助将此公式翻译成pyscipopt语言!!请看下面的描述和图片 •I:接收门的数量(入站卸载门) •J:装运门的数量(出站装载门) •M:来源数量(I)≥ M) 每个入站拖车都被视为一个起点 •N:目的地数量(J)≥ N) 目的地是城市、枢纽或交叉码头 •dij:接收门i和目标门j之间的距离 •xmi:0/1指示器,用于将原点m分配给接收门i •ynj:0/1指示器,用于将目的地n分配给装运门j •wmn:将货物从始发地运至目的地所需的叉车运输次
from pyscipopt import Model, quicksum
def opt_model(In, Out, Trailer_In, Trailer_Out, cost_matrix):
model = Model("Optimization")
x = {}
for i, m, j, n in cost_matrix:
x[i, m, j, n] = model.addVar(vtype="C", name="x[%s,%s, %s, %s]" % (i, m, j, n))
for i in In:
for m in Trailer_In:
model.addCons(quicksum(x[i, m, j, n] for j in In if (i,m) in x) == 1, "Jobs_In[%s,%s]" % (i,m))
for j in Out:
for n in Trailer_Out:
model.addCons(quicksum(x[i, m, j, n] for i in Out if (j,n) in x) == 1, "Jobs_Out[%s,%s]" % (j,n))
model.setObjective(quicksum((cost_matrix[i, m, j, n] * x[i, m, j, n] for i, m, j, n in x)))
model.data = x
return model
Trailer_In = [1, 2, 3]
Trailer_Out = [1, 2, 3]
trips = {(1,1):4, (1,2):2, (1,3):2,
(2,1):4, (2,2):7, (2,3):3,
(3,1):4, (3,2):5, (3,3):2
}
In = [1, 2, 3]
Out = [1, 2, 3]
distance = {(1,1):4, (1,2):6, (1,3):9,
(2,1):5, (2,2):4, (2,3):7,
(3,1):6, (3,2):3, (3,3):4
}
cost_matrix = {}
for i in In:
for m in Trailer_In:
for j in Out:
for n in Trailer_Out:
cost_matrix[i, m, j, n] = distance[i, j] * trips[m, n]
model = opt_model(In, Out, Trailer_In, Trailer_Out, cost_matrix)
model.optimize()
print("Optimal value")
print(model.getObjVal())
EPS = 0
for i, m, j, n in model.data:
if model.getVal(model.data[i, m, j, n]) >= EPS:
print("Dock no. {0} unloads Truck no. {1} and dock no. {2} loads truck no. {3}".format((model.getVal(i, m, j, n))))
您的帖子似乎没有包含问题。如果你在某个问题上需要帮助,请说明。