python单纯形法代码
时间: 2023-10-12 19:18:59 浏览: 97
下面是一个基于Python的单纯形法代码:
```
import numpy as np
def simplex(c, A, b):
n, m = A.shape
c = np.concatenate([c, np.zeros(m)])
Ab = np.concatenate([A, np.eye(m)], axis=1)
cb = np.zeros(n+m)
cb[:m] = -1
vb = np.concatenate([np.zeros(n), b])
xb = np.concatenate([np.zeros(m), b])
B = np.arange(m, m+n)
while True:
j = cb.argmax()
if cb[j] <= 0:
break
i = ((Ab[:,j] > 0) & (xb / Ab[:,j] > 0)).argmax()
if Ab[i,j] == 0:
return float('inf')
B[i] = j
Ab[i,:] /= Ab[i,j]
xb[i] /= Ab[i,j]
for k in range(n+m):
if k != j:
Ab[:,k] -= Ab[:,j] * Ab[i,k]
cb[k] -= cb[j] * Ab[i,k]
vb = cb @ xb
return -vb
```
注意:这是一个基本的模板代码,不适用于所有问题,问题的运算规模可能会导致该代码的效率不足。建议在使用之前认真阅读函数以及遵循使用限制。
阅读全文