private int selectedAmountOfCycles; // Zyklen //Konstruktor public Parameter() { isSelectedExample = false; selectedAlgorithm = typeOfAlgorithm.Density; selectedAmountOfTowns = 0; selectedSpreadTowns = typeOfSpreadTowns.Random; selectedAmountOfAnts = 0; selectedSpreadAnts = typeOfSpreadAnts.Random; selectedStrength = 0; selectedStartPheromone = 0; selectedEvaporation = 0; selectedWeightPheromone = 0; selectedWeightDistance = 0; selectedAmountOfCycles = 0; }
public void setSelectedSpreadAnts(typeOfSpreadAnts type) { this.selectedSpreadAnts = type; }
public void syncWithNewP() { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //Grundlegendes Beispiel isExample = gui.getParameter().getIsSelectedExample(); ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //Art des Algorithmus if (gui.getParameter().getSelectedAlgorithm() == Parameter.typeOfAlgorithm.Density) { typeOfAlgorithm = 0; } else if (gui.getParameter().getSelectedAlgorithm() == Parameter.typeOfAlgorithm.Quantity) { typeOfAlgorithm = 1; } else if (gui.getParameter().getSelectedAlgorithm() == Parameter.typeOfAlgorithm.Cycle) { typeOfAlgorithm = 2; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //Städte bool theSameTowns = false; if (n == gui.getParameter().getSelectedAmountOfTowns() && gui.getParameter().getSelectedSpreadTowns() == typeOfSpreadTowns.Custom) { theSameTowns = true; } n = gui.getParameter().getSelectedAmountOfTowns(); spreadTowns = gui.getParameter().getSelectedSpreadTowns(); //gui.getComboBoxSpreadTowns().SelectedItem = GUI.SPREADTOWNSCUSTOM; if (isExample) { //Initialisierung der Städte und Ameisen des Beispiels towns = new LinkedList <Town>(); matrix = new LinkedList <LinkedList <double[]> >(); indexTownsCreated = 0; this.townCoords = new double[n][]; //Verteilung der 5 Städte addTown(20, 60, 1); towns.ElementAt(0).setName("A (S1)"); this.townCoords[0] = new double[] { 20, 60 }; addTown(20, 20, 2); towns.ElementAt(1).setName("B (S2)"); this.townCoords[1] = new double[] { 20, 20 }; addTown(80, 20, 3); towns.ElementAt(2).setName("C (S3)"); this.townCoords[2] = new double[] { 80, 20 }; addTown(80, 60, 4); towns.ElementAt(3).setName("D (S4)"); this.townCoords[3] = new double[] { 80, 60 }; addTown(50, 90, 5); towns.ElementAt(4).setName("E (S5)"); this.townCoords[4] = new double[] { 50, 90 }; } else { //Städte aktualisieren if (!theSameTowns || spreadTowns == typeOfSpreadTowns.Random) { bool deadend = true; while (deadend) { //Initialisierung der Städte und Ameisen der frei gewählten Parameter towns = new LinkedList <Town>(); matrix = new LinkedList <LinkedList <double[]> >(); indexTownsCreated = 0; this.townCoords = new double[n][]; int count0 = 0; //Verteilung von n Städten for (int i = 0; i < n; i++) { bool placeFound = false; //prüfen bis Erzeugung neuer Stadt möglich while (!placeFound) { int x = r.Next(0, 100); int y = r.Next(0, 100); if (gui.isInBorder(x, y)) { if (!gui.townSpaceDetection(x, y, null)) { addTown(x, y, 0); this.townCoords[i] = new double[] { x, y }; placeFound = true; } } count0++; if (count0 > 25000) { placeFound = true; i = n; } } } if (indexTownsCreated == n) { deadend = false; } } } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //Ameisen bool theSameAnts = false; if (m == gui.getParameter().getSelectedAmountOfAnts() && gui.getParameter().getSelectedSpreadAnts() == typeOfSpreadAnts.Custom) { theSameAnts = true; } m = gui.getParameter().getSelectedAmountOfAnts(); //MessageBox.Show("m: " + m); spreadAnts = gui.getParameter().getSelectedSpreadAnts(); //gui.getComboBoxSpreadAnts().SelectedItem = GUI.SPREADANTSCUSTOM; if (isExample) { //Initialisierung der Ameisen des Beispiels indexAntsCreated = 0; this.antHomes = new byte[m]; //Verteilung der 3 Ameisen gui.getListBoxAnts().Items.Clear(); gui.getListBoxAnts().Items.Add("Informationen deaktivieren"); gui.getListBoxAnts().Items.Add("Kürzesten Pfad zeigen"); gui.getListBoxAnts().SelectedIndex = 0; Town tempTown = towns.ElementAt(2); indexAntsCreated++; tempTown.getAntList().AddLast(new Ant(tempTown.getX(), tempTown.getY(), tempTown, gui.getListBoxAnts(), indexAntsCreated)); this.antHomes[0] = 3; tempTown = towns.ElementAt(0); indexAntsCreated++; tempTown.getAntList().AddLast(new Ant(tempTown.getX(), tempTown.getY(), tempTown, gui.getListBoxAnts(), indexAntsCreated)); this.antHomes[1] = 1; tempTown = towns.ElementAt(4); indexAntsCreated++; tempTown.getAntList().AddLast(new Ant(tempTown.getX(), tempTown.getY(), tempTown, gui.getListBoxAnts(), indexAntsCreated)); this.antHomes[2] = 5; } else { //Ameisen aktualisieren if (!theSameTowns || (theSameTowns && !theSameAnts)) { this.antHomes = new byte[m]; for (int i = 0; i < towns.Count; i++) { towns.ElementAt(i).setAntList(new LinkedList <Ant>()); } indexAntsCreated = 0; //Verteilung von m Ameisen gui.getListBoxAnts().Items.Clear(); gui.getListBoxAnts().Items.Add("Informationen deaktivieren"); gui.getListBoxAnts().Items.Add("Kürzesten Pfad zeigen"); gui.getListBoxAnts().SelectedIndex = 0; if (towns.Count > 0) { byte countTowns = 1; if (spreadAnts == typeOfSpreadAnts.Even) { for (int i = 0; i < m; i++) { indexAntsCreated++; Town tempTown = towns.ElementAt(countTowns - 1); tempTown.getAntList().AddLast(new Ant(tempTown.getX(), tempTown.getY(), tempTown, gui.getListBoxAnts(), indexAntsCreated)); this.antHomes[i] = countTowns; countTowns++; if (countTowns > n) { countTowns = 1; } } } else if (spreadAnts == typeOfSpreadAnts.Random) { for (int i = 0; i < m; i++) { indexAntsCreated++; int nextRandomInt = r.Next(0, n); Town tempTown = towns.ElementAt(r.Next(nextRandomInt)); tempTown.getAntList().AddLast(new Ant(tempTown.getX(), tempTown.getY(), tempTown, gui.getListBoxAnts(), indexAntsCreated)); this.antHomes[i] = (byte)(nextRandomInt + 1); } } } } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //Pheromone q = gui.getParameter().getSelectedStrength(); qStart = gui.getParameter().getSelectedStartPheromone(); rho = gui.getParameter().getSelectedEvaporation(); ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //Gewichtung alpha = gui.getParameter().getSelectedWeightPheromone(); beta = gui.getParameter().getSelectedWeightDistance(); ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //Zyklen nc = gui.getParameter().getSelectedAmountOfCycles(); string test = ""; for (int i = 0; i < m; i++) { test += this.antHomes[i] + " , "; } gui.setBtnPlay(false); gui.setBtnPause(false); gui.setBtnNextIt(false); gui.setBtnNextRound(false); gui.setBtnToTheEnd(false); gui.setBtnPrevRound(false); gui.setBtnPrevIt(false); gui.stopAnimation(); this.results.Add(antAlgorithms.algorithmieren(this.townCoords, this.antHomes, q, qStart, rho, alpha, beta, nc, typeOfAlgorithm)); if (results.Count > 5) { this.results.RemoveAt(0); } }