单纯形法
单纯形法是一种迭代算法,其基本原理就是从线性规划问题的一个基可行解出发,通过不断变化基变量,寻找到使得目标函数取得最优解的基可行解,也可以理解为从单纯形上的一个顶点走向另一个顶点,直到在某个顶点上目标函数取得最优值为止。
单纯形法的解题步骤
1)、把线性规划问题的约束方程组表达成典范型方程组,找出基本可行解作为初始基本可行解。
2)、若基本可行解不存在,即约束条件有矛盾,则问题无解。
3)、若基本可行解存在,从初始基本可行解作为起点,根据最优性条件和可行性条件,引入非基变量取代某一基变量,找出目标函数值更优的另一基本可行解
4)、按步骤3进行迭代,直到对应检验数满足最优性条件(这时目标函数值不能再改善),即得到问题的最优解。
5)、若迭代过程中发现问题的目标函数值无界,则终止迭代。
具体代码如下
import numpy as np
def pivot(d,bn):
l = list(d[0][:-2])
jnum = l.index(max(l)) #转入编号
m = []
for i in range(bn):
if d[i][jnum] == 0:
m.append(0.)
else:
m.append(d[i][-1]/d[i][jnum])
inum = m.index(min([x