簡體   English   中英

如何在 Cplex 中更改矩陣中的 1 個元素

[英]How to change 1 element in a matrix in Cplex

 int demand1[T][I]=[[0,17,4,7,10],
    [0,39,7,3,9],
    [0,15,13,10,10],
    [0,2,19,5,2],
    [0,7,13,4,16],
    [0,5,5,1,10],
    [0,15,13,12,7],
    [0,15,14,10,10]]

forall(i in Z, t in T)
  if (demand1[t][i] <= 5){
    demand1[t][i]==0;

}

這段代碼的意圖應該是,如果有一個元素大於 0 且小於 5,則應將其置為 0

您可以使用三元運算符或不連續的分段線性函數range T=1..8; 范圍 I=1..5;

int demand0[T][I]=[[0,17,4,7,10],
    [0,39,7,3,9],
    [0,15,13,10,10],
    [0,2,19,5,2],
    [0,7,13,4,16],
    [0,5,5,1,10],
    [0,15,13,12,7],
    [0,15,14,10,10]];
    
int demand1[t in T][i in I]=(0<=demand0[t][i]<=5)?0:demand0[t][i]; 

pwlFunction f=piecewise{1->0;0->6;6->6;1};   
int demand1b[t in T][i in I]=ftoi(f(demand0[t][i]));

execute
{
  writeln(demand1);
  writeln(demand1b)
}

assert forall(t in T,i in I) as:demand1[t][i]==demand1b[t][i];

工作正常並給出

[[0 17 0 7 10]
         [0 39 7 0 9]
         [0 15 13 10 10]
         [0 0 19 0 0]
         [0 7 13 0 16]
         [0 0 0 0 10]
         [0 15 13 12 7]
         [0 15 14 10 10]]
 [[0 17 0 7 10]
         [0 39 7 0 9]
         [0 15 13 10 10]
         [0 0 19 0 0]
         [0 7 13 0 16]
         [0 0 0 0 10]
         [0 15 13 12 7]
         [0 15 14 10 10]]

暫無
暫無

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

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