在输入数字时更改数组的长度。(IBM ILOG CPLEX OPL)

问题描述 投票:0回答:1

现在我正在尝试创建一个数组,将其长度更改为我键入的变量。

让我向您展示一个示例代码,让您更容易理解。

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或elses时。 Ar2会自动将自己的长度更改为5或3或elses。

像,如果打字'int ANum = 5;' => "Ar2[QRange] = [0.8, 1.1, 0.5, 2, 0.3]"

---------第二个问题-------------------------- 如你所见,'AR1和AR2,AR3' 我想结合AR1和AR2,所以制作新阵列AR3。


我这样做的原因是定期更换设备的数量。这意味着每当我为更改数量的设备运行此代码时,我需要输入此变量。对于多样性环境中的迭代代码。

integer linear-programming cplex ibm-ilog-opl
1个回答
3
投票

您可能使用的一种方法是:

float Ar3[i in CRange] = ((i<=ANum) ? Ar1[i] : Ar2[i-ANum]);
© www.soinside.com 2019 - 2024. All rights reserved.