簡體   English   中英

約束中的 Cplex 數組

[英]Cplex arrays in constrains

我使用下面的代碼生成 [1 3 3 3 2 2 5 5 5 5 5] 我有一個決策變量數組 c[n] 其中 n 等於 s{} 的相同范圍/大小,我想要其中的每個值決策變量小於 s{} 中的這些值 我寫了下面的代碼並且沒有錯誤,但是 c[n] 的值不會被強制小於 s{} 的值 c[1] 不是 < = 1 並且 c[2] 不是 <=3

int n=4;
range r=1..n;
int m=11;
range w=1..m;


int a[r]=[1,3,2,5];

tuple t
{
  key int rank;
  int value;
}

{t} s={};

dvar c[w];

subject to 
{

  forall( k in w, i in 1.. card(s) )
           c [k]  <= item(s,<i>).value ;

}

execute
{
  var rank=0;
  for(var i in r)
  {
    for(var j=1;j<=a[i];j++)
    {
      rank++;
      s.add(rank,a[i])
    }
  }
}

您應該在要阻止的主題之前進行預處理。

嘗試

int n=4;
range r=1..n;
int m=11;
range w=1..m;


int a[r]=[1,3,2,5];

tuple t
{
  key int rank;
  int value;
}

{t} s={};

execute
{
  var rank=0;
  for(var i in r)
  {
    for(var j=1;j<=a[i];j++)
    {
      rank++;
      s.add(rank,a[i])
    }
  }
}

dvar int c[w];

subject to 
{

  forall( k in w, i in 1.. card(s) )
           c [k]  <= item(s,<i>).value ;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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