【问题标题】:Multiply matrix with vector in GAMS在 GAMS 中将矩阵与向量相乘
【发布时间】:2021-03-08 15:43:29
【问题描述】:

考虑 GAMS 中的下表:

Set i /i1*i4 /;
Table a(i,j) 'original matrix'
        i1         i2     i3           i4
   i1    2          0      0            0
   i2    0.272727   2      0.727273     0
   i3    0          0.8    2            0.2
   i4    0          0      0            2;

我想将a 的倒置矩阵与以下向量相乘:

parameters v(i) /
i1 0
i2 -0.03413
i3 -0.01174
i4 0 /;

所以我最终会得到以下向量:

parameters B(i) /
i1 0
i2 -0.01747
i3 0.001116
i4 0

我尝试了以下方法:

Alias (i,j);
Parameter inva(i,j) 'inverse of a';

execute_unload 'a.gdx', i, a;
execute '=invert.exe a.gdx i a b.gdx inva';
execute_load 'b.gdx', inva;

parameter B(i);

loop(j,
    loop(i,
        B(i) = inva(i,j)*v(i)
    )
);

我的倒置矩阵看起来不错,但是矩阵/向量乘法出了点问题。

【问题讨论】:

    标签: matrix-multiplication matrix-inverse gams-math


    【解决方案1】:

    只是简单地查看了您的代码,在我看来,您似乎希望最后一个循环为:

    loop(j,
          B(i) = inva(i,j)*v(j)
         );
    

    因为您只想对矩阵的列求和。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 2013-07-07
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多