scipy.optimize.linear_sum_assignment 相当于 Java
scipy.optimize.linear_sum_assignment equivalent in Java
出于某些需要,我正在尝试将 python 算法重写为 Java。
在python算法中我有以下代码:
row_ind, col_ind = linear_sum_assignment(cost)
linear_sum_assignment
是一个 scipy function
你们知道 java 中那个函数的等价物吗?我找到了 this one 但我没有在这个中得到行索引和列索引。
我终于用这个 HungarianAlgorithms 和下面的代码做到了:
// Using Hungarian Algorithm assign the correct detected measurements
// to predicted tracks
int[] assigmentL = new HungarianAlgorithm(cost).execute();
List<Integer> assigment = Lists.newArrayList(Ints.asList(assigmentL));
我在 kotlin 中分享了一个答案,如果有人感兴趣,基于相同的 Hungarian Algorithm:
val costMat = arrayOf(
doubleArrayOf(0.5, 0.8, 0.6),
doubleArrayOf(0.3, 0.2, 0.5),
doubleArrayOf(0.1, 0.3, 0.7)
)
val assignmentL = HungarianAlgorithm(costMat).execute()
val assignment = listOf(costMat.indices.toList(), assignmentL.toList())
出于某些需要,我正在尝试将 python 算法重写为 Java。
在python算法中我有以下代码:
row_ind, col_ind = linear_sum_assignment(cost)
linear_sum_assignment
是一个 scipy function
你们知道 java 中那个函数的等价物吗?我找到了 this one 但我没有在这个中得到行索引和列索引。
我终于用这个 HungarianAlgorithms 和下面的代码做到了:
// Using Hungarian Algorithm assign the correct detected measurements
// to predicted tracks
int[] assigmentL = new HungarianAlgorithm(cost).execute();
List<Integer> assigment = Lists.newArrayList(Ints.asList(assigmentL));
我在 kotlin 中分享了一个答案,如果有人感兴趣,基于相同的 Hungarian Algorithm:
val costMat = arrayOf(
doubleArrayOf(0.5, 0.8, 0.6),
doubleArrayOf(0.3, 0.2, 0.5),
doubleArrayOf(0.1, 0.3, 0.7)
)
val assignmentL = HungarianAlgorithm(costMat).execute()
val assignment = listOf(costMat.indices.toList(), assignmentL.toList())