求出限时浆后最佳可行解

2024-05-19 11:29:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解决一个有10个客户和5个站点的多站点车辆路径问题。当添加subtour约束时,解算器在合理的时间内不会再找到最优解。当我在一段时间后停止求解并检索最佳解时,他返回一个不可行的解(连续变量,而需要整数)。我怎样才能找到目前为止找到的最佳可行的解决方案,或者有没有其他方法来解决我的a问题?我知道stack上也有类似的问题,但它解决了gurobi解算器的问题。在

在这里你可以找到代码的一些部分和他在10秒后给我的输出。在

# Definition of the route variables:
route_vars = plp.LpVariable.dicts("Route",(Places,Places,Trucks),0,None,plp.LpInteger)

# constraint 7: No subtours
for i in Places:
    for j in Places:
        for k in Trucks:
            if i != j:
                prob += u[i]-u[j] + (15)*route_vars[i][j][k] <= 14       


# Solve the problem
prob.solve(plp.PULP_CBC_CMD(maxSeconds=10))
print("status:", plp.LpStatus[prob.status])
print("optimal solution to the problem: ", plp.value(prob.objective))

# Print Results
for i in Places:
    for k in Trucks:
        for j in Places:
            if plp.value(route_vars[i][j][k]) != 0:
                print(plp.value(route_vars[i][j][k]), 'Truck ',k + 1, " from Place ",i+1, " to place ",j+1)

运行10秒后输出:

^{pr2}$

如你所见,这给了我一个不可行的解决方案。在


Tags: theinforif站点valuevars解决方案
1条回答
网友
1楼 · 发布于 2024-05-19 11:29:53

米勒没有错误地定义泽姆林的约束。约束应该是这样的,其中N是客户的数量,D是仓库的数量。在

# constraint 8: No subtours (Miller Tucker Zemlin)
for i in range(0,N):
    for j in range(0,N):
        for k in Trucks:
            if j != i:
                prob += u[i]-u[j] + (N+D+1)*route_vars[i][j][k] <= N+D   

相关问题 更多 >

    热门问题