document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. package pl.javastart.first;
  2.  
  3. import static java.lang.Math.pow;
  4.  
  5. import java.util.Random;
  6.  
  7. import org.jfree.chart.ChartFactory;
  8. import org.jfree.chart.ChartFrame;
  9. import org.jfree.chart.JFreeChart;
  10. import org.jfree.chart.plot.PlotOrientation;
  11. import org.jfree.data.xy.XYSeries;
  12. import org.jfree.data.xy.XYSeriesCollection;
  13.  
  14. public class Ewolucyjny {
  15.  
  16.     public double licz() {
  17.         double[] tablica1 = new double[1026];
  18.         double[] osobnik1 = new double[1000];
  19.         double[] osobnik2 = new double[1000];
  20.         double[] wynik = new double[1000];
  21.         int max = 100;
  22.         int czas[] =new int[max];
  23.         int licznik = 0;
  24.  
  25.         double dg   = -5.12;
  26.         double gg   =  5.12;
  27.         double krok =  0.01;
  28.  
  29.         tablica1[0] =  dg;
  30.  
  31. //      for (int i = 1; i < tablica1.length; i++) {
  32. //
  33. //          tablica1[i] = (tablica1[i-1] + krok);
  34. //          System.out.println(tablica1[i] + " ");
  35. //      }
  36.  
  37.         double[] tablica2 = tablica1;
  38.  
  39.         // Do obsługi
  40.  
  41.         double sigmap = pow(0.03, 2);
  42.         double s = tablica1.length;
  43.  
  44.         // losowanie
  45.         Random r1 = new Random();
  46.         Random r2 = new Random();
  47.  
  48.         int a1 = r1.nextInt(tablica1.length + 1);
  49.         int a2 = r2.nextInt(tablica1.length + 1);
  50.  
  51.         // operacje
  52.         int i;
  53.         for (i = 0; i < max; i++) {
  54.             czas[i] = i;
  55.             Random z1 = new Random();
  56.             Random z2 = new Random();
  57.  
  58.             double p1 = z1.nextFloat();
  59.             double p2 = z2.nextFloat();
  60.  
  61.             double e1, e2;
  62.             e1 = sigmap * p1;
  63.             e2 = sigmap * p2;
  64.  
  65.             if (i == 0) {
  66.                 osobnik1[i + 1] = tablica1[a1];
  67.                 osobnik2[i + 1] = tablica2[a2];
  68.            
  69.             }
  70.  
  71.             if (i >= 1) {
  72.                 osobnik1[i] = osobnik1[i - 1] + e1;
  73.                 osobnik2[i] = osobnik2[i - 1] + e2;
  74.  
  75.             }
  76.             // wartosc funkcji
  77.  
  78.             wynik[i] = pow(osobnik1[i], 2) + pow(osobnik2[i], 2);
  79.  
  80.             if (i > 1) {
  81.                 if (wynik[i - 1] > wynik[i]) {
  82.                     licznik = licznik + 1;
  83.                 } else {
  84.                     osobnik1[i] = osobnik1[i - 1];
  85.                     osobnik2[i] = osobnik2[i - 1];
  86.                 }
  87.                
  88.                
  89.                 if (licznik > 0) {
  90.                 int w = i / licznik;
  91.  
  92.                
  93.                     if (w < 0.2)
  94.                         sigmap = (1 / 0.82) * sigmap;
  95.                     if (w > 0.2)
  96.                         sigmap = 0.82 * sigmap;
  97.  
  98.                
  99.             }
  100.              
  101.             //System.out.println(osobnik2[i]);
  102.             }  
  103.            
  104.             }
  105.         double minimum = wynik[i];
  106.         double x = osobnik1[i];
  107.         double y = osobnik2[i];
  108.        
  109.         System.out.println(x);
  110.         System.out.println(y);
  111.         System.out.println(minimum);
  112.    
  113.         XYSeries series = new XYSeries("XYGraph");
  114.         int i1;
  115.         for ( i1 = 0 ; i1 <  czas.length; i1++) {
  116.             series.add(czas[i1],osobnik1[i1]);
  117.         }
  118.         XYSeriesCollection dataset = new XYSeriesCollection();
  119.         dataset.addSeries(series);
  120.  
  121.         // Tworzymy wykres XY
  122.         JFreeChart chart1 = ChartFactory.createXYLineChart("Wykres wartości X",// Tytuł
  123.                 "Pokolenie", // x-axis Opis
  124.                 "Wartość X", // y-axis Opis
  125.                 dataset, // Dane
  126.                 PlotOrientation.VERTICAL, // Orjentacja wykresu /HORIZONTAL
  127.                 true, // pozkaż legende
  128.                 true, // podpowiedzi tooltips
  129.                 false);
  130.  
  131.         // Dodanie wykresu do okna
  132.         ChartFrame frame1 = new ChartFrame("XYArea Chart", chart1);
  133.         frame1.setVisible(true);
  134.         frame1.setSize(1000,500);
  135.         frame1.setLocation(500,300);
  136.        
  137.  
  138.         XYSeries series2 = new XYSeries("XYGraph");
  139.        
  140.         for ( i1 = 0 ; i1 <  czas.length; i1++) {
  141.             series2.add(czas[i1],wynik[i1]);
  142.         }
  143.         XYSeriesCollection dataset2 = new XYSeriesCollection();
  144.         dataset2.addSeries(series2);
  145.  
  146.         // Tworzymy wykres XY
  147.         JFreeChart chart2 = ChartFactory.createXYLineChart("Wykres wartości funkcji",// Tytuł
  148.                 "Pokolenie", // x-axis Opis
  149.                 "Wartość Funkcji", // y-axis Opis
  150.                 dataset2, // Dane
  151.                 PlotOrientation.VERTICAL, // Orjentacja wykresu /HORIZONTAL
  152.                 true, // pozkaż legende
  153.                 true, // podpowiedzi tooltips
  154.                 false);
  155.  
  156.         // Dodanie wykresu do okna
  157.         ChartFrame frame2 = new ChartFrame("XYArea Chart", chart2);
  158.         frame2.setVisible(true);
  159.         frame2.setSize(1000,500);
  160.         frame2.setLocation(500,300);
  161.        
  162.         XYSeries series3 = new XYSeries("XYGraph");
  163.        
  164.         for ( i1 = 0 ; i1 <  czas.length; i1++) {
  165.             series3.add(czas[i1],osobnik2[i1]);
  166.         }
  167.         XYSeriesCollection dataset3 = new XYSeriesCollection();
  168.         dataset3.addSeries(series3);
  169.  
  170.         // Tworzymy wykres XY
  171.         JFreeChart chart3 = ChartFactory.createXYLineChart("Wykres wartości Y",// Tytuł
  172.                 "Pokolenie", // x-axis Opis
  173.                 "Wartość Y", // y-axis Opis
  174.                 dataset3, // Dane
  175.                 PlotOrientation.VERTICAL, // Orjentacja wykresu /HORIZONTAL
  176.                 true, // pozkaż legende
  177.                 true, // podpowiedzi tooltips
  178.                 false);
  179.  
  180.         // Dodanie wykresu do okna
  181.         ChartFrame frame3 = new ChartFrame("XYArea Chart", chart3);
  182.         frame3.setVisible(true);
  183.         frame3.setSize(1000,500);
  184.         frame3.setLocation(500,300);
  185.        
  186.         return a1;
  187.  
  188.     }
  189.  
  190.     public static void main(String[] args) {
  191.         Ewolucyjny algo = new Ewolucyjny();
  192.         algo.licz();
  193.  
  194.     }
  195. }
');