doğrusal programlama
DESCRIPTION
Matematiksel Programlama Dersi için Doğrusal Programlama (LP)TRANSCRIPT
DOĞRUSAL PROGRAMLAMA
Hazırlayanlar:Hasan Hüseyin SUBAŞIBarış ÖZKAYA
Matematiksel Programlama - 2013
MATEMATİKSEL PROGRAMLAMA2
Doğrusal Programlama Nedir?
Tanımlar
Giapetto’s Woodcarving Problemi
Grafiksel Çözüm
Diyet Problemi
Posta Ofisi Problemi
Karıştırma Problemi
Sunum Planı
MATEMATİKSEL PROGRAMLAMA3
Doğrusal Programlama
Doğrusal programlama, kaynakların optimal dağılımını elde etmeye, maliyetleri minimize, karı ise maksimize etmeye yarayan bir tekniktir.
Kısaca DP; en iyi çıktıyı (maksimum kar veya en düşük maliyet) geliştirmeye yarayan matematiksel metottur.
MATEMATİKSEL PROGRAMLAMA4
Çözüm Araçları
• LINDO, • LINGO, • Excel Solver
MATEMATİKSEL PROGRAMLAMA5
Doğrusal Programlama
Doğrusal Programlamada aşağıdaki 3 parça bulunur:
– Amaç Fonksiyonu (Objective Function): Karar değişkenlerinin maksimize veya minimize edilmesi
– Kısıtlar (Constraints): Her biri doğrusal eşitlik ve doğrusal eşitsizlik olan değerleri kısıtlayan
– İşaret Kısıtı (Sign Restriction): Her karar değişken (Xj) için
• Xj >> 0• Xj pozitif, 0 veya negatif (xj : unrestricted in sign –urs–)
MATEMATİKSEL PROGRAMLAMA6
Doğrusal Programlama Modeli (1)
X1, X2, X3, ………, Xn = karar değişkenler
Z = Amaç fonksiyon veya doğrusal fonksiyonGereksinim: Z değerinin maksimizasyonu
Z = c1X1 + c2X2 + c3X3 + …+ cnXn ... Denklem (1)
... Denklem (2)
MATEMATİKSEL PROGRAMLAMA7
Doğrusal Programlama Modeli (2)
Doğrusal Programlama modeli daha verimli şekilde aşağıdaki gibi de yazılabilir:
... Denklem (3)
Karar değişkenleri olan X1, X2, …, Xn n seviye hesap aktivitesidir.
MATEMATİKSEL PROGRAMLAMA8
Doğrusal Programlamanın Önemi– Çoğu gerçek dünya problemi doğrusal modeller ile ifade
ediliyor.– Fortune 500 yapılan anket: %85 doğrusal programlama
kullanıyor– Birçok başarılı uygulama var:
• Üretim• Pazarlama• Finans (Yatırım)• Reklam• Tarım
MATEMATİKSEL PROGRAMLAMA9
Simpleks Algoritması
Uzun grafiksel çözümden sakınmak için çok değişkenli doğrusal programlama problemlerinin çözümünde yaygın biçimde kullanılan yöntem «simpleks yöntemi»dir.
Simpleks yöntemi bütün uygun çözümleri incelemek için kullanılmaz. Küçük ve tekil uygun çözümlerle ilgilenir.
George B. Dantzig tarafından geliştirilen bu yöntem tekrarlı bir yöntem olduğundan «simpleks algoritması» olarak da adlandırılmaktadır.
MATEMATİKSEL PROGRAMLAMA10
Tanımlar
Amaç fonksiyonu katsayısı: Amaç fonksiyonundaki değişkenin katsayısı
Teknolojik katsayı: Kısıtlardaki değişkenin katsayısı
Sağ-el taraf (right-hand side –rhs–): Her kısıtın sağ tarafına verilen isim
Olası Bölge(Feasible Region) İsoprofit ve isocost çizgileri
MATEMATİKSEL PROGRAMLAMA11
Grafiksel Çözüm
2 karar değişkenlilerde grafiksel çözüm: Olası bölgenin grafiğini çiz İsoprofit çizgisini çiz İsoprofit çizgisini artan z yönünde kaydır. Uygun
alandaki son nokta «optimal çözüm»dür.
MATEMATİKSEL PROGRAMLAMA12
Dört Durum
• Doğrusal Programlamada 4 durum:– Tekil bir çözüm– Sonsuz optimal çözüm (alternative optimal
solution)– Uygun çözümü yok (infeasible)– Sınırsız çözüm (unbounded)
Doğrusal Programlamanın
Varsayımları
MATEMATİKSEL PROGRAMLAMA14
Doğrusallık Amaç fonksiyonu ve kısıtlamalar, karar
değişkenleri açısından doğrusaldır. Örneğin karar değişkenleri iki katına çıktığında amaç fonksiyonu değeri de iki katına çıkar. Bir başka deyişle, amaç fonksiyonunda ve kısıtlamalarda oransallık vardır.
Örneğin, bir kg süt üretmek için 4 kg yem verilmesi gerekiyorsa, 10 kg süt üretimi için 40 kg yem kullanılması gerektiği düşünülür. Aynı şekilde, 1kg süt satışından elde edilecek gelir 500 bin TL ise, 10 kg süt satışından 5 milyon TL gelir sağlanacaktır.
MATEMATİKSEL PROGRAMLAMA15
Kesinlik
Modeldeki tüm parametrelerin bilindiği ve sabit oldukları kabul edilir. Buna göre, amaç fonksiyonu ve kısıtlamalardaki sayısal değerleri kesindir ve planlama sürecinde değişmez.
Örneğin bir dekar pamuk üretildiğinde ihtiyaç duyulacak işgücü 20 erkek iş gücü, elde edilecek brüt kâr 750.000 TL, toplam işletme sermayesi 15 milyon TL olarak belirlenmişse; bunların kesin olduğu ve değişmeyeceği varsayılır.
MATEMATİKSEL PROGRAMLAMA16
Toplanabilirlik
Bu varsayım değişik üretim faaliyetlerine kaynak olan üretim girdilerinin toplamının her bir işlem için ayrı ayrı kullanılan girdilerin toplamına eşit olduğunu gösterir.
Örneğin bir iş iki saatte, diğeri üç saatte yapılıyorsa, iki işi birden yapmak için beş saate gerek vardır.
MATEMATİKSEL PROGRAMLAMA17
Bölünebilirlik
Faaliyetlerin çözüm değerleri tam sayı olmayabilir. Bir başka ifadeyle, faaliyetler kesirli veya ondalık noktalı değerler alabilir. 1.75 traktöre yer verme veya 2.25 süt sığırı yetiştirme, doğrusal programlamadan elde edilebilecek olası çözüm sonuçlarıdır.
Eğer bölünebilirlik istenmiyorsa integer programlama yöntemi kullanılır
MATEMATİKSEL PROGRAMLAMA18
Negatif Olmama
Fiziksel değerlerin sıfırdan küçük olması mümkün değildir.
Örneğin –2 sandalye, -5 süt sığırı, -10 dekar arazi olamaz.
ÖRNEKLER
MATEMATİKSEL PROGRAMLAMA20
Giapetto’s Woodcarving
• Asker ve tren oyuncak yapılıyor• Asker $27 satış, $10 hammadde, $14 emek maliyeti• Tren $21 satış, $9 hammadde, $10 emek maliyeti• Asker 2 saat bitirme emeği, 1 saat marangozluk işi• Tren 1 saat bitirme emeği, 1 saat marangozluk işi• Toplam 100 saat bitirme, 80 saat marangozluk• Tren talebi sınırsız, asker talebi maks. 40 adet
MATEMATİKSEL PROGRAMLAMA21
Giapetto’s Woodcarving
X1 = üretilen asker sayısı/hafta
X2 = üretilen tren sayısı/hafta
z: Haftalık kazançlar - haftalık giderler (1)
Maksimum z = 3X1 + 2X2 (*)
*: (27X1 + 21X2)-(10X1 + 9X2)-(14X1 + 10X2)
*: (haftalık gelir)-(hammadde maliyeti)-(diğer maliyetler)
MATEMATİKSEL PROGRAMLAMA22
Giapetto’s WoodcarvingKISITLAR:
Kısıt 1: Haftada bitirme emeği maksimum 100 saatKısıt 1: 2X1 + X2 ≤ 100 (2)
Kısıt 2: Haftada marangozluk işi maksimum 80 saat Kısıt 2: X1 + X2 ≤ 80 (3)
Kısıt 3: Haftada maksimum 40 adet asker oyuncak talebiKısıt 3: X1 ≤ 40 (4)
İşaret Kısıtları:X1 , X2 ≥ 0 (5) (6)
MATEMATİKSEL PROGRAMLAMA23
Giapetto’s WoodcarvingOlası Bölge:
X1= 40, X2 =20 için
(2) 2(40)+20 ≤ 100 (3) 40+20 ≤ 80 (4) 40 ≤ 40 (5) 40 ≥ 0 (6) 20 ≥ 0
Optimal Çözüm:X1 = 20, X2=60 için
z =3(20) + 2(60) =$180
X1= 15, X2 =70 için
(2) 2(15)+70 ≤ 100 (3) 15+70 ≤ 80(4) 15≤ 40 (5) 15≥ 0 (6) 70 ≥ 0
MATEMATİKSEL PROGRAMLAMA24
Bağlayıcı Kısıtlar
• Optimal çözüm noktasını kısıta uyguladığımızda, kısıtın sağ ve sol tarafı – Eşit oluyorsa, bağlayıcı kısıttır.
• Giapetto probleminde, “finishing” ve “carpentry” kısıtları bağlayıcıdır.
– Eşit olmuyorsa o kısıt bağlayıcı değildir. • Giapetto probleminde, tahta askerler için talep kısıtı
bağlayıcı değildir. • Çünkü optimal çözümde (x1 = 20), x1 < 40.
Convex sets of points• S noktalar kümesindeki herhangi iki doğruyu birleştiren çizgi tümüyle S
kümesi içinde kalıyorsa convex küme denir. • Convex bir S kümesi için, tamamen S kümesinde içinde kalan çizgi
segmentleri için bir P noktası uç noktası oluyorsa, P noktası uç nokta ( extreme point ) olur.
• Uç noktalar aynı zamanda köşe noktalar olarak adlandırılırlar. Extreme point are sometimes called corner points, çünkü S kümesi bir poligonsa köşe noktalar uç noktalar olacaktır.
Özel Durumlar
• Giapetto probleminde tek bir optimal çözüm vardır. • Bazı LP’lerde tek bir optimal çözüm olmayabilir.
– Bazı LP’lerin sonsuz sayıda çözümü olabilir. (alternatif ya da çoklu optimal çözüm).
– Bazı LP’lerde uygun çözüm olmayabilir.– Bazı LP’ler kısıtlandırılmamış olabilir (unbounded):
Uygun bölgede (feasible region) çok büyük sonuçlar veren çözüm noktaları olabilir (maximization problem).
• Goal programming genellikle alternatif optimal çözümler arasından seçim yapmak için kullanılır.
Doğrusal Amaç Fonksiyonu
• Amaç fonksiyonun, karar değişkenlerinin doğrusal bir fonksiyonu olması:1. Her karar değişkeninin amaç fonksiyonuna katkısı, karar
değişkeninin değeri ile orantılıdır. Örnek: 4 askerin amaç fonksiyonuna katkısı 1 askerin katkısının 4 katıdır.2. Her bir karar değişkenin amaç fonksiyonuna katkısı, diğer
karar değişkenlerinden bağımsızdır. Örnek: no matter what the value of x2, the manufacture of x1 soldiers will always contribute 3x1 dollars to the objective function.
Doğrusal Kısıtlar
• Benzer şekilde kısıtların doğrusal olması:1.Her karar değişkeninin kısıt denkleminin sol tarafına
katkısı, karar değişkeninin değeri ile orantılıdır. Örnek: 3 asker üretmek için gerekli olan bitirme saati «finishing hours», 1 asker üretmek için gerekli olanın tam 3 katıdır.
2.Her bir karar değişkenin kısıt denkleminin sol tarafına katkısı, diğer karar değişkenlerinden bağımsızdır. Örnek: x1 değeri ne olursa olsun, x2 adet tren üretirken x2 bitirme saati ve x2 marangoz saati harcanır.
MATEMATİKSEL PROGRAMLAMA29
Giapetto’s Woodcarving Grafiksel Çözüm
X1
X2
10 20 40 50 60 80
2040
6080
100
finishing constraint
carpentry constraint
demand constraint
z = 60
z = 100
z = 180
Feasible Region
G
A
B
C
D
E
F
H
MATEMATİKSEL PROGRAMLAMA30
Diyet Problemi
• 4 çeşit: brownie, çikolatalı dondurma, kola, cheesecake
• Her brownie 40¢• Her çikolatalı dondurma 20¢• Her şişe kola 30¢• Her cheesecake 80¢• En az 500 kalori, 6 ons çikolata, 10 ons şeker, 8
ons yağ• Günlük besin ihtiyacı için minimum harcama?
MATEMATİKSEL PROGRAMLAMA31
Diyet Problemi
Besin Değerleri:
MATEMATİKSEL PROGRAMLAMA32
Diyet Problemi
X1 = günlük yenen brownie sayısı
X2 = günlük yenen çikolatalı dondurma kepçe sayısı
X3 = günlük içilen kola sayısı
X4 = günlük yenen cheesecake dilimi sayısı
Toplam Diyet Maliyeti = 50X1 + 20X2 + 30X3 + 80X4
Min z = 50X1 + 20X2 + 30X3 + 80X4
MATEMATİKSEL PROGRAMLAMA33
Diyet ProblemiKISITLAR:
Kısıt 1: Günlük en az 500 kalori alınmalıKısıt 1: 400X1 + 200X2 + 150X3 + 500X4 ≥ 500 (2)
Kısıt 2: Günlük en az 6 ons çikolata alınmalı Kısıt 2: 3X1 + 2X2 ≥ 6 (3)
Kısıt 3: Günlük en az 10 ons şeker alınmalıKısıt 3: 2X1 + 2X2 + 4X3 + 4X4 ≥ 10 (4)
Kısıt 4: Günlük en az 8 ons yağ alınmalıKısıt 4: 2X1 + 4X2 + X3 + 5X4 ≥ 8 (5)
İşaret Kısıtları:Xi (i=1,2,3,4) ≥ 0
MATEMATİKSEL PROGRAMLAMA34
Diyet ProblemiOPTİMAL ÇÖZÜM:
X1=0, X2=3, X3=1, X4=0 ve z=90
400(0) + 200(3) + 150(1) + 500(0) = 750 kalori
3(0) + 2(3) = 6 ons çikolata 2(0) + 2(3) + 4(1) + 4(0) = 10 ons şeker2(0) + 4(3) + 1+ 5(0) = 13 ons yağ
• Çikolata ve şeker kısıtları bağlayıcı, kalori ve yağ kısıtları bağlayıcı değil…
MATEMATİKSEL PROGRAMLAMA35
Posta Ofisi Problemi
• Haftanın her günü farklı sayılarda tam zamanlı personel ihtiyacı
• Ülke kuralı: Bir personel ard arda 5 gün çalışır, 2 gün izin alır
• Posta Ofisinin her günkü personel ihtiyacını karşılayacak, kiralanması gereken minimum personel sayısı nedir?
MATEMATİKSEL PROGRAMLAMA36
Posta Ofisi Problemi
Posta Ofisi Günlük Personel İhtiyaç Sayıları:
MATEMATİKSEL PROGRAMLAMA37
Posta Ofisi Problemi
Xi = i. günde işe başlayan personel sayısı
Min z = X1 + X2 + X3 + X4 + X5 + X6 + X7
Yapılan genel bir hata: Xi karar değişkeninin i gününde çalışan personel sayısı
seçilmesi durumu. Bu durumda işe başlamış aynı personel 5 farklı günde sayılmış olur.
MATEMATİKSEL PROGRAMLAMA38
Posta Ofisi ProblemiKISITLAR:
X1 + X4 + X5 + X6 + X7 ≥ 17 (Pazartesi kısıtı)
X1 + X2 + X5 + X6 + X7 ≥ 13 (Salı kısıtı)
X1 + X2 + X3 + X6 + X7 ≥ 15 (Çarşamba kısıtı)
X1 + X2 + X3 + X4 + X7 ≥ 19 (Perşembe kısıtı)
X1 + X2 + X3 + X4 + X5 ≥ 14 (Cuma kısıtı)
X2 + X3 + X4 + X5 + X6 ≥ 16 (Cumartesi kısıtı)
X3 + X4 + X5 + X6 + X7 ≥ 11 (Pazar kısıtı)
İşaret Kısıtları:Xi (i=1,2,…,7) ≥ 0
MATEMATİKSEL PROGRAMLAMA39
Posta Ofisi Problemi
OPTİMAL ÇÖZÜM:Z=67/3,X1=4/3, X2=10/3, X3= 2, X4=22/3, X5=0, X6=10/3, X7=5- Bölünebilirlik varsayımı sağlanmaz.
İnteger Programlama ile optimal çözüm:Z=23,X1=4, X2=4, X3= 2, X4=6, X5=0, X6=4, X7=3
Karıştırma Problemleri
• Nihai ürün için çeşitli girdilerin belli oranlarda karıştırılmasını içeren problemlere karıştırma problemi «blending problems» denir.
• Bazı örnek karıştırma problemi tipleri:– Farklı tipteki ham petrollerin çeşitli petrol ürünleri
için karıştırılması.– Farklı kimyasalları çeşitli kimyasal ürünler için
karıştırılması…
MATEMATİKSEL PROGRAMLAMA41
Karıştırma Problemi• 3 çeşit yakıt: yakıt 1, yakıt 2, yakıt 3• Yakıtlar 3 çeşit ham petrol karışımla oluşur: ham 1, ham 2, ham 3• Firma her ham petrol türünden 5000 varil/günlük alım yapabiliyor• Yakıt 1 için ortalama ham petrol en az 10 oktan ve en çok %1 sülfür• Yakıt 2 için ortalama ham petrol en az 8 oktan ve en çok %2 sülfür• Yakıt 3 için ortalama ham petrol en az 6 oktan ve en çok %1 sülfür• Ham petrolü yakıta dönüştürme maliyeti $4• Firma 14000 varil/günlük yakıt üretiyor• Firma günlük olarak yakıt 1’den 3000 varile, yakıt 2’den 2000 varile ve
yakıt 3’ten 1000 varile ihtiyaç duyuyor• Günlük reklam yaptığında o yakıt için her bir dolara 10 varil ihtiyaç artıyor• Firmanın günlük maksimum karı nedir?
MATEMATİKSEL PROGRAMLAMA42
Karıştırma Problemi
Yakıt ve Ham Petrol Fiyat Tablosu
MATEMATİKSEL PROGRAMLAMA43
Karıştırma Problemi
Oktan Oranı ve Sülfür İhtiyacı Tablosu
MATEMATİKSEL PROGRAMLAMA44
Karıştırma Problemi
• ai = yakıt i için harcanan reklam gideri (i=1,2,3)
• xij = yakıt j için harcanan ham i kullanımı (i=1,2,3; j=1,2,3)
x11 + x12 + x13 = günlük kullanılan ham 1 varil miktarı
x21 + x22 + x23 = günlük kullanılan ham 2 varil miktarı
x31 + x32 + x33 = günlük kullanılan ham 3 varil miktarı
x11 + x21 + x31 = günlük üretilen yakıt 1 varil miktarı
x11 + x22 + x32 = günlük üretilen yakıt 2 varil miktarı
x13 + x23 + x33 = günlük üretilen yakıt 3 varil miktarı
MATEMATİKSEL PROGRAMLAMA45
Karıştırma Problemi
• ai = yakıt i için harcanan reklam gideri (i=1,2,3)
• xij = yakıt j için harcanan ham i kullanımı (i=1,2,3; j=1,2,3)
Gaz satışından kazanılan günlük kazanç=70(x11 + x21 + x31) + 60(x11 + x22 + x32) + 50(x13 + x23 + x33)
Ham petrol alışından günlük harcanan=45(x11 + x12 + x13) + 35(x21 + x22 + x23) + 25(x31 + x32 + x33)
MATEMATİKSEL PROGRAMLAMA46
Karıştırma Problemi• ai = yakıt i için harcanan reklam gideri (i=1,2,3)
• xij = yakıt j için harcanan ham i kullanımı (i=1,2,3; j=1,2,3)
Günlük reklam gideri = a1 + a2 + a3
Günlük üretim maliyeti= 4(x11 + x12 + x13 + x21 + x22 + x23 + x31 + x32 + x33)
Günlük Kar (z) = 21x11 + 11x12 + x13 + 31x21 + 21x22 + 11x23 + 41x31 + 31x32 + 21x33 - a1 - a2 - a3
Reklamla gaz talepleri artışı:Yakıt 1 için $10 a1
Yakıt 2 için $10 a2
Yakıt 3 için $10 a3
MATEMATİKSEL PROGRAMLAMA47
Karıştırma ProblemiKISITLAR:• Kısıt 1: Günlük yakıt 1 üretimi günlük ihtiyaç kadar olmalı
x11 + x21 + x31 = 3000 + a1
• Kısıt 2: Günlük yakıt 2 üretimi günlük ihtiyaç kadar olmalıx12 + x22 + x32 = 2000 + a2
• Kısıt 3: Günlük yakıt 3 üretimi günlük ihtiyaç kadar olmalıx13 + x23 + x33 = 1000 + a3
• Kısıt 4: En çok 5000 varil/günlük ham 1 alınabilir x11 + x21 + x31 ≤ 5000
• Kısıt 5: En çok 5000 varil/günlük ham 2 alınabilir x12 + x22 + x32 ≤ 5000
• Kısıt 6: En çok 5000 varil/günlük ham 3 alınabilir x13 + x23 + x33 ≤ 5000
MATEMATİKSEL PROGRAMLAMA48
Karıştırma ProblemiKISITLAR:• Kısıt 7: Günlük 14000 varil adet yakıt üretilebilir
x11 + x21 + x31 + x12 + x22 + x32 + x13 + x23 + x33 ≤ 14000• Kısıt 8: Yakıt 1 elde etmek için katılması gereken ham yağ oktan
seviyesi ortalama en az 10 olmalı ≥ 10 2x11-4x21-2x31 ≥ 0• Kısıt 9: Yakıt 2 elde etmek için katılması gereken ham yağ oktan
seviyesi ortalama en az 8 olmalı ≥ 8 4x12-2x22≥ 0• Kısıt 10: Yakıt 3 elde etmek için katılması gereken ham yağ oktan
seviyesi ortalama en az 6 olmalı ≥ 6 6x13+2x33≥ 0
MATEMATİKSEL PROGRAMLAMA49
Karıştırma Problemi
KISITLAR:• Kısıt 11: Yakıt 1 elde etmek için katılması gereken ham
yağ sülfür oranı en fazla %1 olmalı ≤ 0,01 -0,005x11+0,01x21+0,02x31 ≤ 0
• Kısıt 12: Yakıt 2 elde etmek için katılması gereken ham yağ sülfür oranı en fazla %2 olmalı
≤ 0,02 -0,015x12+0,01x32≤ 0
• Kısıt 13: Yakıt 3 elde etmek için katılması gereken ham yağ sülfür oranı en fazla %1 olmalı
≤ 0,01 -0,005x13+0,01x23+0,02x33≤ 0
Sorular&
TeşekkürlerHasan Hüseyin SUBAŞIBarış ÖZKAYA