2015-07-19 80 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.不知道這是否有一個術語。希望它對其他人也有用處。

相關問題