Alternatif Düşünce

Alternatif düşüncelerin paylaşım ortamı..



Yeni yeni öğrenmeye başladığım g.a(genetik algoritmalar) NP(non deterministic polynomial) problemlerin çözümünde  sıkça kullanılmaktadır.(Karmaşıklık arttiğında hesaplama zamaninın limitsiz arttigi problemler.)
Fakat g.a hala hayatımızdaki en önemli problemi,mutluluk arayışı problemini çözememek de.Bırakın problemin çözümü için en iyi yolu,ona yakın bir çözümü dahi bulamamaktayız g.a ile.
G.a'nın alacağı input değerleri,mutasyon biçimleri vs.. hayatımıza uygulanamaz biçimde.Hele bir de sevmek işin içine girince karmaşıklık(ve de acı) o kadar büyük boyutlarda artıyor ki np problemler yanında ufacık basit bir problem olarak kalıyor.
Ben bu mutluluk arayışı problemimizi mp(mutluluk problemi) olarak adlandırmaktayım.
Mp'nin çözümünde Ay+şarap+deniz kombinasyonu bize yardımcı olmaya çalışsa da, o da geçici bir çözüm haricinde doğru düzgün birşey üretememek de.
Ve çevremden gözlemlediğim kadarıyla mp o kadar yaygın ki.Herkes benzer dertlerden yakınmakta.Ve herkes o kadar çaresiz ki..
Mp'nin kökenine inince kendimde de gördüğüm kadarıyla mantık-kalp çelişkisi ortaya çıkmakta.Bu iki meret ortak bir kanıya varmamak için o kadar uğraşıyor ki.Birbirlerine düşmanlıkları biz garibim insanlara zarar vermekte sonuç olarak.

Mp'nin en kısa,en etkin çözümünü bulmak dileğiyle..

En kesin olun şeyse insanın kendi bilinmezliğinde yok olup gittiği gerçeği sanırım bu durumda......

Staj-tez dolayısıyla genetik algoritmaları öğrenmeye başladım.
Çözümünü yaptığım ilk problemin kodu aşağıda yer almakta.(tabii ki hocalardan destek alarak çözümü yapabildim;)

a+2b+3c+4d=30 diophantine eşitliğinin genetik algoritmalarla çözümü
Gerçekleştirim Dili:java
Kullanılan kütüphane:jgap


package diophantine;

import org.jgap.Chromosome;
import org.jgap.Configuration;
import org.jgap.DeltaFitnessEvaluator;
import org.jgap.FitnessEvaluator;
import org.jgap.FitnessFunction;
import org.jgap.Gene;
import org.jgap.Genotype;
import org.jgap.IChromosome;
import org.jgap.RandomGenerator;
import org.jgap.impl.DefaultConfiguration;
import org.jgap.impl.GaussianRandomGenerator;
import org.jgap.impl.IntegerGene;

public class Diophantine {

    private static final int MAX_ALLOWED_EVOLUTIONS = 10;

