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