我有一个矩阵NxN。我需要取每行的最大值。但问题在于它是分配问题的一部分,因为你不能在列中采用相同的元素。我需要分配"任务"在x轴上表示,在y轴上表示的工人。矩阵的每个坐标是表示该选择有多好的分数。例如,它可能是一个优化问题,分数代表每项任务的效率。
所以我有下一个案例分数: SCORES_MATRIX是形状为2,3的np.array,其值如下:
----------task1 task2 task3
worker1 [[ 3 5 1 ]
worker2 [ 2 4 8 ]]
我使用以下代码制作:
NOT_REPEATED_INDEX = []
for SCORES_VECTOR in SCORES_MATRIX:
SORTED_VECTOR_INDEXES = np.flipud(np.argsort(SCORES_VECTOR,axis=0))
for i in range(NUM):
if SORTED_VECTOR_INDEXES[i] not in NOT_REPEATED_INDEX:
NOT_REPEATED_INDEX.append(SORTED_VECTOR_INDEXES[i])
break
会让我回头: [1,2]
所以我需要为第一个工作人员分配第二个任务,并为工人分配两个工作。我已经做到了这一点,但我认为它并不高效。