2015-07-19 78 views
1

我有一个GAMS模型,其中我有如何过滤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; 

但是,这并不排除相同载体的产物。如何添加这个?我能以某种方式用美元兑换吗?无论如何,这个声明中可能有一些错误,我没有尝试它,因为我认为我想要的排除项目丢失了。

+0

我不明白你想用'scalarProduct'来做什么。你想乘以'x(i1,i2)* x(i1,i3)'这样的东西,并想排除像x(i1,i2)* x(i1,i2)'这样的东西'? –

+1

我几乎忘记了这一点。我发现如何做到这一点,现在会发布答案 – user3917718

回答

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.不知道这是否有一个术语。希望它对其他人也有用处。

相关问题