Pozdrawiam....
- package pl.javastart.first;
- import static java.lang.Math.pow;
- import java.util.Random;
- import org.jfree.chart.ChartFactory;
- import org.jfree.chart.ChartFrame;
- import org.jfree.chart.JFreeChart;
- import org.jfree.chart.plot.PlotOrientation;
- import org.jfree.data.xy.XYSeries;
- import org.jfree.data.xy.XYSeriesCollection;
- public class Ewolucyjny {
- public double licz() {
- double[] tablica1 = new double[1026];
- double[] osobnik1 = new double[1000];
- double[] osobnik2 = new double[1000];
- double[] wynik = new double[1000];
- int max = 100;
- int czas[] =new int[max];
- int licznik = 0;
- double dg = -5.12;
- double gg = 5.12;
- double krok = 0.01;
- tablica1[0] = dg;
- // for (int i = 1; i < tablica1.length; i++) {
- //
- // tablica1[i] = (tablica1[i-1] + krok);
- // System.out.println(tablica1[i] + " ");
- // }
- double[] tablica2 = tablica1;
- // Do obsługi
- double sigmap = pow(0.03, 2);
- double s = tablica1.length;
- // losowanie
- Random r1 = new Random();
- Random r2 = new Random();
- int a1 = r1.nextInt(tablica1.length + 1);
- int a2 = r2.nextInt(tablica1.length + 1);
- // operacje
- int i;
- for (i = 0; i < max; i++) {
- czas[i] = i;
- Random z1 = new Random();
- Random z2 = new Random();
- double p1 = z1.nextFloat();
- double p2 = z2.nextFloat();
- double e1, e2;
- e1 = sigmap * p1;
- e2 = sigmap * p2;
- if (i == 0) {
- osobnik1[i + 1] = tablica1[a1];
- osobnik2[i + 1] = tablica2[a2];
- }
- if (i >= 1) {
- osobnik1[i] = osobnik1[i - 1] + e1;
- osobnik2[i] = osobnik2[i - 1] + e2;
- }
- // wartosc funkcji
- wynik[i] = pow(osobnik1[i], 2) + pow(osobnik2[i], 2);
- if (i > 1) {
- if (wynik[i - 1] > wynik[i]) {
- licznik = licznik + 1;
- } else {
- osobnik1[i] = osobnik1[i - 1];
- osobnik2[i] = osobnik2[i - 1];
- }
- if (licznik > 0) {
- int w = i / licznik;
- if (w < 0.2)
- sigmap = (1 / 0.82) * sigmap;
- if (w > 0.2)
- sigmap = 0.82 * sigmap;
- }
- //System.out.println(osobnik2[i]);
- }
- }
- double minimum = wynik[i];
- double x = osobnik1[i];
- double y = osobnik2[i];
- System.out.println(x);
- System.out.println(y);
- System.out.println(minimum);
- XYSeries series = new XYSeries("XYGraph");
- int i1;
- for ( i1 = 0 ; i1 < czas.length; i1++) {
- series.add(czas[i1],osobnik1[i1]);
- }
- XYSeriesCollection dataset = new XYSeriesCollection();
- dataset.addSeries(series);
- // Tworzymy wykres XY
- JFreeChart chart1 = ChartFactory.createXYLineChart("Wykres wartości X",// Tytuł
- "Pokolenie", // x-axis Opis
- "Wartość X", // y-axis Opis
- dataset, // Dane
- PlotOrientation.VERTICAL, // Orjentacja wykresu /HORIZONTAL
- true, // pozkaż legende
- true, // podpowiedzi tooltips
- false);
- // Dodanie wykresu do okna
- ChartFrame frame1 = new ChartFrame("XYArea Chart", chart1);
- frame1.setVisible(true);
- frame1.setSize(1000,500);
- frame1.setLocation(500,300);
- XYSeries series2 = new XYSeries("XYGraph");
- for ( i1 = 0 ; i1 < czas.length; i1++) {
- series2.add(czas[i1],wynik[i1]);
- }
- XYSeriesCollection dataset2 = new XYSeriesCollection();
- dataset2.addSeries(series2);
- // Tworzymy wykres XY
- JFreeChart chart2 = ChartFactory.createXYLineChart("Wykres wartości funkcji",// Tytuł
- "Pokolenie", // x-axis Opis
- "Wartość Funkcji", // y-axis Opis
- dataset2, // Dane
- PlotOrientation.VERTICAL, // Orjentacja wykresu /HORIZONTAL
- true, // pozkaż legende
- true, // podpowiedzi tooltips
- false);
- // Dodanie wykresu do okna
- ChartFrame frame2 = new ChartFrame("XYArea Chart", chart2);
- frame2.setVisible(true);
- frame2.setSize(1000,500);
- frame2.setLocation(500,300);
- XYSeries series3 = new XYSeries("XYGraph");
- for ( i1 = 0 ; i1 < czas.length; i1++) {
- series3.add(czas[i1],osobnik2[i1]);
- }
- XYSeriesCollection dataset3 = new XYSeriesCollection();
- dataset3.addSeries(series3);
- // Tworzymy wykres XY
- JFreeChart chart3 = ChartFactory.createXYLineChart("Wykres wartości Y",// Tytuł
- "Pokolenie", // x-axis Opis
- "Wartość Y", // y-axis Opis
- dataset3, // Dane
- PlotOrientation.VERTICAL, // Orjentacja wykresu /HORIZONTAL
- true, // pozkaż legende
- true, // podpowiedzi tooltips
- false);
- // Dodanie wykresu do okna
- ChartFrame frame3 = new ChartFrame("XYArea Chart", chart3);
- frame3.setVisible(true);
- frame3.setSize(1000,500);
- frame3.setLocation(500,300);
- return a1;
- }
- public static void main(String[] args) {
- Ewolucyjny algo = new Ewolucyjny();
- algo.licz();
- }
- }
Brak komentarzy:
Prześlij komentarz