线性规划定义:在一组线性约束条件(s.t.)的限制下,求一线性目标函数最值的问题
一般线性规划问题的Matlab标准型为:
其中f, x, b, beq, lb, ub 均为列向量,A, Aeq 为矩阵
符号 | 名称 |
---|---|
f | 价值向量 |
x | 决策向量 |
b | 资源向量 |
lb | 下限向量 |
ub | 上限向量 |
满足约束条件的解被称为可行解,使目标函数达到最大的解称为最优解
所有可行解构成的集合成为问题的可行域,记为R
matlab 求解方程为:
[ x, y ] = linprog( f, A, b)
[ x, y ] = linprog( f, A, b, Aeq, beq)
[ x, y ] = linprog( f, A, b, Aeq, beq, lb, ub)
x 返回决策向量的最优取值,fval 返回目标函数最优解,若没有相应约束条件,则对应位置数据为空:[]
代码模板:
变式1:
我们知道:对于任意实数 x,总存在非负实数 u 和 v,使得 。
证明如下:
当 时,x = u 且 v = 0;当 时,x = -v且 u=0。
如此一来,我们可以表示出 u 和 v:
我们可以把上面的问题变为:
化为矩阵形式:
其中:
返回的 y 是一个长度为 2n 的列向量,其前 n 个元素为 u,后 n 个元素为 v,因此我们可以通过 y 计算 x:
x = y(1:n) - y(n+1:end)
代码模板:
变式2:
其中 是关于 和 的表达式。
我们令 ,所以约束条件为:,即: