Введение

IPOPT, сокращение от "Interior Point OPTimizer, произносится I P Opt", – это программная библиотека для крупномасштабной нелинейной оптимизации непрерывных систем. Она написана на C++ (после перехода с Fortran и C) и распространяется под лицензией EPL (ранее CPL). IPOPT реализует примально-дуальный метод внутренней точки и использует поиск по линиям на основе фильтрующих методов (Флетчера и Лейффера). IPOPT может вызываться из различных сред моделирования: C, C++, Fortran, Java, R, Python и других. IPOPT является частью проекта COIN OR. IPOPT предназначен для использования информации о первой производной (градиенте) и второй производной (гессиане) при её предоставлении (обычно с помощью автоматических процедур дифференцирования в средах моделирования, таких как AMPL). Если гессиан не предоставлен, IPOPT будет аппроксимировать его квазиньютоновскими методами, в частности, обновлением BFGS. IPOPT был первоначально разработан аспирантом Андреасом Вахтером и профессором Лоренцем Т. Биглером из кафедры химической инженерии Университета Карнеги — Меллона. Их работа была отмечена премией INFORMS Computing Society в 2009 году. Арвинд Рагхунатан позже создал расширение IPOPT для математического программирования с ограничениями равновесия (MPEC). Эта версия IPOPT обычно известна как IPOPT C (где "C" означает "дополнительность"). Хотя теоретически любую программу смешанного целочисленного программирования можно переформулировать как MPEC, её разрешимость с помощью IPOPT C не гарантирована. Решение MINLP (смешанных нелинейных задач целочисленного программирования) с использованием IPOPT всё ещё изучается. Карл Лэрд и Андреас Вахтер являются разработчиками IPOPT 3.0, представляющего собой перереализацию IPOPT на C++. Вахтер и Лэрд были удостоены премии имени Дж. Х. Уилкинсона за численное программное обеспечение за эту разработку в 2011 году.