ForewordRU
From OpenOpt


Задачи численной оптимизации возникают практически везде - в физике, экономике, химии, биологии и тд. Например:
- минимизация расхода топлива самолетов, вертолетов, автотранспорта
- максимизация прибыли магазина
- максимизация роста саженцев сельскохозяйственных культур в теплицах
- минимизация прокладки путей сообщений (авто-, ж/д- транспорт, интернет-сети)
- при всевозможных ограничениях, например
- минимальная и максимальная скорость
- оборотные средства, риск на разорение, объем витрин
- освещенность, водоснабжение и финансовые расходы на них
- пропускная способность ветвей и узлов сети.
Математически процентов 90 из них сводится к одному-двум десяткам основных классов, таких как LP, QP, NLP, MILP и тд. Вот, например, так представляют это сотрудники NEOS.
Программное обеспечение для решения задач численной оптимизации стоит тысячи, а иногда и десятки тысяч долларов (пример).
Кроме того, примерно 10% в год приходится тратить на обновление программных библиотек.
В последнее время, в основном благодаря спонсорской поддержке со стороны различных фондов, руководств университетов, отдельных корпораций (IBM), появилось большое количество конкурентоспособного бесплатного программного обеспечения. Однако, практически все более-менее известные программные пакеты, связанные с численной оптимизацией, как платные так и бесплатные, разрабатываются в США или западной Европе (Германия, Англия), поэтому техническая поддержка очень дорогая. Кроме того, большинство бесплатных пакетов имеют лицензию GPL/LGPL, содержащее ограничение copyleft, затрудняющее внедрение в программное обеспечение с закрытым или другим несвободным кодом.
Украинское бесплатное ПО OpenOpt, кроме нескольких собственных решателей, включает и интерфейсы к ряду других (также бесплатных), многие из которых написаны на С/Fortran (кстати, для матриц и операций над ними OpenOpt использует numpy который написан на С и также имеет лицензию BSD). Некоторые из решателей могут получить большое ускорение с помощью openopt синтаксиса именованных переменных (см. пример 5-кратного ускорения). Про популярность OpenOpt свидетельствует уже хотя бы посещаемость сайта – в начале (сентябрь 2007) 10..12 человек/день, сейчас (январь 2009) 50-70 (по будням), в основном из США и Западной Европы (в СНГ пока предпочитают использовать нелицензионный MATLAB).
Если возникает такая необходимость, подключение С/С++/Fortran кода к Python намного проще чем, например, применение MATLAB MEX-функций. Как отмечают многие эксперты, разработка ПО на Python примерно в 2 раза быстрее чем Fortran; следует отметить что это не только человеко-часы программистов, но и плата другим сотрудникам, за аренду помещений и тд. Неудивительно, что на преподавание Python уже перешел даже MIT (ведущий технический ВУЗ США).