Python Egzersizleri | Kaggle

Python Exercise | Latest Version: https://www.kaggle.com/bulentsiyah/python-exercise

Genetik Algoritma ile Maksimum Ağırlıklı Clique Problemi ( MWCP ) (Genetik Algoritma, C#)

Bu çalışmada ağırlıkları ve diğer Nodelerle ilişkileri verilmiş bir uzayda en yüksek ağırlığa sahip alt grafın bulunması amaçlanmıştır. Çalışma sonunda büyük bir arama uzayına rağmen doğru çaprazlama şekli ve oranı sayesinde çok kenarlı graflar bulunmuştur. Projede bu çalışma için en uygun olan Rulet tekeri çaprazlama modeli kullanılmıştır. Problemin Genetik Algortima ile çözümü için geliştirilen uygulama, c#(sharp) programlama dili ile yazılmıştır.

Projenin detayı: maksimum ağırlık projesi

Projenin Kodları

Tüm projeyi İNDİR: Program Kodu

Genetik Algoritma ile Çift Taraflı Montaj Hattı Dengeleme (Genetic Algorithms, C#)

Projenin Kodları

Tüm projeyi İNDİR: Program Rapor ve Kodu

1. GİRİŞ

Bu çalışmada, çift taraflı mondaj hattının her iki tarafı için belirlenmiş çevrim süresi içerisinde istasyon sayısını en aza indirgeme amaçlanmıştır. Operasyonlarda taraf ve istasyon sayısı kısıtları bulunmaktadır. Problemin Genetik Algortima ile çözümü için geliştirilen uygulama, c#(sharp) programlama dili ile yazılmıştır.

Genetik algoritma rastgele arama metodu olduğu için tek bir çözüm aramak yerine bir çözüm kümesi üzerinde çalışır. Optimum çözüme olası çözümlerin bir bölümü üzerinde gidilir. Böylece çalışmadaki sonuçlar her zaman en iyi olmaz. Çalışmada genetik algoritmanın kullanılmasının nedeni, genetik algoritmanın problemin doğasıyla ilgili herhangi bir bilgiye ihtiyaç duymamasıdır.

2. Materyal ve Yöntem

Genetik Algoritmalar, daha iyi çözümlere yavaş yavaş bir yaklaşım sağlayan geniş bir problem uzayı boyunca yönlendirilmiş rastgele bir araştırmaya imkan sağlar. Temel avantajı optimize edilmeye çalışılan problemin doğasıyla ilgili herhangi bir bilgiye ihtiyaç göstermemeleridir.

Okumaya devam et “Genetik Algoritma ile Çift Taraflı Montaj Hattı Dengeleme (Genetic Algorithms, C#)”

Genetik Algoritma Kullanılarak Noktadan Noktaya Yol ve Rota Planlama (C#)

Projenin Kodları

Tüm projeyi İNDİR: Program Kodu ve Rapor

1.Giriş

Bu çalışmada bir kroki üzerinde bulunan noktalar arası rota ve yolun genetik algortima ile bulunması amaçlanmıştır. Genetik algoritma rastgele arama metodu olduğu için tek bir çözüm aramak yerine bir çözüm kümesi üzerinde çalışır. Optimum çözüme olası çözümlerin bir bölümü üzerinde gidilir. Böylece çalışmadaki sonuçlar her zaman en iyi olmaz. Çalışmada genetik algoritmanın kullanılmasının nedeni, genetik algoritmanın  problemin doğasıyla ilgili herhangi bir bilgiye ihtiyaç duymamasıdır. Temelinde gezgin satıcı problemine benzeyen çalışmanın , gezgin satıcı problemine benzer problemler içinde çözüm olması amaçlanmıştır.

2.Genetik Algoritma Yönteminin Probleme Uygulanışı

Problemin çözümü için populasyon büyüklüğü karar verilmelidir. Populasyon büyüklüğü seçilirken aşırı yüksek seçilirse gelişim yavaşlar, aşırı küçük seçilmesi durumunda da araştırma uzayı yetersiz olur. Problemimize en uygun populasyon büyüklüğü 30 birey olarak seçilmiştir. Programın arayüzünde birey sayısı değiştirilebilir. Her kromozom 20 genle temsil edilip, genler kodlanırken değer kodlama yöntemi kullanılmıştır. Her gen yönleri temsil eden 0;Batı, 1;Kuzey, 2;Doğu ve 3;Güney ile belirtilmiştir. Örnek olarak 5 nolu kromozomun genleri:01102033021011023221 gibi 20 gene sahiptir.

Populasyon büyüklüğü tamamlanıp, kromozomlar kodlandıktan sonra uygunluklarına göre seçilim yapıldı. Uygunluk değerleri hesaplanırken noktalar arası seyahat olduğu için kromozomun en son noktası ile ulaşmak istenen arasındaki farka bakılır. Bu yüzden uygunluk fonksiyonumuz 2 fonksiyonun toplamına eşittir. Birinci fonksiyonumuz en son nokta uzaklığı f(y) , ikinci fonksiyonumuz ise kromozomun aldığı yolların toplamı olan toplam mesafe f(z) fonksiyonudur. Uygunluk fonksiyonumuz f(x)=5*f(y)+ f(z) olarak belirlenmiştir. Burada son nokta uzaklığını fonksiyonu problem için daha önemli olduğundan katsayısı artılmıştır. Örneğin 6 nolu kromozom son noktası 21 , ulaşılmak istenen nokta 22 ise f(y)=20, ve aldığı yolların mesafesini ölçen f(z)=550 olduğunu düşünelim ,6 nolu kromozomun uygunluk değeri f(x)=5*20+550=650 olur. Kromozom ulaşılmak istenilen noktaya varmış olsaydı bu değer 550 olacaktı. Burada görüldüğü gibi son noktaya ulaşmak uygunluk değerini hesabının doğruluğunu kanıtlıyor. Okumaya devam et “Genetik Algoritma Kullanılarak Noktadan Noktaya Yol ve Rota Planlama (C#)”

Yapay Sinir Ağı ile XOR Kapısı (PIC Assembly)

ÖZET

Bu çalışmada, bir mikrodenetleyiciye yapay sinir ağını gerçekleyebilmesini sağlayacak bir program yazılması amaçlanmıştır. Hazırlanan yapay sinir ağı, program içerisine gömülü olan XOR doğruluk tablosuna göre eğitilir ve mikrodenetleyicinin giriş portlarından alınan giriş verilerini kullanarak çıkış üretir. Çalışmada, öğrenme metodu için geri yayılım metodu, aktivasyon fonksiyonu için basamak fonksiyonu, ağırlık güncellemeleri için Hebbian Kuralı kullanılmıştır. Geliştirilen uygulama, PIC Assembly dili ile PIC16F84 mikrodenetleyicisi için kodlanmıştır. Uygulama, öğrenme işlemini başarı ile gerçekleştirerek, denenen tüm giriş verileri için doğru sonuçlar üretmiştir.

1.GİRİŞ

XOR (özel veya) problemi sahip olduğu doğrusal olmayan yapı sayesinde sınıflama ve modelleme algoritmalarının test edilmesi ve başarılarının ölçülmesinde önemli bir ölçüttür. Çalışma XOR kapısının yanında farklı birçok amaçla da kullanılabilir. Çalışma bir sisteme dahil edilip, sistem ve mikrodenetleyiciye paralel veri girişi sağlanabilir. Giriş verilerini alarak eğitilen mikrodenetleyici, daha sonra kendi çıkış verileri ile sistemin çıkış verilerini karşılaştırabilir. Verilerin doğru olmaması gibi durumlarda sistemdeki hataları gidermede kullanılabilir.

Çalışmada yapay sinir ağı, 1 giriş, 1 ara ve 1 çıkış katmanlarından oluşur. Giriş katmanı ise 2 nöron ve 1 bias olmak üzere 3 giriş, 3 ara nöron ve 1 çıkış nöronundan oluşur. Giriş nöronu dışındaki nöronlar için bir aktivasyon fonksiyonu vardır. Her nörondan diğer nörona giden bir bağlantı bulunur ve bu bağlantının bir ağırlığı vardır. Her bir giriş ile ona ait ağırlık değeri çarpımlarının toplanmasına toplama işlevi denir. Nöronların değerleri aktivasyon fonksiyonu ile belirlenir. Çıkış nöronunda elde edilen değer ile hedef değer farklı ise geri yayılımlı olarak ağırlıklar tekrar hesaplanır ve öğrenme gerçekleştirilir. Öğrenme işlemi için çalışmada Hebbian Kuralı uygulanmıştır. Böylece her bağlantıdaki ağırlık güncellenerek baştan hesaplanır ve işlem hedef sonuca ulaşana kadar devam eder. Uygulamadaki hedef sonuçlar için XOR kapısının doğruluk tablosu kullanılmıştır.

XOR kapısından gerçekleştirilmeden önce ilk olarak tek nöronlu yapay sinir ağı gerçekleştirilmiştir. Giriş verisi rastgele bir ağırlık ile çarpılıp, belli bir eşik değerden geçirilmiş ve çıkış değeri elde edilmiştir. İkinci aşama olarak AND kapısı gerçekleştirilmiştir. AND mantık kapısının seçilmesinin nedeni, yapay sinir ağı ile öğrenmenin  kolay bir şekilde gerçekleşebilmesidir. AND kapısının kolay olmasını sağlayan durum, bir doğru ile kolaylıkla sınırlandırılabilmesidir. Bunun dışında AND kapısı için bias değerine ihtiyaç duyulmaz, böylece giriş sayısı değişmez ve daha az ağırlık değeri ile işlem gerçekleştirilir. XOR kapısından önce bu iki aşama tamamlanmıştır.

Uygulama sonuçları Tüm farklı giriş verileri, mikrodenetleyiciye aktarılıp elde edilen çıkış verileri doğruluk tablosu ile karşılaştırıldığında tüm sonuçların doğru olduğu gözlemlenmiştir.

Okumaya devam et “Yapay Sinir Ağı ile XOR Kapısı (PIC Assembly)”

Yapay Sinir Ağı ile AND Kapısı (PIC Assembly)

Bu çalışmada, bir mikrodenetleyiciye yapay sinir ağını gerçekleyebilmesini sağlayacak bir program yazılması amaçlanmıştır. Hazırlanan yapay sinir ağı, program içerisine 48. satırda bulunan hsonuc (Hedef Sonuç) isimli değişkene göre eğitilir ve program kodunun 44 ve 46. satırlarından alınan giriş verilerini kullanarak çıkış üretir. Çalışmada, öğrenme metodu için geri yayılım metodu, aktivasyon fonksiyonu için basamak fonksiyonu, ağırlık güncellemeleri için Hebbian Kuralı kullanılmıştır. Geliştirilen uygulama, PIC Assembly dili ile PIC16F84 mikrodenetleyicisi için kodlanmıştır. Uygulama, öğrenme işlemini başarı ile gerçekleştirerek, denenen tüm giriş verileri için doğru sonuçlar üretmiştir.

Çalışmada yapay sinir ağı, 1 giriş, 1 ara ve 1 çıkış katmanlarından oluşur. Giriş katmanı ise 2 nöron ve 1 bias olmak üzere 3 giriş, 3 ara nöron ve 1 çıkış nöronundan oluşur. Giriş nöronu dışındaki nöronlar için bir aktivasyon fonksiyonu vardır. Her nörondan diğer nörona giden bir bağlantı bulunur ve bu bağlantının bir ağırlığı vardır. Her bir giriş ile ona ait ağırlık değeri çarpımlarının toplanmasına toplama işlevi denir. Nöronların değerleri aktivasyon fonksiyonu ile belirlenir. Çıkış nöronunda elde edilen değer ile hedef değer farklı ise geri yayılımlı olarak ağırlıklar tekrar hesaplanır ve öğrenme gerçekleştirilir. Öğrenme işlemi için çalışmada Hebbian Kuralı uygulanmıştır. Böylece her bağlantıdaki ağırlık güncellenerek baştan hesaplanır ve işlem hedef sonuca ulaşana kadar devam eder.

Okumaya devam et “Yapay Sinir Ağı ile AND Kapısı (PIC Assembly)”

Tek Nöronlu Yapay Sinir Ağı ve Proteus İsis Simülasyonu (16f84)

Bu slayt gösterisi için JavaScript gerekir.

Bu yazıda PIC assembly ile kodlanmış tek nörona sahip bir yapay sinir ağı oluşturulup, Proteus İsis programında simülasyonla gösterildi. Programda hedeflenen durum, giriş değeri 1 verilirse 0 sonucunu üreten, 0 verilirse 1 sonucunu üreten YSA oluşturmak. Tek nöronlu yapay sinir ağının özelliği, nörona giren giriş değerini belli bir ağırlık değeri ile çarpıp, eşik değere göre sonuç üretmektir. Örnek olarak giriş değeri olarak 0 değeri verilip ve bu değer 1 değerine sahip ağırlıkla çarpıldıktan sonra elde edilen sonuç olan sıfır değerini 0’a eşit ve küçük olan eşik değerle kıyaslansın. Sonuç olan 0 değeri ile eşik değerin kıyaslanması sonucunda true yani 1 değeri elde edilecektir. Çünkü sonuç 0 ve eşik değerde sıfıra eşit ve küçük olduğu için dönüş true olacaktır. Aynı durum için giriş değeri 1 olduğunda dönüş değeri 0 olacaktır. Böylece program için hedeflenen durum gerçekleşti.

Okumaya devam et “Tek Nöronlu Yapay Sinir Ağı ve Proteus İsis Simülasyonu (16f84)”