    public static void main(String[] args) {
        try {

            Configuration conf = new DefaultConfiguration();

            FitnessFunction myFunc = new DiophantineFitnessFunction();
            conf.setFitnessFunction(myFunc);

            Gene[] sampleGenes = new Gene[4];
            sampleGenes[0] = new IntegerGene(conf, 0, 10); // a
            sampleGenes[1] = new IntegerGene(conf, 0, 10); // b
            sampleGenes[2] = new IntegerGene(conf, 0, 10); // c
            sampleGenes[3] = new IntegerGene(conf, 0, 10); // d

            Chromosome sampleChromosome = new Chromosome(conf, sampleGenes);

            conf.setSampleChromosome(sampleChromosome);

            conf.setPopulationSize(50);

            conf.reset();

            RandomGenerator randomGen = new GaussianRandomGenerator();

            conf.setRandomGenerator(randomGen);

            FitnessEvaluator fit = new DeltaFitnessEvaluator();

            conf.setFitnessEvaluator(fit);

            Genotype population = Genotype.randomInitialGenotype(conf);

            conf.setPreservFittestIndividual(true);

            population.evolve(MAX_ALLOWED_EVOLUTIONS);
            IChromosome bestSolutionSoFar = population.getFittestChromosome();
            System.out.println(bestSolutionSoFar);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

package diophantine;

import org.jgap.FitnessFunction;
import org.jgap.IChromosome;

public class DiophantineFitnessFunction extends FitnessFunction {

    /**
     *
     */
    private static final long serialVersionUID = 1L;

    /*
     * protected double evaluate(IChromosome arg0) { // TODO Auto-generated
     * method stub return 0; }
     */

    public double evaluate(IChromosome a_subject) {
        int beklenenDeger = 30;

        int toplam = toplamDegerBul(a_subject);
        int fitness = Math.abs(toplam - beklenenDeger);

        return fitness;
    }

    public static int genDegerBul(IChromosome a_potentialSolution,
            int a_position) {
        try {

            Integer deger = (Integer) a_potentialSolution.getGene(a_position)
                    .getAllele();
            return deger.intValue();
        } catch (Exception e) {
            e.printStackTrace();
            return -1;
        }
    }

    public static int toplamDegerBul(IChromosome a_potentialsolution) {
        int sonuc = 0;
        int numberOfGenes = a_potentialsolution.size();
        for (int i = 0; i < numberOfGenes; i++) {
            sonuc += genDegerBul(a_potentialsolution, i) * (i + 1);
        }
        return sonuc;
    }

}




Her yolculuk bir umutla başlar.Bilinene ya da bilinmeyene.Sonucu ne olur bilinmez ama insanda bir acayipliktir söz konusu olan..

Yine böyle acayip düşünceler içinde çıktım yola.Rota Akyaka'yı gösteriyordu yine.Ama yol güzergahı biraz ilginçti bu sefer. Milas üstünden gidecektik bu kez(milasta birine uğramamız gerekiyormuş da).

Milas demişken,benim için apayrı anlamı olan bir yer orası.Oradayken telefonuma bakıp durdum.Onu arasam mı diye çok düşündüm .Ama olmadı bir türlü arayamadım.

Milasta oyalanmaların ardından 23.30 gibi Akyaka'ya varabildik.İzmir'in sıcağından sonra Akyaka çok güzel geldi(üşümek güzel bir duyguymuş hatırladım:)).Hatta yazın yağmur yağdığını görme fırsatına bile eriştim bir kez daha.O bulutları İzmire gelmek için ikna edemedim ama bir türlü;)

Aslında sürenin azlığından çok birşey yapamadım.Benim için en önemlisi trampleninin yanındaki bankta  oturmam oldu.Kendimi en özgür ve en hüzünlü hissettiğim birkaç yerden biri orası.(bi de  saçma dışarıda çalan saçma müzikler olmasa çok daha güzel olurdu benim için)

Dönüş tahmin ettiğimden erken oldu (istenmeyen sebeplerden dolayı),ama  olsun değerdi yine de.

ve İzmir yeniden karşılaştık senle.

Beyazlara iyi davranın, insanlıklarını yeniden bulmak için size ihtiyaçları var.
                                                                                                     Desmond Tutu

İTİRAZIN İKİ ŞARTI

Çok olmadığımız kesin

Çok olan tarafta değiliz

Çok olan tarafta olmayacağız

Türkiye'de Kürt olacağız

Kürt’lerde Ermeni

Ermeni’lerde Süryani

Gidip Almanya'da Türk olacağız

Hollanda'da Surinam’lı

Fransa'da Cezayir’li

İran'da Azeri

Amerika'da zifiri Zenci olacağız

Çoğalan zencide mutlaka Kızılderili

İsrail'de Filistin’li

Köpeğin karşısında kedi

Kedinin karşısında kuş olacağız

Kuşun karşısında börtü böcek

Hakemler hep karşı takımı tutacak

Ve biz hep yedi kişiyle tamamlayacağız maçı

Çiçeklerden kamelya olacağız

Az kolumuzun tarafında

Solda olacağız

Bu itirazın ilk şartı

Solda da az olacağız

Devrimi çoğaltırken çünkü

Bir başka devrime hızla azalacağız

Bu da itirazın ikinci şartı.

NEVZAT ÇELİK