微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Gurobi for VRPD提货和送货的车辆路线问题

如何解决Gurobi for VRPD提货和送货的车辆路线问题

如何编码取货和送货限制?

Input parameters ####

n=10   #number of cinetes 

X_C=[40,88,42,72,10,65,27,12,49,57,31]

Y_C=[50,30,5,35,20,55,43,24,48,67]

N=[i for i in range(1,n+1)]   # [1,2,3,4,6,7,8,9,10]
V=[0]+N  #[0,1,10]

A=[(i,j) for i in V for j in V if i != j]   
[(0,1),(0,2),3),4),5),6),7),8)...

C = {(i,j): np.hypot(X_C[i]-X_C[j],Y_C[i]-Y_C[j]) for i,j in A}  dist cost

Q=200 #capacity

PD=[10,40,23,16,25,26]

PD=dict(zip(N,PD))  
  
pick up demand  {1: 10,2: 40,3: 10,4: 20,5: 23,6: 16,7: 23,8: 3,9: 25,10: 26}

DD=[10,19,14,13,3]

DD=dict(zip(N,DD))  
delivery demand {1: 10,2: 10,3: 30,4: 19,5: 14,6: 9,7: 13,8: 13,9: 23,10: 3}


    from gurobipy import Model,GRB,quicksum
    
    mdl = Model('VRSPDTW')
    
    ## Decision variables ## 
    
    x = mdl.addVars(A,vtype=GRB.BINARY)   
    u = mdl.addVars(N,vtype=GRB.CONTINUOUS)  ##  # cumulative demand satisfied variable
    #t=mdl.addVars(V,vtype=GRB.CONTINUOUS)     ##  # cumulative time variable
    
    mdl.modelSense = GRB.MINIMIZE
    mdl.setobjective(quicksum(x[i,j]*C[i,j] for i,j in A))
    
    mdl.addConstrs(quicksum(x[i,j] for j in V if j != i) == 1 for i in N)   ## each point must be vizited 
    mdl.addConstrs(quicksum(x[i,j] for i in V if i != j) == 1 for j in N)   ## each point must be left 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。