簡體   English   中英

Cplex model,車輛路徑中沒有 Dvar 值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM