Я продолжаю получать синтаксическую ошибку, и я не знаю, почему

Вот моя модель.

set ch ;
set k ;
param a{i in ch , j in k};
param b{i in ch };
param c{j in k };

var x{i in ch , j in k}>= 0;

minimize cost: sum{i in ch , j in k} x[i,j]* a[i,j];

s.t. D{i in ch }: sum{j in k} x[i,j] >= b[i];
s.t. E{j in k }: sum{i in ch } x[i,j] <= c[j];

data;

set ch := ch1 ch2 ch3;
set k := k1 k2;

param a : ch1 ch2 ch3 :=
k1 100 180 100
k2 50 120 80;
param b := ch1 50
ch2 80
ch3 100;
param c := k1 400
k2 90;

solve;

display x{i in ch , j in k};

end;

Я получил следующую ошибку при решении модели:

cau5.mod:25: syntax error in data section

Это действительно сбивает с толку, потому что есть модель, которая имеет тот же формат, но отлично решает. Пожалуйста, помогите.


person Duy Kha Đinh    schedule 08.09.2016    source источник
comment
Сообщение об ошибке относится к другой модели AMPL, чем вы показываете. У него param a : cha chb chc := ..., а у вашей модели param a : ch1 ch2 ch3 := ....   -  person Erwin Kalvelagen    schedule 08.09.2016
comment
Извините, я попытался изменить 1,2 и 3 на a b c, чтобы посмотреть, помогло ли это. Затем я изменил его обратно без перекомпиляции. Ошибка похожа насквозь.   -  person Duy Kha Đinh    schedule 08.09.2016
comment
Я узнал, что было не так. Это в display x{i in ch , j in k};. Во-первых, синтаксис неправильный, это display x;. Во-вторых, я не должен был помещать его в раздел данных. У меня также были поменяны местами клавиши строк и столбцов для a.   -  person Duy Kha Đinh    schedule 25.09.2016


Ответы (1)


Проблема в том, что у вас поменялись местами ключи строк и столбцов в таблице данных для a. Вы можете добавить (tr), что означает «транспонировать», чтобы исправить это:

param a (tr) : ch1 ch2 ch3 :=
k1 100 180 100
k2 50 120 80;
person vitaut    schedule 08.09.2016