Lompat ke konten utama
←

Riset Operasi Dasar

Pelajaran 5 dari 20

Program linear dengan scipy.optimize.linprog

linprog: minimasi, negasi untuk maksimasi, dan kendala ≥

Setelah pelajaran ini kamu bisa menuliskan program linear ke bentuk yang diterima linprog, termasuk membalik tanda tujuan maksimasi dan kendala ≥, lalu membaca hasilnya.

±13 menitDiperiksa 28 Sep 2026

Materi

Metode grafik berhenti di dua variabel. Untuk soal yang lebih besar, SciPy menyediakan scipy.optimize.linprog, yang menurut dokumentasinya selalu meminimumkan c @ x dengan kendala A_ub @ x ≤ b_ub, A_eq @ x = b_eq, dan batas nilai tiap variabel. Bawaannya bounds=(0, None), jadi semua variabel sudah dianggap nonnegatif tanpa perlu ditulis. Solver bawaannya HiGHS; salah satu metodenya simpleks, yang menurut Sekhon dan Bloom (§4.2) berpindah dari satu titik sudut ke titik sudut tetangga sambil terus memperbaiki nilai tujuan.

Dua penyesuaian dicontohkan di panduan pengguna SciPy. Pertama, soal maksimasi diubah menjadi minimasi dengan menegasikan koefisien tujuan: memaksimumkan 29x₁ + 45x₂ sama dengan meminimumkan −29x₁ − 45x₂. Nilai res.fun yang keluar juga bertanda negatif, sehingga laba sebenarnya adalah −res.fun. Kedua, kendala ≥ dikalikan −1 supaya menjadi ≤, termasuk ruas kanannya.

Hasilnya berupa OptimizeResult: x berisi nilai variabel keputusan, fun nilai tujuan, status 0 bila optimum ditemukan, dan message penjelasannya. Dokumentasi menyarankan memeriksa status sebelum memakai isian lain.

from scipy.optimize import linprog
# toko roti: maks 25a + 30b; 3a + 2b <= 36; a + 2b <= 20; b >= 2
res = linprog([-25, -30], A_ub=[[3, 2], [1, 2], [0, -1]], b_ub=[36, 20, -2])
print(res.status, res.x, -res.fun)   # 0 [8. 6.] 380.0

Latihan

0/3 lulus

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

Latihan 1 dari 3

Sebuah soal memaksimumkan 5x + 4y. Vektor c mana yang diberikan ke linprog?

Pilih satu jawaban

Latihan 3 dari 3

Kendala 3x + 2y ≥ 12 ditulis ulang ke bentuk A_ub @ x ≤ b_ub. Berapa angka yang masuk ke b_ub untuk kendala ini?

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke