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