lapjv和linear_sum_assignment的返回值的区别

cost, row_ind, col_ind = lapjv(cost_matrix)

print(f"行分配: {row_ind}") # 每一行映射到的最优列

print(f"列分配: {col_ind}") # 每一列映射到的最优行

所以,row_ind[i]是第i行对应的列索引,而 col_ind[j]是第j列对应的行索引。

对于linear_sum_assignment的row_ind和col_ind,根据scipy的文档,返回的row_ind和col_ind是行和列的索引对

def example_compare2():


    a = np.array([
        [1.46439595e+03, 2.69431832e+03, 1.29987563e-01, 1.55361073e+03, 1.44865847e+03, 3.10717022e+03,
         2.57535292e+03],
        [2.57436453e+03, 3.10716454e+03, 1.44876144e+03, 1.55268757e+03, 2.47319823e-02, 2.69476280e+03,
         1.46539683e+03],
        [1.76492370e-01, 1.64718736e+03, 1.46437509e+03, 1.55696505e+03, 2.57452162e+03, 2.79781559e+03,
         3.09548074e+03],
        [3.09534496e+03, 2.79864587e+03, 2.57524914e+03, 1.55557721e+03, 1.46499350e+03, 1.64802488e+03,
         4.88675400e-01],
        [1.55677233e+03, 1.55718485e+03, 1.55318774e+03, 5.25698984e-01, 1.55220347e+03, 1.55606378e+03,
         1.55539410e+03],
        [1.64741113e+03, 3.21426508e-01, 2.69453589e+03, 1.55685445e+03, 3.10730844e+03, 1.65236984e+03,
         2.79834747e+03],
        [2.79802807e+03, 1.65309575e+03, 3.10731726e+03, 1.55578018e+03, 2.69459113e+03, 5.78065695e-01, 1.64716845e+03]
    ])

    # 使用 lapjv
    c, row_ind_lapjv, col_ind_lapjv = lapjv(a)
    lapjv_total_cost = a[np.arange(len(row_ind_lapjv)), row_ind_lapjv].sum()
    print("lapjv分配结果:")
    print(f"行分配(row_ind): {row_ind_lapjv}")
    print(f"列分配(col_ind): {col_ind_lapjv}")
    print(f"总代价: {lapjv_total_cost}")

    # 使用 linear_sum_assignment
    row_ind_linear, col_ind_linear = linear_sum_assignment(a)
    linear_sum_assignment_total_cost = a[row_ind_linear, col_ind_linear].sum()
    print("\nlinear_sum_assignment分配结果:")
    print(f"行分配(row_ind): {row_ind_linear}")
    print(f"列分配(col_ind): {col_ind_linear}")
    print(f"总代价: {linear_sum_assignment_total_cost}")

lapjv分配结果:
行分配(row_ind): [2 4 0 6 3 1 5]
列分配(col_ind): [2 5 0 4 1 6 3]
总代价: 2.2450785023

linear_sum_assignment分配结果:
行分配(row_ind): [0 1 2 3 4 5 6]
列分配(col_ind): [2 4 0 6 3 1 5]
总代价: 2.2450785023

遇到的问题:

用linear_sum_assignment时出现了gui退出报错的问题,原因暂时未知,而且错误不是每次都报,不好解决。所以用lapjv代替。

Process finished with exit code -1073741819 (0xC0000005) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值