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:
- Jumlahnya nol (nilai tetap, perhitungan sederhana);
- Jumlahnya 500 atau lebih besar (mengoptimalkan di Solver menggunakan kendala & gt; = 500);
dan kemudian membandingkan dua kasus ini menggunakan rumus IF.
EDIT:
Saya mencoba menggunakan batasan "biner" dan "integer" seperti yang disarankan Karl tetapi tidak berhasil.
- Buat variabel biner 0-1 dan variabel kontinu & gt; = 500, lalu gunakan IF untuk menyalin variabel kontinu atau menulis 0 ke nilai pembelian
- Buat variabel biner 0-1 dan variabel kontinu & gt; = 500, lalu hitung pembelian sebagai produk mereka
- Buat variabel integer & gt; = 499, lalu gunakan IF untuk mengganti 499 dengan 0 untuk nilai pembelian
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.