public void compute() throws IOException {
        createStartPopulation();
        best = new IndividualDoubleStart(Long.MIN_VALUE);
        worst = new IndividualDoubleStart(Long.MAX_VALUE);
        Collections.sort(population);
        best = population.get(0);
        worst = population.get(population.size() - 1);
        Individual localBest;
        Individual localWorst;
        int index = 0;
        int populationInIteration = startPopulationSize;
        if (!paraler) {
            System.out.println("Iteration:");
        }
        writer.append("index;Current population size;Reproduction population size;Childe population size;mean value;best;worst\n");
        while (index != maxIteration ) {
            means[index] = calculateMean(population);
            if (!paraler) {
                System.out.print("\r" + index);
            }
            List<Individual> T = reporoduction(population);
            List<Individual> O = intercroosing(T, chanceToIntercrossing);
            mutation(O, chanceToMutate);
            Collections.sort(O);
            Collections.sort(T);

            writer.append(index).append(";").append(population.size()).append(";").append(T.size()).append(";").append(O.size()).append(";").append(means[index]);

            population = succession(O, T);

            Collections.sort(population);
            localBest = population.get(0);
            localWorst = population.get(population.size() - 1);
            writer.append(";").append(localBest.toCSV()).append(";").append(localWorst.toCSV()).append("\n");
            if (localBest.getEvaluation() < best.getEvaluation()) {
                best = localBest;
            }
            if (localWorst.getEvaluation() > worst.getEvaluation()) {
                worst = localWorst;
            }
            index++;
        }
        if (!paraler) {
            System.out.println("\nFinish!");
        }
    }