在我键入数字时更改数组的长度。(IBM ILOG CPLEX OPL)
Changing array's length as I typed number.(IBM ILOG CPLEX OPL)
现在我正在尝试制作一个数组,将其长度更改为我输入的变量。
让我向您展示一个示例代码,让您更容易理解。
int ANum = 3; // Number of Equipment A
int BNum = 2; // Number of Equipment B
int QNum = 8; // Number of Equipment Q
range ARange = 1..ANum;
range BRange = 1..BNum;
range CRange = 1..(ANum+BNum);
range QRange = 1..QNum;
float Ar1[ARange] = [1.3, 5, 3]
float Ar2[BRange] = [0.9, 2.2]
float Ar3[CRange] = [Ar1[ARange], Ar2[BRange]] <== "This is Error"
float Ar4[QRange] = [0.8, 1.1, 0.5, 2, 0.3, 1.8, 1.1, 0.6]
------------第一题-----------------------------
在这种情况下,我们可以看到数组 "Ar4".
我想要的是当我将 "QNum" 的变量更改为 (<= 8),ex) 5 或 3 或其他时。
Ar2 会自动将自己的长度更改为 5 或 3 或其他。
就像,如果输入 'int ANum = 5;' => "Ar2[QRange] = [0.8, 1.1, 0.5, 2, 0.3]"
------------第二题-------------------------
如您所见,'AR1 and AR2, AR3'
我想合并 AR1 和 AR2,所以创建新数组 AR3。
我这样做的原因是设备数量经常变化。
这意味着每次我 运行 此代码用于更改设备数量时,我都需要键入此变量。以及多样性环境中的迭代代码。
您可以使用的一种方法是:
float Ar3[i in CRange] = ((i<=ANum) ? Ar1[i] : Ar2[i-ANum]);
现在我正在尝试制作一个数组,将其长度更改为我输入的变量。
让我向您展示一个示例代码,让您更容易理解。
int ANum = 3; // Number of Equipment A
int BNum = 2; // Number of Equipment B
int QNum = 8; // Number of Equipment Q
range ARange = 1..ANum;
range BRange = 1..BNum;
range CRange = 1..(ANum+BNum);
range QRange = 1..QNum;
float Ar1[ARange] = [1.3, 5, 3]
float Ar2[BRange] = [0.9, 2.2]
float Ar3[CRange] = [Ar1[ARange], Ar2[BRange]] <== "This is Error"
float Ar4[QRange] = [0.8, 1.1, 0.5, 2, 0.3, 1.8, 1.1, 0.6]
------------第一题-----------------------------
在这种情况下,我们可以看到数组 "Ar4".
我想要的是当我将 "QNum" 的变量更改为 (<= 8),ex) 5 或 3 或其他时。 Ar2 会自动将自己的长度更改为 5 或 3 或其他。
就像,如果输入 'int ANum = 5;' => "Ar2[QRange] = [0.8, 1.1, 0.5, 2, 0.3]"
------------第二题-------------------------
如您所见,'AR1 and AR2, AR3'
我想合并 AR1 和 AR2,所以创建新数组 AR3。
我这样做的原因是设备数量经常变化。 这意味着每次我 运行 此代码用于更改设备数量时,我都需要键入此变量。以及多样性环境中的迭代代码。
您可以使用的一种方法是:
float Ar3[i in CRange] = ((i<=ANum) ? Ar1[i] : Ar2[i-ANum]);