1

저는 주택 계획 A를 위해 생산 된 단위의 수를 기준으로 금리가 적용되는 MIP 프로그램을 사용하고 있습니다. 판매 된 플랜 A 주택의 수가 가장 많으면 모든 네 가지 유형 중에서 i = 1입니다. 판매 된 플랜 A 주택의 수가 두 번째로 높으면 i = 2, i = 4까지 증가합니다. 이자율은 기본적으로 2 %입니다. 계획 A 주택의 위치를 ​​나타내는 제약 조건을 추가하고 목적 함수에서 올바른 이자율을 구현하는 방법을 잘 모르겠습니다. 목적 함수는 총 이익을 최대화합니다 (예 : 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)은 비선형입니다. 다음과 같이 약간의 노력으로 우리는이를 복구 할 수 있습니다 :

다음 xup(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 

x(i)에 상한이다.

매우 우아하지 않습니다.

+0

그러나 순열 행렬에 x (i) [당신이 또한 구하는 양]을 곱하고 있기 때문에 수량이 비선형으로 팔리는 첫 번째 제약이 아닙니까? – Gurobi22

+0

Darn, 당신 말이 맞아요. 쉽게 선형화 될 수 있지만이 점이 복잡합니다. –

+0

나는 이것을 알아 내려고 노력했지만 수량과 이진 변수 모두 알 수 없기 때문에 순위 제약 조건을 선형화하기가 약간 어려워 보입니다. 어떤 아이디어? – Gurobi22