Ampl 从文字初始化二维数组

Ampl 从文字初始化二维数组,ampl,Ampl,我有这个数据文件: param: name car pro fat vit cal := 1 'Fiddleheads' 3 1 0 3 80 2 'Fireweed Shoots' 3 0 0 4 150 3 'Prickly Pear Fruit' 2 1 1 3 190 ; 这个模型: set I; set J; param name{I}

我有这个数据文件:

param:                 name   car pro fat vit cal :=
 1             'Fiddleheads'   3   1   0   3   80
 2         'Fireweed Shoots'   3   0   0   4  150
 3      'Prickly Pear Fruit'   2   1   1   3  190
;
这个模型:

set I;
set J;

param name{I} symbolic;

param  car{I} integer >= 0;
param  pro{I} integer >= 0;
param  fat{I} integer >= 0;
param  vit{I} integer >= 0;
param  cal{I} integer >= 0;
param  nut{i in I, J} = (car[i], pro[i], fat[i], vit[i]);
最后一行无效:

mod, line 10 (offset 176):
        syntax error
context:  param  nut{i in I, J} =  >>> (car[i], <<<  pro[i], fat[i], vit[i]);
mod,第10行(偏移量176):
语法错误
上下文:param nut{i in i,J}=>>>(car[i],模型:

数据:

有关变体,请参阅

“default 0”选项避免了显式列出零值的需要,这对于稀疏数据集非常有用

有一个AMPL输入格式是很有用的,该格式允许在一个简单的表布局中指定一个2-D参数,并带有行和列标题,与数据步骤的行一致,但我不知道有哪种格式可以做到这一点

set names;
set components;
param nut{names,components} default 0;
set names := 
Fiddleheads
'Fireweed Shoots' 
'Prickly Pear Fruit';

set components := car pro fat vit cal
;

param nut :=
[Fiddleheads,*] 
car 3 pro 1 vit 3 cal 80
['Fireweed Shoots',*]
car 3 vit 4 cal 150
['Prickly Pear Fruit',*]
car 2 pro 1 fat 1 vit 3 cal 190
;