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