Python scipy.optimize.linear_sum_assignment — Как назначить работников на заданияPython

Программы на Python
Anonymous
Python scipy.optimize.linear_sum_assignment — Как назначить работников на задания

Сообщение Anonymous »

Как использовать scipy.optimize.linear_sum_assignment для назначения работников заданиям?
Предположим, у меня есть 10 работников и 3 задания (j1, j2, j3).
У моих работников разные навыки, и я создал таблицу, могут ли они выполнять ту или иную работу.



Рабочий
j1
j2
j3




1
Y
Y
Y


2
Y
Y
Y


3
Y
Y
Y


4
Y
Y
Y
Y


5
Y
Y
Y


6
Y
Y
Y


7
Y
Y
Y


8
Н
Н
Y

9
Y
Н
Н


10
Y< /td>
Н
Н



j1 требуется 3 рабочих, j2 требуется 3 работника, j3требуется 4 работника.
Из таблицы видно несколько перестановок, которые будут работать, поскольку большая часть рабочей силы имеет разностороннюю квалификацию, но мне нужен только один.
Я использовал scipy.optimize.linear_sum_assignment
Если они не могут выполнить эту работу, я назначил высокую цену, чтобы попытаться их исключить .

Код: Выделить всё

M = np.array([[ 1, 1, 1],
[ 1, 1, 1],
[ 1, 1, 1],
[ 1, 1, 1],
[ 1, 1, 1],
[ 1, 1, 1],
[ 1, 1, 1],
[ 99, 99, 1],
[ 1, 99, 99],
[ 1, 99, 99],
])

row_ind, col_ind = linear_sum_assignment(M)
print(row_ind, col_ind)
Это возвращает [0 1 2] [0 1 2], что дает мне вектор (1,1,1).
Я не совсем уверен если я сделал что-то не так или неправильно интерпретирую результаты?
Спасибо,
Дэн

Подробнее здесь: https://stackoverflow.com/questions/785 ... rs-to-jobs

Вернуться в «Python»