首页 > 解决方案 > 我的多程车辆路线问题没有解决方案

问题描述

我正在 OPL 中研究多行程车辆路线问题模型(代码添加在下面),但我有两个问题

1:我的目标函数在我试图输入的时间限制下不起作用,任何人都可以给我提示如何正确输入?应该设置,只要样品在时间限制 Lm 之前进入实验室(节点 0),就没有惩罚,而当它迟到时,在 Lm 之后,惩罚功能就会启动。

2:我只是想弄清楚到目前为止我建立的模型中是否缺少关键约束。

希望你能提供帮助!提前致谢。

 int nn=...;        // Number of collection sites, laboratory is 0

 range N=0..nn;     // Set of nodes

 int nk=...;        // Number of vehicles

 range K=1..nk;     // Set of vehicles

 int nr=...;        // Number of routes

 range R=1..nr;     // Set of routes

 int nt=...;        // Number of minutes per workday

 range T=0..nt;     // Set of minutes (planning time horizon from 08:00 - 18:00)

 int t[N][N]=...;   // Travel time from site i to j 

 int q[N]=...;      // Demand per customer i

int p1=...;        // Penalty cost for samples arriving after deadline lm

int Lm=...;        // Maximum duration of a route

int s[N]=...;      // Service time per customer i

int M=...;         // Sufficiently big number

dvar boolean x[N][N][R]; // equal to 1 if arc (i,j) belongs to route r, 0 otherwise

dvar boolean y[N][T][R]; // equal to 1 if sample is picked up at customer i at time t and belongs to 
route r, 0 otherwise

dvar int+ w[N][R];       // Continuous variable indicating the service start time of customer i in 
route r

dvar int+ z[N][R];       // Start time at laboratory of route r

dvar int+ v[N][R];       // Arrival time at laboratory 0 after completing its route r


//Objective Function//

maximize sum (r in R, i in N, t in T: t <= v[0][r]-Lm) q[i] * y[i][t][r] +
   sum (r in R,i in N, t in T: t>v[0][r]-lm) q[i]* y[i][t][r]*p1 -      
 0.3 * sum (r in R, i,j in N) t[i][j] * x[i][j][r];  


//Constraints//

 subject to {

  forall (i in N, t in T)
     sum(r in R) y[i][t][r] == 1;                       //each customer should be visited exactly 
once per route

  forall (i in N, r in R, t in T)
    sum (j in N) x[i][j][r] == y[i][t][r];             //Link x and y variables

  forall (h in N, r in R)
    sum (i in N) x[i][h][r] - sum (j in N) x[h][j][r] == 0; //Flow balance constraint: if a vehicle 
 enters a site it should also leave that site

  forall (r in R)
    sum (i in N) x[0][i][r] == 1;                     //Every route leaves from the laboratory 

  forall (r in R)
    sum (i in N) x[i][0][r] == 1;                      //Every route returns to the laboratory 

  forall (i,j in N, r in R)
    w[i][r] + s[i] + t[i][j]-M*(1-x[i][j][r]) <= w[j][r]; //Ensures the feasbility of the time 
schedule 

  forall (i in N, r in R)
     w[i][r] <= z[0][r] + Lm;                           //Constrains the deadline for serving a 
customer

  forall (i,j in N, r in R)
    x[i][j][r]==0;                                    //Eliminate Subtours

  forall (i in N)
    sum(r in R, j in N) x[i][j][r] <= 2;              //Collection sites can be visited at most twice 
a day 

  forall (i in N)
    sum(r in R) x[i][i][r]==0;                        //Prevent loops

 }

标签: cplexoplvehicle-routing

解决方案


推荐阅读