1: static void Main(string[] args)
2:
3: {
4:
5: InitializeProblem();
6: GAalgorithm =
7: new GeneticAlgorithm(knapSack.Items.Count,10,crossOver,mutation,0.1,knapSack,"testFitness");
8:
9: GAalgorithm.InitPopulation();
10: GAalgorithm.evaluatePopulation();
11: bestCromo = GAalgorithm.Best();
12: generation = 0;
13: Console.WriteLine("\n Capacità massima in kili che può sopportare lo zaino: 200");
14: Console.WriteLine("\nDopo un numero di generazioni pari a {0}", generation);
15: Console.WriteLine("La migliore soluzione ottenuta è {0} con un valore di {1}",
16: bestCromo.StringRepresentation(), bestCromo.Importance.ToString());
17:
18: Console.WriteLine("\nIndicami il numero di generazioni che deve analizzare l' algoritmo genetico);
19: per trovare una migliore soluzione"
20:
21: string numGens = Console.ReadLine();
22: int countGens;
23: if (Int32.TryParse(numGens, out countGens))
24: {
25: for (int i = 0; i < Int32.Parse(numGens); i++)
26: {
27: generation++;
28: GAalgorithm.RegeneratePopulation();
29: GAalgorithm.evaluatePopulation();
30: }
31:
32: /* Miglior Cromosoma*/
33: bestCromo = GAalgorithm.Best();
34: Console.WriteLine("\nDopo un numero di generazioni pari a {0} \n", generation);
35: Console.WriteLine("La migliore soluzione ottenuta è {0} con un valore di {1} \n",
36: bestCromo.StringRepresentation(), bestCromo.Importance.ToString());
37:
38: Console.ReadLine();
39: }
40: else
41: Console.WriteLine("\n Non hai inserito un numero ciaoooooooooo.........");
42: }
43: /// <summary>
44: /// Inizializza lo zaino settando la capacità a 200 kili e
45: /// inserendo 20 elementi random
46: /// </summary>
47:
48: private static void InitializeProblem()
49:
50: {
51: crossOver = true;
52: mutation = true;
53: random = new Random();
54: knapSack = new KnapSackContainer(200);
55: knapSack.Items = new List<KnapSackItem>();
56: for (int i = 0; i < 20; i++)
57: {
58: knapSack.Items.Add( new KnapSackItem((Math.Abs(random.Next()) + 1) % 50,
59: (Math.Abs(random.Next()) + 1) % 50));
60:
61: numItems++;
62: }
63: foreach (KnapSackItem item in knapSack)
64: {
65: Console.WriteLine("Inserito elemento con peso pari {0} e valore pari a {1}", item.Weight,
66: item.Value);
67: }
68: }
69: }