java时间窗算法_试图解决带时间窗的车辆路径问题

我正在尝试为大学工作解决VRPWT问题,而且我遇到了一些麻烦,CPLEX一直在告诉我这是不可行的 .

有人可以检查我的代码,看看我错过了什么?

int n=...;

range cliente=0..n+1;

int nveiculos=...;

range K=1..nveiculos;

tuple edge {

int i;

int j;

int z;

}

{edge} edges = { | i,j in cliente : i!=j && i!=6 && j!=0 , z in K};

int custo[edges]=...;

int d[cliente]=...;

int t[edges]=...;

float a[cliente]=...;

float b[cliente]=...;

float q[K]=...;

dvar boolean x[edges];

dvar int s[cliente][K];

minimize sum(j in edges) sum(i in edges) custo[i]*x[j];

subject to {

forall(k in K){

sum( j in cliente: j!=0) x[<0,j,k>] ==1;

}

forall(k in K)

forall(p in cliente: p!=6 ){

sum( h in cliente: h!=p && h!=0) x[

]==1; }

forall(k in K){

sum(i in cliente) sum(j in cliente: i!=j && i!=6 && j!=0, k in K) d[i]* x[] <=q[k];

}

forall(k in K)

forall(h in cliente: h!=0){

sum(i in cliente: i!=h && i!=6) x[] == sum(j in cliente: j!=h && h!=6 && j!=0) x[];

}

forall(k in K){

sum(i in cliente: i!=6) x[] ==1;

}

forall(k in K)

forall(i in cliente){

a[i]<= s[i][k]<=b[i];

}

forall(k in K)

forall(i,j in cliente: i!=j && i!=6 && j!=0)

s[i][k]+t[]- 1000*(1-x[]) <= s[j][k];

}

我正在使用2辆车(nveiculos)和5个客户,使用一系列客户来添加家庭仓库和最后一个仓库 . a和b代表客户的开放时间,b代表关闭时间 . d是每个客户的需求,q是车辆容量 . s变量代表车辆到达客户端的时间 .

我已经有了很多简单的解决方案,虽然它与我基于的文章中的算法不匹配,我有点顽固,想要解决这个问题 .

如果有人可以帮助我,那真是太棒了 . 最好的祝福

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值