Алгоритм Нелдера Мида для ограниченной оптимизации?
Я читал, что алгоритм Nelder Mead работает для безусловной оптимизации. http://www.scholarpedia.org/article/Nelder-Mead_algorithm Я думаю, что в Matlab Nelder Mead используется также для оптимизации без ограничений. Однако я немного запутался, поскольку нашел API Java для оптимизации http://www.ee.ucl.ac.uk/~mflanaga/java/Minimisation.html(Научная библиотека Фланагана), в котором есть класс, реализующий Nelder Mead simplex и позволяет определять ограничения и границы. Итак, является ли версия, реализованная в API Фланагана, модифицированным вариантом "классического" алгоритма Нелдера Мида?
2 ответа
Похоже, что API реализует простую "мягкую" систему ограничений, где ограничения преобразуются в штрафные функции, которые строго штрафуют регионы за пределами ограничений. Это дешевый и веселый способ добавления ограничений в неограниченный решатель, но будет найден компромисс между оптимальностью, сходимостью и степенью, в которой эти ограничения выполняются.
Взгляните на HillStormer[1], (бесплатное) программное обеспечение, которое разрешает линейные ограничения для Nelder-Mead. Вы обнаружите, что использование линейных ограничений может улучшить оптимизацию с использованием меньшего количества шагов, позволяя вырождать симплекс на ограничении, восстанавливая его впоследствии. Кроме того, это программное обеспечение включает в себя "тестовый режим", который позволяет вам составлять поверхности отклика и представлять графическую оптимизацию впоследствии. Вы можете скачать ее по адресу [1]: http://www.hillstormer.es/