Esempio n. 1
0
        private void createMember(List <HerdMember> fromList, List <HerdMember> outList)
        {
            int        number = random.Next(fromList.Count);
            HerdMember member = new HerdMember(vertices, distanceTable, capacityTable, fromList[number].solution.capacityPath, target);

            System.Threading.Monitor.Enter(semaphore);
            outList.Add(member);
            System.Threading.Monitor.Exit(semaphore);
        }
Esempio n. 2
0
 public void firstGeneration()
 {
     for (int i = 1; i < mi; i++)
     {
         HerdMember member = members[0];
         createMember(member, members);
     }
     bestMember = chooseBest(members);
 }
Esempio n. 3
0
        private void oneIteration()
        {
            List <HerdMember> newPopulation = generateNewPopulationMultiThreads();

            members = mergePopulations(members, newPopulation);
            HerdMember bestChild = chooseBest(newPopulation);

            if (bestChild.solution.finalValue > bestMember.solution.finalValue)
            {
                bestMember = bestChild;
            }
            doSelection(2);
        }
Esempio n. 4
0
        private HerdMember chooseBest(List <HerdMember> list)
        {
            HerdMember toReturn = list.First();

            foreach (var v in list)
            {
                if (v.solution.finalValue > toReturn.solution.finalValue)
                {
                    toReturn = v;
                }
            }
            return(toReturn);
        }
Esempio n. 5
0
        private void rouletteSelection()
        {
            double sum = 0;

            foreach (var v in members)
            {
                sum += v.solution.finalValue;
            }
            List <HerdMember> newMembers = new List <HerdMember>();

            for (int i = 0; i < mi; i++)
            {
                HerdMember toAdd = rouletteOnePoint(sum);
                newMembers.Add(toAdd);
            }
            members = newMembers;
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            string edgePath       = "C://Users//user//Desktop//dane//przykladowe_dane//gen_50_d_2.xml";
            string parametersPath = "C://Users//user//Desktop//dane//przykladowe_dane//gen_50_d_2_0_4_1.txt";

            Graph graph = new Graph();

            Globals.stopWatch.Start();
            graph.readEdges(edgePath);
            Globals.stopWatch.Stop();
            Globals.printElapsedTimeResetWatch(Globals.stopWatch.Elapsed, "Loaded edges");

            Globals.stopWatch.Start();
            graph.readParameters(parametersPath);
            Globals.stopWatch.Stop();
            Globals.printElapsedTimeResetWatch(Globals.stopWatch.Elapsed, "Loaded parameters");


            Globals.stopWatch.Start();
            double[,] distanceTable = graph.createDistanceTable();
            double[,] capacityTable = graph.createCapacityTable();
            Globals.stopWatch.Stop();
            Globals.printElapsedTimeResetWatch(Globals.stopWatch.Elapsed, "Created distance and capacity tables");


            Globals.stopWatch.Start();
            HerdMember member = new HerdMember(graph.vertices, distanceTable, capacityTable, graph.sourceNumber, graph.targetNumber);

            Globals.stopWatch.Stop();
            Globals.printElapsedTimeResetWatch(Globals.stopWatch.Elapsed, "Found first solution");
            member.solution.printSolution();

            Globals.stopWatch.Start();
            Population population = new Population(graph, 10, 15, 1000, 1000000000, 10, "roulette");

            population.runAlgorithm();
            Globals.stopWatch.Stop();
            Globals.printElapsedTimeResetWatch(Globals.stopWatch.Elapsed, "Finished algorithm");
            population.bestMember.solution.printSolution();

            Console.ReadKey();
        }
Esempio n. 7
0
        public Population(Graph graph, int m, int l, int iter, double val, double time, string sel)
        {
            mi         = m;
            lambda     = l;
            iterations = iter;
            minValue   = val;
            maxTime    = time;

            distanceTable = graph.createDistanceTable();
            capacityTable = graph.createCapacityTable();
            source        = graph.sourceNumber;
            target        = graph.targetNumber;
            vertices      = graph.vertices;
            selection     = sel;
            HerdMember member = new HerdMember(graph.vertices, distanceTable, capacityTable, source, target);

            bestMember = member;
            members    = new List <HerdMember>();
            members.Add(member);
        }
Esempio n. 8
0
        private void createMember(HerdMember member, List <HerdMember> outList)
        {
            HerdMember toAdd = new HerdMember(vertices, distanceTable, capacityTable, member.solution.capacityPath, target);

            outList.Add(toAdd);
        }