PDFO: Powell's Derivative-Free Optimization solvers
Введение
PDFO (Powell's Derivative-Free Optimization solvers) — это кроссплатформенный пакет, предоставляющий интерфейсы для использования методов оптимизации без производных профессора М. Дж. Д. Пауэлла, включая UOBYQA, NEWUOA, BOBYQA, LINCOA и COBYLA. Дополнительную информацию можно найти на домашней странице PDFO и в статье PDFO.
В этом пакете используется модифицированная версия кода Фортрана Пауэлла. Исходный код Пауэлла можно найти в папке original
под fsrc
.
Версия Python от PDFO
Установка
Рекомендованная установка
Чтобы использовать версию Python от PDFO на Linux, Mac или Windows, вам нужен Python (версия 3.7 или выше).
Настоятельно рекомендуется установить PDFO через PyPI.
Установите pip в вашей системе, если ваша версия Python не включает его. Затем выполните следующую команду в командной оболочке (например, терминал для Linux и macOS или командная оболочка для Windows):
python3 -m pip install pdfo
Если ваш Python 3 лаунчер не python3
, адаптируйте команду соответствующим образом (это может быть python
на Windows, например). Если эта команда выполняется успешно, PDFO установлен. Вы можете проверить установку с помощью следующей команды:
python3 -m unittest pdfo.testpdfo
Для пользователей Anaconda PDFO также доступен через установщик conda (https://anaconda.org/conda-forge/pdfo). Однако он не управляется нами.
Альтернативная установка (с использованием исходного дистрибутива)
Альтернативно, хотя это крайне не рекомендуется, PDFO можно установить из исходного кода. Это требует установки дополнительных заголовков Python, компилятора Fortran (например, gfortran) и F2PY (предоставляется NumPy). Загрузите и распакуйте исходный код пакета или клонируйте его с GitHub или Gitee. Вы получите папку, содержащую pyproject.toml
; в командной оболочке перейдите в эту папку; затем установите PDFO, выполнив следующую команду:
python3 -m pip install .
Использование
PDFO предоставляет следующие функции Python: pdfo
, uobyqa
, newuoa
, bobyqa
, lincoa
, cobyla
.
Функция pdfo
может автоматически определить тип вашей проблемы и вызвать один из решателей Пауэлла. Остальные пять функций вызывают решатель, указанный их именами. Настоятельно рекомендуется использовать pdfo
вместо... Функция pdfo
предназначена для совместимости с функцией
minimize
, доступной в scipy.optimize
.
Вы можете вызывать pdfo
точно так же, как и minimize
, без аргументов производных (PDFO не использует производные).
Для подробного синтаксиса этих функций используйте стандартную команду help
Python. Например,
from pdfo import pdfo
help(pdfo)
расскажет вам, как использовать pdfo
.
PDFO можно удалить, выполнив следующую команду в командной оболочке:
python3 -m pip uninstall pdfo
PDFO поддерживает MATLAB R2014a и более поздние версии. Чтобы использовать PDFO, вам необходимо сначала настроить MEX вашего MATLAB так, чтобы он мог компилировать Fortran. Настройка MEX — это проблема использования чистого MATLAB, и она не имеет ничего общего с PDFO.
Чтобы узнать, готов ли ваш MEX, запустите следующий код в MATLAB:
mex('-setup', '-v', 'fortran'); mex('-v', fullfile(matlabroot, 'extern', 'examples', 'refbook', 'timestwo.F'));
Если это завершится успешно, то ваш MEX готов. В противном случае это не так, и вы можете попробовать пакет setup_mex
по адресу
https://github.com/equipez/setup_mex
Он поможет вам настроить MEX на Windows или macOS (настройка MEX тривиальна в Linux).
В случае, если setup_mex
не работает, вам следует обратиться к местному эксперту MATLAB или в службу технической поддержки MathWorks по поводу «как настроить MEX», что не является частью PDFO.
Скачайте и распакуйте исходный код пакета или клонируйте его с GitHub или Gitee.
Вы получите папку, содержащую setup.m
. Поместите эту папку в место, где вы хотите установить PDFO. В MATLAB измените каталог на эту папку и выполните следующую команду:
setup
Если эта команда выполняется успешно, PDFO установлен. Вы можете выполнить следующую команду в MATLAB, чтобы проверить установку:
testpdfo
PDFO предоставляет следующие функции MATLAB: pdfo
, uobyqa
, newuoa
, bobyqa
, lincoa
, cobyla
.
Функция pdfo
может автоматически определять тип вашей проблемы и затем вызывать один из решателей [Поулла].
Остальные пять функций вызывают решатель, указанный их именами. Настоятельно рекомендуется использовать pdfo
вместо uobyqa
, newuoa
и т. д.
Функция pdfo
разработана для совместимости с функцией fmincon
, доступной в Optimization Toolbox MATLAB. Вы можете вызвать pdfo
точно так же, как вызываете fmincon
. Кроме того, pdfo
можно вызывать гибкими способами, которые не поддерживаются fmincon
.
Для получения подробной информации об этих функциях используйте стандартную команду help
MATLAB. Например,
help pdfo
расскажет вам, как использовать pdfo
.
PDFO можно удалить с помощью скрипта setup.m, выполнив следующую команду в MATLAB:
setup uninstall
@misc{Ragonneau_Zhang_2023,
title = {{PDFO}: a cross-platform package for {Powell}'s derivative-free optimization solvers},
author = {Ragonneau, T. M. and Zhang, Z.},
howpublished = {arXiv:2302.13246},
year = 2023
}
Кроме того, методы Поулла можно цитировать следующим образом.
М. Дж. Д. Поулл. Метод прямой оптимизации, который моделирует целевую функцию и функцию ограничений линейной интерполяцией. В С. Гомес и Ж. П. Хеннар, редакторы, Достижения в области оптимизации и численных методов. Анализ*, страницы 51–67, Дордрехт, Нидерланды, 1994. Спрингер.
М. Дж. Д. Пауэлл. UOBYQA: оптимизация без ограничений с помощью квадратичной аппроксимации. Math. Program., 92:555–582, 2002.
М. Дж. Д. Пауэлл. Программное обеспечение NEWUOA для оптимизации без ограничений и без производных. В книге Г. Ди Пилло и М. Рома «Крупномасштабная нелинейная оптимизация», том 83 «Невыпуклая оптимизация и её приложения», страницы 255–297, Бостон, Массачусетс, США, 2006. Спрингер.
М. Дж. Д. Пауэлл. Алгоритм BOBYQA для ограниченной оптимизации без использования производных. Технический отчёт DAMTP 2009/NA06, факультет прикладной математики и теоретической физики, Кембриджский университет, Кембридж, Великобритания, 2009.
Замечание: LINCOA ищет наименьшее значение нелинейной функции при линейных неравенственных ограничениях без использования производных целевой функции. Пауэлл не публиковал статью, посвящённую этому алгоритму.
PDFO посвящён памяти покойного профессора Пауэлла с благодарностью за его вдохновение и за те сокровища, которые он оставил нам.
Мы благодарны профессору Я-сян Юаню за его постоянное поощрение и поддержку.
Разработка PDFO — долгосрочный проект, который был бы невозможен без постоянного финансирования со стороны Совета по исследовательским грантам Гонконга (реф. PolyU 253012/17P, PolyU 153054/20P и PolyU 153066/21P), Гонконгской стипендиальной программы для докторантов (реф. PF18-24698) и Политехнического университета Гонконга (PolyU), в частности факультета прикладной математики (AMA).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )