Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

优化选项参考

优化选项

下表说明优化选项。使用 optimoptions 函数或 optimsetfminbndfminsearchfzerolsqnonneg 创建选项。

有关可用选项值和默认值的信息,请参阅各个函数参考页。

选项的默认值因您使用 options 作为输入参数调用的具体优化函数而异。您可以通过输入 optimoptions('solvername') 或等效的 optimoptions(@solvername) 来确定任何优化函数的默认选项值。例如,

optimoptions('fmincon')

返回一个选项列表和默认 'interior-point' fmincon 算法的默认值。要查找另一个 fmincon 算法的默认值,请设置 Algorithm 选项。例如,

opts = optimoptions('fmincon','Algorithm','sqp')

optimoptions 会“隐藏”一些选项,这意味着它不显示这些选项的值。这些选项不会出现在此表中。但它们会出现在隐藏选项中。

优化选项

选项名称描述由以下函数使用限制
AbsoluteGapTolerance

非负实数。如果内部计算的目标函数的上界 (U) 和下界 (L) 之间的差小于或等于 AbsoluteGapTolerance,则 intlinprog 停止:

U – L <= AbsoluteGapTolerance.

intlinprog仅限于 optimoptions
AbsoluteMaxObjectiveCount

F(x) 的数量,用于最小化最差情形绝对值。

fminimax

 
Algorithm

选择求解器使用的算法。

fmincon, fminunc, fsolve, linprog, lsqcurvefit, lsqlin, lsqnonlin, quadprog 
BarrierParamUpdate

选择 'interior-point' 算法中更新障碍参数的算法,可以是 'monotone''predictor-corrector'

fmincon 
BranchRule

选择分支分量的规则:

  • 'maxpscost' - 具有最大伪代价的小数分量。请参阅分支定界

  • 'strongpscost' - 具有最大伪代价的小数分量,需要审慎估计伪代价。请参阅分支定界

  • 'reliability' - 具有最大伪代价的小数分量,需要比 'strongpscost' 更为审慎地估计伪代价。请参阅分支定界

  • 'mostfractional' - 小数部分最接近 1/2 的分量。

  • 'maxfun' - 目标向量 f 的绝对值中对应分量最大的小数分量。

intlinprog仅限于 optimoptions
CheckGradients

将用户提供的解析导数(梯度或雅可比矩阵,取决于所选求解器)与有限差分导数进行比较。

以后的版本中将会删除 CheckGradients 选项。要检查导数,请使用 checkGradients 函数。

fmincon, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin

仅限于 optimoptions。对于 optimset,使用 DerivativeCheck
ConstraintTolerance

约束违反值容差。

coneprog, fgoalattain, fmincon, fminimax, fseminf, intlinprog, linprog, lsqlin, quadprog

仅限于 optimoptions。对于 optimset,使用 TolCon
CutGeneration

切割生成的级别(请参阅切割生成):

  • 'none' - 无切割。使 CutMaxIterations 不相关。

  • 'basic' - 正常切割生成。

  • 'intermediate' - 使用更多切割类型。

  • 'advanced' - 使用大多数切割类型。

intlinprog仅限于 optimoptions
CutMaxIterations在进入分支定界阶段之前经历所有切割生成方法的次数,从 150 的整数。通过将 CutGeneration 选项设置为 'none' 可禁用切割生成。intlinprog仅限于 optimoptions
Display

显示级别。

  • 'off' 不显示输出。

  • 'iter' 显示每次迭代的输出,并给出默认退出消息。

  • 'iter-detailed' 显示每次迭代的输出,并给出带有技术细节的退出消息。

  • 'notify' 仅当函数不收敛时才显示输出,并给出默认退出消息。

  • 'notify-detailed' 仅当函数不收敛时才显示输出,并给出技术性退出消息。

  • 'final' 仅显示最终输出,并给出默认退出消息。

  • 'final-detailed' 仅显示最终输出,并给出带有技术细节的退出消息。

全部。有关适用的值,请参阅各个函数参考页。

 
EnableFeasibilityMode

