Минимум функции

krsnv
Сообщений: 38
Зарегистрирован: 23 янв 2009, 21:00

Минимум функции

Сообщение krsnv » 20 июн 2009, 19:19

Здравствуйте.

Возникла такая задача. Нужно c применением компьютера найти минимум функции $$f(x_1,x_2,x_3,...,x_n)$$, где $$n>100$$, $$x_1,x_2...,x_n$$ - переменные c дискретными значениями от 0 до 9 c шагом 1. Понятно, что алгоритм полного перебора здесь не подходит, так как нужно перебрать $$10^n$$ разных вариантов. Есть алгоритм, когда фиксируются значения всех переменных, потом перебираются сначала все возможные значения $$x_1$$, определяется такое $$x_1$$, при котором значение $$f()$$ самое маленькое, оно фиксируется, затем перебираются все возможные значения $$x_2$$ и т.д., после перебора $$x_n$$ опять осуществляется перебор значений $$x_1$$ и т.д.
(Кстати, как правильно называется этот алгоритм?). Здесь уже получается $$10*n*i$$ вариантов ($$i$$ - количество итераций).
Есть еще генетические алгоритмы.
Какие еще есть известные алгоритмы для нахождения минимума такой функции?
Последний раз редактировалось krsnv 30 ноя 2019, 08:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Георгий
Сообщений: 3985
Зарегистрирован: 14 дек 2008, 21:00

Минимум функции

Сообщение Георгий » 20 июн 2009, 20:04

Я очень люблю алгоритм случайной выборки. Допустим, операндом ran(x) генерируем целые x(i). Получаем первое значение функции f1 . Делаем следующий цикл случайной генерации и находим f2. Если f2<f1, то принимаем f2 в качестве эталона для сравнения; если нет, то оставляем опять f1. И так далее. Количество циклов зависит от сложности функции. У меня были случаи, когда требовалось выполнить несколько миллионов циклов. He всегда, но часто находил глобальный минимум при заданных ограничениях неизвестных.
Последний раз редактировалось Георгий 30 ноя 2019, 08:37, всего редактировалось 1 раз.
Причина: test

krsnv
Сообщений: 38
Зарегистрирован: 23 янв 2009, 21:00

Минимум функции

Сообщение krsnv » 20 июн 2009, 20:11

тоже использовал такой алгоритм, мутацией называется в генетическом алгоритме. Хорошие результаты показывал. Еще есть какие-нибудь другие известные алгоритмы?
Последний раз редактировалось krsnv 30 ноя 2019, 08:37, всего редактировалось 1 раз.
Причина: test

VAL
Сообщений: 1399
Зарегистрирован: 13 апр 2009, 21:00

Минимум функции

Сообщение VAL » 20 июн 2009, 20:30

krsnv писал(а):Source of the post
Здравствуйте.

Возникла такая задача. Нужно c применением компьютера найти минимум функции $$f(x_1,x_2,x_3,...,x_n)$$, где $$n>100$$, $$x_1,x_2...,x_n$$ - переменные c дискретными значениями от 0 до 9 c шагом 1. Есть алгоритм, когда фиксируются значения всех переменных, потом перебираются сначала все возможные значения $$x_1$$, определяется такое $$x_1$$, при котором значение $$f()$$ самое маленькое, оно фиксируется, затем перебираются все возможные значения $$x_2$$ и т.д., после перебора $$x_n$$ опять осуществляется перебор значений $$x_1$$ и т.д.
(Кстати, как правильно называется этот алгоритм?). Здесь уже получается $$10*n*i$$ вариантов ($$i$$ - количество итераций).
A про функцию f чего-нибудь известно? Если нет, то c чего Вы взяли, что этот алгоритм позволит найти минимум?
Последний раз редактировалось VAL 30 ноя 2019, 08:37, всего редактировалось 1 раз.
Причина: test

krsnv
Сообщений: 38
Зарегистрирован: 23 янв 2009, 21:00

Минимум функции

Сообщение krsnv » 20 июн 2009, 20:36

A про функцию f чего-нибудь известно? Если нет, то c чего Вы взяли, что этот алгоритм позволит найти минимум?

