单纯形法python
单纯形法(simplex method)是一种用于线性规划问题的求解算法。下面是一个使用Python实现单纯形法的示例代码:
import numpy as np
def simplex(c, A, b):
m, n = A.shape
B = np.eye(m)
N = np.eye(n)
x = np.zeros(n)
y = np.zeros(m)
while True:
B_inv = np.linalg.inv(B)
c_B = c @ B_inv
r = c - c_B @ A
if np.all(r >= 0):
break
q = np.argmin(r)
d = B_inv @ A[:, q]
if np.all(d <= 0):
return "Unbounded"
ratios = np.divide(b, d)
p = np.argmin(ratios)
x[p] = ratios[p]
y = np.zeros(m)
y[p] = 1
B[:, p] = A[:, q]
N[:, q] = A[:, p]
return x
# 示例用法
c = np.array([3, 2, 0, 0])
A = np.array([[1, -1, 1, 0], [3, 1, 0, 1]])
b = np.array([1, 2])
x = simplex(c, A, b)
print(x)
在上面的示例中,c是目标函数的系数向量,A是约束条件的系数矩阵,b是约束条件的右侧值。函数simplex返回线性规划问题的最优解。如果问题无界,则返回"Unbounded"
原文地址: http://www.cveoy.top/t/topic/inJ3 著作权归作者所有。请勿转载和采集!