文档gydF4y2Ba

fseminfgydF4y2Ba

求半无限约束多变量非线性函数的最小值gydF4y2Ba

方程gydF4y2Ba

查找指定的问题的最小值gydF4y2Ba

最小值gydF4y2Ba xgydF4y2Ba fgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba 这样gydF4y2Ba {gydF4y2Ba 一个gydF4y2Ba ⋅gydF4y2Ba xgydF4y2Ba ≤gydF4y2Ba bgydF4y2Ba ,gydF4y2Ba 一个gydF4y2Ba egydF4y2Ba 问gydF4y2Ba ⋅gydF4y2Ba xgydF4y2Ba =gydF4y2Ba bgydF4y2Ba egydF4y2Ba 问gydF4y2Ba ,gydF4y2Ba lgydF4y2Ba bgydF4y2Ba ≤gydF4y2Ba xgydF4y2Ba ≤gydF4y2Ba ugydF4y2Ba bgydF4y2Ba ,gydF4y2Ba cgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba ≤gydF4y2Ba 0gydF4y2Ba ,gydF4y2Ba cgydF4y2Ba egydF4y2Ba 问gydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba =gydF4y2Ba 0gydF4y2Ba ,gydF4y2Ba KgydF4y2Ba 我gydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba wgydF4y2Ba 我gydF4y2Ba )gydF4y2Ba ≤gydF4y2Ba 0gydF4y2Ba ,gydF4y2Ba 1gydF4y2Ba ≤gydF4y2Ba 我gydF4y2Ba ≤gydF4y2Ba ngydF4y2Ba .gydF4y2Ba

bgydF4y2Ba和gydF4y2Ba说真的gydF4y2Ba是向量,gydF4y2Ba一个gydF4y2Ba和gydF4y2BaAeqgydF4y2Ba矩阵,gydF4y2BacgydF4y2Ba(gydF4y2BaxgydF4y2Ba),gydF4y2Ba量表信gydF4y2Ba(gydF4y2BaxgydF4y2Ba),gydF4y2BaKgydF4y2Ba我gydF4y2Ba(gydF4y2Bax, wgydF4y2Ba我gydF4y2Ba)是返回向量的函数,和gydF4y2BafgydF4y2Ba(gydF4y2BaxgydF4y2Ba)是一个返回标量的函数。gydF4y2BafgydF4y2Ba(gydF4y2BaxgydF4y2Ba),gydF4y2BacgydF4y2Ba(gydF4y2BaxgydF4y2Ba),gydF4y2Ba量表信gydF4y2Ba(gydF4y2BaxgydF4y2Ba)可以是非线性函数。向量(或矩阵)gydF4y2BaKgydF4y2Ba我gydF4y2Ba(gydF4y2BaxgydF4y2Ba,gydF4y2BawgydF4y2Ba我gydF4y2Ba)≤0gydF4y2Ba两者都是连续函数吗gydF4y2BaxgydF4y2Ba还有一组额外的变量gydF4y2BawgydF4y2Ba1gydF4y2Ba,gydF4y2BawgydF4y2Ba2gydF4y2Ba、……gydF4y2BawgydF4y2BangydF4y2Ba.的变量gydF4y2BawgydF4y2Ba1gydF4y2Ba,gydF4y2BawgydF4y2Ba2gydF4y2Ba、……gydF4y2BawgydF4y2BangydF4y2Ba是长度不超过2的向量。gydF4y2Ba

xgydF4y2Ba,gydF4y2Ba磅gydF4y2Ba,gydF4y2Ba乌兰巴托gydF4y2Ba可以作为向量或矩阵传递;看到gydF4y2Ba矩阵的参数gydF4y2Ba.gydF4y2Ba

语法gydF4y2Ba

X = fseminff (fun,x0,ntheta,seminfcon)gydF4y2Ba
x = fseminf(fun,x0,ntheta,seminfcon,A,b)gydF4y2Ba
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq)gydF4y2Ba
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub)gydF4y2Ba
x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub,options)gydF4y2Ba
X = fsemf(问题)gydF4y2Ba
[x,fval] = fsemf(…)gydF4y2Ba
[x,fval,exitflag] = fsemf(…)gydF4y2Ba
[x,fval,exitflag,output] = fsemf(…)gydF4y2Ba
[x,fval,exitflag,output,lambda] = fsemf(…)gydF4y2Ba

描述gydF4y2Ba

