Study/Python
[python] LP, 선형계획법 python에서 구현
쑨블리
2019. 5. 28. 14:18
먼저 선형 계획법에 대한 개념이 궁금하시다면 이전 글을 확인해주세요
2019/05/28 - [IT] - [분석/통계] LP, 선형계획법
pip install pulp
# PuLP를 설치해줍시다!
from pulp import *
# LpProblem 함수를 이용해서 목적식의 종류?를 지정해줍니다
prob = LpProblem("The Whiskas Problem",LpMinimize) #("아무거나이름",최소최대,,,)
# LpVariable 함수를 이용해서 사용할 x1,x2 변수의 이름, 상하한, 데이터 유형 지정
x1 = LpVariable ( "ChickenPercent" , 0 , None , LpInteger )
x2 = LpVariable ( "BeefPercent" , 0 )
# LpVariable ( "example" , None , 100 ) # ("그냥이름",이 변수의 하한값,상한값,데이터 유형)
# 또는 LpVariable("example", upBound = 100) # 중간에 비워줄 경우 다음거가 뭔지 이름 써줘야함
# 변수 상하한은 숫자로 지정 음수 가능
# 데이터 유형은 LpContinuousor LpInteger이며 기본값은 as LpContinuous
# 목적식을 적어 줍시다
prob += 0.013*x1 + 0.008*x2, "Total Cost of Ingredients per can"
# 제약조건을 적어 줍시다
prob += x1 + x2 == 100, "PercentagesSum"
prob += 0.100*x1 + 0.200*x2 >= 8.0, "ProteinRequirement"
prob += 0.080*x1 + 0.100*x2 >= 6.0, "FatRequirement"
prob += 0.001*x1 + 0.005*x2 <= 2.0, "FibreRequirement"
prob += 0.002*x1 + 0.005*x2 <= 0.4, "SaltRequirement"
# lp파일을 저장하는 코드
prob.writeLP("WhiskasModel.lp")
prob.solve()
# 최적해 구하기
for v in prob.variables():
print(v.name, "=", v.varValue)
> BeefPercent = 66.0
> ChickenPercent = 34.0
# beef 66%, Chicken 34%가 최적 생산량
# 최적 생산량으로 생산할 때 드는 비용
print("Total Cost of Ingredients per can = ", value(prob.objective))
> Total Cost of Ingredients per can = 0.97
# beef 66%, Chicken 34%으로 생산할 때 비용 97센트
코드내 >는 결과 값입니다,,ㅎ 복붙하실 때 지워주세요
R에서 구현하는 방법이 궁금하다면
2019/05/28 - [IT] - [R] LP, 선형계획법 R에서 구현