选择在 'interior-point' 算法中获得可行性的算法。true 使用的算法不同于默认 false

fmincon 
EqualityGoalCount

指定目标 fun 达到设置目标所需的目标数量。如有必要,请对您的目标重新排序,让 fgoalattain 准确实现第一个 EqualityGoalCount 目标。

fgoalattain

仅限于 optimoptions。对于 optimset,使用 GoalsExactAchieve
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)

fgoalattain, fmincon, fminimax, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin

仅限于 optimoptions。对于 optimset,使用 FinDiffRelStep
FiniteDifferenceType

用于估计梯度的有限差分是 'forward'(默认值)或 'central'(中心化),这需要两倍的函数计算次数,但结果应该更准确。如果 HonorBounds 选项设置为 false,则在 fmincon 内点计算中,'central' 差分可能会在其计算过程中违反边界。

fgoalattain, fmincon, fminimax, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin

仅限于 optimoptions。对于 optimset,使用 FinDiffType
FunctionTolerance

函数值的终止容差。

fgoalattain, fmincon, fminimax, fminsearch, fminunc, fseminf, fsolve, lsqcurvefit, lsqlin, lsqnonlin, quadprog

仅限于 optimoptions。对于 optimset,使用 TolFun
HessianApproximation

黑塞矩阵逼近的方法:'bfgs''lbfgs'{'lbfgs',Positive Integer}'finite-difference'

HessianFcnHessianMultiplyFcn 非空时将被忽略。

fmincon

仅限于 optimoptions。对于 optimset,使用 Hessian
HessianFcn

用户提供的黑塞函数,指定为函数句柄(请参阅包含黑塞函数)。

fmincon, fminunc仅限于 optimoptions。对于 optimset,使用 HessFcn
HessianMultiplyFcn

用户提供的黑塞矩阵乘法函数,指定为函数句柄。

HessianFcn 非空时将被忽略。

fmincon, fminunc, quadprog

仅限于 optimoptions。对于 optimset,使用 HessMult
Heuristics

搜索可行点的算法(请参阅使用启发式方法求出可行解):

  • 'basic'

  • 'intermediate'

  • 'advanced'

  • 'rss'

  • 'rins'

  • 'round'

  • 'diving'

  • 'rss-diving'

  • 'rins-diving'

  • 'round-diving'

  • 'none'

intlinprog仅限于 optimoptions
HeuristicsMaxNodes严格正整数,它限制 intlinprog 在分支定界搜索可行点的过程中可探查的节点数。请参阅使用启发式方法求出可行解intlinprog仅限于 optimoptions
HonorBounds

默认值 true 确保每次迭代都满足边界约束。通过设置为 false 关闭。

fmincon仅限于 optimoptions。对于 optimset,使用 AlwaysHonorConstraints
IntegerPreprocess

整数预处理的类型(请参阅混合整数规划预处理):

  • 'none' - 使用非常少的整数预处理步骤。

  • 'basic' - 使用中等数量的整数预处理步骤。

  • 'advanced' - 使用所有可用的整数预处理步骤。

intlinprog仅限于 optimoptions
IntegerTolerance1e-61e-3 范围内的实数,这是解 x 的分量仍被视为整数时相比整数可具有的最大偏差。IntegerTolerance 不是停止条件。intlinprog仅限于 optimoptions
JacobianMultiplyFcn

用户定义的雅可比矩阵乘法函数,指定为函数句柄。除非对于 fsolvelsqcurvefitlsqnonlin 来说 SpecifyObjectiveGradienttrue,否则被忽略。

fsolve, lsqcurvefit, lsqlin, lsqnonlin

 
LinearSolver

算法内部线性求解器的类型。对于 lsqlinquadprog

  • 'auto' - 如果传递的二次矩阵为稀疏矩阵(对于 quadprog 来说为 H,对于 lsqlin 来说为 C),则使用 'sparse';否则使用 'dense'

  • 'sparse' - 使用稀疏线性代数。

  • 'dense' - 使用稠密线性代数。

