Matlab:停止评估 fmincon 而不会丢失数据

Posted

技术标签:

【中文标题】Matlab:停止评估 fmincon 而不会丢失数据【英文标题】:Matlab: Stopping evaluation of fmincon without losing data 【发布时间】:2015-05-03 11:30:27 【问题描述】:

现在,fmincon 为我解决了一个最小化问题。 为了完整起见,最小化函数使用parfor

我正在使用这些选项

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

不幸的是,评估花费的时间比预期的要长得多。如何终止评估并获取fmincon 到目前为止找到的参数点。对我来说应该足够了,因为功能值并没有真正减少。 它从 12 小时开始计算,现在就在迭代 6550 处。

那么有没有办法终止fmincon-evaluation,得到参数点的当前结果呢?

提前谢谢你!

您好, 佩塔

【问题讨论】:

matlab: stop and continue execution from debugger possible? 的可能重复项 - 另请参阅 this、this 和 this。如果您希望保存已经运行的代码的结果,那么您可能不走运。你必须预料到这种事情。 @horchler 不是重复的,很有可能几乎完全符合 OP 的要求 【参考方案1】:

您可以向 fmincon 传递一个回调,该回调将在每个设计点被调用。

输出函数

options 的 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);

这应该允许您保存每次迭代的进度。

【讨论】:

以上是关于Matlab:停止评估 fmincon 而不会丢失数据的主要内容,如果未能解决你的问题,请参考以下文章

Matlab fmincon函数

matlab中的fmincon函数的用法!急

matlab中主函数调用fmincon函数,结果出问题

使用定义的 Matlab 函数进行 fmincon 优化

Matlab非线性优化函数:fmincon();

轨迹跟踪求解函数