二次规划算法
二次规划定义
二次规划是求向量的问题x 使二次函数最小化,可能受线性约束:
(1)年代trong>
这样<年代pan class="inlineequation">·x≤b,Aeq·x =说真的 ,l ≤x≤u年代pan>.
年代ect我on>
interior-point-convexquadprog算法
的interior-point-convex 算法执行以下步骤:
请注意年代trong>
该算法有两条编码路径。当黑森矩阵是1H 是一个普通的(完整的)双精度矩阵,当它取另一个时H 是一个稀疏矩阵。有关稀疏数据类型的详细信息,请参见稀疏矩阵 .通常,对于指定的非零项相对较少的大问题,该算法速度更快H 作为稀疏的.类似地,当您指定时,该算法对于较小或相对密集的问题更快H 作为完整的.
<年代ect我on itemprop="content">
Presolve / Postsolve
该算法首先试图通过去除冗余和简化约束来简化问题。预解步骤中执行的任务包括以下内容:
检查变量是否有相等的上界和下界。如果是,检查可行性,然后修复和删除变量。
检查是否任何线性不等式约束只涉及一个变量。如果是,检查可行性,然后将线性约束更改为边界。
检查是否任何线性等式约束只涉及一个变量。如果是,检查可行性,然后修复和删除变量。
检查是否有线性约束矩阵为零行。如果存在,请检查是否可行,然后删除这些行。
确定边界和线性约束是否一致。
检查是否有变量仅作为线性项出现在目标函数中,而没有出现在任何线性约束中。如果是,检查可行性和有界性,然后将变量固定在适当的边界上。
通过添加松弛变量,将任何线性不等式约束更改为线性等式约束。
如果算法检测到一个不可行的或无界的问题,它将停止并发出适当的退出消息。
gydF4y2Ba算法可能会到达一个单一的可行点,它代表解决方案。
gydF4y2Ba如果算法在预解步骤中没有检测到不可行或无界问题,并且如果预解没有产生解,则算法继续进行下一个步骤。在达到一个停止准则后,算法重建原始问题,撤销任何预解变换。最后一步是后解步骤。
gydF4y2Ba详情见Gould and Toint[63] .
年代ect我on>
生成初始点
起始点x0 其中,算法为:
初始化x0 来的(n, 1) ,在那里n 行数是多少H .
对于有上界的分量乌兰巴托 还有一个下界磅 的组成部分x0 是不是严格在边界内,组件被设置为(ub + lb)/2 .
对于只有一个边界的组件,如果有必要,可以修改该组件,使其严格位于边界内。
采取预测步骤(参见预估 ),对可行性进行了微小的修正,而不是一个完整的预测-校正步骤。这使得起始点更接近中央路径 不需要整个预测-校正步骤的开销。关于中心路径的详细信息,请参见Nocedal和Wright[7] 第397页。
二次规划定义
二次规划是求向量的问题
这样<年代pan class="inlineequation">·x≤
interior-point-convexquadprog算法
的interior-point-convex 算法执行以下步骤:
请注意年代trong>
该算法有两条编码路径。当黑森矩阵是1H 是一个普通的(完整的)双精度矩阵,当它取另一个时H 是一个稀疏矩阵。有关稀疏数据类型的详细信息,请参见稀疏矩阵 .通常,对于指定的非零项相对较少的大问题,该算法速度更快H 作为稀疏的.类似地,当您指定时,该算法对于较小或相对密集的问题更快H 作为完整的.
<年代ect我on itemprop="content">
Presolve / Postsolve
该算法首先试图通过去除冗余和简化约束来简化问题。预解步骤中执行的任务包括以下内容:
检查变量是否有相等的上界和下界。如果是,检查可行性,然后修复和删除变量。
检查是否任何线性不等式约束只涉及一个变量。如果是,检查可行性,然后将线性约束更改为边界。
检查是否任何线性等式约束只涉及一个变量。如果是,检查可行性,然后修复和删除变量。
检查是否有线性约束矩阵为零行。如果存在,请检查是否可行,然后删除这些行。
确定边界和线性约束是否一致。
检查是否有变量仅作为线性项出现在目标函数中,而没有出现在任何线性约束中。如果是,检查可行性和有界性,然后将变量固定在适当的边界上。
通过添加松弛变量,将任何线性不等式约束更改为线性等式约束。
如果算法检测到一个不可行的或无界的问题,它将停止并发出适当的退出消息。
gydF4y2Ba算法可能会到达一个单一的可行点,它代表解决方案。
gydF4y2Ba如果算法在预解步骤中没有检测到不可行或无界问题,并且如果预解没有产生解,则算法继续进行下一个步骤。在达到一个停止准则后,算法重建原始问题,撤销任何预解变换。最后一步是后解步骤。
gydF4y2Ba详情见Gould and Toint[63] .
年代ect我on>
生成初始点
起始点x0 其中,算法为:
初始化x0 来的(n, 1) ,在那里n 行数是多少H .
对于有上界的分量乌兰巴托 还有一个下界磅 的组成部分x0 是不是严格在边界内,组件被设置为(ub + lb)/2 .
对于只有一个边界的组件,如果有必要,可以修改该组件,使其严格位于边界内。
采取预测步骤(参见预估 ),对可行性进行了微小的修正,而不是一个完整的预测-校正步骤。这使得起始点更接近中央路径 不需要整个预测-校正步骤的开销。关于中心路径的详细信息,请参见Nocedal和Wright[7] 第397页。
quadprog算法
的interior-point-convex 算法执行以下步骤:
请注意年代trong>
该算法有两条编码路径。当黑森矩阵是1H 是一个普通的(完整的)双精度矩阵,当它取另一个时H 是一个稀疏矩阵。有关稀疏数据类型的详细信息,请参见稀疏矩阵 .通常,对于指定的非零项相对较少的大问题,该算法速度更快H 作为稀疏的.类似地,当您指定时,该算法对于较小或相对密集的问题更快H 作为完整的.
<年代ect我on itemprop="content">
Presolve / Postsolve
该算法首先试图通过去除冗余和简化约束来简化问题。预解步骤中执行的任务包括以下内容:
检查变量是否有相等的上界和下界。如果是,检查可行性,然后修复和删除变量。
检查是否任何线性不等式约束只涉及一个变量。如果是,检查可行性,然后将线性约束更改为边界。
检查是否任何线性等式约束只涉及一个变量。如果是,检查可行性,然后修复和删除变量。
检查是否有线性约束矩阵为零行。如果存在,请检查是否可行,然后删除这些行。
确定边界和线性约束是否一致。
检查是否有变量仅作为线性项出现在目标函数中,而没有出现在任何线性约束中。如果是,检查可行性和有界性,然后将变量固定在适当的边界上。
通过添加松弛变量,将任何线性不等式约束更改为线性等式约束。
如果算法检测到一个不可行的或无界的问题,它将停止并发出适当的退出消息。
gydF4y2Ba算法可能会到达一个单一的可行点,它代表解决方案。
gydF4y2Ba如果算法在预解步骤中没有检测到不可行或无界问题,并且如果预解没有产生解,则算法继续进行下一个步骤。在达到一个停止准则后,算法重建原始问题,撤销任何预解变换。最后一步是后解步骤。
gydF4y2Ba详情见Gould and Toint[63] .
年代ect我on>
生成初始点
起始点x0 其中,算法为:
初始化x0 来的(n, 1) ,在那里n 行数是多少H .
对于有上界的分量乌兰巴托 还有一个下界磅 的组成部分x0 是不是严格在边界内,组件被设置为(ub + lb)/2 .
对于只有一个边界的组件,如果有必要,可以修改该组件,使其严格位于边界内。
采取预测步骤(参见预估 ),对可行性进行了微小的修正,而不是一个完整的预测-校正步骤。这使得起始点更接近中央路径 不需要整个预测-校正步骤的开销。关于中心路径的详细信息,请参见Nocedal和Wright[7] 第397页。
预估
稀疏内点凸算法和全内点凸算法的区别主要在于预测-校正阶段。算法是相似的,但在一些细节上有所不同。基本算法描述请参见Mehrotra
gydF4y2Ba算法首先将线性不等式Ax <= b转化为Ax >= b形式的不等式A和b乘以-1。这与解决方案没有关系,但使问题的形式与一些文献中发现的相同。
稀疏的预估。年代trong>类似于