Doğrusal programlama nedir?
Doğrusal programlama, ilgilenilen problemi bir matematiksel modelle tanımlar. Adın iki parçası ayrı ayrı anlam taşır:
Doğrusal
Modeldeki bütün matematiksel fonksiyonlar kesinlikle birinci derecedendir: \(x^2\), \(x_1 x_2\), \(\sqrt{x}\) gibi terimler yoktur.
Programlama
Bilgisayar programlama değil, operasyonel planlama anlamındadır.
Yani doğrusal programlama, etkinlikleri en iyi sonucu verecek şekilde planlamaktır: matematiksel modele göre, bütün olurlu seçenekler arasında belirlenen hedefe en iyi ulaşan sonucu.
20. yüzyıl ortasının en önemli bilimsel ilerlemelerinden biri sayılır. Tipik kullanımı, sınırlı kaynakları birbiriyle yarışan etkinliklere dağıtmaktır. Uygulama örnekleri:
- üretim tesislerinin ürünlere tahsisi,
- portföy seçimi,
- sevkiyat düzenlerinin seçimi,
- radyoterapi planlaması,
- ağ akışı optimizasyonu (rotalama problemleri).
Prototip örnek: Wyndor Glass Co.
Wyndor Glass Co. pencere ve cam kapı gibi cam ürünleri üretir. Üç fabrikası vardır:
- Fabrika 1: alüminyum çerçeveler ve donanım,
- Fabrika 2: ahşap çerçeveler,
- Fabrika 3: cam üretimi ve montaj.
Kazançlar düştüğü için üst yönetim ürün yelpazesini yenilemeye karar verir. Kârsız ürünler bırakılır ve açılan kapasiteyle, satış potansiyeli yüksek iki yeni ürün üretilecektir:
- Ürün 1: alüminyum çerçeveli, 8 fit yüksekliğinde cam kapı. Fabrika 1 ve 3'te kapasite kullanır, Fabrika 2'de kullanmaz.
- Ürün 2: ahşap çerçeveli, 4 × 6 fit sürme pencere. Yalnızca Fabrika 2 ve 3'ü kullanır.
Pazarlama bölümüne göre şirket iki üründen de üretebildiği kadarını satabilir. Ama iki ürün Fabrika 3'teki aynı kapasite için yarıştığından, hangi üretim karışımının en kârlı olduğu açık değildir.
Üç fabrikadaki sınırlı üretim kapasitelerinin getirdiği kısıtlar altında, toplam kârı en büyüklemek için iki ürünün üretim hızları ne olmalıdır? Her ürün 20'lik partiler hâlinde üretilir; üretim hızı haftada üretilen parti sayısıdır. Bu kısıtları sağlayan her üretim hızı bileşimine izin verilir; bir üründen hiç üretmeyip ötekinden olabildiğince çok üretmek de buna dahildir.
Yöneylem araştırması ekibi şu verilerin toplanması gerektiğini belirler: (1) her fabrikada yeni ürünler için haftada ayrılabilecek üretim saati; (2) her ürünün bir partisinin her fabrikada kullandığı üretim saati; (3) her ürünün parti başına kârı.
| Fabrika | Ürün 1 (saat/parti) | Ürün 2 (saat/parti) | Haftalık kapasite (saat) |
|---|---|---|---|
| 1 | 1 | 0 | 4 |
| 2 | 0 | 2 | 12 |
| 3 | 3 | 2 | 18 |
| Parti başına kâr | 3.000 $ | 5.000 $ |
LP olarak formülasyon
- \(x_1\)
- haftada üretilen ürün 1 partisi sayısı
- \(x_2\)
- haftada üretilen ürün 2 partisi sayısı
- \(Z\)
- bu iki ürünün üretiminden elde edilen haftalık toplam kâr (bin dolar)
\(x_1\) ve \(x_2\) modelin karar değişkenleridir. Amaç, \(Z = 3x_1 + 5x_2\)'yi, \(x_1\) ve \(x_2\)'nin değerlerine üç fabrikanın kapasitelerinin getirdiği kısıtlar altında en büyüklemektir. Her fabrika bir kısıt verir:
- Fabrika 1: ürün 1'in partisi 1 saat, kapasite 4 saat → \(x_1 \le 4\)
- Fabrika 2: ürün 2'nin partisi 2 saat, kapasite 12 saat → \(2x_2 \le 12\)
- Fabrika 3: partiler 3 ve 2 saat, kapasite 18 saat → \(3x_1 + 2x_2 \le 18\)
Grafik çözüm
İki karar değişkenli bir LP düzlemde çözülebilir:
- 2 karar değişkeni → 2 boyutlu uzay,
- her kısıt → bir doğru (ve onun bir tarafındaki yarı düzlem),
- olurlu bölge → doğruların çevrelediği alan,
- amaç fonksiyonu → bir doğru (eş-kâr doğrusu),
- optimal çözüm → \(Z\)'yi en büyükleyen nokta.
- Negatif olmama kısıtları aramayı ilk çeyreğe sınırlar.
- Her kısıtın sınır doğrusunu çiz (\(x_1 = 4\), \(2x_2 = 12\), \(3x_1 + 2x_2 = 18\)) ve kısıtın izin verdiği tarafı işaretle. Bütün kısıtları sağlayan noktalar olurlu bölgeyi oluşturur.
- \(Z = 3x_1 + 5x_2\)'yi sabit bir değere eşitleyip doğruyu çiz; örneğin \(Z = 10\) ve \(Z = 20\). Bu doğrular birbirine paraleldir.
- Doğruyu, olurlu bölgeyle en az bir ortak noktası kalacak şekilde \(Z\)'nin arttığı yönde olabildiğince kaydır. Son temas noktası optimumdur: \(Z = 36\) doğrusu bölgeye yalnızca \((2, 6)\)'da dokunur.
Grafik çözüm laboratuvarı
max Z = 3x1 + 5x2
- (1)x1 ≤ 4
- (2)2x2 ≤ 12
- (3)3x1 + 2x2 ≤ 18
- x1 ≥ 0, x2 ≥ 0
Optimum köşe (2, 6), Z = 36.
| Köşe (x1, x2) | Z |
|---|---|
| (0, 0) | 0 |
| (0, 6) | 30 |
| (2, 6) | 36 |
| (4, 0) | 12 |
| (4, 3) | 27 |
Laboratuvarda amaç katsayılarını \(c_1, c_2\) değiştirerek optimumun hangi köşeye kaydığını görebilirsin. Kesikli turuncu çizgi optimumdan geçen eş-kâr doğrusudur. \(c_1 : c_2 = 3 : 2\) olduğunda doğru, \(3x_1 + 2x_2 = 18\) kenarına paralel olur ve çoklu optimum ortaya çıkar; diğer düğmeler özel durumları gösterir.
Optimum \((x_1, x_2) = (2, 6)\), \(Z = 36\): haftada 2 parti ürün 1 ve 6 parti ürün 2 üretmek, haftada 36.000 $ kâr getirir. Bu noktada Fabrika 2 ve Fabrika 3 tam kapasiteyle çalışır; Fabrika 1'de 2 saat boş kalır.
Genel doğrusal programlama modeli
| Prototip örnekte | Genel problemde |
|---|---|
| Fabrikaların üretim kapasiteleri | Kaynaklar |
| 3 fabrika | \(m\) kaynak |
| Ürünlerin üretimi | Etkinlikler |
| 2 ürün | \(n\) etkinlik |
| Ürün \(j\)'nin üretim hızı, \(x_j\) | Etkinlik \(j\)'nin düzeyi, \(x_j\) |
| Kâr \(Z\) | Genel başarım ölçüsü \(Z\) |
Kaynakları etkinliklere dağıtma probleminde yaygın kullanılan simgeler:
- \(Z\)
- genel başarım ölçüsünün değeri.
- \(x_j\)
- etkinlik \(j\)'nin düzeyi (\(j = 1, 2, \dots, n\)).
- \(c_j\)
- etkinlik \(j\)'nin düzeyindeki her birim artışın \(Z\)'de yarattığı artış.
- \(b_i\)
- kaynak \(i\)'nin etkinliklere dağıtılabilecek miktarı (\(i = 1, 2, \dots, m\)).
- \(a_{ij}\)
- etkinlik \(j\)'nin her biriminin tükettiği kaynak \(i\) miktarı.
Model, problemi etkinliklerin düzeylerine dair kararlar olarak kurar; bu yüzden \(x_1, \dots, x_n\) karar değişkenleridir. \(c_j\), \(b_i\) ve \(a_{ij}\) değerleri modelin girdi sabitleri, yani parametreleridir.
| Kaynak | Etkinlik 1 | Etkinlik 2 | … | Etkinlik \(n\) | Mevcut miktar |
|---|---|---|---|---|---|
| 1 | \(a_{11}\) | \(a_{12}\) | … | \(a_{1n}\) | \(b_1\) |
| 2 | \(a_{21}\) | \(a_{22}\) | … | \(a_{2n}\) | \(b_2\) |
| ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | |
| \(m\) | \(a_{m1}\) | \(a_{m2}\) | … | \(a_{mn}\) | \(b_m\) |
| Birim başına \(Z\) katkısı | \(c_1\) | \(c_2\) | … | \(c_n\) |
Standart form
\[ \begin{aligned} \max\quad & Z = c_1x_1 + c_2x_2 + \dots + c_nx_n \\ \text{öyle ki}\quad & a_{11}x_1 + a_{12}x_2 + \dots + a_{1n}x_n \le b_1 \\ & a_{21}x_1 + a_{22}x_2 + \dots + a_{2n}x_n \le b_2 \\ & \qquad \vdots \\ & a_{m1}x_1 + a_{m2}x_2 + \dots + a_{mn}x_n \le b_m \\ & x_1 \ge 0,\ x_2 \ge 0,\ \dots,\ x_n \ge 0 \end{aligned} \]Matris gösterimiyle aynı model kısaca \(\max \{\, c^T x : Ax \le b,\ x \ge 0 \,\}\) olarak yazılır.
- Amaç fonksiyonu
- En büyüklenen fonksiyon, \(c_1x_1 + c_2x_2 + \dots + c_nx_n\).
- Fonksiyonel kısıtlar (functional / structural constraints)
- Sol tarafında bütün değişkenlerin bir fonksiyonu, \(a_{i1}x_1 + a_{i2}x_2 + \dots + a_{in}x_n\), bulunan ilk \(m\) kısıt.
- Negatif olmama kısıtları (nonnegativity constraints)
- \(x_j \ge 0\) kısıtları.
Diğer biçimler
Aşağıdaki değişiklikler de LP olarak kalır:
- Amaç fonksiyonunu en büyüklemek yerine en küçüklemek: \(\min Z = c_1x_1 + \dots + c_nx_n\).
- Bazı fonksiyonel kısıtların \(\ge\) biçiminde olması: bazı \(i\) için \(a_{i1}x_1 + \dots + a_{in}x_n \ge b_i\).
- Bazı fonksiyonel kısıtların eşitlik olması: bazı \(i\) için \(a_{i1}x_1 + \dots + a_{in}x_n = b_i\).
- Bazı karar değişkenlerinde negatif olmama kısıtının kaldırılması: bazı \(j\) için \(x_j\) işaretçe serbest.
Hepsi standart forma çevrilebilir: \(\min Z\) yerine \(\max (-Z)\); \(\ge\) kısıtı \(-1\) ile çarpılarak \(\le\) olur; bir eşitlik iki eşitsizliğe (\(\le\) ve \(\ge\)) ayrılır; işaretçe serbest bir değişken iki negatif olmayan değişkenin farkı olarak yazılır: \(x_j = x_j^+ - x_j^-\).
Dönüşüm kuralları slaytta yok; simpleks yöntemi (Hafta 4) modeli standart biçimde beklediği için eklendi.
LP varsayımları
- Orantılılık (proportionality)
- Her etkinliğin amaç fonksiyonu \(Z\)'ye katkısı, etkinliğin düzeyi \(x_j\) ile orantılıdır (\(c_j x_j\) terimi). Benzer şekilde her etkinliğin her fonksiyonel kısıtın sol tarafına katkısı da \(x_j\) ile orantılıdır (\(a_{ij} x_j\) terimi). Bu varsayım 1'den farklı üsleri dışlar; örneğin ilk partide ödenen sabit bir kurulum maliyeti orantılılığı bozar.
- Toplanabilirlik (additivity)
- Orantılılık 1'den farklı üsleri dışlar, ama iki ya da daha fazla değişkenin çarpımını içeren çapraz çarpım terimlerini (\(x_1 x_2\) gibi) dışlamaz. Toplanabilirlik bunu da dışlar: LP modelindeki her fonksiyon (amaç fonksiyonu ya da bir fonksiyonel kısıtın sol tarafı) ilgili etkinliklerin bireysel katkılarının toplamıdır.
- Kesinlik (certainty)
- Modelin parametrelerine, yani amaç katsayıları \(c_j\)'ye, fonksiyonel kısıt katsayıları \(a_{ij}\)'ye ve sağ taraf değerleri \(b_i\)'ye atanan her değerin bilinen bir sabit olduğu varsayılır.
- Bölünebilirlik (divisibility)
- Karar değişkenleri, kesirli değerler dahil, herhangi bir gerçel değeri alabilir. Slaytlarda yer almıyor; ders kitabındaki dördüncü varsayımdır. Değişkenlerin tamsayı olması gerektiğinde bu varsayım bozulur ve model bir tamsayılı programlama modeline dönüşür. Ayrık optimizasyonun başladığı yer burasıdır.
Örnek: Save-It Co. — katı atıkların geri kazanımı
- Dört tür katı atık toplanıyor; şirket bunları işleyip karıştırarak satılabilir ürünlere dönüştürüyor.
- Kullanılan malzeme karışımına göre üç kalite ürün var: A, B ve C.
- Haftalık 30.000 $'lık bir hibe yalnızca işleme (treatment) maliyetinin tamamını karşılamak için kullanılacak.
- Her malzemenin mevcut miktarının en az yarısı toplanıp işlenmeli.
- Amaç: haftalık net kârı, yani toplam satış eksi toplam karıştırma (amalgamation) maliyetini en büyüklemek.
| Kalite | Karışım şartı (toplamın oranı olarak) | Karıştırma maliyeti ($/lb) | Satış fiyatı ($/lb) |
|---|---|---|---|
| A | Malzeme 1: en fazla %30 Malzeme 2: en az %40 Malzeme 3: en fazla %50 Malzeme 4: tam %20 | 3,00 | 8,50 |
| B | Malzeme 1: en fazla %50 Malzeme 2: en az %10 Malzeme 4: tam %10 | 2,50 | 7,00 |
| C | Malzeme 1: en fazla %70 | 2,00 | 5,50 |
| Malzeme | Haftalık mevcut (lb) | İşleme maliyeti ($/lb) |
|---|---|---|
| 1 | 3.000 | 3,00 |
| 2 | 2.000 | 6,00 |
| 3 | 4.000 | 4,00 |
| 4 | 1.000 | 5,00 |
Ek kısıtlar: (1) her malzemenin haftalık mevcut miktarının en az yarısı toplanıp işlenmeli; (2) bu malzemeleri işlemek için haftada 30.000 $ kullanılmalı.
Karar değişkenleri
Karar değişkenlerini tanımlamak en kritik adımdır. Burada:
- \(x_{ij}\): haftada ürün kalitesi \(i\)'ye (\(i \in \{A, B, C\}\)) ayrılan malzeme \(j\)'nin (\(j \in \{1, 2, 3, 4\}\)) libre cinsinden miktarı. Toplam 12 değişken.
- \(\dfrac{x_{ij}}{x_{i1} + x_{i2} + x_{i3} + x_{i4}}\): kalite \(i\)'deki malzeme \(j\)'nin oranı.
Kesirli kısıtı doğrusallaştırmak
“A kalitesinde malzeme 1 en fazla %30” şartı ilk bakışta doğrusal değildir:
\[ \frac{x_{A1}}{x_{A1} + x_{A2} + x_{A3} + x_{A4}} \le 0{,}3 \]Payda (A'nın toplam üretimi) negatif olmadığı için iki taraf paydayla çarpılabilir ve terimler bir tarafa toplanır:
\[ 0{,}7\,x_{A1} - 0{,}3\,x_{A2} - 0{,}3\,x_{A3} - 0{,}3\,x_{A4} \le 0 \]Bütün karışım şartları bu yolla doğrusal kısıtlara çevrilir. Bu, oran ve yüzde içeren modellerde sık kullanılan bir tekniktir.
Tam model
Amaç fonksiyonunda her kalitenin birim net kârı “satış fiyatı − karıştırma maliyeti”dir: A için 8,50 − 3,00 = 5,50; B için 7,00 − 2,50 = 4,50; C için 5,50 − 2,00 = 3,50. İşleme maliyeti hibeyle karşılandığı için amaçta yer almaz, bir kısıt olarak girer.
\[ \begin{aligned} \max\; Z = {} & 5{,}5\,(x_{A1} + x_{A2} + x_{A3} + x_{A4}) + 4{,}5\,(x_{B1} + x_{B2} + x_{B3} + x_{B4}) \\ & + 3{,}5\,(x_{C1} + x_{C2} + x_{C3} + x_{C4}) \end{aligned} \]1. Karışım şartları:
\[ \begin{aligned} x_{A1} &\le 0{,}3\,(x_{A1} + x_{A2} + x_{A3} + x_{A4}) & x_{B1} &\le 0{,}5\,(x_{B1} + x_{B2} + x_{B3} + x_{B4}) \\ x_{A2} &\ge 0{,}4\,(x_{A1} + x_{A2} + x_{A3} + x_{A4}) & x_{B2} &\ge 0{,}1\,(x_{B1} + x_{B2} + x_{B3} + x_{B4}) \\ x_{A3} &\le 0{,}5\,(x_{A1} + x_{A2} + x_{A3} + x_{A4}) & x_{B4} &= 0{,}1\,(x_{B1} + x_{B2} + x_{B3} + x_{B4}) \\ x_{A4} &= 0{,}2\,(x_{A1} + x_{A2} + x_{A3} + x_{A4}) & x_{C1} &\le 0{,}7\,(x_{C1} + x_{C2} + x_{C3} + x_{C4}) \end{aligned} \]2. Malzeme mevcudiyeti ve 3. işlenecek en az miktar (mevcudun yarısı):
\[ \begin{aligned} x_{A1} + x_{B1} + x_{C1} &\le 3000 & x_{A1} + x_{B1} + x_{C1} &\ge 1500 \\ x_{A2} + x_{B2} + x_{C2} &\le 2000 & x_{A2} + x_{B2} + x_{C2} &\ge 1000 \\ x_{A3} + x_{B3} + x_{C3} &\le 4000 & x_{A3} + x_{B3} + x_{C3} &\ge 2000 \\ x_{A4} + x_{B4} + x_{C4} &\le 1000 & x_{A4} + x_{B4} + x_{C4} &\ge 500 \end{aligned} \]4. İşleme maliyeti ve 5. negatif olmama:
\[ 3(x_{A1} + x_{B1} + x_{C1}) + 6(x_{A2} + x_{B2} + x_{C2}) + 4(x_{A3} + x_{B3} + x_{C3}) + 5(x_{A4} + x_{B4} + x_{C4}) = 30000 \] \[ x_{ij} \ge 0 \quad \text{her } i \in \{A, B, C\},\ j \in \{1, 2, 3, 4\} \text{ için} \]Çözüm
| Kalite | Malzeme 1 | Malzeme 2 | Malzeme 3 | Malzeme 4 | Üretilen (lb/hafta) |
|---|---|---|---|---|---|
| A | 412,3 (%19,2) | 859,6 (%40) | 447,4 (%20,8) | 429,8 (%20) | 2.149 |
| B | 2.587,7 (%50) | 517,5 (%10) | 1.552,6 (%30) | 517,5 (%10) | 5.175 |
| C | 0 | 0 | 0 | 0 | 0 |
| Toplam | 3.000 | 1.377 | 2.000 | 947 |
Amaç değeri \(Z = 35.109{,}65\) $. Problem çözüldükten sonra tablodaki diğer büyüklükler (oranlar, toplamlar) \(x_{ij}\) değerlerinden hesaplanır. Dikkat çeken noktalar: C kalitesi hiç üretilmez; malzeme 1'in tamamı kullanılır, malzeme 3 ise tam en az sınırında (2.000 lb) kalır.
Örnek: Union Airways — personel çizelgeleme
Union Airways uçuş programına sefer eklediği için yeni müşteri hizmetleri personeli alacaktır. Günün farklı saatlerinde görevde olması gereken en az personel sayısı analiz edilmiştir. Yöneylem araştırması ekibi, personeli en düşük personel maliyetiyle yeterli hizmet verecek şekilde vardiyalara yerleştirmek istiyor.
Her personel haftada 5 gün, 8 saatlik vardiyalarda çalışır. Vardiyalar: 1: 06:00–14:00, 2: 08:00–16:00, 3: 12:00–20:00, 4: 16:00–24:00, 5: 22:00–06:00.
| Zaman dilimi | V1 | V2 | V3 | V4 | V5 | En az personel |
|---|---|---|---|---|---|---|
| 06:00–08:00 | ✓ | 48 | ||||
| 08:00–10:00 | ✓ | ✓ | 79 | |||
| 10:00–12:00 | ✓ | ✓ | 65 | |||
| 12:00–14:00 | ✓ | ✓ | ✓ | 87 | ||
| 14:00–16:00 | ✓ | ✓ | 64 | |||
| 16:00–18:00 | ✓ | ✓ | 73 | |||
| 18:00–20:00 | ✓ | ✓ | 82 | |||
| 20:00–22:00 | ✓ | 43 | ||||
| 22:00–24:00 | ✓ | ✓ | 52 | |||
| 00:00–06:00 | ✓ | 15 | ||||
| Personel başına günlük maliyet | 170 $ | 160 $ | 175 $ | 180 $ | 195 $ |
Formülasyon
- Etkinlikler vardiyalara karşılık gelir; bir etkinliğin düzeyi o vardiyaya atanan personel sayısıdır. Karar değişkenleri her zaman etkinliklerin düzeyleridir.
- Beş karar değişkeni: \(x_j\), \(j = 1, 2, 3, 4, 5\) (vardiya \(j\)'deki personel sayısı).
- Ana kısıtlar, tablonun son sütunundaki en az personel gereksinimleridir. Her zaman dilimi için, o dilimi kapsayan vardiyalardaki personelin toplamı gereksinimi karşılamalıdır. Örneğin 14:00–16:00 dilimini vardiya 2 ve 3 kapsar: \(x_2 + x_3 \ge 64\).
| Zaman dilimi | Kısıt |
|---|---|
| 06:00–08:00 | \(x_1 \ge 48\) |
| 08:00–10:00 | \(x_1 + x_2 \ge 79\) |
| 10:00–12:00 | \(x_1 + x_2 \ge 65\) |
| 12:00–14:00 | \(x_1 + x_2 + x_3 \ge 87\) |
| 14:00–16:00 | \(x_2 + x_3 \ge 64\) |
| 16:00–18:00 | \(x_3 + x_4 \ge 73\) |
| 18:00–20:00 | \(x_3 + x_4 \ge 82\) |
| 20:00–22:00 | \(x_4 \ge 43\) |
| 22:00–24:00 | \(x_4 + x_5 \ge 52\) |
| 00:00–06:00 | \(x_5 \ge 15\) |
| — | \(x_j \ge 0,\ j = 1, \dots, 5\) |
Slayttaki modelde 12:00–14:00 kısıtı \(x_1 + x_2 + x_3 \ge 79\) olarak yazılmış; Tablo 3.19'a göre sağ taraf 87 olmalı. Sonuç değişmez: optimal çözümde \(x_1 + x_2 + x_3 = 118\) olduğu için iki kısıt da gevşektir.
- Bazı kısıtlar fazladır (redundant): \(x_1 + x_2 \ge 79\) sağlanıyorsa \(x_1 + x_2 \ge 65\) kendiliğinden sağlanır; \(x_3 + x_4 \ge 82\) de \(x_3 + x_4 \ge 73\)'ü kapsar.
- Optimal çözüm: \((x_1, x_2, x_3, x_4, x_5) = (48, 31, 39, 43, 15)\), amaç değeri \(Z = 30.610\) $ (günlük).
Tamsayı meselesi
- Her vardiyaya atanan personel sayısı tamsayı olmalıdır.
- Modelde her \(x_j\) için tamsayı değer zorlayan ek bir kısıt bulunmalıdır. Bu kısıtlar eklenince LP modeli bir tamsayılı programlama modeline dönüşür (Hafta 13).
- Bu örnekte tamsayı kısıtları olmadan bile çözüm tamsayı çıkıyor.
- Ya optimal çözümde bazı değişkenler tamsayı olmasaydı? Yuvarlamak her zaman işe yaramaz: yuvarlanan nokta olursuz olabilir ya da optimal olmayabilir. Alıştırma 4 bunun bir örneğidir.
Çözüm terminolojisi ve özel durumlar
- Çözüm (solution)
- \((x_1, x_2, \dots, x_n)\) için herhangi bir değer ataması; olurlu olması gerekmez.
- Olurlu çözüm (feasible solution)
- Bütün kısıtların sağlandığı çözüm.
- Olursuz çözüm (infeasible solution)
- En az bir kısıtın ihlal edildiği çözüm.
- Olurlu bölge (feasible region)
- Bütün olurlu çözümlerin kümesi.
- Optimal çözüm (optimal solution)
- Amaç fonksiyonunun en elverişli değerine sahip olurlu çözüm. En elverişli değer, amaç en büyükleniyorsa en büyük, en küçükleniyorsa en küçük değerdir.
Özel durumlar
Her LP'nin tek bir optimumu olmak zorunda değildir. Wyndor modelinde küçük değişikliklerle üç özel durum elde edilir; hepsi yukarıdaki laboratuvarda düğmelerle görülebilir.
Modele \(3x_1 + 5x_2 \ge 50\) eklenirse hiçbir nokta bütün kısıtları birlikte sağlamaz: olurlu bölgede \(3x_1 + 5x_2\) en fazla 36 olabilir. Olurlu bölge boştur.
Amaç \(Z = 3x_1 + 2x_2\) olursa eş-kâr doğruları \(3x_1 + 2x_2 = 18\) kenarına paraleldir. \((2, 6)\) ile \((4, 3)\) arasındaki kenarın her noktası \(Z = 18\) ile optimaldir.
Tek fonksiyonel kısıt \(x_1 \le 4\) olsaydı \(x_2\) olurlu bölgede sınırsızca artabilirdi: \((4, 2)\)'de \(Z = 22\), \((4, 10)\)'da \(Z = 62\), … Optimal çözüm yoktur.
Köşe noktası olurlu (CPF) çözümler
Köşe noktası olurlu (CPF) çözüm, olurlu bölgenin bir köşesinde bulunan çözümdür.
Olurlu çözümü olan ve olurlu bölgesi sınırlı olan bir LP için:
- Problemin CPF çözümleri ve en az bir optimal çözümü vardır.
- En iyi CPF çözümü bir optimal çözümdür.
- Bu yüzden problemin tam olarak bir optimal çözümü varsa, o bir CPF çözüm olmalıdır.
- Birden fazla optimal çözüm varsa, bunlardan en az ikisi CPF çözüm olmalıdır.
Wyndor modelinin beş CPF çözümü vardır: \((0, 0)\), \((4, 0)\), \((4, 3)\), \((2, 6)\) ve \((0, 6)\). En iyisi \((2, 6)\)'dır. Bu özellik çok önemlidir: optimumu bulmak için sonsuz sayıdaki olurlu noktanın değil, sonlu sayıdaki köşenin incelenmesi yeter. Simpleks yöntemi (Hafta 4) tam olarak bunu yapar; köşeden komşu köşeye geçerek ilerler.
Slayt bu özellikleri koşulsuz yazıyor; “olurlu çözümü var ve olurlu bölge sınırlı” koşulu Hillier & Lieberman'daki ifadeden eklendi. Sınırsız bölgede optimum olmayabilir (yukarıdaki üçüncü durum).
Büyük modeller ve yazılım araçları
- Gerçek dünyadaki LP'ler çok büyük olabilir. Orta boy sayılan bir modelde bile binlerce fonksiyonel kısıt ve binlerce karar değişkeni bulunabilir.
- Böyle modeller pratikte bir modelleme dili ile formüle edilir. Geliştirilmiş dillerden bazıları: AMPL, MPL, GAMS, LINGO.
- Çok güçlü bir endüstriyel çözücü: CPLEX.
| Kütüphane | Birincil kullanım | Öğrenmede en uygun olduğu yer |
|---|---|---|
SciPy — linprog | LP problemlerini çözmek | LP çözmeye giriş için en iyi başlangıç noktası |
PuLP | LP ve karışık tamsayılı doğrusal programlama (MILP) modelleme | Matematiksel modellerin açık, okunaklı formülasyonu |
Pyomo | LP, MILP ve daha genel optimizasyon problemlerini modelleme | Daha kapsamlı optimizasyon modellemesi ve dersleri |
CVXPY | Dışbükey optimizasyon problemlerini modelleme | LP'nin yanında dışbükey optimizasyona giriş |
Öneri: LP çözmek için SciPy ile başla; model formülasyonu ön plandaysa PuLP ya da Pyomo kullan. Wyndor modeli SciPy ile:
from scipy.optimize import linprog # linprog her zaman minimize eder: max 3x1 + 5x2 yerine min -3x1 - 5x2 c = [-3, -5] A_ub = [[1, 0], # Fabrika 1: x1 <= 4 [0, 2], # Fabrika 2: 2x2 <= 12 [3, 2]] # Fabrika 3: 3x1 + 2x2 <= 18 b_ub = [4, 12, 18] res = linprog(c, A_ub=A_ub, b_ub=b_ub, bounds=[(0, None), (0, None)], method="highs") print(res.x, -res.fun) # [2. 6.] 36.0
\(\ge\) kısıtları A_ub'a \(-1\) ile çarpılarak, eşitlikler A_eq ve b_eq ile verilir. Save-It ve Union Airways modelleri de aynı şekilde çözülebilir; bu notta verilen optimum değerler (35.109,65 $ ve 30.610 $) SciPy ile doğrulandı.
Alıştırmalar
Slaytlardaki alıştırmalar. Önce kendin formüle edip çöz, sonra çözümü aç. Çözümler slaytlarda yok; burada hazırlanıp SciPy ile doğrulandı.
Bir çiftçi 100 hektarlık arazisinin bir kısmına patates, bir kısmına buğday ekmeyi, kalanını nadasa bırakmayı planlıyor. Patatesin hektar başına maliyeti 10, buğdayınki 20 para birimi; toplam bütçe 1.100. Hava ve mevsim koşulları yüzünden yılda en fazla 160 iş günü var; patates hektar başına 1, buğday 4 iş günü istiyor. Hasat sonunda net getiri patateste hektar başına 40, buğdayda 120. Toplam getiriyi en büyüklemek için arazi nasıl paylaştırılmalı?
Çözümü göster
\(x_1\): patates ekilen alan (ha), \(x_2\): buğday ekilen alan (ha).
\[ \begin{aligned} \max\quad & Z = 40x_1 + 120x_2 \\ \text{öyle ki}\quad & x_1 + x_2 \le 100 && \text{(arazi)} \\ & 10x_1 + 20x_2 \le 1100 && \text{(bütçe)} \\ & x_1 + 4x_2 \le 160 && \text{(iş günü)} \\ & x_1, x_2 \ge 0 \end{aligned} \]| \(x_1\) | \(x_2\) | Hangi kısıtların kesişimi | \(Z\) |
|---|---|---|---|
| 0 | 0 | eksenler | 0 |
| 100 | 0 | arazi, \(x_2 = 0\) | 4.000 |
| 90 | 10 | arazi, bütçe | 4.800 |
| 60 | 25 | bütçe, iş günü | 5.400 |
| 0 | 40 | iş günü, \(x_1 = 0\) | 4.800 |
Optimum: 60 ha patates, 25 ha buğday, 15 ha nadas; \(Z = 5.400\). Bütçe ve iş günü tamamen kullanılır, arazide 15 ha boş kalır. (Arazi ve iş günü doğrularının kesişimi \((80, 20)\) bütçeyi aştığı için olurlu değildir.)
Bir firma çelik ve demir tozundan bir alaşım üretiyor. Maliyet ton başına çelikte 50 $, demir tozunda 20 $. Teknik şartlar: her 2 ton demir tozu için en az 1 ton çelik kullanılmalı; 1 ton çeliği işlemek 1 saat, 1 ton demir tozunu işlemek 4 saat sürüyor ve toplam işleme süresi en az 80 saat olmalı; işleme sırasında çelikte %10, demir tozunda %20 kayıp oluyor ve kullanılabilir toplam çıktı en az 40 ton olmalı. En düşük maliyetli üretim planını bulan modeli kur.
Çözümü göster
\(x_1\): çelik (ton), \(x_2\): demir tozu (ton). “Her 2 ton demir tozu için en az 1 ton çelik” şartı \(x_1 \ge x_2 / 2\), yani \(2x_1 - x_2 \ge 0\) demektir.
\[ \begin{aligned} \min\quad & Z = 50x_1 + 20x_2 \\ \text{öyle ki}\quad & 2x_1 - x_2 \ge 0 && \text{(oran)} \\ & x_1 + 4x_2 \ge 80 && \text{(işleme süresi)} \\ & 0{,}9x_1 + 0{,}8x_2 \ge 40 && \text{(kullanılabilir çıktı)} \\ & x_1, x_2 \ge 0 \end{aligned} \]Olurlu bölge yukarı-sağa doğru sınırsızdır, ama maliyet katsayıları pozitif olduğu için en küçük değer yine bir köşede bulunur:
| \(x_1\) | \(x_2\) | Hangi kısıtların kesişimi | \(Z\) |
|---|---|---|---|
| 16 | 32 | oran, çıktı | 1.440 |
| 240/7 ≈ 34,29 | 80/7 ≈ 11,43 | süre, çıktı | ≈ 1.942,86 |
| 80 | 0 | süre, \(x_2 = 0\) | 4.000 |
Optimum: 16 ton çelik ve 32 ton demir tozu, \(Z = 1.440\) $. Bu noktada oran şartı ve çıktı şartı sıkıdır; işleme süresi 144 saattir, alt sınırın oldukça üstünde.
Bir petrol şirketi ham petrolü iki yöntemle işleyebiliyor. Proses I: 1 ton ham petrolü 3/4 ton A maddesi ve 1/4 ton B maddesine çeviriyor, 20 işçi gerektiriyor; günlük kapasitesi en fazla 2 ton, işletme maliyeti ton başına 60 $. Proses II: 1 ton ham petrolü 1/4 ton A ve 3/4 ton B'ye çeviriyor, 10 işçi gerektiriyor; günlük kapasitesi en fazla 3 ton, maliyeti ton başına 30 $. Şirketin günlük sınırı 40 işçi ve 4 ton ham petrol. (a) A'nın satış fiyatı ton başına 285 $, B'ninki 105 $ ise; (b) A 475 $, B 15 $ ise günlük üretim kârı en büyükleyecek şekilde nasıl planlanmalı?
Çözümü göster
\(x_1\), \(x_2\): Proses I ve II'de günde işlenen ham petrol (ton). Kısıtlar fiyatlardan bağımsızdır:
\[ x_1 \le 2,\qquad x_2 \le 3,\qquad 20x_1 + 10x_2 \le 40 \;\text{(işçi)},\qquad x_1 + x_2 \le 4 \;\text{(ham petrol)},\qquad x_1, x_2 \ge 0 \]İşlenen ton başına net kâr = ürünlerin satış değeri − işletme maliyeti:
\[ c_1 = \tfrac{3}{4} p_A + \tfrac{1}{4} p_B - 60, \qquad c_2 = \tfrac{1}{4} p_A + \tfrac{3}{4} p_B - 30 \]- (a) \(p_A = 285,\ p_B = 105\): \(c_1 = 213{,}75 + 26{,}25 - 60 = 180\), \(c_2 = 71{,}25 + 78{,}75 - 30 = 120\).
- (b) \(p_A = 475,\ p_B = 15\): \(c_1 = 356{,}25 + 3{,}75 - 60 = 300\), \(c_2 = 118{,}75 + 11{,}25 - 30 = 100\).
| \(x_1\) | \(x_2\) | (a) \(Z = 180x_1 + 120x_2\) | (b) \(Z = 300x_1 + 100x_2\) |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 2 | 0 | 360 | 600 |
| 0,5 | 3 | 450 | 450 |
| 0 | 3 | 360 | 300 |
(a) Optimum: Proses I'de 0,5 ton, Proses II'de 3 ton; günlük kâr 450 $. (b) Optimum: yalnızca Proses I'de 2 ton; günlük kâr 600 $. Fiyatlar değişince optimum bir köşeden ötekine atlar. Ham petrol kısıtı fazladır: olurlu bölgede \(x_1 + x_2\) en fazla 3,5 olabilir, 4'e hiç ulaşmaz.
Şekil 7. Aynı olurlu bölge, iki farklı amaç. Kısıtlar: (1) Proses I kapasitesi, (2) Proses II kapasitesi, (3) işçi, (4) ham petrol; (4) bölgeye hiç değmez. Solda (a): eş-kâr doğrusu işçi kısıtından daha yatık olduğu için optimum üst köşeye kayar. Sağda (b): Proses I çok daha kârlı, doğru dikleşir ve optimum \((2, 0)\)'a geçer.
Bir şirket iki ürünü tek bir makinede işliyor. Ürün 1 için 3 saat, ürün 2 için 2 saat işleme süresi gerekiyor; makine günde en fazla 12 saat çalışabiliyor. Ürün 1'in her birimi için 1, ürün 2'nin her birimi için 2 birim ara malzeme kullanılıyor; toplam ara malzeme 6 birimi aşmamalı. Birim kâr ürün 1'de 15 TL, ürün 2'de 25 TL. Modeli kur ve grafik/analitik yöntemle çöz.
Çözümü göster
| \(x_1\) | \(x_2\) | \(Z\) |
|---|---|---|
| 0 | 0 | 0 |
| 4 | 0 | 60 |
| 3 | 1,5 | 82,5 |
| 0 | 3 | 75 |
İki kısıtın kesişimi: \(3x_1 + 2x_2 = 12\) ile \(x_1 + 2x_2 = 6\) taraf tarafa çıkarılırsa \(2x_1 = 6\), yani \(x_1 = 3\), \(x_2 = 1{,}5\). LP optimumu \(Z = 82{,}5\) TL.
Ürünler tam sayıda üretilmek zorundaysa: \(x_2 = 1{,}5\)'i aşağı yuvarlamak \((3, 1)\) ile 70 TL verir; yukarı yuvarlamak \((3, 2)\) makine kısıtını ihlal eder (\(9 + 4 = 13 \gt 12\)). Tamsayı noktalar tek tek denendiğinde en iyisi \((2, 2)\), \(Z = 80\) TL çıkar. Yani tamsayılı optimum, LP optimumunun yuvarlanmasıyla bulunamıyor; bu, tamsayılı programlamanın (Hafta 13) ayrı yöntemlere ihtiyaç duymasının nedenidir.
A ve B adlı iki gıda ürünü bir soğuk hava deposunda saklanıyor. A ürünü 3 saat, B ürünü 2 saat tutuluyor ve depo en az 5 saat açık kalmalı. İki ürünün toplam talebi en fazla 1 ton. Birim kâr A için 4 $, B için 3 $. Karar modelini kur ve çözümünü grafik/analitik yöntemle incele.
Çözümü göster
\(x_1\), \(x_2\): A ve B ürünü miktarı (ton).
\[ \begin{aligned} \max\quad & Z = 4x_1 + 3x_2 \\ \text{öyle ki}\quad & 3x_1 + 2x_2 \ge 5 && \text{(depo en az 5 saat)} \\ & x_1 + x_2 \le 1 && \text{(talep)} \\ & x_1, x_2 \ge 0 \end{aligned} \]Olurlu çözüm yok. Talep kısıtı altında \(3x_1 + 2x_2 \le 3(x_1 + x_2) \le 3\) olur; yani depo süresi en fazla 3 saate ulaşabilir ve 5 saat şartı hiçbir zaman sağlanamaz. Grafikte \(3x_1 + 2x_2 = 5\) doğrusu, \((0, 0)\), \((1, 0)\), \((0, 1)\) üçgeninin tamamen dışında kalır.
Bu alıştırma “olurlu çözüm yok” durumunun gerçek hayattaki karşılığını gösterir: model doğru kurulmuş olsa bile şartlar birbiriyle çelişiyordur. Karar verici bir şartı gevşetmelidir; örneğin talep sınırı en az 5/3 ton olursa \(x_1 = 5/3\) olurlu hâle gelir.
Özet
- LP'de bütün fonksiyonlar doğrusaldır; “programlama” planlama demektir.
- Bir LP; karar değişkenleri \(x_j\), parametreler \(c_j, a_{ij}, b_i\), amaç fonksiyonu, fonksiyonel kısıtlar ve negatif olmama kısıtlarından oluşur.
- Orantılılık, toplanabilirlik ve kesinlik LP'nin varsayımlarıdır; bölünebilirlik bozulduğunda tamsayılı programlamaya geçilir.
- Oran içeren kısıtlar paydayla çarpılarak doğrusallaştırılır (Save-It); kapsama kısıtları “her dilimi kapsayan vardiyaların toplamı ≥ gereksinim” biçimindedir (Union Airways).
- İki değişkenli LP grafikle çözülür: olurlu bölge çizilir, eş-kâr doğrusu kaydırılır.
- Bir LP'nin tek optimumu, çoklu optimumu olabilir, hiç olurlu çözümü olmayabilir ya da amaç sınırsız olabilir.
- Optimal çözüm varsa en iyi köşe noktası (CPF) çözümü optimaldir; simpleks yöntemi bu gerçeğe dayanır.