2016-04-14 8 views
0

Ich versuche, vier Arrays einer anderen Größe zu einem Array (subVolume) zusammenzuführen. Dieses Array sollte 12 Float-Werte enthalten, die den eingegebenen Strings entsprechen. Die Append-Funktion funktioniert bei mir nicht, da sie nur mit Integer-Werten arbeitet. Was ist der richtige Weg, dies zu programmieren?Zusammenführen von Arrays in CPLEX OPL

{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]; 

Antwort

1

dann könnte man versuchen

{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); 
} 
0

Sie

{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); 
} 

versuchen könnte, die gibt [0,6 0,8 0,66 0,88]

+0

Dies gilt nicht in meinem Fall arbeiten, weil f1 (oder dryVolume) ist eine Entscheidungsvariable. Diese Variable ist nicht festgelegt, wird aber vorher berechnet. – FabianW