包含矩阵幂的方程

时间:2017-01-22 01:04:15

标签: matrix gams-math

我在形式A ^ n * b = e = c上有一个等式,其中A是矩阵,b& c是列向量。

n是由常数确定的模型的固定数。它很可能是数百个,并且可以根据不同的解决方案进行更改。

A是变量矩阵,b& c是常数。

如何在gams中制定A ^ n * b = e = c?

可选:引导我的模型是我有一个连接矩阵con(x,x2)的图形,表示x和x2连接时x和x2之间的连通性。我想计算2个任意节点之间的连接,2个节点x到x2之间的连接是从x到x2的所有路径的连通性的总和。路径的连接是路径上所有连接的产物。有没有更聪明的方法来制定这个约束,这样我就不必进行矩阵求幂?

A不是对称的或可逆的,而是半正半球。

1 个答案:

答案 0 :(得分:0)

您需要先根据集合和参数定义数据。有关GAMS中数据结构的更多信息,请点击此链接:http://www.gams.com/latest/docs/userguides/userguide/_u_g__data_entry.html

首先定义问题的集合和参数,假设你有100个顶点,你可以像这样声明x

Set x /x1*x100/;
alias(x,x2);

由于您需要在矩阵中使用相同的两次,因此您必须定义alias,以便GAMS将x2解释为与模型中的x相同

然后,将nb声明为参数,您可以这样做:

Parameter 
 n /200/
 c /100/;
Parameter b(x)
/
x1 3
x2 43
...
x100 23
/;

请注意,必须在GAMS中先前定义的parameters上定义具有多个值的variablesset(即向量或矩阵)。这就是为b定义集合x的原因,将x视为向量/矩阵的索引。

A的声明将采用以下形式:

Variable A(x,x2);

现在您可以使用这些集合,参数和变量来定义等式:

eq(x,x2) .. power(A(x,x2),n) * B(x2) =e=  c;

当然,你仍然需要选择一个合适的求解器(NLP)并定义一个目标函数,但这就是你想要的方程和变量的模型。