Подробности Категория: Изследвания Публикувано: събота, 12 януари 2013 г., 22:43 ч. Последна актуализация: събота, 23 февруари 2013 г., 18:06 ч. Публикувано от: Michal Kaukič
Кратко описание на системи (OSS и търговски) за LP, MILP, MINLP, ограничено програмиране, езици за моделиране, които сме инсталирали на ulabserve и до които има достъп всеки член на катедрата, дори студенти и докторанти на FRI. Ако нещо е неясно или функционира неправилно, свържете се с мен. Предоставям и връзки към документацията. Ако изучавате нещо хубаво и искате да споделите знанията си, под формата на статия на нашия уебсайт или на семинара на KMM (контакт: док. Пешко).

Самостоятелни решения и библиотеки, OSS:

glpk
Уебсайт: http://www.gnu.org/software/glpk/
документация (от разпространението): решател и библиотека, език GMPL
характеристики: LP, MILP, библиотека (C, Python), отделен glpsol разтворител, GMPL език за моделиране
текуща версия: 4.47, 9 септември 2011 г., в ulabserve 4.45

lp_solve
Уебсайт: http: //lpsolve.sourceforge.net/5.5 (връзки за изтегляне, включително документация)
характеристики: LP, MILP, библиотека (C, Python, MATLAB, октава, Excel, Scilab, Php, Java, Delphi.), самостоятелен решател lp_solve, може да зарежда GMPL, AMPL, Cplex LP файлове, има IDE за Windows
текуща версия: 5.5.2.0, 12 август 2010 г., в ulabserve 5.5.0.13

scip (с поддръжка за soplex, clp и gurobi solvers)
уебсайт: http://scip.zib.de/ (също соплекс, ZIMPL, gcg.)
характеристики: LP, MILP, MINLP, програмиране на ограничения (C/C ++), отделни решаващи устройства, на ulabserve има scip, scip-gurobi, scip-clp, gcg gcg-gurobi (gcg е клон за намаляване и цена решавач, където правилата могат да бъдат определени от потребителя)
ulabserve има актуални версии (към 13 януари 2013 г.)
Забележка: от страницата на програмата свързваме сравнение на OSS и комерсиални решения за тестови проблеми MIPLIB
Не е необходим коментар.

оптимизация

Този сайт съдържа много проекти, инсталирали сме следните отделни решения:
clp - LP, симплекс решател
cbc - Разклонение и изрязване, MILP
ipopt - Вътрешно-точков решател за общи големи нелинейни задачи (не цели задачи)
симфония - Решител MILP и библиотека, могат да бъдат за паралелни изчисления (при интерес компилирайте)
OSSolverService - ние не го наричаме директно, но позволяваме на други програми (напр. scip.) да използват монети или решения

Търговска, неограничена система gurobi, академичен лиценз

Това определено е най-мощният инструмент, с който разполагаме - просто погледнете изображението по-горе. Той е безплатен за академични цели, всеки, който би искал да го използва, може просто да кандидатства за лиценз на уебсайта http://www.gurobi.com, в момента имаме лиценз - аз, Щефан и Роман Хайтманек. На горния уебсайт има и документация.
Характеристики на системата: LP, MILP, QP (липсва Xpress), интерфейс за C, C ++, C #, Java®, Microsoft® .NET, Python, MATLAB и R. Интерактивната среда gurobi.sh е безценна (всъщност това е IPython с модули за gurobi). Мога да кажа, че създаването на модел и решение в Python е удобно, но в комбинация с инструментите за моделиране по-долу е още по-лесно. Просто трябва да започнете. можем да го покажем на семинара по KMM.
Ръководител на Gurobi е Робърт Биксби, оптимизатор par excellence. Просто погледнете началната му страница. Директният решател се нарича gurobi_cl, но вероятно няма да имате нужда често.

Моделиране на езици и инструменти:

CMPL (Coin Mathematical Programming Language) и IDE Coliop
уебсайт: http://projects.coin-or.org/Cmpl (това е един от COIN-или проектите)
характеристики: език за математическо програмиране и система за оптимизиране на LP и MILP
Забележка относно езиците за моделиране. Първият беше AMPL - търговски инструмент и според него много системи създадоха свои собствени езици, частично съвместими с AMPL (по-горе споменахме GMPL за glpk, ZIMPL за scip). Никой обаче не е разширен, за да бъде приет от търговските системи - те имат свои собствени инструменти за моделиране или използват GAMS, AIMSS. CMPL има такива възможности, glpk, scip, COIN-или решаващи устройства и особено Cplex и gurobi вече са директно поддържани (индиректно и други, използвайки входни файлови формати MPS, Free-MPS или OSiL). Моето мнение за такива езици за моделиране е, че техният недостатък е ниската изразителна способност на езика и по този начин принудително объркващо програмиране.

Pyomo, друг COIN или проект
Той е част от проекта COOPR (COmmon Optimization Python Repository), който сме инсталирали на ulabserve. И в него е PySP (Стохастично програмиране, базирано на Python) и Pyomo е публикувано от книгата Pyomo - Оптимизационно моделиране в Python, издадена от Springer. В момента можете да използвате cbc, glpk и gurobi решатели с Pyomo на ulabserve. Считам този начин на работа за много обещаващ, тъй като на заден план имате пълноценен език за програмиране, който няма ограниченията на горните езици.

Numberjack е прост и ясен език за моделиране, базиран на Python. Той съчетава LP, MILP и ограничено програмиране. Имаме го с решаващи устройства Mistral, MiniSat, WalkSat, SCIP. ).

Програмиране на ограничения (CP):

мини цинк с различни разрешители (mzn-gecode, mzn-g12fd, mzn-g12mip, mzn-g12cpx, mzn-g12lazy, mzn-g12sat)
eclipse и графичната IDE tkeclipse

Google или инструменти съдържат CP решител, LP и MILP решатели, също специални решаватели за "проблеми с маршрутизацията", а също и някои графични алгоритми (например за потоци).