在GAMS中使用for循环生成数据

时间:2017-07-18 13:04:00

标签: gams-math

plan是数据中的矩阵。

for i = 1:5
  for j = 1:3
    for k = 1:plan(j,i)
      C(i,j,k) = SUB(j,i);
    end
  end
end

如何在GAMS中对其进行建模。请帮忙。

2 个答案:

答案 0 :(得分:1)

不熟悉GAMS的用户经常会过度使用循环。在GAMS中,显式循环是例外:通常我们想要使用隐式循环。像:

c(i,j,k)$(ord(k)<=plan(j,i)) = sub(j,i);

答案 1 :(得分:-1)

首先,您必须将最终输出C视为具有给定尺寸的矩阵。也就是说,必须事先确定第三维k的大小。可能是所有计划(j,i)值的最大值。所以我打算将索引k的最大值称为大写K.在这种情况下,你可以这样做:

SET i /1*5/;
SET j /1*3/;
SET k /1*K/;

Loop (i,
  Loop (j,
    Loop (k,
      If (ord(k) <= plan(j,i), C(i,j,k) = SUB(j,i););
    );
  );
);