我正在解决车辆路径问题,而简单的优化功能是
最小化: 所有车辆游览距离的总和
在AMPL中看起来像这样
minimize objective_function:
sum {i in city, j in city,k in vehicle} x[i,j,k]*D[i,j];
其中x是标记单个车辆的二进制矩阵,D是距离矩阵
我想要做的是尽量减少车队完成操作所需的时间。其中时间计算为距离超速“D[i,j]/S
”。
有什么建议我应该把它添加到当前的目标函数?
到目前为止我所做的是将我的目标函数改为
minimize objective_function:
sum {i in city, j in city,k in vehicle} x[i,j,k]*(D[i,j]/S[k]);
这给了我每辆车所用时间的总和。但是,由于所有车辆的时间并行开始,我需要从每辆车的时间中选出最大值。这将是完成整个任务的时间。必须在AMPL中对其进行编码才能使用CPLEX进行解决。
答案 0 :(得分:0)
var max_time;
subject to definemaxtime {i in city, j in city, k in vehicle}:
max_time >= x[i,j,k]*(D[i,j]/S[k]);
minimize objective_function: max_time;
编辑:哎呀,这不太正确,给出了单次旅行的最长时间。应该是:
var max_time;
subject to definemaxtime {k in vehicle}:
max_time >= sum{i in city, j in city} x[i,j,k]*(D[i,j]/S[k]);
minimize objective_function: max_time;