我正在寻找在CPLEX OPL中解决的车辆路由问题的代码
我需要在CPLEX中创建一个简单的VRP模型,如果有人可以帮助我,我将非常感激。我想知道哪辆车正在为哪个客户服务?
这是细节: 仓库:1 车辆:15 车辆容量:17 客户:56 客户需求:2
这是我到目前为止尝试的:
.mod:
{string} k = ...; // vehicles
{string} i = ...; // nodes
{string} j = ...; // depot
int demand[i]= ...; // demand at node i
int cap[k]= ...; // capacity of the vehicle
int dist[i][j]=...; //distance from node i to j
dvar float x[i][j];
minimize
sum(nodes in i, depot in j)
dist[i][j];
subject to {
forall (nodes in i)
demand_must_be_met:
sum(vehicle in k)
x[k][i]==demand[i];
}
.dat:
k = {k1,k2,k3,k4,k5,k6,k7,k8,k9,k10,k11,k12,k13,k14,k15};
i = {Taubenmarkt,Landstrasse,LLenaupark,LLandstrasse,Industriezeile,LentiaCity,LLeonding,LInterspar,KarlSteigerStrasse,Kornstrasse,Traunerkreuzung,PlusKaufStrasse,FMZ,Haid,Marchtrenk,EferdingPupping,Walding,Rohrbach,BadLeonfelden,LAltenbergerstrasse,Gallneukirchen,Unterweitersdorf,FMZNord,Mauthausen,Furnpark,FMZEnnspark,NaarerStrasse,Steyr,SteyrResthofstrasse,SteyrHaagerStrasse,Sierning,LHartheimeerstrasse,BadHall,Micheldorf,Vorchdorf,WelsBäckergasse,Dalistrasse,WelsOberfeldstrasse,MaxCenter,GrieskirchenSchlüsselberg,DruckereistrasseSEP,Laakirchen,Schwanenstadt,Ampflwang,RiedTumeltshamFMZ,Weberzeile,Schärding,BadIschlFMZ,BadIschlZentrum,VöcklabruchZentrum,Varena,FMZTimelkam,StGeorgen,Mondsee,CityCenter,Mattighofen
};
j = {Enns};
cap = [17,17,17,17,17,17,17,17,17,17,17,17,17,17,17];
demand = [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
];
dist = [23,22,22,24,12,24,19,18,22,23,23,16,20,33,41,35,68,52,28,37,42,63,10,4,3,17,22,21,21,28,11,36,63,52,43,37,38,43,55,75,64,64,90,82,81,106,111,108,77,76,80,87,110,123,117
];
非常感谢您提前提供帮助!
I need to create a simple VRP model in CPLEX, I would be so grateful if someone could help me out. I want to know which vehicle is serving which customer?
Here are the details:
depot: 1
vehicles: 15
vehicle capacity: 17
Customers: 56
Customers demand: 2
here is what I have tried so far:
.mod:
{string} k = ...; // vehicles
{string} i = ...; // nodes
{string} j = ...; // depot
int demand[i]= ...; // demand at node i
int cap[k]= ...; // capacity of the vehicle
int dist[i][j]=...; //distance from node i to j
dvar float x[i][j];
minimize
sum(nodes in i, depot in j)
dist[i][j];
subject to {
forall (nodes in i)
demand_must_be_met:
sum(vehicle in k)
x[k][i]==demand[i];
}
.dat:
k = {k1,k2,k3,k4,k5,k6,k7,k8,k9,k10,k11,k12,k13,k14,k15};
i = {Taubenmarkt,Landstrasse,LLenaupark,LLandstrasse,Industriezeile,LentiaCity,LLeonding,LInterspar,KarlSteigerStrasse,Kornstrasse,Traunerkreuzung,PlusKaufStrasse,FMZ,Haid,Marchtrenk,EferdingPupping,Walding,Rohrbach,BadLeonfelden,LAltenbergerstrasse,Gallneukirchen,Unterweitersdorf,FMZNord,Mauthausen,Furnpark,FMZEnnspark,NaarerStrasse,Steyr,SteyrResthofstrasse,SteyrHaagerStrasse,Sierning,LHartheimeerstrasse,BadHall,Micheldorf,Vorchdorf,WelsBäckergasse,Dalistrasse,WelsOberfeldstrasse,MaxCenter,GrieskirchenSchlüsselberg,DruckereistrasseSEP,Laakirchen,Schwanenstadt,Ampflwang,RiedTumeltshamFMZ,Weberzeile,Schärding,BadIschlFMZ,BadIschlZentrum,VöcklabruchZentrum,Varena,FMZTimelkam,StGeorgen,Mondsee,CityCenter,Mattighofen
};
j = {Enns};
cap = [17,17,17,17,17,17,17,17,17,17,17,17,17,17,17];
demand = [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
];
dist = [23,22,22,24,12,24,19,18,22,23,23,16,20,33,41,35,68,52,28,37,42,63,10,4,3,17,22,21,21,28,11,36,63,52,43,37,38,43,55,75,64,64,90,82,81,106,111,108,77,76,80,87,110,123,117
];
thank you so much for your help in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以从如何使用opl
you could start with the TSP example in How to with OPL