单纯形法是一种常用于线性规划问题的算法,其主要步骤如下:
将标准形式的线性规划问题转化为矩阵形式,即确定决策变量和约束条件的系数矩阵、目标函数的系数向量以及约束条件的取值范围。
构造初始的单纯形表,即将系数矩阵按行向量逐个放入单纯形表的行中,并将目标函数的系数向量加入到单纯形表的底部。同时,对于每个非基变量,设其对应的列向量为 $a_{j}$,则在该列向量中除了第 $i$ 行元素外,其余元素都为 $0$,第 $i$ 行元素为 $1$,表示该非基变量对应的基变量为第 $i$ 个基变量。
判断当前单纯形表是否为最优解。如果目标函数系数向量的所有元素均为非负数,则当前解为最优解,算法结束。
在单纯形表中选择一个入基变量。首先选择目标函数系数向量中第一个负数元素对应的列向量 $a_{j}$,如果不存在这样的列向量,则当前问题无可行解,算法结束。如果存在多个负数元素对应的列向量,可以任选其中一个作为入基变量。
在选择的入基变量对应的列向量中,选择一个出基变量。具体来说,对于第 $j$ 列,设其对应的基变量为第 $i$ 个基变量,需要找到一个第 $i$ 行元素大于 $0$ 的位置 $k$,使得 $frac{b_{k}}{a_{kj}}$ 取最小值。这个位置的行下标 $k$ 就是出基变量所对应的行下标。
利用选择的入基变量和出基变量,更新单纯形表。具体来说,首先将第 $k$ 行除以 $a_{kj}$,使得 $a_{kj}=1$。然后,对于除第 $k$ 行外的每一行 $l$,将其第 $j$ 列元素除以 $a_{kj}$,再将其减去第 $k$ 行的对应元素乘以 $a_{lj}$。这样,就得到了一个新的单纯形表,即更新后的单纯形表。
重复执行步骤 3 至 6,直到得到最优解或者发现问题无可行解为止。