gams 指定具有大量零的通量网络(稀疏矩阵)

gams specify network of flux with lots of zeros (sparse matrix)

我尝试使用 gams 来查找 material 跨节点网络的流量。我定义了

set edge(i,n,nn);
positive variable flux(i,n,nn);

y.up(i,n,nn)$( not edge(i,n,nn)) = 0;

我的意图是定义从节点n到nn的矩阵i的flux变量的3D矩阵,然后使用集合edge来指定哪个完整图形可以有质量流。

这显然有效,但是当我尝试将 y 保存到 gdx 文件中时,我有很多零。我只需要 y 的子集,其中 edge(i,n,nn) 为真。

我如何在保存 gdx 文件时对 y 进行子集化。

谢谢!

您可以将内容存储在简化参数中:

Parameter yLevel(i,n,nn);
yLevel(i,n,nn)$edge(i,n,nn) = y.l(i,n,nn);
execute_unload 'result.gdx' yLevel;

请注意:您真的需要完整的 y(i,n,nn) 吗?这可能在很大程度上取决于索引集的大小。或者您可以修改您的模型以仅使用 y(i,n,nn)$edge(i,n,nn)?