Nilai ransel nol-satu
Maksimalkan nilai dari maksimal 64 pasangan bobot-nilai dengan kapasitas bilangan bulat nol hingga 1000, memakai setiap barang sekali.
def knapsack_value(items, capacity):
items = tuple(tuple(item) for item in items)
if type(capacity) is not int or not 0 <= capacity <= 1000:
raise ValueError("capacity.range")
if len(items) > 64 or any(len(item) != 2 for item in items):
raise ValueError("items.shape")
if any(type(w) is not int or type(v) is not int or not 1 <= w <= 1000 or not 0 <= v <= 1000000 for w, v in items):
raise ValueError("item.range")
best = [0] * (capacity + 1)
for weight, value in items:
for limit in range(capacity, weight - 1, -1):
best[limit] = max(best[limit], best[limit - weight] + value)
return best[capacity]Tinjau sebelum menerapkan
Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.
Model
Atur endpoint kompatibel OpenAI atau Anthropic dengan URL dasar dan kunci API jika diperlukan. Uji koneksi. Server model lokal harus berjalan; alat jarak jauh dapat mengirim data secara terpisah.
Proyek
Uji kapasitas nol dan barang terlalu berat, lalu tolak bobot nol atau operand bukan bilangan bulat sebelum membuat tabel.
def knapsack_value(items, capacity):
items = tuple(tuple(item) for item in items)
if type(capacity) is not int or not 0 <= capacity <= 1000:
raise ValueError("capacity.range")
if len(items) > 64 or any(len(item) != 2 for item in items):
raise ValueError("items.shape")
if any(type(w) is not int or type(v) is not int or not 1 <= w <= 1000 or not 0 <= v <= 1000000 for w, v in items):
raise ValueError("item.range")
best = [0] * (capacity + 1)
for weight, value in items:
for limit in range(capacity, weight - 1, -1):
best[limit] = max(best[limit], best[limit - weight] + value)
return best[capacity]Pisahkan aturan pemilihan dari kode implementasinya
PackSerein mendukung pengembangan perangkat lunak berbantuan AI dalam ruang kerja proyek Windows, tempat kebutuhan optimasi dapat dibahas bersama berkas implementasi. Jelaskan apa yang boleh dipilih, batasan yang wajib, dan hasil yang sebenarnya dibutuhkan pemanggil. Minta asisten memeriksa representasi saat ini sebelum mengubah pemecah. Tujuan yang jelas mencegah implementasi yang masuk akal menyelesaikan masalah yang sedikit berbeda.
Contoh knapsack.py menyarankan tugas peninjauan dengan setiap item boleh dipilih paling banyak sekali di bawah batas kapasitas. Anda dapat menanyakan apakah pembaruan usulan mempertahankan aturan itu dan apakah aplikasi hanya memerlukan nilai atau juga item terpilih. Kerjakan kasus kecil secara manual, lalu periksa kode terhadapnya. Pertahankan batas masukan dan nilai yang ditolak sebagai bagian peninjauan yang sama.
Ketika perubahan siap, jalankan pengujian proyek untuk pilihan kosong, batas kapasitas, dan kombinasi yang bersaing. Periksa kontrak keluaran sebelum menyesuaikan pemakai. PackSerein menerima endpoint yang kompatibel dengan OpenAI atau endpoint Anthropic yang didukung serta kredensial bila diperlukan. Model AI tanpa filter dapat dipilih jika tersedia melalui koneksi Anda; batasan, batas konteks, dan dukungan alatnya tetap bergantung pada model serta server. Ruang kerja membantu menata keputusan pemrograman, sementara pemeriksaan Anda menentukan apakah tujuan terpenuhi.
Pertanyaan yang mendefinisikan tugas optimasi
- Mengapa menyatakan apakah item boleh dipilih dua kali?
Mengizinkan pemilihan berulang mengubah masalah dan dapat mengubah hasil. Cantumkan batasan itu dalam permintaan dan uji kasus kecil yang jawabannya berubah jika pengulangan diizinkan, lalu periksa apakah pembaruan mempertahankannya.
- Apakah nilai optimal cukup untuk aplikasi?
Itu bergantung pada pemanggil. Beberapa pemakai hanya memerlukan skor, sedangkan lainnya juga memerlukan item terpilih. Nyatakan keluaran yang diwajibkan sebelum meminta perubahan agar asisten tidak menganggap satu angka menyelesaikan fitur.
- Bagaimana menangani solusi dengan nilai sama?
Tentukan apakah sembarang solusi optimal yang valid dapat diterima atau aplikasi memerlukan aturan pemecah seri deterministik. Jika item terpilih dikembalikan, uji hasil seri secara eksplisit dan tinjau aturannya, bukan bergantung pada urutan iterasi kebetulan.
- Bisakah contoh ini membuktikan kinerja pemecah skala besar?
Tidak. Gunakan untuk membahas implementasi terbatas, lalu evaluasi proyek nyata pada ukuran yang dibutuhkan. Kasus kecil yang benar dan penjelasan AI tidak membuktikan perilaku waktu eksekusi atau memori pada skala berbeda.
PackSerein · Diperbarui 2026-10-25