在 AMPL 中输入数据

Entering data in AMPL

我有一组,例如:

set PRODUCTS  := p1 p2 p3 p4 p5 ;

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

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

我想用一种格式填充这些 param,其中集合索引是列索引,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 ;

这可能吗?语法是什么?

Section 9.2 of the AMPL Book 提供了一种方法来做一些近似的事情,将索引设置为行,将参数名称设置为列。见第151、"Combined lists of sets and parameters".

格式看起来像这样:

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" 定义为参数索引在产品和 parameter_type 上。然后,您可以使用同一参考资料的 AMPL Book 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 
;