具有不同利率的混合整数计划

时间:2016-12-05 08:12:54

标签: math optimization mathematical-optimization linear-programming integer-programming

我目前仍然坚持使用MIP计划,其中利率i基于住房计划A的单位数量。如果出售的计划A房屋数量在所有四种类型中最高,则i = 1。如果出售的计划A房屋的数量是第二高,那么i = 2,依此类推,直到i = 4。利率基本上是2i%。不确定如何添加代表计划A位置的约束并在目标函数中实现正确的利率。目标函数使总利润最大化(例如50,000A + 40,000B + 70,000C + 80,000D)。关于如何使用二元变量来表示位置的任何想法?

1 个答案:

答案 0 :(得分: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)的上限。

不是一个非常优雅的配方。