Бесплатный веб-сервис для решения крупномасштабных систем нелинейных уравнений (более 1 миллиона) - APMonitor.com. Есть интерфейс браузера и API для Python / MATLAB. API для Python - это отдельный скрипт (apm.py), который можно загрузить с домашней страницы apmonitor.com. Как только скрипт загружается в код 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:
# Import
from apm import *
# Select server
server = 'http://xps.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