void mutacija(Jedinka jedinka, double prag) { //TODO 4: Implementirati operaciju mutacije for (int i = 0; i < jedinka.chromosome.Length; i++) { double a = rand.NextDouble(); if (a <= prag) { jedinka.chromosome[i] = 1 - jedinka.chromosome[i]; } } jedinka.x = jedinka.bin2double(jedinka.chromosome); }
private void btnKodiranje_Click(object sender, EventArgs e) { try { //TODO 1: Dopuniti metodu jedinkaPanel1.Refresh(); double dekodiranoX = jedinka.bin2double(jedinka.chromosome); tbDekodiranoX.Text = "" + dekodiranoX.ToString("#0.000"); kodiranjePanel1.jedinka = jedinka; kodiranjePanel1.Refresh(); statusBar.Text = ""; } catch (Exception ex) { statusBar.Text = "Greška!"; } }
void mutacija(Jedinka jedinka, double prag) { //za svaki gen u hromozomu jednike se generise slucajni broj koji odlucuje da li se taj bit invertuje for (int i = 0; i < Jedinka.MAXSTRING; ++i) { double slucajanBroj = rand.NextDouble(); if (slucajanBroj < prag) { jedinka.chromosome[i] = 1 - jedinka.chromosome[i]; } } jedinka.x = jedinka.bin2double(jedinka.chromosome); //TODO 11: Ne zaboraviti promeniti double vrednost i druge promenljive jedinka.x2 = jedinka.bin2double2(jedinka.chromosome); }
void ukrstanje(Jedinka jedinka1, Jedinka jedinka2, double prag) { //TODO 3: Implementirati operaciju ukrstanja for (int i = 0; i < jedinka1.chromosome.Length; i++) { double a = rand.NextDouble(); if (a <= prag) { int k = jedinka1.chromosome[i]; jedinka1.chromosome[i] = jedinka2.chromosome[i]; jedinka2.chromosome[i] = k; } } jedinka1.x = jedinka1.bin2double(jedinka1.chromosome); jedinka2.x = jedinka2.bin2double(jedinka2.chromosome); }
void ukrstanje(Jedinka jedinka1, Jedinka jedinka2, double prag) { //TODO 3: Implementirati operaciju ukrstanja for (int i = 0; i < Jedinka.MAXSTRING; i++) { double t = rand.NextDouble(); if (t < prag) { int tmp = jedinka1.chromosome[i]; jedinka1.chromosome[i] = jedinka2.chromosome[i]; jedinka2.chromosome[i] = tmp; } } jedinka1.x = jedinka1.bin2double(jedinka1.chromosome); jedinka2.x = jedinka2.bin2double(jedinka2.chromosome); }
void mutacija(Jedinka jedinka, double prag) { //TODO 4: Implementirati operaciju mutacije for (int i = 0; i < Jedinka.MAXSTRING; i++) { double t = rand.NextDouble(); if (t < prag) { if (jedinka.chromosome[i] == 0) { jedinka.chromosome[i] = 1; } else { jedinka.chromosome[i] = 0; } } } jedinka.x = jedinka.bin2double(jedinka.chromosome); }
private void btnKodiranje_Click(object sender, EventArgs e) { try { //TODO 1: Dopuniti metodu double minX = Convert.ToDouble(tbMinX.Text); double maxX = Convert.ToDouble(tbMaxX.Text); double x = Convert.ToDouble(tbX.Text); jedinkaPanel1.jedinka = new Jedinka(x, minX, maxX); jedinkaPanel1.Refresh(); double dekodiranoX = jedinka.bin2double(jedinkaPanel1.jedinka.chromosome); tbDekodiranoX.Text = "" + dekodiranoX.ToString("#0.000"); kodiranjePanel1.jedinka = jedinka; kodiranjePanel1.Refresh(); statusBar.Text = ""; } catch (Exception ex) { statusBar.Text = "Greška!"; } }
void ukrstanje(Jedinka jedinka1, Jedinka jedinka2, double prag) { //za svaki gen se generise slucajan broj koji odlucuje da li ce se zameniti geni u dve jedinke for (int i = 0; i < Jedinka.MAXSTRING; ++i) { double slucajanBroj = rand.NextDouble(); if (slucajanBroj < prag) { int temp = jedinka1.chromosome[i]; jedinka1.chromosome[i] = jedinka2.chromosome[i]; jedinka2.chromosome[i] = temp; } } //Jedinka sadrzi i normalnu predstavu broja, mi smo menjali kodiranu predstavu, pa nju treba uskladiti jedinka1.x = jedinka1.bin2double(jedinka1.chromosome); jedinka2.x = jedinka2.bin2double(jedinka2.chromosome); //TODO 9: Ne zaboraviti promeniti double vrednost i druge promenljive jedinka1.x2 = jedinka1.bin2double2(jedinka1.chromosome); jedinka2.x2 = jedinka2.bin2double2(jedinka2.chromosome); }
void ukrstanje2(Jedinka jedinka1, Jedinka jedinka2) { //jedinka1 treba da bude N roditelj 1 - M roditelj 2 - N roditelj 1 //jedinka2 treba da bude N roditelj 2 - M roditelj 1 - N roditelj 2 int N = rand.Next(0, Jedinka.MAXSTRING / 2); //slucajno se generise N int M = Jedinka.MAXSTRING - 2 * N; //menja se centralnih M hromozoma for (int i = N; i < N + M; ++i) { int temp = jedinka1.chromosome[i]; jedinka1.chromosome[i] = jedinka2.chromosome[i]; jedinka2.chromosome[i] = temp; } //Jedinka sadrzi i normalnu predstavu broja, mi smo menjali kodiranu predstavu, pa nju treba uskladiti jedinka1.x = jedinka1.bin2double(jedinka1.chromosome); jedinka2.x = jedinka2.bin2double(jedinka2.chromosome); //TODO 10: Ne zaboraviti promeniti double vrednost i druge promenljive jedinka1.x2 = jedinka1.bin2double2(jedinka1.chromosome); jedinka2.x2 = jedinka2.bin2double2(jedinka2.chromosome); }
void mutacija(Jedinka jedinka, double prag) { //TODO 4: Implementirati operaciju mutacije jedinka.x = jedinka.bin2double(jedinka.chromosome); }