[英]How can I get integer solutions with scipy.optimize.linprog?
[英]How to get the result array of scipy.optimize.linprog?
我正在使用scipy.optimize.linprog
来解决网络流量问题,我得到了结果。 但我不知道如何获得在结果中显示为 x:array 的结果数组。 我必须修改这个数组以使其更易于阅读。
res = linprog(c=C, A_eq=A, b_eq=B)
print(res)
这是结果:
fun: 67538.0
message: 'Optimization terminated successfully.'
nit: 36
slack: array([], dtype=float64)
status: 0
success: True
x: array([ 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 5415., 0.,
0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 7732., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 4045.,
3167., 0., 2420., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 3257., 0.,
0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 12230., 0., 0.,
1574., 0., 0., 0., 0., 0., 0., 0.,
0., 13407., 4708., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 4601., 0., 4982., 0.,
0., 0., 0., 0., 0., 0., 0., 0.,
0.])
所以,我想知道如何获取 x:array。 我必须在这个数组中使用非零数字。
根据scipy.optimize.linprog
文档,此 function 返回OptimizeResult ,其中x
是属性之一(实例变量)。
您可以使用res.x
表示法直接访问它作为 Python 中的任何其他 object 属性。
请注意,这里的x
是 NumPy 数组,因此特别是如果您的数组要大而不是转换为 Python 本机列表并手动删除零,您可能需要使用nonzero_x = numpy.trim_zeros(res.x)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.