Umut Benzer

Umut Benzer

Software Engineer, MSc. in Berlin

Ana SayfaKategoriler

Genetik Algoritmalar ile Knapsack Probleminin Çözümü

genetik-algoritma genetik-algoritma   Geçen sene Yapay Zeka dersinde genetik algoritmalar ile uğraşırken bizden genetik algoritmalar ile Knapsack problemini çözmemiz ve üç farklı çaprazlama (crossover) türü için genetik algoritmanın nasıl sonuçlar ürettiğinin analizinin yapılması istenmişti.

Knapsack Problemi

Öncelikle bilmeyenler için Knapsack problemini hızlıca açıklayayım:

Belirli bir limiti olan bir çantanız var. (Örneğin 15) Elinizde çeşitli büyüklük ve değerlerde maddeler bulunuyor. (Örneğin altın, genişlik 5, değer 10; tahta, genişlik 6, değer 1…) Çantanın kapasitesini aşmamak koşuluyla çantaya koyabileceğiniz maddelerin toplam değeri en fazla ne kadar olabilir?

Yamyamlar & Misyonerler

canibali canibali   Yamyamlar ve Misyonerler, bir çoğumuzun bildiği “Kurt, kuzu, saman, nehir” bilmecesinin bir benzeridir.

Problem

Bilmece şu şekildedir:

Nehrin bir kenarında 3 tane misyoner, 3 tane de yamyam bulunmaktadır. Bunlar bir kayık ile nehrin diğer tarafına geçecektir. Ancak bu kayık aynı anda en fazla iki kişi taşıyabilmektedir ve kayığın hareket edebilmesi için en az bir kişinin kayıkta olması gerekmektedir. Nehrin iki tarafı için ayrı ayrı, eğer yamyam sayısı misyoner sayısından fazla olursa yamyamlar misyonerleri yemektedir. Bu topluluk hiç kayıp vermeden karşıya nasıl geçer?

Çözüm

Bu problem üzerinde geçen sene Yapay Zeka dersinde durmuştuk. Problemin BFS (Breadth First Search) arama yöntemi ile çözümünü kodlamıştım.

Çok basit bir “Facebook’ta Beni Kim Silmiş” uygulaması

Facebook Logo Facebook Logo   Çalıştığım yerde Facebook uygulamaları geliştiriyoruz. Bu yüzden, işe başlamadan önce, yani yaklaşık 6 ay önce, antrenman olması açısından basit bir Facebook uygulaması yazayım demiştim. Aklıma, hem API’leri bolca kullanabileceğim, hem de çok zor olmayan bir uygulama olarak Facebook’taki insanların “büyük sorunu” olan, “Kim beni arkadaşlıktan sildi?” sorusunun cevabını verebilecek bir uygulama yazmıştım.

JAVA’da Soket Kullanmak: UMESEN

UMESEN UMESEN   Geçen sene Sunucu Yazılım Teknolojileri dersinde Java’da soketleri kullanarak bir iletişim altyapısı oluşturma ve bu iletişim altyapısını kullanarak iki yönlü iletişim kurabilecek bir program yazma ödevimiz vardı.

Ben de bu ödevi yapmak adına, basit işleri yapabilen, oldukça detaylı bir şekilde dokümante ettiğim bir JAVA soket kütüphanesi (adına USOCK demiştim) yazmış ve bu kütüphaneyi kullanan bir uygulama olarak MSN çakması UMESEN isimli bir uygulama geliştirmiştim.

UMESEN’de aynı anda birden fazla makine birbirine mesaj yollayabiliyor, dosya gönderebiliyor. Bir makine diğerine büyük bir dosya atarken, aynı zamanda mesaj yollamaya/dinlemeye devam edebiliyor. Yani uygulama soket yönetiminin yanında basit de olsa çoklu thread yönetimi de yapıyor.