我遇到了优化问题。我认为代码工作正常,但我想在达到一些最佳值(低于1e-11)时强制停止它。到目前为止我找到的唯一解决方案是将MaxTime设置为120
optionsMS = ptimoptions(@fmincon,'MaxIter',1000000,'MaxFunEvals',1000000,...
'Algorithm','sqp');
problem = createOptimProblem('fmincon','lb',LB,'ub',UB,'x0',vx,...
'options',optionsMS,...
'objective',@(v)opti(v,x0,N,imag(wFs),imag(wPs),epsilon,R,W));
gs=GlobalSearch('Display','iter','StartPointsToRun','bounds','MaxTime',120);
[x3,fval3] = run(gs,problem)
我还能做什么?
编辑: 我已将TolFun设为1e-11
optionsGS = optimoptions(@fmincon,'MaxIter',1000000,'MaxFunEvals',1000000,...
'Algorithm','interior-point','TolFun',1e-11);
这些是结果
Num Pts Best Current Threshold Local Local
Analyzed F-count f(x) Penalty Penalty f(x) exitflag Procedure
0 2961 0.006034 0.006034 2 Initial Point
200 16921 0.006034 0.01213 2 Stage 1 Local
300 17023 0.006034 6.352 1.086 Stage 2 Search
400 17123 0.006034 6.322 4.191 Stage 2 Search
432 26074 4.379e-13 6.228 6.475 4.379e-13 2 Stage 2 Local
433 35845 4.379e-13 6.205 6.228 4.244e-13 2 Stage 2 Local
434 44004 4.379e-13 1.995 6.205 0.01337 2 Stage 2 Local
435 52661 3.944e-13 1.514 1.995 3.944e-13 2 Stage 2 Local
474 54906 3.944e-13 1.939 2.017 0.01789 -1 Stage 2 Local
GlobalSearch stopped because maximum time is exceeded.
GlobalSearch called the local solver 7 times before exceeding
the clock time limit (MaxTime = 120 seconds).
6 local solver runs converged with a positive local solver exit flag.
三个结果低于1e-11所以我认为它应该停止但我不知道如何在 optimoptions 上设置它。
提前致谢。
答案 0 :(得分:0)
您可以为TolFun
设置TolX
或ptimoptions
值,具体取决于您的停止条件。
如果要在尺寸步骤上设置下限,请转到TolX
。如果您的目标是约束目标函数更改的下限,请设置TolFun
。 The Matlab documentation有一个很好的图表,显示了它们之间的区别:
我相信您正在寻找TolFun
选项。话虽如此,除了更改MaxTime
之外,您还可以尝试以下方法:
optionsMS = ptimoptions(@fmincon,'MaxIter',1000000,'MaxFunEvals',1000000,...
'Algorithm','sqp','TolFun',1e-11);