[英]Cplex model, no Dvar values, in vehicle routing
int NStations1= ...;
int Nstations2=...;
range Stations1= 1..NStations1;
range Stations2= 1..Nstations2;
int demand1[Stations1]=...;
int demand2[Stations2]=...;
int distance[Stations1][Stations2]=...;
int AvailTime=...;
int Capacity=...;
dvar float+ x[Stations1][Stations2];
dvar float+ f[Stations1][Stations2];
minimize sum(i in Stations1) sum(j in Stations2) x[i][j]*distance[i][j];
subject to
{
forall (i in Stations1) sum(j in Stations2) (f[j][i]-f[i][j]) <= demand1[i];
forall (i in Stations1) sum(j in Stations2) x[i][j] == 1 ;
forall (i in Stations1) sum(j in Stations2) x[j][i] == 1;
forall (i in Stations1, j in Stations2)
{0<= f[i][j];
f[i][j] <= x[i][j]*Capacity;}
數據:NSstations1=4; N站2=4;
demand1=[5 , 3, 4, 7];
demand2=[5 , 3, 4, 7];
distance=[ [ 9 2 7 4 ]
[ 2 5 3 3 ]
[ 8 4 13 8 ]
[ 7 3 4 3 ]
];
AvailTime=3600;
Capacity= 30;
問題:
在添加最后一個約束之前,我沒有得到我的 dvar、f 的值,而我得到了這個參數的值,但我需要一個容量約束? 如何解決這個問題
我明白了
x = [[0
0 0 1]
[1 0 0 0]
[0 1 0 0]
[0 0 1 0]];
f = [[0 0 0 0]
[0 0 0 0]
[0 0 0 0]
[0 0 0 0]];
如果我使用 CPLEX 22.1 在 IDE 中運行您的 model
如果我把你的目標變成
minimize staticLex(sum(i in Stations1) sum(j in Stations2) x[i][j]*distance[i][j],-sum(i in Stations1,j in Stations2) f[i][j]);
然后我得到
x = [[0
0 0 1]
[1 0 0 0]
[0 1 0 0]
[0 0 1 0]];
f = [[0 0 0 30]
[30 0 0 0]
[0 30 0 0]
[0 0 30 0]];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.