在 CPLEX OPL 中合并数组

Merging arrays in CPLEX OPL

我正在尝试将四个不同大小的数组合并为一个数组(子卷)。该数组应包含 12 个对应于输入字符串的浮点值。 append 函数对我不起作用,因为它只适用于整数值。编写此代码的正确方法是什么?

{string} drySegment = ...;
{string} liquidSegment = ...;
{string} breakSegment = ...;
{string} contSegment = ...;
{string} subSegment = ...;

dvar float dryVolume[drySegment];
dvar float liquidVolume[liquidSegment];
dvar float breakVolume[breakSegment];
dvar float contVolume[contSegment];
dvar float subVolume[subSegment];

你可以试试

{string} s1={"1","2"}; 
{string} s2={"3","4"}; 
float f1[s1]=[0.6,0.8];
float f2[s2]=[0.66,0.88];
{string} s12=s1 union s2;
float f12[i in s12]=(i in s1)?f1[i]:f2[i];

execute
 {
  writeln(f12); 
 }

给出 [0.6 0.8 0.66 0.88]

那你可以试试

{string} s1={"1","2"}; 
{string} s2={"3","4"}; 

 dvar float f1[s1];
 dvar float f2[s2];

 {string} s12=s1 union s2;

 dexpr float f12[i in s12]=(i in s1)?f1[i]:f2[i];

 subject to
 {
 f1["1"]==1.1;
 f1["2"]==1.2; 
 f2["3"]==1.3;
 f2["4"]==1.4;
 }

 execute
 {
 writeln(f12); 
 }