700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python编程--通过单纯形法和scipy库实现线性规划以及通过拉格朗日来求解非线性

python编程--通过单纯形法和scipy库实现线性规划以及通过拉格朗日来求解非线性

时间:2019-09-25 15:29:52

相关推荐

python编程--通过单纯形法和scipy库实现线性规划以及通过拉格朗日来求解非线性

例题

首先,我们通过单纯法来求解该例题

新建“data.txt”文件存放

2 1 1 0 0 0 0

0 2 -1 1 0 0 -2

1 -1 1 0 1 0 2

0 1 -1 0 0 1 1

import numpy as npdef 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 for x in m[1:] if x!=0])) #转出下标s[inum-1] = jnumr = d[inum][jnum]d[inum] /= rfor i in [x for x in range(bn) if x !=inum]:r = d[i][jnum]d[i] -= r * d[inum] def solve(d,bn):flag = Truewhile flag:if max(list(d[0][:-1])) <= 0: #直至所有系数小于等于0flag = Falseelse:pivot(d,bn) 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]))d = np.loadtxt("data", dtype=np.float)(bn,cn) = d.shapes = list(range(cn-bn,cn-1)) #基变量列表solve(d,bn)printSol(d,cn)

结果如下图

接下来我们通过python包来解该例题

#导入包from scipy import optimizeimport numpy as np#确定c,A_ub,B_ubc = np.array([2,1,1])A_ub = np.array([[0,-2,1],[0,1,-1]])B_ub = np.array([-2,1])#求解res =optimize.linprog(-c,A_ub,B_ub)print(res)

结果如下图

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。