主要内容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 = fseminf(有趣,x0, ntheta seminfcon)gydF4y2Ba
x = fseminf(有趣,x0, ntheta seminfcon, A, b)gydF4y2Ba
x = fseminf(有趣,x0, ntheta seminfcon, A, b, Aeq, beq)gydF4y2Ba
x = fseminf(有趣,x0, ntheta seminfcon, A, b, Aeq,说真的,磅,乌兰巴托)gydF4y2Ba
x = fseminf(有趣,x0, ntheta seminfcon, A, b, Aeq,说真的,磅,乌兰巴托,选项)gydF4y2Ba
x = fseminf(问题)gydF4y2Ba
[x, fval] = fseminf(…)gydF4y2Ba
[x, fval exitflag] = fseminf(…)gydF4y2Ba
[x, fval exitflag、输出]= fseminf(…)gydF4y2Ba
[x, fval exitflag、输出λ)= fseminf(…)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 = fseminf(有趣,x0, ntheta seminfcon)gydF4y2Ba起价gydF4y2Bax0gydF4y2Ba求函数的最小值gydF4y2Ba有趣的gydF4y2Ba受到gydF4y2BanthetagydF4y2Ba中定义的半无限约束gydF4y2BaseminfcongydF4y2Ba.gydF4y2Ba

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

x = fseminf(有趣,x0, ntheta seminfcon, A, b, Aeq, beq)gydF4y2Ba最小值服从线性等式gydF4y2BaAeq * x =说真的gydF4y2Ba也集gydF4y2Ba一个= []gydF4y2Ba和gydF4y2Bab = []gydF4y2Ba如果不存在不平等。gydF4y2Ba

x = fseminf(有趣,x0, ntheta seminfcon, A, b, Aeq,说真的,磅,乌兰巴托)gydF4y2Ba中的设计变量定义一组上下限gydF4y2BaxgydF4y2Ba,所以解总是在这个范围内gydF4y2Ba磅gydF4y2Ba≤gydF4y2BaxgydF4y2Ba≤gydF4y2Ba乌兰巴托gydF4y2Ba.gydF4y2Ba

请注意gydF4y2Ba

看到gydF4y2Ba迭代会违反约束gydF4y2Ba.gydF4y2Ba

x = fseminf(有趣,x0, ntheta seminfcon, A, b, Aeq,说真的,磅,乌兰巴托,选项)gydF4y2Ba中指定的优化选项最小化gydF4y2Ba选项gydF4y2Ba.使用gydF4y2BaoptimoptionsgydF4y2Ba设置这些选项。gydF4y2Ba

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

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

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

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

[x, fval exitflag、输出λ)= fseminf(…)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

在哪里gydF4y2BamyfungydF4y2BaMATLAB是一种gydF4y2Ba®gydF4y2Ba等功能gydF4y2Ba

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

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

有趣= @ (x) sin (x " * x);gydF4y2Ba

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

选择= optimoptions(‘fseminf’,‘SpecifyObjectiveGradient’,真的)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我gydF4y2Bath排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

因为最优化工具箱™函数只接受类型的输入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选项。麦克斯特ations或超过函数求值次数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

为gydF4y2BaoptimsetgydF4y2Ba,名字是gydF4y2BaDerivativeCheckgydF4y2Ba这些值是gydF4y2Ba“上”gydF4y2Ba或gydF4y2Ba“关闭”gydF4y2Ba.看到gydF4y2Ba当前和遗留选项名称gydF4y2Ba.gydF4y2Ba

ConstraintTolerancegydF4y2Ba

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

为gydF4y2BaoptimsetgydF4y2Ba,名字是gydF4y2BaTolCongydF4y2Ba.看到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(default)只显示最终输出,并给出默认的退出消息。gydF4y2Ba

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

FiniteDifferenceStepSizegydF4y2Ba

有限差分的标量或向量步长因子。当您设置gydF4y2BaFiniteDifferenceStepSizegydF4y2Ba一个向量gydF4y2BavgydF4y2Ba,正有限差分gydF4y2BaδgydF4y2Ba是gydF4y2Ba

δ= v *标志的(x) *马克斯(abs (x)、TypicalX);gydF4y2Ba

在哪里gydF4y2Ba符号“(x) =符号(x)gydF4y2Ba除了gydF4y2Ba标志' (0)= 1gydF4y2Ba.中心有限差分是gydF4y2Ba

δ= v *马克斯(abs (x)、TypicalX);gydF4y2Ba

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

为gydF4y2BaoptimsetgydF4y2Ba,名字是gydF4y2BaFinDiffRelStepgydF4y2Ba.看到gydF4y2Ba当前和遗留选项名称gydF4y2Ba.gydF4y2Ba

FiniteDifferenceTypegydF4y2Ba

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

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

为gydF4y2BaoptimsetgydF4y2Ba,名字是gydF4y2BaFinDiffTypegydF4y2Ba.看到gydF4y2Ba当前和遗留选项名称gydF4y2Ba.gydF4y2Ba

FunctionTolerancegydF4y2Ba

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

为gydF4y2BaoptimsetgydF4y2Ba,名字是gydF4y2BaTolFungydF4y2Ba.看到gydF4y2Ba当前和遗留选项名称gydF4y2Ba.gydF4y2Ba

FunValCheckgydF4y2Ba

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

MaxFunctionEvaluationsgydF4y2Ba

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

为gydF4y2BaoptimsetgydF4y2Ba,名字是gydF4y2BaMaxFunEvalsgydF4y2Ba.看到gydF4y2Ba当前和遗留选项名称gydF4y2Ba.gydF4y2Ba

MaxIterationsgydF4y2Ba

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

为gydF4y2BaoptimsetgydF4y2Ba,名字是gydF4y2Ba麦克斯特gydF4y2Ba.看到gydF4y2Ba当前和遗留选项名称gydF4y2Ba.gydF4y2Ba

MaxSQPItergydF4y2Ba

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

OptimalityTolerancegydF4y2Ba

一阶最优性的终止容限(正标量)。默认值是gydF4y2Ba1 e-6gydF4y2Ba.看到gydF4y2Ba一阶最优性测量gydF4y2Ba.gydF4y2Ba

为gydF4y2BaoptimsetgydF4y2Ba,名字是gydF4y2BaTolFungydF4y2Ba.看到gydF4y2Ba当前和遗留选项名称gydF4y2Ba.gydF4y2Ba

OutputFcngydF4y2Ba

指定优化函数在每次迭代时调用的一个或多个用户定义函数。传递一个函数句柄或函数句柄的单元格数组。默认为none (gydF4y2Ba[]gydF4y2Ba).看到gydF4y2Ba输出函数和绘图函数语法gydF4y2Ba.gydF4y2Ba

PlotFcngydF4y2Ba

绘制算法执行时的各种进度度量;从预定义的情节中选择或编写您自己的。传递名称、函数句柄或由名称或函数句柄组成的单元格数组。对于定制的绘图函数,传递函数句柄。默认为none (gydF4y2Ba[]gydF4y2Ba):gydF4y2Ba

  • “optimplotx”gydF4y2Ba绘制当前点。gydF4y2Ba

  • “optimplotfunccount”gydF4y2Ba绘制函数计数。gydF4y2Ba

  • “optimplotfval”gydF4y2Ba绘制函数值。gydF4y2Ba

  • “optimplotfvalconstr”gydF4y2Ba将找到的最佳可行目标函数值绘制成线图。该图以红色表示不可行点,以蓝色表示可行点,使用的可行性公差为gydF4y2Ba1 e-6gydF4y2Ba.gydF4y2Ba

  • “optimplotconstrviolation”gydF4y2Ba绘制最大约束违背。gydF4y2Ba

  • “optimplotstepsize”gydF4y2Ba绘制步长。gydF4y2Ba

  • “optimplotfirstorderopt”gydF4y2Ba绘制一阶最优测度。gydF4y2Ba

自定义绘图函数使用与输出函数相同的语法。看到gydF4y2Ba优化工具箱的输出函数gydF4y2Ba和gydF4y2Ba输出函数和绘图函数语法gydF4y2Ba.gydF4y2Ba

为gydF4y2BaoptimsetgydF4y2Ba,名字是gydF4y2BaPlotFcnsgydF4y2Ba.看到gydF4y2Ba当前和遗留选项名称gydF4y2Ba.gydF4y2Ba

RelLineSrchBndgydF4y2Ba

直线搜索步长上的相对界(一个实非负标量值),使总位移在gydF4y2BaxgydF4y2Ba满足gydF4y2Ba|ΔgydF4y2BaxgydF4y2Ba(gydF4y2Ba我gydF4y2Ba)|≤relLineSrchBnd·max(| . b0gydF4y2BaxgydF4y2Ba(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

为gydF4y2BaoptimsetgydF4y2Ba,名字是gydF4y2BaGradObjgydF4y2Ba这些值是gydF4y2Ba“上”gydF4y2Ba或gydF4y2Ba“关闭”gydF4y2Ba.看到gydF4y2Ba当前和遗留选项名称gydF4y2Ba.gydF4y2Ba

StepTolerancegydF4y2Ba

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

为gydF4y2BaoptimsetgydF4y2Ba,名字是gydF4y2BaTolXgydF4y2Ba.看到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

这个例子使函数最小化gydF4y2Ba

(gydF4y2Ba xgydF4y2Ba -gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 2gydF4y2Ba ,gydF4y2Ba

受约束gydF4y2Ba

0gydF4y2Ba ≤gydF4y2Ba xgydF4y2Ba ≤gydF4y2Ba 2gydF4y2Ba

ggydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba (gydF4y2Ba xgydF4y2Ba -gydF4y2Ba 1gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba -gydF4y2Ba (gydF4y2Ba tgydF4y2Ba -gydF4y2Ba 1gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba 2gydF4y2Ba ≤gydF4y2Ba 0gydF4y2Ba 对所有gydF4y2Ba 0gydF4y2Ba ≤gydF4y2Ba tgydF4y2Ba ≤gydF4y2Ba 1gydF4y2Ba .gydF4y2Ba

无约束目标函数在gydF4y2Ba xgydF4y2Ba =gydF4y2Ba 1gydF4y2Ba .然而,约束gydF4y2Ba

ggydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba ≤gydF4y2Ba 0gydF4y2Ba 对所有gydF4y2Ba 0gydF4y2Ba ≤gydF4y2Ba tgydF4y2Ba ≤gydF4y2Ba 1gydF4y2Ba

意味着gydF4y2Ba xgydF4y2Ba ≤gydF4y2Ba 1gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba .请注意,gydF4y2Ba (gydF4y2Ba tgydF4y2Ba - - - - - -gydF4y2Ba 1gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba 2gydF4y2Ba ≥gydF4y2Ba 0gydF4y2Ba ,所以gydF4y2Ba

马克斯gydF4y2Ba tgydF4y2Ba ggydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba xgydF4y2Ba -gydF4y2Ba 1gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba .gydF4y2Ba

因此,gydF4y2Ba

马克斯gydF4y2Ba tgydF4y2Ba ggydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba ≤gydF4y2Ba 0gydF4y2Ba 当gydF4y2Ba xgydF4y2Ba ≤gydF4y2Ba 1gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba .gydF4y2Ba

解决这个问题使用gydF4y2BafseminfgydF4y2Ba,将目标函数写成匿名函数。gydF4y2Ba

objfun = @ (x) (x - 1) ^ 2;gydF4y2Ba

写出半无限约束函数gydF4y2BaseminfcongydF4y2Ba,其中包括非线性约束(本例为[]),初始采样区间为gydF4y2Ba tgydF4y2Ba (在本例中,步数为0.01的0到1)和半无限约束函数gydF4y2Ba ggydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba .的代码gydF4y2BaseminfcongydF4y2Ba函数出现在gydF4y2Ba这个例子到此结束gydF4y2Ba.gydF4y2Ba

设定起始点gydF4y2Bax0 = 0.2gydF4y2Ba.gydF4y2Ba

x0 = 0.2;gydF4y2Ba

指定一个半无限约束。gydF4y2Ba

ntheta = 1;gydF4y2Ba

通过打电话来解决问题gydF4y2BafseminfgydF4y2Ba并查看结果。gydF4y2Ba

x = fseminf (objfun x0、ntheta @seminfcon)gydF4y2Ba
找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。gydF4y2Ba
x = 0.5000gydF4y2Ba

下面的代码创建gydF4y2BaseminfcongydF4y2Ba函数。gydF4y2Ba

函数gydF4y2Ba[c, ceq, K1, s] = seminfcon(x,s)gydF4y2Ba没有有限非线性不等式和等式约束gydF4y2Bac = [];测查= [];gydF4y2Ba%样本集gydF4y2Ba如果gydF4y2Baisnan (s)gydF4y2Ba初始抽样间隔gydF4y2BaS = [0.01 0];gydF4y2Ba结束gydF4y2Bat = 0: (1): 1;gydF4y2Ba%求半无限约束gydF4y2BaK1 = (x - 0.5) - (t - 0.5) ^2;gydF4y2Ba结束gydF4y2Ba

限制gydF4y2Ba

要最小化的函数、约束条件和半无限约束条件,必须是连续的函数gydF4y2BaxgydF4y2Ba和gydF4y2BawgydF4y2Ba.gydF4y2BafseminfgydF4y2Ba可能只给出局部解决方案。万博 尤文图斯gydF4y2Ba

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

算法gydF4y2Ba

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

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

有关所使用的算法和显示的程序类型的详细信息gydF4y2Ba程序gydF4y2Ba标题的时候gydF4y2Ba显示gydF4y2Ba选项设置为gydF4y2Ba“通路”gydF4y2Ba与gydF4y2BaoptimoptionsgydF4y2Ba,看到也gydF4y2BaSQP实现gydF4y2Ba.有关的详细资料gydF4y2BafseminfgydF4y2Ba算法,看到gydF4y2Ba问题的表述和算法gydF4y2Ba.gydF4y2Ba

之前介绍过的R2006agydF4y2Ba