2016-10-11 4 views
0

이것이 실제로 어떻게 작동하는지 혼란 스럽습니다. 나는 바이너리가 CPLEX에서 무엇을 의미하는지 모른다. 문제는 다음과 같습니다.

제조 관리자는 다음 4 개월 동안의 구입 비용 (원자재 및 저장 비용)을 최소화하는 업무를 담당합니다. 표 3.4에서 원재료의 한 단위 비용과 매달 원료의 요구량을 확인할 수 있습니다. 저장 비용은 월말에 저장된 각 장치에 대해 2e 과 같습니다. 주어진 달에 구입 된 원자재 단위 은 같은 달의 요구를 커버하기 위해 사용될 수 있으며, 앞으로 수개월의 수요를 충당하기 위해 보관 될 수 있습니다. 월 1 일에 재고가없고 어떤 달에 최소 재고 요구 사항이 없습니다. enter image description here
다음 4 개월 동안 원자재 공급 업체가 특별 행사를 제공했습니다. 해당 월 200 개 이상 구매 한 모든 유닛은 의 할인가가 2 e입니다. 예를 들어 350 단위를 구입하면 1 달 후에 주문하면 처음 200 단위는 각각 12 e로 판매되고 다음 150은 각각 10 e 당 판매됩니다. 1. 전체 구매 비용CPLEX를 R 언어로 변환

해결 최소화 선형 프로그래밍 모델의 결정 변수 (정의 된 각 변수 세트의 간단한 정의를 제공), 목적 함수 및 제약 조건 정의 :
enter image description here


을 CPLEX 코드

Minimize 
cost : 12 q1 + 14 q2 + 16 q3 + 18 q4 + 10 r1 + 12 r2 + 14 r3 + 16 
      r4 + 2 s1 + 2 s2 + 2 s3 + 2 s4 
Subject To 
    d1 : q1 + r1 - s1 = 150 
    d2 : s1 + q2 + r2 - s2 = 200 
    d3 : s2 + q3 + r3 - s3 = 250 
    d4 : s3 + q4 + r4 - s4 = 150 
    l1 : q1 - 200 b1 >= 0 
    l2 : q2 - 200 b2 >= 0 
    l3 : q3 - 200 b3 >= 0 
    l4 : q4 - 200 b4 >= 0 
    m1 : r1 - 10000 b1 <= 0 
    m2 : r2 - 10000 b2 <= 0 
    m3 : r3 - 10000 b3 <= 0 
    m4 : r4 - 10000 b4 <= 0 
Bounds 
    0 <= q1 <= 200 
    0 <= q2 <= 200 
    0 <= q3 <= 200 
    0 <= q4 <= 200 
Binary 
    b1 
    b2 
    b3 
    b4 
End 


내 코드 :

library (lpSolve) 
#defining parameters 
obj.fun <- c(12 , 14, 16, 18, 10, 12, 14, 2, 2, 2, 2) 
constr <- matrix (c(1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 
     0, 1, 0, 0, 0,1,0,0,1,-1,0,0, 
     0,0,1,0,0,0,1,0,0,1,-1,0 
     0,0,0,4,0,0,0,1,0,0,1,-1) , ncol = 4 , byrow =TRUE) 
constr.dir <- c("=","=", "=", "=") 
rhs <- c(150 , 200 , 250, 150) 
#solving model 
prod.sol <- lp ("max", obj.fun , constr , constr.dir , rhs ,compute.sens = TRUE) 
#accessing to R output 
prod.sol$obj.val 
prod.sol$solution 
prod.sol$duals 
#sensibility analysis results 
prod.sol$duals.from 
prod.sol$duals.to 
prod.sol$sens.coef.from 
prod.sol$sens.coef.to 

답변

2

이진 B1, B2, B3, B4는 것을 의미 0 또는 1 중, B1 == 1과 10000 B1이있는 경우, 당신이 살 것을 의미하므로 10000 * 1 = 10000 첫 달에 원재료를 구입하고 2,3 개월 또는 4 개월 내에 원재료를 구입하지 않을 경우

영어로 2 진 변수를 사용하여 완전히 꺼져 있거나 완전히 켜져있는 변수를 표현할 수 있습니다

"1 달에 모든 유닛을 구입하는 것이 가장 좋습니다."

그런 제약 조건은 어떻게 만듭니 까? 당신은 선생님은 당신이 사용하고있는 CPLEX 래퍼에 따라 이진 변수

에 부분적으로 의존 혼합 정수 프로그래밍을 배우고을 준비하고있다

볼 이진 변수

을 사용하여 할

cplexAPI 또는 Rcplex , 이진 변수 검색