使用fmincon内部点算法的最优容差

我正在尝试使用MatLab的fmincon函数和“ Interior point”算法来解决非线性约束优化问题。问题在于应力约束下的体积最小化。此求解器已成功应用于我的问题,但效果不佳,音量应下降更多。优化程序会找到一个局部最小值,但是优化会在显示一次按摩的3次迭代后停止:

 Local minimum possible. Constraints satisfied. 
fmincon stopped because the size of the current step is less than the selected value of the step size tolerance and constraints are  satisfied to within the selected value of the constraint tolerance. 

使用以下选项:

The options that I use: options=optimset('Algorithm','interior-point','Display','iter-detailed',...

 'MaxFunEvals',10000,'TolX',1e-20,'TolFun',','DiffMinChange',1e-1);

我不知道如何使用算法“ Interior point”将OptimalityTolerance更改为1e-6。 我尝试过:

opts = optimoptions('fmincon','OptimalityTolerance',1e-12);

但是,如果我运行此命令,则OptimalityTolerance保持在1e-6,无论我以前使用什么,我的结果都没有不同。

使用fmincon内部点算法的最优容差

shellingnie 回答:使用fmincon内部点算法的最优容差

您正在使用局部优化(无论使用fmincon的内部点版本还是信任区域反射版本)。 通常,除非您的成本函数缩放比例很差,即不需要非常多的值(MaxFunEvals或公差,而您早于达到公差即可(但您可以缩放比例)参数以提高收敛性。

无论如何,您要寻找的选项是OptimalityTolerance。但我建议您检查一下像patternsearch这样的全局优化算法(ga速度很慢,有点夸张。)

您可以通过键入来检查默认选项

opts = optimoptions('fmincon')
  

opts =

     

fmincon选项:

     

当前算法使用的选项(“内点”):
    (其他可用算法:“活动集”,“ sqp”,“ sqp遗留”,“信任区域反射”)
  
    设置属性:
          未设置选项。
  
    默认属性:
                     算法:“ interior-point”
                CheckGradients:0
           约束公差:1.0000e-06
                       显示:“最终”
      FiniteDifferenceStepSize:'sqrt(eps)'
          FiniteDifferenceType:'forward'
          Hessian近似值:“ bfgs”
                    HessianFcn:[]
            HessianMultiplyFcn:[]
                   荣誉界限:1
        MaxFunction评估:3000
                 最大迭代次数:1000
                ObjectiveLimit:-1.0000e + 20
           最佳公差:1.0000e-06
                     OutputFcn:[]
                       PlotFcn:[]
                  ScaleProblem:0
     指定约束渐变:0
      指定目标渐变:0
                 步进公差:1.0000e-10
           子问题算法:“分解”
                      典型X:“ ones(numberOfVariables,1)”
                   UseParallel:0

本文链接:https://www.f2er.com/2990476.html

大家都在问