2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Глобальная оптимизация - методы, библиотеки
Сообщение20.10.2017, 15:39 


20/10/17
2
Здравствуйте, в своей научной работе (если ее так можно назвать) у меня следующая задача. Есть переменные, $x_1$$x_n$. Для каждой переменной есть свой интервал значений. Далее, на основании значений всех переменных у меня рассчитываются значения некоторых точек данных $y_1^{theor}$ - $y_m^{theor}$. Для этих же точек данных у меня есть значения из эксперимента, $y_1^{exp} - y_m^{exp}$. У меня $m>n$. В идеале я хочу получить значения переменных $x_1 - x_n$ которые дают наибольшее согласие $y^{ theor}$ and $y^{exp}$. Думаю это стандартная задача. Задача у меня не линейная, производных нет и не предвидется. На данный момент я решаю задачу в лоб, то есть составляю ф-цию $F = \frac 1 m \sum(y_j^{theor} - y_j^{exp})^2$ и пытаюсь оптимизировать ее глобально. Я пробовал практически все безградиентные алгоритмы в библиотеке NLOPT и несколько алгоритмов (BASINHOPPING and DIFFERENTIAL_EVOLUTION) from python optimize. BASINHOPPING, NLOPT_ GN_CRS2_LM дают пока наилучшее решения. Но - эти алгоритмы медленные.

Интересно, есть ли более быстрые безградиентные алгоритмы для таких проблем? Есть ли смысл поискать еще какие-то библиотеки? Вы знаете какие-либо библиотеки? Желательно чтобы легко было привязать к коду на питоне. Количество переменных от 23 до 100.

Интересно, если я постараюсь увеличить количество точек данных, у меня уменьшится количество локальных минимумов?

Спасибо!

 Профиль  
                  
 
 Re: Глобальная оптимизация - методы, библиотеки
Сообщение27.10.2017, 17:09 


16/08/05
1153
Если правильно понимаю о чём речь, то самые быстрые безградиентные - это методы local search. Но естественно они не гарантируют глобальный оптимум. Самые быстрые из опробованных мною - это LocalSolver и java-библиотека oscar для MiniZinc. 100 переменных для LocalSolver-а вообще пустяк, он легко оперирует десятками тысяч переменных, лишь бы памяти хватило (ну и времени ждать улучшения локального оптимума, если найденный неудовлетворителен, ибо повторюсь - глобал не гарантирован).

 Профиль  
                  
 
 Re: Глобальная оптимизация - методы, библиотеки
Сообщение03.11.2017, 18:34 


20/10/17
2
спасибо за ответ, да - Вы все правильно поняли. Я почитал, что люди делают в таких случаях. Обычно пытаются сначала уменьшить количество переменных оценивая какие из них вносят наибольший вклад, а потом запускают методы глобальной оптимизации - типа эволюционных алгоритмов и Монте-Карло. Потом, когда более или меннее "глобальное" решение для этих переменных найдено, то добавляются другие переменные, которые вначале были "заморожены" и типа все оптимизируется локально. Тут вообще вариантов не много. Либо надо аппроксимировать как-то функцию F чтобы ее вычисление было бы как можно быстрее, но, в таком случае вводится дополнительные приближения - и не факт, что найденный минимум для приближенной функции будет идентичен минимуму настояще функции. Плохо то, что по-видимому в моем случае локальных минимумов дающий похожий результат довольно много, я уже нашел три.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group