Skip to content

Instantly share code, notes, and snippets.

@tyjeon24
Last active April 4, 2020 02:00
Show Gist options
  • Save tyjeon24/62c57ecd5636504bcbbcba78fa22fa9d to your computer and use it in GitHub Desktop.
Save tyjeon24/62c57ecd5636504bcbbcba78fa22fa9d to your computer and use it in GitHub Desktop.
Python : cvxpy linear programming
  • https://datascienceschool.net/view-notebook/0fca28c71c13460fb7168ee2adb9a8be/
  • 최소값 : 제품 A와 제품 B 각각 100개 이상 생산해야 한다.
  • 시간 : 시간은 500시간 밖에 없다. 제품 A는 생산하는데 1시간이 걸리고 제품 B는 2시간이 걸린다.
  • 부품 : 특정 부품이 9800개밖에 없다. 제품 A는 생산하는데 특정 부품을 4개 필요로 하고 제품 B는 생산하는데 특정 부품을 5개 필요로 한다.
  • 이익 : 제품 A의 이익은 하나당 3만원이고 제품 B의 이익은 하나당 5만원이다.
  • ==> 이때, 이익을 최대화하기 위한 각 생산량 x1, x2의 값을 구한다.
pip3 install cvxpy
import cvxpy as cp

# 변수의 정의
a = cp.Variable()  # A의 생산량
b = cp.Variable()  # B의 생산량

# 조건의 정의
constraints = [
    a >= 100,  # A를 100개 이상 생산해야 한다.
    b >= 100,  # B를 100개 이상 생산해야 한다. 
    a + 2 * b <= 500, # 500시간 내에 생산해야 한다.
    4 * a + 5 * b <= 9800,  # 부품이 9800개 밖에 없다.
]

# 문제의 정의
obj = cp.Maximize(3 * a + 5 * b)
prob = cp.Problem(obj, constraints)

# 계산
prob.solve() 

# 결과
print("상태:", prob.status)
print("최적값:", a.value, b.value)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment