Beispiel #1
0
        public void generatePopulation(int n, KelasManagement m)
        //generate n populasi
        {
            organisms = new List <Individu>(n);
            Individu baru;

            for (int i = 0; i < n; i++)
            {
                baru = new Individu(m, m.getConflict(), i);
                organisms.Add(baru);
                organisms[i].generateDNA();
            }

            //Display tiap individu
            foreach (Individu o in organisms)
            {
                o.print();
            }
            //Sorting list organisme sesuai dengan fitnessnya.
            organisms.Sort();
            foreach (Individu o in organisms)
            {
                o.print();
            }
        }
Beispiel #2
0
        public Individu(KelasManagement k, int m, int id)
        {
            this.id = id;
            List <Kelas> T = new List <Kelas>(k.getArrayKelas().Count);

            foreach (Kelas k1 in k.getArrayKelas())
            {
                Kelas knew = new Kelas(k1);
                T.Add(knew);
            }
            kelasManagement = new KelasManagement(T);
            fitness         = m;
        }
Beispiel #3
0
        /*
         *  @param temperature : temperatur awal
         *  @param cooling_rate : cooling rate temperatur
         *  Menjalankan simulated annealing dan menuliskan jumlah konflik yang terjadi
         */
        public void execute(float temperature, float cooling_rate)
        {
            this.solution = new KelasManagement(this.kelasManagement.getArrayKelas());
            Console.WriteLine("Initial conflict: " + this.solution.getConflict());
            solution.printall();
            Console.WriteLine();
            Console.WriteLine("Temperature: " + temperature);
            Console.WriteLine("Cooling rate: " + cooling_rate);
            Console.WriteLine("---------");


            while (temperature > 1)
            {
                for (int i = 0; i < 200; i++)
                {
                    int random = myRandom.GetRandomNumber(0, this.kelasManagement.getArrayKelas().Count - 1);
                    this.kelasManagement.setRandomValue(random);
                    int newConflict     = this.kelasManagement.getConflict();
                    int currentConflict = this.solution.getConflict();
                    if (newConflict < currentConflict)
                    {
                        this.solution = new KelasManagement(this.kelasManagement.getArrayKelas());
                        Console.WriteLine("Found better: " + newConflict);
                    }
                    else
                    {
                        if (myRandom.GetRandomFloat(0, 100) <= Math.Exp((currentConflict - newConflict) / temperature))
                        {
                            this.solution = new KelasManagement(this.kelasManagement.getArrayKelas());
                            Console.WriteLine("Assign worse: " + newConflict);
                        }
                    }
                }
                temperature *= cooling_rate;
            }

            //solution.printall();
            this.solution.printall();
            Console.WriteLine("---------");
            Console.WriteLine("Last conflict: " + this.solution.getConflict());
        }
Beispiel #4
0
 /*
  *  Constructor
  */
 public SimulatedAnnealing(KelasManagement kelasManagement, RuanganManagement ruanganManagement)
 {
     this.kelasManagement   = kelasManagement;
     this.ruanganManagement = ruanganManagement;
 }
Beispiel #5
0
 public Individu(Individu i)
 {
     kelasManagement = i.getDNA();
     fitness         = i.getFitness();
 }
Beispiel #6
0
 public Individu()
 {
     kelasManagement = new KelasManagement();
     fitness         = 9999; //random fitness
 }