|
|
  |
алгоритмы численной минимизации, есть готовые библиотеки |
|
|
|
Jan 20 2006, 13:25
|
Частый гость
 
Группа: Свой
Сообщений: 122
Регистрация: 24-05-05
Пользователь №: 5 329

|
Понадобилось тут написать программку, которая бы осуществляла подбор параметров к некой функции, измеряемой экспериментально. Функция зависит от трёх аргументов. Беда в том, что сама эта функция вычисляется довольно долго и аналитических значений первых и вторых производных для неё нету. Так вот, по методу наименьших квадратов нужно находить минимум той самой квадратичной функции. В теории все просто. Нашёл хорошую книжку, называется "Практическая оптимизация", начал пробовать. С моей функцией ничего не вышло, с обычной квадратичной функцией вроде что-то получилось, с функцией Розенброка опять не получилось. Пока грешу на свою измученную голову и кривые руки. Нашёл вот ещё интересную ссылочку http://alglib.sources.ru/extremums/её тоже попробую. В связи с чем вопросы: 1. если у кого-то есть опыт численной минимизации, поделитесь, пожалуйста. 2. если есть интересные ссылочки (особенно на библиотеки с открытыми исходниками) - поделитесь тоже
|
|
|
|
|
Jan 21 2006, 10:58
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(radist @ Jan 20 2006, 16:25)  Понадобилось тут написать программку, которая бы осуществляла подбор параметров к некой функции, измеряемой экспериментально. Функция зависит от трёх аргументов. Беда в том, что сама эта функция вычисляется довольно долго и аналитических значений первых и вторых производных для неё нету. Так вот, по методу наименьших квадратов нужно находить минимум той самой квадратичной функции. В теории все просто. Нашёл хорошую книжку, называется "Практическая оптимизация", начал пробовать. С моей функцией ничего не вышло, с обычной квадратичной функцией вроде что-то получилось, с функцией Розенброка опять не получилось. Пока грешу на свою измученную голову и кривые руки. Нашёл вот ещё интересную ссылочку http://alglib.sources.ru/extremums/её тоже попробую. В связи с чем вопросы: 1. если у кого-то есть опыт численной минимизации, поделитесь, пожалуйста. 2. если есть интересные ссылочки (особенно на библиотеки с открытыми исходниками) - поделитесь тоже Не хотелось бы Вас огорчать, но универсального метода поиска ГЛОБАЛЬНОГО экстремума не существует. Если Вы не можете с Вашей функцией никаких аналитических действий производить, то Монте-Карло или его модные ныне модификации - генетический алгоритм и т.д. Если от некоторых параметров слабая, а от других сильная зависимость, то можно иногда "разделить" переменные, последовательно использую разные алгоритмы для различных параметров.
|
|
|
|
|
Jan 22 2006, 16:47
|
Частый гость
 
Группа: Свой
Сообщений: 122
Регистрация: 24-05-05
Пользователь №: 5 329

|
Цитата Не хотелось бы Вас огорчать, но универсального метода поиска ГЛОБАЛЬНОГО экстремума не существует.Если Вы не можете с Вашей функцией никаких аналитических действий производить, то Монте-Карло или его модные ныне модификации - генетический алгоритм и т.д. это мне известно. Генетический алгоритм я первым попробовал, вроде-бы непрохо получалось, но проблемка - никогда заранее неизвестно за сколько шагов алгоритма этот минимум будет достигнут. Может и вообще ничего не получиться. Хотя, возможно, я плохо отмасштабировал функцию. А Монте-Карло нужен, вроде бы, для того, чтобы выбрать точку начала поближе к глобальному минимуму. А аналитических действий с фукцией особенно и не проведёшь - у меня численно решается система из 10 диф уравнений, подбирается под данные эксперимента по методу наименьших квадратов. Я тут ещё хочу попробовать нейросеть прикрутить, иногда, говорят, помогает.
|
|
|
|
|
Jan 23 2006, 09:02
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(radist @ Jan 22 2006, 19:47)  Цитата Не хотелось бы Вас огорчать, но универсального метода поиска ГЛОБАЛЬНОГО экстремума не существует.Если Вы не можете с Вашей функцией никаких аналитических действий производить, то Монте-Карло или его модные ныне модификации - генетический алгоритм и т.д.
это мне известно. Генетический алгоритм я первым попробовал, вроде-бы непрохо получалось, но проблемка - никогда заранее неизвестно за сколько шагов алгоритма этот минимум будет достигнут. Может и вообще ничего не получиться. Хотя, возможно, я плохо отмасштабировал функцию. А Монте-Карло нужен, вроде бы, для того, чтобы выбрать точку начала поближе к глобальному минимуму. А аналитических действий с фукцией особенно и не проведёшь - у меня численно решается система из 10 диф уравнений, подбирается под данные эксперимента по методу наименьших квадратов. Я тут ещё хочу попробовать нейросеть прикрутить, иногда, говорят, помогает. А еще Вам потребуется оценить достоверность подгонки. В свое время ничего лучшего, чем вводить искусственный шум в экспериментальные данные, придумать не удалось. Еще проблема с весовыми коэффициентами.
|
|
|
|
|
Jan 23 2006, 11:37
|
Частый гость
 
Группа: Свой
Сообщений: 122
Регистрация: 24-05-05
Пользователь №: 5 329

|
Попробовал сегодня метод главных осей с сайта http://alglib.sources.ru/extremums/Работает - изумительно, и быстро и точно. Я аж офигел. Буду дальше разбираться, может свои алгоритмы усовершенствую до такого уровня, а то завидно...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|