Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наискорейший спуск, Описание ограничений функции 
V
    Опции темы
Static
Дата 26.5.2009, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 6.11.2008

Репутация: нет
Всего: 2



Есть страшная (на первый взгляд) функция. 
Надо найти ее максимум при заданных ограничениях методом наискорейшего спуска. Функция описывает доходность портфеля акций - т.е. неизвестные в уравнении обозначают доли того или иного пакета акций в портфеле. 
Скажу честно, что с универа уже почти ничего не помню об этом методе, кроме его сути, поэтому реализацию скопипастил из Вики. Примерно разобрался. Насколько я понимаю - решаем так: находим частные производные функции и пропорционально им изменяем переменные с уменьшающимся шагом в течении заданного кол-ва итераций. Поправьте, если что.
Собственно, где я застрял...
Предполагается, что пользователь задает в том числе и количество пакетов акций. Я получаю неизвестное количество неизвестных. Это было непритно, но я поборол (кажется). Проблема в ограничениях функции. Как изменять переменные с учетом ограничений?
Конкретно меня смущает вот такое ограничение:
Код

х1+х2+х3+...+хn = 1

В этот момент написания поста меня посетила мысль - находить соотношение частных производных и менять х-ы так, чтоб они оказывались в таком же соотошении... это похоже на правильную мысль?
В любом случае, буду признателен за комментарии по теме ограничений функции в этом методе... При получении новых значений тупо проверять их на соответствие ограничениям или есть иные методы? Например как-то отсекать значения еще до вычисления функции...
--------------------
Я не настолько безнадежен, как кажется...
PM MAIL   Вверх
Akina
Дата 26.5.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Static @  26.5.2009,  13:43 Найти цитируемый пост)
Я получаю неизвестное количество неизвестных. Это было непритно, но я поборол (кажется).

Коллекция или массив неизвестных - вполне нормальное решение... и циклы.

Цитата(Static @  26.5.2009,  13:43 Найти цитируемый пост)
Как изменять переменные с учетом ограничений?

Ну вообще если появилась переменная, то появились и границы для неё... как бы.

Цитата(Static @  26.5.2009,  13:43 Найти цитируемый пост)
Конкретно меня смущает вот такое ограничение:

Наличие ТАКОГО ограничения просто решается выбрасыванием одной переменной. Т.е. если у тебя 4 пакета и соответственно 4 переменных, то ты строишь итерационное уравнение от трёх переменных и решаешь именно его. Четвёртая переменная зависима и однозначно определяется значениями первых трёх.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Static
Дата 26.5.2009, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 6.11.2008

Репутация: нет
Всего: 2



Ага... спасибо.
--------------------
Я не настолько безнадежен, как кажется...
PM MAIL   Вверх
IBS
Дата 2.10.2011, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 29.7.2008
Где: Белоруссия

Репутация: нет
Всего: 6



Прочитал суть метода на википедии(да и вообще дофига где)

http://ru.wikipedia.org/wiki/%D0%93%D1%80%...%83%D1%81%D0%BA

Не могу понять как найти шаг в методе наискорейшего спуска. 
Согласно указанной там формуле я должен искать шаг отталкиваясь от него же??? О_о
PM MAIL   Вверх
VictorTsaregorodtsev
Дата 3.10.2011, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 28.7.2006

Репутация: 3
Всего: 8



Цитата(IBS @  2.10.2011,  18:01 Найти цитируемый пост)
Согласно указанной там формуле я должен искать шаг отталкиваясь от него же??? 

Математическая запись такая математическая smile

Хотя не понимаю, что может быть не понятно программисту. Аргмин - "функция", в неё передали некоторый стартовый вариант значения лямбды, из неё получили окончательное значение (может, и не совпадающее с начальным приближением) шага для итерации j.

"Телом" функции аргмин будет тот или иной метод одномерной оптимизации (золотое сечение, квадратичная или параболическая аппроксимация,...).
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0557 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.