Ввод данных в AMPL
У меня есть такой набор:
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 ответ
Раздел 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
;