업데이트 : 방금 출시 한 새로운 GEKKO 패키지 를 참조하십시오 .
APM Python 은 APOPT, BPOPT, IPOPT 및 기타 솔버에 대한 인터페이스가있는 무료 최적화 도구 상자입니다. 솔버에 첫 번째 (Jacobian) 및 두 번째 (Hessian) 정보를 제공하고 결과를 볼 수있는 선택적 웹 인터페이스를 제공합니다. APM Python 클라이언트는 pip와 함께 설치됩니다.
pip install APMonitor
다음을 사용하여 Python 스크립트에 설치할 수도 있습니다.
try:
from APMonitor.apm import *
except:
# Automatically install APMonitor
import pip
pip.main(['install','APMonitor'])
from APMonitor.apm import *
몇 가지 벤치 마크 테스트를 수행 한 결과 APOPT (액티브 세트 방법)와 IPOPT (인테리어 포인트 방법)를 결합하면 많은 벤치 마크 문제를 해결할 수 있습니다. 다운로드 zip 파일에는 여러 가지 예제 문제점이 포함되어 있습니다. 아마 당신이 시작하고 싶었던 것은 Hock Schittkowski # 71 문제입니다. 가장 간단한 예이며 제한된 최적화 문제를 해결하는 방법을 보여줍니다.
Python / MATLAB에 대한 브라우저 인터페이스와 API가 있습니다. API to Python은 apmonitor.com 홈페이지에서 다운로드 할 수있는 단일 스크립트 (apm.py)입니다. 스크립트가 Python 코드에로드되면 다음과 같은 문제를 해결할 수 있습니다.
- 비선형 방정식
- 혼합 정수 비선형 프로그래밍
- 미분 및 대수 방정식
- 최소 제곱 모델 피팅
- 수평선 이동 예측
- 비선형 모델 예측 제어
- 기타
새로운 사용자를 위해 APM Python 소프트웨어에는 사용자가 질문을 게시 할 수있는 Google 그룹스 포럼이 있습니다. 운영 연구 및 엔지니어링에서 최적화 문제를 보여주는 웹 세미나가 있습니다.
아래는 최적화 문제 (hs71.apm)의 예입니다.
Model
Variables
x[1] = 1, >=1, <=5
x[2] = 5, >=1, <=5
x[3] = 5, >=1, <=5
x[4] = 1, >=1, <=5
End Variables
Equations
x[1] * x[2] * x[3] * x[4] > 25
x[1]^2 + x[2]^2 + x[3]^2 + x[4]^2 = 40
minimize x[1] * x[4] * (x[1]+x[2]+x[3]) + x[3]
End Equations
End Model
최적화 문제는 다음 Python 스크립트로 해결됩니다.
from APMonitor.apm import *
server = 'http://byu.apmonitor.com'
# Application name
app = 'eqn'
# Clear previous application
apm(server,app,'clear all')
# Load model file
apm_load(server,app,'hs71.apm')
# Option to select solver (1=APOPT, 2=BPOPT, 3=IPOPT)
apm_option(server,app,'nlc.solver',3)
# Solve on APM server
solver_output = apm(server,app,'solve')
# Display solver output
print(solver_output)
# Retrieve results
results = apm_sol(server,app)
# Display results
print('--- Results of the Optimization Problem ---')
print(results)
# Display Results in Web Viewer
url = apm_var(server,app)
print("Opened Web Viewer: " + url)
APM Python은 최적화를위한 무료 웹 서비스입니다. 원격 서버에서 최적화 문제가 해결되고 결과가 로컬 Python 스크립트로 반환됩니다. 인터넷 연결이 필요하지 않도록 APMonitor 로컬 서버도 다운로드 할 수 있습니다 ( 다운로드 서버 ). 최근 MATLAB과 Python 모두에 대한 병렬 처리 지원을 추가했습니다. Python 모듈은 Python 2.7 또는 Python 3+와 호환됩니다.