섀도 가격 민감도 분석

Python으로 배우는 공급망 분석

Aaren Stubberfield

Supply Chain Analytics Mgr.

섀도 가격 정의

모형화 이슈:

  • 제약식 입력값은 종종 추정치임
  • 입력이 바뀌면 해도 바뀌는가?

섀도 가격:

  • 다른 조건이 그대로일 때, 제약식 우변을 1 단위 늘릴 경우 목적함수 최적값의 변화량.
Python으로 배우는 공급망 분석

맥락 - 유리 회사 - 자원 계획:

Resource Prod. A Prod. B Prod. C
Production hours 6 5 8
WH Capacity sq. ft. 10.5 20 10
Profit $US $500 $450 $600

제약식:

  • 생산 시간 ≤ 60
  • 창고 용량 ≤ 150 sq. ft.
  • A 최대 생산량 ≤ 8
Python으로 배우는 공급망 분석

코드 예시

# Initialize Class, Define Vars., and Objective
model = LpProblem("Max Glass Co. Profits", 
                   LpMaximize)
A = LpVariable('A', lowBound=0)
B = LpVariable('B', lowBound=0)
C = LpVariable('C', lowBound=0)
model += 500 * A + 450 * B + 600 * C

# Constraint 1
model += 6 * A + 5 * B + 8 * C <= 60

# Constraint 2
model += 10.5 * A + 20 * B + 10 * C <= 150
# Constraint 3
model += A  <= 8

# Solve Model
model.solve()
print("Model Status: 
        {}".format(LpStatus[model.status]))
print("Objective = ", value(model.objective))
for v in model.variables():
    print(v.name, "=", v.varValue)
Python으로 배우는 공급망 분석

예시 해

해:

Products Prod. A Prod. B Prod. C
Production Cases 6.667 4 0

목적함수 값: $5133.33

Python으로 배우는 공급망 분석

제약식 검토

의사결정변수:

  • A~C = 각 제품 A~C의 생산 케이스 수

제약식:

  • 6A + 5B + 8C ≤ 60 (생산 능력 제한)
  • 10A + 20B + 10C ≤ 150 (창고 용량 제한)
  • A ≤ 8 (A 최대 생산량)
Python으로 배우는 공급망 분석

섀도 가격 출력

Python 코드:

o = [{'name':name, 'shadow price':c.pi} 
     for name, c in model.constraints.items()]
print(pd.DataFrame(o))
Python으로 배우는 공급망 분석

섀도 가격 설명

출력:

  name  shadow price
   _C1     78.148148
   _C2      2.962963
   _C3     -0.000000

제약식 기억하기:

  1. 생산 능력 제한
  2. 창고 용량 제한
  3. A 최대 생산량
Python으로 배우는 공급망 분석

제약식 슬랙

slack:

  • 사용되지 않은 자원량

Python:

o = [{'name':name, 'shadow price':c.pi, 'slack': c.slack} 
     for name, c in model.constraints.items()]
print(pd.DataFrame(o))
Python으로 배우는 공급망 분석

제약식 슬랙 설명

출력:

  name  shadow price     slack
   _C1     78.148148 -0.000000
   _C2      2.962963 -0.000000
   _C3     -0.000000  1.333333

바인딩 추가 설명

  • slack = 0이면 바인딩
  • 바인딩 제약을 바꾸면 해가 _변함_

제약식 기억하기:

  1. 생산 능력 제한
  2. 창고 용량 제한
  3. A 최대 생산량
Python으로 배우는 공급망 분석

요약

  • 계산 방법:
    • shadow prices
    • 제약식 slack
  • 바인딩 제약 식별
    • slack = 0 → 바인딩
    • slack > 0 → 비바인딩
Python으로 배우는 공급망 분석

직접 해보세요!

Python으로 배우는 공급망 분석

Preparing Video For Download...