一、线性规划
1.1 线性规划问题
1.1.1 线性规划的定义
线性规划(Linear Programming)是在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题。
1.1.2 线性规划问题的解
一般线性规划问题的(数学)标准模型为:
max z=∑j=1ncjxjs. t.{∑j=1nai,jxj=bi,i=1,2,...,mxj≥0,j=1,2,...,n\max_{}\space z=\sum_{j=1}^{n} c_jx_j\\
s.\ t. \begin{cases}\sum_{j=1}^{n}a_{i,j}x_j=b_i,i=1,2,...,m \\x_j\ge0,j=1,2,...,n\end{cases}max z=j=1∑ncjxjs. t.{∑j=1nai,jxj=bi,i=1,2,...,mxj≥0,j=1,2,...,n
其中,bi≥0b_i\ge0bi≥0。
可行解:满足约束条件的解,使目标函数达到最值的可行解成为最优解。
可行域:所有可行解构成的集合,记为R。
1.1.3 线性规划的Matlab标准形式及求解
minfTxs. t.{A⋅x≤b,Aeq⋅x=beq,lb≤x≤ubminf^Tx\\
s.\space t. \left\{\begin{matrix} A\cdot x\le b,\\Aeq \cdot x=beq, \\lb \le x \le ub\end{matrix}\right.minfTxs. t.⎩⎨⎧A⋅x≤b,Aeq⋅x=beq,lb≤x≤ub
其中,f,x,b,beq,lb,ubf,x,b,beq,lb,ubf,x,b,beq,lb,ub为列向量,fff称为价值向量,bbb称为资源向量;A,AeqA,AeqA,Aeq为矩阵。
Matlab中求解线性规划的命令为:
[x,fval] = linprog(f,A,b)
[x,fval] = linprog(f,A,b,Aeq,beq)
[x,fval] = linprog(f,A,b,Aeq,beq,lb,ub)
x返回决策变量的取值;fval返回目标函数的最优值。
c=[2;3;1];
A=[1,4,2;3,2,0];
b=[8;6];
[x,y]=linprog(c,-A,-b,[],[],zeros(3,1))
1.1.4 可转化为线性规划的问题