联系我:ligong15 AT foxmail.com
2020年春节期间疫情期间完成此部分内容学习回顾
之前一直使用Gurobi对各种整数规划以及线性规划模型进行求解,单纯形法一直未曾实现,借春节休息时间进行完成。
首先弥补单纯形法的理论基础。此前学习过程中经常是使用的时候再去回顾一下,机理并未参透,今日看到了单纯形法直观解释(记为博客1)与单纯形法理论解释(记为博客2)。
通过两篇文章,对单纯形法进行了实施,值得注意的是,实现过程中,变动的为基可行解,那么基可行解对应的B以及其逆矩阵可以通过numpy很简单的求解出来,检验数也可以通过下式很方便的求得。
入基所需步骤:此时xb,xn确定。1、获取B,获取B的逆矩阵;2、通过下式获取检验数构成的向量;3、根据目标函数max或是min,选取向量中对应的换入变量。若是求min,则是向量中小于零的最小值,即,选此变量,能使目标函数进一步减小;若是求max,则是向量中大于零的最大值,即,选此变量,能使目标函数进一步增大。
出基所需步骤:出基则是在确定换入变量的基础上,选取合适的基变量,将其替换为入基所获取的换入变量。类比次梯度法,入基相当于确定方向,出基相当于确定步长。此部分摘录博客1中相应内内容:
在求换出变量的过程中,需要计算值,值的求解为单纯形表中,当前单纯形表为,当前等式右端为,那么值计算所需元素均已获取,可以进行值的计算。
对以上进行归纳,每次迭代过程中,不对单纯形表进行完全的计算与存储。:
1、直接已知数据:,,,,;
2、间接已知数据:,,,,,,
3、计算数据:检验数,
代码详见我的GitHub