Fmincon в Matlab не хватает памяти - PullRequest
1 голос
/ 12 апреля 2011

Я использую fmincon Matlab для оптимизации целевой функции, которая является нормой l2 между 2 векторами.Существует также ограничение неравенства, которое является еще одной нормой l2 между оптимизируемым вектором и некоторым другим вектором константы.Таким образом, в основном число параметров - это размер этого вектора, который я пытаюсь минимизировать в смысле l2.

||M * s - s || _2 st || st || _2

M - постоянная матрица, t - постоянные векторы, а эпсилон - постоянная.

Так что теперь проблема для меня в том, что s огромен.Может иметь от 400 до 20000 переменных.Теперь fmincon не хватает памяти при внутренней попытке сохранить матрицы.Есть ли способ решить эту проблему?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 15 апреля 2011

Это действительно не решает мою проблему.В итоге я понял, что мне нужно передать предоставленную пользователем «редкую» гессиану матрицу (ранее я использовал настройку по умолчанию для гессиана, которая является приближением конечных разностей).И как только я это сделал, я перестал исчерпывать свою память.Но все равно спасибо!

0 голосов
/ 12 апреля 2011

когда вы запускаете fmincon, вы должны рассмотреть возможность добавления набора опций. посмотрите на optimset , так же:

OPTI = optimset('MaxIter',1000)

или оформить заказ на все опции оптимизации .

тогда

get_val = fmincon(... , OPTI)

если это не сработает, вы должны опубликовать свой код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...