【问题标题】:Matlab: Stopping evaluation of fmincon without losing dataMatlab:停止评估 fmincon 而不会丢失数据
【发布时间】: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 terminate minimization


【解决方案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});

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-26
    • 2017-06-30
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多