我有一套,例如:
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 ;
这可能吗?语法是什么?
答案 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
;