【发布时间】:2018-12-31 15:01:10
【问题描述】:
有没有办法简化在AMPL 中声明参数元组?例如,如果需要一个三维点作为参数,我所做的就是将其声明为
param Point {{'a', 'b', 'c'}};
然后通过P['a']、P['b'] 和P['c'] 访问它。问题在于,首先,它很丑。要在数据文件中指定点(1, 2, 3),您必须编写
param Point := a 1 b 2 c 3;
。我尝试使用 ordered 关键字,即param Point {{'a', 'b', 'c'} ordered};——这样标签就被订单所暗示——即param Point := 1 2 3—,但是内联是不允许的,而且必须定义一个单独的“虚拟”集更难看。我尝试通过 AMPL 书进行搜索,但没有找到任何用于此特定目的的内容。
另一种选择更糟糕:
param a;
param b;
param c;
这似乎很愚蠢,没有特殊的语法/快捷方式。
还要注意我不想声明一个集合;我想要一个固定长度(通过模型指定)的实际元组参数,其条目将用作数字参数,而不是标签。
那么,有没有什么好办法呢?
【问题讨论】:
标签: ampl