二次规划算法
二次规划的定义
找到一个向量的二次规划问题x 是一个二次函数最小化,可能受线性约束:
(1)年代trong>
这样<年代pan class="inlineequation">·x≤b,Aeq·x=说真的,l≤x≤u年代pan>。
年代ect我on>
interior-point-convexquadprog算法
的interior-point-convex 算法执行以下步骤:
请注意年代trong>
该算法有两个代码路径。海赛矩阵时需要一个H 是一个普通的(全部)矩阵的双打,和其他需要的什么时候H 是一个稀疏矩阵。稀疏数据类型的详细信息,请参阅稀疏矩阵 。一般来说,该算法更快的大问题,有相对较少的非零项当你指定H 作为稀疏的。同样,该算法更快的为小型或相对密集的问题当你指定H 作为完整的。
<年代ect我on itemprop="content">
Presolve / Postsolve
该算法首先尝试通过删除冗余和简化约束简化问题。presolve阶段中执行的任务可以包括以下:
检查如果任何变量有上界和下界。如果是这样的话,检查的可行性,然后修复和删除变量。
检查任何线性不等式约束只涉及一个变量。如果是这样的话,检查的可行性,然后改变线性约束绑定。
检查任何线性等式约束包括只有一个变量。如果是这样的话,检查的可行性,然后修复和删除变量。
检查任何线性约束矩阵为零行。如果是这样的话,检查的可行性,然后删除行。
确定范围和线性约束是一致的。
检查任何变量只出现在目标函数为线性的条件并没有出现在任何线性约束。如果是这样的话,检查可行性和有界性,然后固定在适当的范围的变量。
改变任何线性不等式约束线性等式约束通过增加松弛变量。
如果算法检测到一个不可行或无限问题,停止和一个适当的出口问题的消息。
gydF4y2Ba算法可能到达一个可行点,代表了解决方案。
gydF4y2Ba如果算法没有检测到一个不可行或无限问题在presolve步骤中,如果presolve还没有产生解决方案,该算法继续下一个步骤。达到停止条件后,该算法重建原始问题,取消任何presolve转换。这最后一步是postsolve一步。
,gydF4y2Ba古尔德和Toint[63] 。
年代ect我on>
生成初始点
起始点x0 的算法是:
初始化x0 来的(n, 1) ,在那里n 的行数在吗H 。
都一个上界的组件乌兰巴托 和一个下界磅 ,如果一个组件x0 没有严格界限内,组件被设置为(乌兰巴托+磅)/ 2 。
对于只有一个绑定的组件,必要时修改组件严格躺在里面的束缚。
预测步骤(见预估 ),与小修正的可行性,而不是一个完整的预估的一步。起始点靠近这个地方中央路径 没有必然的开销一个完整的预估的一步。中央路径的详细信息,请参见Nocedal和赖特[7] ,397页。
二次规划的定义
找到一个向量的二次规划问题
这样<年代pan class="inlineequation">·x≤
interior-point-convexquadprog算法
的interior-point-convex 算法执行以下步骤:
请注意年代trong>
该算法有两个代码路径。海赛矩阵时需要一个H 是一个普通的(全部)矩阵的双打,和其他需要的什么时候H 是一个稀疏矩阵。稀疏数据类型的详细信息,请参阅稀疏矩阵 。一般来说,该算法更快的大问题,有相对较少的非零项当你指定H 作为稀疏的。同样,该算法更快的为小型或相对密集的问题当你指定H 作为完整的。
<年代ect我on itemprop="content">
Presolve / Postsolve
该算法首先尝试通过删除冗余和简化约束简化问题。presolve阶段中执行的任务可以包括以下:
检查如果任何变量有上界和下界。如果是这样的话,检查的可行性,然后修复和删除变量。
检查任何线性不等式约束只涉及一个变量。如果是这样的话,检查的可行性,然后改变线性约束绑定。
检查任何线性等式约束包括只有一个变量。如果是这样的话,检查的可行性,然后修复和删除变量。
检查任何线性约束矩阵为零行。如果是这样的话,检查的可行性,然后删除行。
确定范围和线性约束是一致的。
检查任何变量只出现在目标函数为线性的条件并没有出现在任何线性约束。如果是这样的话,检查可行性和有界性,然后固定在适当的范围的变量。
改变任何线性不等式约束线性等式约束通过增加松弛变量。
如果算法检测到一个不可行或无限问题,停止和一个适当的出口问题的消息。
gydF4y2Ba算法可能到达一个可行点,代表了解决方案。
gydF4y2Ba如果算法没有检测到一个不可行或无限问题在presolve步骤中,如果presolve还没有产生解决方案,该算法继续下一个步骤。达到停止条件后,该算法重建原始问题,取消任何presolve转换。这最后一步是postsolve一步。
,gydF4y2Ba古尔德和Toint[63] 。
年代ect我on>
生成初始点
起始点x0 的算法是:
初始化x0 来的(n, 1) ,在那里n 的行数在吗H 。
都一个上界的组件乌兰巴托 和一个下界磅 ,如果一个组件x0 没有严格界限内,组件被设置为(乌兰巴托+磅)/ 2 。
对于只有一个绑定的组件,必要时修改组件严格躺在里面的束缚。
预测步骤(见预估 ),与小修正的可行性,而不是一个完整的预估的一步。起始点靠近这个地方中央路径 没有必然的开销一个完整的预估的一步。中央路径的详细信息,请参见Nocedal和赖特[7] ,397页。
quadprog算法
的interior-point-convex 算法执行以下步骤:
请注意年代trong>
该算法有两个代码路径。海赛矩阵时需要一个H 是一个普通的(全部)矩阵的双打,和其他需要的什么时候H 是一个稀疏矩阵。稀疏数据类型的详细信息,请参阅稀疏矩阵 。一般来说,该算法更快的大问题,有相对较少的非零项当你指定H 作为稀疏的。同样,该算法更快的为小型或相对密集的问题当你指定H 作为完整的。
<年代ect我on itemprop="content">
Presolve / Postsolve
该算法首先尝试通过删除冗余和简化约束简化问题。presolve阶段中执行的任务可以包括以下:
检查如果任何变量有上界和下界。如果是这样的话,检查的可行性,然后修复和删除变量。
检查任何线性不等式约束只涉及一个变量。如果是这样的话,检查的可行性,然后改变线性约束绑定。
检查任何线性等式约束包括只有一个变量。如果是这样的话,检查的可行性,然后修复和删除变量。
检查任何线性约束矩阵为零行。如果是这样的话,检查的可行性,然后删除行。
确定范围和线性约束是一致的。
检查任何变量只出现在目标函数为线性的条件并没有出现在任何线性约束。如果是这样的话,检查可行性和有界性,然后固定在适当的范围的变量。
改变任何线性不等式约束线性等式约束通过增加松弛变量。
如果算法检测到一个不可行或无限问题,停止和一个适当的出口问题的消息。
gydF4y2Ba算法可能到达一个可行点,代表了解决方案。
gydF4y2Ba如果算法没有检测到一个不可行或无限问题在presolve步骤中,如果presolve还没有产生解决方案,该算法继续下一个步骤。达到停止条件后,该算法重建原始问题,取消任何presolve转换。这最后一步是postsolve一步。
,gydF4y2Ba古尔德和Toint[63] 。
年代ect我on>
生成初始点
起始点x0 的算法是:
初始化x0 来的(n, 1) ,在那里n 的行数在吗H 。
都一个上界的组件乌兰巴托 和一个下界磅 ,如果一个组件x0 没有严格界限内,组件被设置为(乌兰巴托+磅)/ 2 。
对于只有一个绑定的组件,必要时修改组件严格躺在里面的束缚。
预测步骤(见预估 ),与小修正的可行性,而不是一个完整的预估的一步。起始点靠近这个地方中央路径 没有必然的开销一个完整的预估的一步。中央路径的详细信息,请参见Nocedal和赖特[7] ,397页。
预估
稀疏和全interior-point-convex算法主要在预估阶段不同。算法是相似的,但在一些细节不同。对于基本的算法描述,看到Mehrotra
gydF4y2Ba算法首先将线性不等式Ax < = b的不等式形式Ax > = b, A和b乘以1。这没有影响的解决方案,但使相同的形式发现的问题在一些文学作品。
稀疏的预估。年代trong>类似于