WEB форумы на jedi
[Форум] [Помощь] [Поиск] [Выйти]
Добро пожаловать, [info]User

WEB форумы на jedi [ПОИСК] [Архив до 03.2006]

Тема Оптимизация К предыдущему сообщению На следующее сообщение Программирование

Отправил Sleep-Walker в 19:33 26.12.2003[Ответить]
Есть n-мерная функция. У неё есть минимум)), и вот в чём проблема - не один.
Не подскажет ли кто как найти их все, если
1)Известно их количество.
2)Не известно их количество.


Отправил MoonShiner в 11:48 28.12.2003[Ответить]
Необходимое условие для достижения минимума - это равенство нулю всех частных производных по твоим n-переменным в этой точке. Ясно, что таких точек может быть несколько. А если в этой точке (в которой все частные производные первого порядка равны нулю) все частные производные второго порядка положительны, то эта точка - точка минимума.


Отправил Sleep-Walker в 13:20 28.12.2003[Ответить]
Спасибо, с математикой у меня всё впорядке. Мне нужен алгоритм поиска всех таких точек на очень большой области. Тем более, как мне найти частные производные этой функции программно? Моя функция зависит от целой кучи параметров, какие из них на конкретном этапе будут переменными, а какие постоянными заранее никому не известно.

Вообще-то, насколько я знаю, нет такого метода, просто я подумал, может какие соображения есть у кого-нибудь.


Отправил Ondulyansion в 10:02 29.12.2003[Ответить]
Дак перебором. Перебирать координаты начальной точки.


Отправил Key в 12:23 29.12.2003[Ответить]
Да, общих методов поиска всех экстремумов нет. Только локальных. Твоя задача - разбить большую область на мелкие, локализуя экстремумы.
Например, решать систему уравнений все частные производные равны нулю с большой погрешностью.

Можно так же играться с начальными точками. Равномерным перебором или используя модняцкие методы, например генетические алгоритмы.

П.С. А вопрос про нахождение значений производных это даже не на три :)


Отправил Sleep-Walker в 19:27 29.12.2003[Ответить]
да не проблема, конечно, производную найти, просто функция три экрана занимает, не хочется усложнять. найти локальный минимум - не проблема (покоординатным спуском сделал). Проблема в следующем: когда надо прекращать эти минимумы искать?


Отправил Key в 21:57 29.12.2003[Ответить]
> да не проблема, конечно, производную найти
Не надо ее искать в общем виде (обычно это в принципе невозможно), на это есть численные методы, вот что я имел ввиду. Хотя это на порядок убыстрит вычисления, конечно.

> когда надо прекращать эти минимумы искать?
Так я и говорю, чтобы иметь 100% гарантию того, что ты нашел все экстремумы, тебе надо пробежаться по всем нулям частных производных.
Наиболее дешевый способ - найти эти нули с большой погрешностью (читай область), и взяв в этой области начальную точку метода оптимизации (используй лучше методы первого порядка, раз все равно производные вычислять), найти минимум.

И еще раз: в общем виде нет метода поиска всех экстремумов.


Отправил Sleep-Walker в 11:33 30.12.2003[Ответить]
>Не надо ее искать в общем виде
Даже в голову такое не приходило))) конечно численно.

>тебе надо пробежаться по всем нулям частных производных.
пасиб, как-то я до такой фигни не догадался.

зы всем пасиба проблема почти решена и больше не мучает.