Open
Description
Use AMPL .dat format files, it is possible to read a subset of pairs and an associated parameter from the same table. For example, with
set NUTR;
set FOOD;
set LINKS within {NUTR, FOOD};
param amt {LINKS} >= 0;
and data
set NUTR := A B1 B2 C ;
set FOOD := BEEF CHK FISH HAM MCH MTL SPG TUR ;
param :LINKS: amt (tr):
A C B1 B2 :=
BEEF 60 20 . 15
CHK . . 20 20
FISH . . 15 .
HAM 40 40 35 .
MCH 15 35 15 15
MTL 70 30 15 15
SPG 25 50 25 15
TUR 60 20 15 . ;
neither the values marked .
or the corresponding members of LINKS are included in the data that is read:
ampl: display LINKS, amt;
set LINKS :=
(A,BEEF) (B2,CHK) (B1,HAM) (B2,MCH) (B2,MTL) (B2,SPG)
(C,BEEF) (B1,FISH) (A,MCH) (A,MTL) (A,SPG) (A,TUR)
(B2,BEEF) (A,HAM) (C,MCH) (C,MTL) (C,SPG) (C,TUR)
(B1,CHK) (C,HAM) (B1,MCH) (B1,MTL) (B1,SPG) (B1,TUR);
amt [*,*] (tr)
: A B1 B2 C :=
BEEF 60 . 15 20
CHK . 20 20 .
FISH . 15 . .
HAM 40 35 . 40
MCH 15 15 15 35
MTL 70 15 15 30
SPG 25 25 15 50
TUR 60 15 . 20
;
Reading from spreadsheet data should work the same, with the role of .
played by a blank cell. But currently the entire set {NUTR,FOOD}
is read rather than just the pairs corresponding to cells that are non-blank. In this example, reading
with table definition
table dietAmts IN "amplxl" "dietIssue.xlsx" "Amounts" "2D":
LINKS <- [NUTR, FOOD], amt;
gives the same values but the wrong LINKS set:
display LINKS, amt;
set LINKS :=
(A,BEEF) (B2,CHK) (A,HAM) (B2,MCH) (A,SPG) (B2,TUR)
(B1,BEEF) (C,CHK) (B1,HAM) (C,MCH) (B1,SPG) (C,TUR)
(B2,BEEF) (A,FISH) (B2,HAM) (A,MTL) (B2,SPG)
(C,BEEF) (B1,FISH) (C,HAM) (B1,MTL) (C,SPG)
(A,CHK) (B2,FISH) (A,MCH) (B2,MTL) (A,TUR)
(B1,CHK) (C,FISH) (B1,MCH) (C,MTL) (B1,TUR);
amt [*,*] (tr)
: A B1 B2 C :=
BEEF 60 . 15 20
CHK . 20 20 .
FISH . 15 . .
HAM 40 35 . 40
MCH 15 15 15 35
MTL 70 15 15 30
SPG 25 25 15 50
TUR 60 15 . 20
;
Metadata
Metadata
Assignees
Labels
No labels