一些优化求解器接受线性约束,这是对解的限制x满足线性等式或不等式。接受线性约束的求解器包括fmincon
,intlinprog
,linprog
,lsqlin
,quadprog
、多目标求解器等全局优化工具箱解决者。
线性不等式约束有这种形式A·x≤b.当一个是米——- - - - - -n,有米变量的约束x与n组件。你提供米——- - - - - -n矩阵一个和米分矢量b.
通过线性不等式约束一个
和b
参数。
例如,假设有以下线性不等式作为约束条件:
x1+x3.≤4,
2x2- - - - - -x3.≥2,
x1- - - - - -x2+x3.- - - - - -x4≥9。
在这里,米= 3和n= 4.
用下面的矩阵写出这些约束条件一个和向量b:
注意,“大于”不等式首先要乘以-1,使其变成“小于”不等式形式。在MATLAB®语法:
A = [1 0 1 0;0 -2 1 0;-1 1 -1 1];b =(4; 2、9);
你不需要为线性约束提供梯度;求解器会自动计算它们。线性约束不影响Hessians。
即使你通过了初始点x0
作为一个矩阵,求解器通过当前点x作为线性约束的列向量。看到矩阵的参数.
有关线性约束的更复杂的例子,请参见建立一个线性程序,基于求解器.
中间迭代会违反线性约束。看到迭代会违反约束.
线性等式有这样的形式Aeq·x =说真的代表米方程,n分矢量x.你提供米——- - - - - -n矩阵Aeq和米分矢量说真的.
传递线性等式约束Aeq
和说真的
参数以相同的方式描述一个
和b
参数在线性不等式约束.