• Sonuç bulunamadı

5. MODELĠN GELĠġTĠRĠLMESĠ VE ABC FĠRMASINDA UYGULAMA

5.5 Model için Çözüm Önerisi

5.5.2 Model için genetik algoritma uygulaması

Her alıcının en iyi satış miktarının „yiopt‟ belirlenmesi için kurulan bu matematiksel

model, Doğrusal Olmayan Tamsayılı Programlama (NIP) problemidir. Nachiappan ve Jawahar (2007) çalışmasında anlatılan GA uygulamasından esinlenerek biz de modelimiz için benzer bir GA temelli sezgisel yöntem geliştirdik. Nachiappan ve Jawahar (2007), modellerinde kanal kazancının eniyilenmesi amacıyla i.nci alıcı için en iyi ya da en iyiye yakın satış miktarını „yiopt‟ bulmak amacıyla bir GA

geliştirmişlerdir. Satış fiyatı P(yiopt) ve sözleşme fiyatı Wiopt, GA ile bulunan en iyi

satış miktarı „yiopt‟ kullanılarak hesaplanmıştır. Yani önerilen bu sezgisel yöntem

önce GA ile „yiopt‟ değerini hesaplar ve bu değerden yola çıkarak P(yiopt) ve Wiopt

değerlerini elde eder. Biz de önerilen bu sezgisel yöntemin adımlarını izleyerek ve modelimize ait değişiklikleri yaparak kanal kazancını eniyileyecek satış miktarlarını bulmayı hedefliyoruz. Sonrasında, satış fiyatları ve sözleşme fiyatlarını bu en iyi satış miktarlarından yola çıkarak belirleyeceğiz. Şekil 5.3, modelimize ait GA temelli sezgisel yaklaşımın adımlarını göstermektedir. MATLAB (2008) kullanarak bu GA temelli sezgisel yaklaşımı programladık.

Tedârikçi ve alıcılarına ait elde bulundurma, sipariş verme ve taşıma mâliyetleri gibi veriler problemimiz için girdileri oluşturur. Girdi Modülü, tedârikçi ve her alıcısı için bu verileri depolar. Başlangıç Modülü ise, GA için ilk popülasyonu üretmemizi sağlar. Başlangıç popülasyonunun rastgele üretilmiş „c‟ kromozomları bütün alıcıların satış miktarlarını gösterir.

ġekil 5.3 : Model için önerilen GA temelli sezgisel yaklaşım

Çıktı Modülü

Yazdırma:

En iyi kanal kazancı „Pcopt‟: “Genel En İyi”

En iyi satış miktarları „yiopt‟ ( i): Genel En

İyi‟ye ait genler

Fiyatlandırma Modülü

Belirleme:

Satış fiyatı P(yiopt) ( i):

„yiopt‟ değeri ve denklem

5.2‟yi kullan

Sözleşme fiyatı Wiopt ( i):

„yiopt‟ değeri, gelir

paylaşım oranı „PRi‟ ve

denklem 5.28‟i kullan Durdurma

Kriteri Sağlanıyor Mu?

Hayır Evet

Ayırma Modülü

Ayırma: Her popülasyonun en büyük „fit(c)‟ değeri (Yerel En İyi)

Saklama: Bütün iterasyonlardan sonra en büyük „fit(c)‟ değeri (Genel En İyi)

Girdi Modülü

Tedârikçi/Satıcı: P, δ, Hs, Ss

Alıcı: m, θi ( i), Hbi( i), Sbi( i), Ti( i), ai( i), bi( i), yimin( i), yimax( i)

BaĢlangıç Modülü

Üretme: Bütün alıcıların satış miktarını (yi) ikilik sistemde 9 basamaklı sayı ile

gösteren (yi) genlerinden oluşan kromozom

Dönüştürme: Üretilen kromozomdan olurlu tamsayı satış miktarı elde etmek için gen bilgisini (000000000 => yimin) ve (111111111 => yimax) olacak şekilde düzenle

Değerlendirme Modülü

Kodu Çözme: Kromozomdan „yi‟ (i = 1‟den m‟e kadar) değerlerini elde et

