Ввод данных в AMPL - PullRequest
       6

Ввод данных в AMPL

0 голосов
/ 22 сентября 2018

У меня есть набор, такой как:

set PRODUCTS  := p1 p2 p3 p4 p5 ;

Связанный с этим набором, у меня есть некоторые параметры вида:

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

Я хочу заполнить эти param sс форматом, в котором заданный индекс - это индекс 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 голосов
/ 23 сентября 2018

Раздел 9.2 Книги AMPL предлагает способ сделать что-то, приближенное к этому, с указанием индекса в качестве строки и имени параметра в качестве столбца.Смотрите стр.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
;

Единственный известный мне способ сохранения продуктов в качестве индекса столбца заключается всоздайте второй набор параметров индекса_текта, который соответствует именам параметров вашей модели, а затем определите «модель_параметров» как параметр, индексированный как для продуктов, так и для параметра.Затем вы можете использовать метод, показанный в 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 
;
...