private static void crossingOver() {
        int crosspoint;
        
        ArrayList<Arrangement> children = new ArrayList<Arrangement>();
        for (int i = 0; i < populasi.size(); i++) {
            for (int j = i + 1; j < populasi.size(); j++) {
                children.add(new Arrangement(populasi.get(i).getArrangement().substring(0)));
                children.add(new Arrangement(populasi.get(j).getArrangement().substring(0)));
            }
        }
        
        for(Arrangement ar: children) {
            ar.validate();
        }
        
        for (int i = 0; i < (children.size() / 2); i++) {
            int x = (2 * i);
            int y = (2 * i) + 1;
            crosspoint = children.get(x).crossOver(children.get(y));
            Random r = new Random();
            children.get(x).mutation2(r.nextInt(Iboy.getActiveIboy().getMinggu() * 70));
            children.get(y).mutation2(r.nextInt(Iboy.getActiveIboy().getMinggu() * 70));
            //children.get(x).mutation(crosspoint);
            //children.get(y).mutation(crosspoint);
        }

        /**
         * mutasinya ditaruh sini ya
         */
        for(Arrangement ar: children) {
            ar.validate();
        }

        Collections.sort(children, new ArrangementComparator());

        populasi.clear();

        int len = 0;
        for (int i = 1; i <= children.size(); i++) {
            int idx = children.size() - i;
            if(populasi.isEmpty()) {
                populasi.add(children.get(idx));
                len++;
            } else if(children.get(idx).getArrangement().equals(populasi.get(populasi.size() - 1).getArrangement())) {
            } else {
                populasi.add(children.get(idx));
                len++;
            }
            if (len == 3)
                break;
        }
        /*
        for (Arrangement ar : populasi) {
            System.out.print(ar.getArrangement() + " ");
            System.out.println(ar.calculateTotalEnlightenment());
        }*/
    }