1

我目前堅持使用MIP計劃,其中利率i是基於爲住房計劃A生產的單位數量。如果計劃出售的A房屋數量最多在所有四種類型中,然後i = 1。如果出售的計劃A房屋的數量是第二高的,那麼i = 2等等直到i = 4。利率基本上是2i%。不確定如何添加代表計劃房屋位置的約束條件,並在目標函數中實施正確的利率。目標函數使總利潤最大化(例如50,000A + 40,000B + 70,000C + 80,000D)。關於如何使用二進制變量來表示位置的任何想法?不同利率的混合整數方案

+1

請以您如何嘗試解決方案爲例編輯您的問題。 –

回答

2

這樣做的一種方法是使用置換矩陣p(i,j)。即

sets 
    i = {A,B,C,D} 
    j = {1,2,3,4} 

binary variable p(i,j) 

# assignment constraints 
sum(i,p(i,j))=1 
sum(j,p(i,j))=1 

# quantities sold 
x(j) = sum(i, p(i,j)*x(i)) 
x(j) >= x(j+1) 

# interest rate 
r(i) = sum(j, p(i,j)*r(j)) 
r(j) = 2*j/100 

不幸的是,表達式p(i,j)*x(i)是非線性的。隨着一些努力,我們可以如下修復此:

sets 
    i = {A,B,C,D} 
    j = {1,2,3,4} 

binary variable p(i,j) 
positive variable q(i,j) 

# assignment constraints 
sum(i,p(i,j))=1 
sum(j,p(i,j))=1 

# quantities sold 
x(j) = sum(i, q(i,j)) 
x(j) >= x(j+1) 

# linearization of q(i,j) = p(i,j)*x(i) 
q(i,j) <= p(i,j)*xup(i) 
x(i) - xup(i)*(1-p(i,j)) <= q(i,j) <= x(i) 

' interest rate 
r(i) = 2*sum(j, p(i,j)*j)/100 

這裏xup(i)x(i)的上限。

不是一個非常優雅的公式。

+0

但是,由於您將置換矩陣與x(i)[您正在求解的數量]相乘,所以不是第一個約束下的非線性約束? – Gurobi22

+0

該死,你是對的。可以很容易地線性化,但這使得這件事情變得相當複雜。 –

+0

我一直在試圖弄清楚,但由於量和二進制變量都是未知的,似乎有點難以線性化排序約束。有任何想法嗎? – Gurobi22