private void RealizePorRandomAMutacao () {
        
        cadeiaDeCaminhos = new int[tamanhoTotalDoCaminho];
        Caminho caminho;
        int numRandomico;
                
        for (int i = 0; i != numeroGenes; i++) {
            
            numRandomico = geradorRandomico.nextInt(populacaoDaPonteControladora.size());
            caminho = populacaoDaPonteControladora.get(numRandomico);
            populacaoDaPonteControladora.remove(numRandomico);
            numRandomico = geradorRandomico.nextInt(17);
            
            int tempNumRandomico = numRandomico + 1;
            
            for (int iterator = 0; iterator != tamanhoTotalDoCaminho; iterator++) {
                if ( tempNumRandomico != iterator )
                    cadeiaDeCaminhos[iterator] = (Integer) caminho.retorneListaUnicaDiretoDoCaminho(iterator);
                else {
                    numRandomico = geradorRandomico.nextInt(19);
                    cadeiaDeCaminhos[iterator] = numRandomico;
                }
            }
            
            fitness = calculoDoFitness.realizarCalculoDoFitness(cadeiaDeCaminhos, tamanhoTotalDoCaminho);
            populacaoTemporaria = new ArrayList();
            
            for (int num : cadeiaDeCaminhos)
                populacaoTemporaria.add(num);
            
            Caminho novoCaminho = new Caminho (populacaoTemporaria, fitness);
            populacaoDaPonteControladora.add(novoCaminho);
            
        }
        
        CalculeFitnessNovamenteParaTodos(populacaoDaPonteControladora);
        RetornaParaPopulacaoInicial();
        
    }