【问题标题】:How to use convergence criteria in a loop to furness matrices in Python如何在循环中使用收敛标准来提供 Python 中的矩阵
【发布时间】:2019-09-12 09:04:27
【问题描述】:

我有一个原始矩阵

originalOD = np.array([[1,2,4], [3,2,3], [4,2,2]])

#### Now we can sum productions and attractions####
originalD=np.sum(originalOD,axis=0)
originalO=np.sum(originalOD,axis=1)

又想有原创与原创融合:

targetD=np.array([16,9,9])
targetO=np.array([14,8,12])

我正在尝试使用一些收敛标准在循环中执行此操作:

Convergence=0
while True: 
        xD=targetD/originalD
        newOD=originalOD*xD
        newD=np.sum(newOD,axis=0)
        xO=targetO/originalO
        newOD=originalOD*xO
        newO=np.sum(newOD,axis=1)

        Convergence = (sum(newO)/sum(targetO)+sum(newD)/sum(targetD))/2

        print('Converged:', Convergence)
        if Convergence<1.01 and Convergence>0.99:
            break
        else:
            continue

它正在运行,但似乎 xD 和 xO 在后续循环中没有改变,即

Converged: 1.0220588235294117
Converged: 1.0220588235294117
Converged: 1.0220588235294117
Converged: 1.0220588235294117

有什么想法可以改变代码吗?

【问题讨论】:

  • 您的收敛措施没有使用您在循环中更改的任何内容。所以他们也没有改变
  • @KPLauritzen 谢谢 - 这是一个有用的评论!我现在已经修改了,但仍然无法在后续循环中更改任何内容。
  • 您为此使用循环是否有原因?
  • @MadPhysicist 谢谢!是的 - 我有一个区域之间的行程矩阵(即 originalOD),我也知道往返区域的总行程必须是多少,即 targetD 和 targetO。这就是为什么我试图修改原始矩阵,以便它可以匹配目标值。

标签: python loops numpy matrix convergence


【解决方案1】:

看起来您未能在 while 循环中更新矩阵 (OD) 以及起点和终点总计,因此目前在每个循环中,您只是应用从原始矩阵派生的相同因子。请尝试以下操作:

newOD=originalOD
newD=np.sum(newOD,axis=0)
newO=np.sum(newOD,axis=1)
Convergence=0
while True: 
    xD=targetD/newD
    newOD=newOD*xD
    newD=np.sum(newOD,axis=0)
    xO=targetO/newO
    newOD=newOD*xO
    newO=np.sum(newOD,axis=1)

    Convergence = (sum(newO)/sum(targetO)+sum(newD)/sum(targetD))/2

    print('Converged:', Convergence)
    if Convergence<1.01 and Convergence>0.99:
        break
    else:
        continue

您可能还需要考虑在计算中添加最大迭代次数,因为不能保证 furness 收敛,尤其是在您有稀疏矩阵的情况下。

【讨论】:

    猜你喜欢
    • 2016-11-03
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 2021-11-03
    • 2020-04-29
    相关资源
    最近更新 更多