Здравствуйте, гость ( Вход | Регистрация )



Гостевой доступ к форуму из Москвы: Телефоны: +7(495)7859696,7376201,7376233,7868796,7390241 Login: demo Password: demo
 
ОтветитьСоздать новую тему
> Кто помнит или сейчас проходит методы оптимизации?, А то я за 20 лет подзабыл малость.
drusha
сообщение Sep 26 2006, 19:03
Сообщение #1


Постоянный пользователь
*****

Группа: Новички
Сообщений: 520
Регистрация: 16-June 06
Пользователь №: 431
Заходит на форум с гостевика.



Заморочка такая. Есть некая функция, которая зависит от N параметров, и даёт отклик - конкретное действительное число. Надо найти её минимум. Хотя бы локальный. Положим, она нелинейная, негладкая, и даже кое-где разрывная, и не везде определена. Это не беда. Где не определена, там тупо подставим какое-нибудь значение типа 1.0E100, то есть, заведомо не оптимальное. Тогда она может считаться определённой везде.

Как стартовые условия задаётся некий стартовый вектор параметров и вектор начальных шагов по кадому из них. Ну, оно понятно. Один параметр может выражаться в метрах, другой в километрах, третий в секундах, четвёртый в долларах, пятый в килограммах... Нет единой размерности, единых масштабов и т.п. По идее, даже есть какие-то ограничения, но они неизвестны (там функция не определена, и это имитируется очень большим значением за пределами области определения).

Я хотел засадить туда что-то типа метода наискорейшего спуска. То есть, прощупываем в окрестности начального вектора N+1 точек (или для пущей точности можно 2*N+1), вычисляем градиент, и идём против него. Там делаем однопараметрическую оптимизацию с автовыбором шага (с этим делом всё чоки-поки), потом - снова... Короче, пока не съедем в самую яму, где либо градиент оказывается 0, либо очередная итерация приводит нас почти в ту же самую точку (ну, или, скажем, меньше чем 0.1 соответствующего шага по каждому параметру от прежней такой точки). Даже если градиент ненулевой (а при конечном шаге он никогда нулевой не будет).

Но не тут-то было. Просто градиент оценивать - это галимо. Одни единицы - в одной размерности, другие - в другой... Если приращение функции отклика тупо делить на шаг, то получится, что по тем параметрам, от которых она зависит сильно, скорее всего и пойдёт градиент. Но потому и шаг по ним даётся маленький, что она там сильно нелинейная... Нормировать на шаг, который задан по каждому параметру (типа, вектор шагов)? Или как лучше? А то, получается какая-то не очень оптимальная оптимизация. Хотя, тоже, в принципе, должна работать. Но только очень медленно.

Алгоритм предполагается реализовать на Лиспе. Так что, кому чужд Лисп, лучше на пальцах.


--------------------
Теперь всё, я сюда больше не приду. Никогда.
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение

ОтветитьСоздать новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия Сейчас: 27th November 2020 - 02:56
 
     
Rambler's Top100 службы мониторинга серверов
Gentoo Powered Lighttpd Powered