线性规划
线性规划
标准型
\[\large\begin{matrix}
\text{maximize}&\sum\limits_{j=1}^n c_jx_j&\\
\text{s.t.}&\sum\limits_{j=1}^n a_{i,j}x_j\leqslant b_i,&i=1,2,\cdots,m\\
&x_j\geqslant 0,&j=1,2,\cdots,n
\end{matrix}
\]
用矩阵表示:
\[\large\begin{matrix}
\text{maximize}&\text c^T\text x&\\
\text{s.t.}&A\text x \leqslant \text b\\
&\text x \geqslant 0
\end{matrix}
\]
所有线性规划问题都可以通过变换来用标准型表示。若某个变量 \(x\) 无限制,则可以将其拆为两个非负变量 \(x_0,x_1\),使得 \(x=x_0-x_1\)。
松弛型
\[\large\begin{matrix}
\text{maximize}&\sum\limits_{j=1}^n c_jx_j&\\
\text{s.t.}&x_{i+n}=b_i-\sum\limits_{j=1}^n a_{i,j}x_j,&i=1,2,\cdots,m\\
&x_j\geqslant 0,&j=1,2,\cdots,n+m
\end{matrix}
\]
用松弛型表示就能使所有约束条件都是等式,这样可以避免不等号变号的问题。
单纯形
发现所有可行解构成的区域,即解空间,是一个凸形区域,因此局部最优解的值有且仅有一个,并且等于全局最优解的值,所以使用一个类似爬山的算法求解最优解时不用担心算法会陷入一个局部最优解。单纯形就是那个类似爬山的算法。
设松弛型中等式左侧形如 \(x_{i+n}\) 的变量为基变量,等式右侧形如 \(x_j\) 的变量为非基变量。当常数项 \(b_i\) 非负时,一组基变量和非基变量就存在着一个基本解,即基变量的值为 \(b_i\),非基变量的值为 \(0\)。
得到可行解后,进行一个操作叫转轴 \(pivot\),就是互换一个基变量和一个非基变量,如:
\[\large x_B=b_i-\sum_{j=1}^na_{i,j}x_j \Rightarrow x_N=\frac{1}{a_{i,N}}(b_i-\sum_{j\neq N}a_{i,j}x_j-x_B)
\]
把其他等式和答案函数中的 \(x_N\) 也都替换掉。

浙公网安备 33010602011771号