1. What is wrong?
/* 117 solve linearize;
NOTE: Problem generation will use 4 threads.
ERROR: The array subscript 'v['34944801',SI]' is invalid at line 103 column 84.
NOTE: Unable to create problem instance due to previous errors.
118
119 *print X;
120 *print {<r,c> in REMI_CLASS} (sum {<(r),(c),a> in REMI_CLASS_AOP} p[r,c,a]*X[r,c,a]);
121
122 create data SolData1 from [r c a] v[r,c] p X;
ERROR: The array subscript 'v['34944801',SI]' is invalid at line 122 column 36. */
proc optmodel;
set <str,str> REMI_CLASS; * dichiaro il tipo di variabile stringa;
num v {REMI_CLASS}; * dichiaro la variabile numerica;
read data sas.VData into REMI_CLASS=[remi class] v; * leggo il volume e lo inserisco in un vettore;
set <str,str,str> REMI_CLASS_AOP;
num p {REMI_CLASS_AOP};
read data sas.PData into REMI_CLASS_AOP=[remi class aop] p;
var X {REMI_CLASS_AOP} binary;
REMI_CLASS = REMI_CLASS inter setof {<r,c,a> in REMI_CLASS_AOP: 9 <= p[r,c,a] < 11.5} <r,c>;
/* funzione obiettivo */
min f = abs(sum {<r,c,a> in REMI_CLASS_AOP} (if char(c,1) = 'M' then 1 else -1 ) *v[r,c]*p[r,c,a]*X[r,c,a]);
/* constraints */
con onevalue {<r,c> in REMI_CLASS}:
sum {<(r),(c),a> in REMI_CLASS_AOP} X[r,c,a] = 1; * Verrà posta a uno la variabile che minimizza;
con Pcon {<r,c,a> in REMI_CLASS_AOP:
not(9 <= p[r,c,a] < 11.5)}: X[r,c,a] = 0;
solve linearize;
create data SolData1 from [r c a] v[r,c] p X;
create data SolData2 from [r c a]={<r,c,a> in REMI_CLASS_AOP: X[r,c,a].sol > 0.5} v[r,c] p X;
create data outdata_p from [remi class aop] p X ;
create data outdata_v from [remi class] v ;
quit;
2. And if I would like to put constraint in v values like v < 100, how can I write the inter setof? Because it won't find the correspond in the pdata.
... View more