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(); } }
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; }
/* * @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()); }
/* * Constructor */ public SimulatedAnnealing(KelasManagement kelasManagement, RuanganManagement ruanganManagement) { this.kelasManagement = kelasManagement; this.ruanganManagement = ruanganManagement; }
public Individu(Individu i) { kelasManagement = i.getDNA(); fitness = i.getFitness(); }
public Individu() { kelasManagement = new KelasManagement(); fitness = 9999; //random fitness }