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

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

set PRODUCTS  := p1 p2 p3 p4 p5 ;

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

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

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

Решение

Раздел 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 
;
Другие вопросы по тегам