min |x-3|
s.t. x > 0
Lp olması için bunu linear formda nasıl yazıcaz?
Tüm kaynaklar let x = x1 - x2 ve |x| = x1 + x2 diye yazmalısın diyor, ama o zaman sonuç x=3 yerine x=0 çıkmakta.
Lineer Programlamayı duydum, koşup geldim.
Problem min |x| olsun.
İki değişkene ayırıyoruz, pozitif ve negatif ayıran olarak. x=x1-x2 dediği o. Şİmdi x1, x2 >=0 olması gerektiği için eğer x pozitif ise x1 değer alacak ve x2=0 olacak. Örneğin x=1 olsun, bu durumda x1=1 ve x2'nin değeri 0 olur. x=-1 ise, bu sefer x1=0, x2=1 olacak. Haliyle x = 0 için, x1 veya x2 temel değişkenlikten çıkıyor.
Burada da |x-3| ile uğraştığımız için. x-3=x1-x2 oluyor. (Mutlak değerin içini iki değişkene ayırdık) Yani x = x1-x2+3
Buradan da @galadnikov'un dediğine geliyoruz.
Yöneylem ne harika bir şey.
Edit: Adama referans verdim, adamın cevabı gitmiş. O zaman anlatmaya devam edeyim.
x-3 = x1-x2
Dolayısıyla x>3 için elimizde x1>0 ve x2=0 var. x<3 için ise elimizde x1=0 ve x2>0 var. x=3 için ise x1=x2=0 var.
Modelin yeni hali
min x1-x2
st
x-x1+x2=3
x>0 ve x1,x2>=0
Edit2: min ve max operatörleri de itina ile lineer programlamaya çevrilir.
çok teşekkürler, günlerdir şu problem üzerinde kafa yoruyordum sonunda sayende mantığını kavradım. yalnız objective function'da x1+x2 olmayacak mı? bu haliyle minimize eden bir sistem x1=4, x2=0'dan ziyade x1=0, x2=4ü tercih edecek. bunu ortadan kaldırmak için x1+x2 diye yazmamız gerekiyor gibi geldi.
Evet, amaç fonksiyonu x1+x2 olacak. O kısımda + yazmak istemiştim.
(kusura bakmayın cevapta eksik vardı (x-x1+x2=3'ü modele entegre etmek yerine optimum çözüm üzerinden çekmiştim. burada sorun yaratmasa da x'in kısıtlarda da geçtiği bi model için kafa karıştırıcı olacaktı.) düzelteyim diye girdim ülke gündemi kafa bırakmadığı için sonra bakmak üzere siliverdim.)