对于 coneprog

  • 'auto'(默认值)- coneprog 选择步长求解器。

    • 如果问题是稀疏的,步长求解器为 'prodchol'

    • 否则,步长求解器为 'augmented'

  • 'augmented' - 增强形式步长求解器。请参阅[1]

  • 'normal' - 标准形式步长求解器。请参阅[1]

  • 'prodchol' - 产品形式乔列斯基步长求解器。请参阅[4][5]

  • 'schur' - Schur 补方法步长求解器。请参阅[2]

coneproglsqlin 'interior-point' 算法和 quadprog 'interior-point-convex' 算法

 
LPMaxIterations严格正整数,在分支定界过程中每个节点的单纯形算法迭代的最大次数。intlinprog仅限于 optimoptions
LPOptimalityTolerance非负实数,要将一个变量纳入基,该变量的简化后的代价必须超过 LPOptimalityToleranceintlinprog仅限于 optimoptions
MaxFunctionEvaluations

允许的函数计算的最大次数。

fgoalattain, fminbnd, fmincon, fminimax, fminsearch, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin

仅限于 optimoptions。对于 optimset,使用 MaxFunEvals
MaxIterations

允许的最大迭代次数。

fzerolsqnonneg 之外的所有函数

仅限于 optimoptions。对于 optimset,使用 MaxIter
MaxFeasiblePoints严格正整数。intlinprog 在找到 MaxFeasiblePoints 个整数可行点时停止。intlinprog仅限于 optimoptions
MaxNodes严格正整数,它是求解器在其分支定界过程中探查的最大节点数。

intlinprog

 
MaxTime

算法允许的最长时间(以秒为单位)。

coneprog, intlinprog, linprog

 
NodeSelection

选择下一步要探查的节点。

  • 'simplebestproj' - 最佳投影。请参阅分支定界

  • 'minobj' - 探查目标函数值最小的节点。

  • 'mininfeas' - 探查整数不可行性之和最小的节点。请参阅分支定界

intlinprog仅限于 optimoptions
ObjectiveCutOff大于 -Inf 的实数。默认值为 Infintlinprog仅限于 optimoptions
ObjectiveImprovementThreshold非负实数。intlinprog 仅在找到目标函数值比当前可行解的目标函数值低至少 ObjectiveImprovementThreshold 的另一个解时,才会更改当前可行解:(fold – fnew)/(1 + |fold|) > ObjectiveImprovementThresholdintlinprog仅限于 optimoptions
ObjectiveLimit

如果目标函数值低于 ObjectiveLimit 并且迭代可行,则迭代停止。

fmincon, fminunc, lsqlin, quadprog 
OptimalityTolerance

一阶最优性的终止容差。

coneprogfgoalattainfminconfminimaxfminuncfseminffsolvelinprog(仅限于 interior-point)、lsqcurvefitlsqlinlsqnonlinquadprog

仅限于 optimoptions。对于 optimset,使用 TolFun
OutputFcn

指定优化函数在每次迭代中调用的一个或多个用户定义的函数。传递函数句柄或函数句柄的元胞数组。请参阅Output Function and Plot Function Syntaxintlinprog Output Function and Plot Function Syntax

fgoalattain, fminbnd, fmincon, fminimax, fminsearch, fminunc, fseminf, fsolve, fzero, intlinprog, lsqcurvefit, lsqnonlin

 
PlotFcn

绘制算法执行过程中的各个进度测量值。从预定义绘图中选择,或者自行编写。以列表或函数句柄(如 @optimplotx)形式给出函数名称。传递内置绘图函数名称、函数句柄,或由内置名称或函数句柄组成的元胞数组。对于自定义绘图函数,传递函数句柄。

  • 'optimplotx' 绘制当前点

  • 'optimplotfunccount' 绘制函数计数

  • 'optimplotfval' 绘制函数值

  • 'optimplotfvalconstr' 将找到的最佳可行目标函数值绘制为线图。该图用一种颜色显示不可行点,用另一种颜色显示可行点,可行性容差为 1e-6

  • 'optimplotconstrviolation' 绘制最大约束违反值

  • 'optimplotresnorm' 绘制残差范数

  • 'optimplotfirstorderopt' 绘制一阶最优性

  • 'optimplotstepsize' 绘制步长

  • 'optimplotmilp' 绘制混合整数线性规划的间隙

请参阅绘图函数intlinprog Output Function and Plot Function Syntax

fgoalattain, fminbnd, fmincon, fminimax, fminsearch, fminunc, fseminf, fsolve, fzero, intlinprog, lsqcurvefit, lsqnonlin.有关适用的值,请参阅各个函数参考页。

仅限于 optimoptions。对于 optimset,使用 PlotFcns
RelativeGapTolerance

01 范围内的实数。如果内部计算的目标函数上界 (U) 和下界 (L) 之间的差小于或等于 RelativeGapTolerance,则 intlinprog 停止:

(U – L) / (abs(U) + 1) <= RelativeGapTolerance.

intlinprog仅限于 optimoptions
RootLPAlgorithm

求解线性规划的算法:

  • 'dual-simplex' - 对偶单纯形算法

  • 'primal-simplex' - 原始单纯形算法

intlinprog仅限于 optimoptions
RootLPMaxIterations非负整数,它是求解初始线性规划问题要进行的单纯形算法迭代的最大次数。intlinprog仅限于 optimoptions
ScaleProblem

对于 fmincon interior-pointsqp 算法,true 会使算法根据所有约束和目标函数的初始值对其进行归一化。要禁用,请设置为默认值 false

fmincon 
SpecifyConstraintGradient

非线性约束的用户定义梯度。

fgoalattain, fmincon, fminimax

仅限于 optimoptions。对于 optimset,使用 GradConstr
SpecifyObjectiveGradient

目标函数的用户定义梯度或雅可比矩阵。

fgoalattain, fmincon, fminimax, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin

仅限于 optimoptions。对于 optimset,使用 GradObjJacobian
StepTolerance

x 的终止容差。

linprogconeprog 之外的所有函数

 
SubproblemAlgorithm

确定迭代步的计算方式。

fmincon, fminunc, fsolve, lsqcurvefit, lsqlin, lsqnonlin 
TypicalX

数组,用于指定由参数 x 组成的数组的典型模。数组的大小等于起点 x0 的大小。主要用于缩放梯度估计的有限差分。

fgoalattain, fmincon, fminimax, fminunc, fseminf, fsolve, lsqcurvefit, lsqlin, lsqnonlin, quadprog

 
UseParallel

当为 true 时,适用的求解器以并行方式估计梯度。通过设置为 false 来禁用。

fgoalattain, fmincon, fminimax, fminunc, fsolve, lsqcurvefit, lsqnonlin.

 

隐藏选项

optimoptions 会“隐藏”一些选项,这意味着它不显示这些选项的值。要了解如何查看这些选项及其被隐藏的原因,请参阅查看优化选项

函数参考页以斜体列出这些选项。

隐藏的 Optimization Toolbox 选项

下表列出了隐藏的 Optimization Toolbox™ 选项。

optimoptions 隐藏的选项

选项名称描述由以下函数使用限制
Diagnostics

显示关于要最小化或求解的函数的诊断信息。

fminbndfminsearchfzerolsqnonneg 之外的所有函数

 
DiffMaxChange

有限差分中变量的最大变化。

fgoalattain, fmincon, fminimax, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin

 
DiffMinChange

有限差分中变量的最小变化。

fgoalattain, fmincon, fminimax, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin

 
FunValCheck

检查目标函数和约束值是否有效。如果为 'on',则当目标函数或约束返回的值是 complexNaNInf 时,会显示错误。

注意

Inf 用于 fminbndfminsearchfzero 时,FunValCheck 不会返回错误,因为这些函数会正确处理 Inf

'off' 不显示错误。

