GAMS, прямое присвоение матрицы

Я хочу присвоить значения трехмерной таблице в GAMS. Но вроде не работает как в Matlab ..... Удачи? Код следующий, проблема в последних нескольких строках:

    Sets
         n           nodes                       / Sto , Lon , Par , Ber , War , Mad , Rom /
         i           scenarios                   / 1 * 4 /
         k           capacity level              / L, N, H /  ;

alias(n,m);

Table balance(n,i) traffic balance for different nodes
         1       2       3       4
Sto      50      50      -50     -50
Lon      -40     40      -40     40
Par      0       0       0       0
Ber      0       0       0       0
War      40      -40     40      -40
Mad      0       0       0       0
Rom      -50     -50     50      50  ;

Scalar r  fluctuation rate of the capacity level
/0.15/;

Parameter p(k) probability of each level
/ L   0.25
  N   0.5
  H   0.25 / ;

Table nor_cap(n,m) Normal capacity level from n to m
          Sto    Lon     Par     Ber     War     Mad     Rom
Sto       0      11      14      25      30      0       0
Lon       11     0       21      0       0       14      0
Par       14     21      0       22      0       31      19
Ber       25     0       22      0       26      0       18
War       30     0       0       26      0       18      22
Mad       0      14      31      0       18      0       15
Rom       0      0       19      18      22      15      0  ;

Table  max_cap(n,m,k) capacity level under each k
max_cap(n,m,'N')=nor_cap(n,m)
max_cap(n,m,'L')=nor_cap(n,m)*(1-r)
max_cap(n,m,'H')=nor_cap(n,m)*(1+r);

person Lisa    schedule 21.09.2011    source источник


Ответы (1)


Окончательное присвоение 3-D матрице должно выполняться с ПАРАМЕТРОМ, а не с ТАБЛИЦЕЙ. В общем, я также хотел бы отметить, что ТАБЛИЦА очень ограничивающая (2-х мерный, ввод текста внутри кода). Возможно, вы захотите рассмотреть $ GDXIN (или EXECUTE_LOAD) и некоторые из утилит GAMS для загрузки файлов xls или csv.

Как пользователь MATLAB и GAMS я хотел бы отметить, что GAMS зависит от «индексов» для каждого массива, но в остальном они могут быть очень похожими. В вашем случае max_cap (n, m, k) будет чем-то вроде максимальной емкости между from_city и to_city при каждом сценарии уровня емкости. Ваша матрица должна быть объявлена ​​как ПАРАМЕТР, который может быть любой n-мерной (индексированной) матрицей, включая даже СКАЛЯР.

Кроме того, попробуйте список рассылки GAMS, если вам действительно нужен быстрый ответ, количество опытных пользователей GAMS во всем мире не может превышать нескольких тысяч, поэтому может быть сложно найти быстрый ответ на StackOverflow - потрясающе, как и для более распространенные языки.

person Anton    schedule 05.04.2015