Bulma: Uygunluk parametresi, yani „fit(c)‟ = „Pc‟ hesapla

Dönüştürme: „fit(c)‟yi enbüyükleme amacına uygun yeni uygunluk değerine çevir Hesaplama: Beklenen seçim sıklığı/olasılığı „p(c)‟

Yeni Popülasyon Üretme Modülü Seçim

Bulma: Birikimli olasılık „cp(c)‟ Üretme: Rastgele sayı „r‟

Seçme: Yeni popülasyon için „cp(c)‟ ve „r‟ kullanarak kromozom seç

Çaprazlama

Üretme: Rastgele sayı „r‟

Seçilen ebeveynler: „r‟ < „p_cross‟

Çaprazlama işlemi: Tek noktalı çaprazlama

Mutasyon

Üretme: Rastgele sayı „r‟ Seçme: „r‟ < „p_mut‟ olan genler

Mutasyon: Gendeki değeri „0‟ ise „1‟, „1‟ ise „0‟ yap

Her i alıcısı için i.nci gen bu alıcının satış miktarını „yi‟ temsil eder. İkilik sistemde

dokuz basamaklı bir sayı, bir geni temsil eder. Muhtemel satış miktarını „yi‟ tamsayı

olarak bulmak için her kromozom kodu çözülür ve ikilik sistemdeki gen bilgisi şu şekilde çevrilir: Dokuz basamağın hepsi 0 değerine sahip ise bu bize en düşük „yimin‟

değerini verecektir (yani 000000000 => yimin) ve dokuz basamağın hepsi 1 değerine

sahip ise en yüksek „yimax‟ değeri elde edilecektir (yani 111111111 => yimax).

Kromozomun gen yapısı ve bunun sayısal anlamı Şekil 5.4‟te gösterilmiştir. 1.nci gen i.nci gen m.nci gen

x x x x x x x x x ... 1 0 0 1 0 0 1 0 1 ... x x x x x x x x x

ġekil 5.4 : Kromozomun yapısı ve anlamı

Popülasyonun büyüklüğü, problemin olurlu çözüm uzayına bağlıdır; bu da normal şartlarda karar değişkenlerinin sayısına bağlıdır (Michalewicz, 1994). Bu göz önüne alınarak Nachiappan ve Jawahar (2007) çalışmasında popülasyon büyüklüğü (pop_size) alıcıların sayısının iki katına ayarlanmıştır (yani pop_size = 2m). Biz de çalışmamızda aynı yaklaşımı kullanarak pop_size değerini alıcıların sayısının iki katına ayarlayacağız.

Popülasyon büyüklüğü ayarlandıktan ve başlangıç popülasyonu için rastgele kromozomlar üretildikten sonra Değerlendirme Modülü ile popülasyon değerlendirilir ve her kromozomun seçim olasılığı hesaplanır. Amaç kanal kazancının „Pc‟ eniyilenmesi olduğu için, bu değerlendirme kriteri olacaktır. Her

kromozom, uygunluğu için test edilir. Her alıcı için muhtemel satış miktarlarını „yi‟

hesaplamak için kodu çözülen „c‟ kromozomunun uygunluk parametresi „fit(c)‟ kanal kazancı „Pc‟ değeridir. Bu değerin hesaplanabilmesi için öncelikle bu satış

miktarları için tedârikçinin ekonomik üretim/sipariş miktarı „Qi‟ ve alıcının ikmal

