【问题标题】:How to get the result array of scipy.optimize.linprog?如何获取 scipy.optimize.linprog 的结果数组?
【发布时间】:2020-04-28 16:56:35
【问题描述】:

我正在使用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。我必须在这个数组中使用非零数字。

【问题讨论】:

    标签: python arrays scipy-optimize


    【解决方案1】:

    根据scipy.optimize.linprog 文档,此函数返回OptimizeResult,其中x 是属性之一(实例变量)。

    您可以使用res.x 表示法直接访问它作为Python 中的任何其他对象属性。

    请注意,x 在这里是 NumPy 数组,因此特别是如果您的数组会很大,而不是转换为 Python 原生列表并手动删除零,您可能需要使用 nonzero_x = numpy.trim_zeros(res.x)

    【讨论】:

    • @vvic 不客气,我也看到你是新来的。如果以上回答了您的问题,请将其标记为答案。这将帮助其他有相同或相似问题的人更快地找到答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 2014-11-03
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    相关资源
    最近更新 更多