SANAL İMALAT HÜCRELERİNDE İŞ ÇİZELGELENMESİ İÇİN YENİ ÇÖZÜM YAKLAŞIMLARI Saadettin Erhan KESEN DOKTORA TEZİ ENDÜSTRİ MÜHENDİSLİĞİ GAZİ ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ NİSAN 2010 ANKARA TEZ BİLDİRİMİ Tez içindeki bütün bilgilerin etik davranış ve akademik kurallar çerçevesinde elde edilerek sunulduğunu, ayrıca tez yazım kurallarına uygun olarak hazırlanan bu çalışmada bana ait olmayan her türlü ifade ve bilginin kaynağına eksiksiz atıf yapıldığını bildiririm. Saadettin Erhan KESEN Saadettin Erhan KESEN HÜCRELERINDE İŞ tarafından hazırlanan ÇIZELGELENMESI IÇIN SANAL İMALAT YENI ÇÖZÜM YAKLAŞIMLARI adlı bu tezin Doktora tezi olarak uygun olduğunu onaylarım. Prof.Dr. Zülal GÜNGÖR ………………………..………. Tez Danışmanı, Endüstri Mühendisliği Anabilim Dalı Bu çalışma, jürimiz tarafından oy birliği ile Endüstri Mühendisliği Anabilim Dalında Doktora tezi olarak kabul edilmiştir. Prof.Dr. Berna DENGİZ ………………………..………. (Endüstri Mühendsiliği, Başkent Üni.) Prof.Dr. Zülal GÜNGÖR ………………………..………. (Endüstri Mühendsiliği, Gazi Üni.) Prof.Dr. Ertan GÜNER ………………………..………. (Endüstri Mühendsiliği, Gazi Üni.) Prof. Dr. Ö. Faruk BAYKOÇ ………………………..………. (Endüstri Mühendsiliği, Gazi Üni.) Doç. Dr. Murat Caner TESTİK ………………………..………. (Endüstri Mühendsiliği, Hacettepe Üni.) Tarih: 21/04/2010 Bu tez ile G.Ü. Fen Bilimleri Enstitüsü Yönetim Kurulu Yüksek Lisans / Doktora derecesini onamıştır. Prof. Dr. Bilal TOKLU Fen Bilimleri Enstitüsü Müdürü ………………………………. iv SANAL İMALAT HÜCRELERİNİNDE İŞ ÇİZELGELENMESİ İÇİN YENİ ÇÖZÜM YAKLAŞIMLARI (Doktora Tezi) Saadettin Erhan KESEN GAZİ ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ Nisan 2010 ÖZET Günümüz rekabetçi pazar koşullarında, ürün hayat çevriminin giderek kısalması ve talep yapısının değişkenlik göstermesi oldukça dinamik bir ortam yaratmıştır. Firmalar bu dinamik ortamda ayakta kalabilmek ve üretim maliyetlerini düşürebilmek için yenilikçi üretim sistemlerini incelemek ve bu sistemleri benimsemek zorundadırlar. Özellikle küçük ve orta boyutlu parti tipi üretim yapan firmalar için önerilmiş ve kurulum maliyeti çok düşük olan Sanal İmalat Hücreleri (SİH) bu yenilikçi üretim sistemleri arasında öne çıkmaktadır. SİH; Esnek İmalat Sistemlerinin (EİS) esneklik özelliğiyle, Hücresel İmalat Sistemlerinin (HİS) basit akış tipi süreç özelliklerini bünyesinde toplayan melez bir sistemdir. Bu tez çalışmasında literatürdeki mevcut çalışmalardan farklı olarak SİH’nin performansını gerçekçi bir şekilde yansıtmak için işlerin nasıl daha etkin çizelgelenebileceği incelenmiştir. Önerilen SİH çizelgeleme probleminde, işler partiler halinde üretilmekte ve bu parti büyüklükleri daha etkin bir Cmax elde edebilmek amacıyla, alt partilere bölünebilmektedir. Her bir iş kendine özgü operasyon sırasına sahiptir ve bu operasyonlar için alternatif makineler seti mevcuttur. Talep dalgalanmalarına hızlı bir şekilde cevap verebilmek amacıyla makineler tesis içerisinde farklı noktalara yerleştirilmiştir. Bu durum makineler arası taşıma zamanlarının da dikkate alınmasını gerektirmektedir. Yukarıda tanımlanan problem için bir Karışık Tam Sayılı v Programlama (KTSP) modeli geliştirilmiştir. Ancak problemin karmaşıklığının yüksek olmasından dolayı büyük boyutlu problemlerde KTSP kabul edilebilir bir zaman içerisinde iyi sonuçlar verememiştir. Bu nedenle probleme kısa zamanda etkin sonuçlar veren dört vektörlü bir Genetik Algoritma (GA) sezgiseli önerilmiştir. 720 problemden oluşan, geniş bir problem seti üzerinde elde edilen sonuçlar, GA’nın oldukça iyi bir performans sergilediğini ve özellikle alt parti sayısının 1 olduğu durumda en iyi sonuçları bulduğunu göstermiştir. Bilim Kodu : 906.1.141 Anahtar Kelimeler : Sanal imalat hücreleri, çizelgeleme, esnek atölye tipi çizelgeleme, parti bölünmesi, meta-sezgisel Sayfa Adedi : 107 Tez Yöneticisi : Prof.Dr. Zülal GÜNGÖR vi NEW SOLUTION APPROACHES FOR JOB SCHEDULING IN VIRTUAL MANUFACTURING CELLS (Ph.D. Thesis) Saadettin Erhan KESEN GAZİ UVIVERSITY INSTITUTE OF SCIENCE AND TECHNOLOGY April 2010 ABSTRACT In today’s competitive market conditions, shortening product life cycle and varying demand pattern create a highly dynamic environment. Firms have to explore and adapt to novel production systems for surviving in the volatile conditions and reducing their costs. Especially offered for the companies that perform small-to-medium batch production, Virtual Manufacturing Cells (VMCs) are prominent among these relatively new manufacturing systems. VMCs appear to be a hybrid form accommodating the flexibility feature of Flexible Manufacturing Systems (FMSs) and basic flow-line process of Cellular Manufacturing Systems (CMSs). In this thesis, unlike existing literature, how jobs can be scheduled in a more efficient manner is thoroughly examined to reflect the realistic performance of VMCs. In the proposed VMCs scheduling problem, jobs are produced in batches and batch sizes can be divided into sub lots with smaller quantity of jobs to obtain lower Cmax value. There are multiple jobs with different processing routes and a set of eligible machines is available to process the operations. Machines are located to different areas in the shop floor to quickly respond to demand changes. This, however, arises the issue of travelling time consideration. A Mixed Integer Linear Programming (MILP) model is developed for the problem defined above. Due to the intractability of the problem, MILP model suffers to provide solutions for big sized problems in a reasonable amount of time. We therefore present a Genetic Algorithm (GA) vii heuristic approach with four vectors to obtain satisfactory results in a shorter computational time. On a wide range of randomly generated test instances consisting of 720 problems, comparative results show that GA is quite favourable and it finds the optimum solution for all problems in the case that sub lot number is equal to 1. Science Code Key Words Page Number Adviser : 906.1.141 : Virtual manufacturing cells, scheduling, flexible job shop scheduling, lot streaming, meta-heuristic : 107 : Prof.Dr. Zülal GÜNGÖR viii TEŞEKKÜR Çalışmanın şekillenmesinde değerli bilgi ve birikimiyle beni yönlendiren ve sürekli pozitif yönde motive ederek çalışma performansımı yüksek tutan çok değerli danışman Hocam Prof.Dr. Zülal GÜNGÖR’e, ve yine bilgilerinden ve birikimlerinden faydalandığım Tez İzleme Komitesi üyeleri Prof.Dr. Berna DENGİZ ve Prof.Dr. Ertan GÜNER’e teşekkürü bir borç bilirim. Çalışmalarımın bir bölümünü geçirdiğim New Jersey Institute of Technology Üniversitesinde (A.B.D.) yüksek öngörümlemesi ve disiplini sayesinde ve ayrıca çalışkanlığı ile bana olan katkılarını hiçbir zaman unutmayacağım Prof.Dr. Sanchoy K. DAS’a şükranlarımı ve en derin saygılarımı iletirim. Ve tabi ki; hayatımın her aşamasında olduğu gibi tez çalışmalarım süresince de beni sonuna kadar destekleyen sevgili eşim Nur Feyzal KESEN’e sabır ve anlayışından dolayı teşekkür ederim. Son olarak beni yetiştiren ve bugüne kadar emeklerini esirgemeyen anneme, babama ve abilerime minnettarlığımı belirtmek isterim. ix İÇİNDEKİLER Sayfa ÖZET .......................................................................................................................... iv ABSTRACT................................................................................................................ vi TEŞEKKÜR..............................................................................................................viii İÇİNDEKİLER ........................................................................................................... ix ÇİZELGELERİN LİSTESİ......................................................................................... xi ŞEKİLLERİN LİSTESİ .............................................................................................xii SİMGELER VE KISALTMALAR...........................................................................xiii 1. GİRİŞ...................................................................................................................... 1 2. SANAL İMALAT HÜCRELERİ........................................................................... 6 2.1. Sanal Hücre Kavramı ..................................................................................... 7 2.2. SİH ile İlgili Tanımlamalar ve Terminoloji ................................................... 7 2.3. Sanal Hücrenin Hayatı ................................................................................. 11 2.4. Grup Teknolojisi Hücreleri ile Sanal İmalat Hücreleri Arasındaki Farklılıklar.................................................................................................... 12 3. LİTERATÜR ARAŞTIRMASI............................................................................ 14 3.1. SİH’nin Tasarımı ile İlgili Çalışmalar ......................................................... 18 3.2. Operasyonel Seviyede SİH ile İlgili Çalışmalar .......................................... 23 3.3. SİH ile İlgili Gözlemsel Çalışmalar............................................................. 28 3.4. Genel Değerlendirme ................................................................................... 29 4. SİH ÇİZELGELEME PROBLEMİNİN KLASİK ÇİZELGELEME PROBLEMLERİ AÇISINDAN İNCELENMESİ................................................ 31 4.1. Çizelgelemenin Organizasyon İçerisindeki Yeri ve Önemi......................... 31 4.2. Atölye Tipi Çizelgeleme Problemi (ATÇP) ................................................ 33 4.3. Esnek Atölye Tipi Çizelgeleme Problemi (EATÇP) ................................... 33 x Sayfa 4.4. Parti Bölünmesi............................................................................................ 35 4.5. SİH Çizelgeleme Probleminin Karmaşıklığı ............................................... 37 5. ÖNERİLEN MATEMATİKSEL MODEL .......................................................... 39 5.1. Problemin Tanımı ve Varsayımlar............................................................... 39 5.2. Karışık Tam Sayılı Programlama (KTSP) Modeli....................................... 40 5.3. KTSP Modelinin Performansının Genel Değerlendirmesi .......................... 44 6. SİH’NİN ÇİZELGELENMESİ İÇİN GENETİK ALGORİTMA (GA) YAKLAŞIMI........................................................................................................ 48 6.1. Kromozom Gösterimi .................................................................................. 48 6.2. Kromozomların SİH Çizelgelerine Dönüştürülmesi ve Yeniden Sıralanması................................................................................................... 51 6.3. Çaprazlama Operatörü ................................................................................. 53 6.4. Mutasyon Operatörü .................................................................................... 55 6.5. Alt Parti Büyüklüklerinin Belirlenmesi ....................................................... 55 6.6. Seçim............................................................................................................ 57 7. DENEYSEL ÇALIŞMA ...................................................................................... 59 8. SONUÇ VE ÖNERİLER ..................................................................................... 71 KAYNAKLAR .......................................................................................................... 76 EKLER....................................................................................................................... 82 EK-1. Rassal test problemlerinin üretimi için hazırlanan MS Excel makrosu .......... 83 EK-2. Karışık tamsayılı programlama modeli için GAMS kodları ........................... 86 EK-3. Genetik algoritma sezgiseli için geliştirilen C++ kodları................................ 89 ÖZGEÇMİŞ ............................................................................................................. 107 xi ÇİZELGELERİN LİSTESİ Çizelge Sayfa Çizelge 3.1. Taranan makalelerin bir özeti (her bir kategorideki çalışmalar alfabetik olarak sıralanmıştır) ............................................................................... 17 Çizelge 5.1. KTSP modelinden elde edilen sonuçların çözüm tipleri açısından analizi ..................................................................................................... 46 Çizelge 6.1. Makine tipleri ve her bir makine tipine ait makineler............................ 49 Çizelge 6.2. İşlerin parti büyüklükleri ve operasyon sıraları ..................................... 49 Çizelge 6.3. 1 nolu iş için alt parti sayısının 2 olduğu 6 senaryo için alt parti büyüklükleri........................................................................................... 56 Çizelge 6.4. 1 nolu iş için alt parti sayısının 3 olduğu 21 farklı senaryo için alt parti büyüklükleri........................................................................................... 57 Çizelge 7.1. Deneysel çalışmada kullanılan parametreler ve seviyeleri .................... 59 Çizelge 7.2. İş sayısının 6 ve 8 olduğu deneyler için özet tablosu............................. 63 Çizelge 7.3. İş sayısının 10 ve 12 olduğu problemler için deneyler için özet tablosu65 Çizelge 7.4. İş sayısının 14 ve 16 olduğu problemler için deneyler için özet tablosu67 Çizelge 7.5. İş sayısının 18 ve 20 olduğu deneyler için özet tablosu......................... 69 xii ŞEKİLLERİN LİSTESİ Şekil Sayfa Şekil 2.1. Sanal İmalat Hücreleri için genel bir tesis yerleşim düzeni......................... 6 Şekil 2.2. İmalat sistemlerinin yerleşim organizasyonu ............................................ 10 Şekil 2.3. Sanal bir hücrenin hayatı ........................................................................... 11 Şekil 3.1. Sanal imalat hücreleri için sınıflandırma çatısı [Nomden ve ark., 2006] .. 15 Şekil 4.1. Bir imalat sistemindeki bilgi akış diyagramı[Pinedo, 1995] ..................... 32 Şekil 4.2. İki makineli akış tipi için iki çizelge (sayısal veriler işleri gösteriyor) (a) alt partilerin olmadığı çizelge (çizelge 1); (b) alt partilerin olduğu çizelge (çizelge 2) .................................................................................................. 36 Şekil 5.1. Toplam çizelgeleme ufkunun zaman aralıklarına bölünmesinin verimsizliği................................................................................................ 39 Şekil 5.2. KTSP modelinde elde edilen sonuçların grafiksel olarak yorumlanması.. 47 Şekil 6.1. Makine atama vektörünün gösterimi ......................................................... 50 Şekil 6.2. Operasyon sırası, atanan alt parti numarası ve alt parti hacmi vektörlerinin gösterimi .............................................................................. 50 Şekil 6.3. Yeniden sıralama metodunun Gantt şeması üzerinde gösterimi................ 52 Şekil 6.4. Her bir operasyon için sabit ID gösterimi.................................................. 53 Şekil 6.5. Operasyon sıra vektörünün permütasyon tipinde gösterimi ...................... 53 Şekil 6.6. Operasyon sırası üzerinde sıralı çaprazlama operatörünün gösterimi ....... 54 Şekil 6.7. Çaprazlama operatöründe tamir mekanizmasının gösterimi...................... 55 Şekil 6.8. Önerilen genetik algoritma yaklaşımının yapısı ........................................ 58 Şekil 7.1. Deneysel çalışmanın akış şeması ............................................................... 60 Şekil 7.2. İş sayısının 6 ve 8 olduğu problemler için KTSP modeli ile GA’nın karşılaştırılması ......................................................................................... 64 Şekil 7.3. İş sayısının 10 ve 12 olduğu problemler için KTSP modeli ile GA’nın karşılaştırılması ......................................................................................... 66 Şekil 7.4. İş sayısının 14 ve 16 olduğu problemler için KTSP modeli ile GA’nın karşılaştırılması ......................................................................................... 68 Şekil 7.5. İş sayısının 18 ve 20 olduğu problemler için KTSP modeli ile GA’nın karşılaştırılması ......................................................................................... 70 xiii SİMGELER VE KISALTMALAR Bu çalışmada kullanılmış bazı simgeler ve kısaltmalar, açıklamaları ile birlikte aşağıda sunulmuştur. Simgeler Açıklama # Deney numarası ojh j işinin h. operasyonu Ajh j işinin h. operasyonunu yapabilecek makineler kümesi Nj j işinin parti büyüklüğü Pijh j işinin h. operasyonunun i makinesindeki işlem zamanı dik i makinesinden k makinesine taşıma zamanı n Toplam iş sayısı m Toplam makine tipi sayısı q Her bir makine tipine ait en büyük makine sayısı L Toplam alt parti sayısı Kısaltmalar Açıklama GT Grup teknolojisi HİS Hücresel imalat sistemleri EİS Esnek imalat sistemleri TZÜ Tam zamanında üretim BDÜ Bilgisayar destekli üretim DHİS Dinamik hücresel imalat sistemleri SİH Sanal imalat hücreleri EATÇP Esnek atölye tipi çizelgeleme problemi KTSP Karışık tam sayılı programlama ATÇP Atölye tipi çizelgeleme problemi GA Genetik algoritma xiv Kısaltmalar Açıklama MİP Malzeme ihtiyaç planlaması ÜPK Üretim planlama ve kontrol AÜÇ Ana üretim çizelgesi TYK Tesis yerleşim kontrolü KKE Karınca kolonisi eniyilemesi TA Tabu araması EÜT Eniyilenmiş üretim teknolojisi İS İş sayısı APS Alt parti sayısı TZ/İZ Taşıma zamanının işlem zamanına oranı ÇY Çözüm yok EÇ Eniyi çözüm TÇ Tamsayılı çözüm ÜS Karışık tamsayılı programlama modeli için bulunan en iyi tamsayılı çözüm (Üst sınır) AS Karışık tam sayılı programlama modeli için bulunan alt sınır ÜS AS (%) Karışık tamsayılı programlama modeli için bulunan alt sınır ve üst sınır arasındaki farkın % değeri CPU1 Karışık tamsayılı programlama modeli için çözüm zamanı YığHac Genetik algoritma için seçilen yığın hacmi AF(ort) Genetik algoritmanın beş çalıştırma sonundaki amaç fonksiyonu değerlerinin ortalaması AF(enk) Genetik algoritmanın beş çalıştırma sonundaki en küçük amaç fonksiyonu değeri CPU2 Genetik algoritma için çözüm zamanı AF ( ort ) ÜS (%) Genetik algoritma ile karışık tam sayılı programlama modeli çözümleri arasındaki farkın % değeri 1 1. GİRİŞ Günümüzde tüm dünyayı etkisi altına alan ekonomik durgunluk diğer sektörler gibi imalat sektöründe de firmaların maliyetlerini azaltması için kendi üretim süreçlerini yeniden sorgulamalarını ve daha etkin hale getirmelerini zorunlu kılmaktadır. Ekonomik krizle birlikte artan rekabet koşulları da firmaları zorlamaktadır. Ürün hayat çevrimlerinin kısalması ve ürün çeşitliliğinin artması pazar şartlarının değişkenliğini artırmıştır. Amerika Birleşik Devletleri’nde planlama ve yeniden planlama için yıllık 250 milyar dolar harcandığını bilinmektedir ve etkin bir planlama ile bu maliyet %10-30 oranında azaltılabilir [Tompkins ve ark., 2003]. Üretim yapan firmaların maliyetlerini azaltmak için değerlendireceği seçenekler arasında ilk olarak hiç şüphesiz üretim sistemindeki makine yerleşimlerinin yeniden düzenlemesi akla gelen fikirlerden biridir. Üretim sistemlerinin ilk olarak gelişmeye başladığı zamanlarda ürün çeşitliliğin az ve ürüne olan talebin yüksek olduğu ürün tipi yerleşim çok popülerdi. Ancak sonraları farklı rakiplerin ortaya çıkması rekabeti artırmış ve müşterilerin farklı tip ürünler istemeye başlaması ürün tipi yerleşimin esnekliğinin olmadığını açıkça ortaya koymuştur. Ürün hacminin az ve ürün çeşitliliğinin yüksek olduğu pazar koşullarında süreç tipi yerleşim önerilmiştir. Süreç tipi yerleşimde benzer üretim yeteneklerine sahip makineler gruplandırılmış ve bu makine grupları departman adını almıştır. Ancak süreç tipi yerleşimde de ürün miktarı arttıkça çizelgeleme işlemlerinin kontrolünün zorlaşmaya başlaması ve hazırlık zamanlarının yüksek olduğu durumlarda iş akış zamanlarının artması bu üretim sisteminin dezavantajları arasında görülmektedir. Ürün tipi yerleşim ve süreç tipi yerleşimin dezavantajlarını ortadan kaldırabilmek için Grup Teknolojisi (GT) fikrinin imalattaki uygulaması olan Hücresel İmalat Sistemleri (HİS) önerilmiştir. HİS’nin ilk adımı olan hücre formasyonunda benzer üretim gereksinimine ya da tasarım özelliklerine sahip parçalar bir araya getirilerek parça ailelerini oluşturur ve bu parça ailelerini üretmek için farklı üretim yeteneklerine sahip makineler imalat ortamında fiziksel olarak bir araya getirilerek 2 makine hücrelerini oluştururlar. Yani tüm üretim sistemi birbirinden bağımsız kontrol edilmesi daha kolay alt bölümlere ayrılır. Bu sayede sistemdeki karmaşıklık azaltılmış ve hazırlık zamanlarında ciddi düşüşler meydana gelmiştir. Bu özelliklerinden dolayı HİS, Bilgisayar Destekli Üretim (BDÜ), Esnek İmalat Sistemleri (EİS), Tam Zamanında Üretim (TZÜ) gibi birçok modern üretim sistemine temel teşkil etmiştir [Wemmerlov ve Hyer, 1989], [Kusiak, 1990], [Wemmerlov ve Johnson, 1997]. Ancak HİS’nin de çok ciddi dezavantajları vardır. HİS’de hücre formasyonu oluşturulurken talep miktarında ve ürün karışımında değişiklik olmadığı varsayılmıştır. Ayrıca parça ya da parça ailelerinin sadece bir makine hücresi içine hapsedilmesi hücreler içinde darboğaz makinelerin oluşmasına ve makine kullanım oranlarının çok düşük olmasına neden olmaktadır. Ek olarak makine kullanım oranlarındaki dengesizlikler de en önemli dezavantajları arasındadır. Değişken talep ortamında HİS’nin performansını artırmak için farklı metotlar önerilmiştir. Bunlardan bir tanesi parçaların üretim gereksinimlerini tamamlayabilmek için birden fazla makine hücresini ziyaret etmesine imkân sağlamaktır [Gupta ve Tompkins, 1982], [Jensen ve ark.. 1996]. Ancak bu durum çizelgeleme karmaşıklığını artırmakta ve HİS’nin temel prensibini ihlal etmektedir. Diğer bir metot ise çok dönemli planlama ufkunu dikkate alan Dinamik Hücresel İmalat Sistemleri’dir (DHİS) [Drolet ve ark. 2008], [Rheault ve ark., 1995], [Rheault ve ark., 1996]. DHİS’de planlama ufku dönemlere ayrılmakta ve makine hücrelerinin yerleşimi değişken talebe cevap verebilmek için dönemden döneme değişiklik gösterebilmektedir [Rosenblat, 1986]. Bu metotta önemli olan nokta makine yerleşimlerinin yeniden düzenlenmesinden ortaya çıkacak olan maliyet ile talep değişikliği dolayısıyla mevcut yerleşimin bozulmasından ortaya çıkacak maliyet arasında ödünleşim yapmaktır. Bu sistemin dezavantajı eğer makine yerleşimi çok sık yapılırsa bu işlemin çok maliyetli ve zaman alıcı olmasıdır. Makinelerin taşınamaz olduğu durumlarda da DHİS metodu uygulanabilirliğini kaybedecektir. Bilgisayar teknolojilerindeki gelişmeye paralel olarak Esnek İmalat Sistemi (EİS) adı verilen yeni bir imalat sistemi ortaya çıkmıştır. EİS bir ürün operasyonu için farklı 3 alternatif rotalar sağlayabilen farklı üretim yeteneklerine sahip bilgisayar kontrollü makinelerden oluşan, malzeme taşımalarını konveyörler ve otomatik yönlendirmeli araçların yaptığı yüksek teknolojiye sahip üretim sistemleridir. Bu sistemler çok yüksek esneklik kabiliyetiyle pazardaki talep dalgalanmalarına cevap verebilmektedir. Ancak yüksek yatırım maliyeti ve bu yüksek esnekliği kontrol etmenin çok zor olduğu araştırmacılar tarafından sabit kılınmıştır. İmalat sistemlerinin evrimleşme süreci içerisinde ilerleyen yıllarda bazı araştırmacılar imalat hücrelerinin farklı tiplerini önermişlerdir (sanal hücreler, holonik hücreler, fraktal hücreler vb.). Bunlar arasında en çok dikkati çeken ise Sanal İmalat Hücreleri (SİH) olmuştur. SİH fikri Ulusal Standartlar Bürosu tarafından geliştirilmiştir. Bir sanal hücrede makineler GT hücrelerinde olduğu gibi parçaya ya da parça ailelerine atanır ancak makinelerin fiziksel olarak gruplanıp bir araya getirilmesi söz konusu değildir. Bir sanal hücre fiziksel bir hücre olarak değil bir veri dosyası olarak tutulur. Kavramsal olarak, yeni bir iş sisteme geldiğinde kontrol mekanizması o işin operasyonlarının geçeceği makineleri seçer. Bu atanan makineler o işin üretimi bitinceye kadar geçici olarak mantıksal bir hücre gibi davranırlar ve o işin üretimi bittiğinde hücre de kaybolur. Makinelerin tesis içerisindeki pozisyonları değiştirilmediği için herhangi bir yer değiştirme maliyetine katlanılması gerekmemektedir. Böylece bir makine aynı anda birden fazla hücrenin elemanı olabilmektedir. Böylece tesis süreç tipi yerleşim şeklinde çalışırken kontrol hücresel biçimde olmaktadır. Böylece daha iyi bir sistem performansı ortaya çıkmaktadır [Nomden ve ark., 2006]. SİH’nin gerçek performansının değerlendirilebilmesi için belirli ölçütler altında bu sistemde çizelgeleme aktivitelerinin nasıl yapıldığını anlamak önemlidir. Ancak literatüre bakıldığı zaman bu sistemlerin çizelgelenmesi ile ilgili çalışmaların problemin karmaşıklığından dolayı çok az olduğu görülmektedir. Yapılan çalışmalardaki büyük varsayımlar da sistemin gerçek performansını yansıtmaktan çok uzaktır. Her ne kadar SİH fikri ilk önerildiğinde çizelgeleme devam ederken işlerin sisteme gelebileceği çok dinamik bir çevreden bahsedilse de bununla ilgili 4 literatürde ilgili bir çalışmanın olmaması problemin klasik çizelgeleme teknikleri tarafından çözümünün çok zor olmasından kaynaklanmaktadır. SİH’de genel olarak her bir işin operasyon sırasının birbirinden farklı olduğu her bir operasyon için tek bir makine değil bir makine seti olduğu kabul edilir. Klasik çizelgeleme problemleri açısından problem bu haliyle Esnek Atölye Tipi Çizelgeleme Problemine (EATÇP) benzemektedir. EATÇP çizelgeleme literatüründeki en zor problemlerinden biri olduğu ispatlanmıştır. Buna ek olarak makineler arası taşıma zamanlarının dikkate alınması gerekmektedir çünkü SİH’de makineler farklı noktalara konulmuştur. Ayrıca parti tipi üretim yapılmasından dolayı parti büyüklüklerin alt partilere bölünüp bölünmeyeceği de önemli bir noktadır. Operasyonların üst üste binmesinden dolayı çok aşamalı üretim sistemlerinde sistemin performansını iyileştirdiği bilinen parti bölünmesi işlemi problemi daha da karmaşık hale getirmektedir. Çalışmada partilerin alternatif rotalar arasında çizelgeleme ölçütünü en iyileyecek biçimde alt partilere bölünmesine imkan sağlanmıştır. Çalışmanın ikinci bölümünde SİH ile ilgili olarak ayrıntılı bir analiz verilmiştir. SİH kavramından bahsedilmiş, SİH ile ilgili genel tanımlamalar ve terminoloji aktarıldıktan sonra sanal bir hücrenin hayat çevrimi ile GT hücreleri ile sanal hücre arasındaki temel farklılıklar üzerinde durulmuştur. Çalışmanın üçüncü bölümü tamamen literatür taraması kısmına ayrılmıştır. SİH ile ilgili yapılan çalışmaları sınıflandırabilmek için anahtar faktörlerin neler olabileceği tartışılmış ve bu faktörlere göre çalışmalar sınıflandırılmıştır. Bu sınıflandırmanın ardından tasarım ile ilgili çalışmalar, operasyonel seviyede olan çalışmalar ve gözlemsel çalışmalar başlıkları altında geniş bir literatür taraması verilmiş ve son olarak genel bir değerlendirme de sunulmuştur. Çalışmanın dördüncü bölümünde SİH çizelgeleme problemi klasik çizelgeleme problemleri açısından ele alınmıştır çünkü SİH çizelgeleme probleminin klasik çizelgeleme problemlerinden hangi sınıfa girdiğini belirlemek hem önerilecek 5 matematiksel modelin hem de sezgisel yaklaşımın geliştirilmesi açısından son derece önemlidir. Bu kapsamda ilk olarak çizelgelemenin üretim planlama ve kontrol kapsamında önemine vurgu yapılmış, ardından Atölye Tipi Çizelgeleme Problemi kısaca incelenmiş (ATÇP), ardından onun bir genel formu olan EATÇP incelenmiş, daha sonra parti bölünmesinin önemi vurgulanmış ve son olarak da SİH çizelgeleme probleminin karmaşıklığı üzerinde durulmuştur. Beşinci bölümde SİH çizelgeleme probleminin tanımı ve varsayımı yapılmış ve önerilen matematiksel model ayrıntılarıyla sunulmuştur. Problem tanımı yapılırken mümkün olduğunca SİH literatüründeki genel tanımına sadık kalınmıştır. Önerilen Karışık Tam Sayılı Programlama (KTSP) modelinin genel olarak performansı değerlendirilmiş ve büyük boyutlu problemlerin çözümünde etkin olmadığı görülmüştür. Önerilen matematiksel modelin problemin karmaşık doğasından dolayı iyi sonuçlar vermemesi problem için kısa zamanda iyi sonuçlar verebilen bir meta-sezgisel yaklaşımın geliştirilmesi gerektiğini zorunlu kılmıştır. Bu nedenle altıncı bölümde birçok problemdeki etkin performansından dolayı Genetik Algoritma (GA) yaklaşımı önerilmiştir. Probleme özgün kromozom gösterimi sunulmuş, kromozomların SİH çizelgelerine dönüştürülmesi ve yeniden sıralanması için bir prosedür önerilmiş, çaprazlama ve mutasyon operatörlerinin nasıl uygulandığı üzerinde durulmuş ve son olarak alt parti büyüklüklerinin nasıl belirlendiği anlatılmıştır. Yedinci bölüm deneysel çalışma kısmını içermektedir. Bu bölümde ilk olarak KTSP ve GA modellerinin karşılaştırılması için rassal problem setinin oluşturulması üzerinde durulmuştur. Bu problem setinin üretilmesi için dikkate alınması gereken faktörler belirlenmiş ve 720 problemden oluşan çok geniş bir problem seti oluşturulmuştur. Bu geniş problem seti üzerinde hem KTSP modeli sonuçları hem de GA sonuçları alınmış ve karşılaştırmalı analizler verilmiştir. Sekizinci ve son bölümde ise tez çalışması genel olarak incelenmiş ve ileride yapılabilecek potansiyel çalışmalar üzerinde tartışılmıştır. 6 2. SANAL İMALAT HÜCRELERİ SİH talebin belirsiz olduğu ya da tahmin edilemediği durumlar için önerilmiş bir yaklaşımdır. Sanal bir hücrede makineler HİS’de olduğu gibi parça ya da parça ailelerine tahsis edilir fakat makineler fiziksel olarak birbirlerine yakın yerleştirilmemişlerdir. Sanal imalat hücresi yaklaşımı ilk olarak McLean ve ark. (1982) tarafından çalışılmıştır [McLean ve ark., 1982]. Şekil 2.1’de bir SİH görülmektedir. SİH’de süreç yerleşimine sahip olan tesis geçici olarak bir parça ya da parça ailesine atanır. Bir parça işleme gireceğinde o parça ailesine atanmış olan makine rotasına yönlendirilir. Böylece fiziksel hücrelerde olduğu gibi baskın rota izleri oluşur. Sanal hücredeki makineler o parça ya da parça ailesi için hazırlanır. Talep yapısında bir değişkenlik söz konusu olduğunda herhangi bir sanal hücredeki makineler diğer parçalara atanabilir. Makineler hareket etmeyeceği için yeniden düzenleme maliyeti söz konusu değildir. Fiziksel hücrelerin kullanımı belirsiz talep ortamında hücrelerin sıkça yeniden düzenlenmesini gerektireceği için sanal hücrelerin kullanımı bu açıdan önemli bir avantajdır. Sanal Hücreler Şekil 2.1. Sanal İmalat Hücreleri için genel bir tesis yerleşim düzeni 7 2.1. Sanal Hücre Kavramı Bu tezde önerilen SİH kavramı temellerini McLean ve ark. (1982)’nin çalışmasından almaktadır. Sanal bir hücre sabit fiziksel bir makine grubu olarak değil ancak merkezi bir bilgisayar kontrolöründe veri dosyaları olarak tutulur. Bir iş siparişi bir makineler setine ihtiyaç duyduğunda sanal hücre kontrolörü ilgili makinelerin kontrolünü ele alır ve onlar arasında bir bağlantı kurar. Herhangi bir makine sanal hücrenin bir elemanı ya da boş bekleyen makineler havuzunun bir üyesi olabilir [McLean ve ark., 1982]. 2.2. SİH ile İlgili Tanımlamalar ve Terminoloji Drolet (1989)’un karakteristikleri tanımladığı vermek SİH önemlidir ile zira ilgili terminoloji önerilecek ve operasyonel matematiksel modelin geliştirilmesine temel teşkil etmektedir. Bu karakteristikler aşağıdaki gibidir [Drolet, 1989]. a) Tipik bir parti büyüklüğü 40-50 birimi aşmamaktadır. b) Parçalar istasyonlar arasında belirli bir zamanda partiler halinde taşınmaktadır. c) Her bir istasyonun girişi ve çıkışında az miktarda parçanın birikmesine müsaade edilmektedir. d) Makine tipleri önemli bir hazırlık zamanına gerek duyulmaksızın farklı tipteki işler arasındaki değişiklik yapabilmektedirler. e) Her bir makine tipine ait makinelerden fabrika içerisinde dağılmış bir şekilde birden fazla mevcuttur. f) Makine tipi çeşitliliği düşüktür ve en fazla 5-6 tanedir. g) Siparişler Malzeme İhtiyaç Planlaması (MİP) çıktısından ve özel son dakika müşteri taleplerinden gelmektedir. h) Siparişler iş numaraları, miktarları, operasyon sıraları ve işlem zamanlarıyla karakterize edilmektedir. i) Makineler oldukça esnektir. j) Makinelerin işlem yeteneklerinden dolayı, iş parçaları üretim ortamı içerisinde en fazla 3-5 makine tipini ziyaret edebilmektedirler. 8 k) Operasyon sıraları sadece gerekli olan makine tipini ve sırasını tanımlamaktadır. Spesifik rotalar sanal hücrelerin oluşturulması aşamasında seçilmektedir. l) Sanal bir hücre bir alt partinin siparişi için bir kez oluşturulmuşsa o alt partideki her bir parça o hücrede üretilecektir. SİH’nin fiziksel yerleşimi geleneksel imalat sistemlerinden farklıdır. SİH’deki makinelerin fabrika içi yerleşimi ile süreç tipi yerleşim, ürün tipi yerleşim ve hücresel yerleşimi kıyaslamak yerinde olacaktır. Şekil 2.2 bu sistemlerin fabrika içi yerleşimlerini temsili olarak göstermektedir. Süreç tipi yerleşimde (fonksiyonel yerleşim olarak da bilinir) bir makine tipine ait tüm makineler bir araya getirilerek gruplandırılmıştır (Şekil 2.2-a). Bu tarz gruplara genel olarak departman adı verilir. Süreç tipi yerleşimde sıklıkla kontrol edilmesi çok zor iş akışları büyük miktarlarda iş partileri, makineler önünde bekleyen yüksek miktarda ara stoklar bulunur. Ayrıca işlerin temin süreleri de uzamaktadır. Talebin artması durumunda tesis büyümekte ve departmanlar genişlemektedir. Bu durum sistemin etkinliğinin azalmasına, ara stok miktarlarının, temin sürelerinin ve akış zamanlarının artmasına neden olmaktadır. Ürün tipi yerleşimde (akış tipi yerleşim olarak da bilinir) ise makineler işin makineler boyunca akabileceği bir şekilde yerleştirilirler (Şekil 2.2-b). Böyle bir yerleşim ara stok miktarını, temin süresini ve akış zamanını düşürecektir. Ürün çeşitliliği çok az ise ve bu ürünlerin teknolojik gereksinimleri benzerlik gösteriyorsa ürün tipi yerleşim etkin olacaktır. Ancak talep büyüdüğünde ve ürün karışımında değişiklik olduğunda ek makinelerin hatta yerleştirilmesi gerekecek, alan sıkıntısı ortaya çıkacak ve makinelerin yeniden düzenlenmesi gerekecektir. Oldukça yaygın olan diğer bir yerleşim biçimi hücresel yerleşimdir (Şekil 2.2-c). Hücresel yerleşim birbirleriyle yakından ilişkili makine setinden oluşur ve herhangi bir hücredeki makinelerin yerleşimi öyle bir şekilde düzenlenmiştir ki; bir parça akış tipi yerleşimde olduğu gibi bir hücreden kolayca geçebilir. Hücre sayısının az olması, hücredeki makinelerin fiziksel olarak gruplanması ve ürün benzerliklerinden dolayı 9 bu sistemlerdeki çizelgeleme işlemleri daha basittir. Ancak ürün karışımı değiştiğinde bu yerleşim etkinliğini kaybetmeye başlar ve darboğaz makinelerin ortaya çıkması daha fazla makine alımını gerektirir. Bazen herhangi bir hücredeki makinenin diğer bir hücreye taşınması bile gerekebilir. Ürün tipi yerleşim ve hücresel yerleşimde tahmin teknikleri kullanılarak dikkatli bir pazar analizi yapılmalıdır. Ayrıca parça ailelerin belirlenmesi içinde hassas bir çalışma gereklidir. Bu iki yerleşim ürün miktarı ve karışımına karşı çok hassastır. Hükümet politikaları, borsalar, teknolojik yenilikler, rekabetçi firmaların stratejilerindeki değişiklikler talep yapısını değiştirebilir hatta ürün yaşam çevrimini kısaltabilir. Bu tarz etmenler bu iki tip yerleşimin etkinliğini belirli bir seviyede tutmak için makinelerin tesis içerisindeki pozisyonlarının değişmesi anlamına geldiğinden bu yerleşimlerin orta ve uzun vade de çok etkin yerleşimler olmadığı açıkça görülmektedir. Şekil 2.2-d, 40 adet makine ve 5 makine tipinden oluşan SİH için genel bir tesis yerleşimini göstermektedir. Sistemde 3 adet aktif hücre görülmektedir. SİH’de genel olarak üç durum önemlidir (i) makine tiplerinin çeşitliliği, (ii) belirli bir makine tipinin içeriği ve sayısı ve son olarak (iii) bunların tesis yerleşimi içindeki dağıtımıdır. SİH farklı makine tiplerinden oluşmaktadır ve bu makine tiplerinin sayısı üretimi yapılacak olan işlerin teknolojik gereksinimleriyle doğru orantılıdır. Her bir makine tipine ait tesis içerisinde farklı bölgelere yerleştirilmiş birden fazla makine olduğu için hem kapasite miktarı artırılır hem de alternatif rotalar sağlanmış olur. 10 a) b) c) d) Şekil 2.2. İmalat sistemlerinin yerleşim organizasyonu Makinelerin tesis içerisindeki dağıtımı malzeme taşımaları için önemli bir problemdir. Şekil 2.2-d incelendiğinde makinelerin tesis içine keyfi olarak dağıtıldığı düşünülebilir ancak durum böyle değildir. Aynı yeteneklere sahip makinelerin kümelenmesi yerine tesis içinde bu makineler farklı noktalara dağıtılmıştır. Bu şekilde talep miktarı arttığında ek makinelerin konması rotalama esnekliğini artıracaktır. Böylece toplam taşıma miktarında da belirgin bir artış gözlenmeyecektir. SİH için farklı tesis yerleşimiyle ilgili bazı çalışmalar olsa da bu konu farklı bir araştırma alanıdır ve bu tezin kapsamı içerisinde değildir. Burada benzer işlem 11 yeteneklerine sahip makinelerin mümkün olduğunca birbirine yakın olmadığı durum dikkate alınacaktır ki bu toplam taşıma etkinliğini artıracaktır. 2.3. Sanal Hücrenin Hayatı Sanal hücrenin hayatı ile bir biyolojik hücrenin yaşamı arasında bir benzerlik kurmak mantıklı olabilir [Drolet, 1989]. Bu benzerlik Şekil 2.3’de görülmektedir. Sanal Bir Hücrenin Hayat Çevrimi (Hücre Elastisitesi) SANAL HÜCRENİN OLUŞUMU BÜYÜYEN HÜCRE OLGUNLAŞAN HÜCRE KÜÇÜLEN HÜCRE YOKOLAN HÜCRE GENEL BİR HÜCRE Şekil 2.3. Sanal bir hücrenin hayatı İŞ MAKİNE 12 Herhangi bir iş, işleme alınmak üzere bir kez seçilirse bunun için bir sanal hücre kontrolörüne ve bir hücreye ihtiyaç vardır. Tesisteki mevcut makineler kümesi arasında kontrolör o iş için kapasite ve teknolojik kısıtları sağlayan bir makine setini atayacaktır. Bu sanal hücrenin oluşumu demektir. Gerekli tüm kaynaklar temin edildiğinde o makineye gönderilir. İlk olarak ziyaret edilecek makine ilgili parçanın operasyon sırasındaki ilk makine tipine ait bir makine olacak ve bu böyle devam edecektir. İlk makine ilgili işi işlemek için hazır olduğunda kontrolör o işin üretimine başlanmasına izin verebilir. İlk parça ilk istasyonda işlendikten sonra ikinci istasyona taşınır ve akış tipine benzer şekilde parçanın üretimine devam edilir. Bu safha büyüyen hücre olarak bilinir. İlgili parçanın üretimi için gerekli tüm makineler o parça üzerinde çalışmaya başladıkları zaman ilgili hücrenin olgunlaştığı söylenebilir. Tabi ki ters sürecin oluşması kaçınılmazdır. Hücre küçülecek ve sonra da kaybolacaktır. Bunun anlamı sanal hücre kontrolörünün artık mevcut olmadığıdır. 2.4. Grup Teknolojisi Hücreleri ile Sanal İmalat Hücreleri Arasındaki Farklılıklar Sanal imalat hücreleri fiziksel olarak birbirlerine yakın konumlandırılmadıkları için GT hücrelerine göre malzeme taşıma miktarları daha fazladır. Ancak bu taşıma miktarları sanal hücrelerin oluşturulması aşamasında en küçüklenebilir. Ayrıca GT hücrelerinde var olan makine kullanım oranları arasındaki dengesizlikten dolayı ihtiyaç duyulan ilave kapasiteye gerek yoktur. Özetle bir sanal hücre geleneksel GT hücresine kıyasla bazı avantajları vardır: a) Sanal bir hücre istendiği zaman oluşturulabilir ve dağıtılabilir. b) Bir sanal hücre kontrolörü ürün karışımı, talep, iş rotaları gibi dış kaynaklı değişimleri karşı kendisini adapte edebilir. c) GT’de talep değişimlerine cevap verebilmek için yapılan hücre yerleşimlerinin değiştirilmesinden kaynaklanan maliyet oluşmamaktadır. d) Sanal hücrelerde makine kullanım oranları daha yüksek olmaktadır. 13 Herhangi bir makine belirli bir anda belirli bir sanal hücrenin elemanı iken başka bir zaman diliminde farklı bir sanal hücrenin elemanı olabilir. Hatta aynı makine belirli bir anda birden fazla sanal hücrenin elemanı olabilir. Bu durum SİH’de makine kullanım oranlarının yüksek ve makine ihtiyacının düşük olduğunu açıklamaktadır. 14 3. LİTERATÜR ARAŞTIRMASI SİH ile ilgili olarak araştırmacılar şu ana kadar birbirinden farklı tanımlamalar yapmışlardır. Ancak bu tanımlar arasındaki ortak görüş tesis yerleşimi ile imalat işlemlerinin organize ve kontrol edilme biçiminin birbirinden farklı olduğudur. SİH aslında tesis yerleşimini az ya da çok dikkate alan Üretim Planlama ve Kontrol (ÜPK) için bir ana fikirdir. Ancak tesis yerleşimi SİH’nin tasarımında belirli dereceye kadar rehberlik yapabilir. Bu sebepten tesis yerleşimi SİH ile ilgili literatür araştırmasında önemli bir özelliktir. Değişen çevrenin gereksinimleri ve imalat sistemlerinin bu değişime olan adaptasyonlarını açıklamakta yerleşim tipleri yetersiz kalabilmektedir. Bu değişimler stratejik, taktiksel veya operasyonel seviyelerde olabilmektedir. Bunun sonucunda SİH yapılarının tümel bilgileri kullanan tasarım çabalarından mı yoksa sadece yerel bilgilerin kullanıldığı operasyonel çabaların sonucunda mı oluştuğu tartışma konusudur. Böylece ikinci özellik SİH’nin şekillendiği ÜPK hiyerarşisi içresindeki seviye olacaktır. Bu AÜÇ (Ana Üretim Çizelgesi) olarak bilinen göreli olarak daha durağan SİH yapılarının oluştuğu orta ya da uzun dönemli planlamalardır. Bazı durumlarda SİH’leri oldukça dinamiktir ve TYK (Tesis Yerleşim Kontrolü) olarak bilinen tek bir iş ile ilgili de olabilir. Bu iki seviye arasında SİH’nin dönemsel veya düzenli gözden geçirildiği MİP seviyesi olarak bilinen bir seviye daha vardır. Üçüncü özellik ise imalat gereksinimlerindeki benzerliklerin kullanılması ya da ürün ailelerin dikkate alınmasıdır. Bu özellik GT’nin merkezini oluşturmaktadır. Benzerlikler rotalarda ya da iş istasyonlarında özellikle ekipman gereksinimlerinde olabilir. Rotalardaki benzerlikler operasyonların yapılmasında (örneğin hazırlık ve işlem zamanlarının düşürülmesinde) fayda sağlarken iş istasyonu gereksinimindeki benzerlikler operasyonların koordinasyonunda fayda sağlamaktadır. Sonuç olarak GT fikrinin uygulanıp uygulanmaması SİH ile ilgili olarak yapılmış çalışmaların değerlendirilmesinde önemli bir faktör olarak karşımıza çıkmaktadır. 15 Son olarak da SİH ile ilgili yapılan tanımlamalar incelendiğine üç farklı kaynağın dikkate alınması gerektiği görülmüştür: (i) makine, (ii) insan ve (iii) malzeme taşıma ekipmanıdır. Bu kaynakların her birinin incelenmesi SİH’nin tasarımı ve operasyonu için farklı zorluklar getirmektedir. Genel olarak ne kadar çok kaynak dikkate alınırsa problem de o kadar karmaşık hale gelmektedir. İnsan faktörünün SİH’nin tasarımı aşamasına dahil edilmesi operasyonel işlemlere ek olarak organizasyonel konuların da dikkate alınmasını gerektirebilir. AÜÇ Talep: hacim Karışım, Grup Teknolojisi MİP YZK İnsan Makineler Yerleşim Taşıma Ekipmanı Şekil 3.1. Sanal imalat hücreleri için sınıflandırma çatısı [Nomden ve ark., 2006] SİH ile ilgili literatür çalışmaları incelendiğinde bir diğer farklılık da otomatik imalat sistemlerinin ve bilgisayar kontrolünün açıkça dikkate alınıp alınmadığıdır. Bu durum otomatik olmayan ortamlarda mevcut olan, insan gibi çeşitli problemleri en azından kısmi olarak ortadan kaldırır. İkinci olarak, farklı araştırma yaklaşımları kullanılmıştır. Böylece SİH ile ilgili geçmiş çalışmalar üç farklı yaklaşıma ayrılabilir. İlk olarak SİH’nin tasarım aşamasına odaklanan çalışmalar, ikinci olarak SİH’nin 16 operasyonel performansını inceleyen çalışmalar ve son olarak da SİH ile ilgili gözleme dayalı çalışmalar dikkate alınmıştır. Yukarıdaki nedenlere bağlı olarak SİH ile ilgili geçmiş çalışmalar aşağıdaki faktörlere göre sınıflandırılmıştır (Şekil 3.1). a) Araştırma Tipi: tasarımla ilgili çalışmalar, operasyonel çalışmalar, ya da gözlemsel çalışmalar b) Kaynaklar: Makineler, taşıma ekipmanları, insan c) SİH’nin Uygulama Seviyesi: Orta-uzun dönem (AÜÇ), kısa-orta dönem, ya da dönemsel (MİP) ya da uygulama seviyesi (TYK) d) Yerleşim dikkate alındı mı? e) Grup teknolojisi kullanıldı mı? f) İmalat sisteminde otomasyon dikkate alındı mı? Çizelge 3.1, Şekil 3.1’deki çerçeveye bağlı kalınarak sınıflandırılmış ve gözden geçirilmiş makalelerin şematik bir özetini göstermektedir. Çizelge 3.1’deki çalışmalar listesine bakıldığında ilk dikkati çeken konu SİH ile ilgili olarak yapılan çalışmaların son yıllarda artış göstermiş olmasıdır. İkinci olarak GT prensibinin çoğu çalışmalarda dikkate alındığı görülmektedir. Teknolojik ve finansal kısıtlamalardan dolayı geleneksel hücrelerin kullanımının uygun olmadığı durumlarda dahi GT fikri kullanılmaya çalışılmıştır. Ayrıca, işlerin etkin bir şekilde sıralanması nedeniyle ortaya çıkan kısa-dönemli faydalardan uzun-dönemli SİH’nin oluşturulmasına kadar SİH’lerin ÜPK seviyelerinin tümünde uygulandığı görülmektedir. SİH ile ilgili gözlemsel çalışmaların sayısının çok düşük olduğu açıktır. Gözleme dayalı mevcut çalışmaların da genel olarak hücresel imalatın kullanıcıları üzerinde odaklandığı görülmektedir. Deneysel çalışmalardaki girdiler özellikle tasarım ve operasyon alanlarındaki araştırma faktörlerinin gerçekleştirilmesini sağlayabilir. Bu özellikle model tabanlı araştırmalarda belirli kaynak tiplerinin eklenmesi açısından doğrudur. 17 Çizelge 3.1. Taranan makalelerin bir özeti (her bir kategorideki çalışmalar alfabetik olarak sıralanmıştır) Arş. Tipi Yazar(lar) Drolet ve ark, 1996 Fung ve ark., 2008 Irani ve ark., 1993 Kesen ve ark., 2009 Kesen ve ark., 2010a Kesen ve ark., 2010b Khilwani ve ark., 2009 Ko ve Egbelu, 2003 Mak ve ark., 2005; 2007 Mak ve Wang, 2002 McLean ve ark., 1982 Tasarım Mertins ve ark., 2000 Montreuil ve ark., 1992 Moodie ve ark., 1994 Prince ve Kay, 2003 Ratchev, 2001 Rheault ve ark., 1995 Saad ve ark., 2002 Sarker ve Li, 2001 Slomp ve ark., 2004;2005 Subash ve ark., 2000 Thomalla, 2000 Vakharia ve ark., 1999 Flynn, 1987 Flynn ve Jacobs, 1986; 1987 Jacobs ve Bragg, 1988 Jensen ve ark., 1996, 1998 Kesen ve ark., 2009 Kannan, 1997 Operasyon Kannan, 1998 Kannan ve Ghosh, 1995 Kannan ve Ghosh, 1996a;1996b Shambu ve Suresh, 2000 Suresh ve Meredith, 1994 Suresh ve Slomp, 2005 Hyer ve Brown, 1999 Gözlemsel Wemmerlöv ve Hyer, 1989 Wemmerlöv ve Johnson, 2000 Kaynaklar Uyg. Sevi. Yerleşim M/T/M/T/M/T/M/T/M/T/M/T/M/-/M/-/M/T/M/T/M/-/M/-/İ M/T/M/-/M/-/İ M/T/M/-/M/T/M/T/M/-/İ M/-/M/T/M/-/M/-/M/-/M/-/M/-/M/-/M/-/M/-/M/-/M/-/M/T/M/-/M/-/İ M/-/İ M/-/İ M/-/İ -/-/-/MİP/TYK AÜÇ/-/-/MİP/TYK -/MİP/TYK -/MİP/TYK -/MİP/-/MİP/-/MIP/TYK -/MİP/TYK -/MİP/AÜÇ/MİP/-/MİP/TYK -/MİP/TYK AÜÇ/-/-/MİP/-/MİP/TYK -/MİP/-/MİP/TYK -/MİP/TYK AÜÇ/MİP/-/MİP/TYK AÜÇ/-/AÜÇ/AÜÇ/-/-/TYK -/-/TYK -/-/TYK -/-/TYK -/-/TYK -/-/TYK -/-/TYK -/-/TYK -/-/TYK -/-/TYK AÜÇ/-/AÜÇ/-/AÜÇ/-/- Y Y Y Y Y Y GT GT GT GT GT Otomasyon O O O O O O O Y Y O O O Y Y O O Y Y Y GT GT GT GT O O GT GT Y Y Y Y Y Y Y Y Y Y Y Y GT GT GT GT GT GT GT GT GT GT GT GT GT GT GT Kaynaklar: M (Makine), T (Malzeme taşıma ekipmanı), İ (İnsan). Uygulama seviyesi: AÜÇ (Ana üretim çizelgesi), MİP (Malzeme ihtiyaç planlaması), TYK (Tesis yerleşim kontrolü). Yerleşim: Y(Yerleşim açıkça dikkate alındı)/GT: Grup teknolojisi açıkça dikkate alındı. 18 Tüm araştırmacıların kaynak tipi olarak makineyi seçtiklerini, bazılarının malzeme taşıma ekipmanlarını kaynak olarak dikkate aldıklarını ancak insan faktörünün çoğu çalışmalarda dikkate alınmadığı görülmektedir. Bunun nedeni muhtemelen karmaşık bir yapısı olan SİH ile ilgili problemlerin çözümünü daha da zorlaştırmamaktır. Ortaya çıkan farklı bir sonuç ise SİH’nin operasyonel konularıyla ilgilenen araştırmacıların tasarım konusuyla ilgilenmediklerini göstermektedir. Yani bu iki farklı konu üzerinde çalışan araştırmacılar genel olarak birbirlerinden ayrılmaktadır. Aslında tasarım metotları operasyonel performans değerlendirilmelerindeki temele göre ciddi şekilde geliştirilebilirler. Bununla birlikte, tasarımla ilgili bazı makaleler benzetim tekniği kullanılarak yapılan operasyonel performans değerlendirmelerini dikkate almışlardır. Ayrıca tasarım ile ilgili çalışmaların sayısının operasyonel ve deneysel çalışmalara oranla daha fazla olduğu görülmektedir. Genel olarak tüm alanlarla ilgili olarak daha birçok çalışma yapılabileceği görülmektedir. 3.1. SİH’nin Tasarımı ile İlgili Çalışmalar McLean ve ark. (1982)’nin çalışması sanal imalat hücreleri terimini inceleyen ilk çalışmadır [McLean ve ark., 1982]. GT hücrelerinin sanal otomasyon ile sanal imalat hücrelerine dönüştüğü otomatik bir imalat tesisinin kontrolü üzerinde durmuşlardır. İş istasyonlarının sanal hücrelerde eşzamanlı olarak kullanımından dolayı SİH’nin geleneksel hücrelerden daha esnek bir yapıda oldukları belirtilmiştir. İşlerle onları üretmek için gerekli olan makinelerin birleşmesiyle oluşan geçici imalat hücreleri gibi önemli işlemlerden bahsetmişlerdir. İkinci önemli işlem ise işler arasında çeşitli kaynakların paylaşılmasıyla ilgili kararları içermektedir. Yukarıda adı geçen çalışma bu konuda çalışma yapmak isteyen birçok araştırmacıya ilham vermiştir. Örneğin Montreuil ve ark. (1992) organizasyonun (mantıksal yapının) yerleşimden (fiziksel yapıdan) ayrılabileceği fikrini incelemişlerdir. Basitçe ifade etmek gerekirse, süreç tipi yerleşim söz konusuysa fonksiyonel bir organizasyonun şart olmadığı ya da ürün tipi bir organizasyonun sadece ürün tipi yerleşime mahsus olmadığını ifade etmektedirler [Montreuil ve ark., 1992]. Bununla 19 ilgili diğer makaleler, değişen imalat gereksinimlerine adapte olabilmek için kaynakların bir noktadan diğer noktaya taşınmasıyla ilgili bakış açıları sunmuşlardır. Dinamik hücrelerin uygulanabilirliği bir örnek olarak verilebilir [Drolet ve ark., 1996; Rheault ve ark., 1995]. Bu bağlamda SİH, dinamik tesis yerleşim probleminin belirli bir parametre aralığıyla ilgilidir. Örnek olarak Balakrishnan ve Cheng (1998) çalışması incelenebilir. Ürün karışımı ve miktarı çok değişken ise tesis yerleşiminin değiştirilmesinden doğan maliyet fazla olacağından bu akıllıca olmayacaktır [Balakrishnan ve Cheng, 1998]. Diğer bir çalışmada Moodie ve ark. (1994) SİH kullanarak işlerin çizelgelenmesiyle ilgili bir yapı sunmuşlardır. Her bir iş bir iş istasyonları kümesine atanmıştır. Böylece tek ürün için geçici bir akış tipi hat oluşturulmuştur. Problem için bir doğrusal programlama modeli kurulmuştur ve amaç toplam taşıma uzaklığı ile işlerin toplam gecikmelerinin en küçüklenmesidir [Moodie ve ark. 1994]. Sarker ve Li (2001) bu problemi her bir iş için kaynaklar şebekesi içerisinden bir yol bulmak olarak tanımlamışlar ve bu problemi en son işin en son makinedeki tamamlama zamanını en küçüklemeye çalışan bir algoritma ile çözmüşlerdir [Sarker ve Li, 2001]. Thomalla (2000) aynı problemi Lagrangian gevşetmeleri yaklaşımıyla gecikmeleri en küçükleyerek çözmüştür [Thomalla, 2000]. Diğer bir yaklaşımda ise Mak ve Wang (2002) toplam taşıma uzaklıklarını en küçüklemeye çalışan Genetik Algoritma (GA) yaklaşımı sunmuşlardır [Mak ve Wang, 2002]. Mak ve ark. (2005) aynı problem için doğrusal olmayan matematiksel model geliştirmişler ve bu problemi çözmek için yine GA yaklaşımını kullanmışlardır. Ancak burada iki farklı amacı dikkate almışlardır: (i) toplam taşıma uzaklığının en küçüklenmesi ve (ii) tüm ürünlerin toplam gecikmelerinin en küçüklenmesidir [Mak ve ark., 2005]. Mak ve ark. (2007) ise aynı problem için bu kez Karınca Kolonisi Eniyilemesi (KKE) algoritması geliştirmişlerdir ve yine toplam taşıma uzaklıklarını en küçüklenmeye çalışmışlardır [Mak ve ark., 2007]. Irani ve ark. (1993) süreç tipi yerleşimli departmanlar ile akış tipi hücrelerden oluşan melez bir yerleşimin oluşturulmasına yönelik vurgu yaparak tesis yerleşim problemini incelemişlerdir. Basit akış verilerini kullanarak, bazı kaynaklar parça 20 ailelerinin ortak kapasite kullanımına müsaade etmek amacıyla birbirlerine yakın noktalara konulmuşlardır. Bu kaynaklar daha sonra SİH’lerinin birer elamanı olmuşlardır. Graph teorisi yardımıyla iki adet problem çözülmüştür. Her bir çözümde benzer üretim yeteneklerine sahip bazı makineler kümelendirilerek süreç tipi yerleşime dönüştürülmüş ve farklı üretim yeteneklerine sahip makinelerde akış tipi bir hat meydana getirilmiştir [Irani ve ark., 1993]. Ayrıca, farklı imalat departmanlarından gelen işçilerin parça ailelerinin üretimine katılmasını inceleyen çeşitli çalışmalar mevcuttur. Kaynaklar bu sanal takımlar arasında paylaşılmaktadır. Sanal işçi ekibi atanan parça ailelerinin siparişlerinin çizelgelenmesinden sorumludur. Ancak toplam üretim kapasitesinin kullanımıyla ilgili olarak sanal takımlar arasında çatışma çıkmaktadır. Mertins ve ark. (2000) sanal ekipler arasındaki bu çatışmayı çözmek için basit bir yaklaşım önermişlerdir. Parti büyüklükleri eşit kapasite kullanımına sahip olmakta ve her bir sanal ekibin üretim kapasitesini sırayla kullanması gerekmektedir. Benzetim sonuçlarından bu yaklaşımın katkı sağladığı gösterilmiştir [Mertins ve ark., 2000]. Vakharia ve ark. (1999) kuyruk teorisini kullanarak gerçek bir akış tipi üretimde SİH’nin analizi ile ilgilenmişlerdir. Farklı üretim aşamalarında kaynakların işlere atanması ile bir kaynak havuzu oluşturulması arasındaki ödünleşimi ve bunların akış performansına etkilerini incelemişlerdir. Farklı üretim aşamalarındaki makine bir parça ailesinin üretimine atanırken, o üretim aşaması içindeki makineler tüm parça aileleri arasında paylaşılmaktadır. Bu yaklaşımın toplam üretim zamanını düşürdüğünü göstermişlerdir [Vakharia ve ark., 1999]. Subash ve ark. (2000) sanal hücre formasyonu için bir yapı önermişlerdir. Aslında yazarlar, sanal hücrelerin formasyonu için farklı kümeleme algoritmalarını test etmişlerdir [Subash ve ark., 2000]. Ratchev (2001) ve Saad ve ark. (2002) SİH oluşturabilmek için bir metot sunmuşlardır [Ratchev, 2001; Saad ve ark., 2002]. Bu metodun ilk aşaması ürün karışımının imalat gereksinimlerinin analiz edilmesidir. Bu gereksinimler ekipman tipi, toleranslar ve işin gereksinimlerini karşılayabilmek için bir ya da daha fazla makinenin mevcut olmasıdır. Bileşenler daha sonra benzer 21 imalat gereksinimlerine sahip parçaların uygun bir kümesi içine gruplandırılmaktadır. Sonraki adım ise en az taşıma miktarı veya en çok üretim miktarı gibi çeşitli ölçütler kullanarak makinelerin bu kümelere atanması işlemidir. Son adım ise bir önceki aşamada kullanılan performans ölçütlerinin etkinliklerini ölçmek amacıyla oluşturulan senaryo analizlerini içermektedir. Kesen ve ark. (2010a) SİH’nin çizelgelenmesi için matematiksel model ve GA yaklaşımı önermişlerdir. Problemde her bir işin rotasının birbirinden farklı olduğunu ve bu işleri işlemek üzere tesis içerisinde mevcut makine tiplerinin birden fazla makineden oluştuğunu varsaymışlardır. İşlerin partiler halinde üretildiği ve partilerin bölünmediği kabulü altında ağırlıklandırılmış toplam taşıma miktarı ile en son işin en son makindeki tamamlanma zamanını en küçüklemeye çalışmışlardır. Rassal olarak üretilmiş problem setleri üzerinde GA’nın kısa sürede iyi çözümler bulduğu gösterilmiştir [Kesen ve ark., 2010a]. Kesen ve ark. (2010b) ise aynı problemde, partilerin alt partilere bölünebildiği kabulüyle bir matematiksel model önermişler ve rassal bir problem seti üzerinde toplam taşıma miktarı ile en son işin en son makinedeki tamamlanma zamanının birbirleriyle çeliştiğini göstermişlerdir [Kesen ve ark., 2010b]. Saad ve ark. (2002) üretim planlama ve hücre formasyonu için üç aşamadan oluşan bütünleşik bir yapı sunmuşlardır. Birinci aşamada mevcut hücre yerleşimine iş yüklemesi yapılmaktadır. İkinci aşamada benzetim tekniği yardımıyla mevcut hücre yerleşimi mevcut iş yüklemesi altında önceden belirlenmiş üretim miktarı ve işlerin toplam gecikmeleri gibi ölçütlere göre test edilmektedir. Mevcut hücre yerleşiminin performansı tatmin edici değilse, hücreler yeniden düzenlenmekte ve yeni sanal imalat hücreleri oluşturulmaktadır. Oluşturulan yapı mevcut işlerin üretim gereksinimlerine göre kaynakların yeterliliğini kontrol etmektedir. İşler benzer üretim gereksinimlerine sahip oldukları için GT’nin özelliklerinden faydalanılmaktadır. Aynı zamanda işlerin kaynaklara atanmasındaki esneklik imalat tesisinin kullanım oranının daha yüksek olmasını sağlamaktadır. Önerilen matematiksel model hücreler arası taşımayı ve gecikmeleri en küçüklenmektedir. 22 Model önerildikten sonra Tabu Araması (TA) tekniğiyle probleme çözüm önerilmiştir [Saad ve ark., 2002]. Daha geniş bir bakış açısı Üretim Akış Analizi’nin daha gelişmiş sürümünü ortaya koyan Prince ve Kay (2003) tarafından sunulmuştur. Farklı parça aileleri tarafından makinelerin paylaşılmasına müsaade ederek sanal gruplar oluşturmuşlardır. Sonuç olarak, sanal bir grubun hem süreç tabanlı (benzer makineler havuzu) hem de ürün tabanlı olabileceği gösterilmiştir. Geliştirilen bu yapı iki gerçek hayat problemine uygulanmıştır [Prince ve Kay., 2003]. Ko ve Egbelu (2003) SİH oluşturmak için iki algoritma önermişlerdir. İlk algoritma rota verilerini analiz etmek ve rotalarda sıkça ortaya çıkan makinelerin bir kümesini oluşturmak için kullanılmıştır. Bu aday SİH’ler sonuç SİH yerleşimini belirleyen ikinci algoritma yardımıyla analiz edilmektedirler. Herhangi bir makine birden fazla SİH’nin elemanı olabilir ve birden fazla işe hizmet verebilir [Ko ve Egbelu, 2003]. Slomp ve ark. (2004) ve Slomp ve ark (2005) SİH’lerin tasarımı için bir yapı önermişlerdir. Önerdikleri yapıda özellikle sınırlı sayıda işçi ve işçi becerisinin olduğu varsayılmıştır. İlk olarak işleri ve makineleri gruplayan ve daha sonra SİH’leri oluşturmak için işçilerin bu gruplara atanmasını sağlayan amaç programlama modeli geliştirmişlerdir. Amaç kapasitenin mümkün olduğunca fazla bir şekilde kullanılmasıdır ancak SİH’lerin de mümkün olduğunca birbirinden bağımsız bir şekilde kurulmalarını sağlamaktır [Slomp ve ark., 2004; 2005]. Fung ve ark. (2008) sanal hücre oluşumuna ve uygun kaynakların seçilmesine yardımcı olabilecek çok aşamalı hücre formasyonu metodolojisi geliştirmişlerdir. İlk olarak kaynaklar, mevcut kapasiteyi ve maliyetleri dikkate alan doğrusal programlama modeliyle üretim işlemlerini tamamlamak için seçileceklerdir. Mantıksal olarak sanal hücreleri oluşturmak için alternatif üretim rotalarına sahip olan parçalar, kaynak elemanı yaklaşımıyla analiz edilmektedirler. Kaynak elemanlarının oluşturulmasında aday sanal hücreleri eniyilemek için rota tabanlı bazı 23 sezgisel yaklaşımlar önermişlerdir. Son olarak, önerilen metodolojiyi uygulamak amacıyla vaka çalışması yapılmıştır [Fung ve ark., 2008]. Khilwani ve ark. (2009) benzerlik indekslerini en büyükleyen ve temin sürelerini en küçükleyen SİH tasarımı içn çalışmışlar ve matematiksel model ile çözüm prosedürü geliştirmişlerdir. Rassal olarak üretilmiş problem setleri üzerinde önerilen yaklaşımın performansı test edilmiştir [Khilwani ve ark., 2009]. SİH’nin tasarımıyla ilgili olarak yapılan makaleler genel olarak incelendiğinde kullanılan verilerin genellikle uygulama yapılan fabrikaya has olduğu görülmektedir. SİH’lerin gerçek hayat problemlerine uygulanmasının ve adaptasyonun kolay olduğu söylenebilir. Bazı yazarlar kurgusal veriler kullanırken ve bazıları da daha önce kullanılmış rassal verileri kullanmaktadırlar. Kullanılan bilgi düzeyi de farklılıklar göstermektedir. Çalışmaların bir kısmında sadece rota bilgisi kullanırken, bazılarında ise ayrıntılı bir gruplama kararı verebilmek için rota kartları incelenmiştir. Kullanılan performans ölçütleri de birçok farklılık göstermektedir. Finansal ölçütlerden operasyonel ölçütlere kadar hatta harici elemanların sayısı ve hücrelerinin yoğunluğuna kadar birçok performans ölçütü kullanılmıştır. Tesis yerleşimini dikkate alan makaleler ayrıca toplam taşıma uzaklığının da en küçüklenmesi üzerinde durmuşlardır. Belirli bir tasarım metodu, çözümü çok zor olan bir problemi içerebilir. Bu çalışmalar içerisinde 5 adet makalede TA, GA ve KKE tekniğinin kullanılabileceği gösterilmiştir. 3.2. Operasyonel Seviyede SİH ile İlgili Çalışmalar Bu bölümde SİH’yi operasyonel boyutta inceleyen makaleler ele alınmıştır. Flynn ve Jacobs (1986; 1987) saf hücresel yerleşim olarak değerlendirilemeyecek bir tesis yerleşimi üzerinde benzetim tekniği kullanarak GT uygulaması yapmışlardır. Bu araştırmalar, sanal hücresel yerleşimle ilgili çalışmalar olarak yapılmasa da bulgular sanal hücresel imalat sistemleriyle yakından ilgilidir. Gerçek bir hayat problemi üzerinde tesis yerleşiminin, ürün karışımı dağılımının ve ekipmanların 24 parça ailelerine atanmasının etkileri üzerinde yoğunlaşmışlardır [Flynn ve Jacobs, 1986; 1987]. Bu çalışmalardan çıkarılacak genel sonuç, fonksiyonel yerleşimin en iyi alternatif olduğudur. Flynn (1987), fonksiyonel yerleşim ve hücresel yerleşimde hatta ekipmanların işlere atandığı fonksiyonel bir yerleşimde Jacobs ve Bragg (1988) tarafından önerilen tekrarlı işlerin sıralamasıyla ilgili prosedürü kullanarak bir çalışma yapmışlardır. Bu ortamda hazırlık zamanlarını azaltan sıralama kurallarıyla birlikte değerlendirilen fonksiyonel yerleşim, hücresel yerleşimden ve direkt olarak ekipmanların işlere atandığı fonksiyonel yerleşimden daha iyi bir performans göstermiştir. Sadece ekipmanın kalıcı olarak işe atanması, hazırlık zamanını çok fazla azaltmamaktadır. İş benzerliklerinin esnek kullanımı en iyi performansı vermektedir [Flynn, 1987]. Suresh ve Meredith (1994) fonksiyonel yerleşimde parça ailesi tabanlı çizelgeleme kullanımının etkisini araştıran ilk çalışmayı yapmışlardır. Bu sistemlerin kıyaslanabilir parti büyüklükleri ve hazırlık zamanlarının düşük olduğu durum altında hücresel yerleşimden ve fonksiyonel yerleşimden daha iyi performans sağladığını göstermişlerdir. Ancak, hazırlık zamanlarının belirli bir eşik değerinden yüksek olduğu durumda ve hücresel yerleşimin sanal hücrelerin fonksiyonel yerleşime göre daha düşük parti hacmiyle çalıştığı durumlarda, geleneksel hücresel yerleşimin diğer iki yerleşimden daha iyi performans sergilediği ortaya çıkmıştır [Suresh ve Meredith, 1994]. Yukarıdaki çalışmada incelenen sistem, “ilk gelen ilk hizmet görür” çizelgeleme kuralına göre çalışmaktadır. Ancak Kanan ve Ghosh, (1996a; 1996b) ve Kanan (1997; 1998) farklı parça ailesi tabanlı diğer çizelgeleme kurallarının kullanımını incelemişlerdir [Kanan ve Ghosh, 1996a; 1996b Kanan 1997; Kanan 1998]. Parça ailesi tabanlı çizelgeleme yapılan fonksiyonel tipi yerleşime sahip sistemleri, sanal hücresel imalat sistemi olarak isimlendirmişlerdir. Kesen ve ark. (2009) farklı parça ailesi tabanlı çizelgeleme yöntemleri kullanarak sanal hücreleri, hücresel yerleşimi ve fonksiyonel yerleşimi benzetim tekniği yardımıyla karşılaştırmışlardır [Kesen ve ark., 2009]. KKE metodunu kullanarak da metamodel denklemler oluşturmuşlardır. Sonuçlar sanal hücrelerin diğer iki yerleşim tipinden daha iyi performansa sahip 25 olduğunu göstermiştir. Suresh ve Slomp (2005) bu çizelgeme ölçütlerini ayrıntılı bir şekilde incelemişlerdir. Kanan ve Ghosh (1996a) fonksiyonel yerleşim, hücresel yerleşim ve 2 adet sanal hücre tipini incelemişlerdir. İki sanal hücre sistemi arasında, birincide verilen herhangi bir iş merkezindeki parça ailesine ait bir iş, en fazla kuyruk olan makineye girecektir. İkinci sanal hücre sisteminde, rotasında en az makine kalan aile seçilecektir. %75 ve %85 olarak iki farklı atölye iş yükü, iki farklı hazırlık zamanı ve dört farklı talep yapısı dikkate alınmıştır. Talep yapıları iki farklı parti büyüklüğü seviyesi ile dengelenmiş ve dengelenmemiş ürün karışımlarını içermektedir. En iyi performansı sanal hücre sistemleri, daha sonra fonksiyonel yerleşim ve en sonda hücresel yerleşim göstermektedir. Sanal hücre sistemleri parti büyüklüğünün düşük, talep yapısının dengesiz ve iş yükünün fazla olduğu durumlarda bile diğer iki sisteme göre daha iyi performans sergilemiştir [Kanan ve Ghosh, 1996a]. Yukarıdaki çalışmada parti büyüklüğü için iki seviye kullanılmış olsa da, parti büyüklükleri hem hücresel hem de fonksiyonel yerleşim için aynıdır. Bu durumda sanal hücre sistemlerinin gösterdikleri iyi performans Suresh ve Meredith (1994)’ün çalışmasındaki SİH ile ilişkilidir. Kanan ve Ghosh (1996b) beş farklı SİH’nin performansını beş farklı parti ailesi seçim kuralına göre incelemişlerdir. Bu çalışmada yine SİH’lerin genel fonksiyonel ve hücresel yerleşime göre daha iyi sonuç verdiği görülmüştür. Ancak hücresel yerleşimde düşük parti büyüklükleri ve yüksek hazırlık zamanları kullanılmamıştır [Kanan ve Ghosh, 1996b]. Benzer sonuçlar Kanan (1997)’nin çalışmasında da gösterilmiştir. Hazırlık zamanlarının ve parça ailesi sayılarının yüksek olduğu durumlarda dahi SİH’nin fonksiyonel yerleşimden daha iyi sonuçlar verdiği gözlenmiştir [Kanan, 1997]. Kanan (1998) parti büyüklüklerinden daha küçük transfer parti büyüklüklerinin kullanımının etkisini incelemiştir. Bu faktörün beş farklı seviyesi ile iki farklı atölye toplam iş yükü, parti büyüklüğü ve hazırlık zamanı kullanılmıştır. Bu çalışma göstermiştir ki; hücresel yerleşimin performansını artırma 26 çabalarına karşın hücresel yerleşim SİH’yi yalnızca düşük atölye yükü, küçük parti büyüklüğü ve yüksek hazırlık zamanı düzeneği altında geçebilmiştir [Kanan, 1998]. Jensen ve ark. (1998) akış tipi üretimin ve her bir departmanda birden fazla makinenin olduğu iş merkezlerinin nadiren de olsa değiştirilebildiği (atölye tipi üretime benzer) bir üretim sistemini incelemişlerdir. Üç faktör dikkate alınmıştır: (i) departman içerisindeki makine hazırlık zamanlarının koordinasyonu ya da iki ailetabanlı çizelgeleme kuralı (en erken teslim tarihi ve en kısa işlem zamanı), (ii) işlem zamanlarının %0-70 aralığında olan hazırlık zamanlarıdır. Birinci faktörle birlikte yani bir departman içerisindeki uyumlu makine hazırlıkları, bir departmanda yalnızca makineler boş olduğunda, iki ya da daha fazla makinenin aynı aile için hazırlık zamanı olmaksızın işlem yapabilmesine müsaade edilmiştir. Bu her bir iş merkezindeki büyük hazırlıkların sayısını azaltmaktadır. Parça ailesi tabanlı çizelgelemenin hazırlık zamanlarının işlem zamanlarının belirli bir yüzdesinden büyük olduğu durumlarda faydalı olduğu gösterilmiştir. Ancak parça ailesi hazırlık zamanı, işlem zamanlarının %15’inden daha düşük olduğunda parça ailesi tabanlı çizelgelemenin hiçbir avantajı yoktur [Jensen ve ark., 1998]. Jensen ve ark. (1996) benzer şekilde sonuçlar göstermiştir. Shambu ve Suresh (2000) melez hücresel sistemlerin performansını incelemişlerdir. Ayrıca fonksiyonel ve melez sistemlerdeki parça ailesi tabanlı çizelgeleme kurallarını araştırmışlardır [Shambu ve Suresh, 2000]. Suresh ve Slomp (2005) yukarıdaki çalışmalara ek olarak insan faktörünü de dikkate almışlardır. HİS’nin birçok avantajı işçilerin farklı becerilere sahip olmasından ve farklı hücrelere hizmet verebilmesinden kaynaklanmaktadır ve bu yüzden işgücü ile ilgili esnekliğin dikkate alınması gerektiği üzerinde durmuşlardır. Böylece çift kaynak kısıtlı (makine-insan) sistemlerde hazırlık zamanının düşük olduğu, işçilerin farklı iş becerilerine sahip olmadığı, düşük parti büyüklüğünün olduğu parametre düzeyinde SİH’nin fonksiyonel ve hücresel yerleşimden daha iyi performans sergilediğini belirtmişlerdir. Ancak düşük parti büyüklüğü, farklı iş becerilerine sahip ve farklı hücreler arasında hizmet verebilen işçilerin olduğu bir parametre aralığında 27 geleneksel (fiziksel) hücrelerin SİH’den ve fonksiyonel yerleşimden daha iyi sonuçlar verdiği belirtilmiştir [Suresh ve Slomp, 2005]. İncelendiği kadarıyla literatürde SİH’nin operasyonel özellikleri ile ilgili yapılan çalışma sayısının az olduğu görülmektedir. Bu çalışmalarda yaygın olarak benzetim tekniği kullanılmıştır. Akış zamanından ara stok miktarına, kullanım oranından gecikmelere kadar geniş bir performans ölçütü dikkate alınmıştır. Çalışmalar deneysel faktörlere göre de gruplanabilir. Çoğu çalışmada yerleşim ve hücre formasyon prosedürlerinden oluşan imalat sistem tipi dikkate alınmıştır. İncelenen 15 çalışmanın 12’sinde tesis yerleşimi dikkate alınmıştır. Fonksiyonel yerleşimde her bir işin bütün departmanlarda işlem görebileceği ya da bir parça ailesinin bütün hücrelere atanabileceği bir hücresel yerleşim gibi çok uç noktalar incelenmiştir. Ayrıca performans farklılıklarını gösterebilmek için değişik hücre formasyonları araştırılmıştır. İmalat sisteminin diğer bir kritik noktası onun kontrol yapısıdır. Hem parça ailelerinin makinelere atanması hem de işlerin sırası sistemin genel performansı üzerinde önemli bir etkiye sahiptir. Hücresel yerleşimlerde parça ailelerinin atanacağı hücre sabitken fonksiyonel yerleşimde bu bazı parça ailesi atama kurallarına bağlıdır. Parça ailelerinin makinelere atanması hazırlık zamanlarının düşürülmesinde önemli bir faktördür. Ürün karışımındaki ve talep hacmindeki değişkenliğinin yüksek olduğu dinamik ortamlarda SİH’nin iyi çalıştığı belirtilmektedir. Değişken ürün karışımı birçok çalışmada incelenirken talep hacmindeki değişkenlik çok ilgi görmemiştir. Parça ailelerinin yapısı ve boyutu sadece bir çalışmada incelenmiştir. Malzeme taşıma ile ilgili birçok durum mevcuttur. Taşıma sistemi, taşıma zamanları ayrıca parti büyüklükleri ve transfer partilerinin kullanımı malzeme taşıma ekipmanının yüklenmesinde önemli bir etkiye sahiptir. Parti büyüklüklerinin sıklıkla üzerinde durulurken, transfer partileri aynı ilgiyi çekememiştir. 28 3.3. SİH ile İlgili Gözlemsel Çalışmalar Wemmerlöv ve Hyer (1989)’in çalışması Amerikan endüstrisindeki muhtemel hücresel imalat kullanıcılarına yönelik anketlere dayanmaktadır. Ankete katılan kullanıcılardan elde edilen sonuç, GT ile ilgili kazanımları elde etmek için ekipmanların işlere atanması prensibinin etkili olduğudur. Bu firmalarda makine tahsisi, makineleri hücresel yapıya dönüştürmeden uygulanmaktadır. Bazıları, ekipmanların tam olarak işlere tahsis edilmesi şeklindeyken bazıları hem imalat hücrelerini hem de ekipman tahsisinin kombinasyonu olan melez yapılardır. Genel olarak tahsis edilmiş ekipman yalnız başına hücresel yerleşimin en büyük faydasını üretmektedir. Ekipmanların yer değiştirme maliyetinin birçok firma tarafından fiziksel bir hücre oluşturmanın en büyük maliyet kalemlerinden biri olduğu belirtilmiştir. Ayrıca geçici yüklemelerdeki değişkenliğin ve işlerin hücreler arası transferinin, hücrelerle ilgili problemli bir konu olduğu belirtilmiştir [Wemmerlöv ve Hyer, 1989]. Daha yeni bir çalışmada Hyer ve Brown (1999) endüstrideki 15 farklı vakanın sonuçlarını yorumlamışlardır. Ayrıca parça/parça ailelerine tahsis edilen insan ve ekipmanlardan oluşan bir sanal hücre ve iş akışlarının zaman ve bilgiyle bağlantılı olduğu, fakat kaynakların fiziksel olarak kümelendirilmediği imalat hücrelerinin sınıflandırılmasıyla ilgili yapı önermişlerdir. Araştırmacılar tasarım ve operasyonel konularda yaygın olarak incelenen faktörlerin yanında organizasyonel konuların önemine de vurgu yapmışlardır. Bunlar işçilere bilgi aktarımı, bu bilgi ile ilgili davranış yeteneği, farklı beceri gerektiren işler için işçilerin eğitimi ve takım çalışması becerileri gibi konuları içermektedir [Hyer ve Brown, 1999]. Wemmerlöv ve Johnson (2000) uygulamada bir hücrenin nasıl tasarlanacağını ve imalat hücresi oluşturmanın nedenlerini araştırmışlardır. Ayrıca imalat hücresinin oluşumunu engelleyen kısıtları da incelemişlerdir. Bu kısıtlar arasında beceri eksikliği ya da ekipmanları taşımanın yüksek maliyeti ve yetersiz talep hacmi gelmektedir. Bu faktörler hücresel imalata girişteki en büyük engeller olarak görülmektedir [Wemmerlöv ve Johnson, 2000]. 29 Yukarıda bahsedilen gözleme dayalı çalışmalarla ilgili olarak bazı çıkarımlar yapılabilir. Yapılan anket ve vaka çalışmalarında hücresel imalatla ilgili gözlemsel çalışmaların çok sınırlı sayıda olduğu görülmektedir. Gözlemsel çalışmalar oldukça yüzeysel boyutta kalsa da, geçmişteki analitik ve benzetim çalışmalarına rehberlik etmiştir. Fakat bu metotlara yeni deneysel faktörler sağlayabilmek açısından daha fazla gözlemsel çalışmanın yapılması gerektiği açıktır. Parametre aralıklarını belirlemek için tanımlayıcı istatistik metotlarından da faydalanılabilir. Gözlemsel çalışmalardan çıkan sonuç hücresel imalatın tahmin edildiğinden daha az kullanıldığıdır. Anketi cevaplayan çoğu firma, geleneksel HİS’yi kullanmadıklarını kullananlar da fabrikalarındaki çoğu parça için bir ya da iki hücrenin olduğunu belirtmişlerdir. Açıkça yalın HİS’nin pratikteki kullanımı çok azdır. Ancak çalışmalar HİS’nin neden kullanılmadığı konusunda ayrıntılı bir bilgi sunmamaktadır. 3.4. Genel Değerlendirme SİH’nin ilk olarak çalışılmasından bu yana yaklaşık olarak otuz yıla yakın süre geçmiştir. Literatür incelenmesi sonucunda SİH ile ilgili olarak hangi tipte çalışmalar olduğu ayrıntılı bir şekilde incelenmiştir. SİH kavramı özellikle tesis yerleşim probleminden ayrı olarak özellikle MİP için geliştirilmiştir. Değişen çevrenin gereksinimleri ve buna bağlı olarak imalat sistemlerinin bu çevreye uyumu üzerine vurgu yapılmıştır. İmalat sisteminin içinde bulunduğu tesis yerleşiminin kısmi olarak ya da tamamen değiştirilmesinin bu değişen koşullara cevap verebilme noktasında bir yere kadar yeterli olduğu görülmüştür. Üçüncü önemli konu parça/parça ailelerinin dikkate alınması ya da benzerliklerin imalat sistemi içerisinde kullanılmasıdır. Çalışmaların çok büyük bir kısmı genellikle tasarım ve operasyonel konular üzerinedir. Ancak gözlemsel çalışmalar fazla bulunmamaktadır. 30 Bu bölümdeki sınıflandırma dikkate alındığında bu tezin SİH’nin operasyonel kısmıyla ilgili olduğu söylenebilir. Kaynak olarak makine ve malzeme taşıma sistemi dikkate alınmıştır. Bu bölümün başında da belirtildiği gibi SİH’nin tasarım kısmında ne kadar fazla kaynak dikkate alınırsa problem o kadar karmaşıklaşmaktadır. Bu yüzden iki farklı kaynak araştırma kapsamına alınmıştır. SİH’nin uygulama seviyesi çok uzun dönemli değil kısa ve orta vadeli kararlar almaya yöneliktir. Çizelgeleme problemi taktiksel ve operasyonel kararları içerdiğinden dolayı uygulama düzeyi MİP ve TYK’yı içermektedir. Yerleşim açık bir şekilde problemin içerisine dahil edilmiştir. Çoğu çizelgeleme problemlerinde yerleşimin ve taşımaların çoğunlukla ihmal edilmesine rağmen SİH’lerin yapısı gereği yerleşimin modele dahil edilmesi önem arz etmektedir. Aksi halde genel SİH tanımından uzaklaşılmış olunacaktır. Çalışma bazı noktalarıyla literatürdeki çalışmalardan farklılık göstermektedir. Literatür incelendiğinde SİH’nin çizelgelenmesi ile ilgili matematiksel model geliştirme ve sezgisel model önerme konusunda yetersizlikler olduğu görülmektedir. SİH çizelgeleme problemi ile ilgilenen araştırmacılar toplam çizelgeleme ufkunu dönemlere ayırmış ve her bir operasyonun bu dönem başlarında işleme başlayabileceklerini varsaymışlardır. Bu varsayım önerilen modellerin sistemin gerçek performansını açıklamasına engel olmaktadır. Dönem uzunluğu büyük seçildiğinde sistem performansı daha da kötüleşmekte bunun aksine düşük seçildiğinde de çözüm zamanı uzamaktadır. Herhangi bir işin öncül operasyonu bitmiş olmasına ve ardıl operasyonunu yapacak makinenin boş olmasına rağmen ardıl operasyonun gereksiz olarak dönem başını beklemesi geliştirilen modellerin yetersiz olduğunu göstermektedir. Araştırmacılar tarafından yapılan bir diğer varsayımda bir işin ardışık operasyonlarının ardışık dönemlerde başlaması gerektiğidir. Sanal hücre kavramının anlaşılabilmesi açısından bu varsayım önemli olsa da sistemin genel performansının temsil edilmesi noktasında önerilen modeli yetersiz kılmaktadır. Tez çalışmasındaki önerilen model ise bu varsayımlardan arındırılmış ve daha net sistem performansı sunmaktadır. Ayrıca taşıma zamanlarının da modele dahil edilmesi, tezin literatürdeki mevcut diğer çalışmalardan olan farkını ortaya koymaktadır. 31 4. SİH ÇİZELGELEME PROBLEMİNİN KLASİK ÇİZELGELEME PROBLEMLERİ AÇISINDAN İNCELENMESİ SİH çizelgeleme problemini incelemeden önce bu probleme klasik çizelgeleme problemleri açısından bakılması faydalı olacaktır. Bu çerçevede kısaca çizelgelemenin karar verme sürecindeki etkisinden ve ÜPK işlemleri açısından önemi üzerinde durulacaktır. Çizelgeleme genel olarak sınırlı sayıda kaynağın zaman ekseninde görevlere atanması olarak tanımlanmaktadır. Bir ya da daha fazla amacın en iyilenmesini hedefleyen bir karar verme sürecidir. Kaynaklar bir atölyedeki makineler, bir inşaat sahasındaki işçiler, bir havaalanındaki uçuş pistleri olabilir. Görevler bir üretim sürecindeki operasyonlar, bir havaalanındaki kalkışlar ya da inişler, bir inşaat projesindeki aşamalar olabilir. En iyilenmek istenen amaçlar da çeşitli formlarda olabilir. En çok kullanılan çizelgeleme amaçlarından (ölçütlerinden) birisi en son işin en son makinedeki tamamlanma zamanının en küçüklenmesidir. Bir diğer amaç teslim tarihinden sonra tamamlanan işlerin sayısının en küçüklenmesi olabilir. Çizelgelerin verilen amaçlar üzerinde ne derece etkili olduğu açık olmayabilir. “Rastgele bir çizelgeyi dikkate almak yerine iyi bir çizelge elde etmek için zaman harcamaya değer mi?” sorusu akla gelebilir fakat iyi bir çizelge genellikle sistem performansı üzerinde önemli bir etkiye sahiptir. 4.1. Çizelgelemenin Organizasyon İçerisindeki Yeri ve Önemi Çizelgeleme fonksiyonu bir organizasyon ya da sistem üzerindeki diğer fonksiyonlarla sıkı bir bağlantıya sahip olmak zorundadır. Bu bağlantılar sistemden bağımsız olabilir ya da bir durumdan diğerine çok büyük farklılıklar gösterebilir. Bir imalat sisteminde siparişler serbest bırakılmalı ve teslim tarihleri ile ilgili işlere dönüştürülmelidir. İşler genellikle iş merkezi içindeki makineler tarafından verilen sırada işlenmek zorundadır. İşler o iş için meşgul olan makineler önünde operasyonu başlatabilmek için belirli süre beklemek zorunda kalabilirler. Yüksek önceliğe sahip 32 işler makinelerde işleme diğer işlere göre önce başlayabilirler. Bir üretim sistemi içerisindeki işlem görecek olan işlerin detaylı çizelgelemesi operasyonların kontrolünü ve etkinliğini sürdürebilmek için gereklidir. Çizelgeleme fonksiyonu organizasyon içerisindeki birkaç önemli fonksiyonla daha etkili bir ara yüze sahip olmalıdır. Çizelgeleme işlemleri tüm organizasyon için orta ve uzun vadeli planlama işlemlerinin gerçekleştirildiği üretim planlama sürecinden etkilenir. Bu süreç üst seviyede ürün karışımını ve uzun dönemli kaynak tahsisini eniyilemek için stok seviyelerini, talep tahminlerini ve kaynak ihtiyaçlarını dikkate almalıdır. Bu planlama fonksiyonu tarafından alınan kararlar çizelgeleme üzerinde etkili olabilir. Çizelgeleme ayrıca atölyeden girdiler alır. Atölyede oluşan makine arızalanmaları ya da tahmin edilenden daha uzun işlem zamanları gibi beklenmedik olaylar dikkate alınmalıdır çünkü bu olaylar çizelgeler üzerinde çok büyük etki yaratabilirler. Şekil 4.1 bir imalat sistemindeki bilgi akışını göstermektedir. Üretim planlama, ana üretim çizelgeleme Kapasite durumu Çizelgeleme kısıtları Siparişler, talep tahminleri Miktarlar, teslim tarihleri Malzeme ihtiyaçları, Malzeme planlama, kapasite ihtiyaçları planlama Atölye siparişleri, serbest bırakılma zamanları Çizelgeleme ve yeniden çizelgeleme Çizelgenin performansı Ayrıntılı çizelgeleme Dağıtım Atölye durumu Atölye yönetimi İş yükleme Veri toplama Atölye Şekil 4.1. Bir imalat sistemindeki bilgi akış diyagramı[Pinedo, 1995] 33 Çizelgelemenin ÜPK süreci içerisindeki öneminden bahsettikten sonra Atölye Tipi Çizelgeleme Problemi (ATÇP) üzerinde durulacaktır. Çünkü SİH çizelgeleme problemi açısından oldukça büyük bir önem teşkil etmektedir. 4.2. Atölye Tipi Çizelgeleme Problemi (ATÇP) ATÇP endüstri de en sık kullanılan çizelgeleme problem tipleri arasındadır ve kombinatoriyel eniyileme problemleri içerisindeki en zor problemlerden birisidir [Sönmez ve Baykasoğlu, 1998]. ATÇP’de verilen n adet iş m adet makinede işlenecektir. Her bir j işi nj adet operasyon sırasından o j1 , o j 2 , , o jn j oluşmaktadır. ojh (j işinin h. operasyonunu) önceden tanımlanmış mjh makinesinde operasyon yarıda kesilmeden pjh zaman birimi kadar işlem görecektir. Operasyonlar o j1 , o j 2 , , o jn j öncelik kısıtını ihlal etmeden sırayla işleneceklerdir. ATÇP belirli bir performans ölçütü altında makineler üzerinde uygun bir operasyon sırası oluşturması işleminden oluşur. ATÇP için en çok kullanılan performans ölçütü Cmax yani en son işin en son makinedeki tamamlanma zamanıdır. Cmax amaç fonksiyonu, Cj j işinin tamamlanma zamanını göstermek üzere max(C1,…,Cn) olarak tanımlanabilir. Lawler ve ark. (1982)’nin notasyonunu kullanarak Jm//Cmax probleminin NP-Zor problem sınıfında olduğu Garey ve ark. (1976) tarafından ispatlanmıştır. Yani bu problemi makul zamanlar içerisinde çözebilecek bir algoritma şu ana kadar bulunmamıştır ve bulunması zor gözükmektedir [Garey ve ark., 1976]. ATÇP için birçok yaklaşım önerilmiştir. Dağıtım kuralları, matematiksel programlama, yapay zeka teknikleri benzetim metotları ve sezgiseller kullanılan metotlar arasındadır. Matematiksel programlama kullanılarak bu probleme en iyi çözümün bulunmasının çok zaman alıcı olduğu belirtilmiştir. Bu sebepten birçok araştırmacı meta-sezgisel metotlarının bu problem üzerinde uygulanmasıyla uğraşmışlardır. ATÇP problemi ile ilgili çok geniş bir literatür mevcuttur. 4.3. Esnek Atölye Tipi Çizelgeleme Problemi (EATÇP) ATÇP problemi için kesin çözüm veren bir algoritma olmamasına karşın, araştırma çevrelerinde bu problemin daha karmaşık halini çözmeye çalışma gayreti vardır. Bu 34 problem Esnek Atölye Tipi Çizelgeleme Problemi (EATÇP) olarak bilinmektedir. EATÇP’yi modelleme ve çözme ihtiyacı modern makinelerin artık birbiriyle örtüşen kabiliyetlerinin olmasından kaynaklanmaktadır [Baykasoğlu ve ark., 2004]. Bir operasyonun gidebileceği alternatif rotalar varken bunları dikkate almadan önceden belirlenmiş rotalar üzerinden gidilmesi imalat sisteminin gerçek performansını yansıtmayacaktır. EATÇP ATÇP’nin genelleştirilmiş bir halidir ve ATÇP’nin bütün özelliklerini ve karmaşıklıklarını içermektedir. EATÇP’de geleneksel çizelgeleme problemleri (her bir operasyonun başlama zamanı) haricinde bir de rota politikasını (her bir operasyona hangi makinenin atanacağı) tayin etmek gerekmektedir. EATÇP endüstride çok karşılaşılan bir çizelgeleme problemidir. EATÇP’de, Her bir j işi nj adet operasyon sırasından geçmektedir o j1 , o j 2 , , o jn j . ojh (j işinin h. operasyonu) verilen bir Ajh makine seti içerisinden sadece birinde işlenecektir. ojh operasyonunun i makinesindeki işlem zamanı Pijh (Pijh>0) zaman birimi kadardır. Böylece EATÇP her bir ojh operasyonu için bir makine M o jh Ajh seçmek ve başlama zamanını tjh bulmaktır. EATÇP probleminde iki iş için Bruker ve Schlie (1983) polinomial zamanlı bir algoritma önermişlerdir. Rota seçildiğinde, EATÇP ATÇP’ye dönüşeceği için çizelgeleme ve rotalama kararlarının ayrık bir şekilde değerlendirildiği ilk çalışmalar Akella ve Chong (1984), Bona ve Brandimarte (1990) ve Brandimarte (1993) tarafından yapılmıştır. Daha sonra Jurish (1992) rotalama ve çizelgelemeyi eşzamanlı olarak incelemiştir. Daha sonra (Dauzère-Pérès ve Paulli, 1997), Mastrolilli ve Gambardella (2000), Kacem ve ark. (2002), Xia ve Wu. (2005), Gao ve ark. (2008) problem üzerinde meta-sezgisel metotların kullanılmasıyla ilgili çalışmalar yapmışlardır. SİH çizelgelenmesi probleminde her bir işin rotası farklı olduğu için ve her bir operasyonun içinde alternatif makineler olduğundan problem EATÇP’ye 35 benzemektedir. Buna ek olarak problemin tanımında işlerin partiler halinde geldiği ve partilerin bölünmesine izin verildiğinden bir sonraki alt bölümde parti bölünmesinden bahsedilecektir. 4.4. Parti Bölünmesi Geleneksel çizelgeme problemlerinde, işlerin bölünmediği ve bir işin herhangi bir operasyonunun ardıl makineye gönderilmeden önce öncül makinede tamamlanması gerektiği varsayılır [Glass ve Potts, 1998]. Ancak bir iş birbirinin aynı birçok parçadan oluşuyorsa o işin operasyonlarının ardışık makineler arasında üst üste binmesine müsaade edilerek iş daha küçük alt partilere bölünebilir. Çok aşamalı üretim sistemlerinde işlerin alt partilere ayrılması işine parti bölünmesi adı verilir [Chen ve Steiner, 1998]. Parti bölünmesi kavramı ilk olarak Reiter (1966) tarafından önerilmiştir ve Eniyilenmiş Üretim Teknolojisi (EÜT) ile yakından ilgilidir [Şen ve Benli, 1999]. Parti bölünmesi ile ilgili literatürün çok büyük bir kısmı Cmax’ın en küçüklenmesi ile ilgilidir [Chen ve Steiner, 1999]. Parti bölünmesinin etkisini daha iyi anlayabilmek için bir örnek üzerinde tartışalım. Şekil 4.2’de görüldüğü gibi iki iş ve iki makineli akış tipi bir üretim sistemi olsun. İş 1 ve İş 2 sırasıyla ikiye ve üçe bölünsün. İş 1 ve İş 2’nin makine 1’deki işlem zamanları 6 zaman birimi ve makine 2’deki işlem zamanları ise sırasıyla 4 ve 3 zaman birimi olsun. Şekil 4.2-a parti bölünmesi olmadığında Cmax değeri 15 ancak Şekil 4.2-b partilerin bölündüğü durumda Cmax değeri 13 olmaktadır yani daha iyi bir sistem performansı gözükmektedir. 36 (a) M1 1 2 1 M2 zaman 2 10 6 15 12 (b) M1 1 1 2 1 M2 zaman 3 2 1 5 6 2 2 8 2 2 9 10 11 12 13 Şekil 4.2. İki makineli akış tipi için iki çizelge (sayısal veriler işleri gösteriyor) (a) alt partilerin olmadığı çizelge (çizelge 1); (b) alt partilerin olduğu çizelge (çizelge 2) Genel olarak parti bölünmesinin amacı her bir ürün için alt parti sayılarını, her bir alt partinin büyüklüğünü ve alt partilerin işlem sıralarını bulmaktır. Böylelikle ilgilenilen performans ölçütü en iyilenir [Zhang ve ark., 2005]. Ancak problem genellikle çözülemediği için bu genel amaçtaki bütün faktörler dikkate alınmayabilir. Aşağıdaki terimler parti bölünmesi ile ilgili farklı durumları özetlemektedir. Detaylar için [Kalir ve Sarin, 2001] çalışması incelenebilir. Tek ürün/Çok ürün: Tek bir ürün ya da birden fazla ürünün dikkate alınmasıdır. SİH çizelgeleme probleminde birden fazla ürün üzerinde durulmuştur. Sabit/Eşit/Tutarlı/Değişken alt parti büyüklüğü: Sabit alt parti büyüklüğü tüm ürünler/işler için bütün alt partilerin tüm aşamalarda eşit sayıda parça içerdiği durumu yansıtmaktadır. Eşit alt parti büyüklüğü her bir iş için, alt parti büyüklüklerinin eşit olduğu durumu gösterir. Sabit ve eşit alt parti büyüklükleri arasındaki tek fark sadece birden fazla ürün için olmasıdır. Tutarlı alt parti büyüklüğü bir iş alt parti sayılarının üretim aşamalarından geçerken değişmediği durumlar için kullanılır. Değişken alt parti büyüklüğü alt parti büyüklükleri ile ilgili hiçbir kısıtlamanın olmadığı durumlar için kullanılır. Bu tezde kullanılan alt parti büyüklüğü tutarlı alt parti büyüklüğü şeklindedir. Bir işin alt partilerinin sayısı o işin işleneceği tüm makinelerde (operasyon rotası) aynıdır. 37 Boş Beklemesiz/Boş beklemeli: Boş beklemesiz durumda belirli bir üretim aşamasındaki alt partiler bekleme olmadan ardı ardına işlem görürler. Ancak boş beklemeli durumda alt partiler üretim aşamalarından geçerken beklemeler olabilir. Tezde alt partilerin herhangi bir üretim aşamasında beklemelerin olabileceği varsayılmıştır. Diğer durumda üretim sisteminin gerçek performansı yansıtılmamaktadır. Beklemesiz/Beklemeli Çizelgeler: Beklemesiz çizelgelerde her bir alt parti bir önceki aşamada işlendikten hemen sonra bir sonraki alt partiye aktarıldığı varsayılmaktadır. Beklemeli çizelgelerde ise bir alt parti ardışık üretim aşamaları arasında bekleyebilmektedir. Tezde alt partilerin üretim aşamaları arasında bekleyebileceği kabul edilmiştir. Bağımlı Hazırlık/Bağımsız hazırlık/Hazırlık yok: Eğer bağımlı hazırlık gerekliyse, herhangi bir aşamada hazırlık alt parti mevcut olana kadar başlayamaz. Bağımsız hazırlık için alt partilerin mevcut olup olmamasından bağımsızdır. Bazen de hazırlık zamanları ihmal edilir ya da oluşmaz. Tez çalışmasında parti hazırlık zamanının olmadığı varsayılmaktadır. Kesikli/sürekli alt partiler: Kesikli alt partiler için alt parti büyüklüğünün tamsayı olması gerekmektedir. Sürekli alt partiler için böyle bir kısıtlama yoktur. Tez çalışmasında alt parti büyüklüklerinin kesikli değerler aldığı kabul edilmektedir çünkü üretim yapılan işlerin tamsayı olmaması gibi bir durum yoktur. Birbirine karışan/karışmayan alt partiler: Çok ürünün söz konusu olduğu bir ortamda birbirine karışan alt partilere izin verildiyse, j ürününün alt partilerinin sırası k ürününün alt partileri tarafından yarıda kesilebilir. Birbirine karışmayan alt partilerde, bir ürünün alt partileri başka bir ürünün alt partileri tarafından engellenemez. Tez çalışmasında alt partilerin operasyonların başka bir ürünün alt partileri tarafından kesilmediği varsayılmıştır. 4.5. SİH Çizelgeleme Probleminin Karmaşıklığı Bundan önceki üç bölümde SİH çizelgeleme problemine benzerlik göstermesi açısından kısaca ATÇP’den, EATÇP’den ve parti bölünmesinden bahsedildi. 38 ATÇP’de her bir işin işlem rotası birbirinden farklıdır ve bu problemin NP-Zor problem sınıfında olduğu Gayer ve ark. (1976) tarafından ispatlanmıştır [Gayer ve ark., 1976]. EATÇP’de ise ATÇP’ye ek olarak her bir operasyon için tek makine yerine bir alternatif makineler seti bulunmaktadır. Böylece EATÇP’de operasyonların çizelgelenmesine ek olarak birde operasyonlara makine ataması da dikkate alınacağı için EATÇP, ATÇP’den daha karmaşık bir problemdir. SİH çizelgelenmesi problemi EATÇP probleminin tüm zorluğunu içermektedir. SİH çizelgelenmesi probleminde EATÇP’ye ek olarak parti bölünmesinin de olduğu dikkate alınmıştır. Parti bölünmesi işlemi problemin tipi önemli olmaksızın problemi daha zor hale getirmektedir. Bunlara ek olarak makinelerin arasındaki taşımalarda dikkate alınacağı için SİH çizelgeleme problemi NP-Zor sınıfında bir problem olduğu garanti edilir. Yani problem için kabul edilebilir zamanlarda en iyi sonucu verebilecek bir algoritmanın bulunması şu an için mümkün değildir. 39 5. ÖNERİLEN MATEMATİKSEL MODEL SİH’nin çizelgelenmesi ile ilgili şu ana kadar yapılan çalışmaların tümü Drolet (1989), Mak ve Wang (2002), Mak ve ark. (2005), Mak ve ark. (2007) HİS’ye benzer şekilde SİH’de hücre oluşturmanın önemine değinmişlerdir. Sanal imalat hücresi fikrinin anlaşılmasını artırmak için, toplam çizelgeleme zamanını dönemlere bölmüşlerdir ve bir işin bir operasyonu başladığı zaman ardışık operasyonun bir sonraki dönemde başlaması gerektiğini ve operasyonların sadece dönem başlarında başlayabileceğini varsaymışlardır. Örneğin ojh, j işinin h. operasyonu olduğu düşünülürse ve zaman aralığının 5 saniye olduğu varsayılırsa Şekil 5.1’de görüldüğü gibi etkin olmayan bir şekilde operasyonlar makinelere atanır. Makineler o1,3 o2,2 M3 M2 o1,1 M1 o2,1 0 5 10 o1,2 15 20 25 30 35 40 Zaman (sn.) Makinelerdeki boş beklemeler Şekil 5.1. Toplam çizelgeleme ufkunun zaman aralıklarına bölünmesinin verimsizliği Böyle bir çizelgeleme stratejisi açıkça görüldüğü gibi makineler arasında gereksiz boş beklemelerin oluşmasına neden olmaktadır. Bu sebepten daha etkin bir çizelgeleme modeli geliştirilmesi gerekmektedir. Önerilen matematiksel modelde gereksiz boş beklemeler oluşmayacak ve bir işin ardışık operasyonları çizelgeleme ölçütünü eniyileyecek şekilde öncelik kısıtlarını ihlal etmeden istenilen zaman biriminde başlayabilecektir. Bir sonraki bölümde SİH çizelgeleme probleminin tanımı verilecektir. 5.1. Problemin Tanımı ve Varsayımlar SİH çizelgeleme problemi m adet makine ve n adet işten oluşmaktadır. Her bir j işi nj adet operasyon sırasından geçmektedir o j1 , o j 2 ,, o jn j . ojh (j işinin h. operasyonu) verilen bir Ajh makine seti içerisinden sadece birinde işlenecektir. ojh operasyonunun i makinesindeki işlem zamanı Pijh (Pijh>0) zaman birimi kadardır. İşler partiler halinde 40 üretilmektedir ve j işinin parti hacmi Nj birimdir. Her bir operasyon için birden fazla alternatif makine olduğu için her bir işin parti hacminin alt partilere bölünebileceği dikkate alınmıştır. Böylece bir işin ardışık operasyonların üst üste binmesi söz konusudur. j işinin p alt partisinde üretilecek olan miktar ilgili işin tüm operasyonları için aynıdır. Makinelerin üretim alanı içerisinde farklı noktalara yerleştirildiği dikkate alınmış ve herhangi bir ojh operasyonu i makinesinde tamamlandıktan sonra oj,h+1 operasyonu k makinesinde işlenmeye başlamadan önce dik zaman birimi kadar taşıma süresinin geçmesi gerekmektedir. Böylelikle SİH çizelgeleme problemi ojh operasyonu için bir makine seçmek M o jh Ajh , j işinin p alt partisinde üretilecek olan Vjp miktarını bulmak ve ilgili iş ve alt parti için başlama zamanı tjhp’yi bulmaktır. Problemle ilgili varsayımlar aşağıdaki gibidir. Tüm işlerin çizelgelemeye başlandığında hazır olduğu ve çizelgeleme tamamlanana kadar sisteme başka bir işin gelmediği varsayılmıştır. Tüm işlerin operasyon sıralarının önceden tanımlı olduğu ve problemle ilgili operasyonların işlem zamanları, parti hacimleri, makineler arası taşıma zamanları bilgilerinin bilindiği kabul edilmektedir. Alt parti sayısının problemdeki bütün işler için eşit ve önceden bilindiği kabul edilmektedir. Makinelerde hazırlık zamanı oluşmadığı varsayılmaktadır. Makinelerin yerlerinin değiştirilemeyeceği kabul edilmektedir. Herhangi bir işin bir operasyonu bitmeden diğer bir operasyon başlayamaz. Her bir iş bir makineyi en fazla bir kez ziyaret edebilir. Makine bozulmaları ve bakım politikaları ihmal edilmektedir. 5.2. Karışık Tam Sayılı Programlama (KTSP) Modeli Problemin tanımı ve varsayımları verildikten sonra bu bölümde SİH çizelgelenmesi için geliştirilen Karışık Tam Sayılı Programlama (KTSP) modeli verilecektir. Parametreler i,k : makine sayısı (i,k=1,…,m) j : iş sayısı (j=1,…,n) 41 h : operasyon sayısı (h=1,…,hj) p : alt parti sayısı (p=1,…,L) l :her bir makine için atanan operasyonların sayısı (l=1,…,li) Nj : j işi için üretilecek parti büyüklüğü Pijh : ojh operasyonu için i makinesindeki birim işlem zamanı. dik : i ve k makineleri arasındaki taşıma zamanı. M : çok büyük bir sayı Karar Değişkenleri Cmax : en son işin en son makinedeki tamamlanma zamanı. Vjp : j işinin p alt partisinde üretilecek olan parça miktarı. Yijhp : 1 eğer ojh operasyonunun p. alt partisi için i makinesi seçildiyse, 0 dd. Xijhlp : 1 eğer ojh operasyonunun p. alt partisi i makinesinde l. sırada yapılacaksa, 0 dd. Zikjhp : 1 eğer ojh operasyonu i makinesinde ve oj,h+1 operasyonu k makinesinde yapılacaksa, 0 dd. tjhp : ojh operasyonunun p alt partisi için başlama zamanı. Tmil : i makinesinde l sıradaki işin başlama zamanı. Minimize Cmax (5.1) Modelin amacı Eş. 5.1 en son işin en son makinedeki tamamlanma zamanının en küçüklenmesidir. Cmax değeri ne kadar düşük olursa imalat sistemi içerisindeki makinelerin kullanım oranları daha yüksek olmaktadır. Atölye tipi ortamlarda da bu çizelgeleme ölçütü sıklıkla kullanılmaktadır. Kısıtlar Cmax t jh j p V jp Pijh j M 1 Yijh j p i, j , p (5.2) 42 Eş. 5.2 modeldeki Cmax değerinin sistemdeki tüm işlerin tüm alt partilerine ait son operasyonların bitiş zamanından büyük ya da eşit olması gerektiğini garanti etmektedir. Burada o jh j operasyonunun alternatif makine setleri içerisinden hangisine atanacağı bir karar değişkeni olduğu için Yijh j p ikili değişkenin alacağı değere göre kısıt genelleştirilmiştir. V jp Nj j (5.3) p Eş. 5.3 sistemdeki herhangi bir j işinin tüm alt parti büyüklüklerinin ilgili işin parti büyüklüğüne eşit olması gerektiğini göstermektedir. Alt parti sayıları önceden bilindiği için toplama alt parti indisi üzerinden yapılmaktadır. t jhp V jp Pijh M 1 Yijhp dik Z ikjhp t j ,h 1, p i, k , j , p, h : i k , h h j (5.4) k Eş. 5.4 bir işin herhangi bir alt partisi için ardıl operasyonun en erken öncül operasyonda işlemin tamamlanıp ardıl makineye ilgili makineler arasındaki taşıma zamanı kadar bir süre geçtikten sonra başlayabileceğini göstermektedir. Tmil V jp Pijh Tmi ,l 1 M 1 X ijhlp i, j , h, l , p : l li (5.5) Eş. 5.5 herhangi bir makinede işlenecek ardışık işler için ardıl işin başlama zamanının en erken öncül iş bittikten sonra başlayabileceğini belirtmektedir. Tmil t jhp M 1 X ijhlp i, j , h, l , p (5.6) Tmil t jhp M 1 X ijhlp i, j , h, l , p (5.7) Eş. 5.6 ve Eş.5.7’nin beraber değerlendirilmesi gerekmektedir. Xijhlp değişkeni 1 değerini aldığında yani j işinin h. operasyonu p alt partisi için i makinesinde l. sırada yapılacaksa i makinesindeki l sırasındaki işin j işinin p alt patisine ait h operasyonu 43 olduğunu ve bunların başlama zamanlarının birbirine eşit olması gerektiğini ifade eder. Xijhlp değişkeni model içerisinde çok ayrı bir öneme sahiptir çünkü işlere ait operasyonların başlama zamanlarıyla makinelere atanan operasyonların başlangıç zamanı açısından aynı eksene oturtulmasını sağlamaktadır. Bu değişkenin modele dahil edilmesi bazı doğrusal olmayan kısıt setlerinin modelden kaldırılmasına yaramaktadır. X j h ijhlp 1 i, l (5.8) p Eş. 5.8 herhangi bir i makinesinin l. sırasına en fazla bir operasyon atanabileceğini gösterir. Y ijhp i 1 j , h (5.9) p Eş. 5.9 bir j işinin p alt partisine ait h. operasyonunun alternatif makineler kümesi içerisinden herhangi bir makinede yapılması gerektiğini göstermektedir. X ijhlp Yijhp i, j , h, p (5.10) l Eş. 5.10 denge kısıtıdır ve Yijhp değişkeni 1 değerini alırsa yani j işinin h. operasyonunun p alt partisi i makinesinde yapılacaksa bu operasyon i makinesinde herhangi bir l sırasında yapılmak zorundadır. 2Z ikjhp Yijhp Ykj , h 1, p i, k , j , h, p : h h j (5.11) Z ikjhp Yijhp Ykj , h 1, p 1 i, k , j , h, p : h h j (5.12) Eş. 5.11 ve Eş. 5.12’nin birlikte dikkate alınması gerekmektedir. Bu iki kısıt doğrusallaştırma için kullanılan kısıt setleridir. Z ikjhp değişkeni aslında Yijhp ve Ykj ,h 1, p değişkenlerinin çarpımı olarak sisteme dahil edilmiştir. Doğrusal olmayan 44 terimleri modelden kaldırmak için yukarıdaki kısıtlar sisteme katılmıştır. j işinin p alt-partisi için ardışık operasyonları h ve h+1 sırasıyla i ve k makinelerinde işlenecekse (Yijhp=1 ve Yk,j,h+1,p=1) ancak bu şartlarda Zikjhp değeri 1 olacağını aksi halde 0 olacağını göstermektedir. V jp M Yijhp j , h, p (5.13) i Eş. 5.13 herhangi bir j işinin bir p alt partisi için h. operasyonu herhangi bir makinede yapılacaksa j işinin p alt partisinde üretilecek miktar (Vjp) 0’dan büyük olacaktır aksi halde 0 olacaktır. Cmax 0 (5.14) V jp 0 ve tamsayı j , p (5.15) t jhp 0 j , h, p (5.16) Tmil 0 i, l (5.17) Yijhp 0,1 i, j , h, p (5.18) X ijhlp 0,1 i, j , h, l , p (5.19) Z ikjhp 0,1 i, k , j , h, p (5.20) Eş. 5.14-Eş. 5.20 modeldeki değişkenlerin negatif olmama kısıtlarıdır. 5.3. KTSP Modelinin Performansının Genel Değerlendirmesi Üzerinde çalışılan bir probleme matematiksel model önerildikten sonra aynı probleme bu kez bir meta-sezgisel yaklaşım önermenin nedeni problemin karmaşıklığından dolayı büyük boyutlu problemlerde matematiksel modelin etkin sonuçlar verememesi ve çözüm zamanının çok uzamasıdır. Deneysel çalışma bölümünde çözümlerin ayrıntılı bir analizi yapılacak olmasına karşın problem için neden bir sezgisel algoritma geliştirildiğini göstermek için KTSP modelinin problem seti üzerindeki performansı incelenecektir. 45 Modelin performansını görmek için 720 problemden oluşan çok geniş bir problem seti oluşturulmuştur. Bu problem seti oluşturulurken dikkate alınan parametreler İş Sayısı (İS), Makine Sayısı (MS), Alt Parti Sayısı (APS) ve Taşıma Zamanının İşlem Zamanına oranı (TZ/İZ)’dır. Bu parametrelerden sırasıyla 8, 2, 3 ve 3 seviye seçilerek toplam 8×2×3×3=144 kombinasyon oluşturulmuştur. Her bir kombinasyon için de 5 farklı rassal problem üretilmiş ve toplam 144×5=720 adet rassal problem üretilmiştir. Bu 720 problemin her birinin çözümü için toplam 2 saat süre tanınmıştır. 2 saatlik süre içerisinde en iyi çözüm bulunamadığı takdirde varsa tam sayılı çözüm aranmıştır. Bu süre içerisinde hiçbir çözümün bulunamadığı problemlerde olmuştur. Çizelge 5.1 ve Şekil 5.2 KTSP modelinin ürettiği çözümlerin analizi için konulmuştur. Çizelge 5.1’deki “ÇY” ilgili kombinasyona ait toplam 15 tane problem içerisinde bulunamayan çözümlerin sayısını vermektedir. “EÇ” ifadesi ilgili kombinasyon içinde kaç tanesine en iyi çözümü bulunduğunu göstermektedir. “TÇ” ise ilgili parametre kombinasyonuna ait problemler içinde kaç tanesine tam sayılı çözüm bulunduğunu göstermektedir. 720 problem içerisinde 511 tane tam sayılı çözüm, 119 tanesinde en iyi çözüm bulunmuş 90 tane probleme de 2 saat içerisinde herhangi bir çözüm bulunamamıştır. Bulunan en iyi çözümlerin çok büyük bir kısmı iş sayısının düşük ve alt parti sayısının 1 olduğu yani partilerin bölünmediği durumda bulunmuştur. Ayrıca çözüm bulunamayan problemlerin çok büyük bir kısmı alt parti sayısının 3 olduğu durumlarda görülmüştür. Bu durum alt parti sayısının artışının problemin zorluk derecesini ciddi bir şekilde artırdığını göstermektedir. Böylece 720 problemin sadece 119 tanesinde (%16) en iyi çözümün bulunması problemin matematiksel olarak ifade etmenin yanında kısa zamanda en iyi ya da en iyiye yakın çözümlerin getirilmesi açısından sezgisel bir algoritmanın önerilmesi gerektiğini ortaya koymaktadır. Bu nedenle bir sonraki bölümde GA yaklaşımı sunulacaktır. 46 Çizelge 5.1. KTSP modelinden elde edilen sonuçların çözüm tipleri açısından analizi İş Sayısı Makine Sayısı Alt Parti Sayısı Çözüm Tipi ÇY 2 6 3 2 8 3 2 10 3 3 12 4 3 14 4 3 16 4 3 18 4 3 20 4 Genel Toplam 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 EÇ 15 3 15 3 14 1 15 2 4 11 15 14 2 9 14 10 3 11 6 8 6 8 5 3 5 1 2 1 1 2 90 119 Toplam TÇ 12 15 12 15 1 14 15 13 11 1 2 6 1 5 4 4 9 2 9 15 12 15 15 15 15 15 10 14 15 13 15 15 14 15 15 12 15 15 15 15 15 15 15 15 511 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 720 47 15 Frekanslar 12 9 ÇY 6 EÇ TÇ 3 0 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 2 (MS) 3 (MS) 6 (İS) 2 (MS) 3 (MS) 8 (İS) 2 (MS) 3 (MS) 10 (İS) 3 (MS) 4 (MS) 3 (MS) 4 (MS) 12 (İS) 14 (İS) Param etre Seviyeleri 3 (MS) 4 (MS) 16 (İS) 3 (MS) 4 (MS) 18 (iS) 3 (MS) 4 (MS) 20 (İS) Şekil 5.2. KTSP modelinde elde edilen sonuçların grafiksel olarak yorumlanması 48 6. SİH’NİN ÇİZELGELENMESİ İÇİN GENETİK ALGORİTMA (GA) YAKLAŞIMI Modelin karmaşıklığının çok fazla olmasından dolayı geliştirilen KTSP modelinin büyük boyutlu problemlerde yetersiz kaldığı bir önceki bölümde gösterilmişti. Bu amaçla probleme kısa zamanda iyi çözümler verebilecek bir meta-sezgisel algoritmanın geliştirilmesi gerektiği açıktır. GA yaklaşımı ilk olarak Holland (1975) tarafından literatüre dahil edilmiştir. GA birçok kombinatoriyel eniyileme problemlerinin çözümündeki etkileyici performansından dolayı sık bir şekilde kullanılmaktadır. Bu performansından dolayı SİH’nin çizelgelenmesinde de kullanılacaktır. GA genellikle tüm bireyleri içeren (kromozom olarak da bilinir) rassal olarak üretilmiş başlangıç yığını ile çözüme başlar. Önceden tanımlanmış bir nesil süresi boyunca çözümler, evrimsel teoriyi taklit amacıyla geliştirilmiş çaprazlama ve mutasyon operatörleriyle iyileştirilmeye çalışılır. Algoritma her bir nesil sonunda en iyi bireyleri tutmayı hedeflemektedir. 6.1. Kromozom Gösterimi Kromozom gösterimi uygun bir bireyin temsil edilmesi açısından son derece önemlidir. Etkin olmayan ya da problemin yapısına çok uygun olmayan bir gösterim algoritmanın performansının düşmesine ve hantallaşmasına neden olabilir. SİH’nin çizelgelenmesi problemi operasyonlara hangi makinelerin atanacağı, operasyonların çizelgelenmesi ve her bir işin alt partisinde ne kadar parçanın üretileceği kararlarının birleşiminden oluşmaktadır. Çalışmada bir kromozom 4 vektörden oluşmaktadır. (i) makine atama vektörü (burada v1 olarak adlandırılmıştır), (ii) operasyon sıra vektörü (burada v2 olarak adlandırılmıştır), (iii) ilgili operasyonun hangi alt partiye ait olduğunu gösteren vektör (burada v3 olarak adlandırılmıştır), (iv) ilgili operasyona ait alt parti için ne kadar parça üretileceğini gösteren vektör (burada v4 olarak adlandırılmıştır). 49 Bir temsili örnek üzerinden gitmek kromozomun nasıl oluşturulduğunu anlamak açısından faydalı olacaktır. Varsayalım ki çizelgelenecek 4 iş var ve A, B, C ve D olmak üzere 4 farklı makine tipi mevcut. Buna ek olarak alt parti sayısının da 2 olarak belirlendiğini düşünelim. Makine tipleri A, B, C ve D sırasıyla 2, 3, 2 ve 2 adet makineden oluşmaktadır. Çizelge 6.1 makine tiplerini ve her bir makine tipine ait makine numaralarını göstermektedir. Çizelge 6.2 ise her bir iş için parti büyüklüklerini ve operasyon sıralarını göstermektedir. Çizelge 6.1. Makine tipleri ve her bir makine tipine ait makineler Makine tipi A B C D Makine numarası 1,2 3,4,5 6,7 8,9 Çizelge 6.2. İşlerin parti büyüklükleri ve operasyon sıraları İş numarası 1 2 3 4 Parti Hacmi 24 32 13 9 Operasyon sırası (C)(A) (A)(B)(C) (B)(C)(D) (D)(A) Her bir makine atama vektöründe v1(r), r. pozisyona yerleştirilmiş operasyon için atanan makineyi göstermektedir. Şekil 6.1 makine atama vektörünü göstermektedir. Kromozom uzunluğu toplam operasyon sayısı ile alt parti sayısının çarpımına eşittir. Örnek problemde toplam 10 adet operasyon olduğu için ve alt parti sayısı da 2 olarak verildiği için kromozom uzunluğu 10×2=20’dir. Şekil 6.1’de örneğin, 4. pozisyon birinci alt parti için o2,2 operasyonunu göstermektedir ve bu operasyon için üç makine atanabilir bunlar makine 3, makine 4 ve makine 5’dir. o2,2 operasyonuna ikinci alt parti için atanan makinede 14. sıradaki 3 numaralı makinedir. Permütasyon tipi gösterim operasyon sıralarını göstermek için uygun bir yol gibi görünebilir fakat öncelik ilişkilerinden dolayı üretilecek çözümler uygun çözüm olmayabilir. Atölye tipi çizelgeleme problemi için Gen ve ark. (1994) alternatif bir 50 yol önermişlerdir: Her bir operasyonu kendi bağlı bulunduğu iş numarası ile göstermekte ve daha sonra bunları verilen bir kromozomda ortaya çıkış sırasına göre yorumlamaktadırlar. Bu metot, SİH’nin çizelgelenmesinde operasyon sıra vektörünü göstermek için kullanılabilir. Her bir j işi nj sıradaki operasyonu göstermek için, alt parti sayısı ile nj değerinin çarpım sayısı kadar kromozomda gözükmektedir. Örnek olarak Şekil 6.2’de gösterilen operasyon sırası aşağıda gösterilen sıralı operasyon listesi şeklinde yorumlanır: (o3,1)2→ (o2,1)1→ (o4,1)2→ (o4,1)1→ (o1,1)1→ (o3,1)1→ (o2,1)2→ (o1,2)1→ (o3,2)1→ (o4,2)1→ (o2,2)1→ (o3,2)2→ (o2,2)2→ (o2,3)2→ (o1,1)2→ (o3,3)2→ (o3,3)1→ (o2,3)1→­(o4,2)2→ (o1,2)2 (oj,h)p: j işinin p. alt partisine ait h. operasyonunu göstermektedir. Kromozomdaki üçüncü vektör (v3(s)) ilgili operasyonun hangi alt partiye ait olduğunu göstermektedir. Dördüncü vektör ise ilgili operasyonun ilgili alt partisi için atanacak alt parti büyüklüğünü göstermektedir. Örnek problemde birinci iş (V1,1=15 ve V1,2=9), ikinci iş (V2,1=20 ve V2,2=12), üçüncü iş (V3,1=10 ve V3,2=3) ve dördüncü iş (V4,1=4 ve V4,2=5) olarak alt parti büyüklükleri belirlenmiştir. Vj,p: j işinin p alt partisinden üretilecek miktar. Pozisyon: r 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Operasyon o1,1 o1,2 o2,1 o2,2 o2,3 o3,1 o3,2 o3,3 o4,1 o4,2 o1,1 o1,2 o2,1 o2,2 o2,3 o3,1 o3,2 o3,3 o4,1 o4,2 Makine Atama: v1(r) 6 2 2 4 7 5 6 8 9 1 7 2 1 3 7 4 7 9 8 2 Şekil 6.1. Makine atama vektörünün gösterimi Pozisyon: öncelik s 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Operasyon sırası: v2(s) 3 2 4 4 1 3 2 1 3 4 2 3 2 2 1 3 3 2 4 1 Atanan alt parti: v3(s) 2 1 2 1 1 1 2 1 1 1 1 2 2 2 2 2 1 1 2 2 Alt parti hacmi: v4(s) 3 20 5 4 15 10 12 15 10 4 20 3 12 12 9 3 10 20 5 9 Şekil 6.2. Operasyon sırası, atanan alt parti numarası ve alt parti hacmi vektörlerinin gösterimi 51 Bu tip bir kromozom gösterimi sayesinde her üretilen kromozom daima uygun çözüm sırasını temsil eder ve kodlama alanı permütasyon tipi gösterime göre oldukça azalır. Belirli sayıda başlangıç çözümü dört vektörlü gösterime sadık kalınarak rassal olarak üretilmiştir. Daha sonra, deşifreleme işlemi kromozomları SİH çizelgeleri haline dönüştürür ve genetik operatörler bize çözüm kalitesini artırmak için yardımcı olurlar. 6.2. Kromozomların SİH Çizelgelerine Dönüştürülmesi ve Yeniden Sıralanması Genel olarak bir kromozom operasyonlar arasına gereksiz bekleme zamanları eklenebileceğinden sınırsız sayıda çizelgeye dönüştürülebilir. Bu çalışmada operasyonlar mümkün olduğunca sola doğru sıkıştırılacaktır. Genel olarak bir operasyonun başlama zamanı makineler üzerindeki operasyon sıralarını değiştirmeden ve başka bir operasyonun başlama zamanını geciktirmeden daha erkene alınamıyorsa böyle bir çizelgeye aktif çizelge denir. Ancak bir operasyonun başlama zamanı makineler üzerindeki operasyon sıralarını değiştirerek erken başlatılamıyorsa bu çizelgelere de yarı aktif çizelge denir. Baker (1974) Cmax gibi bilinen bir performans ölçütü dikkate alındığında en iyi çizelgenin aktif çizelgeler arasından birisi olduğunu göstermiştir. Burada önerilen yeniden sıralama mekanizması ile yapılan işlem de kromozomları bir aktif çizelge haline dönüştürmektir. Aynı alt parti için, aynı işin operasyonları arasındaki öncelik kısıtlarından dolayı, bir makine üzerindeki operasyonlar arasında boş bekleme zamanları olabilir. Diyelim ki bj,h, oj,h operasyonunun başlangıç zamanı ve cj,h de oj,h operasyonunun tamamlanma zamanı olsun. oj,h operasyonu ancak öncülü olan oj,(h-1) operasyonu bittikten sonra işlemine başlayabilir. t iB de başlayan ve t iE de biten verilen bir [t iB , t iE ] zaman aralığında oj,h operasyonunu i makinesine yerleştirmek için; 52 B j ,h max{t iB , c j ,h } if h 2 t iB if h 1 (6.1) eğer oj,h operasyonunun başlangıcından zaman aralığının bitimine kadar oj,h için yeterli boşluk varsa [t iB , t iE ] aralığında operasyon yapılacaktır yani; max{t iB , c j ,( h 1) } if h 2 t B if h 1 t i Pj ,h E i (6.2) Önerilen deşifreleme yapısı ile her bir operasyon, sıra vektöründe izlendiği sırayla ilgili makinelere birer birer atanacaktır. oj,h operasyonu i makinesine çizelgelenirken, i makinesinde o ana kadar atanmış olan işler soldan sağa doğru en erken mevcut zaman aralığını bulmak için kontrol edilir. Eğer böyle bir zaman aralığı mevcutsa, oraya atanır, aksi halde i makinesinin sonuna atanır. Bu prosedür Şekil 6.3’de gösterilmektedir. (o3,1)1 Makine3 Makine2 (o3,2)1 (o1,2)1 (o2,1)1 (o1,2)1 Makine1 (o1,1)1 1 2 3 4 5 6 7 8 9 10 Zaman Şekil 6.3. Yeniden sıralama metodunun Gantt şeması üzerinde gösterimi Önerilen deşifreleme ve yeniden sıralama metodu bir operasyonun atanacağı makine üzerindeki en erken zaman aralığını aramasına olanak sağlar. Böylece operasyon sıra vektöründe v operasyonundan sonra gelen bir r operasyonu v operasyonundan daha önce çizelgelenebilir. Ebeveynlerden gelen kalıtsal mirasın yeni bireylere aktarılması için operasyon sıra vektörünün ilgili deşifrelenmiş çizelgedeki sıraya uygun olarak yeniden sıralanması gerekmektedir. 53 Çaprazlama ve mutasyon operatörleri kromozoma uygulanmadan önce kromozomdaki operasyon sırası deşifrelenmiş çizelgedeki operasyonların başlama zamanına göre yeniden sıralanır. 6.3. Çaprazlama Operatörü Gen ve ark. (1994)’nın gösteriminde operasyon sıra vektöründeki her bir gen direkt olarak bir işin operasyonunu göstermiyor ancak içerik tabanlı bir operasyona işaret ediyordu. Bu yüzden, çaprazlama operatörü için ebeveynlerin çözümlerini taşıyan operasyon sırasına sahip çocukların oluşturulması çok zordur. Kalıtımı güçlendirmek için Gen ve ark. (1994)’nın gösterimindeki operasyon sıra vektörü permütasyon tipi gösterime dönüştürülmüştür. Herhangi bir operasyonu bağlı bulunduğu iş numarası ve operasyon sırasıyla göstermek doğal olsa da, bir operasyon Şekil 6.4’de görüldüğü gibi sabit ID yardımıyla da gösterilebilir. Permütasyon sırasında operasyonlar öncelik sıralarına göre listelenir. Şekil 6.2’deki operasyon sırası Şekil 6.5’de gösterilen permütasyon gösterim tipine dönüştürülebilir. Sabit ID (r) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Operasyon o1,1 o1,2 o2,1 o2,2 o2,3 o3,1 o3,2 o3,3 o4,1 o4,2 o1,1 o1,2 o2,1 o2,2 o2,3 o3,1 o3,2 o3,3 o4,1 o4,2 Atanan alt parti: v3(r) 2 1 2 1 1 1 2 1 1 1 1 2 2 2 2 2 1 1 2 2 Şekil 6.4. Her bir operasyon için sabit ID gösterimi 2 3 Operasyon sırası: v2(s) 16 3 Atanan alt parti: v3(s) 2 1 19 9 2 1 Pozisyon: öncelik s 1 4 5 6 7 1 6 13 1 1 2 8 9 10 11 12 13 14 15 16 17 18 19 20 2 7 10 4 17 14 15 11 18 8 5 20 12 1 1 1 1 1 2 2 2 2 2 1 2 2 İşaret edilen operasyon o3,1 o2,1 o4,1 o4,1 o1,1 o3,1 o2,1 o1,2 o3,2 o4,2 o2,2 o3,2 o2,2 o2,3 o1,1 o3,3 o3,3 o2,3 o4,2 o1,2 Şekil 6.5. Operasyon sıra vektörünün permütasyon tipinde gösterimi Kısmi haritalanmış, sıralı, çevrim gibi ve daha birçok çaprazlama operatörü permütasyon tipi gösterim için önerilmiştir. Bu çalışmada operasyon sıra vektörü için sıralı çaprazlama operatörü kullanılacaktır. 54 Ebeveyn 1 16 3 19 9 1 6 13 2 7 10 4 17 14 15 11 18 8 Yeni birey 9 11 3 19 1 6 13 2 7 10 4 17 14 15 16 12 8 20 5 18 Ebeveyn 2 6 13 9 10 11 14 7 3 19 1 5 20 12 4 16 12 8 15 2 17 20 5 18 Şekil 6.6. Operasyon sırası üzerinde sıralı çaprazlama operatörünün gösterimi Sıralı çaprazlama operatörünün adımları aşağıdaki gibidir: Adım 1: Bir ebeveynden bir alt küme oluşturmak için iki tane geni rassal olarak seç. Adım 2: Bu ebeveynden alınan alt kümeyi aynı pozisyonlarda yeni bireye kopyala. Adım 3: Çocuğun operasyon vektöründeki atanmamış pozisyonlara atama yapmak için, ikinci ebeveyndeki tüm operasyonları soldan sağa kontrol et. Eğer ilgili operasyon birinci ebeveyndeki alt kümeden gelmişse, ikinci ebeveynin operasyon sırasındaki bir sonraki operasyona geç. Aksi halde, ikinci ebeveynden gelen ilgili operasyonu yeni bireyin operasyon vektöründeki ilgili pozisyonuna yerleştir. İkinci ebeveynden gelen operasyonlar, yeni bireyin tam bir birey olması için gerekli operasyonlardır. Bu prosedür Şekil 6.6’da görülmektedir. Şekil 6.6’da üretilen yeni bireyin operasyon sırası aşağıdaki gibi olacaktır: (o4,1)1→ (o1,1)2→ (o2,1)1→ (o4,1)2→ (o1,1)1→ (o3,1)1→ (o2,1)2→ (o1,2)1→ (o3,2)1→ (o4,2)1→ (o2,2)1→ (o3,2)2→ (o2,2)2→ (o2,3)2→ (o3,1)2→ (o1,2)2→ (o3,3)1→ (o4,2)2→­(o2,3)1→ (o3,3)2 Uygulanan çaprazlama operatöründe yukarıda da görüldüğü gibi 12. pozisyondaki (o3,2)2 operasyonu ile 15. pozisyondaki (o3,1)2 operasyonları öncelik kısıtlarını ihlal etmektedir. Bu sebepten çaprazlama operatöründe üretilen sonuçlar bir tamir mekanizmasına girmekte ve oluşturulan yeni birey aşağıdaki gibi uygun çözüm şekline getirilmektedir. Bu mekanizma Şekil 6.7‘de gösterilmektedir. 55 Tamir öncesi uygun 9 11 3 19 1 olmayan çözüm 6 13 2 7 10 4 17 14 15 16 12 8 20 5 18 Tamir sonrası uygun çözüm 6 13 2 7 10 4 16 14 15 17 12 8 20 5 18 9 11 3 19 1 Şekil 6.7. Çaprazlama operatöründe tamir mekanizmasının gösterimi Makine atama vektörü için geliştirilen çaprazlama operatörü operasyon sırası için geliştirilen çaprazlama operatörü ile ilişkilidir. Yeni bireydeki operasyon hangi ebeveynden geldiyse yeni bireyde ilgili operasyona atanan makine operasyonun geldiği ebeveyndeki atanan makine olmaktadır. Yeni bireydeki atanacak alt parti büyüklükleri belirlenirken şu şekilde bir yol izlenmiştir: Herhangi bir işin belirli bir alt parti büyüklüğü atanırken her iki ebeveynde ilgili işin ilgili alt partisine ait parti büyüklüklerinin ortalaması alınarak yeni bireye atanmaktadır. Sıralı çaprazlama operatörü tarafından oluşturulan yeni bireyin operasyon sıra vektörü yeni bireyler yığına dahil edilmeden önce her bir operasyonu ilgili iş numarasına çevirerek yeniden Gen ve ark. (1994)’nın gösterimine dönüştürülür. 6.4. Mutasyon Operatörü Mutasyon operatörü ebeveynlerinden bir miktar farklı yeni bireyler üretmek için uygulanmaktadır. Bu çalışmada gen tabanlı mutasyon uygulanmıştır. Makine atama vektörleri için gen tabanlı mutasyon her hangi bir r genini (1≤r≤N) rassal olarak seçer. Sonra, mutasyon operatörü tarafından seçilen gendeki operasyon için mevcut makinelerden farklı bir atama yapılır. Operasyon sıra vektörleri için gen tabanlı mutasyon belirli bir olasılıkla herhangi bir s (2≤s≤N) genini rassal olarak seçer. s geni için, v2(s-1) ile v2(s) yer değiştirir. 6.5. Alt Parti Büyüklüklerinin Belirlenmesi SİH’nin çizelgelenmesinde karar değişkenlerinden birisi de alt parti sayısının birden büyük olduğu durumlarda alt parti büyüklüklerinin belirlenmesidir. Teorik olarak her bir alt partiye atanan parça miktarlarının birerli değişimleri ile amaç fonksiyonu değerinin alacağı değerlerin yeniden hesaplanması gereklidir. Ancak bu işlem 56 sezgisel algoritmaların doğasına uygun olmadığından ve hesaplama zamanını artıracağından aşağıdaki gibi bir metot uygulanmıştır. Algoritmanın başında rassal çözümler üretilirken her bir iş için parti büyüklüğü alt partiler arasında eşit olarak dağıtılmıştır. Yeni üretilen bir birey çaprazlama ve mutasyon operatörlerine tabi tutulduktan sonra ilgili operasyon sırası ve atanan makineler değiştirilmeden sadece alt parti büyüklükleri değiştirilerek o birey için daha iyi bir amaç fonksiyonu değeri elde edilip edilemeyeceği aranmıştır. Deneysel çalışma kısmında da görüleceği gibi herhangi bir işin parti sayısı en az 5 (k) olacağı kabul edilmiştir. Bu sebeple bir işin parti sayısının 5’li gruplara ayrılacağı düşünülmüştür. Alt parti sayısının 2 olduğu durumda oluşacak senaryo sayısı k+1 (6) kadar olmaktadır. Ancak alt parti sayısının 3 olduğu durumda oluşacak senaryo sayısı (k+2)×(k+1)/2 (7×6/2=21) kadar olmaktadır. Buradan da görülebileceği gibi alt parti sayısı arttığında oluşacak senaryo sayısı çok hızlı bir artış göstermektedir. Çizelge 6.3 ve Çizelge 6.4 sırasıyla alt parti sayısının 2 ve 3 olduğu durumlar için alt parti büyüklüklerini vermektedir. Çizelge 6.3. 1 nolu iş için alt parti sayısının 2 olduğu 6 senaryo için alt parti büyüklükleri Senaryolar 1. alt parti büyüklüğü 2. alt parti büyüklüğü 1. Senaryo V1,1=24×0/5=0 V1,2=24×5/5=24 2. Senaryo V1,1=24×1/55 V1,2=24×4/519 3. Senaryo V1,1=24×2/510 V1,2=24×3/514 4. Senaryo V1,1=24×3/514 V1,2=24×2/59 5. Senaryo V1,1=24×4/519 V1,2=24×1/55 6. Senaryo V1,1=24×5/5=24 V1,2=24×0/5=0 57 Çizelge 6.4. 1 nolu iş için alt parti sayısının 3 olduğu 21 farklı senaryo için alt parti büyüklükleri Senaryolar 1. alt parti büyüklüğü 2. alt parti büyüklüğü 3. alt parti büyüklüğü 1. Senaryo V1,1=24×0/5=0 V1,2=24×0/5=0 V1,3=24×5/5=24 2. Senaryo V1,1=24×0/5=0 V1,2=24×1/55 V1,3=24×4/519 3. Senaryo V1,1=24×0/5=0 V1,2=24×2/510 V1,3=24×3/514 4. Senaryo V1,1=24×0/5=0 V1,2=24×3/514 V1,3=24×2/510 5. Senaryo V1,1=24×0/5=0 V1,2=24×4/519 V1,3=24×1/55 6. Senaryo V1,1=24×0/5=0 V1,2=24×5/5=24 V1,3=24×0/5=0 7. Senaryo V1,1=24×1/55 V1,2=24×0/5=0 V1,3=24×4/519 8. Senaryo V1,1=24×1/55 V1,2=24×1/55 V1,3=24×3/514 9. Senaryo V1,1=24×1/55 V1,2=24×2/510 V1,3=24×2/59 10. Senaryo V1,1=24×1/55 V1,2=24×3/514 V1,3=24×1/55 11. Senaryo V1,1=24×1/55 V1,2=24×4/519 V1,3=24×0/5=0 12. Senaryo V1,1=24×2/510 V1,2=24×0/5=0 V1,3=24×3/514 13. Senaryo V1,1=24×2/510 V1,2=24×1/55 V1,3=24×2/59 14. Senaryo V1,1=24×2/510 V1,2=24×2/59 V1,3=24×1/55 15. Senaryo V1,1=24×2/510 V1,2=24×3/514 V1,3=24×0/5=0 16. Senaryo V1,1=24×3/514 V1,2=24×0/5=0 V1,3=24×2/510 17. Senaryo V1,1=24×3/514 V1,2=24×1/55 V1,3=24×1/55 18. Senaryo V1,1=24×3/514 V1,2=24×2/510 V1,3=24×0/5=0 19. Senaryo V1,1=24×4/519 V1,2=24×0/5=0 V1,3=24×1/55 20. Senaryo V1,1=24×4/519 V1,2=24×1/55 V1,3=24×0/5=0 21. Senaryo V1,1=24×5/5=24 V1,2=24×0/5=0 V1,3=24×0/5=0 6.6. Seçim Önerilen GA yaklaşımında, seçim işlemi hem ebeveynlerin hem de yeni üretilen bireylerin kurtulmak için eşit şansa sahip oldukları geniş bir yığın havuzunda yapılmaktadır. Direkt uygunluk tabanlı yaklaşımın tartılama probleminin üstesinden gelebilmek için sıralı secim uygulanmıştır. Metot gayet basittir: yığındaki tüm bireyleri dikkate alan amaç fonksiyonları üzerinde performanslarına göre en iyiden en kötüye sırala ve ranklarına göre bu çözümlerin hepsine bir seçilme olasılığı ata. Her bir nesilde, belirli sayıdaki en iyi çözüm tutulacak ve geri kalan bireyler bir 58 sonraki nesle aktarılabilmek için rulet çemberiyle seçilecektir. Önerilen GA yaklaşımının çatısı Şekil 6.8’de verilmektedir. prosedür: Genetik Algoritma girdi: HİS veri seti, GA parametreleri çıktı: optimale yakın bir çizelge başla t←0; Dört vektör gösterimli P(t)’yi başlat; Deşifreleme metoduyla eval(P) için uygunluk değerini hesapla; Operasyon başlangıç zamanına göre operasyon sırasını yeniden düzenle; durdurma kriteri sağlanmamışsa C(t)’yi elde etmek için sıralı çaprazlama operatörüyle P(t) yi çaprazla; C(t)’yi elde etmek için gen tabanlı mutasyonla P(t) yi mutasyona uğrat; Deşifreleme metoduyla eval(P(t), C(t)) uygunluk değerini hesapla; P(t) ve C(t) den karışık örnekleme (mixed sampling) ile P(t+1)’i seç. Operasyon başlangıç zamanına göre operasyon sırasını yeniden düzenle; t←t+1; bitir çıktı optimale yakın bir çizelge; bitir Şekil 6.8. Önerilen genetik algoritma yaklaşımının yapısı 59 7. DENEYSEL ÇALIŞMA Deneysel çalışma rassal olarak üretilmiş çok geniş bir veri seti üzerinde yapılmıştır. Test problemlerinin üretilmesinde kullanılan parametreler ve seviyeleri Çizelge 7.1’de görülmektedir. Çizelge 7.1. Deneysel çalışmada kullanılan parametreler ve seviyeleri Parametreler İş Sayısı Parametre seviyeleri Seviye sayısı 6, 8, 10, 12, 14, 16, 18, 20 8 2 Alt parti sayısı İş sayısı 6, 8, 10 için 2 ve 3 İş sayısı 12, 14, 16, 18, 20 için 3 ve 4 1, 2, 3 Taşıma zamanının işlem zamanına oranı 0.5, 1, 2 3 Makine sayısı 3 İş sayısı diğer tüm çizelgeleme problemlerinde olduğu gibi problemin karmaşıklığını belirleyen en önemli parametrelerden biridir ve bu parametre için 8 farklı seviye belirlenmiştir. Makine tipi sayısı ise iş sayısının yarısı olarak belirlenmiştir. Örneğin iş sayısı 6 olan tüm problemlerde makine tipi sayısının 3 olduğu kabul edilmiştir. Her bir makine tipine ait en fazla makine sayısı için iş sayısı boyutuna göre 2 farklı seviye belirlenmiştir. Alt parti sayısı da dikkate alınması gereken parametrelerden biridir ve bunun için de 3 farklı seviye belirlenmiştir. Problemde taşıma zamanları da dikkate alındığı için bu zamanları da bir eksene dayandırmak gerekmektedir. Bunun için taşıma zamanının işlem zamanına oranı temel alınmış ve bunun için de 3 farklı seviye seçilmiştir. Böylece 8×2×3×3=144 adet problem kombinasyonu mevcuttur. Her bir problem kombinasyonu için de 5 farklı problem üretilmiş ve toplam 144×5=720 adet problem rassal olarak üretilmiştir. Böylesine geniş bir problem setinin çözümü için gerekli olan prosedür Şekil 7.1’de verilmiştir. 60 Her bir parametre düzeyi için MS Excel’de makro kullanarak test problemlerinin rassal olarak üretilmesi ve dosyalara yazdırılması Üretilen her bir test probleminin okunup gerekli KTSP modelinin GAMS kodu haline C++ kullanılarak dönüştürülmesi Test problemlerinin çözümü için C++’da GA modelinin geliştirilmesi C++’da tasarlanan bir kullanıcı ara yüzü ile problemlerin ardışık olarak seri bir şekilde çözülmesi Elde edilen KTSP modeli ile GA model sonuçlarının MS Excel’de yorumlanması ve raporlanması Şekil 7.1. Deneysel çalışmanın akış şeması Problem setinin rassal üretimi için Excel Makroları kullanılmıştır. Ayrıntılar için Ek1’i inceleyiniz. Geliştirilen KTSP modelleri GAMS/Cplex 22.5 paket programında çözülmüştür. Ayrıntılar için Ek-2’yi inceleyiniz. Deneyler Intel Core 2 Duo 2.33 GHz işlemcili 1.0 GB Ram özelliklerine sahip kişisel bilgisayarda yapılmıştır. Test problemlerinin üretilmesinde işlem zamanları alt sınırı 2 ve üst sınırı 10 zaman birimi olan düzgün dağılıma uygun olarak üretilmiştir. İşlerin parti büyüklükleri alt sınırı 5 ve üst sınırı 40 olan düzgün dağılıma uygun olarak üretilmiştir. İşlerin operasyon sıraları rassal olarak üretilmiştir ve birbirlerinden farklıdır. İşlerin geçeceği operasyon sayıları ise alt sınırı 2 ve üst sınırı ilgili problem setine ait makine tipi sayısı arasında düzgün dağılıma uygun olarak üretilmiştir. KTSP modelinin en iyi çözümü bulması için 2 saat süre ayrılmıştır. 2 saat içerisinde en iyi çözüm bulunmadığı takdirde o ana kadar bulunmuş tamsayılı çözüm (üst sınır) karşılaştırma olarak verilmiştir. 61 GA modeli ise Borland C++ programlama dilinde geliştirilmiştir. Ayrıntılar için Ek3’ü inceleyiniz. Deney koşulları sabit tutularak, GA modeli de Intel Core 2 Duo 2.33 GHz işlemcili 1.0 GB Ram özelliklerine sahip kişisel bilgisayarda çalıştırılmıştır. GA’nın olasılıklı yapısından dolayı tutarlı sonuçlar elde etmek için her bir problem 5 kez çalıştırılmıştır. GA’da kullanılan parametreler uygun bir zaman aralığında tatmin edici sonuçlar elde etmek üzere deneysel olarak ayarlanmıştır. Problem boyutunun büyüklüğüne göre yığın hacmi 2000 ile 40000 arasında değişmektedir. Nesil sayısı ise tüm problemler için sabit tutulmuş ve 1000 olarak seçilmiştir. Bundan sonraki çizelge ve şekiller tüm problemler üzerinde KTSP modeli ile GA modelinin karşılaştırma analizleri için verilmiştir. Çizelge 7.2, Çizelge 7.3, Çizelge 7.4 ve Çizelge 7.5’deki # deney numarasını, n toplam iş sayısını, q ilgili deney için her bir makine tipine ait en büyük makine sayısını, L alt parti sayısını, TZ taşıma İZ zamanının işlem zamanına oranını, ÜS KTSP modeli için bulunan en iyi tamsayılı çözümün amaç fonksiyonu (Cmax) değerini yani üst sınır değerini, AS KTSP modeli için Cplex çözücüsünün bulduğu alt sınır değerini göstermektedir. ÜS AS (%) KTSP modeli için bulunan üst sınır ile alt sınır arasındaki sapmayı göstermektedir ve Eş. 7.1’deki gibi hesaplanmaktadır: ÜS AS (%) ÜS AS 100 ÜS (7.1) CPU1 ilgili deney numarası için KTSP modelinin saniye cinsinden çözüm zamanını göstermektedir. YığHac GA yaklaşımı için seçilen yığın hacmini göstermektedir. AF(ort) GA’nın 5 çalıştırma sonunda amaç fonksiyonu değerlerinin ortalamasını, AF(enk) ise bu 5 çalıştırma sonundaki en küçük amaç fonksiyonu değerlerini göstermektedir. CPU2 ise GA’nın 5 çalıştırma sonundaki ortalama çalıştırma AF ( ort ) (%) GA modeli ile KTSP modeli zamanını saniye cinsinden göstermektedir. ÜS çözümleri arasındaki farkın % cinsinden ifadesidir ve Eş. (7.2)’deki gibi hesaplanmaktadır: 62 AF ( ort ) ÜS (%) AF (ort ) ÜS 100 AF (ort ) (7.2) Daha önce de belirtildiği gibi her bir deneyden 5 farklı problem üretilmiştir ve tablolardaki değerler bu beş tane problemin ortalamasıdır. Çizelge 7.2 iş sayısının 6 ve 8 olduğu deneyler için verilmiştir ve incelendiğinde alt parti sayısının 1 olduğu toplam 12 deneyin hepsinde ÜS AS (%) değeri 0’ a eşittir yani en iyi çözümler bulunmuştur. En iyi çözümlerin bulunduğu deneyler koyu olarak gösterilmiştir. Ancak alt parti sayısının 2 olduğu durumlarda ÜS AS (%) değerleri çok yükselmekte hatta alt parti sayısı 3’e çıktığında iş sayısı çok küçük olsa da sapma değerleri çok artmaktadır. Bu durum parti bölünmesinin problemi ne kadar zorlaştırdığını ortaya koymaktadır. 8. ve 16. deneylere KTSP modeli alt sınır değeri dahi bulamamıştır. Paralel şekilde çözüm zamanları da (CPU1) alt parti sayısının 2 ve 3 olduğu durumlarda bir hayli yükselmektedir. Alt parti sayısının 1 olduğu toplam 12 deneyin 12’sinde de GA en iyi sonuçlara ulaşmıştır. Bu sonuç GA’nın probleme iyi sonuç getirebilmesi açısından güvenilirliğini de ortaya koymaktadır. Alt parti sayısının 2 ve 3 olduğu durumlarda GA’nın performansı daha da iyileştirilebilir ancak Bölüm 6.5’de belirtildiği gibi alt partilere atanacak hacimlerin birerli değişimlerinin incelenmesi sezgisel metotların doğasına aykırı olduğu için bu durum benimsenmemiştir. GA’nın çözüm zamanı 1 sn civarında çok kısa bir süredir. Şekil 7.2 iş sayısı 6 ve 8 için KTSP modeli ile GA modelinin karşılaştırmalı sonuçlarını vermektedir. 63 Çizelge 7.2. İş sayısının 6 ve 8 olduğu deneyler için özet tablosu Problemle ilgili parametreler # n q L KTSP modeli TZ İZ ÜS AS ÜS AS (%) GA yaklaşımı CPU1 YığHac AF(ort) AF(enk)* (sn.) CPU2 AF ( ort ) (%) ÜS (sn.) 1 6 2 1 0,5 623,4 623,4 0,0 0,4 2000 623,4 623,4 0,1 0,0 2 6 2 1 1 639,2 639,2 0,0 5,3 2000 639,2 639,2 0,1 0,0 3 6 2 1 2 1013,6 1013,6 0,0 1,1 2000 1013,6 1013,6 0,1 0,0 4 6 2 2 0,5 378,4 226,7 40,1 5760,7 2000 490,7 480,4 1,3 22,9 5 6 2 2 1 573,8 268,4 53,2 5789,9 2000 723,8 703,6 1,3 20,7 6 6 2 2 2 727,6 473,8 34,9 7056,3 2000 867,0 842,0 1,3 16,1 7 6 2 3 0,5 428,2 10,2 97,6 7200,0 2000 593,1 573,6 0,6 27,8 8 6 2 3 1 473,4 0,0 100,0 7200,0 2000 608,3 588,8 0,7 22,2 9 6 2 3 2 804,0 113,4 85,9 7200,0 2000 983,2 955,4 0,6 18,2 10 6 3 1 0,5 608,0 608,0 0,0 5,4 2000 608,0 608,0 0,1 0,0 11 6 3 1 1 798,2 798,2 0,0 1,8 2000 798,2 798,2 0,1 0,0 12 6 3 1 2 942,0 942,0 0,0 20,3 2000 942,0 942,0 0,1 0,0 13 6 3 2 0,5 330,2 189,2 42,7 7200,0 2000 495,8 481,2 1,3 33,4 14 6 3 2 1 486,8 243,1 50,1 4359,8 2000 637,4 622,4 1,5 23,6 15 6 3 2 2 735,2 484,4 34,1 5763,3 2000 887,7 870,4 1,3 17,2 16 6 3 3 0,5 338,6 0,0 100,0 7200,0 2000 492,3 479,6 0,7 31,2 17 6 3 3 1 495,8 72,9 85,3 7200,0 2000 640,5 628,6 0,7 22,6 18 6 3 3 2 669,8 84,9 87,3 7200,0 2000 850,0 834,2 0,7 21,2 19 8 2 1 0,5 870,0 870,0 0,0 6,3 3000 870,0 870,0 0,2 0,0 20 8 2 1 1 1081,8 1081,8 0,0 3,2 3000 1081,8 1081,8 0,3 0,0 21 8 2 1 2 1529,0 1529,0 0,5 1440,9 3000 1529,0 1529,0 0,3 0,0 22 8 2 2 0,5 493,8 201,1 59,3 7200,0 3000 668,8 651,8 2,9 26,2 23 8 2 2 1 756,4 441,2 41,7 7200,0 3000 905,5 893,2 3,0 16,5 24 8 2 2 2 1077,4 582,7 45,9 7076,7 3000 1290,0 1266,2 3,0 16,5 25 8 2 3 0,5 413,0 26,8 93,5 7200,0 3000 588,6 573,4 1,5 29,8 26 8 2 3 1 605,2 24,6 95,9 7200,0 3000 765,4 746,0 1,7 20,9 27 8 2 3 2 965,0 312,6 67,6 7200,0 3000 1171,6 1153,4 1,6 17,6 28 8 3 1 0,5 869,2 869,2 0,0 49,3 3000 869,2 869,2 0,3 0,0 29 8 3 1 1 947,6 947,6 0,0 76,6 3000 947,6 947,6 0,3 0,0 30 8 3 1 2 1258,0 1258,0 0,0 1555,8 3000 1258,0 1258,0 0,3 0,0 31 8 3 2 0,5 440,2 162,1 63,2 7200,0 3000 598,5 587,6 6,0 26,5 32 8 3 2 1 718,0 435,1 39,4 7156,8 3000 831,8 810,8 5,0 13,7 33 8 3 2 2 1016,0 510,4 49,8 6564,0 3000 1196,9 1166,4 4,4 15,1 34 8 3 3 0,5 451,6 49,7 89,0 7200,0 3000 597,6 583,2 1,6 24,4 35 8 3 3 1 598,0 27,0 95,5 7200,0 3000 755,2 742,6 1,6 20,8 36 8 3 3 2 853,0 164,0 80,8 7200,0 3000 1108,2 1068,4 1,6 23,0 64 1800 1600 1400 Cmax 1200 1000 KTSP GA 800 600 400 200 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 0 İş Sayısı (6) İş Sayısı (8) Deney no Şekil 7.2. İş sayısının 6 ve 8 olduğu problemler için KTSP modeli ile GA’nın karşılaştırılması Çizelge 7.3 iş sayısının 10 ve 12 olduğu durumlardaki analizleri içermektedir. Tablodaki N/A ilgili deney numarası için çözüm bulunamadığını göstermektedir. 43, 44, 45, 49, 51, 52 ve 58. deneylerde KTSP modelinin hiçbir sonuç bulamadığı görülmektedir. Bu deneylerin de yine alt parti sayısının 2 ve 3 olduğu durumlarda ortaya çıkmaktadır. 61, 62, 63, 67, 70 ve 71. deneylerde KTSP modelinin yine probleme hiçbir alt sınır değeri bulamadığı görülmektedir. Bu 36 deney içerisinde KTSP modeli altı deney için en iyi çözümü bulmuştur. En iyi çözümlerin bulunduğu bu deneyler yine koyu olarak gösterilmiştir. Bu deneylerin hepsinde alt parti sayısı 1’dir. Burada yine KTSP modeli için çözüm zamanlarının modeli durdurma ölçütü olan 7200 saniyeye dayandığı görülmektedir. En iyi çözümün bulunduğu 6 deneyde GA’da en iyi çözümleri yakalamıştır. GA’nın çözüm zamanının (CPU2) 15 sn civarlarında bir süre olduğu görülmektedir. Şekil 7.3 incelendiğinde ise GA’nın performansının giderek arttığı ve çözüm kalitesinin KTSP modeline daha da yaklaştığı açıkça görülmektedir. 6 tane deney için KTSP modelinin çözüm getiremediği yine görülmektedir. 65 Çizelge 7.3. İş sayısının 10 ve 12 olduğu problemler için deneyler için özet tablosu Problemle ilgili parametreler # n q KTSP modeli TZ İZ L ÜS AS ÜS AS (%) GA yaklaşımı CPU1 CPU2 AF ( ort ) (%) YığHac AF(ort) AF(enk)* ÜS (sn.) (sn.) 37 10 2 1 0,5 1062,6 1062,6 0,0 17,2 5000 1062,6 1062,6 0,5 0,0 38 10 2 1 1 1300,8 1300,8 0,0 106,4 5000 1300,8 1300,8 0,5 0,0 39 10 2 1 2 1825,6 1782,1 2,4 1818,4 5000 1868,0 1819,8 0,6 2,3 40 10 2 2 0,5 555,0 117,3 78,9 7200,0 5000 864,7 839,6 10,0 35,8 41 10 2 2 1 810,0 810,0 0,0 5640,8 5000 810,0 810,0 10,9 0,0 42 10 2 2 2 1424,0 1340,0 5,9 7200,0 5000 1607,7 1580,6 10,1 11,4 43 10 2 3 0,5 N/A N/A N/A 7200,0 5000 863,4 4,0 N/A 44 10 2 3 1 N/A N/A N/A 7200,0 5000 1080,4 1061,8 4,1 N/A 45 10 2 3 2 N/A N/A N/A 7200,0 5000 1580,1 1542,4 4,4 N/A 46 10 3 1 0,5 984,0 969,1 1,5 3525,3 5000 1113,2 1068 0,6 11,6 47 10 3 1 1 1088,4 1044,6 4,0 1688,7 5000 1142,3 1120,6 0,6 4,7 48 10 3 1 2 1753,4 1455,2 17,0 4338,2 5000 1831,4 1739,8 0,6 4,3 49 10 3 2 0,5 N/A 863,5 14,1 N/A N/A N/A 7200,0 5000 844,4 844,8 50 10 3 2 1 919,0 87,5 90,5 7200,0 5000 1139,4 1106,6 12,6 19,3 51 10 3 2 2 N/A N/A N/A 7200,0 5000 1548,4 1519,6 13,4 N/A 52 10 3 3 0,5 N/A N/A N/A 7200,0 5000 741,5 722,2 3,6 N/A 53 10 3 3 1 859,5 1,8 99,8 7200,0 5000 1053,9 1032 4,3 18,4 54 10 3 3 2 1151,0 0,7 99,9 7200,0 5000 1426,5 1409,2 4,1 19,3 55 12 3 1 0,5 1235,8 1222,0 1,1 3734,6 10000 1293,0 1257,8 1,6 4,4 56 12 3 1 1 1562,0 1433,6 8,2 4380,7 10000 1654,2 1619,8 1,6 5,6 57 12 3 1 2 2276,7 2276,7 0,0 3421,0 10000 2276,7 2276,7 1,8 0,0 58 12 3 2 0,5 N/A N/A 7200,0 10000 1132,2 1113,8 50,0 N/A 59 12 3 2 1 1181,7 0,7 99,9 7200,0 10000 1338,5 1318 50,4 11,7 60 12 3 2 2 1691,0 144,0 91,5 7200,0 10000 1905,4 1854,8 36,3 11,3 61 12 3 3 0,5 817,0 0,0 100,0 7200,0 10000 980,7 10,7 16,7 62 12 3 3 1 1149,0 0,0 100,0 7200,0 10000 1256,5 1224,8 10,6 8,6 63 12 3 3 2 1510,0 0,0 100,0 7200,0 10000 1767,2 1741 10,1 14,6 64 12 4 1 0,5 1161,7 1019,0 12,3 5808,4 10000 1240,8 1205,2 1,5 6,4 65 12 4 1 1 1400,7 1400,7 0,0 4344,1 10000 1400,7 1400,7 1,6 0,0 66 12 4 1 2 2400,0 2400,0 0,0 5762,9 10000 2400,0 2400,0 1,7 0,0 67 12 4 2 0,5 887,3 0,0 100,0 7200,0 10000 1125,2 1098,8 76,5 21,1 68 12 4 2 1 968,0 2,3 99,8 7200,0 10000 1223,0 1186,6 71,3 20,9 69 12 4 2 2 1691,8 168,0 90,1 7200,0 10000 1873,2 1819 64,2 9,7 70 12 4 3 0,5 771,8 0,0 100,0 7200,0 10000 904,4 10,8 14,7 71 12 4 3 1 1038,6 0,0 100,0 7200,0 10000 1180,8 1168,6 10,1 12,0 72 12 4 3 2 1617,4 4,2 99,7 7200,0 10000 1825,0 1790,8 10,3 11,4 N/A 956,8 877,6 66 3000 2500 Cmax 2000 KTSP 1500 GA 1000 500 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 0 İş Sayısı (10) İş Sayısı (12) Deney no Şekil 7.3. İş sayısının 10 ve 12 olduğu problemler için KTSP modeli ile GA’nın karşılaştırılması Çizelge 7.4 iş sayısının 14 ve 16 olduğu deneylerin analizini içermektedir. Bu deneylerin hiç birisinde KTSP modeli en iyi çözümü bulamamıştır. Alt parti sayısının 3 olduğu 12 problemin hiçbirisine de alt sınır geliştirememiştir. Bu yüzden bu problemlerde ÜS AS (%) değeri 100’dür. CPU1 değerleri yükselmeye devam etmektedir ve 36 deneyin 29’unda üst sınır değeri olan 7200 saniyeye ulaşılmıştır. GA modeli için ise çözüm zamanları ortalaması 50 saniye civarlarındadır. Şekil 7.4 incelendiğinde 5 deneyde GA’nın KTSP modelinde daha iyi çözümler verdiği görülmektedir. Diğer deneylerde de yine KTSP modeline çok yakın bir performans göstermektedir. 67 Çizelge 7.4. İş sayısının 14 ve 16 olduğu problemler için deneyler için özet tablosu Problemle ilgili parametreler # n q L TZ İZ KTSP modeli ÜS AS ÜS AS (%) GA yaklaşımı CPU1 Secs YığHac AF(ort) AF(enk)* CPU2 Secs ÜSAF ( ort ) (%) 73 14 3 1 0,5 1476,2 985,6 33,2 5771,2 15000 1630,4 1607,0 3,4 9,5 74 14 3 1 1 1518,8 1137,2 25,1 5816,6 15000 1687,5 1653,8 3,3 10,0 75 14 3 1 2 2742,6 2025,8 26,1 5766,4 15000 2719,2 2648,2 3,5 -0,9 76 14 3 2 0,5 951,0 55,4 94,2 7200,0 15000 1277,2 1254,6 85,9 25,5 77 14 3 2 1 1248,0 52,1 95,8 7200,0 15000 1530,4 1482,6 91,4 18,5 78 14 3 2 2 1951,0 110,0 94,4 7200,0 15000 2250,8 2191,4 68,1 13,3 79 14 3 3 0,5 1010,2 0,0 100,0 7200,0 15000 1093,6 1073,0 31,0 7,6 80 14 3 3 1 1229,2 0,0 100,0 7200,0 15000 1320,1 1297,0 24,4 6,9 81 14 3 3 2 2127,6 0,0 100,0 7200,0 15000 2221,2 2194,2 27,4 4,2 82 14 4 1 0,5 1358,8 396,1 70,9 7200,0 15000 1498,1 1462,2 3,3 9,3 83 14 4 1 1 1572,0 686,2 56,3 7200,0 15000 1708,9 1673,4 3,3 8,0 84 14 4 1 2 2435,2 1564,6 35,8 7200,0 15000 2605,1 2500,6 3,0 6,5 85 14 4 2 0,5 863,0 58,1 93,3 7200,0 15000 1122,8 1103,0 128,2 23,1 86 14 4 2 1 1337,8 79,8 94,0 7200,0 15000 1564,6 1533,8 107,9 14,5 87 14 4 2 2 2093,6 20,8 99,0 7200,0 15000 2309,6 2263,4 89,0 9,4 88 14 4 3 0,5 851,6 0,0 100,0 7200,0 15000 1012,9 996,8 31,0 15,9 89 14 4 3 1 1274,4 0,0 100,0 7200,0 15000 1330,2 1302,0 25,0 4,2 90 14 4 3 2 2017,6 0,0 100,0 7200,0 15000 2134,4 2085,4 22,9 5,5 91 16 3 1 0,5 1707,8 1288,0 24,6 6259,9 30000 1844,8 1814,2 13,8 7,4 92 16 3 1 1 2057,8 1595,3 22,5 3048,7 30000 2094,2 2040,2 14,0 1,7 93 16 3 1 2 3178,8 2237,4 29,6 6746,1 30000 3035,9 2946,8 21,9 -4,7 94 16 3 2 0,5 1158,3 15,3 98,7 7200,0 30000 1341,0 1322,2 68,1 13,6 95 16 3 2 1 1584,6 23,2 98,5 7200,0 30000 1763,2 1730,0 103,1 10,1 96 16 3 2 2 2487,0 14,0 99,4 7200,0 30000 2571,3 2508,4 75,2 3,3 97 16 3 3 0,5 952,8 0,0 100,0 7200,0 30000 1053,8 1037,8 94,5 9,6 98 16 3 3 1 1641,6 0,0 100,0 7200,0 30000 1647,9 1627,2 95,9 0,4 99 16 3 3 2 2601,0 0,0 100,0 7200,0 30000 2473,5 2434,8 109,2 -5,2 100 16 4 1 0,5 1313,8 943,1 28,2 5292,5 30000 1481,2 1420,6 21,5 11,3 101 16 4 1 1 1958,4 617,7 68,5 7200,0 30000 2139,9 2090,4 39,9 8,5 102 16 4 1 2 2896,4 1104,3 61,9 7200,0 30000 3004,2 2895,8 31,4 3,6 103 16 4 2 0,5 1193,6 43,6 96,3 7200,0 30000 1382,9 1361,6 76,5 13,7 104 16 4 2 1 1501,0 24,1 98,4 7200,0 30000 1709,0 1677,6 74,5 12,2 105 16 4 2 2 2058,6 0,0 100,0 7200,0 30000 2293,0 2236,6 74,6 10,2 106 16 4 3 0,5 1191,2 0,0 100,0 7200,0 30000 1230,4 1214,8 127,4 3,2 107 16 4 3 1 1713,6 0,0 100,0 7200,0 30000 1649,4 1624,8 135,6 -3,9 108 16 4 3 2 2479,8 0,0 100,0 7200,0 30000 2402,2 2350,4 107,5 -3,2 68 3500 3000 Cmax 2500 2000 KTSP GA 1500 1000 500 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 0 İş Sayısı (14) İş Sayısı (16) Deney no Şekil 7.4. İş sayısının 14 ve 16 olduğu problemler için KTSP modeli ile GA’nın karşılaştırılması Çizelge 7.5 iş sayısının 18 ve 20 olduğu deneylerin analizi için hazırlanmıştır. KTSP modelinin giderek hantallaştığı ve performansının kötüleştiği görülmektedir. Alt parti sayısının 3 olduğu 12 adet deneyin hiç birisinde KTSP modeli probleme alt sınır geliştirememiştir. Diğer deneyler içinde ÜS AS (%) değeri çok yüksektir. CPU1 değerlerinin 3’ü dışında hepsi yani 33 adet deney de 7200 saniyede sonlandırılmıştır. GA’nın KTSP’ye göreli performansı artmış ve 36 deneyin 20’sinde daha iyi çözüm bulmuştur. CPU2 değeri ise problemin boyutları büyüdüğü için yükselmiş ama sadece 300 saniye civarlarındadır ve KTSP göre kıyaslanmayacak derecede iyidir. Şekil 7.5 incelendiğinde de GA’nın KTSP modeline göre performansının daha da net bir şekilde yükseldiği açıkça görülmektedir. 69 Çizelge 7.5. İş sayısının 18 ve 20 olduğu deneyler için özet tablosu Problemle ilgili parametreler # n q L KTSP modeli TZ İZ ÜS AS ÜS AS (%) GA yaklaşımı CPU2 CPU1 YığHac AF(ort) AF(enk)* Secs Secs ÜSAF ( ort ) (%) 109 18 3 1 0,5 1642,4 996,6 39,3 6975,3 35000 1834,7 1795,8 23,5 10,5 110 18 3 1 1 2136,4 941,4 55,9 7200,0 35000 2299,9 2262,6 42,5 7,1 111 18 3 1 2 2937,6 1305,9 55,5 7200,0 35000 3066,1 3012,0 50,4 4,2 112 18 3 2 0,5 1434,8 39,3 97,3 7200,0 35000 1610,6 1569,8 125,1 10,9 113 18 3 2 1 1897,0 23,9 98,7 7200,0 35000 2041,4 1995,0 177,4 7,1 114 18 3 2 2 2703,2 9,9 99,6 7200,0 35000 2887,6 2822,4 129,2 6,4 115 18 3 3 0,5 1630,2 0,0 100,0 7200,0 35000 1474,2 1458,0 263,2 -10,6 116 18 3 3 1 2361,8 0,0 100,0 7200,0 35000 1767,2 1717,8 254,0 -33,6 117 18 3 3 2 3126,2 0,0 100,0 7200,0 35000 2672,2 2616,6 372,0 -17,0 118 18 4 1 0,5 1571,8 849,9 45,9 7057,5 35000 1823,2 1794,6 48,6 13,8 119 18 4 1 1 2067,0 1027,2 50,3 6510,7 35000 2405,8 2344,8 57,8 14,1 120 18 4 1 2 2993,2 952,1 68,2 7200,0 35000 3187,2 3081,6 60,0 6,1 121 18 4 2 0,5 1508,0 25,7 98,3 7200,0 35000 1551,1 1525,4 174,9 2,8 122 18 4 2 1 1994,2 4,3 99,8 7200,0 35000 1920,3 1879,0 172,6 -3,8 123 18 4 2 2 3247,6 29,9 99,1 7200,0 35000 3033,3 2961,8 184,5 -7,1 124 18 4 3 0,5 1930,4 0,0 100,0 7200,0 35000 1324,8 1299,2 366,2 -45,7 125 18 4 3 1 2502,0 0,0 100,0 7200,0 35000 1869,0 1822,2 340,1 -33,9 126 18 4 3 2 3192,6 0,0 100,0 7200,0 35000 2711,8 2655,8 310,8 -17,7 127 20 3 1 0,5 2156,4 711,8 67,0 7200,0 40000 2344,6 2281,8 229,0 8,0 128 20 3 1 1 2805,4 793,0 71,7 7200,0 40000 2912,3 2848,4 129,8 3,7 129 20 3 1 2 3420,2 944,5 72,4 7200,0 40000 3480,0 3394,2 136,5 1,7 130 20 3 2 0,5 2109,4 17,3 99,2 7200,0 40000 1773,3 1733,8 290,0 -19,0 131 20 3 2 1 3183,6 21,9 99,3 7200,0 40000 2421,6 2377,4 328,5 -31,5 132 20 3 2 2 3364,2 90,3 97,3 7200,0 40000 3246,0 3147,2 408,0 -3,6 133 20 3 3 0,5 1805,4 0,0 100,0 7200,0 40000 1534,5 1349,6 440,5 -17,7 134 20 3 3 1 2456,8 0,0 100,0 7200,0 40000 1899,9 1746,8 578,6 -29,3 135 20 3 3 2 3860,6 0,0 100,0 7200,0 40000 2960,4 2760,8 650,4 -30,4 136 20 4 1 0,5 1936,4 702,2 63,7 7200,0 40000 2309,8 2144,8 108,5 16,2 137 20 4 1 1 2479,6 387,4 84,4 7200,0 40000 2697,4 2414,4 130,2 8,1 138 20 4 1 2 3566,0 495,7 86,1 7200,0 40000 3696,2 3407,2 155,6 3,5 139 20 4 2 0,5 1708,6 26,0 98,5 7200,0 40000 1639,2 1498,8 425,9 -4,2 140 20 4 2 1 2126,4 13,6 99,4 7200,0 40000 2076,1 1890,8 309,7 -2,4 141 20 4 2 2 3464,6 7,5 99,8 7200,0 40000 3138,4 2829,4 309,1 -10,4 142 20 4 3 0,5 2128,8 0,0 100,0 7200,0 40000 1464,7 1441,0 732,7 -45,3 143 20 4 3 1 2235,0 0,0 100,0 7200,0 40000 1903,3 1862,4 673,4 -17,4 144 20 4 3 2 4052,8 0,0 100,0 7200,0 40000 3084,1 3020,2 694,5 -31,4 70 4500 4000 3500 Cmax 3000 2500 KTSP 2000 GA 1500 1000 500 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 0 İş Sayısı (18) İş Sayısı (20) Deney no Şekil 7.5. İş sayısının 18 ve 20 olduğu problemler için KTSP modeli ile GA’nın karşılaştırılması 71 8. SONUÇ VE ÖNERİLER Günümüz endüstrisinde ürün hayat çevrimlerinin giderek kısalması ve ürüne olan talebin çok değişkenlik arz etmesi üretim ve imalat sektörlerinde çok dinamik bir yapının oluşmasına neden olmuştur. Bu dinamik ortamda hayatta kalabilen firmalar kendi üretim süreçlerini sürekli olarak sorgulayan ve geliştirebilen firmalar olacaktır. Firmaların ayakta kalabilmesi için bu dinamik yapıya adaptasyon sağlamalarının dışında üretim maliyetlerini de düşürerek rakip firmalara karşı avantaj sağlamaları da diğer bir önemli faktördür. Bu rekabetçi ortamda firmalar üretim süreçlerini iyileştirmeye ve geliştirmeye çalışırken genellikle tesis yerleşim düzenlerinin değiştirilmesi popüler bir yaklaşımdır. Üretim süreçlerinin evrimsel geçmişine bakıldığında ilk olarak ürün talebinin yüksek ve çeşitliliğin az olduğu durumlara uygun olarak ürün tipi yerleşim revaçtaydı. Rakip firmaların çoğalması ve ürün çeşitliliğinin artması neticesinde fabrika yerleşimi süreç tipi yerleşime kaymıştı. Ancak süreç tipi yerleşiminde özellikle hazırlık zamanının yüksek olduğu durumlarda etkin çalışamaması ve çizelgeleme işlemlerinin takibinin çok güç olmasından dolayı uygulamada sıkıntılar yaşanıyordu. Bu sıkıntıların giderilmesi ve alternatif bir tesis yerleşimi olarak hücresel yerleşim literatüre sunuldu. Hücresel yerleşimde benzer üretim gereksinimlerine sahip parçalar gruplanarak parça aileleri oluşturuluyor ve bu parçaları işlemek üzere farklı üretim yeteneklerine sahip makineler fiziksel olarak gruplandırılıp makine hücreleri oluşturuluyordu. Kısacası tesis daha küçük birbirinden bağımsız alt sistemlere bölünmüş oluyordu. Böylece iş akışları daha rahat, akış zamanları daha düşük ve çizelgeleme işlemleri daha rahat kontrol ediliyordu. Fakat hücresel yerleşimde hücre formasyonu oluşturulurken talebin durağan olduğu daha statik bir ortam varsayımı yapılıyordu. Dinamik ortamlarda talep yapısının değişmesi mevcut hücre yerleşimlerinin etkinliğini kaybetmesine darboğaz makinelerin oluşmasına ve üretim zamanlarının yükselmesine neden olmaktaydı. 72 Bilgisayar teknolojisinin gelişmesiyle birlikte üretim sistemleri de bu gelişmeden kendine düşen payı almak istemekteydi. Bu gelişime paralel olarak daha donanımlı ve esnek ortamlara adapte olacak bir üretim sistemi önerilmişti. Esnek İmalat Sistemleri (EİS) olarak adlandırılan bu üretim sisteminde yüksek donanımlı ve birden fazla işlem kabiliyetine sahip makineler dinamik çevre koşullarına ayak uydurabilmesi açısından göz dolduruyordu. Fabrika içi malzeme taşıma işlemlerinin konveyör ya da otomatik yönlendirmeli araçlarla yapıldığı bu sistemler üretim çağının tüm gereksinimlerine cevap veriyordu. Ancak bu sistemin ilk kurulum maliyetinin çok yüksek olması maalesef birçok küçük ve orta boyutlu işletme tarafından kullanılamamasına neden oluyordu. Bununla birlikte çizelgeleme işleri çok zor kontrol ediliyordu. 1980’li yılların başlarında bazı araştırmacılar EİS’deki gibi esnek bir yapıya sahip ancak kurulum maliyeti düşük, hücresel yerleşimde de olduğu gibi hücre içerisinde parça akışının kolay olduğu bir imalat sistemi fikrini ilk kez önerdiler ve bu sistemi Sanal İmalat Hücreleri (SİH) olarak isimlendirdiler. Bu tez çalışmasında göreli olarak yeni olan bu üretim sistemi üzerinde durulmuştur. SİH genel olarak EİS ile HİS’nin etkin özelliklerini bünyesinde toplayan melez bir üretim sistemidir. EİS’de olduğu gibi bir operasyona birden fazla alternatif makine sunarak esneklik sağlamaktadır. Aynı zamanda HİS’de olduğu gibi bir işin bir hücreye atandıktan sonra düz bir şekilde akışına müsaade ederek HİS’ye de benzemektedir. Ancak HİS’den farklı olarak farklı üretim yeteneklerine sahip makinelerin fiziksel olarak gruplayıp sabit hücreler oluşturmak yerine hücreler geçici olarak oluşturulmaktadır. Bir işin üretimine başlanacağında o işi yapacak olan makineler atanıp bir hücre mantığıyla çalışacak ancak o işin üretimi bittiğinde ilgili hücre kaybolacaktır. Kısacası hücreleme mantıksal bazda oluşturulacak ve hücreler geçici olacaktır. SİH ile ilgili literatür incelendiğinde araştırmacıların sanal hücre ile ilgili tanımlamalarının temel benzerlikleri olsa da bazı farklılıkları da barındırdığı görülmüştür. SİH ile ilgili araştırmaların genel olarak iki başlık altında toplandığı anlaşılmaktadır. Bunlar (i) SİH’nin tasarımı ile ilgili olarak yapılan çalışmalar ve (ii) operasyonel düzeyde yapılan çalışmalardır. Operasyonel düzeyde yapılan 73 çalışmalarda genellikle parça ailesi tabanlı çizelgeleme kurallarının geliştirildiği pasif sanal hücre yapıları ön plana çıkmaktadır. SİH’nin tasarımı ile ilgili çalışmalarda daha geniş bir perspektiften problem ele alınmış ve daha uzun vadeli kararlarla ilgilenilmiştir. Bu tez çalışması SİH’nin tasarımı ile ilgilidir ve genel olarak çizelgeleme üzerinde durmaktadır. Üretim çizelgeleme aşaması üretim planlama ve kontrol şeması altında operasyonel seviyede kararları içerse de problemin ele alınışı itibariyle SİH’nin tasarımını da irdelemektedir. Çalışmanın SİH’nin çizelgelenmesi ile ilgilenmesindeki temel amaç bundan önceki çizelgeleme çalışmalarındaki matematiksel ve sezgisel yöntemlerin etkin olmaması ve bu alandaki eksikliğin giderilmeye çalışılmasıdır. Çalışmanın diğerleriyle arasındaki en büyük fark probleme klasik çizelgeleme problemleri açısından yaklaşılması olmuştur. Problem tanımı yapılırken mümkün olduğunca genel SİH tanımına sadık kalınmış ve problemin temelinden sarsacak varsayımlardan uzak durulmuştur. Çalışma bu yönü ile alana oldukça yenilik katmaktadır. Çizelgelenecek işlerin partiler halinde üretildiğini ve partilerin alt partilere bölünebileceği düşünülmüştür. İşlerin operasyon sıralarının birbirlerinden farklı olduğu dikkate alınmıştır. Makineler üretim alanında farklı bölgelere yerleştirildiği için makineler arası taşıma uzaklıkları da dikkate alınmıştır. Çizelgeleme ölçütü ise en son işin en son makinedeki tamamlanma zamanının (Cmax) en küçüklenmesidir. Alınması gereken karalar ise her bir operasyona hangi makinenin atandığı, her bir operasyonun başlama zamanı ve her bir işin alt partilerine atanan parti büyüklüklerinin ne kadar olacağıdır. Bu bilgiler ışığında ilk olarak problem için Karışık Tam Sayılı Programlama (KTSP) modeli geliştirilmiştir. Önerilen model oldukça esnek bir yapıya sahiptir. Alt parti sayısı modelde bir parametredir ve bu değer bir olarak seçildiğinde parti bölünmesinin olmadığı anlamına gelmektedir ve problem bu durumda Esnek Atölye tipi çizelgeleme problemine benzemektedir. Ayrıca her bir operasyon için o operasyonu işleyebilecek bir makine setinin olduğu düşünülmüştür. Bir operasyon için alternatif makineler kümesi yerine sadece tek bir makinede işlem göreceği 74 düşünüldüğünde model basitçe daha temel bir form olan Atölye tipi çizelgeleme problemine dönüştürülebilir. Bu yüzden önerilen model çok esnek bir yapıda kurulmuştur. Problemin karmaşık yapısından dolayı önerilen KTSP modelinin büyük boyutlu problemlerde iyi performans göstermediği görülmüştür. Bu amaçla kısa sürelerde iyi çözümler elde edebilmek amacıyla kombinatoriyel eniyileme problemlerinin çözümünde yüksek performansından dolayı sıklıkla kullanılan Genetik Algoritma (GA) tabanlı bir sezgisel metot geliştirilmiştir. Probleme özel olarak tasarlanmış dört vektörlü bir kromozom yapısı sunulmuştur. Bu vektörler operasyonlara atanan makineleri, çizelgelenecek operasyonların sıralarını, çizelgelenecek operasyonların hangi alt partiye ait olduklarını ve alt parti büyüklüklerini temsil etmektedir. Problemin deneysel kısmı için rassal olarak üretilmiş çok geniş bir problem seti hazırlanmıştır. Test problemlerinin oluşturulmasında önem teşkil eden parametreler belirlenmiş ve bu parametrelerin çeşitli seviyelerin kombinasyonları toplam olarak 720 adet test probleminin oluşturulmasını gerektirmiştir. Bu problem setleri üzerinde KTSP modeli ile GA sezgiselinin performansları karşılaştırılmıştır. Alt parti sayısının artırılmasının özellikle problemi çok zorlaştırdığı görülmüştür. Küçük boyutlu problemlerde KTSP modeli çözüm kalitesi olarak GA’dan biraz daha iyi performans göstermesine karşın problem boyutu arttığında GA yaklaşımı KTSP modelinden daha iyi çözümler bulmuştur. Alt parti sayısının 1 olduğu problemlerde GA’nın eniyi çözüleri yakalaması onun güvenilirliğinin de bir göstergesidir. Çözüm zamanı dikkate alındığında ise en büyük boyutlu problemlerde bile GA’nın çözüm zamanı 5 dk civarında olmuştur. Sonuç olarak çizelgeleme problemleri operasyonel düzeyde kararlar oldukları için hızlı kararlar alabilmek son derece önemlidir. Çok kısa süreler içerisinde probleme iyi çözümler veren GA SİH’nin çizelgelenmesinde etkin bir şekilde kullanılabileceği görülmüştür. Çalışma birkaç farklı açıdan genişletilebilir. Örneğin çizelgeleme ölçütü olarak Cmax yerine geciken işlerin sayısının en küçüklenmesi ya da erken tamamlanma ve gecikmelerin en küçüklenmesi gibi teslim tarihi tabanlı daha farklı çizelgeleme 75 ölçütleri incelenebilir. Birden fazla çizelgeleme ölçütünün birlikte ele alındığı çok amaçlı modeller üzerinde durulabilir. Pareto en iyi sonuçlar aranabilir ya da amaç programlama gibi yaklaşımlar kullanılabilir. Problemin karmaşıklığının çok yüksek olmasına karşın probleme özgün veriler kullanarak matematiksel modele kıyasla daha kısa sürede en iyi çözüm verebilecek dal ve sınır algoritmalarının geliştirilip geliştirilemeyeceği ayrı bir çalışma konusu olarak düşünülebilir. Tez çalışmasında GA yaklaşımı kullanılmış olsa da Tabu Arama, Benzetilmiş Tavlama, Karınca Kolonileri Eniyilemesi, Değişken Komşuluk Arama, Kuş Sürüsü Eniyilemesi gibi farklı meta-sezgisel algoritmaların problem üzerindeki performansları incelenebilir ve birbirleriyle hem çözüm kalitesi hem de çözüm zamanı açısından karşılaştırma yapılabilir. 76 KAYNAKLAR Akella, R., Chong, Y.,. “Performance of a hierarchical production scheduling policy”, IEEE Transactions on Components, Hybrids and Manufacturing Technology, 7(3):225-248 (1984). Baker, K.,. “Introduction to Sequencing and Scheduling”, New York, Wiley, 13-54 (1974). Balakrishnan, J., Cheng, C.H.,. “Dynamic layout algorithms: a state-of-the-art survey”, Omega-International Journal of Management Science, 26(4):507-521 (1998). Baykasoğlu, A., Özbakır, L., Sönmez, A.İ.,. “Using multiple objective tabu search and grammars to model and solve multi-objective flexible job shop scheduling problems”, Journal of Intelligent Manufacturing, 15(6):777-785 (2004). Bona, B., Brandimarte, P.,. “Hybrid hierarchical scheduling and control systems in manufacturing”, IEEE Transactions on Robotics and Automation, 6(6):673-686 (1990). Brandimarte, P.,. “Routing and scheduling in a flexible job shop by tabu search”, Annals of Operations Research, 41(3):157-183 (1993). Brucker, P., Schlie, R.,. “Job-shop scheduling with multi-purpose machines”, Computing 45(4):369-375 (1990). Chen, J., Steiner, G.,. “Lot streaming with attached setups in three-machine flow shops”, IIE Transactions, 30(11):1075–1084 (1998). Chen, J., Steiner, G.,. “Discrete lot streaming in two-machine flow shops”, INFOR Journal, 37(2):160–173 (1999). Dauzère-Pérès, S., Paulli, J.,. “An ıntegrated approach for modeling and solving the general multiprocessor job-shop scheduling problem using tabu search”, Annals of Operations Research, 70(3):824-835 (1997). Drolet, J.R.,. “Scheduling virtual cellular manufacturing systems”, PhD thesis, Purdue University, West Lafeyette, USA 21-80 (1989). Drolet, J.R., Abdulnour, G., Rheault, M.,. “The cellular manufacturing evolution”, Computers & Industrial Engineering, 31(1/2):139–142 (1996). Drolet, J.R., Marcoux, Y., Abdulnour, G.,. ”Simulation based performance comparison between dynamic cells, classical cells and job shops: a case study”, International Journal of Production Research, 46(2):509-536 (2008). 77 Flynn, B.B.,. “Repetitive lots: the use of a sequence-dependent set-up time scheduling procedure in group technology and traditional shops”, Journal of Operations Management, 7(1):203-216 (1987). Flynn, B.B., Jacobs, F.R.,. “A simulation comparison of group technology with traditional job shop manufacturing”, International Journal of Production Research, 24(5):1171-1192 (1986). Flynn, B.B., Jacobs, F.R.,. “An experimental comparison of cellular (group technology) layout with process layout”, Decision Sciences, 18(4):562-581 (1987). Fung, R.Y.K., Liang, F., Jiang, Z., Wong, T.N.,. “A multi-stage methodology for virtual cell formation oriented agile manufacturing”, International Journal of Advanced Manufacturing Technology, 36(7-8):798-810 (2008). Gao, J., Sun, L., Gen, M.,. “A hybrid genetic and variable neighborhood descent algorithm for flexible job shop scheduling problems”, Computers & Operations Research, 35(9):2892-2907, (2008). Garey, M.R., Johnson, D.S., Sethi, R.,. “The complexity of flowshop and jobshop scheduling”, Mathematics of Operations Research, 1:117-129 (1976). Gen, M., Tsujimura, Y., Kubota, E.,. “Solving job-shop scheduling problem using genetic algorithms”, In: Proceedings of the 16th international conference on computer and industrial engineering, Ashikaga, Japan, 576-579 (1994). Glass, C.A., Potts, C.N.,. “Structural properties of lot streaming in a flow shop. Mathematics of Operations Research, 23(3):624–639 (1998). Gupta, R.M., Tompkins, J.A.,.”An examination of the dynamic behavior of part families in group technology”, International Journal of Production Research, 20(1):73-86 (1982). Holland, J.H.,. “Adaptation in Natural and Artificial Systems”, The University of Michigan Press: Ann Arbor, 14-37 (1975). Hyer, N.L., Brown, K.A.,. “The discipline of real cells”, Journal of Operations Management, 17(5):557-574 (1999). Irani, S.A., Cavalier, T.M, Cohen, P.H.,. “Virtual manufacturing cells: exploiting layout design and intercell flows for the machine sharing problem”, International Journal of Production Research, 31(4):791–810 (1993). Jacobs, F.R., Bragg, D.J.,. “Repetitive lots-flow time reductions through sequencing and dynamic batch sizing”, Decision Sciences, 19(2):281-294 (1988). 78 Jensen, J.B., Malhotra, M.K., Philipoom, P.R.,. “Machine dedication and process flexibility in a group technology environment”, Journal of Operations Management, 14:19-29 (1996). Jensen, J.B., Malhotra, M.K., Philipoom, P.R.,. “Family-based scheduling of shops with functional layouts”, International Journal of Production Research, 36(10):2687-2700 (1998). Jurisch, B.,. “Scheduling jobs in shops with multi-purpose machines”, Ph.D. Dissertation, Fachbereich Mathematik/Informatik, Universitat Osnabruck 31-39 (1992). Kacem, I., Hammadi, S., Borne, P.,. “Approach by localization and multiobjective evolutionary optimization for flexible job-shop scheduling problems”, IEEE Transactions on Systems, Man and Cybernetics Part C: Applications and Review, 32(1):1-13 (2002). Kalir, A.A., Sarin, S.C.,. “A near-optimal heuristic for the sequencing problem in multiple-batch flow shops with small equal sublots”, Omega, 29(6):577-584 (2001). Kannan, V.R., Ghosh, S.,. “Using dynamic cellular manufacturing to simplify scheduling in cell based production systems”, Omega, 23(4):443-452 (1995). Kannan, V.R.,. “A simulation analysis of the ımpact of family configuration on virtual cellular manufacturing”, Production Planning & Control, 8(1):14–24 (1997). Kannan, V.R.,. “Analysing the trade-off between efficiency and flexibility in cellular manufacturing systems”, Production Planning & Control, 9(6):572-579 (1998). Kannan, V.R., Ghosh, S.,. “A virtual cellular manufacturing approach to batch production”, Decision Sciences, 27(3):519-539 (1996a). Kannan, V.R., Ghosh, S.,. “Cellular manufacturing using virtual cells. International Journal of Operations and Production Management 16(5):99-112 (1996b). Kesen, S.E., Toksarı, M.D., Güngör, Z., Güner, E.,. “Analyzing the behaviors of virtual cells (vcs) and traditional manufacturing systems: ant colony optimization (aco)-based metamodels”, Computers & Operations Research, 36(7):2275-2285 (2009). Kesen, S.E., Das, S.K., Güngör, Z.,. “A genetic algorithm based heuristic for scheduling of virtual manufacturing cells (VMCs)”, Computers & Operations Research, 37(6):1148-1156 (2010a). Kesen, S.E., Das, S.K., Güngör, Z.,. “A mixed ınteger programming formulation for scheduling of virtual manufacturing cells (VMCs)”, International Journal of Advanced Manufacturing Technology, 47(5-8):665-678 (2010b). 79 Khilwani, N., Ulutaş, B.H., İşlier, A.A., Tiwari, M.K.,. “a methodology to design virtual cellular manufacturing systems”, Journal of Intelligent Manufacturing, Basımda 1-12 (2009). Ko, K.C., Egbelu, P.J.,. “Virtual cell formation”, International Journal of Production Research, 41(11):2365-2389 (2003). Kusiak, A.,.”Intelligent Manufacturing Systems”, New Jersey, Prentice Hall, 31-42 (1990). Lawler, E.L., Lenstra, J.K., Rinnooy Kan, A.H.G.,. “Recent developments in deterministic sequencing and scheduling: a survey”, Deterministic and Stochastic Scheduling, 84:35-74 (1982). Mak, K.L., Lau, J.S.K., Wang, X.X.,. “A genetic scheduling methodology for virtual cellular manufacturing systems”, International Journal of Computer Integrated Manufacturing, 20(6):524-537 (2007). Mak, K.L., Peng, P., Wang, X.X., Lau, T.L.,. “An ant colony optimization algorithm for scheduling virtual cellular manufacturing systems”, International Journal of Computer Integrated Manufacturing, 20(6):524-537 (2007). Mak, K.L., Wang, X.X.,. “Production scheduling and cell formation for virtual cellular manufacturing systems”, International Journal of Advanced Manufacturing Technology, 20(2):144-152 (2002). Mastrolilli, M., Gambardella, L.M.,. “Effective neighborhood functions for the flexible job shop problem”, Journal of Scheduling, 3(1):3-20 (2000). McLean, C.R., Bloom, H.M., Hopp, T.H.,. “The virtual manufacturing cell”, Proceedings of the Fourth IFAC/IFIP Conference on Information Control Problems in Manufacturing Technology, Gaithesburg, MD, USA, 105-111 (1982). Mertins, K., Friedland, R., Rabe, M.,. “Capacity assignment of virtual manufacturing cells by applying lot size harmonization”, International Journal of Production Research, 38(17):4385-4391 (2000). Montreuil, B., Drolet, J.R., Lefrancois, P.,. “The design and management of virtual manufacturing systems”, In proceedings of American Production & Inventory Control Society Conference, 4-5 October, Quebec, Montreal, 410-414 (1992). Moodie, C.L., Drolet, J.R., Ho, Y.C., Warren, G.M.H.,. “Cell design strategies for efficient material handling” In Material Flow Systems in Manufacturing (Chapter 3), New York, NY: J.M.A. (ed) Tanchoco, Chapman&Hall 76-101 (1994). 80 Nomden, G., Slomp, J., Suresh, N.C.,. “Virtual manufacturing cells: a taxonomy of past research and identification of future research issues”, International Journal of Flexible Manufacturing Systems, 17:71-92 (2006). Pinedo, M.,. “Scheduling: Theory, Algorithms, and Systems”, Prentice Hall Inc. New Jersey. 14-20 (1995). Prince, J., Kay, J.M.,. “Combining lean and agile characteristics: creation of virtual groups by enhanced production flow analysis”, International Journal of Production Economics, 85(3):305–318 (2003). Ratchev, S.M.,. “Concurrent process and facility prototyping for formation of virtual manufacturing cells”, Integrated Manufacturing Systems, 12(4):306-315 (2001). Reiter, S.,. “A system for managing job-shop production”, The Journal of Business, 34:371–393 (1966). Rheault, M., Drolet, J.R., Abdulnour, G.,. “Physically reconfigurable virtual cells: a dynamic model for a highly dynamic environment”, Computers & Industrial Engineering, 29(1-4):221-225 (1995). Rheault, M., Drolet, J.R., Abdulnour, G.,. “Dynamic cellular manufacturing system (DCMS)”, Computers & Industrial Engineering, 31(1-2):143-146 (1996). Rosenblat, M.J.,. “The dynamics of plant layout”, Management Science, 32(1):7686 (1986). Saad, S.M., Baykasoğlu, A., Gindy, N.N.Z.,. “An integrated framework for reconfiguration of cellular manufacturing systems using virtual cells”, Production Planning & Control, 13(4):381-393 (2002). Sarker, B.R., Li, Z.,. “Job routing and operations scheduling: a network-based virtual cell formation approach”, Journal of the Operational Research Society, 52(6):673– 681 (2001). Slomp, J., Chowdary, B.V., Suresh N.C.,. “Design and operation of virtual manufacturing cells. In Proceeedings of FAIM Conference, Tampa, FL 94-101 (2004). Slomp, J., Chowdary, B.V., Suresh N.C.,. “Design of virtual manufacturing cells: a mathematical programming approach”, Robotics and Computer Integrated Manufacturing, 21(3):273-288 (2005). Shambu, G., Suresh N.C.,. “Performance of hybrid cellular manufacturing systems: a computer simulation ınvestigation”, European Journal of Operational Research, 120(2):436-458 (2000). 81 Sönmez, A.I., Baykasoğlu, A.,. “A new dynamic programming formulation of (n*m) flowshop sequencing problems with due dates”, International Journal of Production Research, 36(8):2269-2283 (1998). Subash, B.A., Nandurkar, K.N., Thomas, A.,. “Development of virtual cellular manufacturing systems for SMEs”, Logistics Information Management, 13(4):228242 (2000). Suresh, N.J., Meredith, J.R.,. “Coping with the loss of pooling synergy in cellular manufacturing systems, Management Science, 40(4):466-483 (1994). Suresh, N.C., Slomp, J.,. “Performance comparison of virtual cellular manufacturing with functional and cellular layouts in DRC settings”, International Jourrnal of Production Research, 43(5):945-979 (2005). Şen, A., Benli, O.S.,. “Lot streaming in open shops”, Operations Research Letters, 23(3-5): 135–142 (1999). Thomalla, C.S.,. “Formation of virtual cells in maufacturing systems”, In Proceeedings Group Technology/Cellular Manufacturing World Symposium, San Juan, Puerto Rico, 13-16 (2000). Tompkins, J.A., White, J.A., Bozer, Y.A., Tanchoco, J.M.A.,.”Facilities Planning”, NewYork Wiley, 7-12 (2003). Vakharia, A.J., Moily, J.P., Huang, Y.,. “Evaluating virtual cells and multistage flowshops”, International Journal of Flexible Manufacturing Systems, 11(3):291– 314 (1999). Wemmerlov, U., Hyer, N.L.,.”Cellular manufacturing in the us industry: a survey of users”, International Journal of Production Research, 27(9):1511-1530 (1989). Wemmerlov, U., Johnson, D.J.,.”Cellular manufacturing at 46 user plants: implementation experiences and performance improvement”, International Journal of Production Research, 35(1):29-49 (1997). Wemmerlov, U., Johnson, D.J.,.”Empirical findings on manufacturing cell design”, International Journal of Production Research, 38(3):481-507 (2000). Xia, W., Wu, Z.,. “An effective hybrid optimization approach for multi-objective flexible job-shop scheduling problem”, Computers & Industrial Engineering, 48(2):409-425. Zhang, W., Changyu, Y., Liu, J., Linn, R.J.,. “Multi-job lot streaming to minimize the mean completion time in m-1 hybrid flowshops”, International Journal of Production Economics, 96(2):189-200 (2005). 82 EKLER 83 EK-1. Rassal test problemlerinin üretimi için hazırlanan MS Excel makrosu Private Sub CommandButton1_Click() Dim Seeds(): Dim LotSize(): Dim NumOper(): Dim NumIndMac(): Dim ArrforMacs Dim ArrforOpers(): Dim DistMat(): Sheets("ProbAttributes").Select Sheets("ProbAttributes").Select Sheets("ProbAttributes").Range("A1").Select NumofFile = Val(ActiveCell.Offset(0, 1)) LotSizeLB = Val(ActiveCell.Offset(1, 1)) LotSizeUB = Val(ActiveCell.Offset(2, 1)) ProTimeLB = Val(ActiveCell.Offset(3, 1)) ProTimeUB = Val(ActiveCell.Offset(4, 1)) SeedRoot = Val(ActiveCell.Offset(5, 1)) ReDim Seeds(1 To NumofFile) For i = 1 To NumofFile Seeds(i) = Int(Rnd * 100000) Next i Selection.End(xlDown).Select Selection.End(xlDown).Select Do Sheets("ProbAttributes").Select ActiveCell.Offset(1, 0).Select If ActiveCell = "" Then End NumJob = ActiveCell.Offset(0, 1) NumMacType = ActiveCell.Offset(0, 2): NumMacInType = ActiveCell.Offset(0, 3) NumSubLot = ActiveCell.Offset(0, 4): TToverOT = ActiveCell.Offset(0, 5) Dim LenofFileNum As Integer Dim xx As String xx = NumofFile LenofFileNum = Len(xx) For FileNum = 1 To NumofFile Randomize (Seeds(FileNum)) xx = FileNum If (Len(xx) < LenofFileNum) Then For i = 1 To LenofFileNum - Len(xx) xx = "0" & xx Next End If PrbName = "J" & NumJob & "_M" & NumMacType & "_I" & NumMacInType & "_P" & NumSubLot & "_R" & TToverOT & "_" & xx & ".txt" 'Her bir işten ne kadar üretileceği atanıyor ReDim LotSize(1 To NumJob): ReDim NumOper(0 To NumJob) For i = 1 To NumJob LotSize(i) = Int(LotSizeLB + Rnd * (LotSizeUB - LotSizeLB + 1)) NumOper(i) = Int(2 + Rnd * (NumMacType - 2 + 1)) Next ReDim NumIndMac(1 To NumMacType): ReDim ArrforMacs(1 To NumMacType) For i = 1 To NumMacType NumIndMac(i) = Int(2 + Rnd * (NumMacInType - 2 + 1)) ArrforMacs(i) = i Next ReDim ArrforOpers(1 To NumJob, 1 To NumMacType) For i = 1 To NumJob For j = 1 To NumOper(i) rassal = Int(1 + Rnd * (NumMacType - j + 1)) ArrforOpers(i, j) = ArrforMacs(rassal) 84 EK-1 (Devam). Rassal test problemlerinin üretimi için hazırlanan MS Excel makrosu For k = rassal + 1 To NumMacType - j + 1 ArrforMacs(k - 1) = ArrforMacs(k) Next k Next j For l = 1 To NumMacType ArrforMacs(l) = l Next l Next i 'verilerin diğer sayfaya yazılması Sheets("ProbGeneration").Activate: Rows("1:5000").Select: Rows("1:5000").Select Selection.ClearContents Range("A1").Select ActiveCell.Offset(0, 0) = "Kesen" ActiveCell.Offset(1, 0) = "Number_of_Jobs": ActiveCell.Offset(1, 1) = NumJob ActiveCell.Offset(2, 0) = "Num_Mach_Types": ActiveCell.Offset(2, 1) = NumMacType ActiveCell.Offset(3, 0) = "Ind_Mac_In_Type": ActiveCell.Offset(3, 1) = NumMacInType ActiveCell.Offset(4, 0) = "Num_of_Sub_Lot": ActiveCell.Offset(4, 1) = NumSubLot ActiveCell.Offset(5, 0) = "Transp/Process": ActiveCell.Offset(5, 1) = TToverOT ActiveCell.Offset(7, 0) = "Batch_Sizes(J)" ActiveCell.Offset(7, 0).Activate For i = 1 To NumJob ActiveCell.Offset(i, 0) = i ActiveCell.Offset(i, 1) = LotSize(i) Next i ActiveCell.Offset(1 + NumJob, 0).Activate ActiveCell.Offset(1, 0) = "Num_of_Ind_Mac_In_Each_Type(M)": ActiveCell.Offset(1, 0).Activate For i = 1 To NumMacType ActiveCell.Offset(i, 0) = I: ActiveCell.Offset(i, 1) = NumIndMac(i) Next i ActiveCell.Offset(NumMacType + 1, 0).Activate ActiveCell.Offset(1, 0) = "Num_of_Oper_for_Each_Job(J)": ActiveCell.Offset(1, 0).Activate For i = 1 To NumJob ActiveCell.Offset(i, 0) = I: ActiveCell.Offset(i, 1) = NumOper(i) Next i ActiveCell.Offset(NumJob + 1, 0).Activate ActiveCell.Offset(1, 0) = "Oper_Seq_of_Each_Job(J)": ActiveCell.Offset(1, 0).Activate For i = 1 To NumJob ActiveCell.Offset(i, 0) = i For j = 1 To NumOper(i) ActiveCell.Offset(i, j) = ArrforOpers(i, j) Next j Next i ActiveCell.Offset(NumJob + 1, 0).Activate ActiveCell.Offset(1, 0) = "Proc_Time_of_Each_job(J,H,I)": ActiveCell.Offset(1, 0).Activate 'ActiveCell.Offset(1, 0).Activate SumOper = 0 For i = 1 To NumJob For j = 1 To NumOper(i) 'ActiveCell.Offset(SumOper + j, 0) = "J" & i & ".H-" & j Toplam = 0 For k = 1 To NumMacType If (ArrforOpers(i, j) = k) Then For l = 1 To NumIndMac(k) 85 EK-1 (Devam). Rassal test problemlerinin üretimi için hazırlanan MS Excel makrosu ActiveCell.Offset(SumOper + l, 0) = i: ActiveCell.Offset(SumOper + l, 1) = j: ActiveCell.Offset(SumOper + l, 2) = Toplam + l ActiveCell.Offset(SumOper + l, 3) = Int(ProTimeLB + Rnd() * (ProTimeUB ProTimeLB + 1)) Next l SumOper = SumOper + NumIndMac(k) Exit For Else Toplam = Toplam + NumIndMac(k) End If Next k Next j Next i ActiveCell.Offset(SumOper + 2).Activate ActiveCell = "Dist_Matrix_Between_Each_Machine_Pairs(I,I)": TotalMachines = 0 For i = 1 To NumMacType TotalMachines = TotalMachines + NumIndMac(i) Next i ReDim DistMat(TotalMachines, TotalMachines) Counter = 1 For i = 1 To TotalMachines For j = 1 To TotalMachines If (i = j) Then GoTo AA ElseIf (i < j) Then ActiveCell.Offset(Counter, 0) = i: ActiveCell.Offset(Counter, 1) = j Gecici = (LotSizeLB + LotSizeUB) * (ProTimeLB + ProTimeUB) * TToverOT / 4 DistMat(i, j) = Int(Rnd * (Gecici + 1) + Gecici / 2) ActiveCell.Offset(Counter, 2) = DistMat(i, j) Counter = Counter + 1 Else ActiveCell.Offset(Counter, 0) = i: ActiveCell.Offset(Counter, 1) = j ActiveCell.Offset(Counter, 2) = DistMat(j, i): Counter = Counter + 1 End If AA: Next j Next i '.xls uzantılı dosyadaki veriler .txt uzantılı dosyaya kopyalanacak Const ForReading = 1, ForWriting = 2, ForAppending = 3 Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0 Dim MyData As DataObject Dim FileS, f, FileTS, s Set MyData = New DataObject Set FileS = CreateObject("Scripting.FileSystemObject") PrbName = "C:\VMCs_instancesR1\" & PrbName FileS.CreateTextFile (PrbName) 'Create a file Set f = FileS.GetFile(PrbName) Set FileTS = f.OpenAsTextStream(ForWriting, TristateUseDefault) Cells.Select: Selection.Copy: Selection.Copy Selection.Copy: MyData.GetFromClipboard FileTS.Write MyData.GetText FileTS.Close Next FileNum Loop End Sub 86 EK-2. Karışık tamsayılı programlama modeli için GAMS kodları $onuellist sets j iş seti /J-1*J-6/ i makine seti /I-1*I-6/ l makine sıra seti /L-1*L-6/ h operasyon seti /H-1*H-25/ p parti seti /P-1*P-2/; alias(i,k); alias(h,hp); alias(l,lp); scalar M çok büyük bir sayı /100000/; parameter N(j) Her bir parça tipinden üretilecek miktar / J-1 30 J-2 39 J-3 20 J-4 15 J-5 25 J-6 22 /; parameter OPS(j) Her bir iş için operasyon sayısı / J-1 3 J-2 2 J-3 2 J-4 3 J-5 2 J-6 2 /; parameter MAUM(i,k) makineler arası taşıma süresi matrisi / I-1.I-2 61 I-1.I-3 38 I-1.I-4 45 I-1.I-5 71 I-1.I-6 110 I-2.I-1 61 I-2.I-3 72 I-2.I-4 101 I-2.I-5 56 I-2.I-6 94 I-3.I-1 38 I-3.I-2 72 I-3.I-4 94 I-3.I-5 55 I-3.I-6 76 I-4.I-1 45 I-4.I-2 101 I-4.I-3 94 I-4.I-5 103 I-4.I-6 102 I-5.I-1 71 I-5.I-2 56 I-5.I-3 55 I-5.I-4 103 I-5.I-6 88 I-6.I-1 110 I-6.I-2 94 I-6.I-3 76 I-6.I-4 102 I-6.I-5 88 /; 87 EK-2 (Devam). Karışık tamsayılı programlama modeli için GAMS kodları parameter MIZ(j,h,i) Operasyonların makinelerdeki işlem zamanları / J-1.H-1.I-1 2 J-1.H-1.I-2 5 J-1.H-2.I-5 6 J-1.H-2.I-6 8 J-1.H-3.I-3 8 J-1.H-3.I-4 5 J-2.H-1.I-3 9 J-2.H-1.I-4 6 J-2.H-2.I-5 3 J-2.H-2.I-6 8 J-3.H-1.I-3 5 J-3.H-1.I-4 8 J-3.H-2.I-5 6 J-3.H-2.I-6 4 J-4.H-1.I-1 6 J-4.H-1.I-2 2 J-4.H-2.I-3 3 J-4.H-2.I-4 3 J-4.H-3.I-5 6 J-4.H-3.I-6 2 J-5.H-1.I-3 10 J-5.H-1.I-4 10 J-5.H-2.I-1 4 J-5.H-2.I-2 9 J-6.H-1.I-1 4 J-6.H-1.I-2 6 J-6.H-2.I-3 6 J-6.H-2.I-4 7 / variables af amaç fonksiyon değeri Cmax en son işin en son makinedeki tamamlanma zamanı t(j,h,p) j işinin h'nci operasyonunun başlama zamanı Tm(i,l) i makinesinde l'nci sıradaki işin başlama zamanı Y(i,j,h,p) j işinin h'nci operasyonu i makinesinde yapılacaksa 1 dd 0 X(i,j,h,l,p) j işinin h'nci operasyonu i makinesinde l'nci sırada yapılacaksa 1 dd 0 Z(i,k,j,h,p) j işinin h'nci operasyonu i makinesinde ve h+1'nci operasyonu k makinesinde yapılacaksa 1 dd 0 V(j,p) j işinin p'nci partisinden üretilecek miktar ; positive variables Cmax, t, Tm; binary variables Y, X, Z; integer variables V; equations amacfonk enküçüklenecek amaç fonksiyonu kisit1 Cmax değeri tüm operasyonlarının bitiş zamanından büyük yada eişt olmalı kisit2 bir işin tüm partilerinden üretilecek toplam parça sayısı o işin parti büyüklüğüne eşit olmalı kisit3 bir işin bir operasyonunun başlayabilmesi için bir önceki operasyonunun tamamlanmış ve taşımanın yapılmış olması gerekir kisit4 bir makinenin herhangi bir sırasındaki iş önceki iş bitmeden işleme başlayamaz kisit5 ve-veya kısıtı j işinin h'nci operasyonunu i makinesinde l'nci sırada yapılacaksa başlangıç zamanları aynı olmalı kisit6 ve-veya kısıtı j işinin h'nci operasyonunu i makinesinde l'nci sırada yapılacaksa başlangıç kisit7 bir işin bir operasyonu bir makinedeki herhangi bir pozisyona atanabilir kisit8 bir işin bir opersyonu bir makineye atanmak zorundadır 88 EK-2 (Devam). Karışık tamsayılı programlama modeli için GAMS kodları kisit9 j işinin h'nci operasyonu i makinesinin atanmışsa j işi i makinesinin herhangi bir sırasında yapılacaktır. (denge kısıtı) kisit10 bir işin ardışık operasyonlarının yapılacağı makinelerle ilgili bağlayıcı kısıt (1.kısım) kisit11 bir işin ardışık operasyonlarının yapılacağı makinelerle ilgili bağlayıcı kısıt (2.kısım) kisit12 ; amacfonk.. af=e=Cmax+sum((j,p), 0.00000001*ord(p)*V(j,p)) +sum((i,j,h,p)$(ord(h) le OPS(j)), 0.00000001*Y(i,j,h,p))+sum((i,j,h,p,l)$(ord(h) le OPS(j)), 0.00000001*X(i,j,h,l,p)); kisit1(j,h,i,p)$(ord(h) eq OPS(j) and MIZ(j,h,i)ne 0).. Cmax=g=t(j,h,p)+V(j,p)*MIZ(j,h,i)-M*(1Y(i,j,h,p)); kisit2(j).. sum(p,V(j,p))=e=N(j); kisit3(i,j,h,hp,p)$(ord(hp)-ord(h)eq 1 and ord(hp)le OPS(j) and MIZ(j,h,i)ne 0).. t(j,h,p)+V(j,p)*MIZ(j,h,i)-M*(1-Y(i,j,h,p))+sum(k$(MIZ(j,hp,k)ne 0),MAUM(i,k)*Z(i,k,j,h,p))=l=t(j,hp,p); kisit4(j,h,i,l,lp,p)$(ord(h) le OPS(j) and ord(lp)-ord(l) eq 1 and MIZ(j,h,i) ne 0).. Tm(i,l)+V(j,p)*MIZ(j,h,i)=l=Tm(i,lp)+(1-X(i,j,h,l,p))*M; kisit5(j,h,i,l,p)$(ord(h) le OPS(j) and MIZ(j,h,i) ne 0).. Tm(i,l)=l=t(j,h,p)+(1-X(i,j,h,l,p))*M; kisit6(j,h,i,l,p)$(ord(h) le OPS(j) and MIZ(j,h,i) ne 0).. Tm(i,l)=g=t(j,h,p)-(1-X(i,j,h,l,p))*M; kisit7(i,l).. sum(j,sum(h$(ord(h) le OPS(j) and MIZ(j,h,i) ne 0),sum(p,X(i,j,h,l,p))))=l=1; kisit8(j,h)$(ord(h) le OPS(j)).. sum((i,p)$(MIZ(j,h,i) ne 0),Y(i,j,h,p))=g=1; kisit9(j,h,i,p)$(ord(h) le OPS(j) and MIZ(j,h,i) ne 0).. sum(l,X(i,j,h,l,p))=e=Y(i,j,h,p); kisit10(j,h,hp,i,k,p)$(ord(hp)-ord(h) eq 1 and ord(hp) le OPS(j) and MIZ(j,h,i) ne 0 and MIZ(j,hp,k) ne 0).. 2*Z(i,k,j,h,p)=l=Y(i,j,h,p)+Y(k,j,hp,p); kisit11(j,h,hp,i,k,p)$(ord(hp)-ord(h) eq 1 and ord(hp) le OPS(j) and MIZ(j,h,i) ne 0 and MIZ(j,hp,k) ne 0).. Z(i,k,j,h,p)=g=Y(i,j,h,p)+Y(k,j,hp,p)-1; kisit12(j,h,p)$(ord(h) le OPS(j)).. V(j,p)=l=M*sum(i$(MIZ(j,h,i) ne 0),Y(i,j,h,p)); model VMCs /all/; VMCs.limcol=0; VMCs.limrow=0; VMCs.reslim=3600; VMCs.iterlim=1e9; VMCs.optfile=1; VMCs.optcr=0; VMCs.prioropt=1; option solprint=off; $onecho > cplex.opt workmem 1000 nodefileind 3 $offecho solve VMCs using mip minimizing af; file outfile /_Model_J6_M3_I2_P2_R0.5_1.txt/; put outfile; put 'Job_Number'; put card(j); put /; put 'Machine_Number '; put card(i); put /; put 'Sub_Lot_Number '; put card(p); put /; put 'Objective_Value '; put af.l; put /; put 'Lower_Bound '; put VMCs.ObjEst; put /; put 'Number_of_Iteration '; put VMCs.IterUsd; put /; put 'IsOptimum '; put VMCs.ModelStat; put /; put 'CPU_Second '; put VMCs.ResUsd; put /; put /; loop((j,h,p)$t.l(j,h,p), put 't '; put j.tl;put h.tl; put p.tl; put t.l(j,h,p);put /;); put /; loop((i,l)$Tm.l(i,l), put 'Tm '; put i.tl;put l.tl; put Tm.l(i,l);put /;); put /; loop((j,p)$V.l(j,p), put 'V '; put j.tl;put p.tl; put V.l(j,p);put /;); put /; loop((i,j,h,p)$Y.l(i,j,h,p), put 'Y '; put i.tl; put j.tl; put h.tl; put p.tl; put Y.l(i,j,h,p);put /;); put /; loop((i,j,h,l,p)$X.l(i,j,h,l,p), put 'X '; put i.tl; put j.tl; put h.tl; put l.tl; put p.tl; put X.l(i,j,h,l,p);put /;); put /; loop((i,k,j,h,p)$Z.l(i,k,j,h,p), put 'Z '; put i.tl; put k.tl; put j.tl; put h.tl; put p.tl; put Z.l(i,k,j,h,p);put /;); 89 EK-3. Genetik algoritma sezgiseli için geliştirilen C++ kodları #include <clx.h> #pragma hdrstop #pragma argsused #include <stdio.h> #include <iostream.h> #include <stdlib.h> #include <time.h> #include <math.h> #include <fstream.h> int PopSize; int GenNum; int FitFunc(int **CFeasSolu); int Crossover(int **CP1, int **CP2); int Permutation(int **CFeasSolu); int Mutation(int **CFeasSolu); int FitFunc2(int **CFeasSolu); int JobNum, MacTypeNum, MaxIndMac, SubLotNum, *BatchSize, *IndMacNum, **P1, **P2; int *OperNum, **OperSeq, ***ProcTime, **DistMat, TotIndMacNum, UniChroLen, ChroLen, **Offspring, **SLS; double TToverPT, N=5.0; int main(int argc, char* argv[]) { string StrWorkFolder, StrPrbRoot, StrPrbFileName, Str; randomize(); StrWorkFolder=argv[1]; StrPrbRoot=argv[2]; StrPrbFileName=argv[3]; PopSize=atoi(argv[4]); GenNum=atoi(argv[5]); SetCurrentDir(AnsiString(StrWorkFolder.begin())); char temp[120]; FILE *ifp_,*ofp1, *ofp3 ; string path_for_input_, conv_file, best_sol_chro; path_for_input_=StrPrbRoot+StrPrbFileName; conv_file="Conv_"+StrPrbFileName; best_sol_chro="Chro_"+StrPrbFileName; fopen(conv_file.begin(),"w"); fopen(best_sol_chro.begin(), "w"); if((ifp_=fopen(path_for_input_.begin(),"r"))==NULL){ printf("The file can not open\n"); exit(1); } /*Reading data from input file*/ fscanf(ifp_, "%s", temp); fscanf(ifp_, "%s", temp); fscanf(ifp_, "%d", &JobNum); fscanf(ifp_, "%s", temp); fscanf(ifp_, "%d", &MacTypeNum); fscanf(ifp_, "%s", temp); fscanf(ifp_, "%d", &MaxIndMac); fscanf(ifp_, "%s", temp); fscanf(ifp_, "%d", &SubLotNum); fscanf(ifp_, "%s", temp); fscanf(ifp_, "%f", &TToverPT); 90 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları ofstream out; int a, b, i, j, k, l; int ***FeasSolu, **DumOpSeqSubLot, **DumFeasSolu; int JobIndex, Temp, LowLimMac=0, Prob1, Prob2, Counter, Remain, Best, Worst, Order, BestObjVal; double RoundUp, RoundDown, DivLot, RanNum, TimeDiff; //FILE *ifp, *ofp1, *ofp2, *ofp3; clock_t StartTime, EndTime; if((BatchSize=(int*)calloc(JobNum+1,sizeof(int)))==NULL){ printf("No enough space in memory\n"); exit(1); } fscanf(ifp_, "%s", temp); for(i=1; i<=JobNum; i++){ fscanf(ifp_, "%s", temp); fscanf(ifp_, "%d", &BatchSize[i]); } if((IndMacNum=(int*)calloc(MacTypeNum+1,sizeof(int)))==NULL){ printf("No enough space in memory\n"); exit(1); } fscanf(ifp_, "%s", temp); for(i=1; i<=MacTypeNum; i++){ fscanf(ifp_, "%s", temp); fscanf(ifp_, "%d", &IndMacNum[i]); } if((OperNum=(int*)calloc(JobNum+1,sizeof(int)))==NULL){ printf("No enough space in memory\n"); exit(1); } fscanf(ifp_, "%s", temp); for(i=1; i<=JobNum; i++){ fscanf(ifp_, "%s", temp); fscanf(ifp_, "%d", &OperNum[i]); } OperSeq=(int**)calloc(JobNum+1, sizeof(int*)); for(i=1; i<=JobNum; i++){ if((OperSeq[i]=(int*)calloc(MacTypeNum+1, sizeof(int)))==NULL){ printf("No enough space in memory\n"); exit(1); } } fscanf(ifp_, "%s", temp); for(i=1; i<=JobNum; i++){ fscanf(ifp_, "%s", temp); for(j=1; j<=MacTypeNum; j++){ if(j<=OperNum[i]){ fscanf(ifp_, "%d", &OperSeq[i][j]); } else break; } } ProcTime=(int***)calloc(JobNum+1, sizeof(int**)); 91 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları for(i=0; i<=JobNum; i++){ if((ProcTime[i]=(int**)calloc(MacTypeNum+1, sizeof(int*)))==NULL){ printf("No enough space in memory\n"); exit(1); } } for(i=0; i<=JobNum; i++){ for(j=0; j<=MacTypeNum; j++){ if((ProcTime[i][j]=(int*)calloc(MaxIndMac+1, sizeof(int)))==NULL){ printf("No enough space in memory\n"); exit(1); } } } fscanf(ifp_, "%s", temp); for(i=1; i<=JobNum; i++){ for(j=1; j<=MacTypeNum; j++){ if(j<=OperNum[i]){ for(k=1; k<=MacTypeNum; k++){ if(k==OperSeq[i][j]){ for(l=1; l<=IndMacNum[k]; l++){ fscanf(ifp_, "%s", temp); fscanf(ifp_, "%s", temp); fscanf(ifp_, "%s", temp); fscanf(ifp_, "%d", &ProcTime[i][j][l]); } break; } } } else break; } } /*Toplam makine sayısı hesaplanacak*/ TotIndMacNum=0; for(i=1; i<=MacTypeNum; i++){ TotIndMacNum+=IndMacNum[i]; } DistMat=(int**)calloc(TotIndMacNum+1, sizeof(int*)); for(i=0; i<=TotIndMacNum; i++){ if((DistMat[i]=(int*)calloc(TotIndMacNum+1, sizeof(int)))==NULL){ printf("No enough space in memory\n"); exit(1); } } fscanf(ifp_, "%s", temp); for(i=1; i<=TotIndMacNum; i++){ for(j=1; j<=TotIndMacNum; j++){ if(i!=j){ fscanf(ifp_, "%s", temp); fscanf(ifp_, "%s", temp); fscanf(ifp_, "%d", &DistMat[i][j]); DistMat[i][j]; } else DistMat[i][j]=0; 92 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları } } /*Bütün veriler dosyadan okundu. Kromozom uzunluğu hesaplanacak*/ UniChroLen=0; ChroLen=0; for(i=1; i<=JobNum; i++){ UniChroLen+=OperNum[i]; } ChroLen=SubLotNum*UniChroLen; /*Popülasyon hacmi kadar hafızada alan ayrılması gerekmektedir.*/ if((FeasSolu=(int***)calloc(PopSize+1,sizeof(int**)))==NULL){ printf("No enough space in memory\n"); exit(1); } for(i=0; i<=PopSize; i++){ if((FeasSolu[i]=(int**)calloc(5, sizeof(int*)))==NULL){ printf("No enough space in memory\n"); exit(1); } } for(i=0; i<=PopSize; i++){ for(j=0; j<=4; j++){ if((FeasSolu[i][j]=(int*)calloc(ChroLen+1, sizeof(int)))==NULL){ printf("No enough space in memory\n"); exit(1); } } } if((DumFeasSolu=(int**)calloc(5, sizeof(int)))==NULL){ printf("No enough space in memory\n"); exit(1); } for(i=0; i<=4; i++) if((DumFeasSolu[i]=(int*)calloc(ChroLen+1, sizeof(int)))==NULL){ printf("No enough space in memory\n"); exit(1); } if((DumOpSeqSubLot=(int**)calloc(ChroLen+1,sizeof(int*)))==NULL){ printf("No enough space in memory\n"); exit(1); } for(i=0; i<=ChroLen; i++){ if((DumOpSeqSubLot[i]=(int*)calloc(3, sizeof(int*)))==NULL){ printf("No enough space in memory\n"); exit(1); } } if((P1=(int**)calloc(5,sizeof(int*)))==NULL){ printf("No enough space in memory\n"); exit(1); } if((P2=(int**)calloc(5,sizeof(int*)))==NULL){ printf("No enough space in memory\n"); exit(1); } 93 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları for(i=0; i<=4; i++) if((P1[i]=(int*)calloc(ChroLen+1, sizeof(int)))==NULL) exit(1); for(i=0; i<=4; i++) if((P2[i]=(int*)calloc(ChroLen+1, sizeof(int)))==NULL) exit(1); if(SubLotNum==2){ if((SLS=(int**)calloc(SubLotNum+1, sizeof(int*)))==NULL) exit(1); for(i=0; i<=SubLotNum; i++) if((SLS[i]=(int*)calloc(N+2, sizeof(int)))==NULL) exit(1); } if(SubLotNum==3){ if((SLS=(int**)calloc(SubLotNum+1, sizeof(int*)))==NULL) exit(1); for(i=0; i<=SubLotNum; i++) if((SLS[i]=(int*)calloc((N+1)*(N+2)/2+1, sizeof(int)))==NULL) exit(1); } if((ofp1=fopen(conv_file.begin(), "w+"))==NULL) exit(1); for(int Dongu=1; Dongu<=1; Dongu++){ /////////////////////////////////Burada 5 defa tekrar yapılacak StartTime=clock(); /*Burada popülasyon hacmi kadar uygun çözüm üretilecek*/ for(a=1; a<=PopSize; a++){ JobIndex=0; for(i=1; i<=SubLotNum; i++){ for(j=1; j<=JobNum; j++){ for(k=1; k<=OperNum[j]; k++){ JobIndex++; DumOpSeqSubLot[JobIndex][1]=j; DumOpSeqSubLot[JobIndex][2]=i; } } } for(i=1; i<=ChroLen; i++){ Temp=random(ChroLen-i+1)+1; FeasSolu[a][2][i]=DumOpSeqSubLot[Temp][1]; FeasSolu[a][3][i]=DumOpSeqSubLot[Temp][2]; for(j=Temp+1; j<=ChroLen-i+1; j++){ DumOpSeqSubLot[j-1][1]=DumOpSeqSubLot[j][1]; DumOpSeqSubLot[j-1][2]=DumOpSeqSubLot[j][2]; } } /*burada ilgili işin ilgili operasyonu için hangi makinenin atanacağı belirlenecek*/ for(i=1; i<=ChroLen; i++){ JobIndex=0; for(j=1; j<=i; j++){ if(FeasSolu[a][2][i]==FeasSolu[a][2][j]&&FeasSolu[a][3][i]==FeasSolu[a][3][j]) JobIndex++; } for(k=1; k<OperSeq[FeasSolu[a][2][i]][JobIndex]; k++){ LowLimMac=LowLimMac+IndMacNum[k]; 94 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları } FeasSolu[a][1][i]=LowLimMac+random(IndMacNum[OperSeq[FeasSolu[a][2][i]][JobIndex]])+1; LowLimMac=0; } /*Her bir operasyonun alt partilerine eşit miktarda parti büyüklükleri dağıtılacak*/ for(i=1; i<=ChroLen; i++){ for(j=1; j<=JobNum; j++){ if(FeasSolu[a][2][i]==j){ RoundUp=ceil(BatchSize[FeasSolu[a][2][i]]/SubLotNum); RoundDown=floor(BatchSize[FeasSolu[a][2][i]]/SubLotNum); if((RoundUpBatchSize[FeasSolu[a][2][i]]/SubLotNum)>=(BatchSize[FeasSolu[a][2][i]]/SubLotNumRoundDown)){ DivLot=RoundDown; } else DivLot=RoundUp; } if(FeasSolu[a][3][i]!=SubLotNum){ FeasSolu[a][4][i]=DivLot; } else FeasSolu[a][4][i]=BatchSize[FeasSolu[a][2][i]]-(SubLotNum-1)*DivLot; } } /*Her bir çözüm uygunluk değerlerinin hesaplanması için FitFunc2 fonksiyonuna gönderiliyor*/ for(i=1; i<=4; i++) for(j=1; j<=ChroLen; j++) DumFeasSolu[i][j]=FeasSolu[a][i][j]; FeasSolu[a][0][1]=FitFunc2(DumFeasSolu); //ilgili bireyin makespan değeri 1. elemanına atanıyor. //printf("%d", FeasSolu[a][0][1]); } //popülasyon döngüsünün sonu /*Rassal olarak üretilen bireylerin Cmax değerleri hesaplandı. Artık GA'nın yapısı oluşturulacak*/ for(b=1; b<=GenNum; b++){ /*Çaprazlama operatörü için iki adet rassal birey seçiliyor*/ Prob1=random(PopSize)+1; back: Prob2=random(PopSize)+1; if(Prob1==Prob2){ goto back; } for(i=1; i<=4; i++) for(j=1; j<=ChroLen; j++){ P1[i][j]=FeasSolu[Prob1][i][j]; P2[i][j]=FeasSolu[Prob2][i][j]; } /*Ebeveynler sırasıyla premütasyon tipi gösterime dönüştürülecekler*/ Permutation(P1); Permutation(P2); Crossover(P1, P2); //Crossover fonksiyonu çağrılıyor. Mutation(Offspring); //Mutation fonksiyonu çağrılıyor. Offspring[0][1]=FitFunc2(Offspring); //Yeni üretilen bireyin amaç fonksiyonu değeri for(i=1; i<=4; i++) 95 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları for(j=1; j<=ChroLen; j++) DumFeasSolu[i][j]=Offspring[i][j]; Best=Offspring[0][1]; /*Bu noktada ilgili birey için farklı alt parti büyüklüğü kombinasyonları denenecek.*/ if(SubLotNum==2){ for(i=1; i<=JobNum; i++){ for(j=1; j<=N+1; j++){ SLS[1][j]=ceil(((j-1)/N)*BatchSize[i]); SLS[2][j]=BatchSize[i]-SLS[1][j]; for(k=1; k<=ChroLen; k++){ if((DumFeasSolu[2][k]==i)&&(DumFeasSolu[3][k]==1)) DumFeasSolu[4][k]=SLS[1][j]; if((DumFeasSolu[2][k]==i)&&(DumFeasSolu[3][k]==2)) DumFeasSolu[4][k]=SLS[2][j]; } DumFeasSolu[0][1]=FitFunc2(DumFeasSolu); if(DumFeasSolu[0][1]<Best){ for(k=1; k<=4; k++) for(l=1; l<=ChroLen; l++) Offspring[k][l]=DumFeasSolu[k][l]; Offspring[0][1]=DumFeasSolu[0][1]; Best=DumFeasSolu[0][1]; } } } } if(SubLotNum==3){ for(i=1; i<=JobNum; i++){ Counter=0; for(j=1; j<=N+1; j++){ Remain=N-j+1; for(k=1; k<=Remain+1; k++){ Counter++; SLS[1][Counter]=ceil((j-1)/N*BatchSize[i]); SLS[2][Counter]=ceil((k-1)/N*BatchSize[i]); SLS[3][Counter]=BatchSize[i]-SLS[1][Counter]-SLS[2][Counter]; } } DumFeasSolu[0][1]=FitFunc2(DumFeasSolu); if(DumFeasSolu[0][1]<Best){ for(j=1; j<=4; j++) for(k=1; k<=ChroLen; k++) Offspring[j][k]=DumFeasSolu[j][k]; Offspring[0][1]=DumFeasSolu[0][1]; Best=DumFeasSolu[0][1]; } } } /*Bu noktada popülasyondaki en kötü bireyle yeni üretilen bireyin yerleri değiştirilecek*/ Worst=0; for(a=1; a<=PopSize; a++){ if(FeasSolu[a][0][1]>Worst){ Worst=FeasSolu[a][0][1]; Order=a; 96 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları } } if(Offspring[0][1]<FeasSolu[Order][0][1]){ for(i=1; i<=4; i++) for(j=1; j<=ChroLen; j++) FeasSolu[Order][i][j]=Offspring[i][j]; FeasSolu[Order][0][1]=Offspring[0][1]; } BestObjVal=FeasSolu[1][0][1]; for(a=1; a<=PopSize; a++){ if(FeasSolu[a][0][1]<BestObjVal){ BestObjVal=FeasSolu[a][0][1]; Order=a; } } fprintf(ofp1, "%d\n", BestObjVal); }//Jenerasyon döngüsünün sonu fclose(ofp1); /*En iyi sonuç bulunup dosyaya yazdırılacak*/ EndTime=clock(); TimeDiff=(EndTime-StartTime)/CLK_TCK; bool opened; do{ opened=false; out.open("SolutionStatistics.txt", ios::app); if (out.is_open()){ opened=true; out<< StrPrbFileName <<"\t"<< JobNum <<"\t"<< MacTypeNum <<"\t"<< MaxIndMac <<"\t"<< SubLotNum <<"\t"<< TToverPT<<"\t"; out<< PopSize <<"\t"<< GenNum <<"\t"<< BestObjVal <<"\t"<< TimeDiff<<endl; out.close(); } }while(!opened); if((ofp3=fopen(best_sol_chro.begin(), "a"))==NULL) exit(1); fprintf(ofp3, "%-8d\n", BestObjVal); for(i=1; i<=4; i++){ for(j=1; j<=ChroLen; j++){ fprintf(ofp3, "%3d", FeasSolu[Order][i][j]); } fprintf(ofp3, "\n"); } fclose(ofp3); //int iii=1; } ///Tekrar dongüsünün sonu }// main fonksiyonunun sonu //****************MAİN FONKSİYONUNUN SONU********************// /****************FITFUNC FONKSİYONUNUN İÇERİĞİ****************/ int FitFunc(int **CFeasSolu){ int i, j, k, OrdForSeq, SeqIndex, OrdForMac, Count, JobPred, MacPred, SumMacNum, Diff, **CompTime, Makespan; if((CompTime=(int**)calloc(TotIndMacNum+1, sizeof(int*)))==NULL) 97 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları exit(1); for(i=0; i<=TotIndMacNum; i++) if((CompTime[i]=(int*)calloc(100, sizeof(int)))==NULL) exit(1); for(i=0; i<=TotIndMacNum; i++) //CompTime ilk değer ataması yapılıyor. for(j=0; j<100; j++) CompTime[i][j]=0; for(i=1; i<=ChroLen; i++){ OrdForSeq=0; SeqIndex=0, OrdForMac=0; for(j=1; j<i; j++){ if((CFeasSolu[2][i]==CFeasSolu[2][j])&&(CFeasSolu[3][i]==CFeasSolu[3][j])){ OrdForSeq++; SeqIndex=j; } if(CFeasSolu[1][i]==CFeasSolu[1][j]){ OrdForMac++; } } Count=0; for(j=1; j<=SeqIndex; j++){ if(CFeasSolu[1][j]==CFeasSolu[1][SeqIndex]){ Count++; } } if(SeqIndex==0) JobPred=0; else JobPred=CompTime[CFeasSolu[1][SeqIndex]][Count]+DistMat[CFeasSolu[1][SeqIndex]][CFeasSol u[1][i]]; MacPred=CompTime[CFeasSolu[1][i]][OrdForMac]; SumMacNum=0; for(j=1; j<=MacTypeNum; j++){ SumMacNum+=IndMacNum[j]; if(CFeasSolu[1][i]<=SumMacNum){ Diff=CFeasSolu[1][i]+IndMacNum[j]-SumMacNum; break; } } if(JobPred>=MacPred) CompTime[CFeasSolu[1][i]][OrdForMac+1]=JobPred+CFeasSolu[4][i]*ProcTime[CFeasSolu[2][i]][ OrdForSeq+1][Diff]; else CompTime[CFeasSolu[1][i]][OrdForMac+1]=MacPred+CFeasSolu[4][i]*ProcTime[CFeasSolu[2][i]] [OrdForSeq+1][Diff]; } Makespan=0; for(i=1; i<=TotIndMacNum; i++) for(j=1; j<100; j++) if(CompTime[i][j]>=Makespan) Makespan=CompTime[i][j]; return Makespan; } 98 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları /**************CROSSOVER FONKSİYONUNUN İÇERİĞİ****************/ int Crossover(int **CP1, int **CP2){ int i, j, k, Gene1, Gene2, Temp, Control, GenePosi, Total, Upper, Ctrl1, Ctrl2, Ctrl3, **P1SLS, **P2SLS, **OSLS; if((Offspring=(int**)calloc(5, sizeof(int*)))==NULL) exit(1); for(i=0; i<=4; i++) if((Offspring[i]=(int*)calloc(ChroLen+1, sizeof(int)))==NULL) exit(1); if((P1SLS=(int**)calloc(SubLotNum+1, sizeof(int*)))==NULL) exit(1); for(i=0; i<=SubLotNum; i++) if((P1SLS[i]=(int*)calloc(JobNum+1, sizeof(int)))==NULL) exit(1); if((P2SLS=(int**)calloc(SubLotNum+1, sizeof(int*)))==NULL) exit(1); for(i=0; i<=SubLotNum; i++) if((P2SLS[i]=(int*)calloc(JobNum+1, sizeof(int)))==NULL) exit(1); if((OSLS=(int**)calloc(SubLotNum+1, sizeof(int*)))==NULL) exit(1); for(i=0; i<=SubLotNum; i++) if((OSLS[i]=(int*)calloc(JobNum+1, sizeof(int)))==NULL) exit(1); Gene1=random(ChroLen)+1; R: Gene2=random(ChroLen)+1; if(Gene1==Gene2){ goto R; } if(Gene1>Gene2){ Temp=Gene1; Gene1=Gene2; Gene2=Temp; } for(i=1; i<=4; i++) for(j=Gene1; j<=Gene2; j++) Offspring[i][j]=CP1[i][j]; GenePosi=0; for(i=1; i<=ChroLen; i++){ Control=0; for(j=Gene1; j<=Gene2; j++){ if(CP2[2][i]==Offspring[2][j]){ Control=1; break; } } if(Control==0){ GenePosi++; if(GenePosi==Gene1) GenePosi=Gene2+1; for(k=1; k<=4; k++) Offspring[k][GenePosi]=CP2[k][i]; } } /*İlgili birey yeniden eski tip gösterime dönüştürülecek*/ 99 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları for(i=1; i<=ChroLen; i++){ Total=0; for(j=1; j<=JobNum; j++){ Total+=OperNum[j]; if(UniChroLen*(Offspring[3][i]-1)+Total>=Offspring[2][i]){ Offspring[2][i]=j; break; } } } for(i=1; i<=ChroLen; i++){ Total=0; for(j=1; j<=JobNum; j++){ Total+=OperNum[j]; if(UniChroLen*(CP1[3][i]-1)+Total>=CP1[2][i]){ CP1[2][i]=j; break; } } } for(i=1; i<=ChroLen; i++){ Total=0; for(j=1; j<=JobNum; j++){ Total+=OperNum[j]; if(UniChroLen*(CP2[3][i]-1)+Total>=CP2[2][i]){ CP2[2][i]=j; break; } } } /*Birden büyük alt parti hacimleri için yeni bireyin alt parti değerleri belirlenecek*/ if(SubLotNum==2){ for(i=1; i<=JobNum; i++){ Ctrl1=0, Ctrl2=0; for(j=1; j<=ChroLen; j++){ if(CP1[2][j]==i && CP1[3][j]==1){ P1SLS[1][i]=CP1[4][j]; Ctrl1=1; } if(CP1[2][j]==i && CP1[3][j]==2){ P1SLS[2][i]=CP1[4][j]; Ctrl2=1; } if(Ctrl1==1 && Ctrl2==1) break; } } for(i=1; i<=JobNum; i++){ Ctrl1=0, Ctrl2=0; for(j=1; j<=ChroLen; j++){ if(CP2[2][j]==i && CP2[3][j]==1){ P2SLS[1][i]=CP2[4][j]; Ctrl1=1; } 100 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları if(CP2[2][j]==i && CP2[3][j]==2){ P2SLS[2][i]=CP2[4][j]; Ctrl2=1; } if(Ctrl1==1 && Ctrl2==1) break; } } for(i=1; i<=JobNum; i++){ OSLS[1][i]=ceil((P1SLS[1][i]+P2SLS[1][i])/2.0); OSLS[2][i]=BatchSize[i]-OSLS[1][i]; } for(i=1; i<=JobNum; i++){ for(j=1; j<=ChroLen; j++){ if(Offspring[2][j]==i && Offspring[3][j]==1) Offspring[4][j]=OSLS[1][i]; if(Offspring[2][j]==i && Offspring[3][j]==2) Offspring[4][j]=OSLS[2][i]; } } } if(SubLotNum==3){ for(i=1; i<=JobNum; i++){ Ctrl1=0, Ctrl2=0, Ctrl3=0; for(j=1; j<=ChroLen; j++){ if(CP1[2][j]==i && CP1[3][j]==1){ P1SLS[1][i]=CP1[4][j]; Ctrl1=1; } if(CP1[2][j]==i && CP1[3][j]==2){ P1SLS[2][i]=CP1[4][j]; Ctrl2=1; } if(CP1[2][j]==i && CP1[3][j]==3){ P1SLS[3][i]=CP1[4][j]; Ctrl3=1; } if(Ctrl1==1 && Ctrl2==1 && Ctrl3==1) break; } } for(i=1; i<=JobNum; i++){ Ctrl1=0, Ctrl2=0, Ctrl3=0; for(j=1; j<=ChroLen; j++){ if(CP2[2][j]==i && CP2[3][j]==1){ P2SLS[1][i]=CP2[4][j]; Ctrl1=1; } if(CP2[2][j]==i && CP2[3][j]==2){ P2SLS[2][i]=CP2[4][j]; Ctrl2=1; } if(CP2[2][j]==i && CP2[3][j]==3){ P2SLS[3][i]=CP1[4][j]; 101 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları Ctrl3=1; } if(Ctrl1==1 && Ctrl2==1 && Ctrl3==1) break; } } for(i=1; i<=JobNum; i++){ OSLS[1][i]=ceil((P1SLS[1][i]+P2SLS[1][i])/2.0); OSLS[2][i]=ceil((P1SLS[2][i]+P2SLS[2][i])/2.0); OSLS[3][i]=BatchSize[i]-OSLS[1][i]-OSLS[2][i]; } for(i=1; i<=JobNum; i++){ for(j=1; j<=ChroLen; j++){ if(Offspring[2][j]==i && Offspring[3][j]==1) Offspring[4][j]=OSLS[1][i]; if(Offspring[2][j]==i && Offspring[3][j]==2) Offspring[4][j]=OSLS[2][i]; if(Offspring[2][j]==i && Offspring[3][j]==3) Offspring[4][j]=OSLS[3][i]; } } } /*Çaprazlama operatöründen üretilebilecek infeasible sonuçlar için bir tamir mekanizması çalıştırılacak*/ for(i=1; i<=ChroLen; i++){ Total=0, Upper=0; for(j=1; j<=i; j++) if((Offspring[2][i]==Offspring[2][j])&&(Offspring[3][i]==Offspring[3][j])) Total++; for(j=1; j<=OperSeq[Offspring[2][i]][Total]; j++) Upper+=IndMacNum[j]; if(!((Offspring[1][i]<=Upper)&&(Offspring[1][i]>UpperIndMacNum[OperSeq[Offspring[2][i]][Total]]))){ for(j=i+1; j<=ChroLen; j++){ if((Offspring[2][i]==Offspring[2][j])&&(Offspring[3][i]==Offspring[3][j])){ if((Offspring[1][j]<=Upper)&&(Offspring[1][j]>UpperIndMacNum[OperSeq[Offspring[2][j]][Total]])){ Temp=Offspring[1][j]; Offspring[1][j]=Offspring[1][i]; Offspring[1][i]=Temp; break; } } } } } return 0; } /*********MUTATION FONKSİYONUNUN İÇERİĞİ****************/ int Mutation(int **CFeasSolu){ int i, j, k, Locus, Total=0, NewMac=0, **CCFeasSolu, Total2=0; if((CCFeasSolu=(int**)calloc(5, sizeof(int*)))==NULL) exit(1); 102 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları for(i=0; i<=4; i++) if((CCFeasSolu[i]=(int*)calloc(ChroLen+1, sizeof(int)))==NULL) exit(1); /*İlk olarak makine atama kısmı için mutasyon işlemi yapılacak*/ Locus=random(ChroLen)+1; for(i=1; i<=MacTypeNum; i++){ Total+=IndMacNum[i]; if(CFeasSolu[1][Locus]<=Total){ R1: NewMac=Total-IndMacNum[i]+random(IndMacNum[i])+1; if(NewMac==CFeasSolu[1][Locus]) goto R1; CFeasSolu[1][Locus]=NewMac; break; } } for(i=1; i<=4; i++) for(j=1; j<=ChroLen; j++) CCFeasSolu[i][j]=CFeasSolu[i][j]; /*Şimdi operasyon sırasıına mutasyon operatörü uygulanacak*/ for(i=1; i<=4; i++) for(j=1; j<=ChroLen-Locus; j++) CFeasSolu[i][j]=CCFeasSolu[i][Locus+j]; for(i=1; i<=4; i++) for(j=1; j<=Locus; j++) CFeasSolu[i][ChroLen-Locus+j]=CCFeasSolu[i][j]; /*Tekrar bir tamir mekanizması gerekiyor*/ for(i=1; i<=ChroLen; i++){ Total=0; Total2=0; for(j=1; j<=i; j++) if((CFeasSolu[2][i]==CFeasSolu[2][j])&&(CFeasSolu[3][i]==CFeasSolu[3][j])) Total++; for(j=1; j<=ChroLen; j++) if((CCFeasSolu[2][j]==CFeasSolu[2][i])&&(CCFeasSolu[3][j]==CFeasSolu[3][i])){ Total2++; if(Total2==Total){ for(k=1; k<=4; k++) CFeasSolu[k][i]=CCFeasSolu[k][j]; Total2=0; break; } } } return 0; } /**********PERMUTATION FONKSİYONUNUN İÇERİĞİ****************/ int Permutation(int **CFeasSolu){ int i,j, SumMacNum, OrdForSeq, *COperSeq; if((COperSeq=(int*)calloc(ChroLen+1, sizeof(int)))==NULL) exit(1); for(i=1; i<=ChroLen; i++){ SumMacNum=0; for(j=1; j<CFeasSolu[2][i]; j++) SumMacNum+=OperNum[j]; 103 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları OrdForSeq=0; for(j=1; j<=i; j++) if((CFeasSolu[2][i]==CFeasSolu[2][j])&&(CFeasSolu[3][i]==CFeasSolu[3][j])) OrdForSeq++; COperSeq[i]=(CFeasSolu[3][i]-1)*UniChroLen+SumMacNum+OrdForSeq; } for(i=1; i<=ChroLen; i++) CFeasSolu[2][i]=COperSeq[i]; return 0; } /*************FITFUNC2 FONKSİYONUNUN İÇERİĞİ*******************/ int FitFunc2(int **CFeasSolu){ int i, j, k, l, m, n, OrdForSeq, SeqIndex, OrdForMac, Count, JobPred, MacPred, SumMacNum, Diff, **CompTime, **StartTime, Makespan; int Done, Temp1, Temp2, Temp3, Temp4, C1, C2; if((CompTime=(int**)calloc(TotIndMacNum+1, sizeof(int*)))==NULL) exit(1); if((StartTime=(int**)calloc(TotIndMacNum+1, sizeof(int*)))==NULL) exit(1); for(i=0; i<=TotIndMacNum; i++) if((CompTime[i]=(int*)calloc(100, sizeof(int)))==NULL) exit(1); for(i=0; i<=TotIndMacNum; i++) //CompTime ilk değer ataması yapılıyor. for(j=0; j<100; j++) CompTime[i][j]=0; for(i=0; i<=TotIndMacNum; i++) if((StartTime[i]=(int*)calloc(100, sizeof(int)))==NULL) exit(1); for(i=0; i<=TotIndMacNum; i++) //StartTime ilk değer ataması yapılıyor. for(j=0; j<100; j++) StartTime[i][j]=0; for(i=1; i<=ChroLen; i++){ OrdForSeq=0, SeqIndex=0, OrdForMac=0; for(j=1; j<i; j++){ if((CFeasSolu[2][i]==CFeasSolu[2][j])&&(CFeasSolu[3][i]==CFeasSolu[3][j])){ OrdForSeq++; SeqIndex=j; } if(CFeasSolu[1][i]==CFeasSolu[1][j]){ OrdForMac++; } } Count=0; for(j=1; j<=SeqIndex; j++){ if(CFeasSolu[1][j]==CFeasSolu[1][SeqIndex]){ Count++; } } if(SeqIndex==0) JobPred=0; else JobPred=CompTime[CFeasSolu[1][SeqIndex]][Count]+DistMat[CFeasSolu[1][SeqIndex]][CFeasSol u[1][i]]; MacPred=CompTime[CFeasSolu[1][i]][OrdForMac]; SumMacNum=0; for(j=1; j<=MacTypeNum; j++){ 104 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları SumMacNum+=IndMacNum[j]; if(CFeasSolu[1][i]<=SumMacNum){ Diff=CFeasSolu[1][i]+IndMacNum[j]-SumMacNum; break; } } Count=0; Done=0; for(j=1; j<i; j++){ if(CFeasSolu[1][i]==CFeasSolu[1][j]){ Count++; /*İşlemler birinci durum için yapılacak*/ if((JobPred>=CompTime[CFeasSolu[1][i]][Count1])&&(JobPred+CFeasSolu[4][i]*ProcTime[CFeasSolu[2][i]][OrdForSeq+1][Diff]<=StartTime[CFea sSolu[1][i]][Count])){ Done=1; Temp1=CFeasSolu[1][i]; Temp2=CFeasSolu[2][i]; Temp3=CFeasSolu[3][i]; Temp4=CFeasSolu[4][i]; for(k=i; k>j; k--) for(l=1; l<=4; l++) CFeasSolu[l][k]=CFeasSolu[l][k-1]; CFeasSolu[1][j]=Temp1; CFeasSolu[2][j]=Temp2; CFeasSolu[3][j]=Temp3; CFeasSolu[4][j]=Temp4; for(k=OrdForMac; k>=Count; k--){ StartTime[CFeasSolu[1][j]][k+1]=StartTime[CFeasSolu[1][j]][k]; CompTime[CFeasSolu[1][j]][k+1]=CompTime[CFeasSolu[1][j]][k]; } StartTime[CFeasSolu[1][j]][Count]=JobPred; CompTime[CFeasSolu[1][j]][Count]=JobPred+CFeasSolu[4][j]*ProcTime[CFeasSolu[2][j]][OrdForS eq+1][Diff]; C1=0; C2=0; for(k=j+1; k<=i; k++){ if((CFeasSolu[2][k]==CFeasSolu[2][j])&&(CFeasSolu[3][k]==CFeasSolu[3][j])){ Temp1=CFeasSolu[1][k]; Temp2=CFeasSolu[2][k]; Temp3=CFeasSolu[3][k]; Temp4=CFeasSolu[4][k]; for(l=k; l>j+C1+C2; l--) for(m=1; m<=4; m++) CFeasSolu[m][l]=CFeasSolu[m][l-1]; CFeasSolu[1][j+C1+C2]=Temp1; CFeasSolu[2][j+C1+C2]=Temp2; CFeasSolu[3][j+C1+C2]=Temp3; CFeasSolu[4][j+C1+C2]=Temp4; C1++; for(l=j+C1+C2; l<=k; l++){ if(CFeasSolu[1][l]==CFeasSolu[1][j+C1+C2-1]){ Temp1=CFeasSolu[1][l]; Temp2=CFeasSolu[2][l]; Temp3=CFeasSolu[3][l]; Temp4=CFeasSolu[4][l]; for(m=l; m>j+C2; m--) for(n=1; n<=4; n++) CFeasSolu[n][m]=CFeasSolu[n][m-1]; CFeasSolu[1][j+C2]=Temp1; CFeasSolu[2][j+C2]=Temp2; CFeasSolu[3][j+C2]=Temp3; CFeasSolu[4][j+C2]=Temp4; C2++; } } 105 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları } } break; } /*Aynı işlemler ikinci durum için de yapılacak*/ if((JobPred<CompTime[CFeasSolu[1][i]][Count1])&&(CFeasSolu[4][i]*ProcTime[CFeasSolu[2][i]][OrdForSeq+1][Diff]<=StartTime[CFeasSolu[1][ i]][Count]-CompTime[CFeasSolu[1][i]][Count-1])){ Done=1; Temp1=CFeasSolu[1][i]; Temp2=CFeasSolu[2][i]; Temp3=CFeasSolu[3][i]; Temp4=CFeasSolu[4][i]; for(k=i; k>j; k--) for(l=1; l<=4; l++) CFeasSolu[l][k]=CFeasSolu[l][k-1]; CFeasSolu[1][j]=Temp1; CFeasSolu[2][j]=Temp2; CFeasSolu[3][j]=Temp3; CFeasSolu[4][j]=Temp4; for(k=OrdForMac; k>=Count; k--){ StartTime[CFeasSolu[1][j]][k+1]=StartTime[CFeasSolu[1][j]][k]; CompTime[CFeasSolu[1][j]][k+1]=CompTime[CFeasSolu[1][j]][k]; } StartTime[CFeasSolu[1][j]][Count]=CompTime[CFeasSolu[1][j]][Count-1]; CompTime[CFeasSolu[1][j]][Count]=StartTime[CFeasSolu[1][j]][Count]+CFeasSolu[4][j]*ProcTime [CFeasSolu[2][j]][OrdForSeq+1][Diff]; C1=0; C2=0; for(k=j+1; k<=i; k++){ if((CFeasSolu[2][k]==CFeasSolu[2][j])&&(CFeasSolu[3][k]==CFeasSolu[3][j])){ Temp1=CFeasSolu[1][k]; Temp2=CFeasSolu[2][k]; Temp3=CFeasSolu[3][k]; Temp4=CFeasSolu[4][k]; for(l=k; l>j+C1+C2; l--) for(m=1; m<=4; m++) CFeasSolu[m][l]=CFeasSolu[m][l-1]; CFeasSolu[1][j+C1+C2]=Temp1; CFeasSolu[2][j+C1+C2]=Temp2; CFeasSolu[3][j+C1+C2]=Temp3; CFeasSolu[4][j+C1+C2]=Temp4; C1++; for(l=j+C1+C2; l<=k; l++){ if(CFeasSolu[1][l]==CFeasSolu[1][j+C1+C2-1]){ Temp1=CFeasSolu[1][l]; Temp2=CFeasSolu[2][l]; Temp3=CFeasSolu[3][l]; Temp4=CFeasSolu[4][l]; for(m=l; m>j+C2; m--) for(n=1; n<=4; n++) CFeasSolu[n][m]=CFeasSolu[n][m-1]; CFeasSolu[1][j+C2]=Temp1; CFeasSolu[2][j+C2]=Temp2; CFeasSolu[3][j+C2]=Temp3; CFeasSolu[4][j+C2]=Temp4; C2++; } } } } break; } } //if döngüsünün kıvırcığı } //j değişkeninin döngüsü if(Done==0){ 106 EK-3 (Devam). Genetik algoritma sezgiseli için geliştirilen C++ kodları if(JobPred>=MacPred){ StartTime[CFeasSolu[1][i]][OrdForMac+1]=JobPred; CompTime[CFeasSolu[1][i]][OrdForMac+1]=JobPred+CFeasSolu[4][i]*ProcTime[CFeasSolu[2][i]][ OrdForSeq+1][Diff]; } else{ StartTime[CFeasSolu[1][i]][OrdForMac+1]=MacPred; CompTime[CFeasSolu[1][i]][OrdForMac+1]=MacPred+CFeasSolu[4][i]*ProcTime[CFeasSolu[2][i]] [OrdForSeq+1][Diff]; } } }//i değişkeninin döngüsü Makespan=0; for(i=1; i<=TotIndMacNum; i++) for(j=1; j<100; j++) if(CompTime[i][j]>=Makespan) Makespan=CompTime[i][j]; return Makespan; } //--------------------------------------------------------------------------- 107 ÖZGEÇMİŞ Kişisel Bilgiler Soyadı, adı : KESEN, Saadettin Erhan Uyruğu : T.C. Doğum tarihi ve yeri : 06.01.1980 Adana Medeni hali : Evli Telefon : 0 (312) 582 38 03 Faks : 0 (312) 230 84 34 e-mail : [email protected] Eğitim Derece Yüksek Lisans Eğitim Birimi Selçuk Üni./Endüstri Müh. ABD Mezuniyet Tarihi 2004 Lisans Selçuk Üni./Endüstri Müh. 2001 Lise Borsa Lisesi 1996 Yıl Yer Görev 2002-2004 Selçuk Üniversitesi Araştırma Görevlisi 2004- Gazi Üniversitesi Araştırma Görevlisi İş Deneyimi Yabancı Dil İngilizce Hobiler Futbol, Tenis, Yüzme