fseminfgydF4y2Ba
求半无限约束多变量非线性函数的最小值gydF4y2Ba
方程gydF4y2Ba
查找指定的问题的最小值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
注意:gydF4y2Ba看到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如果问题的指定输入边界不一致,则输出gydF4y2Ba |
输入参数gydF4y2Ba
函数输入参数gydF4y2Ba包含传入参数的一般描述gydF4y2BafseminfgydF4y2Ba
.本节提供与函数相关的详细信息gydF4y2Ba有趣的gydF4y2Ba
,gydF4y2BanthetagydF4y2Ba
,gydF4y2Ba选项gydF4y2Ba
,gydF4y2BaseminfcongydF4y2Ba
,gydF4y2Ba问题gydF4y2Ba
:gydF4y2Ba
|
要最小化的函数。gydF4y2Ba X = fseminf(@myfun,x0,ntheta,seminfcon)gydF4y2Ba 在哪里gydF4y2Ba 函数f = myfun(x) f =…计算函数在x处的值gydF4y2Ba
Fun = @(x)sin(x " *x);gydF4y2Ba 如果的梯度gydF4y2Ba options = optimoptions(' fsemf ',' specificyobjectivegradient ',true)gydF4y2Ba 然后是函数gydF4y2Ba |
||
nthetagydF4y2Ba |
半无限约束的数目。gydF4y2Ba |
||
选项gydF4y2Ba |
选项gydF4y2Ba控件的特定于函数的详细信息gydF4y2Ba |
||
|
计算非线性不等式约束向量的函数,gydF4y2Ba X = fseminf(@myfun,x0,ntheta,@myinfcon)gydF4y2Ba 在哪里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 |
||
问题gydF4y2Ba |
|
目标函数gydF4y2Ba | |
|
起始点gydF4y2BaxgydF4y2Ba |
||
nthetagydF4y2Ba |
半无限约束的数目gydF4y2Ba | ||
seminfcongydF4y2Ba |
半无限约束函数gydF4y2Ba | ||
|
线性不等式约束矩阵gydF4y2Ba | ||
|
线性不等式约束的向量gydF4y2Ba | ||
|
矩阵的线性等式约束gydF4y2Ba | ||
|
线性等式约束的向量gydF4y2Ba | ||
磅gydF4y2Ba |
下界向量gydF4y2Ba | ||
乌兰巴托gydF4y2Ba |
上界向量gydF4y2Ba | ||
|
“fseminf”gydF4y2Ba |
||
|
创建的选项gydF4y2BaoptimoptionsgydF4y2Ba |
输出参数gydF4y2Ba
函数输入参数gydF4y2Ba返回的参数的一般描述gydF4y2BafseminfgydF4y2Ba
.本节提供与函数相关的详细信息gydF4y2BaexitflaggydF4y2Ba
,gydF4y2BaλgydF4y2Ba
,gydF4y2Ba输出gydF4y2Ba
:gydF4y2Ba
|
标识算法终止原因的整数。的值如下所示gydF4y2Ba |
|
|
函数收敛到一个解gydF4y2Ba |
|
|
搜索方向的大小小于指定公差,约束违反小于gydF4y2Ba |
|
|
方向导数的大小小于规定的公差,约束违反小于gydF4y2Ba |
|
|
超过的迭代次数gydF4y2Ba |
|
|
算法被输出函数终止。gydF4y2Ba |
|
|
没有找到可行的点。gydF4y2Ba |
|
|
在解处包含拉格朗日乘子的结构gydF4y2Ba |
|
较低的gydF4y2Ba |
下界gydF4y2Ba |
|
上gydF4y2Ba |
上界gydF4y2Ba |
|
ineqlingydF4y2Ba |
线性不等式gydF4y2Ba |
|
eqlingydF4y2Ba |
线性等式gydF4y2Ba |
|
ineqnonlingydF4y2Ba |
非线性不等式gydF4y2Ba |
|
eqnonlingydF4y2Ba |
非线性等式gydF4y2Ba |
|
|
结构,其中包含有关优化的信息。结构的字段是gydF4y2Ba |
|
迭代gydF4y2Ba |
所进行的迭代次数gydF4y2Ba |
|
funcCountgydF4y2Ba |
函数求值次数gydF4y2Ba |
|
lssteplengthgydF4y2Ba |
相对于搜索方向的线搜索步长gydF4y2Ba |
|
stepsizegydF4y2Ba |
最终排水量gydF4y2Ba |
|
算法gydF4y2Ba |
使用的优化算法gydF4y2Ba |
|
constrviolationgydF4y2Ba |
约束函数的最大值gydF4y2Ba |
|
firstorderoptgydF4y2Ba |
一阶最优性的度量gydF4y2Ba |
|
消息gydF4y2Ba |
退出消息gydF4y2Ba |
选项gydF4y2Ba
使用的优化选项gydF4y2BafseminfgydF4y2Ba
.使用gydF4y2BaoptimoptionsgydF4y2Ba
设置或更改gydF4y2Ba选项gydF4y2Ba
.看到gydF4y2Ba优化选项参考gydF4y2Ba详细信息。gydF4y2Ba
中缺少一些选项gydF4y2BaoptimoptionsgydF4y2Ba
显示。这些选项以斜体列出。详细信息请参见gydF4y2Ba视图选项gydF4y2Ba.gydF4y2Ba
|
比较用户提供的导数(目标或约束的梯度)和有限差分导数。选择是gydF4y2Ba |
ConstraintTolerancegydF4y2Ba |
约束违反上的终止容限,一个正标量。默认值为gydF4y2Ba |
诊断gydF4y2Ba | 显示要最小化或解决的功能的诊断信息。选择是gydF4y2Ba |
DiffMaxChangegydF4y2Ba | 有限差分梯度变量的最大变化(正标量)。默认值为gydF4y2Ba |
DiffMinChangegydF4y2Ba | 有限差分梯度变量的最小变化(正标量)。默认值为gydF4y2Ba |
显示gydF4y2Ba |
显示水平(见gydF4y2Ba迭代显示gydF4y2Ba):gydF4y2Ba
|
FiniteDifferenceStepSizegydF4y2Ba |
有限差分的标量或矢量步长因子。当你设定gydF4y2Ba
在哪里gydF4y2Ba
标量gydF4y2Ba |
FiniteDifferenceTypegydF4y2Ba |
有限差分,用于估计梯度,要么gydF4y2Ba 该算法在估计两种类型的有限差分时小心地服从边界。例如,它可以取一个向后的,而不是向前的差值来避免在边界外的点求值。gydF4y2Ba |
FunctionTolerancegydF4y2Ba |
终止容差上的函数值,为正标量。默认值为gydF4y2Ba |
FunValCheckgydF4y2Ba | 检查目标函数和约束值是否有效。gydF4y2Ba |
MaxFunctionEvaluationsgydF4y2Ba |
允许的函数求值的最大次数,一个正整数。默认值为gydF4y2Ba |
MaxIterationsgydF4y2Ba |
允许的最大迭代次数,一个正整数。默认值为gydF4y2Ba |
MaxSQPItergydF4y2Ba | 允许的SQP迭代的最大次数,一个正整数。默认值为gydF4y2Ba |
OptimalityTolerancegydF4y2Ba |
一阶最优性上的终止容限,一个正标量。默认值为gydF4y2Ba |
OutputFcngydF4y2Ba |
指定优化函数在每次迭代时调用的一个或多个用户定义函数,可以作为函数句柄,也可以作为函数句柄的单元格数组。默认值为none (gydF4y2Ba |
PlotFcngydF4y2Ba |
在算法执行时绘制各种进度度量,从预定义的绘图中选择或编写自己的绘图。传递一个函数句柄或函数句柄的单元数组。默认值为none (gydF4y2Ba
有关编写自定义绘图函数的信息,请参见gydF4y2Ba绘制函数gydF4y2Ba.gydF4y2Ba |
RelLineSrchBndgydF4y2Ba | 相对边界(一个实数非负标量值)上的直线搜索步长使得总位移在gydF4y2Ba |
RelLineSrchBndDurationgydF4y2Ba | 中指定边界的迭代次数gydF4y2Ba |
SpecifyObjectiveGradientgydF4y2Ba |
用户定义的目标函数的梯度。参见前面的描述gydF4y2Ba |
StepTolerancegydF4y2Ba |
终止公差gydF4y2Ba |
TolConSQPgydF4y2Ba | 内部迭代SQP约束违反的终止容限,一个正标量。默认值为gydF4y2Ba |
TypicalXgydF4y2Ba |
典型的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
将目标函数写成匿名函数:gydF4y2Ba
Objfun = @(x)(x-1)^2;gydF4y2Ba
写出半无限约束函数,其中包含非线性约束(本例中为[]),初始采样区间为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
调用gydF4y2Ba
fseminfgydF4y2Ba
初始点为0.2,并查看结果:gydF4y2Bax = 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
另请参阅gydF4y2Ba
fmincongydF4y2Ba
|gydF4y2BaoptimoptionsgydF4y2Ba
|gydF4y2BaoptimtoolgydF4y2Ba
主题gydF4y2Ba
- 创建函数句柄gydF4y2Ba(MATLAB)gydF4y2Ba
- fsemf问题的表述与算法gydF4y2Ba
- 约束优化gydF4y2Ba