Python에서 간단한 선형 최적화 ortools 모델의 린 코딩

Python의 Google ortools 모듈에 대한 이전 게시물에서 다음과 같은 선형 최적화 문제를 해결했습니다.

이전 게시물에서 작성한 코드를 더 적은 코드 줄로 줄일 수 있으므로 간결한 코드가 생성됩니다. 이 게시물에서는 이전 ortools-script의 간결한 버전을 공유합니다.

다시, ortools.linear_solver에서 pywraplp를 가져 오는 것으로 시작합니다.

from ortools.linear_solver import pywraplp

다음으로 솔버 인스턴스 (GLOP 솔버 사용)를 만들고 참조 핸들러에 대한 참조를 저장합니다.

solver = pywraplp.Solver.CreateSolver('linear_programming_examples', 'GLOP')

이제 관련 최적화 변수를 선언해야합니다. 이 예에서 최적화 변수는 x, y 및 z입니다.

# 하한이 0이고 상한이없는 변수 x 선언
x = solver.NumVar(0, solver.infinity(), "x")
# 하한이 0이고 상한이없는 변수 y 선언
y = solver.NumVar(0, solver.infinity(), "y")
# 하한이 0이고 상한이없는 변수 z 선언
z = solver.NumVar(0, solver.infinity(), "z")

이제 목적 함수와 모든 관련 제약을 지정하여 문제를 모델링 할 수 있습니다. 다음 코드 줄에서 이것은 매우 간결한 방식으로 실현됩니다.

# 최대로 선언합니다. 목적 함수 문제 및 정의
solver.Maximize(x+2*y+3*z)
# 제약 추가
solver.Add(2*x+y+z <= 20)
solver.Add(x+y+z <= 15)
solver.Add(x-y-z >= 0)
<ortools.linear_solver.pywraplp.Constraint; proxy of <Swig Object of type 'operations_research::MPConstraint *' at 0x000001B9AEC956C0> >

이제 모델이 완성되었으며 해결할 수 있습니다.

solver.Solve()

x에 대한 최적의 솔루션은 다음과 같습니다.

print("x_opt: ", x.solution_value())
x_opt:  6.666666666666667

y에 대한 최적의 솔루션은 다음과 같습니다.

print("y_opt: ", y.solution_value())
y_opt:  0.0
z에 대한 최적의 솔루션은 다음과 같습니다.
print("z_opt: ", z.solution_value())
z_opt:  6.666666666666667

최적의 목적 함수 값은 다음과 같습니다.

print("optimal value: " + str(x.solution_value()+2*y.solution_value()+3*z.solution_value()))
optimal value: 26.666666666666668

Leave a Reply

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

Close

그 밖의 기능