在AMPL中输入数据

时间:2018-09-22 12:03:02

标签: ampl dataformat

我有一套,例如:

set PRODUCTS  := p1 p2 p3 p4 p5 ;

与此集合相关的我有一些参数,形式为:

param min_production {PRODUCTS} >= 0;
param max_production {PRODUCTS} >= 0;

我想用一种格式填充这些param,其中设置索引为col索引,param名称为行索引。

类似这样的东西:

#Data                       p1   p2   p3   p4   p5
param min_production        20   10   20   20   30 ;
param max_production       120  110  120  120  150 ;
param min_stock_products    20   20   20   20   20 ;
param max_stock_products   100   80   80  120  120 ;
param price               6400 6000 5900 6250 6500 ;
param unit_cost            800 1000  400  500 1000 ;
param fixed_cost          1500 1500 1250 1500 1600 ;
param stock_cost_products   20   20   10   25   30 ;
param frac_demand_lost     0.4  0.4  0.4  0.4  0.4 ;

这可能吗?语法是什么?

1 个答案:

答案 0 :(得分:1)

Section 9.2 of the AMPL Book提供了一种方法,可以通过将索引设置为行,将参数名称设置为列来对此进行近似。参见第151,“集合和参数的组合列表”。

格式如下:

param: min_production max_production min_stock_products max_stock_products :=
p1     20             120            20                 100
p2     10             110            20                 80
p3     20             120            20                 80
;

我知道的唯一使产品保持列索引的方法是创建与模型参数名称匹配的第二个索引集parameter_type,然后将“ model_parameters”定义为在product和parameter_type上都索引的参数。然后,您可以使用相同参考文献的AMPL手册9.3中显示的方法:

param model_parameters: p1   p2   p3   p4   p5 :=
min_production          20   10   20   20   30 
max_production          120  110  120  120  150 
min_stock_products      20   20   20   20   20 
max_stock_products      100  80   80   120  120 
;