Saat ini saya terjebak dengan program MIP yang tingkat suku bunganya, i, didasarkan pada jumlah unit yang diproduksi untuk Perumahan Plan A. Jika jumlah rumah plan A yang terjual adalah yang tertinggi di antara keempat tipe tersebut maka i=1. Jika jumlah rumah plan A yang terjual tertinggi kedua, maka i=2 dan seterusnya hingga i=4. Tingkat bunga pada dasarnya adalah 2i%. Tidak begitu yakin bagaimana menambahkan batasan yang akan mewakili posisi rumah plan A dan menerapkan tingkat bunga yang benar dalam fungsi tujuan. Fungsi tujuan memaksimalkan total keuntungan (misalnya 50.000A + 40.000B + 70.000C + 80.000D). Adakah ide tentang cara menggunakan variabel biner untuk mewakili posisi?
Program Integer Campuran dengan Suku Bunga Bervariasi
comment
Harap edit pertanyaan Anda dengan contoh bagaimana Anda mencoba solusi.
- person Quintin Balsdon   schedule 05.12.2016
Jawaban (1)
Salah satu cara untuk melakukannya adalah dengan menggunakan matriks permutasi p(i,j)
. Yaitu.
sets
i = {A,B,C,D}
j = {1,2,3,4}
binary variable p(i,j)
# assignment constraints
sum(i,p(i,j))=1
sum(j,p(i,j))=1
# quantities sold
x(j) = sum(i, p(i,j)*x(i))
x(j) >= x(j+1)
# interest rate
r(i) = sum(j, p(i,j)*r(j))
r(j) = 2*j/100
Sayangnya ekspresi p(i,j)*x(i)
tidak linier. Dengan sedikit usaha kita dapat memperbaikinya sebagai berikut:
sets
i = {A,B,C,D}
j = {1,2,3,4}
binary variable p(i,j)
positive variable q(i,j)
# assignment constraints
sum(i,p(i,j))=1
sum(j,p(i,j))=1
# quantities sold
x(j) = sum(i, q(i,j))
x(j) >= x(j+1)
# linearization of q(i,j) = p(i,j)*x(i)
q(i,j) <= p(i,j)*xup(i)
x(i) - xup(i)*(1-p(i,j)) <= q(i,j) <= x(i)
' interest rate
r(i) = 2*sum(j, p(i,j)*j)/100
Di sini xup(i)
adalah batas atas pada x(i)
.
Bukan formulasi yang sangat elegan.
person
Erwin Kalvelagen
schedule
05.12.2016
Namun bukankah batasan pertama pada jumlah yang terjual bersifat non-linier karena Anda mengalikan matriks permutasi dengan x(i) [kuantitas yang juga Anda selesaikan]?
- person Gurobi22; 06.12.2016
Sial, kamu benar. Bisa dilinearisasi dengan mudah tapi itu membuat hal ini agak rumit.
- person Erwin Kalvelagen; 06.12.2016
Saya telah mencoba mencari tahu, tetapi tampaknya agak sulit untuk linierisasikan batasan Ranking karena kuantitas dan variabel biner tidak diketahui. Ada ide?
- person Gurobi22; 06.12.2016