所有算法 |
Algorithm | 选择优化算法: 有关选择算法的信息,请参阅选择算法。 trust-region-reflective 算法要求:
如果您选择 'trust-region-reflective' 算法,但这些条件无法全部得到满足,fmincon 会引发错误。 'active-set' 、'sqp-legacy' 和 'sqp' 算法不是大规模算法。请参阅大规模算法与中等规模算法。
|
CheckGradients | 将用户提供的导数(目标或约束的梯度)与有限差分导数进行比较。选项是 false (默认值)或 true 。
对于 optimset ,名称为 DerivativeCheck ,值为 'on' 或 'off' 。请参阅当前选项名称和旧选项名称表。 |
ConstraintTolerance | 约束违反度度容差;正标量。默认值为 1e-6 。请参阅容差和停止条件。 对于 optimset ,名称是 TolCon 。请参阅当前选项名称和旧选项名称表。 |
Diagnostics | 显示关于要最小化或求解的函数的诊断信息。选项是 'off' (默认值)或 'on' 。 |
DiffMaxChange | 有限差分梯度变量的最大变化(正标量)。默认值为 Inf 。 |
DiffMinChange | 有限差分梯度变量的最小变化(正标量)。默认值为 0 。 |
Display | 显示级别(请参阅迭代输出):
'off' 或 'none' 不显示输出。
'iter' 显示每次迭代的输出,并给出默认退出消息。
'iter-detailed' 显示每次迭代的输出,并给出带有技术细节的退出消息。
'notify' 仅当函数不收敛时才显示输出,并给出默认退出消息。
'notify-detailed' 仅当函数不收敛时才显示输出,并给出技术性退出消息。
'final' (默认值)仅显示最终输出,并给出默认退出消息。
'final-detailed' 仅显示最终输出,并给出带有技术细节的退出消息。
|
FiniteDifferenceStepSize |
有限差分的标量或向量步长大小因子。当您将 FiniteDifferenceStepSize 设置为向量 v 时,前向有限差分 delta 是 delta = v.*sign′(x).*max(abs(x),TypicalX);
其中 sign′(x) = sign(x) (例外是 sign′(0) = 1 )。中心有限差分是 delta = v.*max(abs(x),TypicalX);
标量 FiniteDifferenceStepSize 扩展为向量。对于正向有限差分,默认值为 sqrt(eps) ;对于中心有限差分,默认值为 eps^(1/3) 。
对于 optimset ,名称是 FinDiffRelStep 。请参阅当前选项名称和旧选项名称表。 |
FiniteDifferenceType | 用于估计梯度的有限差分,可以是 'forward' (默认值)或 'central' (中心化)。'central' 需要两倍的函数计算次数,但一般更为准确。仅当 CheckGradients 设置为 true 时,信赖域反射算法才使用 FiniteDifferenceType 。 当同时估计这两种类型的有限差分时,fmincon 小心地遵守边界。因此,例如,为了避免在边界之外的某个点进行计算,它可能采取一个后向差分,而不是前向差分。但是,对于 interior-point 算法,如果 HonorBounds 选项设置为 false ,则 'central' 差分可能会在计算过程中违反边界。
对于 optimset ,名称是 FinDiffType 。请参阅当前选项名称和旧选项名称表。 |
FunValCheck | 检查目标函数值是否有效。默认设置 'off' 不执行检查。当目标函数返回的值是 complex 、Inf 或 NaN 时,'on' 设置显示错误。 |
MaxFunctionEvaluations | 允许的函数计算的最大次数,为正整数。除 interior-point 外,所有算法的默认值均为 100*numberOfVariables ;对于 interior-point 算法,默认值为 3000 。请参阅容差和停止条件和迭代和函数计算次数。
对于 optimset ,名称是 MaxFunEvals 。请参阅当前选项名称和旧选项名称表。 |
MaxIterations | 允许的迭代最大次数,为正整数。除 interior-point 外,所有算法的默认值均为 400 ;对于 interior-point 算法,默认值为 1000 。请参阅容差和停止条件和迭代和函数计算次数。
对于 optimset ,名称是 MaxIter 。请参阅当前选项名称和旧选项名称表。 |
OptimalityTolerance |
一阶最优性的终止容差(正标量)。默认值为 1e-6 。请参阅一阶最优性度量。
对于 optimset ,名称是 TolFun 。请参阅当前选项名称和旧选项名称表。 |
OutputFcn | 指定优化函数在每次迭代中调用的一个或多个用户定义的函数。传递函数句柄或函数句柄的元胞数组。默认值是“无”([] )。请参阅Output Function and Plot Function Syntax。 |
PlotFcn | 对算法执行过程中的各种进度测量值绘图,可以选择预定义的绘图,也可以自行编写绘图函数。传递内置绘图函数名称、函数句柄或由内置绘图函数名称或函数句柄组成的元胞数组。对于自定义绘图函数,传递函数句柄。默认值是“无”([] ):
'optimplotx' 绘制当前点
'optimplotfunccount' 绘制函数计数
'optimplotfval' 绘制函数值
'optimplotfvalconstr' 将找到的最佳可行目标函数值绘制为线图。该图将不可行点显示为红色,可行点显示为蓝色,使用的可行性容差为 1e-6 。
'optimplotconstrviolation' 绘制最大值约束违反度
'optimplotstepsize' 绘制步长大小
'optimplotfirstorderopt' 绘制一阶最优性度量
自定义绘图函数使用与输出函数相同的语法。请参阅Output Functions for Optimization Toolbox™和Output Function and Plot Function Syntax。 对于 optimset ,名称是 PlotFcns 。请参阅当前选项名称和旧选项名称表。 |
SpecifyConstraintGradient | 用户定义的非线性约束函数梯度。当设置为默认值 false 时,fmincon 通过有限差分估计非线性约束的梯度。当设置为 true 时,fmincon 预计约束函数有四个输出,如 nonlcon 中所述。trust-region-reflective 算法不接受非线性约束。
对于 optimset ,名称为 GradConstr ,值为 'on' 或 'off' 。请参阅当前选项名称和旧选项名称表。 |
SpecifyObjectiveGradient | 用户定义的目标函数梯度。请参阅 fun 的说明,了解如何在 fun 中定义梯度。设置为默认值 false 会导致 fmincon 使用有限差分来估计梯度。设置为 true ,以使 fmincon 采用用户定义的目标函数梯度。要使用 'trust-region-reflective' 算法,您必须提供梯度,并将 SpecifyObjectiveGradient 设置为 true 。
对于 optimset ,名称为 GradObj ,值为 'on' 或 'off' 。请参阅当前选项名称和旧选项名称表。 |
StepTolerance | 关于正标量 x 的终止容差。除 'interior-point' 外,所有算法的默认值均为 1e-6 ;对于 'interior-point' 算法,默认值为 1e-10 。请参阅容差和停止条件。
对于 optimset ,名称是 TolX 。请参阅当前选项名称和旧选项名称表。 |
TypicalX | 典型的 x 值。TypicalX 中的元素数等于 x0 (即起点)中的元素数。默认值为 ones(numberofvariables,1) 。fmincon 使用 TypicalX 缩放有限差分来进行梯度估计。 'trust-region-reflective' 算法仅对 CheckGradients 选项使用 TypicalX 。
|
UseParallel | 此选项为 true 时,fmincon 以并行方式估计梯度。设置为默认值 false 将禁用此功能。trust-region-reflective 要求目标中有梯度,因此 UseParallel 不适用。请参阅并行计算。 |
信赖域反射算法 |
FunctionTolerance | 关于函数值的终止容差,为正标量。默认值为 1e-6 。请参阅容差和停止条件。
对于 optimset ,名称是 TolFun 。请参阅当前选项名称和旧选项名称表。 |
HessianFcn | 如果为 [] (默认值),则 fmincon 使用有限差分逼近 Hessian 矩阵,或使用 Hessian 矩阵乘法函数(通过选项 HessianMultiplyFcn )。如果为 'objective' ,则 fmincon 使用用户定义的 Hessian 矩阵(在 fun 中定义)。请参阅 作为输入的 Hessian 矩阵。
对于 optimset ,名称是 HessFcn 。请参阅当前选项名称和旧选项名称表。 |
HessianMultiplyFcn | Hessian 矩阵乘法函数,指定为函数句柄。对于大规模结构问题,此函数计算 Hessian 矩阵乘积 H*Y ,而并不实际构造 H 。函数的形式是 其中 Hinfo 包含用于计算 H*Y 的矩阵。 上述第一个参数与目标函数 fun 返回的第三个参数相同,例如 Y 是矩阵,其行数与问题中的维数相同。矩阵 W =
H*Y (其中 H 未显式构造)。fmincon 使用 Hinfo 计算预条件子。要了解如何为 hmfun 所需的额外参数提供值的信息,请参阅传递额外参数。
注意 要使用 HessianMultiplyFcn 选项,HessianFcn 必须设置为 [] ,且 SubproblemAlgorithm 必须为 'cg' (默认值)。 请参阅 Hessian 矩阵乘法函数。有关示例,请参阅Minimization with Dense Structured Hessian, Linear Equalities。 对于 optimset ,名称是 HessMult 。请参阅当前选项名称和旧选项名称表。 |
HessPattern | 用于有限差分的 Hessian 矩阵稀疏模式。如果存在 ∂2fun /∂x(i) ∂x(j) ≠ 0,则设置 HessPattern(i,j) = 1 。否则,设置 HessPattern(i,j)
= 0 。 如果不方便在 fun 中计算 Hessian 矩阵 H ,但您可以确定(例如,通过检查)fun 的梯度的第 i 个分量何时依赖 x(j) ,请使用 HessPattern 。如果您提供 H 的稀疏结构作为 HessPattern 的值,fmincon 可以通过稀疏有限差分(梯度)逼近 H 。这相当于提供非零元的位置。 当结构未知时,不要设置 HessPattern 。默认行为是将 HessPattern 视为由 1 组成的稠密矩阵。然后,fmincon 在每次迭代中计算满有限差分逼近。对于大型问题,这种计算可能成本非常高昂,因此通常最好确定稀疏结构。 |
MaxPCGIter | 预条件共轭梯度 (PCG) 迭代的最大次数,正标量。对于边界约束问题,默认值为 max(1,floor(numberOfVariables/2)) ;对于等式约束问题,默认值为 numberOfVariables 。有关详细信息,请参阅预条件共轭梯度法。 |
PrecondBandWidth | PCG 的预条件子上带宽,非负整数。默认情况下,使用对角预条件(上带宽为 0)。对于某些问题,增加带宽会减少 PCG 迭代次数。将 PrecondBandWidth 设置为 Inf 会使用直接分解 (Cholesky),而不是共轭梯度 (CG)。直接分解的计算成本较 CG 高,但所得的求解步质量更好。 |
SubproblemAlgorithm | 确定迭代步的计算方式。与 'factorization' 相比,默认值 'cg' 采用的步执行速度更快,但不够准确。请参阅 fmincon 信赖域反射算法。 |
TolPCG | PCG 迭代的终止容差,正标量。默认值为 0.1 。 |
活动集算法 |
FunctionTolerance | 关于函数值的终止容差,为正标量。默认值为 1e-6 。请参阅容差和停止条件。
对于 optimset ,名称是 TolFun 。请参阅当前选项名称和旧选项名称表。 |
MaxSQPIter | 允许的 SQP 迭代最大次数,正整数。默认值为 10*max(numberOfVariables,
numberOfInequalities + numberOfBounds) 。 |
RelLineSrchBnd | 线搜索步长的相对边界(非负实数标量值)。x 中的总位移满足 |Δx(i)| ≤ relLineSrchBnd· max(|x(i)|,|typicalx(i)|)。当认为求解器采取的步过大时,可使用此选项控制 x 中位移的模。默认值为无边界 ([] )。 |
RelLineSrchBndDuration | RelLineSrchBnd 所指定的边界应处于活动状态的迭代次数(默认值为 1 )。
|
TolConSQP | 内部迭代 SQP 约束违反度的终止容差,正标量。默认值为 1e-6 。 |
内点算法 |
HessianApproximation | 选择 fmincon 计算 Hessian 矩阵的方法(请参阅作为输入的 Hessian 矩阵)。选项包括: 注意 要使用 HessianApproximation ,HessianFcn 和 HessianMultiplyFcn 都必须为空 ([] )。
对于 optimset ,名称为 Hessian ,值为 'user-supplied' 、'bfgs' 、'lbfgs' 、'fin-diff-grads' 、'on' 或 'off' 。请参阅当前选项名称和旧选项名称表。 |
HessianFcn | 如果为 [] (默认值),则 fmincon 使用有限差分逼近 Hessian 矩阵,或使用提供的 HessianMultiplyFcn 。如果为函数句柄,则 fmincon 使用 HessianFcn 来计算 Hessian 矩阵。请参阅 作为输入的 Hessian 矩阵。 对于 optimset ,名称是 HessFcn 。请参阅当前选项名称和旧选项名称表。 |
HessianMultiplyFcn | 用户提供的函数,它给出 Hessian 矩阵乘以向量的乘积(请参阅Hessian 矩阵乘法函数)。传递函数句柄。 注意 要使用 HessianMultiplyFcn 选项,HessianFcn 必须设置为 [] 且 SubproblemAlgorithm 必须为 'cg' 。 对于 optimset ,名称是 HessMult 。请参阅当前选项名称和旧选项名称表。 |
HonorBounds | 默认值 true 确保每次迭代都满足边界约束。通过设置为 false 来禁用。
对于 optimset ,名称为 AlwaysHonorConstraints ,值为 'bounds' 或 'none' 。请参阅当前选项名称和旧选项名称表。 |
InitBarrierParam | 初始障碍值,正标量。有时尝试高于默认值 0.1 的值可能会有所帮助,尤其是当目标或约束函数很大时。 |
InitTrustRegionRadius | 信赖域的初始半径,正标量。对于未正确缩放的问题,选择小于默认值 的值可能会有所帮助,其中 n 是变量的数目。 |
MaxProjCGIter | 投影共轭梯度迭代次数的容差(停止条件);这是内部迭代,而不是算法的迭代次数。它是一个正整数,默认值为 2*(numberOfVariables - numberOfEqualities) 。 |
ObjectiveLimit | 容差(停止条件),标量。如果目标函数值低于 ObjectiveLimit 并且迭代可行,则迭代停止,因为问题很可能是无界的。默认值为 -1e20 。 |
ScaleProblem | true 使算法对所有约束和目标函数进行归一化。要禁用,请设置为默认值 false 。
对于 optimset ,值为 'obj-and-constr' 或 'none' 。请参阅当前选项名称和旧选项名称表。 |
SubproblemAlgorithm | 确定迭代步的计算方式。默认值 'factorization' 通常比 'cg' (共轭梯度)更快,但对于具有稠密 Hessian 矩阵的大型问题,'cg' 可能更快。请参阅 fmincon 内点算法。 |
TolProjCG | 投影共轭梯度算法的相对容差(停止条件);它针对内部迭代,而不是算法迭代。它是一个正标量,默认值为 0.01 。 |
TolProjCGAbs | 投影共轭梯度算法的绝对容差(停止条件);它针对内部迭代,而不是算法迭代。它是一个正标量,默认值为 1e-10 。 |
SQP 和 SQP 传统算法 |
ObjectiveLimit | 容差(停止条件),标量。如果目标函数值低于 ObjectiveLimit 并且迭代可行,则迭代停止,因为问题很可能是无界的。默认值为 -1e20 。 |
ScaleProblem |
true 使算法对所有约束和目标函数进行归一化。要禁用,请设置为默认值 false 。
对于 optimset ,值为 'obj-and-constr' 或 'none' 。请参阅当前选项名称和旧选项名称表。
|