m in m ax m in ) 111111111 ( 511 ) 100100101 ( 293 i i i i y y geni geni y y

bulunan değere yakın iki tamsayı denenerek en küçük sipariş verme, hazırlık ve elde bulundurma mâliyetini veren değer seçilir. Bu değerler elde edildikten sonra, 5.29 no.‟lu denkleme yerleştirerek „Pc‟ değeri hesaplanır.

Tedarikçinin kapasitesi „P‟ satış miktarları toplamından az olduğu durumda olurlu bir çözüm elde edilemeyeceği için, böyle değerlere sahip kromozomlar için ceza fonksiyonu devreye girer.

GA‟larda kısıtların sağlanabilmesi için geliştirilen yöntemler üzerine yaptığımız incelemeler sonucunda, modelimiz için geliştirdiğimiz bu sezgisel yaklaşımda, dinamik ceza fonksiyonu kullanmayı uygun gördük. Kısıtı sağlamayan her kromozom için „Pc‟ değerinden ceza fonksiyonu değeri çıkartılır. Bizim modelimiz için uygun gördüğümüz ceza fonksiyonu şöyledir:

) * ( * ) ( ) (c g c C iter f (5.30) Burada f(c) ceza fonksiyonunu temsil eder, g(c) fonksiyonu ise kısıtının c kromozomu tarafından ne kadar ihlal edildiğinin göstergesidir. Satış miktarları toplamından tedarikçinin kapasite miktarı çıkartılarak g(c) değeri bulunur. Eğer satış miktarları toplamı kapasiteden düşük ise g(c) değeri sıfır olur. Örneğin, tedarikçinin kapasitesinin 40.000 olduğu bir durumda, ilgili kromozoma ait alıcı satış miktarları toplamı 50.000 oluyor ise g(c) değeri iki miktar arasındaki farkın alınması ile bulunur ve bu durumda 10.000 olur. Ceza fonksiyonu, g(c) değerine bağlı olduğu için kapasite kısıtını ihlal eden iki kromozomdan satış miktarları toplamı daha yüksek olan için uygunluk değeri daha küçük olacaktır. „C‟ sabiti, „α‟ ve „β‟ değerleri ilgili modelin verilerine göre ayarlanır, „iter‟ değişkeni ise iterasyon sayısını temsil eder. Ceza fonksiyonu iterasyon sayısına bağlı olduğu için, her iterasyonda ceza fonksiyonunun değeri giderek artar. Böylece ilk iterasyonlarda kısıtı sağlamayan kromozomların yaşamasına izin verilirken, iterasyon sayısı arttıkça bu kromozomların uygunluk değerleri giderek azalacağı için yaşama şansları da azalacaktır.

Elde edilen uygunluk parametresi, enbüyükleme amacına uygun olarak yeni bir uygunluk değerine „yenifit(c)‟ dönüştürülür. Bu değer ölçeklendirme aralığını arttırır ve böylece çok az da olsa daha iyi değer veren bireyler ebeveyn olarak daha çok kez seçilecektir. Genel olarak kullanılan ve Nachiappan ve Jawahar (2007) çalışmasında da temel alınan fonksiyon üstel fonksiyondur.

Bu durumda „yenifit(c)‟ şöyle olur:

yenifit(c) = ekfit(c) (5.31) Nachiappan ve Jawahar (2007) tarafından k sabitinin değeri 0,0005 varsayılmıştır. Çalışmanın girdilerine göre bu değer değiştirilebilir. En son değerlendirme adımı, „c‟ kromozomunun yeni uygunluk parametresinden yola çıkarak „c‟ kromozomu için bir beklenen seçim sıklığı/olasılığı (p(c)) bulmaktır. Bu p(c) değerini hesaplamak için, „c‟ kromozomunun yeni uygunluk değeri bütün kromozomların yeni uygunluk değerlerinin toplamı ile bölünür. Bu durumda „p(c)‟ şöyle tanımlanır:

size pop c c c yenifit _ 1 ) ( yenifit(c) p(c) (5.32) Ayırma Modülü, her popülasyon için en büyük uygunluk parametresini seçer ve „Yerel En İyi‟ değeri olarak saklar. Bütün iterasyonlardan sonra da en büyük değer seçilir ve „Genel En İyi‟ değeri olarak saklanır. Ayırma işlemi yapıldıktan sonra, daha önceden belirlenmiş iterasyon sayısına ulaşılıp ulaşılmadığını öğrenmek için durdurma kriteri kontrol edilir. Belirlenen iterasyon sayısına ulaşılmış ise algoritma Çıktı Modülü‟ne geçer. Aksi taktirde, yeni popülasyon kümesi belirlenir. Nesil/iterasyon sayısı problemin türü ve boyutuna bağlıdır ve kullanıcı tarafından belirlenir. Nachiappan ve Jawahar (2007) tarafından iterasyon sayısı 100 olarak ayarlanmıştır. Biz de GA uygulamamızda farklı iterasyon sayıları kullanarak sonuçları değerlendireceğiz. Bir sonraki popülasyonun seçimi hayatta kalma olasılığına bağlıdır, çocukları üretmek için çaprazlama yapılır ve dış etkiyi yeni nesile yansıtmak için mutasyon kullanılır. Aynı büyüklükteki bir sonraki popülasyon, aşağıda anlatılan rastgele seçim (rulet tekerleği) yöntemi sonucunda elde edilir. Rulet tekerleği yöntemi için ilk olarak, bütün kromozomların birikimli seçim/hayatta kalma olasılıkları „cp(c)‟ hesaplanır:

c c c c p c cp 1 ) ( ) ( (5.33) Bunun ardından, 0 ve 1 arasında rastgele bir „r‟ sayısı üretilir ve aşağıdaki koşulu sağlayan bir „c‟ kromozomu seçilir:

) 1 ( ) (c r cp c cp (5.34)

Bu seçim süreci, popülasyonun büyüklüğü kadar tekrar edilir, yani „2m‟ kere tekrar edilir. Burada kullanılan yöntem güvenilirdir, çünkü uygunluğu yüksek olan bireylerin seçilme olasılığı artar. Bu yöntem, uygunluğu yüksek kromozomun birden çok kopyasının oluşmasını ve en kötü kromozomun da ölmesini sağlar. Nachiappan ve Jawahar (2007) tarafından çaprazlama olasılığı „p_cross‟ değerinin 0,6 olduğu varsayılmıştır. Biz de çalışmamızda bu değeri uygun gördük. Böylece bir önceki seçim sürecinde seçilen kromozomların en az %60‟ı çaprazlama işlemine girecektir ve çocuk üretecektir. Her kromozom için 0 ve 1 arasında rastgele sayılar üretilir ve rastgele sayısı „p_cross‟ değerinden düşük kromozomlar çaprazlama için seçilen kromozomlardır. Eğer seçilen kromozomların sayısı tek sayı ise yukarıdaki yöntem yeni bir kromozom seçilene kadar tekrarlanır ve böylece seçilen kromozomların sayısı çift sayı olur. Nachiappan ve Jawahar (2007) tarafından tek noktalı çaprazlama yöntemi kullanılmıştır. Biz de çalışmamızda bu yöntemi kullanacağız. Tek noktalı çaprazlama işleminde rastgele bir kesim noktası belirlenir ve bu kesim noktası seçilen kromozomları sağ ve sol olmak üzere iki parçaya ayırır. Ebeveyn kromozomların sağ tarafları değiş tokuş edilerek iki yeni çocuk kromozom elde edilir. Bu süreç, çaprazlama için seçilen bütün kromozomlar için uygulanır. Mutasyonun amacı, yeni genetik malzemenin girişini ya da eşlerin yanlış seçimi nedeniyle tesadüfen yok olmuş iyi genlerin yeniden yaratılmasını sağlamaktır. Mutasyonun olasılığı küçük olmalıdır (Masters, 1993). Nachiappan ve Jawahar (2007) çalışmasında mutasyon olasılığı „p_mut‟ için seçilen 0,03 değeri, bizim çalışmamız için de kullanılacaktır. Popülasyondaki her gen için rastgele bir sayı üretilir ve „p_mut‟ değerinden küçük rastgele sayıya sahip genler mutasyon işlemine tabi tutulur. Seçilen genlerdeki değerler için „1‟ yerine „0‟, „0‟ yerine „1‟ yazılarak mutasyon gerçekleştirilir. Bütün iterasyonların tamamlanmasından sonra seçilen „Genel En İyi‟ uygunluk parametresinin en iyi kanal kazancı olduğu düşünülür ve bu değeri veren alıcı satış miktarları da en iyi satış miktarları olur. Bu en iyi satış miktarı „yiopt‟ için, en iyi satış fiyatı „P(yiopt)‟ ve kabul edilebilir sözleşme fiyatı

Benzer Belgeler