二次编程是找到向量的问题据E.mCL.作为S.="varname">X据/E.m>最小化二次函数,可能受到线性约束:据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="mw_b35c67ae-55a7-4d4f-ad20-be25c6021544">
这样据S.P.an class="inlineequation">斧头据/E.m>≤.。GyD.F4y2Ba据E.mCL.作为S.="varname">B.据/E.m>那据E.mCL.作为S.="varname">AEQ·X.据/E.m>=GyD.F4y2Ba据E.mCL.作为S.="varname">贝卡据/E.m>那据E.mCL.作为S.="varname">L.据/E.m>≤.。GyD.F4y2Ba据E.mCL.作为S.="varname">X据/E.m>≤.。GyD.F4y2Ba据E.mCL.作为S.="varname">你据/E.m>据/S.P.an>.据/P.>据/S.E.CT.一世on>
这据Code class="literal">内部点凸据/Code>算法执行如下步骤:据/P.>据你L.>据L.一世>据P.>预计/ postsolve.据/a> 笔记据/S.T.R.ong> 该算法有两个代码路径。当黑森州矩阵时需要一个据E.mCL.作为S.="varname">H据/E.m>是一种普通的(全面)的双打矩阵,它需要另一个据E.mCL.作为S.="varname">H据/E.m>是稀疏矩阵。有关稀疏数据类型的详细信息,请参阅据a href="//www.tianjin-qmedu.com/help/matlab/sparse-matrices.html" class="a">稀疏矩阵据/a>.一般来说,当您指定时,算法对于非零项相对较少的大问题会更快据E.mCL.作为S.="varname">H据/E.m>作为据a href="//www.tianjin-qmedu.com/help/matlab/ref/sparse.html"> 该算法首先试图通过去除冗余和简化约束来简化问题。在预解步骤中执行的任务包括:据/P.>据D.一世V.CL.作为S.="itemizedlist">
检查是否有任何变量具有相同的上限和下限。如果是这样,请检查可行性,然后修复并删除变量。据/P.>据/L.一世>据L.一世> 检查是否有任何线性不等式约束涉及只有一个变量。如果是这样,请检查可行性,然后将线性约束更改为绑定。据/P.>据/L.一世>据L.一世> 检查是否有任何线性平等约束涉及一个变量。如果是这样,请检查可行性,然后修复并删除变量。据/P.>据/L.一世>据L.一世> 检查是否有任何线性约束矩阵具有零行。如果是这样,请检查可行性,然后删除行。据/P.>据/L.一世>据L.一世> 确定界限和线性约束是否一致。据/P.>据/L.一世>据L.一世> 检查是否存在任何变量仅在目标函数中显示为线性术语,并且不会出现在任何线性约束中。如果是,请检查可行性和界限,然后在适当的范围内修复变量。据/P.>据/L.一世>据L.一世> 通过添加松弛变量,将线性不等式约束变为线性等式约束。据/P.>据/L.一世>据/你L.>
如果算法检测到不可行或无界问题,则会停止并发出适当的退出消息。据/P.>据P.>该算法可能到达单个可行点,表示解决方案。据/P.>据P.>如果该算法在预定步骤中没有检测到不可行或无界问题,并且如果预定寄存器没有产生解决方案,则该算法继续下次步骤。达到停止标准后,算法重建原始问题,撤消任何预定变换。这一步骤是Postsolve步骤。据/P.>据P.>有关详细信息,请参阅gould和toint据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[63]据/a>.据/P.>据/S.E.CT.一世on>
起始点据Code class="literal">X0.据/Code>对于算法是:据/P.>据D.一世V.CL.作为S.="orderedlist">
初始化据Code class="literal">X0.据/Code>到据Code class="literal">那些(n,1)据/Code>, 在哪里据Code class="literal">N据/Code>是行的数量据E.mCL.作为S.="varname">H据/E.m>.据/P.>据/L.一世>据L.一世> 对于具有上限的组件据Code class="literal">UB.据/Code>和下限据Code class="literal">磅据/Code>,如果是一个组成部分据Code class="literal">X0.据/Code>不严格地在界限内,组件设置为据Code class="literal">(UB + LB)/ 2据/Code>.据/P.>据/L.一世>据L.一世> 对于只有一个绑定的组件,如果需要,在必要时修改组件以严格地在绑定内部。据/P.>据/L.一世>据L.一世> 采取预测的步骤(见据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">预估据/a>),具有微小的可行性校正,而不是完整的预测器校正器步骤。这将初始点更接近据E.mCL.作为S.="firstterm">中央路径据/E.m>而不需要一个完整的预测-校正步骤。关于中心路径的详细信息,请参阅Nocedal和Wright据a href="//www.tianjin-qmedu.com/help/optim/ug/linear-programming-algorithms.html" class="a">[7]据/a>,第397页。据/P.>据/L.一世>据/ol>
内部点凸据/Code>
Quadprog.据/Code>算法据/h3>
疏据/Code>.同样,在指定时,算法对于小或相对密集的问题更快据E.mCL.作为S.="varname">H据/E.m>作为据a href="//www.tianjin-qmedu.com/help/matlab/ref/full.html">
满的据/Code>.据/P.>据/D.一世V.>据S.E.CT.一世on itemprop="content">
预计/ postsolve.据/h4>
生成初始点据/h4>
稀疏和完整的内部点凸算法主要在预测器校正器相中不同。算法是相似的,但有些细节不同。对于基本算法描述,请参阅Mehrotra据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[47]据/a>.据/P.>据P.>算法首先将线性不等式Ax <= b转化为Ax >= b的形式,通过将A和b乘以-1。这与解决问题没有关系,但使问题的形式在一些文献中发现。据/P.>据你L.>据L.一世>据P.>稀疏预测器校正器据/a>
稀疏的预测器校正器。据/S.T.R.ong>类似于据Code class="function">粉刺据/Code>内部点算法据/a>,稀疏据Code class="literal">内部点凸据/Code>算法试图找到一个点据a href="//www.tianjin-qmedu.com/help/optim/ug/first-order-optimality-measure.html" class="a">Karush-Kuhn-Tucker(马)据/a>条件持有。用于二次编程问题据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">二次编程定义据/a>,这些条件是:据/P.>据D.一世V.一世D.="d122e51588" class="mediaobject">
这里据/P.>据D.一世V.CL.作为S.="itemizedlist">
是扩展的线性不等式矩阵,包括写入线性不等式的边界。据S.P.an class="inlineequation"> 是相应的线性不等式矢量,包括界限。据/P.>据/L.一世>据L.一世>
S.据/E.m>是将不等式约束转换为平等的休闲队的矢量。据E.mCL.作为S.="varname">S.据/E.m>有长度据E.mCL.作为S.="varname">m据/E.m>,线性不等式的个数和界。据/P.>据/L.一世>据L.一世> Z.据/E.m>拉格朗日乘数的向量对应什么据E.mCL.作为S.="varname">S.据/E.m>.据/P.>据/L.一世>据L.一世> y据/E.m>是与平等约束相关联的拉格朗日乘法器的矢量。据/P.>据/L.一世>据/你L.>
该算法首先预测来自牛顿Raphson公式的步骤,然后计算校正器步骤。校正器会尝试更好地强制执行非线性约束据S.P.an class="inlineequation">S.据S.你B.>一世据/S.你B.>Z.。GyD.F4y2Ba据S.你B.>一世据/S.你B.>据/E.m>= 0.。GyD.F4y2Ba据/S.P.an>.据/P.>据P.>预测器步骤的定义:据/P.>据D.一世V.CL.作为S.="itemizedlist">
R.据S.你B.>D.。GyD.F4y2Ba据/S.你B.>据/E.m>,双重残差:据/P.>据D.一世V.一世D.="d122e51643" class="mediaobject">
R.据S.你B.>E.问:。GyD.F4y2Ba据/S.你B.>据/E.m>,原始平等约束残差:据/P.>据D.一世V.一世D.="d122e51653" class="mediaobject">
R.据S.你B.>一世Neq.。GyD.F4y2Ba据/S.你B.>据/E.m>,原始不等式约束残余,包括界限和休闲:据/P.>据D.一世V.一世D.="d122e51663" class="mediaobject">
R.据S.你B.>S.Z.。GyD.F4y2Ba据/S.你B.>据/E.m>,互补残差:据/P.>据D.一世V.一世T.E.mP.R.op="content">
R.据S.你B.>S.Z.。GyD.F4y2Ba据/S.你B.>据/E.m>=GyD.F4y2Ba据E.mCL.作为S.="varname">SZ.据/E.m>.据/P.>据/D.一世V.>据P.>据E.mCL.ass="varname">S.据/E.m>是松弛术语的对角线矩阵,据E.mCL.作为S.="varname">Z.据/E.m>Lagrange乘法器的列矩阵。据/P.>据/L.一世>据L.一世> R.据S.你B.>CGyD.F4y2Ba据/S.你B.>据/E.m>,平均互补性:据/P.>据D.一世V.一世D.="d122e51692" class="mediaobject">
在牛顿步骤中,更改据E.mCL.作为S.="varname">X据/E.m>那据E.mCL.作为S.="varname">S.据/E.m>那据E.mCL.作为S.="varname">y据/E.m>那GyD.F4y2Ba据E.mCL.作为S.="varname">Z.据/E.m>,由:据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="bvjx1fl">
然而,由于积极约束,完整的牛顿步骤可能是不可行的据E.mCL.作为S.="varname">S.据/E.m>和据E.mCL.作为S.="varname">Z.据/E.m>.所以,据Code class="function">Quadprog.据/Code>如有必要,缩短步骤以维持积极性。据/P.>据P.>另外,在室内要保持一个“居中”的位置,而不是试图解决据S.P.an class="inlineequation">S.据S.你B.>一世据/S.你B.>Z.。GyD.F4y2Ba据S.你B.>一世据/S.你B.>据/E.m>= 0.。GyD.F4y2Ba据/S.P.an>时,算法采用正参数据E.mCL.作为S.="varname">σ.据/E.m>并试图解决据/P.>据D.一世V.一世T.E.mP.R.op="content">
S.据S.你B.>一世据/S.你B.>Z.。GyD.F4y2Ba据S.你B.>一世据/S.你B.>据/E.m>=GyD.F4y2Ba据E.mCL.作为S.="varname">Σr.据S.你B.>CGyD.F4y2Ba据/S.你B.>据/E.m>.据/P.>据/D.一世V.>据P.>据Code class="function">Quadprog.据/Code>替换据E.mCL.作为S.="varname">R.据S.你B.>S.Z.。GyD.F4y2Ba据/S.你B.>据/E.m>在牛顿步骤方程中据S.P.an class="inlineequation">R.据S.你B.>S.Z.。GyD.F4y2Ba据/S.你B.>据/E.m>+δ据E.mCL.作为S.="varname">S.据/E.m>δ.据E.mCL.作为S.="varname">Z.据/E.m>-据E.mCL.作为S.="varname">Σr.据S.你B.>CGyD.F4y2Ba据/S.你B.>据/E.m>据/S.P.an>1据/S.T.R.ong>, 在哪里据S.T.R.ong class="emphasis bold">1据/S.T.R.ong>是矢量的矢量。还,据Code class="function">Quadprog.据/Code>重新排斥牛顿方程,以获得对称,更稳定的系统,用于预测测量阶段计算。据/P.>据P.>在计算纠正的牛顿步骤之后,算法执行更多的计算以获得更长的电流步骤,并准备更好的后续步骤。这些多校正计算可以提高性能和鲁棒性。有关详细信息,请参阅Gondzio据a href="//www.tianjin-qmedu.com/help/optim/ug/linear-programming-algorithms.html" class="a">[4]据/a>.据/P.>据P.>据S.T.R.ong id="bvj25y3-1">完全预测器校正器。据/S.T.R.ong>完整的预测校正算法不将边界合并成线性约束,因此它有另一组松弛变量与边界相对应。算法将下界移到零。而且,如果一个变量只有一个上界,算法会把它变成一个0的下界,通过抵消上界的不等式。据/P.>据P.>据S.P.an class="inlineequation">
是扩展的线性矩阵,包括线性不等式和线性等分。据S.P.an class="inlineequation">
是相应的线性平等矢量。据S.P.an class="inlineequation">
还包括扩展载体的条款据E.mCL.作为S.="varname">X据/E.m>与松弛变量据E.mCL.作为S.="varname">S.据/E.m>将不平等的约束转化为平等的约束:据/P.>据D.一世V.一世D.="d122e51799" class="mediaobject">
在哪里据E.mCL.作为S.="varname">X据/E.m>据S.你B.>0.GyD.F4y2Ba据/S.你B.>意味着原来据E.mCL.作为S.="varname">X据/E.m>向量。据/P.>据P.>KKT条件是据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="bvj29rj">
找到解决方案据E.mCL.作为S.="varname">X据/E.m>,松弛变量和对偶变量据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式3.据/a>,该算法基本上考虑了牛顿 - 拉文司步骤:据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="bvj2_jd">
在哪里据E.mCL.作为S.="varname">X据/E.m>那据E.mCL.作为S.="varname">V.据/E.m>那据E.mCL.作为S.="varname">W.据/E.m>那GyD.F4y2Ba据E.mCL.作为S.="varname">T.据/E.m>是对对方的对角线矩阵对应于矢量据E.mCL.作为S.="varname">X据/E.m>那据E.mCL.作为S.="varname">V.据/E.m>那据E.mCL.作为S.="varname">W.据/E.m>那GyD.F4y2Ba据E.mCL.作为S.="varname">T.据/E.m>分别。等式的右侧右侧的残余矢量是:据/P.>据D.一世V.CL.作为S.="itemizedlist">
R.据S.你B.>D.。GyD.F4y2Ba据/S.你B.>据/E.m>,双重残差据/P.>据/L.一世>据L.一世> R.据S.你B.>P.据/S.你B.>据/E.m>,原始残留据/P.>据/L.一世>据L.一世> R.据S.你B.>UB.据/S.你B.>据/E.m>,上限残留据/P.>据/L.一世>据L.一世> R.据S.你B.>V.X。GyD.F4y2Ba据/S.你B.>据/E.m>,下限互补残留据/P.>据/L.一世>据L.一世> R.据S.你B.>W.T.。GyD.F4y2Ba据/S.你B.>据/E.m>,上限互补残差据/P.>据/L.一世>据/你L.>
算法解决了据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式4.据/a>首先将其转换为对称矩阵形式据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="bvjx1da-1">
在哪里据/P.>据D.一世V.一世D.="d122e51885" class="mediaobject">
所有矩阵在定义中反转据E.mCL.作为S.="varname">D.据/E.m>和据E.mCL.作为S.="varname">R.据/E.m>易于计算,因为矩阵是对角线。据/P.>据P.>获得据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式5.据/a>从据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式4.据/a>,请注意第二行据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式5.据/a>与第二矩阵行相同据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式4.据/a>.第一排据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式5.据/a>来自解决最后两排据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式4.据/a>对于δ.据E.mCL.作为S.="varname">V.据/E.m>和Δ据E.mCL.作为S.="varname">W.据/E.m>,然后求解δ据E.mCL.作为S.="varname">T.据/E.m>.据/P.>据P.>解决据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式5.据/a>在美国,算法遵循Altman和gonzio的基本元素据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">[1]据/a>.该算法通过LDL分解来解决对称系统。正如Vanderbei和木匠等作者所指出的那样据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">[2]据/a>,这种分解在数量上稳定而没有任何枢转,所以可以快速。据/P.>据P.>在计算纠正的牛顿步骤之后,算法执行更多的计算以获得更长的电流步骤,并准备更好的后续步骤。这些多校正计算可以提高性能和鲁棒性。有关详细信息,请参阅Gondzio据a href="//www.tianjin-qmedu.com/help/optim/ug/linear-programming-algorithms.html" class="a">[4]据/a>.据/P.>据P.>全部据Code class="function">Quadprog.据/Code>预测器校正器算法大大于其相同据Code class="function">linprog.据/Code> [1] Altman,Anna和J. Gondzio。据E.mCL.作为S.="citetitle">用于线性和二次优化的内部点方法中的正则对称无限系统据/E.m>.优化方法和软件,1999。据a href="https://www.researchgate.net/profile/Jacek_Gondzio/publication/5063380_Regularized_Symmetric_Indefinite_Systems_in_Interior_Point_Methods_for_Linear_and_Quadratic_Optimization/links/0912f513460e6ec76b000000.pdf" target="_blank">可供在此下载据/a>.据/P.>据/D.一世V.>据D.一世V.一世D.="bvkawop" class="bibliomixed">
[2] Vanderbei,R. J.和T. J. Carpenter。据E.mCL.作为S.="citetitle">用于内部点方法的对称无限系统据/E.m>.数学规划58,1993.第1-32页。据a href="https://vanderbei.princeton.edu/tex/myPapers/VanderbeiCarpenter.pdf" target="_blank">可供在此下载据/a>.据/P.>据/D.一世V.>据/D.一世V.>据/section>
预测器校正器算法迭代直到它到达可行的点(满足公差范围内的约束),并且相对步骤尺寸小。具体而言,定义据/P.>据D.一世V.一世D.="d122e51956" class="mediaobject">
当满足所有这些条件时,算法停止:据/P.>据D.一世V.一世D.="d122e51961" class="mediaobject">
在哪里据/P.>据D.一世V.一世D.="d122e51966" class="mediaobject">
R.据S.你B.>CGyD.F4y2Ba据/S.你B.>据/E.m>基本上测量互补性残留的大小据E.mCL.作为S.="varname">XV.据/E.m>和据E.mCL.作为S.="varname">TW.据/E.m>,这是溶液中的每个Zeros载体。据/P.>据/S.E.CT.一世on>
符号据S.P.an class="inlineequation">
和据S.P.an class="inlineequation">
表示线性不等式系数,以术语增强以表示稀疏算法的界限。符号据S.P.an class="inlineequation">
类似地表示用于线性不等式约束的拉格朗日乘法器,包括绑定约束。这被称为据E.mCL.作为S.="varname">Z.据/E.m>在据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">预估据/a>,据S.P.an class="inlineequation">
被称为据E.mCL.作为S.="varname">y据/E.m>.据/P.>据P.>优点函数据E.mCL.作为S.="varname">φ.据/E.m>是据/P.>据D.一世V.一世D.="d122e52033" class="mediaobject">
如果这个价值函数变得太大,据Code class="function">Quadprog.据/Code>声明问题是不可行的,并用退出标志停止据Code class="literal remove_text_wrapping">-2据/Code>.据/P.>据/S.E.CT.一世on>
最优化工具箱™求解器中使用的许多方法都基于据S.P.an class="emphasis">信任地区,据/E.m>据/S.P.an>一个简单但强大的优化概念。据/P.>据P.>要了解优化的信任区域方法,请考虑无约束的最小化问题,最小化据E.mCL.作为S.="varname">F据/E.m>(据E.mCL.作为S.="varname">X据/E.m>),其中函数接受向量参数并返回标量。假设你在一个点上据E.mCL.作为S.="varname">X据/E.m>在据E.mCL.作为S.="varname">N据/E.m>- 空间,您希望改进,即,移动到较低函数值的点。基本思想是近似据E.mCL.作为S.="varname">F据/E.m>用一个简单的函数据E.mCL.作为S.="varname">问:据/E.m>,它合理地反映了功能的行为据E.mCL.作为S.="varname">F据/E.m>在一个附近据E.mCL.作为S.="varname">N据/E.m>围绕据E.mCL.作为S.="varname">X据/E.m>.这个社区是信任区域。试验步骤据E.mCL.作为S.="varname">S.据/E.m>通过最小化(或大约最小化)来计算据E.mCL.作为S.="varname">N据/E.m>.这是信任区域子问题,据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="bro1am2-1">
当前点被更新为据E.mCL.作为S.="varname">X据/E.m>+GyD.F4y2Ba据E.mCL.作为S.="varname">S.据/E.m>如果据S.P.an class="inlineequation">F据/E.m>(据E.mCL.作为S.="varname">X据/E.m>+GyD.F4y2Ba据E.mCL.作为S.="varname">S.据/E.m>) 在哪里据E.mCL.作为S.="varname">G据/E.m>是渐变的据E.mCL.作为S.="varname">F据/E.m>在目前据E.mCL.作为S.="varname">X据/E.m>那据E.mCL.作为S.="varname">H据/E.m>是黑森州矩阵(第二衍生物的对称矩阵),据E.mCL.作为S.="varname">D.据/E.m>是对角线缩放矩阵,δ是正标量和∥。∥是2常态。解决了良好的算法据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式7.据/a>(看据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[48]据/a>);这种算法通常涉及计算所有特征值的计算据E.mCL.作为S.="varname">H据/E.m>和牛顿过程适用于据a class="indexterm" name="d122e52156">
(3)据/S.T.R.ong>
(4)据/S.T.R.ong>
(5)据/S.T.R.ong>
'内点'据/Code>算法,但也包括二次术语。看据a href="//www.tianjin-qmedu.com/help/optim/ug/linear-programming-algorithms.html" class="a">预估据/a>.据/P.>据D.一世V.CL.作为S.="bibliography">
参考据/h2>
停止条件据/h4>
不可行的检测据/h4>
Quadprog.据/Code>计算A.据S.P.an class="emphasis">优点功能据/E.m>据/S.P.an>φ.据/E.m>在每一个迭代。价值函数是可行性的量度。据Code class="function">Quadprog.据/Code>如果Merit函数变得太大,则停止。在这种情况下,据Code class="function">Quadprog.据/Code>宣布这个问题不可行。据/P.>据P.>mE.R.一世T.函数与问题的KKT条件相关 - 见据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">预估据/a>.使用以下定义:据/P.>据D.一世V.一世D.="d122e51996" class="mediaobject">
信任区域反光据/Code>
Quadprog.据/Code>算法据/h3>
(6)据/S.T.R.ong>
(7)据/S.T.R.ong>
这种算法提供了准确的解决方案据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式7.据/a>.但是,它们需要时间与几种因素成正比据E.mCL.作为S.="varname">H据/E.m>.因此,对于大规模的问题,需要一种不同的方法。几种近似和启发式策略,基于据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式7.据/a>,在文献中提出(据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[42]据/a>和据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[50]据/a>).优化工具箱求解器中遵循的近似方法是将信任区域子标数限制为二维子空间据E.mCL.作为S.="varname">S.据/E.m>(据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[39]据/a>和据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[42]据/a>).一旦子空间据E.mCL.作为S.="varname">S.据/E.m>已经计算过,工作要解决据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式7.据/a>即使需要完整的特征值/特征向量信息,也是微不足道的(因为在子空间中,问题只是二维)。主导工作现已转移到子空间的确定。据/P.>据P.>据a class="indexterm" name="d122e52192">二维子空间据E.mCL.作为S.="varname">S.据/E.m>借助A借助确定据a class="indexterm" name="d122e52198">预处理缀合物梯度过程下面描述。求解器定义据E.mCL.作为S.="varname">S.据/E.m>随着线性空间跨越据E.mCL.作为S.="varname">S.据/E.m>据S.你B.>1GyD.F4y2Ba据/S.你B.>和据E.mCL.作为S.="varname">S.据/E.m>据S.你B.>2GyD.F4y2Ba据/S.你B.>, 在哪里据E.mCL.作为S.="varname">S.据/E.m>据S.你B.>1GyD.F4y2Ba据/S.你B.>朝着梯度方向据E.mCL.作为S.="varname">G据/E.m>那GyD.F4y2Ba据E.mCL.作为S.="varname">S.据/E.m>据S.你B.>2GyD.F4y2Ba据/S.你B.>是近似的据a class="indexterm" name="d122e52232">牛顿方向,即解决方案据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="bro1am2-3">
或者方向据a class="indexterm" name="d122e52242">负曲率,据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="bro1am2-4">
这种选择背后的哲学据E.mCL.作为S.="varname">S.据/E.m>是强制全局收敛(通过最陡的下降方向或负曲率方向),实现快速局部收敛(通过牛顿步骤,当存在时)。据/P.>据P.>使用信任区域思想的无约束最小化的草图现在很容易给出:据/P.>据D.一世V.CL.作为S.="orderedlist">
制定二维信任区域子问题。据/P.>据/L.一世>据L.一世>
解决据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式7.据/a>确定试验步骤据E.mCL.作为S.="varname">S.据/E.m>.据/P.>据/L.一世>据L.一世>
如果据S.P.an class="inlineequation">F据/E.m>(据E.mCL.作为S.="varname">X据/E.m>+GyD.F4y2Ba据E.mCL.作为S.="varname">S.据/E.m>) 调整δ。据/P.>据/L.一世>据/ol>
这四个步骤重复直到收敛。根据标准规则调整信任区域维度Δ。特别地,如果不接受试验步骤,则减少,即,据S.P.an class="inlineequation">F据/E.m>(据E.mCL.作为S.="varname">X据/E.m>+GyD.F4y2Ba据E.mCL.作为S.="varname">S.据/E.m>)≥据E.mCL.作为S.="varname">F据/E.m>(据E.mCL.作为S.="varname">X据/E.m>)据/S.P.an>.看据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[46]据/a>和据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[49]据/a>有关这方面的讨论。据/P.>据P.>优化工具箱溶剂处理一些重要的特殊情况据E.mCL.作为S.="varname">F据/E.m>具有专业功能:非线性最小二乘,二次函数和线性最小二乘。然而,底层算法思想与常规案例相同。这些特殊情况在后面的部分中讨论。据/P.>据P.>子空间信任区域方法用于确定搜索方向。但是,代替将步骤限制为(可能)一个反射步骤,如在非线性最小化案例中,这是一个分段据a class="indexterm" name="d122e52322">在每次迭代都进行反光线搜索。看据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[45]据/a>有关线路搜索的详细信息。据/P.>据S.E.CT.一世on itemprop="content">
一种解决大型,对称,线性方程式系统的流行方式据S.P.an class="inlineequation">生命值据/E.m>=-据E.mCL.作为S.="varname">G据/E.m>据/S.P.an>是预先处理的共轭梯度(PCG)的方法。这种迭代方法需要能够计算表单的矩阵矢量产品s manbetx 845据E.mCL.作为S.="varname">H·V.据/E.m>在哪里据E.mCL.作为S.="varname">V.据/E.m>是一个任意的矢量。对称正定矩阵据E.mCL.作为S.="varname">m据/E.m>是A.据S.P.an class="emphasis">预处理器据/E.m>据/S.P.an>为了据E.mCL.作为S.="varname">H据/E.m>.那是,据S.P.an class="inlineequation">m据/E.m>=GyD.F4y2Ba据E.mCL.作为S.="varname">C据/E.m>据S.你P.>2GyD.F4y2Ba据/S.你P.>据/S.P.an>, 在哪里据S.P.an class="inlineequation">C据/E.m>据S.你P.>-1据/S.你P.>据E.mCL.作为S.="varname">HC.据/E.m>据S.你P.>-1据/S.你P.>据/S.P.an>是一种条件良好的矩阵或具有聚类特征值的矩阵。据/P.>据P.>在最小化背景下,您可以假设Hessian矩阵据E.mCL.作为S.="varname">H据/E.m>是对称的。然而,据E.mCL.作为S.="varname">H据/E.m>保证只能在最小最小化器附近积极确定。算法PCG在遇到负(或零)曲率方向时出口,即,据S.P.an class="inlineequation">D.据S.你P.>T.。GyD.F4y2Ba据/S.你P.>高清据/E.m>≤.0.GyD.F4y2Ba据/S.P.an>.PCG输出方向据E.mCL.作为S.="varname">P.据/E.m>是负曲率的方向或牛顿系统的近似解决方案据S.P.an class="inlineequation">生命值据/E.m>=-据E.mCL.作为S.="varname">G据/E.m>据/S.P.an>.在任一情况下,据E.mCL.作为S.="varname">P.据/E.m>有助于定义在讨论的信任区域方法中使用的二维子空间据a href="//www.tianjin-qmedu.com/help/optim/ug/unconstrained-nonlinear-optimization-algorithms.html" class="a">非线性最小化的信任区域方法据/a>.据/P.>据/S.E.CT.一世on>
线性约束使针对无约束最小化描述的情况复杂化。然而,先前描述的潜在思想可以以清洁和有效的方式进行。优化工具箱求解器中的信任区域方法会产生严格可行的迭代。据/P.>据P.>给出了一般线性等式约束极小化问题据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="bro1a6x-1">
在哪里据E.mCL.作为S.="varname">一种据/E.m>是一个据E.mCL.作为S.="varname">m据/E.m>-经过-据E.mCL.作为S.="varname">N据/E.m>矩阵 (据S.P.an class="inlineequation">m据/E.m>≤.。GyD.F4y2Ba据E.mCL.作为S.="varname">N据/E.m>据/S.P.an>).一些优化工具箱求解器预处理据E.mCL.作为S.="varname">一种据/E.m>使用基于LU分解的技术去除严格的线性依赖性据E.mCL.作为S.="varname">一种据S.你P.>T.。GyD.F4y2Ba据/S.你P.>据/E.m>据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[46]据/a>.这里据E.mCL.作为S.="varname">一种据/E.m>被认为是排名据E.mCL.作为S.="varname">m据/E.m>.据/P.>据P.>用于解决的方法据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式10.据/a>不同于无拘应的方法的不同之处。首先,初始可行的点据E.mCL.作为S.="varname">X据/E.m>据S.你B.>0.GyD.F4y2Ba据/S.你B.>计算,使用稀疏最小二乘步骤,这样据S.P.an class="inlineequation">斧头据/E.m>据S.你B.>0.GyD.F4y2Ba据/S.你B.>=GyD.F4y2Ba据E.mCL.作为S.="varname">B.据/E.m>据/S.P.an>.其次,算法PCG被替换为减少的预处理缀合物梯度(RPCG),参见据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[46]据/a>,为了计算近似减少的牛顿步骤(或在空的空间中的负曲率方向据E.mCL.作为S.="varname">一种据/E.m>).关键线性代数步骤涉及解决形式的系统据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="bro1a6x-2">
在哪里据S.P.an class="inlineequation">
近似据E.mCL.作为S.="varname">一种据/E.m>(小的非零据E.mCL.作为S.="varname">一种据/E.m>是否设置为零,只要rank不丢失)和据E.mCL.作为S.="varname">C据/E.m>是一个稀疏的对称正面近似逼近据E.mCL.作为S.="varname">H据/E.m>, IE。,据S.P.an class="inlineequation">C据/E.m>=GyD.F4y2Ba据E.mCL.作为S.="varname">H据/E.m>据/S.P.an>.看据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[46]据/a>更多细节。据/P.>据/S.E.CT.一世on>
框约束问题是表单据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="bro1azp-1">
在哪里据E.mCL.作为S.="varname">L.据/E.m>是下限的矢量,据E.mCL.作为S.="varname">你据/E.m>是上限的矢量。一些(或全部)的组件据E.mCL.作为S.="varname">L.据/E.m>可以等于-∞和一些(或全部)组件据E.mCL.作为S.="varname">你据/E.m>可以等于∞。该方法产生一系列严格可行的点。两种技术用于在实现稳健的收敛行为的同时保持可行性。首先,缩放修改的牛顿步骤替换了无约束的牛顿步骤(定义二维子空间据E.mCL.作为S.="varname">S.据/E.m>).第二,据a class="indexterm" name="d122e52499">反射用于增加步长。据/P.>据P.>缩放的修正牛顿阶跃是通过考察库恩-塔克必要条件得到的据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式12.据/a>那据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="bro1azp-2">
在哪里据/P.>据D.一世V.一世D.="d122e52513" class="mediaobject">
和向量据E.mCL.作为S.="varname">V.据/E.m>(据E.mCL.作为S.="varname">X据/E.m>)在下面定义,每个据S.P.an class="inlineequation">1≤.据E.mCL.作为S.="varname">一世据/E.m>≤.。GyD.F4y2Ba据E.mCL.作为S.="varname">N据/E.m>据/S.P.an>:据/P.>据D.一世V.CL.作为S.="itemizedlist">
如果据S.P.an class="inlineequation">G据S.你B.>一世据/S.你B.>据/E.m>据0.GyD.F4y2Ba据/S.P.an>和据S.P.an class="inlineequation">你据S.你B.>一世据/S.你B.>据/E.m>据∞GyD.F4y2Ba据/S.P.an>然后据S.P.an class="inlineequation">V.据S.你B.>一世据/S.你B.>据/E.m>=GyD.F4y2Ba据E.mCL.作为S.="varname">X据S.你B.>一世据/S.你B.>据/E.m>-据E.mCL.作为S.="varname">你据S.你B.>一世据/S.你B.>据/E.m>据/S.P.an> 如果据S.P.an class="inlineequation">G据S.你B.>一世据/S.你B.>据/E.m>≥0.GyD.F4y2Ba据/S.P.an>和据S.P.an class="inlineequation">L.据S.你B.>一世据/S.你B.>据/E.m>>- ∞据/S.P.an>然后据S.P.an class="inlineequation">V.据S.你B.>一世据/S.你B.>据/E.m>=GyD.F4y2Ba据E.mCL.作为S.="varname">X据S.你B.>一世据/S.你B.>据/E.m>-据E.mCL.作为S.="varname">L.据S.你B.>一世据/S.你B.>据/E.m>据/S.P.an> 如果据S.P.an class="inlineequation">G据S.你B.>一世据/S.你B.>据/E.m>据0.GyD.F4y2Ba据/S.P.an>和据S.P.an class="inlineequation">你据S.你B.>一世据/S.你B.>据/E.m>=∞GyD.F4y2Ba据/S.P.an>然后据S.P.an class="inlineequation">V.据S.你B.>一世据/S.你B.>据/E.m>=-1据/S.P.an> 如果据S.P.an class="inlineequation">G据S.你B.>一世据/S.你B.>据/E.m>≥0.GyD.F4y2Ba据/S.P.an>和据S.P.an class="inlineequation">L.据S.你B.>一世据/S.你B.>据/E.m>=-∞据/S.P.an>然后据S.P.an class="inlineequation">V.据S.你B.>一世据/S.你B.>据/E.m>= 1GyD.F4y2Ba据/S.P.an> 非线性系统据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式13.据/a>无处不在的差异。当时发生非增强性据S.P.an class="inlineequation">V.据S.你B.>一世据/S.你B.>据/E.m>= 0.。GyD.F4y2Ba据/S.P.an>.您可以通过保持严格的可行性,即限制来避免这些点据S.P.an class="inlineequation">L.据/E.m>据据E.mCL.作为S.="varname">X据/E.m>据据E.mCL.作为S.="varname">你据/E.m>据/S.P.an>.据/P.>据P.>缩放的修改牛顿步骤据E.mCL.作为S.="varname">S.据S.你B.>K.据/S.你B.>据/E.m>对于所提供的等式的非线性系统据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式13.据/a>被定义为线性系统的解决方案据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="bro1azp-3">
当据E.mCL.作为S.="varname">K.据/E.m>迭代,在哪里据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="bro1azp-4">
和据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="bro1azp-5">
这里据E.mCL.作为S.="varname">j据S.你P.>V.。GyD.F4y2Ba据/S.你P.>据/E.m>扮演雅各的角色|据E.mCL.作为S.="varname">V.据/E.m>|。对角矩阵的每个对角分量据E.mCL.作为S.="varname">j据S.你P.>V.。GyD.F4y2Ba据/S.你P.>据/E.m>等于0,-1或1.如果所有组件据E.mCL.作为S.="varname">L.据/E.m>和据E.mCL.作为S.="varname">你据/E.m>是有限的,据S.P.an class="inlineequation">j据S.你P.>V.。GyD.F4y2Ba据/S.你P.>据/E.m>=诊断(符号(据E.mCL.作为S.="varname">G据/E.m>)))据/S.P.an>.在一个地方据S.P.an class="inlineequation">G据S.你B.>一世据/S.你B.>据/E.m>= 0.。GyD.F4y2Ba据/S.P.an>那据E.mCL.作为S.="varname">V.据S.你B.>一世据/S.你B.>据/E.m>可能不可分辨及。据S.P.an class="inlineequation">
在这样的一点定义。这种类型的非增强性不是令人担忧的原因,因为对于这种组件来说,它的价值并不重要据E.mCL.作为S.="varname">V.据S.你B.>一世据/S.你B.>据/E.m>需要。此外,|据E.mCL.作为S.="varname">V.据S.你B.>一世据/S.你B.>据/E.m>|此时仍然是不连续的,但功能据S.P.an class="inlineequation">|据E.mCL.作为S.="varname">V.据S.你B.>一世据/S.你B.>据/E.m>|·据E.mCL.作为S.="varname">G据S.你B.>一世据/S.你B.>据/E.m>据/S.P.an>是连续的。据/P.>据P.>第二,据a class="indexterm" name="d122e52745">反射用于增加步长。(单个)反射步骤定义如下。给予一步据E.mCL.作为S.="varname">P.据/E.m>它与一个约束条件相交,考虑第一个约束条件相交据E.mCL.作为S.="varname">P.据/E.m>;假设是据E.mCL.作为S.="varname">一世据/E.m>约束约束(无论是据E.mCL.作为S.="varname">一世据/E.m>上面或者据E.mCL.作为S.="varname">一世据/E.m>下限)。然后反射步骤据S.P.an class="inlineequation">P.据S.你P.>R.。GyD.F4y2Ba据/S.你P.>据/E.m>=GyD.F4y2Ba据E.mCL.作为S.="varname">P.据/E.m>据/S.P.an>除了据E.mCL.作为S.="varname">一世据/E.m>分量,在哪里据S.P.an class="inlineequation">P.据S.你P.>R.。GyD.F4y2Ba据/S.你P.>据S.你B.>一世据/S.你B.>据/E.m>=-据E.mCL.作为S.="varname">P.据S.你B.>一世据/S.你B.>据/E.m>据/S.P.an>.据/P.>据/S.E.CT.一世on>
完成预定步骤后,据Code class="literal">主动集据/Code>算法分为两个阶段进行。据/P.>据D.一世V.CL.作为S.="itemizedlist">
阶段1 - 获得所有约束的可行点。据/P.>据/L.一世>据L.一世> 相位2 - 迭代地降低目标函数,同时保持有源约束的列表并在每次迭代中保持可行性。据/P.>据/L.一世>据/你L.>
这据Code class="literal">主动集据/Code>策略(也称为投影方法)类似于Gill等人的策略,在据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[18]据/a>和据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[17]据/a>.据/P.>据S.E.CT.一世on itemprop="content">
该算法首先试图通过去除冗余和简化约束来简化问题。在预解步骤中执行的任务包括:据/P.>据D.一世V.CL.作为S.="itemizedlist">
检查是否有任何变量具有相同的上限和下限。如果是这样,请检查可行性,然后修复并删除变量。据/P.>据/L.一世>据L.一世> 检查是否有任何线性不等式约束涉及只有一个变量。如果是这样,请检查可行性,然后将线性约束更改为绑定。据/P.>据/L.一世>据L.一世> 检查是否有任何线性平等约束涉及一个变量。如果是这样,请检查可行性,然后修复并删除变量。据/P.>据/L.一世>据L.一世> 检查是否有任何线性约束矩阵具有零行。如果是这样,请检查可行性,然后删除行。据/P.>据/L.一世>据L.一世> 确定界限和线性约束是否一致。据/P.>据/L.一世>据L.一世> 检查是否存在任何变量仅在目标函数中显示为线性术语,并且不会出现在任何线性约束中。如果是,请检查可行性和界限,然后在适当的范围内修复变量。据/P.>据/L.一世>据L.一世> 通过添加松弛变量,将线性不等式约束变为线性等式约束。据/P.>据/L.一世>据/你L.>
如果算法检测到不可行或无界问题,则会停止并发出适当的退出消息。据/P.>据P.>该算法可能到达单个可行点,表示解决方案。据/P.>据P.>如果该算法在预定步骤中没有检测到不可行或无界问题,并且如果预定寄存器没有产生解决方案,则该算法继续下次步骤。达到停止标准后,算法重建原始问题,撤消任何预定变换。这一步骤是Postsolve步骤。据/P.>据P.>有关详细信息,请参阅gould和toint据a href="//www.tianjin-qmedu.com/help/optim/ug/selected-bibliography.html" class="a">[63]据/a>.据/P.>据/S.E.CT.一世on>
在第1阶段,算法尝试找到一个点据Code class="literal">X据/Code>满足所有约束,没有考虑目标函数。据Code class="function">Quadprog.据/Code>仅在提供的初始点时运行阶段1算法据Code class="literal">X0.据/Code>是不可行的。据/P.>据P.>首先,算法试图找到一个相对于所有等式约束可行的点,例如据Code class="literal">x = aeq \ beq据/Code>.如果没有解决方案据Code class="literal">X据/Code>到方程式据Code class="literal">aeq * x = beq据/Code>,然后算法停止。如果有解决方案据Code class="literal">X据/Code>,下一步是满足界限和线性不等式。在没有平等约束的情况下据Code class="literal">x = x0据/Code>,初始点。据/P.>据P.>从...开始据Code class="literal">X据/Code>,算法计算据Code class="literal">m = max(a * x - b,x - ub,lb - x)据/Code>.如果据Code class="literal">m <=选项.ConstraintTolerance据/Code>,那点了据Code class="literal">X据/Code>是可行的,并且第1阶段算法停止。据/P.>据P.>如果据Code class="literal">M >选项。ConstraintTolerance据/Code>,算法引入一个非负松弛变量据E.mCL.作为S.="varname">γ.据/E.m>对于辅助线性规划问题据/P.>据D.一世V.一世D.="d122e52870" class="mediaobject">
这样据/P.>据D.一世V.一世D.="d122e52875" class="mediaobject">
这里,据E.mCL.作为S.="varname">ρ据/E.m>是据Code class="literal">ConstraintTolerance据/Code>选项乘以最大元素的绝对值据Code class="literal">一种据/Code>和据Code class="literal">AEQ.据/Code>.如果算法找到据E.mCL.作为S.="varname">γ.据/E.m>= 0.和一个点据E.mCL.作为S.="varname">X据/E.m>那么满足方程和不平等,然后据E.mCL.作为S.="varname">X据/E.m>是一个可行的第1阶段。如果没有解决辅助线性编程问题据E.mCL.作为S.="varname">X据/E.m>和据E.mCL.作为S.="varname">γ.据/E.m>= 0.,那么第1阶段问题是不可行的。据/P.>据P.>要解决辅助线性编程问题,算法集据E.mCL.作为S.="varname">γ.据/E.m>据S.你B.>0.GyD.F4y2Ba据/S.你B.>=m+1,集据E.mCL.作为S.="varname">X据/E.m>据S.你B.>0.GyD.F4y2Ba据/S.你B.>=GyD.F4y2Ba据Code class="literal">X据/Code>,并将活动集初始化为固定变量(如果有)和所有平等约束。该算法重新格式化了线性编程变量据E.mCL.作为S.="varname">P.据/E.m>补偿据E.mCL.作为S.="varname">X据/E.m>从目前来看据E.mCL.作为S.="varname">X据/E.m>据S.你B.>0.GyD.F4y2Ba据/S.你B.>,即据S.P.an class="inlineequation">X据/E.m>=GyD.F4y2Ba据E.mCL.作为S.="varname">X据/E.m>据S.你B.>0.GyD.F4y2Ba据/S.你B.>+GyD.F4y2Ba据E.mCL.作为S.="varname">P.据/E.m>据/S.P.an>.该算法通过相同的迭代解决了线性编程问题,因为它在第2阶段才能解决二次编程问题,具有适当修改的Hessian。据/P.>据/S.E.CT.一世on>
用变量表示据E.mCL.作为S.="varname">D.据/E.m>, 问题是据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="mw_2629e67b-b685-475f-b0dd-284df5e25220">
这里,据E.mCL.作为S.="varname">一种据S.你B.>一世据/S.你B.>据/E.m>指的是据Code class="literal">一世据/Code>th据E.mCL.作为S.="varname">m据/E.m>-经过-据E.mCL.作为S.="varname">N据/E.m>矩阵据E.mCL.作为S.="varname">一种据/E.m>.据/P.>据P.>在第2阶段,活动集据S.P.an class="inlineequation">
,这是解决方案点处的有源约束(约束边界)的估计。据/P.>据P.>该算法更新据S.P.an class="inlineequation">
在每一次迭代据E.mCL.作为S.="varname">K.据/E.m>,形成搜索方向的基础据E.mCL.作为S.="varname">D.据S.你B.>K.据/S.你B.>据/E.m>.平等约束始终保留在活动集中据S.P.an class="inlineequation">
.搜索方向据E.mCL.作为S.="varname">D.据S.你B.>K.据/S.你B.>据/E.m>计算并最大限度地减少目标函数,同时留在任何有源约束边界。该算法形成了可行的子空间据E.mCL.作为S.="varname">D.据S.你B.>K.据/S.你B.>据/E.m>从一个基础据E.mCL.作为S.="varname">Z.据S.你B.>K.据/S.你B.>据/E.m>哪些列正交于活动集的估计据S.P.an class="inlineequation">
(那是,据S.P.an class="inlineequation">
).因此,搜索方向,其由线性求和形成由列的任何组合的据E.mCL.作为S.="varname">Z.据S.你B.>K.据/S.你B.>据/E.m>,保证保留在有源限制的边界上。据/P.>据P.>该算法形成矩阵据E.mCL.作为S.="varname">Z.据S.你B.>K.据/S.你B.>据/E.m>从最后一个据S.P.an class="inlineequation">m据/E.m>-据E.mCL.作为S.="varname">L.据/E.m>据/S.P.an>矩阵QR分解的列据S.P.an class="inlineequation">
, 在哪里据E.mCL.作为S.="varname">L.据/E.m>是活动约束的数量和据E.mCL.作为S.="varname">l < m据/E.m>.那是,据E.mCL.作为S.="varname">Z.据S.你B.>K.据/S.你B.>据/E.m>是(谁)给的据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="mw_96b13d57-b09d-402a-872c-5ef75dba9065">
在哪里据/P.>据D.一世V.一世D.="d122e53034" class="mediaobject">
查找后据E.mCL.作为S.="varname">Z.据S.你B.>K.据/S.你B.>据/E.m>,算法查找新的搜索方向据E.mCL.作为S.="varname">D.据S.你B.>K.据/S.你B.>据/E.m>这最小化据E.mCL.作为S.="varname">问:据/E.m>(据E.mCL.作为S.="varname">D.据/E.m>), 在哪里据E.mCL.作为S.="varname">D.据S.你B.>K.据/S.你B.>据/E.m>处于活动约束的NULL空间。那是,据E.mCL.作为S.="varname">D.据S.你B.>K.据/S.你B.>据/E.m>是列的线性组合据E.mCL.作为S.="varname">Z.据S.你B.>K.据/S.你B.>据/E.m>:据S.P.an class="inlineequation">
为向量据E.mCL.作为S.="varname">P.据/E.m>.据/P.>据P.>以函数查看二次函数据E.mCL.作为S.="varname">P.据/E.m>通过代替据E.mCL.作为S.="varname">D.据S.你B.>K.据/S.你B.>据/E.m>,给予据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="mw_b72019db-cad5-4e7b-b31e-09ed6e39f256">
对这个方程求微分据E.mCL.作为S.="varname">P.据/E.m>产量据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="mw_ed04d075-fa6a-406b-8525-b6deca4bc4fd">
∇据E.mCL.作为S.="varname">问:据/E.m>(据E.mCL.作为S.="varname">P.据/E.m>)据/S.P.an>被称为二次函数的投影梯度,因为它是在所定义的子空间中投影的渐变据E.mCL.作为S.="varname">Z.据S.你B.>K.据/S.你B.>据/E.m>.这个词据S.P.an class="inlineequation">
被称为预计的黑森州。假设预计的黑森州矩阵据S.P.an class="inlineequation">
是正半纤维,最小的功能据E.mCL.作为S.="varname">问:据/E.m>(据E.mCL.作为S.="varname">P.据/E.m>)在所定义的子空间中据E.mCL.作为S.="varname">Z.据S.你B.>K.据/S.你B.>据/E.m>发生时据S.P.an class="inlineequation">∇据E.mCL.作为S.="varname">问:据/E.m>(据E.mCL.作为S.="varname">P.据/E.m>)= 0.据/S.P.an>,这是线性方程系统的解决方案据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="mw_df6ac6c3-5cb0-487c-ad73-2b9365b187eb">
然后算法需要表格的步骤据/P.>据D.一世V.一世D.="d122e53138" class="mediaobject">
在哪里据/P.>据D.一世V.一世D.="d122e53143" class="mediaobject">
由于目标函数的二次性质,步长只有两种选择据E.mCL.作为S.="varname">α.据/E.m>存在于每次迭代。统一的一步据E.mCL.作为S.="varname">D.据S.你B.>K.据/S.你B.>据/E.m>函数的最小值的精确步是否限制在零空间据S.P.an class="inlineequation">
.如果算法可以在不违反约束的情况下拍摄这样的步骤,则此步骤是对二次程序的解决方案(据a href="//www.tianjin-qmedu.com/help/optim/ug/constrained-nonlinear-optimization-algorithms.html" class="a">等式18.据/a>).否则,继续前进据E.mCL.作为S.="varname">D.据S.你B.>K.据/S.你B.>据/E.m>到最近的约束小于Unity,并且该算法包括在下次迭代处的活动集中的新约束。在任何方向上与约束边界的距离据E.mCL.作为S.="varname">D.据S.你B.>K.据/S.你B.>据/E.m>是(谁)给的据/P.>据D.一世V.一世D.="d122e53172" class="mediaobject">
它被定义为不在活动集中的约束以及方向的位置据E.mCL.作为S.="varname">D.据S.你B.>K.据/S.你B.>据/E.m>是朝向约束边界,即,据S.P.an class="inlineequation">
.据/P.>据P.>当活动集包括据E.mCL.作为S.="varname">N据/E.m>独立约束,没有最小的位置,算法计算拉格朗日乘法器据E.mCL.作为S.="varname">λ.据S.你B.>K.据/S.你B.>据/E.m>,满足非奇异线性方程组据/P.>据T.able width="95%" class="programlistingindent table table-condensed" id="mw_495afd99-be2e-432c-9c29-82d50254d906">
如果是所有元素据E.mCL.作为S.="varname">λ.据S.你B.>K.据/S.你B.>据/E.m>是积极的,据E.mCL.作为S.="varname">X据S.你B.>K.据/S.你B.>据/E.m>二次规划问题的最优解是什么据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">等式1据/a>.但是,如果有的话据E.mCL.作为S.="varname">λ.据S.你B.>K.据/S.你B.>据/E.m>是否定的,并且组件不对应于平等约束,然后最小化未完成。该算法删除与最负乘法器对应的元素,并开始新的迭代。据/P.>据P.>有时,当求解器用所有非负拉格朗日乘法器完成时,一阶的最优测量值高于公差,或者不满足约束公差。在这些情况下,求解器试图通过遵循所描述的重新启动过程来达到更好的解决方案据a href="//www.tianjin-qmedu.com/help/optim/ug/quadratic-programming-algorithms.html" class="intrnllnk">[1]据/a>.在此过程中,求解器丢弃当前的有源约束集,放宽一个比特,并在尝试以避免循环的方式解决问题时构造一组新的活动约束,同时以避免循环的方式(重复返回到相同状态)。如有必要,求解器可以多次执行重启过程。据/P.>据D.一世V.CL.作为S.="alert alert-info">
笔记据/S.T.R.ong> 不要试图通过设置大值提前停止算法据Code class="literal">ConstraintTolerance据/Code>和据Code class="literal">最优法据/Code>选项。通常,求解器迭代时不检查这些值,直到它到达一个可能的停止点,然后才检查公差是否满足。据/P.>据/D.一世V.>据P.>偶尔,偶尔据Code class="literal">主动集据/Code>算法可能难以检测到问题无限制时。如果无铅的方向,可能会出现此问题据E.mCL.作为S.="varname">V.据/E.m>是二次术语的方向据E.mCL.作为S.="varname">v'hv.据/E.m>= 0.。对于数值稳定性,并启用凿色分解,据Code class="literal">主动集据/Code>算法增加一个小的,严格凸项的二次目标。这个小项使目标函数的界限远离-据Code class="literal">INF.据/Code>.在这种情况下,据Code class="literal">主动集据/Code>算法达到迭代限制,而不是报告解决方案是无界限的。换句话说,算法停止退出标志据Code class="literal">0.据/Code>代替 -据Code class="literal">3.据/Code>.据/P.>据D.一世V.CL.作为S.="bibliography">
[1] Gill,P. E.,W.Murray,M. A. Saunders和M. H. Wright。据E.mCL.作为S.="citetitle">一种实用的线性约束优化反循环算法。据/E.m>数学。编程45(1),1989年8月,PP。437-474。据/P.>据/D.一世V.>据/D.一世V.>据/section>
预条件共轭梯度法据/h4>
线性等式约束据/h4>
(10)据/S.T.R.ong>
(11)据/S.T.R.ong>
箱约束据/h4>
(12)据/S.T.R.ong>
(13)据/S.T.R.ong>
(14)据/S.T.R.ong>
(15)据/S.T.R.ong>
(16)据/S.T.R.ong>
主动集据/Code>
Quadprog.据/Code>算法据/h3>
预定步骤据/h4>
第1阶段算法据/h4>
阶段2算法据/h4>
(17)据/S.T.R.ong>
(18)据/S.T.R.ong>
(19)据/S.T.R.ong>
(20)据/S.T.R.ong>
(21)据/S.T.R.ong>
(22)据/S.T.R.ong>
参考据/h2>