49 BÖLÜM 3: TEK-ÇÖZÜM TABANLI METASEZGİSELLER
Bölüm Hedefi
Tek-çözüm tabanlı metasezgiseller (S-metasezgiseller) optimizasyon problemlerini çözerlerken belirli bir anda sadece bir çözümü değerlendirirler ve o tek çözüm üzerinden yeni başka bir çözüme adım atarak ilerliyor gibi iteratif olarak geçerler. S-metasezgiseller başarılarını çok çeşitli optimizasyon problemini çözerek kanıtlamışlardır. Bu bölümde S- metasezgisellerin genel özellikleri ele alınacaktır. Bununla birlikte S-metasezgisellerin temelini oluşturan en genel algoritmalar da incelenecektir. Bu bölümde;
• Genel arama bileşenleri: komşuluk yapısı, değerlendirme fonksiyonu, başlangıç çözümü
• Yerel arama algoritması
• Tavlama benzetimi algoritması
• Tabu araması algoritması
• Değişken komşuluk arama algoritması
• GRASP algoritması konuları ele alınacaktır.
3.1. Tek-Çözüm Tabanlı Metasezgisellerde Genel Kavramlar
S-metasezgiseller Şekil 3.1’de ifade edildiği gibi eldeki mevcut çözüm üzerinden üretim (generation) ve yer değiştirme (replacement) prosedürlerini kullanarak iteratif olarak bir başka çözüme geçer. Çözüm üretimi safhasında aday çözümler (candidate solutions) seti (C(s)) mevcut çözüm (current solution) s kullanılarak gerçekleştirilir. C(s) genellikle mevcut çözümün yerel dönüşümleridir. Yer değiştirme safhasında ise C(s) arasından seçilen bir çözümün mevcut çözümün yerine geçmesi gerçekleştirilir. Diğer bir deyişle ݏᇱ ∈ ܥ(ݏ) çözümünün yeni çözüm olarak seçilmesidir. Bu süreç bir durdurma kriteri (stopping criteria) sağlanıncaya kadar devam eder. Üretim ve yer değiştirme safhaları hafızasız (memoryless) olabilir. Bu durumda her iki safhada mevcut çözüm üzerinden yapılır, diğer durumda arama geçmişi dikkate alınarak aday çözümler kümesi oluşturulur. En fazla kullanılan S-
50 metasezgiseller tavlama benzetimi, tabu araması ve yerel aramadır. Aşağıda verilen algoritma S-metasezgisellerin en temel yapısıdır.
Şekil 3.1. S-metasezgisellerin temel prensibi
Algoritma. Temel S-metasezgisel algoritması.
Input: Başlangıç çözümü s0. t = 0;
Repeat
/∗ st çözümünden aday çözümleri üret (parçalı veya tüm komşuluklar ile)∗/
Generate (C(st))) ;
/∗ C(st)’den bir çözüm seç ve st ile yer değiştir∗/
st+1 = Select(C(st)) ; t = t + 1 ;
Until Durdurma kriteri sağlandı Output: En iyi çözüm.
Bütün S-metasezgisellerinde arama, komşuluk yapısı (neighborhood structure) ve başlangıç çözümü (initial solution) ile başlar.
Aday çözümler
Hafıza Aday çözümleri üret
Aday çözümlerden birin seç
51 3.1.1. Komşuluk
Komşuluk yapısının tanımlanması bir S-metasezgiselinin tasarımında gerekli olan temel adımlardan birisidir ve metasezgiselin performansı üzerinde kritik role sahiptir. Eğer komşuluk yapısı problem için yeterli değilse S-metasezgiselin sonuçları da yeterli olmaz.
s çözümünün komşuluğunda bulunan bir s’ çözümüne (s’∈N(s)), s çözümünün bir komşu çözümü adı verilir. Bir komşu çözüm, s çözümü üzerinde çok küçük bozulmalar (perturbation) sağlayarak elde edilir. Bu bozulmaları hareket (move) operatörleri (m) gerçekleştirir. Bir komşuluğun temel özelliği yerelliktir (locality). Dolayısıyla yapılan küçük bozulmalarla elde edilen sonuçlar mevcut çözümden çok farklı değildir. Eğer çözüm üzerinde büyük bozulmalar yapılırsa uç bir örnek olarak belki arama süreci rastsal arama gibi olabilir. Bu yüzden komşuluk yapısının ve hareketlerin çözümün kalitesi ve arama süresi üzerinde etkisi büyüktür. Şekil 3.2’de sürekli ve kesikli çözüm uzaylarında komşuluklar verilmiştir. Şekil 3.2(a)’da verilen sürekli çözüm uzayında yer alan daire, s çözümünün bütün komşularını ifade etmektedir (öklit normu kullanılarak oluşturulmuştur). Şekil 3.2(b)’de verilen kesikli çözüm uzayında komşuluklar ise kesikli çözüm noktalarının hemen komşu noktalarıdır. Örneğin (0,1,0) noktasının komşuları (0,0,0), (0,1,1) ve (1,1,0)’dır.
(a) (b)
Şekil 3.2. Sürekli ve kesikli çözüm uzaylarında komşuluklar
52 Mevcut çözüm üzerinden komşulukların üretilmesi için hareket operatörleri kullanılmalıdır.
Hareket operatörleri kullanılan kodlama yapısına göre farklı şekillerde uygulanır. Örneğin 0-1 ikili kodlama düzenindeki bir çözümde yapılan hareket bir birimlik değişim ile yapılır 010110→011110 gibi. Permutasyon tabanlı kodlama yapısında ise yer değiştirme yapılabilir.
Seçilen iki öğenin yer değiştirmesini kapsamaktadır. Permutasyon kodlamanın boyutu n ise buradan n(n-1)/2 adet komşu çözüm üretilebilir. Şekil 3.3’te 3 öğeli permutasyon kodlama yapısında yer değiştirme uygulaması verilmiştir. Örneğin (2,1,3) çözümünün komşulukları;
birinci ve ikinci öğeler yer değiştirirse (1,2,3), ikinci ve üçüncü öğeler yer değiştirirse (2,3,1) ve birinci ve üçüncü öğeler yer değiştirirse (3,1,2) şeklinde elde edilebilir.
Şekil 3.3. Swap operatörü ile komşuluk üretimi
Tanım. Yerel optimum (local optimum): Eğer bir s∈S çözümünün amaç fonksiyonu değerleri bütün komşu çözümlerinin amaç fonksiyonu değerlerinden daha iyi ise bu çözüm bir yerel optimum noktadır. Bir minimizasyon problemi için; f(s) ≤ f(s′) ∀s′∈N(s) ve bir maksimizasyon problemi için (Şekil 3.4); f(s) ≥ f(s′) ∀s′∈N(s).
53 Şekil 3.4. Arama uzayında yerel optimum ve global optimum noktalar
Global optimum nokta bir yerel optimum noktadır ve bütün diğer yerel optimum noktalardan daha iyi amaç fonksiyonu değerini verir (optimal çözüm). Bir çözüm uzayında birden fazla global optimum nokta olabilir. S-metasezgiseller arama uzayında global optimum noktaları ararlar, genellikle yerel optimum noktalara takılma riski vardır ve bu istenmeyen bir durumdur.
S-metasezgiseller arama uzayında komşu çözümlerin oluşturulmasında bazı komşuluk yapıları kullanırlar. Bunlara hareket operatörleri adı verilir. Bir problem veya kodlama yapısı için çok etkili olan bir hareket operatörü başka bir problem veya kodlama yapısı için olmayabilir. Dolayısıyla probleme ve problemin kodlama yapısına uygun hareket operatörlerinin kullanılması S-metasezgiselin etkinliğini arttıracaktır. Çok fazla çeşit hareket operatörü literatürde yaygın şekilde kullanılmaktadır. Örneğin Şekil 3.5’de verildiği gibi gezgin satıcı problemi için rastgele seçilen iki düğümün yer değiştirmesini sağlayan değişim operatörü (exchange operator, swap operator) veya çözümden k tane hattı çıkarıp k hat ekleyen k-opt operatörü. Bir başka örnek Şekil 3.6’de verilen permutasyon çizelgeleme problemi için rastgele bir öğenin seçilmesi ve rastgele bir pozisyona eklenmesini kapsayan ekleme operatörü (insertion operator), rastgele seçilen iki öğenin yer değiştirmesi esasına dayanan swap operatörü veya rastgele seçilen iki pozisyon ve bu pozisyonlar arasındaki
Arama uzayı Amaç fonksiyonu
Yerel optimum
Global optimum
54 bütün öğelerin tersyüz edildiği tersyüz operatörü (invert operator) kullanılabilir. Görüldüğü gibi her bir hareket operatörü yeni komşu çözümler üretebilmektedir.
Şekil 3.5. Gezgin satıcı problemi için örnek hareket operatörleri 1
6 2
3 5
4
Mevcut çözüm:
1-2-3-4-5-6-1
1
6 2
3 5
4
Swap operatörü (2-4) öğelerini yer
değiştir
Yeni komşu çözüm:
1-4-3-2-5-6-1
1
6 2
3 5
4
Mevcut çözüm:
1-2-3-4-5-6-1
1
6 2
3 5
4
2-opt operatörü (2-3) ve (5-6) hatlarını
kaldır
Yeni komşu çözüm:
1-2-5-4-3-6-1
55 Şekil 3.6. Permutasyon çizelgeleme problemi için örnek hareket operatörleri
Verilen bu örneklerde hareket operatörleri mevcut çözümler üzerinde küçük bozulmalar yapmaktadırlar, buna güçlü yerellik (strong locality) adı verilir ve istenen bir durumdur. Eğer yeni elde edilen çözümler mevcut çözüme benzemiyorsa yani mevcut noktadan çok uzaklaşılmış ise buna zayıf yerellik (weak locality) adı verilir, bu da S-metasezgisellerde istenmeyen bir durumdur. Şekil 3.7’de güçlü ve zayıf yerellik kavramları verilmiştir. Örneğin permutasyon çizelgeleme problemine 2-opt uygulanırsa zayıf yerellik elde edilebilir. Bu yüzden her probleme ve kodlama yapısına uygun hareket operatörü kullanılır.
Ekleme operatörü Rastgele seçilen öğe: 5 Rastgele seçilen pozisyon: 2
Swap operatörü Rastgele seçilen öğeler: 2 ve 5
Tersyüz operatörü Rastgele seçilen pozisyonlar: 2
ve 5
56 Şekil 3.7. Güçlü yerellik ve zayıf yerellik kavramı
3.1.2. Başlangıç çözümü
Bir optimizasyon sürecinin başlayabilmesi için öncelikle bir çözüme ihtiyaç vardır. Ardından bu çözüm kullanılarak aramanın yönü belirlenir. Yön tayin edildikten sonra ise adım büyüklüğü belirlenerek bu çözümden ne kadar uzaklaşılacağına karar verilir. Bütün bunlardan sonra ise bu çözümden yola çıkılarak yeni bir çözüm elde edilmiş olur. Bu çözüme ise başlangıç çözümü adı verilir. Bir S-metasezgiseli için başlangıç çözümünü oluşturmak için iki yol vardır: rastgele bir çözüm veya probleme özgü çözüm kurucu bir açgözlü sezgisel kullanılarak elde edilen bir çözüm. Rastgele bir başlangıç çözümünü oluşturmak çok kolaydır fakat çözüm eğer çok kötü ise S-metasezgiseli iyi sonuçları yakalayabilmek için çok fazla iterasyona gereksinim duyabilir. Eğer çözüm çok iyi ise bunun tersi söz konusudur. Her iki durumda olasılıklıdır. S-metasezgiselin arama sürecini hızlandırabilmek adına açgözlü sezgiseller kullanılabilir. Bu ise başlangıç çözümünün elde edilmesi için geçen süreyi rastgele başlangıç çözümü oluşturma sürecine göre uzatabilir. Fakat çoğu durumda açgözlü sezgisellerin kullanıldığı S-metasezgisellerin iyi çözümlere ulaşabilme süreleri kısalmaktadır.
Bu ise her zaman doğru değildir. Örneğin Clark–Wright açgözlü sezgiseli gezgin satıcı ve araç rotalama problemlerinde kullanılmaktadır. 3-opt operatörü kullanıldığında rastgele başlangıç çözümünün, Clark–Wright açgözlü sezgiselinden daha iyi sonuçlar verdiği görülmüştür.
Arama uzayı Amaç fonksiyonu
Mevcut çözüm
57 Dolayısıyla S-metasezgiseli tasarlanırken her iki başlangıç çözümü oluşturma yöntemi de dikkate alınmalıdır.
3.1.3. Komşu çözümlerin değerlendirilmesi
Genel olarak herhangi bir metasezgiselin en maliyetli kısmı, çözümlerin amaç fonksiyonu açısından değerlendirilmesidir. Komşu çözümler elde edildikten sonra amaç fonksiyonu açısından mevcut çözümle kıyaslanır. Eğer bir s çözümünün bütün komşu çözümleri ∀s’∈N(s) araştırılırsa hepsinin amaç fonksiyonu değerlerini teker teker hesaplamak gerekir (complete evaluation), bu işlemler çok fazla zaman alabilir. Bunun yerine aday çözüm kümesinde yer alan komşu çözümlerin amaç fonksiyonu değerleri, eğer hesaplanabiliyorsa ∆(s,m) gibi bir değişimi değerlendirerek daha kolay yapılabilir. Burada s mevcut çözümü, m ise bir s’ komşu çözümünü elde etmek için yapılan bir hareketi ifade etmektedir. Komşu çözümün amaç fonksiyonundaki değişimi ifade eden ∆(s,m) mevcut çözümün amaç fonksiyonuna eklenerek veya çıkarılarak komşu çözümün amaç fonksiyonu hesaplanabilir f(s′) = f(s⊕m).
3.2. Yerel Arama
Yerel arama (local search) en eski ve en kolay metasezgiseldir. Verilen bir başlangıç çözümünden başlar. Her bir iterasyonda mevcut çözüm amaç fonksiyonu açısından daha iyi bir komşu çözüm ile yer değiştirir. Arama süreci, üretilen bütün komşu çözümlerin amaç fonksiyonu değeri mevcut çözümün amaç fonksiyonu değerinden daha kötü olduğunda sona erer (bu bir yerel optimum noktaya ulaşıldığı anlamına gelir). Şekil 3.8 yerel aramayı görsel olarak ifade etmektedir. Şekil 3.9’da ise dört şehirli bir gezgin satıcı problemi örneği ele alınmıştır ve hareket operatörü olarak swap kullanılmıştır.
58 Şekil 3.8. Yerel arama süreci (minimizasyon için)
Şekil 3.9. Yerel arama ile problem çözümü
1-2-3-4-1 f(x)=775
1-3-2-4-1 f(x)=770
1-4-3-2-1 f(x)=751
1-2-4-3-1 f(x)=790
1-3-4-2-1 f(x)=732
1-2-3-4-1 f(x)=775
1-4-2-3-1 f(x)=747
1-4-3-2-1 f(x)=751
1-2-4-3-1 f(x)=790
1-3-2-4-1 f(x)=770
Başlangıç çözümü
İterasyon 1 Komşu en iyi çözüm:
1-4-3-2-1 f(x)=751
İterasyon 2 Komşu en iyi çözüm:
1-3-4-2-1 f(x)=732
İterasyon 3 Komşu en iyi çözüm: YOK
DUR Bulunan en iyi çözüm:
1-3-4-2-1 f(x)=732*
Komşu çözümler Komşu çözümler Komşu çözümler
DUR Arama uzayı Amaç fonksiyonu
Başlangıç çözümü
Yerel optimum
59 Aşağıdaki algoritmada yerel arama algoritması yer almaktadır.
Algoritma. Yerel arama algoritması.
s = s0 ; /∗ Başlangıç çözümünü oluştur s0 ∗/
While Durdurma kriteri sağlanıncaya kadar Do Generate (N(s)) ; /∗ Komşu çözümlerin üretilmesi ∗/
If komşu çözümlerden iyi olan yok Then Dur ; s = s′ ; /∗ En iyi komşu çözümü seç s′ ∈ N(s) ∗/
Endwhile
Output: Yerel optimum nokta.
Minimizasyon problemleri için s0 başlangıç çözümünden başlayan bir yerel arama algoritmasında s1, s2, …, sk komşu çözümleri aşağıdaki özellikleri dikkate alınarak üretilir:
• İterasyon sayısı k bilinmemektedir.
• si+1∈N(si), ∀i∈[0, k − 1].
• f(si+1)<f(si), ∀i∈[0, k − 1].
• sk yerel optimumdur: f(sk)≤f(s), ∀s∈N(sk).
Yerel arama metasezgiselinde başlangıç çözümü oluşturulduktan sonra komşu çözümlerin üretilmesine ve seçim sürecine geçilir. Daha önce verilen örneklerde olduğu gibi komşu çözümlerin arasından en iyisinin seçilmesi stratejisi uygulanabileceği gibi daha başka seçim stratejileri de vardır.
3.2.1. Komşu çözümün seçimi
Komşu çözümün seçilmesinde aşağıda verilen stratejiler kullanılabilir.
• En iyi iyileşme (best improvement (steepest descent)): Bu stratejide, bütün komşu çözümler üretilir ve bu komşu çözümler arasından amaç fonksiyonu değeri en iyi olan
60 seçilir. Komşuluk oluşturma süreci tamamen deterministiktir. Komşuluk boyutu arttıkça çözüm süresi uzar.
• İlk iyileşme (first improvement): Bu strateji mevcut çözümden daha iyi amaç fonksiyonu değerine sahip ilk üretilen komşu çözümün seçilmesi esasına dayanır.
Komşu çözümlerin tamamı değil bir kısmı araştırılır. Eğer komşu çözümlerin üretilmesinde kullanılan hareket operatörleri belirli ve aynı düzende işlem yapıyorlarsa süreç deterministiktir.
• Rastsal seçim (random selection): Mevcut çözümden daha iyi amaç fonksiyonu değerine sahip komşu çözümler arasından rastgele biri seçilir.
Başlangıç çözümü rastgele geliştirilmiş ise en iyi iyileşme stratejisini, başlangıç çözümü bir açgözlü sezgisel ile elde edilmiş ise ilk iyileşme stratejisini kullanmak uygun olabilir. Şekil 3.10’da komşu seçim stratejileri bir örnek üzerinde ifade edilmiştir.
Şekil 3.10. Komşu çözümlerin değerlendirilmesinde seçim stratejileri
3.2.2. Yerel optimumdan kurtulma
Genel anlamda yerel arama uygulanması çok kolay bir metottur ve kısa sürelerde etkili sonuçlar verebilmektedir. Bununla birlikte yerel arama algoritması başlangıç çözümüne oldukça duyarlıdır. Bazı problemler için farklı başlangıç çözümlerinden elde edilen sonuçların değişkenliği çok büyük olabilir. Yerel arama pratikte yaygın olarak kullanılmasına rağmen global optimumu elde etme çabası altında yerel optimum noktalara takılabilmektedir. Yerel aramanın bu dezavantajından kurtulmak için birçok yeni yaklaşım geliştirilmiştir. Bu yaklaşımlar dört farklı başlık altında toplanabilir (Şekil 3.11):
1-2-3-4-1 f(x)=775
1-3-2-4-1 f(x)=770
1-4-3-2-1 f(x)=751
1-2-4-3-1 f(x)=790 Başlangıç
çözümü
Komşu çözümler
Üretim sırası
İlk iyileşme
En iyi iyileşme
Rastsal seçim
61
• Farklı başlangıç çözümlerini kullanmak: Bu strateji çok başlamalı yerel arama, iteratif yerel arama, GRASP gibi metasezgisellerde kullanılır.
• İyileşme yapmayan komşu çözümleri kabul etmek: Bu stratejide mevcut çözümü iyileştiremeyen komşu çözümler kabul edilir. Böylelikle yerel optimum noktadan kurtulma olasılığı oluşturulmaya çalışılır. Tavlama benzetimi ve tabu araması bu stratejiyi kullanmaktadır.
• Komşuluk yapısını değiştirmek: Bu stratejide ise komşuluk yapısı arama süreci esnasında periyodik veya rastgele değiştirilir ve farklı komşuluk yapıları dikkate alınır.
Her yeni komşuluk yapısı yeni bir arama uzayını beraberinde getirir ve böylelikle yerel optimum noktadan uzaklaşılır. Değişken komşuluk arama algoritması bu stratejiyi kullanır.
• Amaç fonksiyonunu veya problem verilerini değiştirmek: Bu stratejide problemin girdi verileri, amaç fonksiyonu veya kısıtlar bozularak değiştirilir. Amaç gerçek problemi daha etkin çözebilmektir. Yönlendirilmiş yerel arama, düzgünleştirme stratejileri ve gürültü metotlarında kullanılmaktadır. Düzgünleştirme stratejileri ve gürültü metotları problem uzayını değiştiren yaklaşımlar olarak değerlendirilebilir.
Şekil 3.11. Yerel aramayı iyileştirmek ve yerel optimumdan kurtulmak için geliştirilen algoritmalar (S-metasezgiselleri ailesi)
Yerel aramayı iyileştirme stratejileri
Farklı başlangıç çözümlerini kullanan
Problem uzayını değiştiren
İyileşme sağlayamayan komşu çözümleri kabul eden Çok başlamalı
yerel arama İteratif yerel arama GRASP
Tavlama benzetimi Tabu araması Amaç fonksiyonunu veya
girdi verisini değiştiren
Farklı komşuluk yapıları kullanan Yönlendirilmiş
yerel arama Gürültü metodu Düzgünleştirme metodu
Değişken komşuluk arama
62 3.2.3. Örnek Uygulama
Aşağıda örnek 0-1 sırt çantası problemi gerekli veriler yer almaktadır.
Tablo 3.1. 0-1 sırt çantası problemi verileri i vi wi
1 40 0.6 2 50 0.3 3 30 0.5 4 20 0.2 5 2 0.1 Kapasite=1.0
Yerel arama algoritmasında kullanılan yapılar aşağıda sıralanmıştır.
• Çözümün temsili ikili kodlama düzeninde yapılmaktadır. Kodlamada bir nesne eğer 1 değerini alırsa seçilecek, 0 değerini alırsa seçilmeyecek anlamına gelmektedir. Örnek olarak aşağıda verilen çözümde sadece 1 ve 2 nesneleri seçilmiştir ve amaç fonksiyonu değeri 57’dir. Toplam ağırlığı 1.0’dır.
Nesne 1 2 3 4 5 f(x),wixi
Kodlama 1 1 0 0 0 (39, 0.9)
• Başlangıç çözümü rastsal olarak üretilmektedir.
• Komşulukların oluşturulmasında hareket operatörü olarak değişim (flip) operatörü kullanılmaktadır.
• Komşu çözümlerin seçiminde en iyi iyileşme stratejisi kullanılmaktadır.
Başlangıç çözümü rastsal olarak 00000(0) seçildiğinde yerel arama algoritmasının adımları aşağıdaki gibi gerçekleşmektedir. İtalik biçiminde gösterilen çözümler kapasite kısıtını sağlamayan çözümler ve kalın biçimde gösterilen çözümler komşuluklar arasındaki en iyi çözümlerdir.
63 Tablo 3.2. Yerel arama algoritması ile problemin çözümü
İterasyon 1 2 3 4
00000(0,0.0)
10000(24,0.6) 00000(0,0.0) 01000(15,0.3) 01001(15.2,0.4) 01000(15,0.3) 11000(39,0.9) 10000(24,0.6) 10001(24.2,0.7) 00100(15,0.5) 10100(39,1.1) 11100(54,1.4) 11101(54.2,1.5) 00010(4,0.2) 10010(28,0.8) 11010(43,1.1) 11011(43.2,1.2) 00001(0.2,0.1)10001(24.2,0.7)11001(39.2,1.0)11000(39,0.9)
Yerel arama algoritması ilk iterasyonda başlangıç çözümünün bütün komşularını üretmiştir.
Bu çözümler arasında en iyi çözüm 10000(24,0.6)’dir. Diğer iterasyonlarda da aynı işlemler yapılmıştır. Son iterasyonda üretilen komşu çözümlerle amaç fonksiyonu iyileştirilemediği için algoritma sonlandırılmıştır. Buna göre yerel arama algoritmasının bulduğu çözüm 11001(39.2,1.0)’dir ve kapasite kısıtını sağlamaktadır.
3.3. Tavlama Benzetimi
Tavlama benzetimi (simulated annealing (SA)) istatistiksel mekaniğe dayanmaktadır.
Metallerin tavlanması sürecinde güçlü kristal yapılarını elde edebilmek için sıcaklığın yavaş yavaş düşürülmesi gerekmektedir. Yapının sağlamlılığı metallerin soğutma oranına bağlıdır.
Eğer başlangıç sıcaklığı yeterince yüksek değilse veya çok hızlı soğuma gerçekleşmişse kusurlu yapı oluşur. Bu durumda soğuyan metal sıcaklık seviyelerinde termal eşitliğe hiçbir zaman ulaşamayacaktır. SA algoritması termal eşitlik durumuna gelinceye kadar bir metalin soğuma sürecindeki enerji değişimlerini taklit etmektedir.
SA stokastik koşullar altında komşu çözümleri değerlendirdiği için stokastik bir algoritmadır.
Amacı yerel optimum noktalardan kurtulmak ve yakınsamayı geciktirmektir. SA arama geçmişini kaydetmez, bu özelliği ile hafızasızdır. Bir başlangıç çözümünden başlayarak çok sayıda iterasyon gerçekleştirir. Her bir iterasyonda hareket operatörleri ile rastsal bir komşu çözüm üretilir. Eğer komşu çözümün amaç fonksiyonu mevcut çözümde iyileşme sağlıyorsa daima bu komşu çözüm kabul edilir. İyileşme sağlamıyorsa, mevcut sıcaklık seviyesine (T) ve mevcut çözümünün amaç fonksiyonu ile komşu çözümün amaç fonksiyonu arasındaki farka (∆E=f(s’)-f(s)) dayanan bir olasılık dahilinde kabul edilir. Algoritma süreci ilerledikçe böyle kötü çözümlerin kabul edilme olasılığı azalmaktadır. Aşağıdaki eşitlik kabul olasılığı hesabında kullanılabilir (Boltzmann dağılımı):
64
ܲ(∆ܧ, ܶ) = ݁ି൫௦ᇲ൯ି(௦)்
Şekil 3.12. Tavlama benzetiminde komşu çözümlerin değerlendirilmesi
SA iyileşme sağlayamayan çözümlerin kabul olasılığını hesaplamada sıcaklık (temperature) adı verilen bir kontrol parametresi kullanır. Belirli bir sıcaklık seviyesinde çok sayıda iterasyon yapılabilir. Termal eşitlik durumuna ulaşıldığında bir soğutma çizelgesi (cooling schedule) kapsamında sıcaklık yavaş yavaş azalmaya devam eder ve sıcaklık azaldıkça iyileşme sağlayamayan komşu çözümlerin kabul edilme olasılığı azalır. Şekil 3.12’de bir minimizasyon problemi için ifade edildiği gibi yüksek sıcaklık seviyelerinde çok kötü komşu çözümlerin kabul edilmesi olasılığı önem taşırken, düşük sıcaklık seviyelerinde amaç fonksiyonunda az değişmeleri sağlayan çözümlerin kabul edilmeleri önem taşımaktadır. İyi komşu çözümler zaten her zaman kabul edilmektedir.
Aşağıdaki algoritma tavlama benzetimine aittir.
Algoritma. Tavlama benzetimi.
Input: Soğutma çizelgesi.
s = s0 ; /∗ Başlangıç çözümünü oluştur ∗/
Arama uzayı Amaç fonksiyonu
Hareketin kabulü için yüksek olasılık
Hareketin kabulü için düşük olasılık
s
s
s'
s'
65 T = Tmax ; /∗ Başlangıç sıcaklığı ∗/
Repeat
Repeat /∗ Her sıcaklık seviyesinde ∗/
Rastsal bir komşu çözüm üret s′ ;
∆E = f(s′)−f(s) ;
If ∆E ≤ 0 Then s = s′ /∗ Komşu çözümü kabul et ∗/
Else s′ komşu çözümünü e−∆E/T olasılığı ile kabul et;
Until Termal eşitlik durumu
/∗ her sıcaklık seviyesi T’de yapılacak iterasyon sayısı kadar ∗/
T = g(T) ; /∗ sıcaklık güncellemesi ∗/
Until Durdurma kriteri sağlandı /∗ T < Tmin∗/
Output: Bulunan en iyi çözüm.
Az sayıda kontrol parametresi arama sürecini idare etmektedir; sıcaklık ve her bir sıcaklık seviyesinde yapılacak iterasyon sayısı. S-metasezgisellerinin komşuluk yapısının tanımlanması ve başlangıç çözümünün oluşturulması gibi genel tasarım kriterlerine ek olarak SA algoritmasında temel tasarım unsurları aşağıda yer almaktadır:
• Kabul olasılık fonksiyonu (acceptance probability function): SA algoritmasının temel öğesidir. İyileşme sağlayamayan komşu çözümlerin veya hareketlerin seçilip seçilemeyeceğini belirler.
• Soğutma çizelgesi (cooling schedule): Algoritmanın her iterasyonunda sıcaklık değerini belirler. SA algoritmasının etkinliği ve verimliliği üzerinde temel rolü oynar.
3.3.1. Hareketin kabulü
İyileşme sağlayamayan komşu çözümler (diğer bir deyişle bu komşu çözümleri üreten hareket operatörlerinin yaptıkları hareketler) olasılıklı olarak kabul edildiği için yerel optimum noktalara takılma riski azalmaktadır. Bu olasılık değeri mevcut sistemin sıcaklığına (T) ve amaç fonksiyonundaki değişim miktarına (∆E) bağlıdır. Termodinamik yasalarına göre T sıcaklık seviyesinde ∆E enerji değişimindeki artışın olasılığı P(∆E,T)=exp(-∆E/kt) ‘dir. Burada k
66 Boltzmann sabiti olarak bilinir. Dolayısıyla iyileşme sağlayamayan bir hareketin kabul olasılığı aşağıdaki gibi hesaplanır:
ܲ(∆ܧ, ܶ) = exp ൬−∆ܧ
݇ݐ ൰ > ܴ
Burada ∆E mevcut çözümün ve komşu çözümün amaç fonksiyonları arasındaki fark (∆E=f(s’)- f(s)), T mevcut sistem sıcaklığı ve R rastgele bir sayıdır, U[0,1].
Yüksek sıcaklık seviyelerinde kabul olasılığı artar. T=∞ iken bütün hareketler kabul edilir, rastsal yerel arama yapılır. Düşük sıcaklık seviyelerinde kabul olasılığı azalır. T=0 iken hiçbir kötü çözüm kabul edilmez, tamamen yerel arama yapılır (tepe tırmanma).
3.3.2. Soğutma çizelgesi
Soğutma çizelgesi, SA algoritmasının her iterasyonunda sıcaklık seviyesinin belirlenmesini sağlar. SA’nin performansı üzerinde çok büyük etkisi vardır ve algoritma soğutma çizelgesine aşırı duyarlıdır. Soğutma çizelgesinde yer alan parametreler şöyledir; başlangıç sıcaklığı (initial temperature) (Tmax veya T0), termal denge durumu (equilibrium state), soğutma fonksiyonu (cooling function) ve algoritmanın durdurma kriteri (stopping criteria) olarak bitiş sıcaklığı (final temperature) (Tmin veya TF).
3.3.2.1. Başlangıç sıcaklığı
Eğer başlangıç sıcaklığı çok büyük değerler seçilirse kabul olasılığı artacağından, algoritma ilk iterasyonlarda rastsal yerel arama gibi davranır. Diğer durumda yani başlangıç sıcaklığı çok küçük değerler seçilirse bu sefer algoritma komşu çözüm seçiminde ilk en iyiyi seç stratejisini uygulayan yerel arama gibi davranacaktır. Bu nedenle başlangıç sıcaklığının belirlenmesinde bu iki birbirinden farklı uç yapıların dikkate alınması gerekmektedir. Başlangıç sıcaklığı ne rastsal arama yapacak kadar yüksek (çözüm uzayında birbirinden bağımsız rastsal çözümler üretir, dolayısıyla aramanın yönü belirlenemez) ne de kötü çözümleri reddedecek kadar
67 düşük (yerel optimuma takılır) olmamalıdır. Başlangıç sıcaklığının belirlenmesinde kullanılabilecek temel stratejiler aşağıda verilmiştir.
• Hepsini kabul et (accept all): Başlangıç sıcaklığı algoritmanın ilk iterasyonlarında bütün hareketleri kabul edebilecek kadar büyük seçilir. En büyük dezavantajı çözüm maliyetlerini arttırmasıdır.
• Standart sapmaya göre kabul et (acceptance deviation): Başlangıç sıcaklığı problem üzerinde SA ile yapılan daha önceki deneyler baz alınarak kσ ile hesaplanır. σ deneylerde elde edilen amaç fonksiyonu değerleri arasındaki standart sapmayı ve k ise kabul olasılığı (acceptance probability) p’ye bağlı olan ve k=-3/ln(p) şeklinde hesaplanan bir değerdir.
• Kabul oranına göre kabul et (acceptance ratio): Başlangıç sıcaklığı daha önce belirlenen bir a0 değerine göre belirlenir.
ܶ௫= ∆ା
ln ൬݉ଵ(ܽ− 1)
݉ଶ + ܽ൰
Burada, ön deneylerden elde edilen sonuçlara göre m1 reddedilen çözümlerin sayısı, m2 kabul edilen çözümlerin sayısı, ∆+ kabul edilen çözümlerin amaç fonksiyonu değeri ortalamasıdır. Örneğin başlangıç sıcaklığı [%40,%50] aralığındaki kabul oranı kullanılarak belirlenebilir.
3.3.2.2. Termal denge durumu
Her bir sıcaklık seviyesinde termal denge durumuna ulaşabilmek için yeterli sayıda hareketin yapılması yani komşu çözümünün üretilmesi gerekmektedir. Bu her sıcaklık seviyesi için yapılan iterasyonların sayısında (iç döngü sayısı (number of inner loop)) (geçiş sayısı (number of transitions)) problem örneğinin boyutu ve komşuluk boyutu dikkate alınmalıdır. Aşağıdaki stratejiler kullanılarak belirlenebilir:
68
• Statik: Bu stratejide geçişlerin sayısı arama süreci başlamadan önce belirlenir ve sabitlenir. Örneğin N(s) komşuluğunun belirli bir y oranı araştırılabilir. Diğer bir ifadeyle s mevcut çözümden üretilen komşu çözümlerden y*|N(s)| tanesine bakılır.
Bu orana göre hesaplama maliyeti artış gösteriri bununla birlikte çözüm kalitesi de artar.
• Adaptiv: Üretilen komşu çözümlerin sayısı arama sürecinin özelliklerine bağlıdır.
Örneğin, her sıcaklık seviyesi için termal denge durumuna ulaşmaya gerek yoktur. Bir sıcaklık seviyesinde iyi bir komşu çözüm elde edilir edilmez soğutma çizelgesi devreye girebilir (nonequilibrium simulated annealing algorithms). Bu yapı kullanılırsa hesaplama süresinde azalma sağlanabilirken çözümlerin kalitesi düşebilir. Bir başka adaptiv stratejide, bir iç döngüde elde edilen en iyi çözüm ile en kötü çözüm dikkate alınabilir. İç döngüde hesaplanan, fl en küçük amaç fonksiyonu değerini, fh en büyük amaç fonksiyonu değerini ifade etsin. LB başlangıç iç döngü iterasyon sayısı olmak üzere bir sonraki iç döngünün iterasyon sayısı L aşağıdaki gibi hesaplanabilir:
ܮ = ܮ+ ہܮ∙ ܨ_ۂ ܨ_ = 1 − exp ൬−(݂− ݂)
݂ ൰
3.3.2.3. Soğutma
SA algoritmasında her i iterasyonunda sıcaklık ܶ > 0 ∀݅ olmak üzere yavaş yavaş aşamalı olarak azaltılmalıdır ve sıcaklık iterasyonlar boyunca sıfıra yaklaşmalıdır, lim→ஶܶ = 0 . Soğutma çizelgesinin hızı ile çözüm kalitesi arasında ilişki vardır. Eğer sıcaklık yavaş yavaş azaltılırsa iyi çözümler elde edilir fakat hesaplama süresi artar. Soğutma çizelgesinde kullanılabilecek bazı stratejiler aşağıda sıralanmıştır:
• Doğrusal (linear): Doğrusal bir soğutma çizelgesiyle sıcaklık güncellenir. Ti iterasyon i’deki sıcaklık seviyesi ve β sabit bir değer olmak üzere aşağıdaki gibi hesaplanır;
ܶ = ܶ௫− ݅ ∙ ߚ
69
• Geometrik (geometric): Geometrik çizelgede sıcaklık aşağıdaki eşitlik kullanılarak güncellenmektedir. En fazla kullanılan soğutma fonksiyonudur. α∈(0,1)’dir ve çoğu çalışmada 0.5 ile 0.99 değerleri arasında kullanılır.
ܶ = ߙ ∙ ܶ
• Logaritmik (logaritmic): Aşağıdaki formül kullanılır. Çizelge çok yavaştır, bununla birlikte global optimuma yakınsamaktadır.
ܶ= ܶ௫
log (݅)
• Çok yavaş azatlım (very slow decrease): Soğutma çizelgesinde yaşanan temel çelişki az sayıda sıcaklık seviyelerinde çok sayıda iterasyon yapmak veya çok sayıda sıcaklık seviyelerinde az sayıda iterasyon yapmaktır. Aşağıdaki eşitlikte çok yavaş soğutma sağlanabilmektedir. Bu fonksiyonda her bir sıcaklık seviyesinde sadece bir adet iç döngü iterasyonu yapılmalıdır.
ܶାଵ= ܶ
1 + ߚ ∙ ܶ
ߚ = ܶ௫− ܶ/(ܮ − 1)ܶ௫ܶ
• Monoton olmayan (nonmonotonic): Soğutma çizelgeleri genellikle monoton kullanılır. Monoton olmayan yapıları da vardır. Böylece arama uzayında farklılaşmayı sağlamak amaçlanmaktadır.
• Adaptiv (adaptive): Soğutma çizelgeleri genellikle daha önce belirlenip statik yapıdadır. Bu durumda arama uzayında sanki karanlıktaymış gibi dolaşılır. Adaptiv soğutma çizelgelerinde arama sürecinden alınan bilgiler kullanılarak sıcaklıkta azalışlar yapılır. Dinamik soğutma çizelgelerinde yüksek sıcaklıklarda az sayıda iç döngü iterasyonlarının yapılması, düşük sıcaklıklarda ise çok sayıda iç döngü iterasyonlarının yapılması sağlanabilir.
70 3.3.2.4. Durdurma kriteri
Durdurma kriteri sıcaklık seviyesinin sıfıra yaklaşmasıyla sağlanmaktadır. Aşağıda SA algoritmasında kullanılabilecek bazı durdurma kriterleri verilmiştir:
• Bitiş sıcaklığına (Tmin , T0) ulaşmak en fazla kullanılan durdurma kriteridir. Bitiş sıcaklığı çok düşük olmalıdır, Tmin =0.01 gibi.
• Bulunan en iyi çözümden (best solution) daha iyi çözümlerin bulunamadığı iterasyon sayısı limitine ulaşıldığında algoritma sonlanabilir.
3.3.3. Tavlama benzetimi algoritmasının örnek problem üzerinde gösterimi
Maksimize f(x) = x3 − 60x2 + 900x + 100 sürekli optimizasyon problemini ele alalım. Bir çözüm 0-1 ikili kodlama yapısıyla temsil edilmektedir ve uzunluğu beş’tir. Komşuluklar rastgele seçilen bir öğenin dönüşmesiyle elde edilmektedir. Bu problemin global maksimum noktası x=10 ve f(10)=4100’dür ve kodlamada 01010 ile temsil edilmektedir.
Tablo 3.3’de verilen ilk senaryoda, başlangıç çözümü 10011 (x=19 ve f(19)=2399), T0=500’dür. Tablo 3.4’de verilen ikinci senaryoda ise, yine aynı başlangıç çözümü 10011, T0=100’dür. Her iki senaryoda da soğutma çizelgesi geometrik yapıdadır ve α=0.90’dır.
Tablo 3.3. Birinci senaryo T0=500
T Hareket Çözüm f ∆∆∆∆E Kabul mü? Yeni Mevcut Çözüm
500 1 00011 2287 112 Evet 00011
450 3 00111 3803 <0 Evet 00111
405 5 00110 3556 247 Evet 00110
364.5 2 01110 3684 <0 Evet 01110
328 4 01100 3998 <0 Evet 01100
295.2 3 01000 3972 16 Evet 01000
265.7 4 01010 4100 <0 Evet 01010
239.1 5 01011 4071 29 Evet 01011
215.2 1 11011 343 3728 Hayır 01011
71 Tablo 3.4. İkinci senaryo T0=100
T Hareket Çözüm f ∆∆E ∆∆ Kabul mü? Yeni Mevcut Çözüm
100 1 00011 2287 112 Hayır 00011
90 3 10111 1227 1172 Hayır 10011
81 5 10010 2692 <0 Evet 10010
72.9 2 11010 516 2176 Hayır 10010
65.6 4 10000 3236 <0 Evet 10000
59 3 10100 2100 1136 Evet 10100
3.3.4. Tavlama benzetimine diğer benzer metotlar
SA algoritması ile benzer özellikler gösteren başka S-metasezgiseller de vardır. Bunlar arasında eşik kabulü (threshold accepting) (TA), büyük tufan (great deluge) (GDA), record-to- record ve demon algoritmaları yer almaktadır. Bu SA tabanlı algoritmaların geliştirilmelerindeki amaç çözüm kalitesinden ödün vermeden arama sürecini hızlandırmaktır. Şekil 3.13’de bu metasezgisellerin bir sınıflandırması verilmiştir.
Şekil 3.13. Tavlama benzetimi tabanlı algoritmalar
3.3.4.1. Eşik kabulü metodu
Eşik kabulü algoritması, SA algoritmasının deterministik versiyonu olarak görülebilir. TA algoritmasında da yerel optimum noktalardan kurtulmak için mevcut çözümden kötü çözümler kabul edilmektedir. SA’dan farklı olarak bunu bir olasılık değeriyle değil bir eşik değeri (Q) ile yapmaktadır. ∆E eğer Q değerine eşit veya küçük ise çözüm kabul edilmektedir.
Bu durumda SA’daki olasılık fonksiyonu aşağıdaki olasılık fonksiyonuna dönüşmekte ve algoritma deterministik yapıya bürünmektedir. Eşik parametresi ise SA’daki sıcaklık parametresi gibi davranmaktadır. Qi iterasyon i’deki eşik değeri olmak üzere;
Tavlama Benzetimi
Demon Algoritmaları Eşik Kabulü Metodu
Büyük Tufan Algoritması Record-to-Record
72
ܲ(∆ܧ) = ቄ1 eğer ܳ ≥ ∆ܧ 0 aksihalde
Aşağıda TA’nın algoritması verilmiştir. Her eşik değerinde yapılacak iç döngü iterasyonu sayısı daha önce belirlenir ve sabitlenir. Q ise bir tavlama çizelgesiyle (annealing schedule) güncellenir.
Algoritma. Eşik Kabulü Algoritması.
Input: Eşik tavlaması.
s = s0 ; /∗ Başlangıç çözümünü oluştur ∗/
Q = Qmax ; /∗ Başlangıç eşiği ∗/
Repeat
Repeat /∗ Sabit eşik değerinde ∗/
Rastsal bir komşu çözüm üret s′∈N(s) ;
∆E = f(s′) − f(s) ;
If ∆E ≤ Q Then s = s′ /∗ Komşu çözümü kabul et ∗/
Until Denge koşulları sağlanıncaya
/∗ Her eşik değeri Q’da yapılacak iterasyon sayısı kadar ∗/
Q = g(Q) ; /∗ Eşik değer güncellemesi ∗/
Until Durdurma kriteri sağlandı /∗ Q ≤ Qmin∗/
Output: Bulunan en iyi çözüm.
Her i iterasyonunda Q eşik değerinin bir tavlama çizelgesine göre güncellenmesinde fonksiyonun deterministik azalış gösterecek şekilde olmasına dikkat edilmelidir. Her iterasyonda yavaş yavaş azalıp sıfıra yaklaşmalıdır. Bunun için Qi+1 = Qi − decr(Qi) gibi bir fonksiyon kullanılabilir. Bununla birlikte Q değeri için artış ve azalışlara izin veren tavlama çizelgeleri de bulunmaktadır. Qi+1 = Qi + incr(Qi) fonksiyonu eşik değerinde artırım yapmak için kullanılabilir. Örneğin (0, -4, 4, -2, -4, 4, 4, -2, 2) gibi bir tavlama çizelgesi oluşturulabilir.
73 3.3.4.2. Record-to-Record seyehat algoritması
Record-to-Record seyehat (RRT) algoritması, SA algoritmasından esinlenilerek geliştirilen bir deterministik optimizasyon algoritmasıdır. Arama sürecinde mevcut çözümden üretilen komşu çözümlerin eğer amaç fonksiyonu değerleri kötü ise arama sürecinde bulunabilen en iyi çözümün değerini temsil eden RECORD değişkeni ile önceden değeri belirlenen D sapma sabiti kullanılarak çözümün kabul edilip edilmeyeceği kararı verilir. Aşağıda algoritmanın adımları verilmiştir.
Algoritma. Record-to-record seyahat algoritması.
Input: Sapma D > 0.
s = s0 ; /∗ Başlangıç çözümünü oluştur ∗/
RECORD = f(s) ; /∗ Başlangıç RECORD ∗/
Repeat
Rastsal bir komşu çözüm üret s′ ;
If f(s′) < RECORD + D Then s = s′ ; /∗ Komşu çözümü kabul et ∗/
If RECORD > f(s′) Then RECORD = f(s′) ; /∗ RECORD güncellemesi ∗/
Until Durdurma kriteri sağlandı Output: Bulunan en iyi çözüm.
RRT algoritmasının en önemli özelliği sadece bir tane parametreye bağlı olarak çalışmasıdır, D sapma değeri. Küçük D değerleri arama süresini kısaltmakta fakat çözüm kalitesini düşürmektedir, büyük değerleri ise arama süresini uzatmakta bununla birlikte çözüm kalitesini arttırmaktadır.
3.3.4.3. Büyük tufan algoritması
Büyük tufan algoritmasının (GDA) SA’dan en önemli farklı deterministik kabul fonksiyonlarını kullanmasıdır. Bir maksimizasyon probleminde, problem uzayındaki en tepe noktanın bulunması amaçlanır. GDA ise sürekli yağan yağmurdan dolayı su seviyesinde oluşan artış nedeniyle yüksek yerlere tırmanmak zorunda kalan bir dağcıyı taklit etmektedir. Aşağıda
74 minimizasyon problemleri için GDA algoritması verilmiştir. Kötü çözümler LEVEL adı verilen parametreler kullanılarak değerlendirilmektedir. Bu parametre SA’daki sıcaklığa benzemektedir. Çözüm sırasında parametrenin değeri monoton olarak azaltılmaktadır.
Algoritma. Büyük Tufan Algoritması.
Input: Seviye L.
s = s0 ; /∗ Başlangıç çözümünü oluştur ∗/
Yağmur hızını seç UP ; /∗UP > 0 ∗/
Başlangıç su seviyesini seç LEVEL ; Repeat
Rastsal bir komşu çözüm üret s′ ;
If f(s′) < LEVEL Then s = s′ /∗ Komşu çözümü kabul et ∗/
LEVEL = LEVEL − UP ; /∗ su seviyesini güncelle ∗/
Until Durdurma kriteri sağlandı Output: Bulunan en iyi çözüm.
GDA sadece bir parametreye bağlı olarak çalışır, yağmur hızı UP. Bu parametrenin değeri çok büyük olursa algoritma hızlanacak fakat çözüm kalitesi düşecektir. Değeri çok düşük olursa iyi çözümler elde edilebilecek fakat algoritmanın çözüm süresi uzayacaktır.
3.3.4.4. Demon algoritması
Bir başka SA algoritması tabanlı metasezgisel demon algoritmasıdır (DA). Kabul fonksiyonu çok daha kolaydır. Aşağıdaki algoritmada temel DA verilmiştir. Algoritma verilen bir D ile başlar. Eğer komşu çözümden demon daha fazla enerjiye sahipse komşu çözüm kabul edilir.
Algoritma. Demon algoritması.
Input: Demon başlangıç değeri D s = s0 ; /∗ Başlangıç çözümünü oluştur ∗/
Repeat
Rastsal bir komşu çözüm üret s′ ;
75
∆E = f(s′) − f(s) ; If ∆E ≤ D Then
s = s′ ; /∗ Komşu çözümü kabul et ∗/
D = D − ∆E ; /∗ Demon değeri güncellemesi ∗/
Until Durdurma kriteri sağlandı Output: Bulunan en iyi çözüm.
Literatürde farklı stratejilerde işleyen DA algoritmaları da bulunmaktadır.
3.3.5. Örnek uygulama
0-1 sırt çantası problemi üzerinde tavlama benzetimi algoritmasının uygulamasında öncelikle algoritmanın parametrelerinin ve yapısının belirlenmesi gerekmektedir.
• Çözümün temsili ikili kodlama düzeninde yapılmaktadır.
• Başlangıç çözümü rastsal olarak üretilmektedir.
• Komşuluk oluşturulmasında hareket operatörü olarak değişim (flip) operatörü kullanılmaktadır.
• Başlangıç sıcaklığı (T0) 10, soğutma katsayısı (α) 0.95 ve bitiş sıcaklığı (Tmin) 1 olarak belirlenmiştir.
• Soğutma stratejisi ܶ = ߙ ∙ ܶ’dir.
Başlangıç çözümü rastsal olarak 00101(15.2,0.6) üretilmiştir. Tavlama benzetimi algoritmasının adımları aşağıdaki gibi gerçekleşmektedir. Her komşu çözüm üretiminde dikkat edilmesi gereken konu, çözümlerin uygun olması yani kısıtı sağlaması gerekmektedir.
Komşu çözüm üretilirken mevcut çözüm (Sc) dizisindeki öğelerden birisi rastsal olarak seçilir ve değişim operatörü kullanılır. Eğer çözüm mevcut çözümden (fc(x)) iyi ise kabul edilir, kötü ise e-∆E/T olasılığı ile kabul edilir. En iyi çözümün (Sb) amaç fonksiyonu değeri fb(x) olarak ifade edilmiştir.
76 Tablo 3.5. Tavlama benzetimi algoritması ile problemin çözümü
İterasyon 1 2 3 4
T 10 9.5 9.025 8.573
fc(x), fb(x) 15.2, 15.2 19.2, 19.2 19.2, 19.2 19, 19.2
Sc 00101 00111 00111 00110
Sb 00101 00111 00111 00111
Rastsal seçilen
eleman 4 3 5 2
Başlangıç çözümü 00101(15.2,0.6)
00111(19.2,0.8) 00011(4.2,0.3) 00110(19,0.7) 01110(34,1.0)
19.2≥15.2 ise çözüm kabul edilir
e-∆E/T = 0.207 rnd=0.675 0.675>0.207 ise çözüm reddedilir
e-∆E/T = 0.978 rnd=0.816 0.816<0.978 ise
çözüm kabul edilir
34≥19 ise çözüm kabul
edilir
İterasyon 5 … 45 46
T 8.145 … 1.047 0.995
fc(x), fb(x) 34, 34 30.2, 39.2 30.2, 39.2
Sc 01110 01101 01101
Sb 01110 11001 11001
Rastsal seçilen
eleman 3 5
T<Tmin ise DUR Çözüm:
11001(39.2,1.0)
01010(19,0.5) 01100(30,0.8)
e-∆E/T =0.159 rnd=0.087 0.087<0.159 ise çözüm kabul edilir
e-∆E/T =0.826 rnd=0.996 0.996>0.826 ise
çözüm reddedilir