View Javadoc
1   /**
2    * @(#)SampleTsp.java
3    * Copyright (C) 2008-2011 delhezi.com
4    *
5    * This class is released under the:
6    * GNU Lesser General Public License (LGPL) version 3 or later.
7    * http://www.gnu.org/copyleft/lesser.html
8    */
9   package com.delhezi.ga.initialize.data;
10  
11  import com.delhezi.ga.Chromosome;
12  import com.delhezi.ga.ChromosomeProperties;
13  import com.delhezi.ga.genes.Point;
14  import java.util.LinkedList;
15  
16  /**
17   *
18   * @author Wojciech.Wolszczak
19   */
20  public class SampleTsp {
21  
22      /**
23       * Populacja o zmiennej liczebności.
24       * @param populationSize Wielkość populacji
25       * @param maxPopulationSize Maksymalna wielkość populacji
26       * @param chromosomeProperties Właściwości chromosomu
27       * @return Lista chromosomów
28       */
29      public static LinkedList<Chromosome> newChromosomes(int populationSize,
30              int maxPopulationSize,
31              ChromosomeProperties chromosomeProperties){
32          LinkedList<Chromosome> chromosomes = new LinkedList<Chromosome>();
33          return setChromosomes(chromosomes, populationSize, chromosomeProperties);
34      }
35      
36      /**
37       * Populacja o stałej liczebności.
38       * @param populationSize Wielkość populacji
39       * @param chromosomeProperties Właściwości chromosomu
40       * @return Lista chromosomów
41       */
42      public static LinkedList<Chromosome> newChromosomes(int populationSize,
43              ChromosomeProperties chromosomeProperties){
44          LinkedList<Chromosome> chromosomes = new LinkedList<Chromosome>();
45          return setChromosomes(chromosomes, populationSize, chromosomeProperties);
46          }
47  
48      
49      private static LinkedList<Chromosome> setChromosomes(LinkedList<Chromosome> chromosomes,
50              int populationSize, ChromosomeProperties chromosomeProperties){
51              Point[] chromosome_tmp;
52  
53                  int chromosomeSize =  60; //STAŁA ILOŚĆ MIAST, ALE MOŻNA ZMIENIĆ
54                  chromosome_tmp = new Point[chromosomeSize];
55                  for (int i = 0; i < chromosomeSize; i++)
56                      chromosome_tmp[i] = new Point((int) (Math.random() * 200),
57                              (int) (Math.random() * 200));
58  
59              Point[] chromosome_i;
60              for (int i = 0; i < populationSize; i++) {
61                  //Przemieszaj geny.
62                  com.delhezi.ga.utility.ShuffleList.shuffle(chromosome_tmp);
63                  chromosome_i = new Point[chromosomeSize];
64                  System.arraycopy(chromosome_tmp, 0, chromosome_i, 0,chromosome_tmp.length);
65                  chromosomes.add(new Chromosome(chromosome_i, chromosomeProperties));
66              }
67              return chromosomes;
68      }
69  
70  }