fgoalattain, fminbnd, fmincon, fminimax, fminsearch, fminunc, fseminf, fsolve, fzero, lsqcurvefit, lsqnonlin

 
HessPattern

用于有限差分的黑塞矩阵稀疏模式。矩阵的大小是 n×n,其中 n 是起点 x0 中的元素数。

fmincon, fminunc

 
HessUpdate

拟牛顿更新方案。

fminunc

 
InitBarrierParam

初始障碍值。

fmincon 
InitDamping

初始莱文贝格-马夸特参数。

fsolve, lsqcurvefit, lsqnonlin仅限于 optimoptions
InitTrustRegionRadius

信赖域的初始半径。

fmincon 
JacobPattern

用于有限差分的雅可比矩阵稀疏模式。矩阵的大小是 m×n,其中 m 是用户指定的函数 fun 返回的第一个参数中值的个数,n 是起点 x0 中的元素个数。

fsolve, lsqcurvefit, lsqnonlin

 
LPPreprocess

松弛线性规划解的预处理类型(请参阅线性规划预处理):

  • 'none' - 无预处理。

  • 'basic' - 使用预处理。

intlinprog仅限于 optimoptions
MaxPCGIter

预条件共轭梯度法允许的最大迭代次数。

fmincon, fminunc, fsolve, lsqcurvefit, lsqlin, lsqnonlin, quadprog

 
MaxProjCGIter

投影共轭梯度迭代次数的容差;这是内部迭代,而不是算法的迭代次数。

fmincon 
MaxSQPIter

序列二次规划法允许的最大迭代次数。

fgoalattain, fmincon, fminimax

 
MeritFunction

使用目标达到/最小化最大值评价函数(多目标)与 fmincon(单目标)。

fgoalattain, fminimax

 
PrecondBandWidth

PCG 的预条件子的上带宽。设置为 'Inf' 会使用直接分解而不是 CG。

fmincon, fminunc, fsolve, lsqcurvefit, lsqlin, lsqnonlin, quadprog

 
Preprocess

单纯形或对偶单纯形算法迭代前的 LP 预处理的级别。

linprog

仅限于 optimoptions
RelLineSrchBnd

线搜索步长的相对边界。

fgoalattain, fmincon, fminimax, fseminf

 
RelLineSrchBndDuration

RelLineSrchBnd 所指定的边界应处于活动状态的迭代次数。

fgoalattain, fmincon, fminimax, fseminf

 
ScaleProblem

当使用 Algorithm 选项 'levenberg-marquardt' 时,将 ScaleProblem 选项设置为 'jacobian' 有时有助于求解器求解缩放错误的问题。

fsolve, lsqcurvefit, lsqnonlin 
TolConSQP

内 SQP 迭代的约束违反值容差。

fgoalattain, fmincon, fminimax, fseminf 
TolPCG

PCG 迭代的终止容差。

fmincon, fminunc, fsolve, lsqcurvefit, lsqlin, lsqnonlin, quadprog

 
TolProjCG

投影共轭梯度算法的相对容差;这适用于内部迭代,而不适用于算法迭代。

fmincon 
TolProjCGAbs

投影共轭梯度算法的绝对容差;这适用于内部迭代,而不适用于算法迭代。

fmincon 

隐藏的 Global Optimization Toolbox 选项

有关隐藏这些选项的原因,请参阅Options that optimoptions Hides (Global Optimization Toolbox)

optimoptions 隐藏的选项

选项名称由以下函数使用
Cache

patternsearch

CacheSize

patternsearch

CacheTol

patternsearch

DisplayInterval

particleswarm, simulannealbnd

FunValCheck

particleswarm

HybridInterval

simulannealbnd

InitialPenalty

ga, patternsearch

MaxMeshSize

patternsearch

MeshRotate

patternsearch

MigrationDirection

ga

MigrationFraction

ga

MigrationInterval

ga

PenaltyFactor

ga, patternsearch

PlotInterval

ga, patternsearch, simulannealbnd

StallTest

ga

TolBindpatternsearch

相关主题