Saya membuat model untuk mengoptimalkan pesanan pembelian.
Jumlah yang dipesan harus lebih besar dari 500 atau sama dengan nol.
Bagaimana cara saya mendefinisikan batasan seperti itu di Solver?
Saya mencoba batasan biner dan saya juga mencoba beberapa formula berbeda tetapi sepertinya tidak ada yang berhasil.
Pada dasarnya saya harus bisa berekspresi OR
di Solver, bagaimana saya melakukannya?
EDIT: di tautan berikut Anda dapat melihat file excel yang saya gunakan: Klik disini
microsoft-excel
solver
Nuno Nogueira
sumber
sumber
Jawaban:
Jadi 0 diizinkan, 1 tidak diizinkan, 499 tidak diizinkan, dan 501 diizinkan? Tampak seperti area yang tidak bersebelahan. Jadi itu bukan masalah optimasi murni tetapi juga semacam masalah kombinatorial. Saya khawatir Solver tidak bisa menangani ini.
Anda harus menganalisis dua kasus penggunaan secara terpisah:
dan kemudian membandingkan dua kasus ini menggunakan rumus IF.
EDIT:
Saya mencoba menggunakan batasan "biner" dan "integer" seperti yang disarankan Karl tetapi tidak berhasil.
Dalam semua kasus, hasilnya seringkali salah dan tergantung pada kondisi awal. Rupanya Solver tidak suka hal-hal seperti itu.
Kemudian saya berpikir untuk menerapkan proposal saya di atas ke enam nilai pembelian, dan mengoptimalkannya secara mandiri, misalnya, dengan mengoptimalkan jumlah biaya untuk semua bulan. Tetapi ternyata mereka tidak independen: persediaan pembukaan tergantung pada bulan sebelumnya, dan pembelian optimal untuk sebulan tergantung pada apakah pembelian dilakukan pada bulan sebelumnya. Jadi, tidak mungkin menambahkan IF sederhana ke setiap bulan.
Yang terbaik yang bisa saya lakukan adalah sebagai berikut.
Saya menambahkan variabel biner 0-1 dan variabel kontinu & gt; = 500, dan menghitung pembelian setiap bulan menggunakan IF. Tapi saya hanya mengoptimalkan variabel kontinu menggunakan Solver. Variabel biner adalah parameter. Yaitu, kami memilih bulan saat pembelian akan dilakukan, kemudian menggunakan Solver untuk menghitung nilai pembelian ini, dan kemudian mencatat total biaya yang dihasilkan.
Ini harus diulang untuk semua kombinasi pembelian dan non-pembelian. Jumlah kombinasi ini adalah 2 6 = 64. Tetapi sebenarnya, jika Anda tidak membeli apa pun di bulan Januari, Anda berakhir dengan persediaan penutupan negatif yang tidak diperbolehkan. Jadi hanya ada 32 kombinasi yang valid. Saya menambahkan rumus untuk menghitung nilai biner dari indeks kombinasi, mengulangi indeks 32 kali, meluncurkan Solver setiap kali dengan tangan dan menyalin hasilnya "hanya sebagai nilai" untuk setiap kombinasi.
Hasilnya adalah biaya minimum adalah 4 625,00 € dan ada dua kombinasi untuk mencapai nilai ini.
Ini adalah file yang diunggah ke Google Documents, dengan tangkapan layar Solver.
Meluncurkan Solver berkali-kali dengan tangan itu membosankan, saya percaya ini bisa diotomatisasi menggunakan makro.
sumber
Buat variabel biner dengan menambahkan batasan yang menyatakan bahwa nilai variabel (dalam fungsi tujuan) adalah biner. Koefisien variabel ini dalam fungsi tujuan harus 0. maka Anda menambahkan batasan berikut seperti yang biasa Anda lakukan:
-500B + X & gt; = 0 (tidak pernah di bawah 500)
-MB + X & lt; = 0 (dikombinasikan dengan gaya kendala sebelumnya 0 saat B adalah 0)
B = Variabel biner1
M = Angka positif yang sangat besar (Lebih besar dari X yang pernah ada)
X = variabel kontinu
[Sunting]
Saya mengerti Anda ingin melakukan sesuatu seperti ini (saya juga membuat beberapa perubahan pada file sheet Anda, tetapi saya tidak dapat membagikan file excel yang saya kerjakan di sini):
sumber