fseminfgydF4y2Ba从初始估计开始,求若干变量的半无限约束标量函数的最小值。这样做的目的是最小化gydF4y2BafgydF4y2Ba(gydF4y2BaxgydF4y2Ba),因此约束条件适用于的所有可能值gydF4y2BawgydF4y2Ba我gydF4y2Ba∈gydF4y2BaℜgydF4y2Ba1gydF4y2Ba(或gydF4y2BawgydF4y2Ba我gydF4y2Ba∈gydF4y2BaℜgydF4y2Ba2gydF4y2Ba).因为计算所有可能的值是不可能的gydF4y2BaKgydF4y2Ba我gydF4y2Ba(gydF4y2Bax, wgydF4y2Ba我gydF4y2Ba)gydF4y2Ba,必须选择一个区域gydF4y2BawgydF4y2Ba我gydF4y2Ba在其上计算适当采样的一组值。gydF4y2Ba

    注意:gydF4y2Ba传递额外参数gydF4y2Ba说明如何在必要时向目标函数和非线性约束函数传递额外参数。gydF4y2Ba

X = fseminff (fun,x0,ntheta,seminfcon)gydF4y2Ba起价gydF4y2Bax0gydF4y2Ba然后求出函数的最小值gydF4y2Ba有趣的gydF4y2Ba受到gydF4y2BanthetagydF4y2Ba中定义的半无限约束gydF4y2BaseminfcongydF4y2Ba.gydF4y2Ba

x = fseminf(fun,x0,ntheta,seminfcon,A,b)gydF4y2Ba也试图满足线性不等式gydF4y2BaA*x≤bgydF4y2Ba.gydF4y2Ba

x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq)gydF4y2Ba最小值服从线性等式gydF4y2BaAeq*x = beqgydF4y2Ba也集gydF4y2BaA = []gydF4y2Ba和gydF4y2BaB = []gydF4y2Ba如果不存在不平等。gydF4y2Ba

x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub)gydF4y2Ba中的设计变量的一组下界和上界gydF4y2BaxgydF4y2Ba,使得解总是在值域内gydF4y2Ba磅gydF4y2Ba≤gydF4y2BaxgydF4y2Ba≤gydF4y2Ba乌兰巴托gydF4y2Ba.gydF4y2Ba

x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub,options)gydF4y2Ba中指定的优化选项进行最小化gydF4y2Ba选项gydF4y2Ba.使用gydF4y2BaoptimoptionsgydF4y2Ba来设置这些选项。gydF4y2Ba

X = fsemf(问题)gydF4y2Ba求最小值gydF4y2Ba问题gydF4y2Ba,在那里gydF4y2Ba问题gydF4y2Ba结构描述在gydF4y2Ba输入参数gydF4y2Ba.gydF4y2Ba

创建gydF4y2Ba问题gydF4y2Ba通过从优化应用程序导出一个问题来构建结构,如gydF4y2Ba导出工作gydF4y2Ba.gydF4y2Ba

[x,fval] = fsemf(…)gydF4y2Ba返回目标函数的值gydF4y2Ba有趣的gydF4y2Ba解决方案gydF4y2BaxgydF4y2Ba.gydF4y2Ba

[x,fval,exitflag] = fsemf(…)gydF4y2Ba返回一个值gydF4y2BaexitflaggydF4y2Ba这描述了退出条件。gydF4y2Ba

[x,fval,exitflag,output] = fsemf(…)gydF4y2Ba返回一个结构gydF4y2Ba输出gydF4y2Ba它包含了关于优化的信息。gydF4y2Ba

[x,fval,exitflag,output,lambda] = fsemf(…)gydF4y2Ba返回一个结构gydF4y2BaλgydF4y2Ba哪个域包含解处的拉格朗日乘数gydF4y2BaxgydF4y2Ba.gydF4y2Ba

    注意:gydF4y2Ba如果问题的指定输入边界不一致,则输出gydF4y2BaxgydF4y2Ba是gydF4y2Bax0gydF4y2Ba输出gydF4y2BafvalgydF4y2Ba是gydF4y2Ba[]gydF4y2Ba.gydF4y2Ba

输入参数gydF4y2Ba

函数输入参数gydF4y2Ba包含传入参数的一般描述gydF4y2BafseminfgydF4y2Ba.本节提供与函数相关的详细信息gydF4y2Ba有趣的gydF4y2Ba,gydF4y2BanthetagydF4y2Ba,gydF4y2Ba选项gydF4y2Ba,gydF4y2BaseminfcongydF4y2Ba,gydF4y2Ba问题gydF4y2Ba:gydF4y2Ba

有趣的gydF4y2Ba

要最小化的函数。gydF4y2Ba有趣的gydF4y2Ba一个函数接受一个向量吗gydF4y2BaxgydF4y2Ba并返回一个标量gydF4y2BafgydF4y2Ba,目标函数求值于gydF4y2BaxgydF4y2Ba.这个函数gydF4y2Ba有趣的gydF4y2Ba可以指定为文件的函数句柄吗gydF4y2Ba

X = fseminf(@myfun,x0,ntheta,seminfcon)gydF4y2Ba

在哪里gydF4y2BamyfungydF4y2Ba是一个MATLABgydF4y2Ba®gydF4y2Ba函数,例如gydF4y2Ba

函数f = myfun(x) f =…计算函数在x处的值gydF4y2Ba

有趣的gydF4y2Ba也可以是匿名函数的函数句柄。gydF4y2Ba

Fun = @(x)sin(x " *x);gydF4y2Ba

如果的梯度gydF4y2Ba有趣的gydF4y2Ba也可以计算gydF4y2Ba和gydF4y2Ba的gydF4y2BaSpecifyObjectiveGradientgydF4y2Ba选择是gydF4y2Ba真正的gydF4y2Ba,如gydF4y2Ba

options = optimoptions(' fsemf ',' specificyobjectivegradient ',true)gydF4y2Ba

然后是函数gydF4y2Ba有趣的gydF4y2Ba必须返回,在第二个输出参数,梯度值gydF4y2BaggydF4y2Ba向量atgydF4y2BaxgydF4y2Ba.gydF4y2Ba

nthetagydF4y2Ba

半无限约束的数目。gydF4y2Ba

选项gydF4y2Ba

选项gydF4y2Ba控件的特定于函数的详细信息gydF4y2Ba选项gydF4y2Ba值。gydF4y2Ba

seminfcongydF4y2Ba

计算非线性不等式约束向量的函数,gydF4y2BacgydF4y2Ba,一个非线性等式约束向量,gydF4y2Ba量表信gydF4y2Ba,gydF4y2BanthetagydF4y2Ba半无限约束(向量或矩阵)gydF4y2BaK1gydF4y2Ba,gydF4y2BaK2gydF4y2Ba,gydF4y2Ba...gydF4y2Ba,gydF4y2BaKnthetagydF4y2Ba在一个区间内求值gydF4y2Ba年代gydF4y2Ba在这一点上gydF4y2BaxgydF4y2Ba.这个函数gydF4y2BaseminfcongydF4y2Ba可以指定为函数句柄。gydF4y2Ba

X = fseminf(@myfun,x0,ntheta,@myinfcon)gydF4y2Ba

在哪里gydF4y2BamyinfcongydF4y2Ba是一个MATLAB函数,如gydF4y2Ba

函数(c,测查,K1, K2,…,Kntheta,S] = myinfcon(x,S) % Initial sampling interval if isnan(S(1,1)), S = ...% S has ntheta rows and 2 columns end w1 = ...% Compute sample set w2 = ...% Compute sample set ... wntheta = ... % Compute sample set K1 = ... % 1st semi-infinite constraint at x and w K2 = ... % 2nd semi-infinite constraint at x and w ... Kntheta = ...% Last semi-infinite constraint at x and w c = ... % Compute nonlinear inequalities at x ceq = ... % Compute the nonlinear equalities at x

年代gydF4y2Ba是建议的采样间隔,可以使用也可以不使用。返回gydF4y2Ba[]gydF4y2Ba为gydF4y2BacgydF4y2Ba和gydF4y2Ba量表信gydF4y2Ba如果不存在这样的约束。gydF4y2Ba

向量或矩阵gydF4y2BaK1gydF4y2Ba,gydF4y2BaK2gydF4y2Ba,gydF4y2Ba...gydF4y2Ba,gydF4y2BaKnthetagydF4y2Ba包含为自变量的采样值集评估的半无限约束gydF4y2Baw1gydF4y2Ba,gydF4y2Baw2gydF4y2Ba,gydF4y2Ba...gydF4y2Ba,gydF4y2BawnthetagydF4y2Ba,分别。这个两列矩阵,gydF4y2Ba年代gydF4y2Ba的值,包含建议的采样间隔gydF4y2Baw1gydF4y2Ba,gydF4y2Baw2gydF4y2Ba,gydF4y2Ba...gydF4y2Ba,gydF4y2BawnthetagydF4y2Ba,用于求值gydF4y2BaK1gydF4y2Ba,gydF4y2BaK2gydF4y2Ba,gydF4y2Ba...gydF4y2Ba,gydF4y2BaKnthetagydF4y2Ba.的gydF4y2Ba我gydF4y2Ba的第一行gydF4y2Ba年代gydF4y2Ba包含用于评估的推荐采样间隔gydF4y2BaKgydF4y2Ba我gydF4y2Ba.当gydF4y2BaKgydF4y2Ba我gydF4y2Ba是矢量,只用吗gydF4y2Ba(我,1)gydF4y2Ba(第二列可以全为零)。当gydF4y2BaKgydF4y2Ba我gydF4y2Ba是一个矩阵,gydF4y2Ba(2)我gydF4y2Ba中的行抽样gydF4y2BaKgydF4y2Ba我gydF4y2Ba,gydF4y2Ba(我,1)gydF4y2Ba的列的采样间隔gydF4y2BaKgydF4y2Ba我gydF4y2Ba(见gydF4y2Ba二维半无限约束gydF4y2Ba).在第一次迭代中gydF4y2Ba年代gydF4y2Ba是gydF4y2Ba南gydF4y2Ba,使得初始采样间隔必须由gydF4y2BaseminfcongydF4y2Ba.gydF4y2Ba

    请注意gydF4y2Ba因为Optimization Toolbox™函数只接受类型的输入gydF4y2Ba双gydF4y2Ba,用户提供的目标函数和非线性约束函数必须返回类型的输出gydF4y2Ba双gydF4y2Ba.gydF4y2Ba

传递额外参数gydF4y2Ba解释如何参数化gydF4y2BaseminfcongydF4y2Ba,如有需要。gydF4y2Ba使用实例创建采样点gydF4y2Ba包含一维和二维采样点的示例。gydF4y2Ba

问题gydF4y2Ba

客观的gydF4y2Ba

目标函数gydF4y2Ba

x0gydF4y2Ba

起始点gydF4y2BaxgydF4y2Ba
nthetagydF4y2Ba 半无限约束的数目gydF4y2Ba
seminfcongydF4y2Ba 半无限约束函数gydF4y2Ba

AineqgydF4y2Ba

线性不等式约束矩阵gydF4y2Ba

bineqgydF4y2Ba

线性不等式约束的向量gydF4y2Ba

AeqgydF4y2Ba

矩阵的线性等式约束gydF4y2Ba

说真的gydF4y2Ba

线性等式约束的向量gydF4y2Ba
磅gydF4y2Ba 下界向量gydF4y2Ba
乌兰巴托gydF4y2Ba 上界向量gydF4y2Ba

解算器gydF4y2Ba

“fseminf”gydF4y2Ba

选项gydF4y2Ba

创建的选项gydF4y2BaoptimoptionsgydF4y2Ba

输出参数gydF4y2Ba

函数输入参数gydF4y2Ba返回的参数的一般描述gydF4y2BafseminfgydF4y2Ba.本节提供与函数相关的详细信息gydF4y2BaexitflaggydF4y2Ba,gydF4y2BaλgydF4y2Ba,gydF4y2Ba输出gydF4y2Ba:gydF4y2Ba

exitflaggydF4y2Ba

标识算法终止原因的整数。的值如下所示gydF4y2BaexitflaggydF4y2Ba并给出了算法终止的相应原因。gydF4y2Ba

1gydF4y2Ba

函数收敛到一个解gydF4y2BaxgydF4y2Ba.gydF4y2Ba

4gydF4y2Ba

搜索方向的大小小于指定公差,约束违反小于gydF4y2Ba选项。ConstraintTolerancegydF4y2Ba.gydF4y2Ba

5gydF4y2Ba

方向导数的大小小于规定的公差,约束违反小于gydF4y2Ba选项。ConstraintTolerancegydF4y2Ba.gydF4y2Ba

0gydF4y2Ba

超过的迭代次数gydF4y2Ba选项。MaxIterationsgydF4y2Ba或者超出函数求值的次数gydF4y2Ba选项。MaxFunctionEvaluationsgydF4y2Ba.gydF4y2Ba

1gydF4y2Ba

算法被输出函数终止。gydF4y2Ba

-2gydF4y2Ba

没有找到可行的点。gydF4y2Ba

λgydF4y2Ba

在解处包含拉格朗日乘子的结构gydF4y2BaxgydF4y2Ba(按约束类型分隔)。结构的字段是gydF4y2Ba

较低的gydF4y2Ba

下界gydF4y2Ba磅gydF4y2Ba

上gydF4y2Ba

上界gydF4y2Ba乌兰巴托gydF4y2Ba

ineqlingydF4y2Ba

线性不等式gydF4y2Ba

eqlingydF4y2Ba

线性等式gydF4y2Ba

ineqnonlingydF4y2Ba

非线性不等式gydF4y2Ba

eqnonlingydF4y2Ba

非线性等式gydF4y2Ba

输出gydF4y2Ba

结构,其中包含有关优化的信息。结构的字段是gydF4y2Ba

迭代gydF4y2Ba

所进行的迭代次数gydF4y2Ba

funcCountgydF4y2Ba

函数求值次数gydF4y2Ba

lssteplengthgydF4y2Ba

相对于搜索方向的线搜索步长gydF4y2Ba

stepsizegydF4y2Ba

最终排水量gydF4y2BaxgydF4y2Ba

算法gydF4y2Ba

使用的优化算法gydF4y2Ba

constrviolationgydF4y2Ba

约束函数的最大值gydF4y2Ba

firstorderoptgydF4y2Ba

一阶最优性的度量gydF4y2Ba

消息gydF4y2Ba

退出消息gydF4y2Ba

选项gydF4y2Ba

使用的优化选项gydF4y2BafseminfgydF4y2Ba.使用gydF4y2BaoptimoptionsgydF4y2Ba设置或更改gydF4y2Ba选项gydF4y2Ba.看到gydF4y2Ba优化选项参考gydF4y2Ba详细信息。gydF4y2Ba

中缺少一些选项gydF4y2BaoptimoptionsgydF4y2Ba显示。这些选项以斜体列出。详细信息请参见gydF4y2Ba视图选项gydF4y2Ba.gydF4y2Ba

CheckGradientsgydF4y2Ba

比较用户提供的导数(目标或约束的梯度)和有限差分导数。选择是gydF4y2Ba真正的gydF4y2Ba或者默认值gydF4y2Ba假gydF4y2Ba.gydF4y2Ba

ConstraintTolerancegydF4y2Ba

约束违反上的终止容限,一个正标量。默认值为gydF4y2Ba1 e-6gydF4y2Ba.看到gydF4y2Ba公差和停止标准gydF4y2Ba.gydF4y2Ba

诊断gydF4y2Ba

显示要最小化或解决的功能的诊断信息。选择是gydF4y2Ba“上”gydF4y2Ba或者默认值gydF4y2Ba“关闭”gydF4y2Ba.gydF4y2Ba

DiffMaxChangegydF4y2Ba

有限差分梯度变量的最大变化(正标量)。默认值为gydF4y2Ba正gydF4y2Ba.gydF4y2Ba

DiffMinChangegydF4y2Ba

有限差分梯度变量的最小变化(正标量)。默认值为gydF4y2Ba0gydF4y2Ba.gydF4y2Ba

显示gydF4y2Ba

显示水平(见gydF4y2Ba迭代显示gydF4y2Ba):gydF4y2Ba

  • “关闭”gydF4y2Ba或gydF4y2Ba“没有”gydF4y2Ba不显示输出。gydF4y2Ba

  • “通路”gydF4y2Ba显示每次迭代的输出,并给出默认的退出消息。gydF4y2Ba

  • “iter-detailed”gydF4y2Ba显示每次迭代的输出,并给出技术退出消息。gydF4y2Ba

  • “通知”gydF4y2Ba仅在函数不收敛时显示输出,并给出默认的退出消息。gydF4y2Ba

  • “notify-detailed”gydF4y2Ba仅在函数不收敛时显示输出,并给出技术退出消息。gydF4y2Ba

  • “最后一次”gydF4y2Ba(默认)只显示最终输出,并给出默认的退出消息。gydF4y2Ba

  • 最后详细的gydF4y2Ba仅显示最终输出,并给出技术退出消息。gydF4y2Ba

FiniteDifferenceStepSizegydF4y2Ba

有限差分的标量或矢量步长因子。当你设定gydF4y2BaFiniteDifferenceStepSizegydF4y2Ba到一个向量gydF4y2BavgydF4y2Ba,正演有限差分步长gydF4y2BaδgydF4y2Ba是gydF4y2Ba

* *max(abs(x),TypicalX);gydF4y2Ba

在哪里gydF4y2BaSign ' (x) = Sign (x)gydF4y2Ba除了gydF4y2BaSign ' (0) = 1gydF4y2Ba.中心有限差分是gydF4y2Ba

delta = v *max(abs(x),TypicalX);gydF4y2Ba

标量gydF4y2BaFiniteDifferenceStepSizegydF4y2Ba展开成一个向量。默认值为gydF4y2Basqrt (eps)gydF4y2Ba对于正向有限差分,和gydF4y2Baeps ^ (1/3)gydF4y2Ba对于中心有限差分。gydF4y2Ba

FiniteDifferenceTypegydF4y2Ba

有限差分,用于估计梯度,要么gydF4y2Ba“前进”gydF4y2Ba(默认),或者gydF4y2Ba“中央”gydF4y2Ba(中心)。gydF4y2Ba“中央”gydF4y2Ba需要两倍的函数求值,但应该更准确。gydF4y2Ba

该算法在估计两种类型的有限差分时小心地服从边界。例如,它可以取一个向后的,而不是向前的差值来避免在边界外的点求值。gydF4y2Ba

FunctionTolerancegydF4y2Ba

终止容差上的函数值,为正标量。默认值为gydF4y2Ba1的军医gydF4y2Ba.看到gydF4y2Ba公差和停止标准gydF4y2Ba.gydF4y2Ba

FunValCheckgydF4y2Ba

检查目标函数和约束值是否有效。gydF4y2Ba“上”gydF4y2Ba当目标函数或约束返回为的值时显示错误gydF4y2Ba复杂的gydF4y2Ba,gydF4y2Ba正gydF4y2Ba,或gydF4y2Ba南gydF4y2Ba.默认的gydF4y2Ba“关闭”gydF4y2Ba不显示错误。gydF4y2Ba

MaxFunctionEvaluationsgydF4y2Ba

允许的函数求值的最大次数,一个正整数。默认值为gydF4y2Ba100 * numberOfVariablesgydF4y2Ba.看到gydF4y2Ba公差和停止标准gydF4y2Ba和gydF4y2Ba迭代和功能计数gydF4y2Ba.gydF4y2Ba

MaxIterationsgydF4y2Ba

允许的最大迭代次数,一个正整数。默认值为gydF4y2Ba400gydF4y2Ba.看到gydF4y2Ba公差和停止标准gydF4y2Ba和gydF4y2Ba迭代和功能计数gydF4y2Ba.gydF4y2Ba

MaxSQPItergydF4y2Ba

允许的SQP迭代的最大次数,一个正整数。默认值为gydF4y2Ba10*max(numberOfVariables, numberOfInequalities + numberOfBounds)gydF4y2Ba.gydF4y2Ba

OptimalityTolerancegydF4y2Ba

一阶最优性上的终止容限,一个正标量。默认值为gydF4y2Ba1 e-6gydF4y2Ba.看到gydF4y2Ba一阶最优度量gydF4y2Ba.gydF4y2Ba

OutputFcngydF4y2Ba

指定优化函数在每次迭代时调用的一个或多个用户定义函数,可以作为函数句柄,也可以作为函数句柄的单元格数组。默认值为none (gydF4y2Ba[]gydF4y2Ba).看到gydF4y2Ba输出函数gydF4y2Ba.gydF4y2Ba

PlotFcngydF4y2Ba

在算法执行时绘制各种进度度量,从预定义的绘图中选择或编写自己的绘图。传递一个函数句柄或函数句柄的单元数组。默认值为none (gydF4y2Ba[]gydF4y2Ba):gydF4y2Ba

  • @optimplotxgydF4y2Ba绘制当前点。gydF4y2Ba

  • @optimplotfunccountgydF4y2Ba绘制函数计数。gydF4y2Ba

  • @optimplotfvalgydF4y2Ba绘制函数值。gydF4y2Ba

  • @optimplotconstrviolationgydF4y2Ba绘制最大约束违反。gydF4y2Ba

  • @optimplotstepsizegydF4y2Ba绘制步长。gydF4y2Ba

  • @optimplotfirstorderoptgydF4y2Ba绘制一阶最优度量。gydF4y2Ba

有关编写自定义绘图函数的信息,请参见gydF4y2Ba绘制函数gydF4y2Ba.gydF4y2Ba

RelLineSrchBndgydF4y2Ba

相对边界(一个实数非负标量值)上的直线搜索步长使得总位移在gydF4y2BaxgydF4y2Ba满足gydF4y2Ba|ΔgydF4y2BaxgydF4y2Ba(gydF4y2Ba我gydF4y2Ba)|≤relLineSrchBnd·max(|gydF4y2BaxgydF4y2Ba(gydF4y2Ba我gydF4y2Ba) | |gydF4y2BatypicalxgydF4y2Ba(gydF4y2Ba我gydF4y2Ba) |)gydF4y2Ba.该选项提供了对位移大小的控制gydF4y2BaxgydF4y2Ba对于解算器采取的步骤gydF4y2BafseminfgydF4y2Ba考虑太大。默认为无边界(gydF4y2Ba[]gydF4y2Ba).gydF4y2Ba

RelLineSrchBndDurationgydF4y2Ba

中指定边界的迭代次数gydF4y2BaRelLineSrchBndgydF4y2Ba应该是活动的(默认是gydF4y2Ba1gydF4y2Ba)gydF4y2Ba

SpecifyObjectiveGradientgydF4y2Ba

用户定义的目标函数的梯度。参见前面的描述gydF4y2Ba有趣的gydF4y2Ba来看看如何定义渐变gydF4y2Ba有趣的gydF4y2Ba.设置为gydF4y2Ba真正的gydF4y2Ba有gydF4y2BafseminfgydF4y2Ba使用用户定义的目标函数梯度。默认的gydF4y2Ba假gydF4y2Ba原因gydF4y2BafseminfgydF4y2Ba用有限差分估计梯度。gydF4y2Ba

StepTolerancegydF4y2Ba

终止公差gydF4y2BaxgydF4y2Ba,为正标量。默认值为gydF4y2Ba1的军医gydF4y2Ba.看到gydF4y2Ba公差和停止标准gydF4y2Ba.gydF4y2Ba

TolConSQPgydF4y2Ba

内部迭代SQP约束违反的终止容限,一个正标量。默认值为gydF4y2Ba1 e-6gydF4y2Ba.gydF4y2Ba

TypicalXgydF4y2Ba

典型的gydF4y2BaxgydF4y2Ba值。元素的个数gydF4y2BaTypicalXgydF4y2Ba等于里面元素的个数gydF4y2Bax0gydF4y2Ba,起点。默认值为gydF4y2Ba的(numberofvariables, 1)gydF4y2Ba.gydF4y2BafseminfgydF4y2Ba使用gydF4y2BaTypicalXgydF4y2Ba对于缩放梯度估计的有限差分。gydF4y2Ba

笔记gydF4y2Ba

优化程序gydF4y2BafseminfgydF4y2Ba可能会改变建议的采样间隔,gydF4y2Ba年代gydF4y2Ba,开始gydF4y2BaseminfcongydF4y2Ba,因为对于效率或鲁棒性而言,建议的间隔以外的值可能更合适。同样,有限区域gydF4y2BawgydF4y2Ba我gydF4y2Ba,超过哪个?gydF4y2BaKgydF4y2Ba我gydF4y2Ba(gydF4y2BaxgydF4y2Ba,gydF4y2BawgydF4y2Ba我gydF4y2Ba)gydF4y2Ba在优化过程中允许变化,前提是它不会导致?中的局部极小值的数量发生显著变化gydF4y2BaKgydF4y2Ba我gydF4y2Ba(gydF4y2BaxgydF4y2Ba,gydF4y2BawgydF4y2Ba我gydF4y2Ba)gydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

这个例子最小化了这个函数gydF4y2Ba

(gydF4y2BaxgydF4y2Ba- 1)gydF4y2Ba2gydF4y2Ba,gydF4y2Ba

受限制gydF4y2Ba

0≤gydF4y2BaxgydF4y2Ba≤2gydF4y2Ba
ggydF4y2Ba(gydF4y2BaxgydF4y2Ba,gydF4y2BatgydF4y2Ba) = (gydF4y2BaxgydF4y2Ba- 1/2) - (gydF4y2BatgydF4y2Ba- 1/2)gydF4y2Ba2gydF4y2Ba对于所有0≤gydF4y2BatgydF4y2Ba≤1。gydF4y2Ba

无约束目标函数在gydF4y2BaxgydF4y2Ba= 1gydF4y2Ba.然而,约束条件,gydF4y2Ba

ggydF4y2Ba(gydF4y2BaxgydF4y2Ba,gydF4y2BatgydF4y2Ba)≤0,对于所有0≤gydF4y2BatgydF4y2Ba≤1,gydF4y2Ba

意味着gydF4y2BaxgydF4y2Ba≤1/2。gydF4y2Ba你可以通过观察这个看出这一点gydF4y2Ba(gydF4y2BatgydF4y2Ba- 1/2)gydF4y2Ba2gydF4y2Ba≥0gydF4y2Ba,所以gydF4y2Ba

马克斯gydF4y2BatgydF4y2BaggydF4y2Ba(gydF4y2BaxgydF4y2Ba,gydF4y2BatgydF4y2Ba) = (gydF4y2BaxgydF4y2Ba- 1/2)。gydF4y2Ba

因此gydF4y2Ba

马克斯gydF4y2BatgydF4y2BaggydF4y2Ba(gydF4y2BaxgydF4y2Ba,gydF4y2BatgydF4y2Ba)≤0时gydF4y2BaxgydF4y2Ba≤1/2。gydF4y2Ba

要解决这个问题,使用gydF4y2BafseminfgydF4y2Ba:gydF4y2Ba

  1. 将目标函数写成匿名函数:gydF4y2Ba

    Objfun = @(x)(x-1)^2;gydF4y2Ba
  2. 写出半无限约束函数,其中包含非线性约束(本例中为[]),初始采样区间为gydF4y2BatgydF4y2Ba(在这种情况下,从0到1的步骤为0.01),以及半无限约束函数gydF4y2BaggydF4y2Ba(gydF4y2BaxgydF4y2Ba,gydF4y2BatgydF4y2Ba):gydF4y2Ba

    函数[c, ceq, K1, s] = seminfcon(x,s) %无有限非线性不等式及等式约束c = [];[qh];%样本集if isnan(s) %初始采样间隔s = [0.01 0];结束t = 0:s(1):1;求半无限约束K1 = (x - 0.5) - (t - 0.5) ^2;gydF4y2Ba
  3. 调用gydF4y2BafseminfgydF4y2Ba初始点为0.2,并查看结果:gydF4y2Ba

    x = fseminf(objfun,0.2,1,@seminfcon)找到满足约束的局部最小值。由于目标函数在可行方向上不减小,优化完成后达到函数容差的默认值以内,并且约束满足于约束容差的默认值以内。主动的不平等(在选项内)。ConstraintTolerance= 1e-006): lower upper ineqlin ineqnonlin 1 x = 0.5000

限制gydF4y2Ba

要最小化的函数,约束和半无限约束,必须是的连续函数gydF4y2BaxgydF4y2Ba和gydF4y2BawgydF4y2Ba.gydF4y2BafseminfgydF4y2Ba可能只能给出局部的解决方案。金宝搏官方网站gydF4y2Ba

当问题不可行时,gydF4y2BafseminfgydF4y2Ba尝试最小化最大约束值。gydF4y2Ba

算法gydF4y2Ba

fseminfgydF4y2Ba使用三次和二次插值技术来估计半无限约束下的峰值。的峰值用于形成一组提供给SQP方法的约束gydF4y2BafmincongydF4y2Ba函数。当约束数量发生变化时,拉格朗日乘数被重新分配到新的约束集上。gydF4y2Ba

推荐的采样间隔计算使用插值的峰值与数据集中出现的峰值之间的差值来估计函数是否需要取更多或更少的点。该函数还通过外推曲线并将其与曲线中的其他点进行比较来评估插值的有效性。当峰值接近约束边界,即零时,建议的采样间隔减小。gydF4y2Ba

有关所使用的算法和程序类型的详细信息,请参阅gydF4y2Ba程序gydF4y2Ba标题时gydF4y2Ba显示gydF4y2Ba选项设置为gydF4y2Ba“通路”gydF4y2Ba与gydF4y2BaoptimoptionsgydF4y2Ba,参见gydF4y2BaSQP实现gydF4y2Ba.欲知更多详情,请参阅gydF4y2BafseminfgydF4y2Ba算法,看到gydF4y2Bafsemf问题的表述与算法gydF4y2Ba.gydF4y2Ba

R2006a之前介绍gydF4y2Ba

这个话题有帮助吗?gydF4y2Ba