Lompat ke konten utama
←

Riset Operasi Dasar

Pelajaran 10 dari 20

Transportasi, penugasan, dan bilangan bulat

Masalah penugasan dengan linear_sum_assignment

Setelah pelajaran ini kamu bisa menyelesaikan masalah penugasan dengan linear_sum_assignment, menghitung total biayanya, dan memakai maximize untuk soal skor.

±13 menitDiperiksa 28 Sep 2026

Materi

Masalah penugasan memasangkan setiap pekerja dengan tepat satu tugas dan setiap tugas dengan paling banyak satu pekerja, supaya total biaya sekecil mungkin. Kamus algoritma NIST mendefinisikannya sebagai pencocokan berbobot minimum atau maksimum pada graf bipartit; salah satu algoritma klasiknya adalah algoritma Munkres, yang juga disebut algoritma Hungaria.

SciPy menyediakannya sebagai scipy.optimize.linear_sum_assignment(cost_matrix, maximize=False). Masukannya matriks biaya dengan baris sebagai pekerja dan kolom sebagai tugas; keluarannya dua array, row_ind dan col_ind, dan total biayanya cost_matrix[row_ind, col_ind].sum(). Dokumentasinya menyebut bahwa matriks boleh persegi panjang: bila baris lebih banyak daripada kolom, tidak semua baris mendapat tugas. Dengan maximize=True fungsi itu mencari total terbesar, misalnya untuk skor kecocokan.

Panduan pengguna SciPy memberi contoh tim estafet renang dan menunjukkan kenapa memilih waktu tercepat di setiap gaya tidak cukup: satu perenang bisa menjadi yang tercepat di dua gaya sekaligus, padahal ia hanya boleh berenang sekali. Jumlah minimum tiap baris karenanya hanya batas bawah, belum tentu penugasan yang sah.

import numpy as np
from scipy.optimize import linear_sum_assignment
biaya = np.array([[4, 2, 8], [6, 3, 7], [3, 5, 6]])   # kurir x paket
baris, kolom = linear_sum_assignment(biaya)
print(kolom, biaya[baris, kolom].sum())   # [1 2 0] 12

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 2 dari 3

Untuk matriks jam teknisi, jumlah nilai terkecil setiap baris adalah 22 jam, tetapi linear_sum_assignment memberi 24 jam. Mengapa angkanya berbeda?

Pilih satu jawaban

Latihan 3 dari 3

Skor kecocokan tiga tenaga penjual (baris) dengan tiga wilayah (kolom) adalah [[7, 5, 9], [8, 6, 4], [6, 9, 8]]. Setiap penjual mendapat satu wilayah. Berapa total skor terbesar yang bisa dicapai?

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke