5. Uluslararası İleri Teknolojiler Sempozyumu (IATS’09), 13-15 Mayıs 2009, Karabük, Türkiye GENETİK ALGORİTMA KULLANILARAK MALİYET TABANLI BİLGİSAYAR KONGİFÜRASYONU BELİRLEME DETERMINING COST BASED PC CONFIGURATION USING GENETIC ALGORITHM a Mehmet GÖK a ve Cevdet GÖLOĞLU b,* Karabük Üniversitesi, Fen Bilimleri Enstitüsü, Karabük, Türkiye, E-posta: [email protected] b, * Karabük Üniversitesi, Tasarım ve Konstrüksiyon Anabilim Dalı, 78050, Karabük, Türkiye E-posta: [email protected] Özet Günümüzde kişisel bilgisayar konfigürasyonları genel olarak donanım tabanlı olarak yapılmaktadır. Örneğin işlemci, anakart vb. bileşenler belirlenmekte ve sonrasında maliyet hesabı yapılmaktadır. Ancak bu durum müşterileri birçok alternatiften uzak tutmakta ve zengin konfigürasyonlar elde edilemeyebilmektedir. Ayrıca donanım tabanlı konfigürasyon oluşturma işlemi donanım alternatifleri arttıkça güçleşecek ve uzun zaman alacaktır. Bu çalışmada Genetik Algoritma (GA) kullanılarak maliyeti verilmiş olan bir bilgisayar konfigürasyonunun farklı alternatiflerle kısa zamanda elde edilmesi üzerinde durulmuştur. Bu amaçla GENOEM adında bir bilgisayar yazılımı geliştirilmiştir. Anahtar kelimeler: Genetik Algoritma (GA), Kişisel bilgisayar konfigürasyonu, Eniyilenim. Abstract Today personal computer configurations are generally constituted based on hardware components. For example processor, motherboard, etc. are selected and then cost of this configuration is calculated. But in this case customers cannot see many other alternatives and rich configurations cannot be formed. In addition, it would be hard to make component based configuration when there many component alternatives and would take too much time. In this paper, obtaining a personal computer configuration at a desired cost in a short time using Genetic Algorithm (GA) is considered. Computer software called GENOEM has been developed for this purpose. Keywords: Genetic Algorithm (GA), Personal computer configuration, Optimization. 1. Giriş Günümüzde kişisel bilgisayar konfigürasyonları genel olarak donanım tabanlı olarak yapılmaktadır. Örneğin işlemci, anakart vb. bileşenler belirlenmekte ve sonrasında maliyet hesabı yapılmaktadır. Ancak bu durum müşterileri birçok alternatiften uzak tutmakta ve zengin konfigürasyonlar elde edilemeyebilmektedir. Ayrıca donanım tabanlı konfigürasyon oluşturma işlemi donanım alternatifi arttıkça güçleşecek ve uzun zaman alacaktır. Bazı bilgisayar firmaları geliştirdikleri bilgisayar konfigürasyonu toplama sihirbazları ile bu olumsuzluğun önüne geçmişlerdir. Ancak bu tür uygulamalar da © IATS’09, Karabük Üniversitesi, Karabük, Türkiye bilgisayar firmalarının stokları ile sınırlı olup çok hızlı bir şekilde maliyet odaklı konfigürasyon oluşturma seçenekleri sunmamaktadır. Bu çalışmada Genetik Algoritma (GA) kullanılarak, maliyeti verilmiş olan bir bilgisayar konfigürasyonunun farklı alternatiflerle kısa zamanda elde edilmesi üzerinde durulmuştur. Bu amaçla GENOEM adında bir bilgisayar yazılımı geliştirilmiştir. Geliştirilen bilgisayar yazılımı gömülü veritabanı ile stok bilgilerini tutmakta ve GA yardımı ile bilgisayar konfigürasyonlarını belirlemektedir. Yazılımın kullanıcı arabirimi stok bilgilerinin kolaylıkla girilmesini ve güncellenebilmesini sağlamaktadır. Geriye kullanıcıya kalan tek bir butonla genetik algoritmayı çalıştırılmak ve hesaplama sonuçlarını görmektir. 2. Yazılımın Geliştirilmesi Yazılımın geliştirilmesi için güçlü görsel bileşen desteğine sahip C++ Builder 2007; veritabanı erişimi için ZEOS veritabanı erişim nesneleri kullanılmıştır. Yazılım tarafından kullanılan gömülü veritabanı ise açık kaynak kodlu SQLite veritabanıdır. Yazılım geliştirme sürecinin ilk basağında bilgisayar bileşenlerinin tutulacağı çizelgeler belirlenmiş ve veritabanı tasarımı yapılmıştır. Ardından yazılım geliştirme ortamında stok bilgilerinin girileceği ve güncelleneceği kullanıcı arabirimi geliştirilmiştir. Son olarak yazılıma kullanıcının GA ile konfigürasyon hesaplaması yaptırdığı bölüm ile arabirim tamamlanmıştır. 2.1. Veritabanı Tasarımı Stok bilgilerinin yönetilmesini sağlayan veritabanın tasarımı için SQLite Administrator adlı açık kaynak kodlu yazılım kullanılmıştır. Tasarlanan veritabanı bilgisayar konfigürasyonunu oluşturan bileşenlerin ayrı ayrı tutulduğu yedi çizelge içermektedir. Bu çizelgeler işlemci, anakart, bellek, sabit disk, ekran kartı, kasa ve ekran çizelgeleridir (Şekil 1). Bu çizelgeler, tasarımın sade ve anlaşılabilir olması açısından en gerekli alanlarla oluşturulmuştur. Örneğin işlemcileri tutan çizelgede GA tarafından kullanılan “fiyat” ve işlemci-anakart uyumluluğunun kontrol edildiği “form” alanları zorunlu alanlar olup “işlemci” adlı alan işlemciye ait bilgilendirme alanıdır (Şekil 2). Her bir çizelgede yer alan ortak alanlardan biri olan “kimlik” alanı “otomatik artan” tipinde bir alan olup bileşene özel kimlik numaraları tutmaktadır. Tasarlanmış olan yazılımdan her bir bileşene erişim bu kimlik numaraları ile sağlanmaktadır. Diğer bir ortak alan “stok” adlı alan olup bileşenin stokta olup olmadığının kontrolü için kullanılmaktadır. Geliştirilen yazılımın GA icrasında ihtiyaca göre değişebilen uzunlukla Gök, M. ve Göloğlu, C. kromozom yapısı kullanıldığından istendiğinde veritabanına farklı bileşenler için çizelge eklenmesi ve yazılımın hızlı olarak güncellenmesi kolaylıkla yapılabilmektedir. İşlemciler GENOEM.DB Ekranlar olarak kullanılacak bileşenler güncelleme arabiriminden bağımsız olarak getirilir. Arabirimden bağımsız veri getirilmesinin nedeni sadece stokta olan ve uygun özelliklere sahip bileşenlerin genetik algoritma hesaplanmasında kullanılacak olmasıdır. GENOEM.DB Ekran Kartları SQLITE Veritabanı Anakartlar Bellekler SQLITE Veritabanı Kasalar Sabit Diskler İşlemciler Anakartlar Bellekler Şekil1. Veritabanı yapısı ... Şekil 2. İşlemciler çizelgesinin yapısı TZConnection (Bağlantı) 2.2. Kullanıcı Arabirimin Geliştirilmesi Kullanıcı arabiriminin geliştirilmesinde en önemli aşama veritabanı bağlantısının gerçekleştirilmesi ve çizelgedeki bilgilere erişimin sağlanabilmesidir. Veri tabanına erişim için uzun zaman alan ve yönetimi zor olan kod yazma yöntemi yerine tasarım aracına yüklenen ZEOS veritabanı erişim bileşenleri (nesneleri) kullanılmıştır. Bu bileşenler SQLite dahil birçok veritabanına nesne tabanlı yaklaşım ile erişim imkanı sağlamaktadır. Tasarlanan yazılımın veritabanı dosyasına (Genoem.db) bağlantı için TZConnection (bağlantı) bileşeni kullanılmıştır [1]. Bu bileşen yazılımın veritabanına bağlanmakta ve diğer işlem bileşenleri için bir ortak bir yol açmaktadır. Stoğun her bir çizelgesindeki bilgilerin getirilmesi ve yönetimi için ayrı ayrı TZQuery (sorgu) bileşenleri kullanılmıştır. Her bir sorgu, ilişkili olduğu çizelgedeki bilgileri bellekte tutmaktadır. Örneğin işlemci sorgusu, işlemcilere ait bilgileri veritabanındaki işlemci çizelgesinden getirmekte ve bu bilgileri bellekte tutmaktadır. Bu bilgiler, TDataSource (veri kaynağı) bileşenleri yardımıyla veri bilinçli denetimlere aktarılmaktadır. Söz konusu veri bilinçli denetimlerden ilki TDBGrid (Izgara) bileşenidir. Bu bileşen, bilgilerin çizelge halinde görüntülenmesini ve düzenlenmesini sağlamaktadır. Diğeri ise veri satırları ile ilgili işlemlerin (kaydetme, silme vb.) yapılmasını sağlayan TDBNavigator (gezgin) bileşenidir (Şekilo3). TZConnection, TZQuery ve TDataSource bileşenleri sadece tasarım anında görülmekte ve tasarımın hızlıca yapılmasını sağlamaktadır. Yazılım çalıştıktan sonra bu bileşenler görünmezken verilerin güncellenmesini sağlayan TDBGrid ve TDBNavigator nesneleri kullanıcı arabiriminin bir parçası olarak kullanıcıya gözükür. GA çalışmadan önce salt okunur sorgular (TZReadQnlyQuery) yardımıyla da girdi TZQuery (Sorgu) TDBGrid (Izgara) TDataSource (Veri Kaynağı) TBNavigator (Gezgin) Şekil 3. Veritabanından gelen bilginin veri erişim nesneleri arasında akışı ve kullanılan erişim nesneleri 2.3. Kromozom Yapısının Oluşturulması Geliştirilmiş olan yazılımda her bir kromozom stokta tutulan bilgisayar bileşenlerinin oluşturduğu bir konfigürasyon olarak düşünülmüştür. Problemin çözümü için kullanılan kromozom yapısının oluşturulmasında ikili kodlama (Binary Encoding) yöntemi kullanılmıştır [2]. Şekil 4’te bilgisayar bileşenlerinin bu kromozoma yerleşimi görülmektedir. Ekranlar Kasalar Ekran Sabit Bellekler Anakartlar İşlemciler Kartları Diskler Şekil 4. Kromozom yapısı Stoktaki bilgisayar bileşeni sayısı değişebileceğinden bu kromozomun uzunluğu girdi sayılarına göre değiştirilmektedir. Örneğin 8 adet INTEL markalı işlemci varken işlemci için gereken bit sayısı 3 iken stok çizelgesinden 10 adet işlemci bu değer 4 olacaktır. 10 adet işlemci var iken 4-bitlik kodlamadan kaynaklanan 15’e kadar olan girdi değerleri ile karşılaşılabileceğinden kromozomdaki alellerin onlu tabana (decimal) dönüşümü sonrasında aralık dönüşüm fonksiyonu kullanılmaktadır (1) [3, 4]. BN = 1 + decimal( BIK ) × BA − 1 2b −1 (1) Denklem (1)’de verilen fonksiyonda BN, ikili kodun karşılık geldiği bileşen numarasını; BIK, bileşenin ikili kodunu; BA Gök, M. ve Göloğlu, C. ise stoktaki bileşen adedini belirtmektedir. Çözümden kullanılan kromozomun programlama dilinde ifade edilmesi için özel tip tanımlı C++ yapısı (struct) kullanılmıştır (Şekil 5). typedef struct { unsigned short *gen; int uygunluk; } TKromozom ; Şekil 5. Kromozomun kullanıcı tipi olarak tanımlanması Şekil 5’te verilen kromozom tipi yapısındaki gen tanımı işaretsiz kısa tamsayı gösterici (pointer) tipindedir. Gen tanımının bu şekilde yapılması, gereken bit sayısı kadar genin bellekten istenmesi ve hesaplama bittiğinde tekrar belleğe iade edilmesini kolaylaştırmaktır [5]. Genetik algoritmanın çalışması sırasında her bir kromozom dinamik olarak bellekte oluşturulmakta ve ardından gereken bit sayısı kadar gen bellekten istenmektedir (Şekil 6). Bellekten yer ayırma işlemi için C++ new operatörü kullanılmıştır. TKromozom *birey = new TKromozom; birey->gen = new unsigned short[toplamBit]; birey->uygunluk = 0; Şekil 6. Kromozomun bellekten istenmesi ve genler için bellekten yer ayrılması Genler için gereken toplam bit sayısının hesabı için öncelikle her bir bilgisayar bileşenin adedi için gereken ikili bit sayısı ayrı ayrı hesaplanıp sonrasında toplama işlemi yapılmaktadır. Bu toplama işlemi sonucu toplamBit adlı değişkene atanmaktadır. Bu noktada gen sayısı için gereken bit sayısı kullanıcının kullanıcı arabiriminde seçtiği platform tipine ve stoktaki ürünleri sayısına bağlıdır. Örneğin kullanıcı, yazılımın arabiriminde AMD tipinde platform seçtiğinde AMD marka işlemci ile beraber bu işlemci markası ile uyumlu anakartlar bellekten getirilmektedir. Daha sonra stoktaki diğer bileşenler getirilmekte ve kromozom uzunluğu için gereken bit sayısı hesabı yapılmaktadır (Şekil 7). 2.4. Bileşenlerin Bellekte Tutulması Gereken koşulları sağlayan bilgisayar bileşenleri salt okunur sorgu bileşenleri (TZReadonlyQuery) yardımıyla veritabanından gerildikten sonra her bir bileşen kendi için tanımlanmış yapılar (structs) yardımıyla GA uygunluk fonksiyonunun kullanacağı parametrelerle beraber listelere alınır. Bahsedilen parametrelere (fiyat, form vb.) sorgu nesnesi ile direkt ulaşılabilmesine rağmen liste yöntemi tercih edilmiştir. Çünkü uygunluk fonksiyonunun her hesaplanışında diske veri erişimi yapılmakta ve bu da hızı önemli ölçüde düşürmektedir. Disk erişimi yerine sadece gereken parametrelerin tutulduğu bellek listelerine erişim ile uygunluk fonksiyonunun çalışma hızı artırılmıştır. Bileşenler listelere alınmadan önce sadece gerekli parametrelerle ayrı bir bellek alanına yerleştirilmekte ve ilgili olduğu listeye gösterici (pointer) adresleri yardımıyla eklenmektedir. Her bir bileşen türünün listesi TList tipindeki liste sınıfları aracılığı ile tutulmaktadır. Her bir bileşen tipi için de gerekli parametreleri içeren yapılar (struct) tanımlanmıştır. Başla Platform tipini seç INTEL AMD ? Stoktaki INTEL İşlemcileri getir. Stoktaki AMD İşlemcileri getir. Stoktaki INTEL uyumlu Anakartları getir. Stoktaki AMD uyumlu Anakartları getir. Stoktaki diğer bileşenleri getir. Her bir bileşen sayısı için gerekli bir sayılarını ayrı ayrı hesapla. Her bir bileşen için gerekli Bit sayılarını topla ve toplamBit Değişkenine ata. Dur Şekil 7. Bileşenlerin veritabanından getirilmesi ve kromozom uzunluğu hesabına ilişkin akış şeması Örneğin bir işlemci için gereken parametrele fiyat ve formdur. Maliyet hesaplanırken işlemcinin fiyatı; seçilen anakartla pin uyumluğu olup olmadığını kontrol için ise form parametresi kullanılır. Bu noktada marka parametresine ihtiyaç duyulmamaktadır çünkü bir önceki basamakta kullanıcı platform tipini seçerken markayı zaten belirlemiştir. Anakart bileşeninin gerekli parametreleri fiyat, DDR2, DDR3, formdur ve VGA’dır (Şekil 8). DDR2 ve DDR3 alanları anakartların bellek uyumluluğunun testi için kullanılmaktadır. Şu an sadece DDR2, sadece DDR3 ve her iki bellek tipini destekleyen anakartlar satılmaktadır. Anakarta ait bu parametreler seçim (check) alanları yardımıyla kullanıcı arabiriminden kolayca ayarlanabilmektedir. Anakarta ait form alanı işlemci pin uyumluluğunun kontrolü için kullanılmaktadır. VGA alanı ise anakartta tümleşik grafik biriminin olup olmadığı kontrol edilmektedir. Eğer anakarta tümleşik grafik birimi var ise optimum maliyet ekran kartı olmaksızın yapılmaktadır. Bu durumda kullanıcı arabirimindeki bilgilendirme alanı yardımıyla kullanıcı bilgilendirilmektedir. Bellek bileşeni ise fiyat ve tip alanlarını içermektedir. Belleğin tip alanı yardımıyla anakarta ait bellek uyumluluğu kontrolü yapılmaktadır. Diğer bileşenlerin belleğe alınması için ise sadece fiyat alanı kullanılmıştır. typedef struct { int fiyat; bool DDR2; bool DDR3; bool VGA; String form;} TAnakart; Şekil 8. Anakart bileşeninin gereken alanlarla beraber bellekte tutulması için oluşturulmuş yapı (struct). Gök, M. ve Göloğlu, C. 2.5. Genetik Algoritmanın Uygunluk Fonksiyonu Başla Bu çalışmada uygunluk fonksiyonu, her bir kromozomun ifade ettiği maliyet değerinden hedef maliyet değerini çıkardıktan sonra farkın mutlak değerini hesaplamaktadır. Bu çalışma şekliyle uygunluk fonksiyonunun görevi “en küçük değeri aramak” olarak ifade edilebilir [6]. Kullanılan uygunluk fonksiyonu, kendisine parametre olarak gönderilen kromozomunun bellek adresi yoluyla kromozoma ulaşmakta ve uygunluk değerini hesaplayıp kromozomun uygunluk değeri alanına hesaplama sonucunu yazmaktadır. Uygunluk fonksiyonu hesaplamayı yaparken ilk olarak kromozomu oluşturan parçaların ikili değerlerini onluk değere çevirir. Çevrilmiş olan bu ondalık değerleri aralık dönüşüm fonksiyonu kullanarak geçerli indis değerleri haline getirir. Bu sayede 10 işlemci olan bir stokta ondalık dönüşüm sonrasında 12 değerine sahip bir indisin ortaya çıkması engellenir. Daha sonra bu indis değeri yardımıyla önceden belleğe alınmış olan bileşen listesinden ilgili elemanın fiyatı ve parametreleri alınır. Bu işlem kromozomu oluşturan her bir bilgisayar bileşeni için tekrarlanıp toplam maliyet değeri hesaplanır. Bu toplam maliyet değeri hedef maliyet değerinden çıkarılır ve farkın mutlak değeri alınır. Bu aşama sonrasında anakartta tümleşik grafik biriminin olup olmadığı kontrolü yapılmaktadır. Eğer anakarta tümleşik grafik birimi var ise toplam fiyattan ekran kartı fiyatı çıkarılarak optimum maliyet hesabı yapılmaktadır. Bu durumda kullanıcı bilgilendirme alanı ile uyarılmaktadır. Bu noktada elde edilen sonuç kromozomun uygunluk alanına atanır. Kromozomun ifade ettiği bilgisayar konfigürasyonundaki bileşenlerin birbirine uyumlu olup olmadığı bu adımdan sonra kontrol edilmektedir. Bu kontrollerden ilki işlemci pin sayısının ve anakarttaki işlemci soketinin pin sayısının karşılaştırılmasıdır. Bu kontrol için her iki bileşenin de yapısında form alanları tanımlanmıştır. Bu çalışmada kullanılan veritabanında bulunan INTEL işlemcilerde ve uyumlu anakartlarda iki soket tipi vardır. Bunlar LGA775 ve LGA1366 formlarıdır. Aynı şekilde AMD işlemci ve uyumlu anakartlarda ise AM2 ve AM2+ işlemci formları bulunmaktadır. Uygunluk fonksiyonu anakart ve işlemci pin sayılarının uyumsuz olması sonunda kromozomun uygunluk değerine olası bir konfigürasyonunun en yüksek maliyet değerinden daha büyük bir değer atamaktadır. Bu çalışmada bu değer 10000 olarak seçilmiştir. Böylece ilgili kromozom (konfigürasyon) yüksek bir uygunluk değeri almaktadır. İkinci uyumsuzluk kontrolü ise anakart ile uyumlu bellek tipleri üzerinde yapılmaktadır. Eğer kromozomdaki bellek ile anakartın bellek tipi uyumsuz ise yine ilgili kromozomun uygunluk değeri alanına yüksek bir uygunluk değeri ataması yapılmaktadır (Şekil 9). 3. Genetik Algoritmanın Çalışması GA’nın hesaplanmasında kullanılan popülasyon değeri 85 ve jenerasyon sayısı 100 olarak seçilmiştir. Popülasyon değerinin bu şekilde seçilmesinin nedeni veritabanındaki ürün adedinin ekran kartı ve bellek alanlarında 90’ı aşmasıdır. Bu şekilde başlangıç durumunda mümkün olduğu kadar farklı bileşenin çözümler kümesine dâhil edilmesi amaçlanmıştır. Genetik algoritmanın çaprazlama oranı %35 ve mutasyon oranı ise %1,17 seçilmiştir. Mutasyon oranının hesaplanmasında Bäck [7] tarafından verilen eşitsizlik kullanılmış ve mutasyon oranının en küçük değeri alınmıştır. Kromozomun bellek adresi değerini al. Kromozomdaki ikili değerleri ondalık tabana çevir. Aralık uygunlaştırma fonksiyonu ile geçerli indis değerlerini hesapla. Bellekte tutulan bileşenlerin bilgilerini hesaplanan indisler yardımıyla getir. Toplam maliyeti hesapla. H Anakartta Tümleşik VGA Var mı? E Toplam maliyetten ekran kartı fiyatını çıkar. Uygunluk değerini ata. Anakart ile İşlemci uyumlu mu? E Anakart ile bellek uyumlu mu? H E Son H Uygunluk değerine 10000 değerini ata. Şekil 9. Uygunluk fonksiyonun çalışmasına ilişkin akış şeması 1/PB < Mutasyon Oranı < 1/KB (2) Denklem (2)‘de PB, popülasyon boyu ve KB ise kromozom uzunluğunu ifade etmektedir. Buna göre mutasyon oranının en küçük değeri 1/85*100 ≈ 1,17 olmaktadır. Genetik algoritmanın seçim operatörü olarak turnuva seçim yöntemi kullanılmış ve turnuvaya giren eleman sayısı 4 olarak seçilmiştir [8]. Başlangıç durumundaki çözümler kümesinin kromozomları ve her bir jenerasyondaki kromozomlara erişim için TList sınıfları kullanılmıştır. TList sınıfı ile tanımlı listeler kromozomların bellek adreslerini tutmakta ve sonraki hesaplamalar için erişim kolaylığı sağlamaktadır. Aynı şekilde her bir jenerasyon da bellek adresleri yoluyla TList sınıfı ile tanımlı bir jenerasyonlar listesinde tutulmaktadır. Hesaplamanın her başlangıcında bu bileşenlere ait listeler, kromozom listeleri ve jenerasyon listesi boşaltılmaktadır. Stoktaki bileşenler tekrar son halleri ile getirilmekte ve belleğe bir liste şeklinde yerleştirilmektedir. Kromozom için gereken bit sayısı tekrar hesaplanırken kullanıcı arabiriminde başlangıç durumuna dönülmektedir. Ardından başlangıç durumuna ait çözümler hesaplanmakta ve genetik algoritma döngüsüne geçilmektedir [3]. Geliştirilmiş olan yazılımda kullanıcı bilgisayar bileşenlerinin tutulduğu stokları güncelledikten sonra platform seçimi yapmakta ve hedef maliyeti girip hesapla butonuna tıklamaktadır (Şekil 10). Örnek çalışma için 4000 Gök, M. ve Göloğlu, C. dolarlık AMD tabanlı bir bilgisayar konfigürasyonunun hesaplanması istenmektedir. Şekil 10. İstenen platform ve maliyete göre konfigürasyon hesaplama Genetik algoritma döngüsü tamamlandıktan sonra kullanıcı arabiriminden açılır liste kutusu yardımıyla her bir jenerasyona ait kromozomlara, uygunluk değerlerine ve her bir kromozomun ifade ettiği bilgisayar konfigürasyonu bilgisine kolaylıkla ulaşılabilmektedir (Şekil 11). Şekil 13. Örnek çalışmaya ait genetik çözüm grafiği 4. Sonuç ve Öneriler Geliştirilmiş olan uygulama yazılımı ortalama bilgisayar konfigürasyonları maliyetlerine yakın hedef maliyetler seçildiğinde yüksek başarım ile konfigürasyonlar oluşturabilmektedir. Yazılım bu haliyle maliyet tabanlı konfigürasyon oluşturma çözümü olarak önerilebilir. Ancak yüksek maliyetli hedef değerler seçildiğinde çözümün bulunması zorlaşmaktadır. Bu durumda hesaplama işleminin ardışıl olarak yapılması gerekebilmektedir. Tümleşik VGA birimine sahip anakartlı konfigürasyonlarda yüksek fiyatlı ekran kartları konfigürasyonlar içinde yer alabilmektedir. Ayrıca aynı uygunluk değerine sahip farklı muhtemel konfigürasyonların yönetimi yazılımın bu sürümünde yapılmamıştır. Yazılımın bir sonraki sürümünde bu durumların yönetilmesini kolaylaştıracak eklemeler yapılması düşünülmektedir. Şekil 11. Jenerasyonlar ve jenerasyondaki bireylerin uygunluk değerleri Şekil 11’de görüldüğü gibi çözüme (hedef maliyete) 373 dolarlık bir yaklaşımla sonuç bulunmuştur. Bu çözüme ilişkin bilgisayar konfigürasyonu Şekil 12’de görülmektedir. Şekil 13’te ise çözüme ilişkin minimum, maksimum ve ortalama değerlerin gösterildiği grafik görülmektedir. Bu grafiğe geliştirilmiş olan yazılımın “Grafik” sekmesinden erişilebilmektedir. Şekil 12. Örnek çalışma sonunda elde edilen konfigürasyon Kaynaklar [1] Cantù, M., Mastering Delphi 6, Sybex Publishing, 536540, 2001. [2] Sakawa, M., Genetic Algorithms and Fuzzy Multiobjective Optimization, Kluwer Academic Publishers Boston / Dord recht / London, 15-16, 2001. [3] Gen, M., Cheng, R., Genetic Algorithms and Engineering Design, Wiley Publishing, 8-9, 1997. [4] Altunkaynak, B., Esin, A., The Genetic Algorithm Method For Parameter Estimation In Nonlinear Regression, G.Ü. Fen Bilimleri Dergisi, 17(2), 43-51, 2004. [5] Deitel, H. M., C++ How to Program, Fifth Edition, Prentice Hall, 550-552, 2005. [6] Saruhan, H., Genetic Algorithms: An Optimization Techique, Teknoloji, 7(1), 105-114, 2004. [7] Bäck, T., Optimal Mutation Rates in Genetic Search, Proceedings of the 5th International Conference on Genetic Algorithms, 2-8, 1993. [8] Gologlu, C., A metaheuristic based self-reasoning system for assembly sequence automation in CIM, Beykent University, Journal of Science and Technology, 2(1) 99-114, 2008.