如何将公式转换为Python?

如何将公式转换为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:将货物从始发地运至目的地所需的叉车运输次

我目前正在研究一个跨坞拖车到门问题优化问题,需要帮助将此公式翻译成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的货运量的函数

这就是我到目前为止得到的。。。 输出需要为最佳拖车至最佳车门,以便进出:

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))))

您的帖子似乎没有包含问题。如果你在某个问题上需要帮助,请说明。