void Busq_Tabu_Local(int **RutasMejor,int **Costos,int **Datos,int *LRec,int number, int n, int *CostoRutas,int *RutasCambio,int *Carga){

	int cic,it,auxiliar;
	int CostoMejor;
	int i1 = -1;
    	int i2 = -1;
    	int j1 = -1;
    	int j2 = -1;
    	//Imprime las rutas iniciales.
    	ImprimirMatriz(RutasMejor, number, n);
    	//Calcula el costo de las rutas iniciales.
    	int CostoActual = Costo(Costos, RutasMejor, Datos, number, n, CostoRutas, RutasCambio);
    	printf("%d\n", CostoActual);
    	clock_t start = clock();
	while (1) {
        	cic = 0;
        	CostoMejor = CostoActual;
        
        	int bol = 1;
        	while (cic < 50) {
        	    posTaboo++;
        	    if(posTaboo==tabooTam){
        	        posTaboo=0;
        	    }
        	    if (bol){
        	        bol=0;
        	        CostoMejor = EntreCiudad(&i1, &i2, &j1, &j2, RutasMejor, CostoActual, Costos, Datos, LRec, number, n, CostoRutas, RutasCambio);
                    }else{
                	bol=1;                
                	CostoMejor = EntreRutas(&i1, &i2, &j1, &j2, RutasMejor, CostoActual, Costos, Datos, LRec, Carga, number, n, CostoRutas, RutasCambio);
                    }
            	    cic++;
        	}
        	
        	if (i1 != -1) {
            		auxiliar = RutasMejor[i1][j1];
            		RutasMejor[i1][j1] = RutasMejor[i2][j2];
            		RutasMejor[i2][j2] = auxiliar;
            		i1 = -1;
        	}


        	if (CostoMejor < CostoActual) {
            		printf("%d\n", CostoMejor);
            		CostoActual = CostoMejor;
            		if(CostoActual<4500){
                    		clock_t end = clock();
                    		float seconds = (float) (end - start) / CLOCKS_PER_SEC;
                    		printf("%f\n",seconds);
            		}
            		ImprimirMatriz(RutasMejor,number,n);
        	}
 	       it++;
 	   }
}
Exemple #2
0
int main()
{
    Base A[Max][Max];
    int fil, col;
    printf("Cantidad de filas ");
    scanf("%d",&fil);
    printf("Cantidad de columnas ");
    scanf("%d",&col);
    
    LlenarMatriz(A,fil, col);
    printf("Matriz A\n");
    ImprimirMatriz(A,fil,col);
}
Exemple #3
0
int main()
{
	int fila,colu, f,c;
	int A[MAX][MAX];
	printf("Ingrese filas ");
	scanf("%d",&fila);
	printf("Ingrese columnas ");
	scanf("%d",&colu);
//	LlenarMatriz(A,fila,colu);
	
	LlenarMatrizEspecial(A,fila,colu);
	
	ImprimirMatriz(A,fila,colu);
	
	printf("Ingrese filas del caballo ");
	scanf("%d",&f);
	printf("Ingrese columna del caballo ");
	scanf("%d",&c);
	A[f][c] = 1;
	ImprimirMatriz(A,fila,colu);
	
	caballo(A,fila,colu,f,c);
	ImprimirMatriz(A,fila,colu);
}