저는 주택 계획 A를 위해 생산 된 단위의 수를 기준으로 금리가 적용되는 MIP 프로그램을 사용하고 있습니다. 판매 된 플랜 A 주택의 수가 가장 많으면 모든 네 가지 유형 중에서 i = 1입니다. 판매 된 플랜 A 주택의 수가 두 번째로 높으면 i = 2, i = 4까지 증가합니다. 이자율은 기본적으로 2 %입니다. 계획 A 주택의 위치를 나타내는 제약 조건을 추가하고 목적 함수에서 올바른 이자율을 구현하는 방법을 잘 모르겠습니다. 목적 함수는 총 이익을 최대화합니다 (예 : 50,000A + 40,000B + 70,000C + 80,000D). 위치를 나타내는 데 이진 변수를 사용하는 방법에 대한 아이디어가 있습니까?변동 이자율을 가진 혼합 정수 프로그램
1
A
답변
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)
에 상한이다.
매우 우아하지 않습니다.
해결책을 시도한 방법의 예를 사용하여 질문을 편집하십시오. –