import scipy.optimize
A = np.array([[-1, 0], [0, -1], [1, 2], [4, 5]])
b = np.array([-100, -100, 500, 9800])
c = np.array([-3, -5])
result = sp.optimize.linprog(c, A, b)
result
con: array([], dtype=float64) fun: -1400.0 message: 'Optimization terminated successfully.' nit: 3 slack: array([ 200., 0., 0., 8100.]) status: 0 success: True x: array([300., 100.])
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)
상태: optimal 최적값: 299.99999999999983 100.00000000000001
from cvxopt import matrix, solvers
Q = matrix(np.diag([2.0, 2.0]))
c = matrix(np.array([0.0, 0.0]))
A = matrix(np.array([[1.0, 1.0]]))
b = matrix(np.array([[1.0]]))
sol = solvers.qp(Q, c, A=A, b=b)
np.array(sol['x'])
array([[0.5], [0.5]])