温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python中如何实现线性规划

发布时间:2021-08-10 17:39:28 来源:亿速云 阅读:218 作者:Leah 栏目:编程语言

python中如何实现线性规划,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

说明

1、图解法,用几何绘图的方法,求出最优解。

中学就讲过这种方法,在经济学研究中非常常用。

2、矩阵法,引入松弛变量。

将线性规划问题转化为增广矩阵形式,然后逐步解决,是简单性法之前的典型方法;

3、单纯法,利用多面体在可行领域逐步构建新的顶点,不断逼近最优解。

是线性规划研究的里程碑,至今仍是最重要的方法之一;

4、内点法。

通过选择可行域内点沿下降方向不断迭代,达到最佳解决方案,是目前理论上最好的线性规划问题解决方案;

5、启发法。

依靠经验准则不断迭代改进,搜索最优解,如贪心法、模拟退火、遗传算法、神经网络等。

单纯法实例

import numpy as np #导入相应的库
import sys
def solve(d,bn):
    while max(list(d[0][:-1])) > 0:
        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 for x in m[1:] if x!=0])) #转出下标
        s[inum-1] = jnum  #更新基变量
        d[inum] /= d[inum][jnum]
        for i in range(bn):
            if i != inum:
                d[i] -= d[i][jnum] * d[inum]
            
def printSol(d,cn):
    for i in range(cn - 1):
        if i in s:
            print("x"+str(i)+"=%.2f" %d[s.index(i)+1][-1])
        else:
            print("x"+str(i)+"=0.00")
    print("objective is %.2f"%(-d[0][-1]))

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI