Python学习之单纯形法1.0

一、效果图

在这里插入图片描述

二、单纯形法的实现

1.准备一个txt文件,里面放置一个矩阵,将文件导入PyCharm中

在这里插入图片描述
在这里插入图片描述

2.代码

在这里插入图片描述
注意:记得将路径改为自己存放txt文件的路径!!!

import numpy as np
#定义线性回归系数模型
def pivot(d,b):
    l = list(d[0][:-2])
    num = l.index(max(l)) #转入编号
    m = []
    for i in range(b):
        if d[i][num] == 0:
            m.append(0.)
        else:
            m.append(d[i][-1] / d[i][num])
    inum = m.index(min([x for x in m[1:] if x!=0]))  #转出下标
    s[inum-1] = num
    r = d[inum][num]
    d[inum] /= r
    for i in [x for x in range(b) if x != inum]:
        r = d[i][num]
        d[i] -= r * d[inum]
#定义基变量函数
def solve(d,b):
    flag = True
    while flag:
        if max(list(d[0][:-1])) <= 0: #直至所有系数小于等于0
            flag = False
        else:
            pivot(d, b)
#输出变量
def printSol(d,c):
    for i in range(c - 1):
        if i in s:
            print("x"+str(i)+"=%.2f" % d[s.index(i)+1][-1])
        else:
            print("x"+str(i)+"=0.00")
    print("目标 is %.2f"%(-d[0][-1]))
d = np.loadtxt("D:\\Users\\Admin\\PycharmProjects\\learn_torch\\hh.txt", dtype=np.float)
(b, c) = d.shape
s = list(range(c - b, c - 1)) #基变量列表
solve(d, b)
printSol(d, c)

from scipy import optimize
import numpy as np
c = np.array([2,3])
A = np.array([[1,2], [4,1],[4,0]])
B = np.array([8,16,12])
r =optimize.linprog(-c, A, B)
print(r)

猜你喜欢

转载自blog.csdn.net/qq_61963074/article/details/126739841