Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: алгоритмы численной минимизации
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
radist
Понадобилось тут написать программку, которая бы осуществляла подбор параметров к некой функции, измеряемой экспериментально. Функция зависит от трёх аргументов. Беда в том, что сама эта функция вычисляется довольно долго и аналитических значений первых и вторых производных для неё нету. Так вот, по методу наименьших квадратов нужно находить минимум той самой квадратичной функции. В теории все просто.
Нашёл хорошую книжку, называется "Практическая оптимизация", начал пробовать. С моей функцией ничего не вышло, с обычной квадратичной функцией вроде что-то получилось, с функцией Розенброка опять не получилось. Пока грешу на свою измученную голову и кривые руки. Нашёл вот ещё интересную ссылочку
http://alglib.sources.ru/extremums/
её тоже попробую.
В связи с чем вопросы:
1. если у кого-то есть опыт численной минимизации, поделитесь, пожалуйста.
2. если есть интересные ссылочки (особенно на библиотеки с открытыми исходниками) - поделитесь тоже
MKS
Посмотрите в документации на эту библиотеку, наверняка найдете что нибуть полезное.
Andrew10
Привет!

Идешь на _http://gams.nist.gov/ или _http://www.netlib.org/cgi-bin/search.pl и задаешь в поиске minimization, optimization или еще что-нибудь подобное.


Всего наилучшего!
radist
Спасибо всем, начал изучать. Как попробую - сообщу.
Tanya
Цитата(radist @ Jan 20 2006, 16:25) *
Понадобилось тут написать программку, которая бы осуществляла подбор параметров к некой функции, измеряемой экспериментально. Функция зависит от трёх аргументов. Беда в том, что сама эта функция вычисляется довольно долго и аналитических значений первых и вторых производных для неё нету. Так вот, по методу наименьших квадратов нужно находить минимум той самой квадратичной функции. В теории все просто.
Нашёл хорошую книжку, называется "Практическая оптимизация", начал пробовать. С моей функцией ничего не вышло, с обычной квадратичной функцией вроде что-то получилось, с функцией Розенброка опять не получилось. Пока грешу на свою измученную голову и кривые руки. Нашёл вот ещё интересную ссылочку
http://alglib.sources.ru/extremums/
её тоже попробую.
В связи с чем вопросы:
1. если у кого-то есть опыт численной минимизации, поделитесь, пожалуйста.
2. если есть интересные ссылочки (особенно на библиотеки с открытыми исходниками) - поделитесь тоже

Не хотелось бы Вас огорчать, но универсального метода поиска ГЛОБАЛЬНОГО экстремума не существует.
Если Вы не можете с Вашей функцией никаких аналитических действий производить, то Монте-Карло или его модные ныне модификации - генетический алгоритм и т.д.
Если от некоторых параметров слабая, а от других сильная зависимость, то можно иногда "разделить" переменные, последовательно использую разные алгоритмы для различных параметров.
radist
Цитата
Не хотелось бы Вас огорчать, но универсального метода поиска ГЛОБАЛЬНОГО экстремума не существует.Если Вы не можете с Вашей функцией никаких аналитических действий производить, то Монте-Карло или его модные ныне модификации - генетический алгоритм и т.д.

это мне известно. Генетический алгоритм я первым попробовал, вроде-бы непрохо получалось, но проблемка - никогда заранее неизвестно за сколько шагов алгоритма этот минимум будет достигнут. Может и вообще ничего не получиться. Хотя, возможно, я плохо отмасштабировал функцию.
А Монте-Карло нужен, вроде бы, для того, чтобы выбрать точку начала поближе к глобальному минимуму. А аналитических действий с фукцией особенно и не проведёшь - у меня численно решается система из 10 диф уравнений, подбирается под данные эксперимента по методу наименьших квадратов. Я тут ещё хочу попробовать нейросеть прикрутить, иногда, говорят, помогает.
Tanya
Цитата(radist @ Jan 22 2006, 19:47) *
Цитата

Не хотелось бы Вас огорчать, но универсального метода поиска ГЛОБАЛЬНОГО экстремума не существует.Если Вы не можете с Вашей функцией никаких аналитических действий производить, то Монте-Карло или его модные ныне модификации - генетический алгоритм и т.д.

это мне известно. Генетический алгоритм я первым попробовал, вроде-бы непрохо получалось, но проблемка - никогда заранее неизвестно за сколько шагов алгоритма этот минимум будет достигнут. Может и вообще ничего не получиться. Хотя, возможно, я плохо отмасштабировал функцию.
А Монте-Карло нужен, вроде бы, для того, чтобы выбрать точку начала поближе к глобальному минимуму. А аналитических действий с фукцией особенно и не проведёшь - у меня численно решается система из 10 диф уравнений, подбирается под данные эксперимента по методу наименьших квадратов. Я тут ещё хочу попробовать нейросеть прикрутить, иногда, говорят, помогает.

А еще Вам потребуется оценить достоверность подгонки. В свое время ничего лучшего, чем вводить искусственный шум в экспериментальные данные, придумать не удалось. Еще проблема с весовыми коэффициентами.
radist
Попробовал сегодня метод главных осей с сайта
http://alglib.sources.ru/extremums/
Работает - изумительно, и быстро и точно. Я аж офигел.
Буду дальше разбираться, может свои алгоритмы усовершенствую до такого уровня, а то завидно...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.