Про функцию ничего не известно. Нужно хотя бы как можно ближе приблизится к минимуму функции.
Конечно предложенный алгоритм минимума может и не достигнуть (скорее всего так и будет), a приблизиться может. Есть какие нибудь другие более эффективные алгоритмы?
Последний раз редактировалось krsnv 30 ноя 2019, 08:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Hottabych
Сообщений: 1807
Зарегистрирован: 25 ноя 2007, 21:00

Минимум функции

Сообщение Hottabych » 20 июн 2009, 20:42

Раз про функцию ничего не известно, то точное решение можно получить только методом полного перебора. Для приближенного решения, по всей видимости, можно либо применить метод Монте-Карло, либо взять грубую регулярную сетку и проверить значения функции в ee узлах.
Последний раз редактировалось Hottabych 30 ноя 2019, 08:37, всего редактировалось 1 раз.
Причина: test

krsnv
Сообщений: 38
Зарегистрирован: 23 янв 2009, 21:00

Минимум функции

Сообщение krsnv » 20 июн 2009, 21:07

Hottabych писал(а):Source of the post
Раз про функцию ничего не известно, то точное решение можно получить только методом полного перебора. Для приближенного решения, по всей видимости, можно либо применить метод Монте-Карло, либо взять грубую регулярную сетку и проверить значения функции в ee узлах.

Метод Монте-Карло - это, как я понимаю, как раз то, что предложил Георгий?
Что понимается под грубой регулярной сеткой для, например, функции от 100 переменных, при 10 разных значений каждой переменной?
Последний раз редактировалось krsnv 30 ноя 2019, 08:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Hottabych
Сообщений: 1807
Зарегистрирован: 25 ноя 2007, 21:00

Минимум функции

Сообщение Hottabych » 20 июн 2009, 21:16

krsnv писал(а):Source of the post
Что понимается под грубой регулярной сеткой для, например, функции от 100 переменных, при 10 разных значений каждой переменной?

Раз у вас 100 переменных, то можно считать, что минимум ищется в 100-мерном пространстве в узлах координатной сетки (то есть каждый элемент решетки есть точка c целочисленными координатами (от 0 до 9). Будем рассматривать точки, у котроых все координаты четные (сетка грубее), или кратны трем (еще более грубая сетка) и так далее. B окрестности найденого максимума может имеет смысл поверить все близлежащие значения.
Последний раз редактировалось Hottabych 30 ноя 2019, 08:37, всего редактировалось 1 раз.
Причина: test

krsnv
Сообщений: 38
Зарегистрирован: 23 янв 2009, 21:00

Минимум функции

Сообщение krsnv » 20 июн 2009, 21:23

Hottabych писал(а):Source of the post
Раз у вас 100 переменных, то можно считать, что минимум ищется в 100-мерном пространстве в узлах координатной сетки (то есть каждый элемент решетки есть точка c целочисленными координатами (от 0 до 9). Будем рассматривать точки, у котроых все координаты четные (сетка грубее), или кратны трем (еще более грубая сетка) и так далее. B окрестности найденого максимума может имеет смысл поверить все близлежащие значения.

Ho ведь даже если взять самую грубую сетку всего c двумя вариантами каждой переменной, то получится, что нужно перебрать $$2^{100}$$ разных вариантов, a это просто огромное число, даже на самых современных компьютерах перебрать их невозможно.
Последний раз редактировалось krsnv 30 ноя 2019, 08:37, всего редактировалось 1 раз.
Причина: test

Draeden
Сообщений: 1613
Зарегистрирован: 24 ноя 2007, 21:00

Минимум функции

Сообщение Draeden » 21 июн 2009, 06:42

krsnv, те алгоритмы которые ты упоминал работают для выпуклых или дифференцируемых функций. У тебя же неизвестно какая функция, что равносильно случайному набору из 10^100 чисел. Минимум можно найти только перебором.

Возникает вопрос: как задаётся функция ? Уж точно не набором своих значений.
Последний раз редактировалось Draeden 30 ноя 2019, 08:37, всего редактировалось 1 раз.
Причина: test


Вернуться в «Математический анализ»

Кто сейчас на форуме

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