1

我有一个 GAMS 模型

 Set   i       / 1*6 /;
 Alias (i,ip,il) ;
 Variables
  x(i,ip) ;

我想生成对 x 中所有向量的标量积进行运算的方程,不包括同一向量的积。就像是:

 scalarProduct(i)..
  sum(ip,x(i,ip)x(i,il)) =e= someConstant;

然而,这并不排除相同向量的乘积。如何添加这个?我可以以某种方式使用美元声明吗?无论如何,该语句中可能存在一些错误,我没有尝试它,因为我认为我想要的排除丢失了。

4

1 回答 1

1

所以我想做的是:

Sets
i        / 1*13 /
ii(i,i) diagonal elements / #i:#i /
ij(i,i) all elements / #i.#i /
ij_wo_ii(i,i);

得到所有没有对角元素的组合:

ij_wo_ii(i,j) = ij(i,j) - ii(i,j);

然后我在这样的等式中使用它:

equation(j,k)..
  sum(i,x(i,j)*x(i,k)$ij_wo_ii(j,k)) =l= 1;

这类似于正交性,除了矩阵中向量的乘积必须小于某个值并且不一定为0。不知道是否有这个术语。希望它也对其他人有用。

于 2015-08-26T18:45:45.623 回答