具体问题具体分析的优化算法
在内部,解决
函数通过调用求解器来解决优化问题。有关该问题的默认求解器和该问题的受支持求解器,请参见解决者
函数。方法可以覆盖默认值“规划求解”
调用时的名称-值对参数解决
.
之前解决
可以调用求解器,将问题必须转换为求解器形式,要么通过解决
或者其他相关的函数或对象。例如,这种转换需要使用矩阵表示而不是优化变量表达式的线性约束。
算法的第一步发生在将优化表达式放入问题中时。一个OptimizationProblem
对象具有其表达式中使用的变量的内部列表。每个变量在表达式中都有一个线性索引和一个大小。因此,问题变量有一个隐含的矩阵形式。的prob2struct
函数执行从问题形式到求解器形式的转换。示例请参见将问题转化为结构.
对于非线性优化问题,解决
使用自动分化计算目标函数和非线性约束函数的梯度。这些导数适用于由目标函数和约束函数组成的情况优化变量和表达式的支持操作.当自动微分不适用时,求解者使用有限差分估计导数。有关自动区分的详细信息,请参见自动分化背景.你可以控制解决
使用自动区分与ObjectiveDerivative
名称-值参数。
对于这个算法intlinprog
用来解决MILP问题,参见intlinprog算法.对于算法linprog
用于解决线性规划问题,参见线性规划算法.对于算法quadprog
用于解决二次规划问题,参见二次规划算法.有关线性或非线性最小二乘求解器算法,请参见最小二乘(模型拟合)算法.有关非线性求解算法,请参见无约束非线性优化算法而且约束非线性优化算法.为全局优化工具箱规划求解算法,看到全局优化工具箱文档。
对于非线性方程求解,解决
内部表示每个方程的左右差。然后解决
试图使方程分量的平方和最小化。有关求解非线性方程组的算法,请参见方程求解算法.当问题也有边界时,解决
调用lsqnonlin
使方程分量的平方和最小。看到最小二乘(模型拟合)算法.
请注意
如果你的目标函数是平方和,你想解决
要识别它,可以将其写成任意一种形式规范(expr) ^ 2
或总和(expr。^ 2)
,而不是像expr‘* expr
或者其他形式。内部解析器只有在表示为范数的平方或显式的平方和时才能识别平方和。有关详细信息,请参见基于问题的最小二乘的目标函数.示例请参见基于问题的非负线性最小二乘.
另请参阅
linprog
|intlinprog
|prob2struct