@Override
    public void calcularSolucion(int idElemInicial) {
        int times = 0;
        boolean primera = true;
        while(times < 4) {
            Camino caminoActual = new Camino(SolucionInicial.generarSolucion(cjtElementos));
            CjtCaminos soluciones = new CjtCaminos(nSolutionsToKeep);
            soluciones.anadir(caminoActual);
            CjtCaminos sucesores;
            boolean fin = false;
            int iters = 0;
            while (!fin) {
                sucesores = new CjtCaminos(generarSucesores(caminoActual));
                soluciones.sacarMejorCamino();
                while (!sucesores.esVacio()) {
                    Camino caminoAux = new Camino(sucesores.sacarMejorCamino());
                    if(caminoAux.consultarPeso() < soluciones.consultarPeorPeso())
                    {
                        soluciones.anadir(caminoAux);
                    }
                    else {
                        break;
                    }
                }
                if(!soluciones.esVacio()) {
                    if(soluciones.consultarMejorPeso() < caminoActual.consultarPeso()) {
                        caminoActual = new Camino(soluciones.mejorCamino());
                    }
                    else { fin = true; }
                }
                else { fin = true; }
            }
            if(primera || caminoActual.consultarPeso() < caminoSolucion.consultarPeso()) {
                caminoSolucion = new Camino(caminoActual);
            }
            primera = false;
            ++times;
        }
    }