2015-05-03 3 views
1

Прямо сейчас, fmincon решает проблему минимизации для меня. Функция минимизации использует parfor ради полноты.Matlab: Прекращение оценки fmincon без потери данных

Я использую эти опции

options = optimoptions(@fmincon,'Display','iter', 'MaxIter',1000000,'MaxFunEvals',1000000,'TypicalX',[1e-1,1e-2,1e0,1e1,1e2,1e3, 1e-1]) 

и, к сожалению, оценка занимает гораздо дольше, чем ожидалось. Как я могу завершить оценку и получить параметр, который fmincon найден до сих пор. Этого должно быть достаточно для меня, потому что значение funciton больше не уменьшается. Рассчитывается с 12 часов и только на итерации 6550 прямо сейчас.

Итак, есть способ завершить fmincon -оценку и получить текущий результат точки параметра?

Спасибо заранее!

здоровается, Pejta

+0

Возможный дубликат [matlab: остановить и продолжить выполнение от отладчика возможно?] (Http://stackoverflow.com/questions/3272541/matlab-stop-and-continue-execution-from-debugger-possible) - см. Также [this] (http://stackoverflow.com/q/5888472/2278029), [this] (http://stackoverflow.com/q/18859270/2278029) и [this] (http://stackoverflow.com/д/19005931/2278029). Если вы надеетесь сохранить результаты кода, который уже запущен, вам может быть не повезло. Вы должны это предвидеть. – horchler

+0

@horchler не дубликат, можно очень точно дать то, что хочет OP – Karl

ответ

1

Вы можете передать обратный вызов fmincon, который будет вызываться каждый дизайн точка.

Выход Функция

Поле Outputfcn опций определяет одну или несколько функций, функция оптимизации звонки на каждой итерации. Как правило, вы можете использовать функцию вывода для построения точек на каждой итерации или для отображения оптимизационных величин из алгоритма. Используя функцию вывода, вы можете просматривать, но не устанавливать значения оптимизации.

http://www.mathworks.com/help/optim/ug/optimization-options-reference.html#f11022

options = optimoptions(@solvername,'OutputFcn', @outfun); 

определяет OutputFcn быть дескриптор outfun. Чтобы указать более одной выходной функции используется синтаксис

options = optimoptions(@solvername,'OutputFcn',{@outfun, @outfun2}); 

Это позволит вам сохранить ваши успехи каждой итерации.