我有两套。
在某些约束下,我必须将总运输成本降至最低。我在Python中使用纸浆。 如何引入变量以允许某些特定路径?
条件是if cost $(S_i, D_j) >=$ 250 then 0 else 1
。
allowed_route = []
for i in range(len(matrix)):
for j in matrix[i]:
if j >= 250:
allowed_route.append(0)
else:
allowed_route.append(1)
np_array=np.asarray(allowed_route)
allowed_route = np_array.reshape(6, 4)
allowed_route = np.array(P_allowed_PLF_cap).tolist()
通过这种方式,我已经定义了参数,但是无法引入变量。
答案 0 :(得分:0)
您应该对具有合法路径的S X D变量做一个子集并使用它。这是一个示例:
In [4]: from pulp import *
In [5]: sources = {'S1', 'S2', 'S3'}
In [6]: destinations = {'D1', 'D2', 'D3'}
In [7]: legal_routes = ( ('S1', 'D2'),
...: ('S2', 'D1') )
In [8]: # note: above is obviously infeasible...just shows idea...
In [9]: route_select = LpVariable.dicts('route', legal_routes, 0, 1, LpBinary)
实际上,您可能需要为每条路线支付费用,因此我将所有这些都保存在字典中,并将字典键发送给LpVariable.dicts呼叫
其余的内容应与我提到的示例相似。如果您被困住了,那么如果您搜索“纸浆运输模型”或“纸浆稀疏约束”之类的话,此站点上还会有其他示例。